1#ifdef GET_OPCODE_NAMES
2OP_Activate,
3#endif
4#ifdef GET_INTERPFN_LIST
5&Interp_Activate,
6#endif
7#ifdef GET_INTERPFN_DISPATCHERS
8PRESERVE_NONE
9static bool Interp_Activate(InterpState &S) {
10 Activate(S);
11#if USE_TAILCALLS
12 MUSTTAIL return InterpNext(S);
13#else
14 return true;
15#endif
16}
17#endif
18#ifdef GET_DISASM
19case OP_Activate:
20 Text.Op = PrintName("Activate");
21 break;
22#endif
23#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24bool emitActivate(SourceInfo);
25#endif
26#ifdef GET_LINK_IMPL
27bool ByteCodeEmitter::emitActivate(SourceInfo L) {
28 return emitOp<>(OP_Activate, L);
29}
30#endif
31#ifdef GET_EVAL_IMPL
32bool EvalEmitter::emitActivate(SourceInfo L) {
33 if (!isActive()) return true;
34 CurrentSource = L;
35 return Activate(S);
36}
37#endif
38#ifdef GET_OPCODE_NAMES
39OP_ActivateThisField,
40#endif
41#ifdef GET_INTERPFN_LIST
42&Interp_ActivateThisField,
43#endif
44#ifdef GET_INTERPFN_DISPATCHERS
45PRESERVE_NONE
46static bool Interp_ActivateThisField(InterpState &S) {
47 {
48 const auto V0 = ReadArg<uint32_t>(S, S.PC);
49 if (!ActivateThisField(S, V0)) return false;
50 }
51#if USE_TAILCALLS
52 MUSTTAIL return InterpNext(S);
53#else
54 return true;
55#endif
56}
57#endif
58#ifdef GET_DISASM
59case OP_ActivateThisField:
60 Text.Op = PrintName("ActivateThisField");
61 Text.Args.push_back(printArg<uint32_t>(PC));
62 break;
63#endif
64#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
65bool emitActivateThisField( uint32_t , SourceInfo);
66#endif
67#ifdef GET_LINK_IMPL
68bool ByteCodeEmitter::emitActivateThisField( uint32_t A0, SourceInfo L) {
69 return emitOp<uint32_t>(OP_ActivateThisField, A0, L);
70}
71#endif
72#ifdef GET_EVAL_IMPL
73bool EvalEmitter::emitActivateThisField( uint32_t A0, SourceInfo L) {
74 if (!isActive()) return true;
75 CurrentSource = L;
76 return ActivateThisField(S, A0);
77}
78#endif
79#ifdef GET_OPCODE_NAMES
80OP_AddSint8,
81OP_AddUint8,
82OP_AddSint16,
83OP_AddUint16,
84OP_AddSint32,
85OP_AddUint32,
86OP_AddSint64,
87OP_AddUint64,
88OP_AddIntAP,
89OP_AddIntAPS,
90OP_AddBool,
91OP_AddFixedPoint,
92#endif
93#ifdef GET_INTERPFN_LIST
94&Interp_AddSint8,
95&Interp_AddUint8,
96&Interp_AddSint16,
97&Interp_AddUint16,
98&Interp_AddSint32,
99&Interp_AddUint32,
100&Interp_AddSint64,
101&Interp_AddUint64,
102&Interp_AddIntAP,
103&Interp_AddIntAPS,
104&Interp_AddBool,
105&Interp_AddFixedPoint,
106#endif
107#ifdef GET_INTERPFN_DISPATCHERS
108PRESERVE_NONE
109static bool Interp_AddSint8(InterpState &S) {
110 if (!Add<PT_Sint8>(S, S.PC)) return false;
111#if USE_TAILCALLS
112 MUSTTAIL return InterpNext(S);
113#else
114 return true;
115#endif
116}
117PRESERVE_NONE
118static bool Interp_AddUint8(InterpState &S) {
119 if (!Add<PT_Uint8>(S, S.PC)) return false;
120#if USE_TAILCALLS
121 MUSTTAIL return InterpNext(S);
122#else
123 return true;
124#endif
125}
126PRESERVE_NONE
127static bool Interp_AddSint16(InterpState &S) {
128 if (!Add<PT_Sint16>(S, S.PC)) return false;
129#if USE_TAILCALLS
130 MUSTTAIL return InterpNext(S);
131#else
132 return true;
133#endif
134}
135PRESERVE_NONE
136static bool Interp_AddUint16(InterpState &S) {
137 if (!Add<PT_Uint16>(S, S.PC)) return false;
138#if USE_TAILCALLS
139 MUSTTAIL return InterpNext(S);
140#else
141 return true;
142#endif
143}
144PRESERVE_NONE
145static bool Interp_AddSint32(InterpState &S) {
146 if (!Add<PT_Sint32>(S, S.PC)) return false;
147#if USE_TAILCALLS
148 MUSTTAIL return InterpNext(S);
149#else
150 return true;
151#endif
152}
153PRESERVE_NONE
154static bool Interp_AddUint32(InterpState &S) {
155 if (!Add<PT_Uint32>(S, S.PC)) return false;
156#if USE_TAILCALLS
157 MUSTTAIL return InterpNext(S);
158#else
159 return true;
160#endif
161}
162PRESERVE_NONE
163static bool Interp_AddSint64(InterpState &S) {
164 if (!Add<PT_Sint64>(S, S.PC)) return false;
165#if USE_TAILCALLS
166 MUSTTAIL return InterpNext(S);
167#else
168 return true;
169#endif
170}
171PRESERVE_NONE
172static bool Interp_AddUint64(InterpState &S) {
173 if (!Add<PT_Uint64>(S, S.PC)) return false;
174#if USE_TAILCALLS
175 MUSTTAIL return InterpNext(S);
176#else
177 return true;
178#endif
179}
180PRESERVE_NONE
181static bool Interp_AddIntAP(InterpState &S) {
182 if (!Add<PT_IntAP>(S, S.PC)) return false;
183#if USE_TAILCALLS
184 MUSTTAIL return InterpNext(S);
185#else
186 return true;
187#endif
188}
189PRESERVE_NONE
190static bool Interp_AddIntAPS(InterpState &S) {
191 if (!Add<PT_IntAPS>(S, S.PC)) return false;
192#if USE_TAILCALLS
193 MUSTTAIL return InterpNext(S);
194#else
195 return true;
196#endif
197}
198PRESERVE_NONE
199static bool Interp_AddBool(InterpState &S) {
200 if (!Add<PT_Bool>(S, S.PC)) return false;
201#if USE_TAILCALLS
202 MUSTTAIL return InterpNext(S);
203#else
204 return true;
205#endif
206}
207PRESERVE_NONE
208static bool Interp_AddFixedPoint(InterpState &S) {
209 if (!Add<PT_FixedPoint>(S, S.PC)) return false;
210#if USE_TAILCALLS
211 MUSTTAIL return InterpNext(S);
212#else
213 return true;
214#endif
215}
216#endif
217#ifdef GET_DISASM
218case OP_AddSint8:
219 Text.Op = PrintName("AddSint8");
220 break;
221case OP_AddUint8:
222 Text.Op = PrintName("AddUint8");
223 break;
224case OP_AddSint16:
225 Text.Op = PrintName("AddSint16");
226 break;
227case OP_AddUint16:
228 Text.Op = PrintName("AddUint16");
229 break;
230case OP_AddSint32:
231 Text.Op = PrintName("AddSint32");
232 break;
233case OP_AddUint32:
234 Text.Op = PrintName("AddUint32");
235 break;
236case OP_AddSint64:
237 Text.Op = PrintName("AddSint64");
238 break;
239case OP_AddUint64:
240 Text.Op = PrintName("AddUint64");
241 break;
242case OP_AddIntAP:
243 Text.Op = PrintName("AddIntAP");
244 break;
245case OP_AddIntAPS:
246 Text.Op = PrintName("AddIntAPS");
247 break;
248case OP_AddBool:
249 Text.Op = PrintName("AddBool");
250 break;
251case OP_AddFixedPoint:
252 Text.Op = PrintName("AddFixedPoint");
253 break;
254#endif
255#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
256bool emitAddSint8(SourceInfo);
257bool emitAddUint8(SourceInfo);
258bool emitAddSint16(SourceInfo);
259bool emitAddUint16(SourceInfo);
260bool emitAddSint32(SourceInfo);
261bool emitAddUint32(SourceInfo);
262bool emitAddSint64(SourceInfo);
263bool emitAddUint64(SourceInfo);
264bool emitAddIntAP(SourceInfo);
265bool emitAddIntAPS(SourceInfo);
266bool emitAddBool(SourceInfo);
267bool emitAddFixedPoint(SourceInfo);
268#endif
269#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
270[[nodiscard]] bool emitAdd(PrimType, SourceInfo I);
271#endif
272#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
273bool
274#if defined(GET_EVAL_IMPL)
275EvalEmitter
276#else
277ByteCodeEmitter
278#endif
279::emitAdd(PrimType T0, SourceInfo I) {
280 switch (T0) {
281 case PT_Sint8:
282 return emitAddSint8(I);
283 case PT_Uint8:
284 return emitAddUint8(I);
285 case PT_Sint16:
286 return emitAddSint16(I);
287 case PT_Uint16:
288 return emitAddUint16(I);
289 case PT_Sint32:
290 return emitAddSint32(I);
291 case PT_Uint32:
292 return emitAddUint32(I);
293 case PT_Sint64:
294 return emitAddSint64(I);
295 case PT_Uint64:
296 return emitAddUint64(I);
297 case PT_IntAP:
298 return emitAddIntAP(I);
299 case PT_IntAPS:
300 return emitAddIntAPS(I);
301 case PT_Bool:
302 return emitAddBool(I);
303 case PT_FixedPoint:
304 return emitAddFixedPoint(I);
305 default: llvm_unreachable("invalid type: emitAdd");
306 }
307 llvm_unreachable("invalid enum value");
308}
309#endif
310#ifdef GET_LINK_IMPL
311bool ByteCodeEmitter::emitAddSint8(SourceInfo L) {
312 return emitOp<>(OP_AddSint8, L);
313}
314bool ByteCodeEmitter::emitAddUint8(SourceInfo L) {
315 return emitOp<>(OP_AddUint8, L);
316}
317bool ByteCodeEmitter::emitAddSint16(SourceInfo L) {
318 return emitOp<>(OP_AddSint16, L);
319}
320bool ByteCodeEmitter::emitAddUint16(SourceInfo L) {
321 return emitOp<>(OP_AddUint16, L);
322}
323bool ByteCodeEmitter::emitAddSint32(SourceInfo L) {
324 return emitOp<>(OP_AddSint32, L);
325}
326bool ByteCodeEmitter::emitAddUint32(SourceInfo L) {
327 return emitOp<>(OP_AddUint32, L);
328}
329bool ByteCodeEmitter::emitAddSint64(SourceInfo L) {
330 return emitOp<>(OP_AddSint64, L);
331}
332bool ByteCodeEmitter::emitAddUint64(SourceInfo L) {
333 return emitOp<>(OP_AddUint64, L);
334}
335bool ByteCodeEmitter::emitAddIntAP(SourceInfo L) {
336 return emitOp<>(OP_AddIntAP, L);
337}
338bool ByteCodeEmitter::emitAddIntAPS(SourceInfo L) {
339 return emitOp<>(OP_AddIntAPS, L);
340}
341bool ByteCodeEmitter::emitAddBool(SourceInfo L) {
342 return emitOp<>(OP_AddBool, L);
343}
344bool ByteCodeEmitter::emitAddFixedPoint(SourceInfo L) {
345 return emitOp<>(OP_AddFixedPoint, L);
346}
347#endif
348#ifdef GET_EVAL_IMPL
349bool EvalEmitter::emitAddSint8(SourceInfo L) {
350 if (!isActive()) return true;
351 CurrentSource = L;
352 return Add<PT_Sint8>(S, CodePtr());
353}
354bool EvalEmitter::emitAddUint8(SourceInfo L) {
355 if (!isActive()) return true;
356 CurrentSource = L;
357 return Add<PT_Uint8>(S, CodePtr());
358}
359bool EvalEmitter::emitAddSint16(SourceInfo L) {
360 if (!isActive()) return true;
361 CurrentSource = L;
362 return Add<PT_Sint16>(S, CodePtr());
363}
364bool EvalEmitter::emitAddUint16(SourceInfo L) {
365 if (!isActive()) return true;
366 CurrentSource = L;
367 return Add<PT_Uint16>(S, CodePtr());
368}
369bool EvalEmitter::emitAddSint32(SourceInfo L) {
370 if (!isActive()) return true;
371 CurrentSource = L;
372 return Add<PT_Sint32>(S, CodePtr());
373}
374bool EvalEmitter::emitAddUint32(SourceInfo L) {
375 if (!isActive()) return true;
376 CurrentSource = L;
377 return Add<PT_Uint32>(S, CodePtr());
378}
379bool EvalEmitter::emitAddSint64(SourceInfo L) {
380 if (!isActive()) return true;
381 CurrentSource = L;
382 return Add<PT_Sint64>(S, CodePtr());
383}
384bool EvalEmitter::emitAddUint64(SourceInfo L) {
385 if (!isActive()) return true;
386 CurrentSource = L;
387 return Add<PT_Uint64>(S, CodePtr());
388}
389bool EvalEmitter::emitAddIntAP(SourceInfo L) {
390 if (!isActive()) return true;
391 CurrentSource = L;
392 return Add<PT_IntAP>(S, CodePtr());
393}
394bool EvalEmitter::emitAddIntAPS(SourceInfo L) {
395 if (!isActive()) return true;
396 CurrentSource = L;
397 return Add<PT_IntAPS>(S, CodePtr());
398}
399bool EvalEmitter::emitAddBool(SourceInfo L) {
400 if (!isActive()) return true;
401 CurrentSource = L;
402 return Add<PT_Bool>(S, CodePtr());
403}
404bool EvalEmitter::emitAddFixedPoint(SourceInfo L) {
405 if (!isActive()) return true;
406 CurrentSource = L;
407 return Add<PT_FixedPoint>(S, CodePtr());
408}
409#endif
410#ifdef GET_OPCODE_NAMES
411OP_AddOffsetSint8,
412OP_AddOffsetUint8,
413OP_AddOffsetSint16,
414OP_AddOffsetUint16,
415OP_AddOffsetSint32,
416OP_AddOffsetUint32,
417OP_AddOffsetSint64,
418OP_AddOffsetUint64,
419OP_AddOffsetIntAP,
420OP_AddOffsetIntAPS,
421OP_AddOffsetBool,
422#endif
423#ifdef GET_INTERPFN_LIST
424&Interp_AddOffsetSint8,
425&Interp_AddOffsetUint8,
426&Interp_AddOffsetSint16,
427&Interp_AddOffsetUint16,
428&Interp_AddOffsetSint32,
429&Interp_AddOffsetUint32,
430&Interp_AddOffsetSint64,
431&Interp_AddOffsetUint64,
432&Interp_AddOffsetIntAP,
433&Interp_AddOffsetIntAPS,
434&Interp_AddOffsetBool,
435#endif
436#ifdef GET_INTERPFN_DISPATCHERS
437PRESERVE_NONE
438static bool Interp_AddOffsetSint8(InterpState &S) {
439 if (!AddOffset<PT_Sint8>(S, S.PC)) return false;
440#if USE_TAILCALLS
441 MUSTTAIL return InterpNext(S);
442#else
443 return true;
444#endif
445}
446PRESERVE_NONE
447static bool Interp_AddOffsetUint8(InterpState &S) {
448 if (!AddOffset<PT_Uint8>(S, S.PC)) return false;
449#if USE_TAILCALLS
450 MUSTTAIL return InterpNext(S);
451#else
452 return true;
453#endif
454}
455PRESERVE_NONE
456static bool Interp_AddOffsetSint16(InterpState &S) {
457 if (!AddOffset<PT_Sint16>(S, S.PC)) return false;
458#if USE_TAILCALLS
459 MUSTTAIL return InterpNext(S);
460#else
461 return true;
462#endif
463}
464PRESERVE_NONE
465static bool Interp_AddOffsetUint16(InterpState &S) {
466 if (!AddOffset<PT_Uint16>(S, S.PC)) return false;
467#if USE_TAILCALLS
468 MUSTTAIL return InterpNext(S);
469#else
470 return true;
471#endif
472}
473PRESERVE_NONE
474static bool Interp_AddOffsetSint32(InterpState &S) {
475 if (!AddOffset<PT_Sint32>(S, S.PC)) return false;
476#if USE_TAILCALLS
477 MUSTTAIL return InterpNext(S);
478#else
479 return true;
480#endif
481}
482PRESERVE_NONE
483static bool Interp_AddOffsetUint32(InterpState &S) {
484 if (!AddOffset<PT_Uint32>(S, S.PC)) return false;
485#if USE_TAILCALLS
486 MUSTTAIL return InterpNext(S);
487#else
488 return true;
489#endif
490}
491PRESERVE_NONE
492static bool Interp_AddOffsetSint64(InterpState &S) {
493 if (!AddOffset<PT_Sint64>(S, S.PC)) return false;
494#if USE_TAILCALLS
495 MUSTTAIL return InterpNext(S);
496#else
497 return true;
498#endif
499}
500PRESERVE_NONE
501static bool Interp_AddOffsetUint64(InterpState &S) {
502 if (!AddOffset<PT_Uint64>(S, S.PC)) return false;
503#if USE_TAILCALLS
504 MUSTTAIL return InterpNext(S);
505#else
506 return true;
507#endif
508}
509PRESERVE_NONE
510static bool Interp_AddOffsetIntAP(InterpState &S) {
511 if (!AddOffset<PT_IntAP>(S, S.PC)) return false;
512#if USE_TAILCALLS
513 MUSTTAIL return InterpNext(S);
514#else
515 return true;
516#endif
517}
518PRESERVE_NONE
519static bool Interp_AddOffsetIntAPS(InterpState &S) {
520 if (!AddOffset<PT_IntAPS>(S, S.PC)) return false;
521#if USE_TAILCALLS
522 MUSTTAIL return InterpNext(S);
523#else
524 return true;
525#endif
526}
527PRESERVE_NONE
528static bool Interp_AddOffsetBool(InterpState &S) {
529 if (!AddOffset<PT_Bool>(S, S.PC)) return false;
530#if USE_TAILCALLS
531 MUSTTAIL return InterpNext(S);
532#else
533 return true;
534#endif
535}
536#endif
537#ifdef GET_DISASM
538case OP_AddOffsetSint8:
539 Text.Op = PrintName("AddOffsetSint8");
540 break;
541case OP_AddOffsetUint8:
542 Text.Op = PrintName("AddOffsetUint8");
543 break;
544case OP_AddOffsetSint16:
545 Text.Op = PrintName("AddOffsetSint16");
546 break;
547case OP_AddOffsetUint16:
548 Text.Op = PrintName("AddOffsetUint16");
549 break;
550case OP_AddOffsetSint32:
551 Text.Op = PrintName("AddOffsetSint32");
552 break;
553case OP_AddOffsetUint32:
554 Text.Op = PrintName("AddOffsetUint32");
555 break;
556case OP_AddOffsetSint64:
557 Text.Op = PrintName("AddOffsetSint64");
558 break;
559case OP_AddOffsetUint64:
560 Text.Op = PrintName("AddOffsetUint64");
561 break;
562case OP_AddOffsetIntAP:
563 Text.Op = PrintName("AddOffsetIntAP");
564 break;
565case OP_AddOffsetIntAPS:
566 Text.Op = PrintName("AddOffsetIntAPS");
567 break;
568case OP_AddOffsetBool:
569 Text.Op = PrintName("AddOffsetBool");
570 break;
571#endif
572#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
573bool emitAddOffsetSint8(SourceInfo);
574bool emitAddOffsetUint8(SourceInfo);
575bool emitAddOffsetSint16(SourceInfo);
576bool emitAddOffsetUint16(SourceInfo);
577bool emitAddOffsetSint32(SourceInfo);
578bool emitAddOffsetUint32(SourceInfo);
579bool emitAddOffsetSint64(SourceInfo);
580bool emitAddOffsetUint64(SourceInfo);
581bool emitAddOffsetIntAP(SourceInfo);
582bool emitAddOffsetIntAPS(SourceInfo);
583bool emitAddOffsetBool(SourceInfo);
584#endif
585#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
586[[nodiscard]] bool emitAddOffset(PrimType, SourceInfo I);
587#endif
588#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
589bool
590#if defined(GET_EVAL_IMPL)
591EvalEmitter
592#else
593ByteCodeEmitter
594#endif
595::emitAddOffset(PrimType T0, SourceInfo I) {
596 switch (T0) {
597 case PT_Sint8:
598 return emitAddOffsetSint8(I);
599 case PT_Uint8:
600 return emitAddOffsetUint8(I);
601 case PT_Sint16:
602 return emitAddOffsetSint16(I);
603 case PT_Uint16:
604 return emitAddOffsetUint16(I);
605 case PT_Sint32:
606 return emitAddOffsetSint32(I);
607 case PT_Uint32:
608 return emitAddOffsetUint32(I);
609 case PT_Sint64:
610 return emitAddOffsetSint64(I);
611 case PT_Uint64:
612 return emitAddOffsetUint64(I);
613 case PT_IntAP:
614 return emitAddOffsetIntAP(I);
615 case PT_IntAPS:
616 return emitAddOffsetIntAPS(I);
617 case PT_Bool:
618 return emitAddOffsetBool(I);
619 default: llvm_unreachable("invalid type: emitAddOffset");
620 }
621 llvm_unreachable("invalid enum value");
622}
623#endif
624#ifdef GET_LINK_IMPL
625bool ByteCodeEmitter::emitAddOffsetSint8(SourceInfo L) {
626 return emitOp<>(OP_AddOffsetSint8, L);
627}
628bool ByteCodeEmitter::emitAddOffsetUint8(SourceInfo L) {
629 return emitOp<>(OP_AddOffsetUint8, L);
630}
631bool ByteCodeEmitter::emitAddOffsetSint16(SourceInfo L) {
632 return emitOp<>(OP_AddOffsetSint16, L);
633}
634bool ByteCodeEmitter::emitAddOffsetUint16(SourceInfo L) {
635 return emitOp<>(OP_AddOffsetUint16, L);
636}
637bool ByteCodeEmitter::emitAddOffsetSint32(SourceInfo L) {
638 return emitOp<>(OP_AddOffsetSint32, L);
639}
640bool ByteCodeEmitter::emitAddOffsetUint32(SourceInfo L) {
641 return emitOp<>(OP_AddOffsetUint32, L);
642}
643bool ByteCodeEmitter::emitAddOffsetSint64(SourceInfo L) {
644 return emitOp<>(OP_AddOffsetSint64, L);
645}
646bool ByteCodeEmitter::emitAddOffsetUint64(SourceInfo L) {
647 return emitOp<>(OP_AddOffsetUint64, L);
648}
649bool ByteCodeEmitter::emitAddOffsetIntAP(SourceInfo L) {
650 return emitOp<>(OP_AddOffsetIntAP, L);
651}
652bool ByteCodeEmitter::emitAddOffsetIntAPS(SourceInfo L) {
653 return emitOp<>(OP_AddOffsetIntAPS, L);
654}
655bool ByteCodeEmitter::emitAddOffsetBool(SourceInfo L) {
656 return emitOp<>(OP_AddOffsetBool, L);
657}
658#endif
659#ifdef GET_EVAL_IMPL
660bool EvalEmitter::emitAddOffsetSint8(SourceInfo L) {
661 if (!isActive()) return true;
662 CurrentSource = L;
663 return AddOffset<PT_Sint8>(S, CodePtr());
664}
665bool EvalEmitter::emitAddOffsetUint8(SourceInfo L) {
666 if (!isActive()) return true;
667 CurrentSource = L;
668 return AddOffset<PT_Uint8>(S, CodePtr());
669}
670bool EvalEmitter::emitAddOffsetSint16(SourceInfo L) {
671 if (!isActive()) return true;
672 CurrentSource = L;
673 return AddOffset<PT_Sint16>(S, CodePtr());
674}
675bool EvalEmitter::emitAddOffsetUint16(SourceInfo L) {
676 if (!isActive()) return true;
677 CurrentSource = L;
678 return AddOffset<PT_Uint16>(S, CodePtr());
679}
680bool EvalEmitter::emitAddOffsetSint32(SourceInfo L) {
681 if (!isActive()) return true;
682 CurrentSource = L;
683 return AddOffset<PT_Sint32>(S, CodePtr());
684}
685bool EvalEmitter::emitAddOffsetUint32(SourceInfo L) {
686 if (!isActive()) return true;
687 CurrentSource = L;
688 return AddOffset<PT_Uint32>(S, CodePtr());
689}
690bool EvalEmitter::emitAddOffsetSint64(SourceInfo L) {
691 if (!isActive()) return true;
692 CurrentSource = L;
693 return AddOffset<PT_Sint64>(S, CodePtr());
694}
695bool EvalEmitter::emitAddOffsetUint64(SourceInfo L) {
696 if (!isActive()) return true;
697 CurrentSource = L;
698 return AddOffset<PT_Uint64>(S, CodePtr());
699}
700bool EvalEmitter::emitAddOffsetIntAP(SourceInfo L) {
701 if (!isActive()) return true;
702 CurrentSource = L;
703 return AddOffset<PT_IntAP>(S, CodePtr());
704}
705bool EvalEmitter::emitAddOffsetIntAPS(SourceInfo L) {
706 if (!isActive()) return true;
707 CurrentSource = L;
708 return AddOffset<PT_IntAPS>(S, CodePtr());
709}
710bool EvalEmitter::emitAddOffsetBool(SourceInfo L) {
711 if (!isActive()) return true;
712 CurrentSource = L;
713 return AddOffset<PT_Bool>(S, CodePtr());
714}
715#endif
716#ifdef GET_OPCODE_NAMES
717OP_Addf,
718#endif
719#ifdef GET_INTERPFN_LIST
720&Interp_Addf,
721#endif
722#ifdef GET_INTERPFN_DISPATCHERS
723PRESERVE_NONE
724static bool Interp_Addf(InterpState &S) {
725 {
726 CodePtr OpPC = S.PC;
727 const auto V0 = ReadArg<uint32_t>(S, S.PC);
728 if (!Addf(S, OpPC, V0)) return false;
729 }
730#if USE_TAILCALLS
731 MUSTTAIL return InterpNext(S);
732#else
733 return true;
734#endif
735}
736#endif
737#ifdef GET_DISASM
738case OP_Addf:
739 Text.Op = PrintName("Addf");
740 Text.Args.push_back(printArg<uint32_t>(PC));
741 break;
742#endif
743#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
744bool emitAddf( uint32_t , SourceInfo);
745#endif
746#ifdef GET_LINK_IMPL
747bool ByteCodeEmitter::emitAddf( uint32_t A0, SourceInfo L) {
748 return emitOp<uint32_t>(OP_Addf, A0, L);
749}
750#endif
751#ifdef GET_EVAL_IMPL
752bool EvalEmitter::emitAddf( uint32_t A0, SourceInfo L) {
753 if (!isActive()) return true;
754 CurrentSource = L;
755 return Addf(S, CodePtr(), A0);
756}
757#endif
758#ifdef GET_OPCODE_NAMES
759OP_Alloc,
760#endif
761#ifdef GET_INTERPFN_LIST
762&Interp_Alloc,
763#endif
764#ifdef GET_INTERPFN_DISPATCHERS
765PRESERVE_NONE
766static bool Interp_Alloc(InterpState &S) {
767 {
768 CodePtr OpPC = S.PC;
769 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
770 if (!Alloc(S, OpPC, V0)) return false;
771 }
772#if USE_TAILCALLS
773 MUSTTAIL return InterpNext(S);
774#else
775 return true;
776#endif
777}
778#endif
779#ifdef GET_DISASM
780case OP_Alloc:
781 Text.Op = PrintName("Alloc");
782 Text.Args.push_back(printArg<const Descriptor *>(PC));
783 break;
784#endif
785#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
786bool emitAlloc( const Descriptor * , SourceInfo);
787#endif
788#ifdef GET_LINK_IMPL
789bool ByteCodeEmitter::emitAlloc( const Descriptor * A0, SourceInfo L) {
790 return emitOp<const Descriptor *>(OP_Alloc, A0, L);
791}
792#endif
793#ifdef GET_EVAL_IMPL
794bool EvalEmitter::emitAlloc( const Descriptor * A0, SourceInfo L) {
795 if (!isActive()) return true;
796 CurrentSource = L;
797 return Alloc(S, CodePtr(), A0);
798}
799#endif
800#ifdef GET_OPCODE_NAMES
801OP_AllocCNSint8,
802OP_AllocCNUint8,
803OP_AllocCNSint16,
804OP_AllocCNUint16,
805OP_AllocCNSint32,
806OP_AllocCNUint32,
807OP_AllocCNSint64,
808OP_AllocCNUint64,
809OP_AllocCNIntAP,
810OP_AllocCNIntAPS,
811OP_AllocCNBool,
812#endif
813#ifdef GET_INTERPFN_LIST
814&Interp_AllocCNSint8,
815&Interp_AllocCNUint8,
816&Interp_AllocCNSint16,
817&Interp_AllocCNUint16,
818&Interp_AllocCNSint32,
819&Interp_AllocCNUint32,
820&Interp_AllocCNSint64,
821&Interp_AllocCNUint64,
822&Interp_AllocCNIntAP,
823&Interp_AllocCNIntAPS,
824&Interp_AllocCNBool,
825#endif
826#ifdef GET_INTERPFN_DISPATCHERS
827PRESERVE_NONE
828static bool Interp_AllocCNSint8(InterpState &S) {
829 {
830 CodePtr OpPC = S.PC;
831 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
832 const auto V1 = ReadArg<bool>(S, S.PC);
833 if (!AllocCN<PT_Sint8>(S, OpPC, V0, V1)) return false;
834 }
835#if USE_TAILCALLS
836 MUSTTAIL return InterpNext(S);
837#else
838 return true;
839#endif
840}
841PRESERVE_NONE
842static bool Interp_AllocCNUint8(InterpState &S) {
843 {
844 CodePtr OpPC = S.PC;
845 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
846 const auto V1 = ReadArg<bool>(S, S.PC);
847 if (!AllocCN<PT_Uint8>(S, OpPC, V0, V1)) return false;
848 }
849#if USE_TAILCALLS
850 MUSTTAIL return InterpNext(S);
851#else
852 return true;
853#endif
854}
855PRESERVE_NONE
856static bool Interp_AllocCNSint16(InterpState &S) {
857 {
858 CodePtr OpPC = S.PC;
859 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
860 const auto V1 = ReadArg<bool>(S, S.PC);
861 if (!AllocCN<PT_Sint16>(S, OpPC, V0, V1)) return false;
862 }
863#if USE_TAILCALLS
864 MUSTTAIL return InterpNext(S);
865#else
866 return true;
867#endif
868}
869PRESERVE_NONE
870static bool Interp_AllocCNUint16(InterpState &S) {
871 {
872 CodePtr OpPC = S.PC;
873 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
874 const auto V1 = ReadArg<bool>(S, S.PC);
875 if (!AllocCN<PT_Uint16>(S, OpPC, V0, V1)) return false;
876 }
877#if USE_TAILCALLS
878 MUSTTAIL return InterpNext(S);
879#else
880 return true;
881#endif
882}
883PRESERVE_NONE
884static bool Interp_AllocCNSint32(InterpState &S) {
885 {
886 CodePtr OpPC = S.PC;
887 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
888 const auto V1 = ReadArg<bool>(S, S.PC);
889 if (!AllocCN<PT_Sint32>(S, OpPC, V0, V1)) return false;
890 }
891#if USE_TAILCALLS
892 MUSTTAIL return InterpNext(S);
893#else
894 return true;
895#endif
896}
897PRESERVE_NONE
898static bool Interp_AllocCNUint32(InterpState &S) {
899 {
900 CodePtr OpPC = S.PC;
901 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
902 const auto V1 = ReadArg<bool>(S, S.PC);
903 if (!AllocCN<PT_Uint32>(S, OpPC, V0, V1)) return false;
904 }
905#if USE_TAILCALLS
906 MUSTTAIL return InterpNext(S);
907#else
908 return true;
909#endif
910}
911PRESERVE_NONE
912static bool Interp_AllocCNSint64(InterpState &S) {
913 {
914 CodePtr OpPC = S.PC;
915 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
916 const auto V1 = ReadArg<bool>(S, S.PC);
917 if (!AllocCN<PT_Sint64>(S, OpPC, V0, V1)) return false;
918 }
919#if USE_TAILCALLS
920 MUSTTAIL return InterpNext(S);
921#else
922 return true;
923#endif
924}
925PRESERVE_NONE
926static bool Interp_AllocCNUint64(InterpState &S) {
927 {
928 CodePtr OpPC = S.PC;
929 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
930 const auto V1 = ReadArg<bool>(S, S.PC);
931 if (!AllocCN<PT_Uint64>(S, OpPC, V0, V1)) return false;
932 }
933#if USE_TAILCALLS
934 MUSTTAIL return InterpNext(S);
935#else
936 return true;
937#endif
938}
939PRESERVE_NONE
940static bool Interp_AllocCNIntAP(InterpState &S) {
941 {
942 CodePtr OpPC = S.PC;
943 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
944 const auto V1 = ReadArg<bool>(S, S.PC);
945 if (!AllocCN<PT_IntAP>(S, OpPC, V0, V1)) return false;
946 }
947#if USE_TAILCALLS
948 MUSTTAIL return InterpNext(S);
949#else
950 return true;
951#endif
952}
953PRESERVE_NONE
954static bool Interp_AllocCNIntAPS(InterpState &S) {
955 {
956 CodePtr OpPC = S.PC;
957 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
958 const auto V1 = ReadArg<bool>(S, S.PC);
959 if (!AllocCN<PT_IntAPS>(S, OpPC, V0, V1)) return false;
960 }
961#if USE_TAILCALLS
962 MUSTTAIL return InterpNext(S);
963#else
964 return true;
965#endif
966}
967PRESERVE_NONE
968static bool Interp_AllocCNBool(InterpState &S) {
969 {
970 CodePtr OpPC = S.PC;
971 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
972 const auto V1 = ReadArg<bool>(S, S.PC);
973 if (!AllocCN<PT_Bool>(S, OpPC, V0, V1)) return false;
974 }
975#if USE_TAILCALLS
976 MUSTTAIL return InterpNext(S);
977#else
978 return true;
979#endif
980}
981#endif
982#ifdef GET_DISASM
983case OP_AllocCNSint8:
984 Text.Op = PrintName("AllocCNSint8");
985 Text.Args.push_back(printArg<const Descriptor *>(PC));
986 Text.Args.push_back(printArg<bool>(PC));
987 break;
988case OP_AllocCNUint8:
989 Text.Op = PrintName("AllocCNUint8");
990 Text.Args.push_back(printArg<const Descriptor *>(PC));
991 Text.Args.push_back(printArg<bool>(PC));
992 break;
993case OP_AllocCNSint16:
994 Text.Op = PrintName("AllocCNSint16");
995 Text.Args.push_back(printArg<const Descriptor *>(PC));
996 Text.Args.push_back(printArg<bool>(PC));
997 break;
998case OP_AllocCNUint16:
999 Text.Op = PrintName("AllocCNUint16");
1000 Text.Args.push_back(printArg<const Descriptor *>(PC));
1001 Text.Args.push_back(printArg<bool>(PC));
1002 break;
1003case OP_AllocCNSint32:
1004 Text.Op = PrintName("AllocCNSint32");
1005 Text.Args.push_back(printArg<const Descriptor *>(PC));
1006 Text.Args.push_back(printArg<bool>(PC));
1007 break;
1008case OP_AllocCNUint32:
1009 Text.Op = PrintName("AllocCNUint32");
1010 Text.Args.push_back(printArg<const Descriptor *>(PC));
1011 Text.Args.push_back(printArg<bool>(PC));
1012 break;
1013case OP_AllocCNSint64:
1014 Text.Op = PrintName("AllocCNSint64");
1015 Text.Args.push_back(printArg<const Descriptor *>(PC));
1016 Text.Args.push_back(printArg<bool>(PC));
1017 break;
1018case OP_AllocCNUint64:
1019 Text.Op = PrintName("AllocCNUint64");
1020 Text.Args.push_back(printArg<const Descriptor *>(PC));
1021 Text.Args.push_back(printArg<bool>(PC));
1022 break;
1023case OP_AllocCNIntAP:
1024 Text.Op = PrintName("AllocCNIntAP");
1025 Text.Args.push_back(printArg<const Descriptor *>(PC));
1026 Text.Args.push_back(printArg<bool>(PC));
1027 break;
1028case OP_AllocCNIntAPS:
1029 Text.Op = PrintName("AllocCNIntAPS");
1030 Text.Args.push_back(printArg<const Descriptor *>(PC));
1031 Text.Args.push_back(printArg<bool>(PC));
1032 break;
1033case OP_AllocCNBool:
1034 Text.Op = PrintName("AllocCNBool");
1035 Text.Args.push_back(printArg<const Descriptor *>(PC));
1036 Text.Args.push_back(printArg<bool>(PC));
1037 break;
1038#endif
1039#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1040bool emitAllocCNSint8( const Descriptor * , bool , SourceInfo);
1041bool emitAllocCNUint8( const Descriptor * , bool , SourceInfo);
1042bool emitAllocCNSint16( const Descriptor * , bool , SourceInfo);
1043bool emitAllocCNUint16( const Descriptor * , bool , SourceInfo);
1044bool emitAllocCNSint32( const Descriptor * , bool , SourceInfo);
1045bool emitAllocCNUint32( const Descriptor * , bool , SourceInfo);
1046bool emitAllocCNSint64( const Descriptor * , bool , SourceInfo);
1047bool emitAllocCNUint64( const Descriptor * , bool , SourceInfo);
1048bool emitAllocCNIntAP( const Descriptor * , bool , SourceInfo);
1049bool emitAllocCNIntAPS( const Descriptor * , bool , SourceInfo);
1050bool emitAllocCNBool( const Descriptor * , bool , SourceInfo);
1051#endif
1052#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1053[[nodiscard]] bool emitAllocCN(PrimType, const Descriptor *, bool, SourceInfo I);
1054#endif
1055#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
1056bool
1057#if defined(GET_EVAL_IMPL)
1058EvalEmitter
1059#else
1060ByteCodeEmitter
1061#endif
1062::emitAllocCN(PrimType T0, const Descriptor * A0, bool A1, SourceInfo I) {
1063 switch (T0) {
1064 case PT_Sint8:
1065 return emitAllocCNSint8(A0, A1, I);
1066 case PT_Uint8:
1067 return emitAllocCNUint8(A0, A1, I);
1068 case PT_Sint16:
1069 return emitAllocCNSint16(A0, A1, I);
1070 case PT_Uint16:
1071 return emitAllocCNUint16(A0, A1, I);
1072 case PT_Sint32:
1073 return emitAllocCNSint32(A0, A1, I);
1074 case PT_Uint32:
1075 return emitAllocCNUint32(A0, A1, I);
1076 case PT_Sint64:
1077 return emitAllocCNSint64(A0, A1, I);
1078 case PT_Uint64:
1079 return emitAllocCNUint64(A0, A1, I);
1080 case PT_IntAP:
1081 return emitAllocCNIntAP(A0, A1, I);
1082 case PT_IntAPS:
1083 return emitAllocCNIntAPS(A0, A1, I);
1084 case PT_Bool:
1085 return emitAllocCNBool(A0, A1, I);
1086 default: llvm_unreachable("invalid type: emitAllocCN");
1087 }
1088 llvm_unreachable("invalid enum value");
1089}
1090#endif
1091#ifdef GET_LINK_IMPL
1092bool ByteCodeEmitter::emitAllocCNSint8( const Descriptor * A0, bool A1, SourceInfo L) {
1093 return emitOp<const Descriptor *, bool>(OP_AllocCNSint8, A0, A1, L);
1094}
1095bool ByteCodeEmitter::emitAllocCNUint8( const Descriptor * A0, bool A1, SourceInfo L) {
1096 return emitOp<const Descriptor *, bool>(OP_AllocCNUint8, A0, A1, L);
1097}
1098bool ByteCodeEmitter::emitAllocCNSint16( const Descriptor * A0, bool A1, SourceInfo L) {
1099 return emitOp<const Descriptor *, bool>(OP_AllocCNSint16, A0, A1, L);
1100}
1101bool ByteCodeEmitter::emitAllocCNUint16( const Descriptor * A0, bool A1, SourceInfo L) {
1102 return emitOp<const Descriptor *, bool>(OP_AllocCNUint16, A0, A1, L);
1103}
1104bool ByteCodeEmitter::emitAllocCNSint32( const Descriptor * A0, bool A1, SourceInfo L) {
1105 return emitOp<const Descriptor *, bool>(OP_AllocCNSint32, A0, A1, L);
1106}
1107bool ByteCodeEmitter::emitAllocCNUint32( const Descriptor * A0, bool A1, SourceInfo L) {
1108 return emitOp<const Descriptor *, bool>(OP_AllocCNUint32, A0, A1, L);
1109}
1110bool ByteCodeEmitter::emitAllocCNSint64( const Descriptor * A0, bool A1, SourceInfo L) {
1111 return emitOp<const Descriptor *, bool>(OP_AllocCNSint64, A0, A1, L);
1112}
1113bool ByteCodeEmitter::emitAllocCNUint64( const Descriptor * A0, bool A1, SourceInfo L) {
1114 return emitOp<const Descriptor *, bool>(OP_AllocCNUint64, A0, A1, L);
1115}
1116bool ByteCodeEmitter::emitAllocCNIntAP( const Descriptor * A0, bool A1, SourceInfo L) {
1117 return emitOp<const Descriptor *, bool>(OP_AllocCNIntAP, A0, A1, L);
1118}
1119bool ByteCodeEmitter::emitAllocCNIntAPS( const Descriptor * A0, bool A1, SourceInfo L) {
1120 return emitOp<const Descriptor *, bool>(OP_AllocCNIntAPS, A0, A1, L);
1121}
1122bool ByteCodeEmitter::emitAllocCNBool( const Descriptor * A0, bool A1, SourceInfo L) {
1123 return emitOp<const Descriptor *, bool>(OP_AllocCNBool, A0, A1, L);
1124}
1125#endif
1126#ifdef GET_EVAL_IMPL
1127bool EvalEmitter::emitAllocCNSint8( const Descriptor * A0, bool A1, SourceInfo L) {
1128 if (!isActive()) return true;
1129 CurrentSource = L;
1130 return AllocCN<PT_Sint8>(S, CodePtr(), A0, A1);
1131}
1132bool EvalEmitter::emitAllocCNUint8( const Descriptor * A0, bool A1, SourceInfo L) {
1133 if (!isActive()) return true;
1134 CurrentSource = L;
1135 return AllocCN<PT_Uint8>(S, CodePtr(), A0, A1);
1136}
1137bool EvalEmitter::emitAllocCNSint16( const Descriptor * A0, bool A1, SourceInfo L) {
1138 if (!isActive()) return true;
1139 CurrentSource = L;
1140 return AllocCN<PT_Sint16>(S, CodePtr(), A0, A1);
1141}
1142bool EvalEmitter::emitAllocCNUint16( const Descriptor * A0, bool A1, SourceInfo L) {
1143 if (!isActive()) return true;
1144 CurrentSource = L;
1145 return AllocCN<PT_Uint16>(S, CodePtr(), A0, A1);
1146}
1147bool EvalEmitter::emitAllocCNSint32( const Descriptor * A0, bool A1, SourceInfo L) {
1148 if (!isActive()) return true;
1149 CurrentSource = L;
1150 return AllocCN<PT_Sint32>(S, CodePtr(), A0, A1);
1151}
1152bool EvalEmitter::emitAllocCNUint32( const Descriptor * A0, bool A1, SourceInfo L) {
1153 if (!isActive()) return true;
1154 CurrentSource = L;
1155 return AllocCN<PT_Uint32>(S, CodePtr(), A0, A1);
1156}
1157bool EvalEmitter::emitAllocCNSint64( const Descriptor * A0, bool A1, SourceInfo L) {
1158 if (!isActive()) return true;
1159 CurrentSource = L;
1160 return AllocCN<PT_Sint64>(S, CodePtr(), A0, A1);
1161}
1162bool EvalEmitter::emitAllocCNUint64( const Descriptor * A0, bool A1, SourceInfo L) {
1163 if (!isActive()) return true;
1164 CurrentSource = L;
1165 return AllocCN<PT_Uint64>(S, CodePtr(), A0, A1);
1166}
1167bool EvalEmitter::emitAllocCNIntAP( const Descriptor * A0, bool A1, SourceInfo L) {
1168 if (!isActive()) return true;
1169 CurrentSource = L;
1170 return AllocCN<PT_IntAP>(S, CodePtr(), A0, A1);
1171}
1172bool EvalEmitter::emitAllocCNIntAPS( const Descriptor * A0, bool A1, SourceInfo L) {
1173 if (!isActive()) return true;
1174 CurrentSource = L;
1175 return AllocCN<PT_IntAPS>(S, CodePtr(), A0, A1);
1176}
1177bool EvalEmitter::emitAllocCNBool( const Descriptor * A0, bool A1, SourceInfo L) {
1178 if (!isActive()) return true;
1179 CurrentSource = L;
1180 return AllocCN<PT_Bool>(S, CodePtr(), A0, A1);
1181}
1182#endif
1183#ifdef GET_OPCODE_NAMES
1184OP_AllocNSint8,
1185OP_AllocNUint8,
1186OP_AllocNSint16,
1187OP_AllocNUint16,
1188OP_AllocNSint32,
1189OP_AllocNUint32,
1190OP_AllocNSint64,
1191OP_AllocNUint64,
1192OP_AllocNIntAP,
1193OP_AllocNIntAPS,
1194OP_AllocNBool,
1195#endif
1196#ifdef GET_INTERPFN_LIST
1197&Interp_AllocNSint8,
1198&Interp_AllocNUint8,
1199&Interp_AllocNSint16,
1200&Interp_AllocNUint16,
1201&Interp_AllocNSint32,
1202&Interp_AllocNUint32,
1203&Interp_AllocNSint64,
1204&Interp_AllocNUint64,
1205&Interp_AllocNIntAP,
1206&Interp_AllocNIntAPS,
1207&Interp_AllocNBool,
1208#endif
1209#ifdef GET_INTERPFN_DISPATCHERS
1210PRESERVE_NONE
1211static bool Interp_AllocNSint8(InterpState &S) {
1212 {
1213 CodePtr OpPC = S.PC;
1214 const auto V0 = ReadArg<PrimType>(S, S.PC);
1215 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1216 const auto V2 = ReadArg<bool>(S, S.PC);
1217 if (!AllocN<PT_Sint8>(S, OpPC, V0, V1, V2)) return false;
1218 }
1219#if USE_TAILCALLS
1220 MUSTTAIL return InterpNext(S);
1221#else
1222 return true;
1223#endif
1224}
1225PRESERVE_NONE
1226static bool Interp_AllocNUint8(InterpState &S) {
1227 {
1228 CodePtr OpPC = S.PC;
1229 const auto V0 = ReadArg<PrimType>(S, S.PC);
1230 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1231 const auto V2 = ReadArg<bool>(S, S.PC);
1232 if (!AllocN<PT_Uint8>(S, OpPC, V0, V1, V2)) return false;
1233 }
1234#if USE_TAILCALLS
1235 MUSTTAIL return InterpNext(S);
1236#else
1237 return true;
1238#endif
1239}
1240PRESERVE_NONE
1241static bool Interp_AllocNSint16(InterpState &S) {
1242 {
1243 CodePtr OpPC = S.PC;
1244 const auto V0 = ReadArg<PrimType>(S, S.PC);
1245 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1246 const auto V2 = ReadArg<bool>(S, S.PC);
1247 if (!AllocN<PT_Sint16>(S, OpPC, V0, V1, V2)) return false;
1248 }
1249#if USE_TAILCALLS
1250 MUSTTAIL return InterpNext(S);
1251#else
1252 return true;
1253#endif
1254}
1255PRESERVE_NONE
1256static bool Interp_AllocNUint16(InterpState &S) {
1257 {
1258 CodePtr OpPC = S.PC;
1259 const auto V0 = ReadArg<PrimType>(S, S.PC);
1260 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1261 const auto V2 = ReadArg<bool>(S, S.PC);
1262 if (!AllocN<PT_Uint16>(S, OpPC, V0, V1, V2)) return false;
1263 }
1264#if USE_TAILCALLS
1265 MUSTTAIL return InterpNext(S);
1266#else
1267 return true;
1268#endif
1269}
1270PRESERVE_NONE
1271static bool Interp_AllocNSint32(InterpState &S) {
1272 {
1273 CodePtr OpPC = S.PC;
1274 const auto V0 = ReadArg<PrimType>(S, S.PC);
1275 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1276 const auto V2 = ReadArg<bool>(S, S.PC);
1277 if (!AllocN<PT_Sint32>(S, OpPC, V0, V1, V2)) return false;
1278 }
1279#if USE_TAILCALLS
1280 MUSTTAIL return InterpNext(S);
1281#else
1282 return true;
1283#endif
1284}
1285PRESERVE_NONE
1286static bool Interp_AllocNUint32(InterpState &S) {
1287 {
1288 CodePtr OpPC = S.PC;
1289 const auto V0 = ReadArg<PrimType>(S, S.PC);
1290 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1291 const auto V2 = ReadArg<bool>(S, S.PC);
1292 if (!AllocN<PT_Uint32>(S, OpPC, V0, V1, V2)) return false;
1293 }
1294#if USE_TAILCALLS
1295 MUSTTAIL return InterpNext(S);
1296#else
1297 return true;
1298#endif
1299}
1300PRESERVE_NONE
1301static bool Interp_AllocNSint64(InterpState &S) {
1302 {
1303 CodePtr OpPC = S.PC;
1304 const auto V0 = ReadArg<PrimType>(S, S.PC);
1305 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1306 const auto V2 = ReadArg<bool>(S, S.PC);
1307 if (!AllocN<PT_Sint64>(S, OpPC, V0, V1, V2)) return false;
1308 }
1309#if USE_TAILCALLS
1310 MUSTTAIL return InterpNext(S);
1311#else
1312 return true;
1313#endif
1314}
1315PRESERVE_NONE
1316static bool Interp_AllocNUint64(InterpState &S) {
1317 {
1318 CodePtr OpPC = S.PC;
1319 const auto V0 = ReadArg<PrimType>(S, S.PC);
1320 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1321 const auto V2 = ReadArg<bool>(S, S.PC);
1322 if (!AllocN<PT_Uint64>(S, OpPC, V0, V1, V2)) return false;
1323 }
1324#if USE_TAILCALLS
1325 MUSTTAIL return InterpNext(S);
1326#else
1327 return true;
1328#endif
1329}
1330PRESERVE_NONE
1331static bool Interp_AllocNIntAP(InterpState &S) {
1332 {
1333 CodePtr OpPC = S.PC;
1334 const auto V0 = ReadArg<PrimType>(S, S.PC);
1335 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1336 const auto V2 = ReadArg<bool>(S, S.PC);
1337 if (!AllocN<PT_IntAP>(S, OpPC, V0, V1, V2)) return false;
1338 }
1339#if USE_TAILCALLS
1340 MUSTTAIL return InterpNext(S);
1341#else
1342 return true;
1343#endif
1344}
1345PRESERVE_NONE
1346static bool Interp_AllocNIntAPS(InterpState &S) {
1347 {
1348 CodePtr OpPC = S.PC;
1349 const auto V0 = ReadArg<PrimType>(S, S.PC);
1350 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1351 const auto V2 = ReadArg<bool>(S, S.PC);
1352 if (!AllocN<PT_IntAPS>(S, OpPC, V0, V1, V2)) return false;
1353 }
1354#if USE_TAILCALLS
1355 MUSTTAIL return InterpNext(S);
1356#else
1357 return true;
1358#endif
1359}
1360PRESERVE_NONE
1361static bool Interp_AllocNBool(InterpState &S) {
1362 {
1363 CodePtr OpPC = S.PC;
1364 const auto V0 = ReadArg<PrimType>(S, S.PC);
1365 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1366 const auto V2 = ReadArg<bool>(S, S.PC);
1367 if (!AllocN<PT_Bool>(S, OpPC, V0, V1, V2)) return false;
1368 }
1369#if USE_TAILCALLS
1370 MUSTTAIL return InterpNext(S);
1371#else
1372 return true;
1373#endif
1374}
1375#endif
1376#ifdef GET_DISASM
1377case OP_AllocNSint8:
1378 Text.Op = PrintName("AllocNSint8");
1379 Text.Args.push_back(printArg<PrimType>(PC));
1380 Text.Args.push_back(printArg<const Expr *>(PC));
1381 Text.Args.push_back(printArg<bool>(PC));
1382 break;
1383case OP_AllocNUint8:
1384 Text.Op = PrintName("AllocNUint8");
1385 Text.Args.push_back(printArg<PrimType>(PC));
1386 Text.Args.push_back(printArg<const Expr *>(PC));
1387 Text.Args.push_back(printArg<bool>(PC));
1388 break;
1389case OP_AllocNSint16:
1390 Text.Op = PrintName("AllocNSint16");
1391 Text.Args.push_back(printArg<PrimType>(PC));
1392 Text.Args.push_back(printArg<const Expr *>(PC));
1393 Text.Args.push_back(printArg<bool>(PC));
1394 break;
1395case OP_AllocNUint16:
1396 Text.Op = PrintName("AllocNUint16");
1397 Text.Args.push_back(printArg<PrimType>(PC));
1398 Text.Args.push_back(printArg<const Expr *>(PC));
1399 Text.Args.push_back(printArg<bool>(PC));
1400 break;
1401case OP_AllocNSint32:
1402 Text.Op = PrintName("AllocNSint32");
1403 Text.Args.push_back(printArg<PrimType>(PC));
1404 Text.Args.push_back(printArg<const Expr *>(PC));
1405 Text.Args.push_back(printArg<bool>(PC));
1406 break;
1407case OP_AllocNUint32:
1408 Text.Op = PrintName("AllocNUint32");
1409 Text.Args.push_back(printArg<PrimType>(PC));
1410 Text.Args.push_back(printArg<const Expr *>(PC));
1411 Text.Args.push_back(printArg<bool>(PC));
1412 break;
1413case OP_AllocNSint64:
1414 Text.Op = PrintName("AllocNSint64");
1415 Text.Args.push_back(printArg<PrimType>(PC));
1416 Text.Args.push_back(printArg<const Expr *>(PC));
1417 Text.Args.push_back(printArg<bool>(PC));
1418 break;
1419case OP_AllocNUint64:
1420 Text.Op = PrintName("AllocNUint64");
1421 Text.Args.push_back(printArg<PrimType>(PC));
1422 Text.Args.push_back(printArg<const Expr *>(PC));
1423 Text.Args.push_back(printArg<bool>(PC));
1424 break;
1425case OP_AllocNIntAP:
1426 Text.Op = PrintName("AllocNIntAP");
1427 Text.Args.push_back(printArg<PrimType>(PC));
1428 Text.Args.push_back(printArg<const Expr *>(PC));
1429 Text.Args.push_back(printArg<bool>(PC));
1430 break;
1431case OP_AllocNIntAPS:
1432 Text.Op = PrintName("AllocNIntAPS");
1433 Text.Args.push_back(printArg<PrimType>(PC));
1434 Text.Args.push_back(printArg<const Expr *>(PC));
1435 Text.Args.push_back(printArg<bool>(PC));
1436 break;
1437case OP_AllocNBool:
1438 Text.Op = PrintName("AllocNBool");
1439 Text.Args.push_back(printArg<PrimType>(PC));
1440 Text.Args.push_back(printArg<const Expr *>(PC));
1441 Text.Args.push_back(printArg<bool>(PC));
1442 break;
1443#endif
1444#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1445bool emitAllocNSint8( PrimType , const Expr * , bool , SourceInfo);
1446bool emitAllocNUint8( PrimType , const Expr * , bool , SourceInfo);
1447bool emitAllocNSint16( PrimType , const Expr * , bool , SourceInfo);
1448bool emitAllocNUint16( PrimType , const Expr * , bool , SourceInfo);
1449bool emitAllocNSint32( PrimType , const Expr * , bool , SourceInfo);
1450bool emitAllocNUint32( PrimType , const Expr * , bool , SourceInfo);
1451bool emitAllocNSint64( PrimType , const Expr * , bool , SourceInfo);
1452bool emitAllocNUint64( PrimType , const Expr * , bool , SourceInfo);
1453bool emitAllocNIntAP( PrimType , const Expr * , bool , SourceInfo);
1454bool emitAllocNIntAPS( PrimType , const Expr * , bool , SourceInfo);
1455bool emitAllocNBool( PrimType , const Expr * , bool , SourceInfo);
1456#endif
1457#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1458[[nodiscard]] bool emitAllocN(PrimType, PrimType, const Expr *, bool, SourceInfo I);
1459#endif
1460#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
1461bool
1462#if defined(GET_EVAL_IMPL)
1463EvalEmitter
1464#else
1465ByteCodeEmitter
1466#endif
1467::emitAllocN(PrimType T0, PrimType A0, const Expr * A1, bool A2, SourceInfo I) {
1468 switch (T0) {
1469 case PT_Sint8:
1470 return emitAllocNSint8(A0, A1, A2, I);
1471 case PT_Uint8:
1472 return emitAllocNUint8(A0, A1, A2, I);
1473 case PT_Sint16:
1474 return emitAllocNSint16(A0, A1, A2, I);
1475 case PT_Uint16:
1476 return emitAllocNUint16(A0, A1, A2, I);
1477 case PT_Sint32:
1478 return emitAllocNSint32(A0, A1, A2, I);
1479 case PT_Uint32:
1480 return emitAllocNUint32(A0, A1, A2, I);
1481 case PT_Sint64:
1482 return emitAllocNSint64(A0, A1, A2, I);
1483 case PT_Uint64:
1484 return emitAllocNUint64(A0, A1, A2, I);
1485 case PT_IntAP:
1486 return emitAllocNIntAP(A0, A1, A2, I);
1487 case PT_IntAPS:
1488 return emitAllocNIntAPS(A0, A1, A2, I);
1489 case PT_Bool:
1490 return emitAllocNBool(A0, A1, A2, I);
1491 default: llvm_unreachable("invalid type: emitAllocN");
1492 }
1493 llvm_unreachable("invalid enum value");
1494}
1495#endif
1496#ifdef GET_LINK_IMPL
1497bool ByteCodeEmitter::emitAllocNSint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1498 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint8, A0, A1, A2, L);
1499}
1500bool ByteCodeEmitter::emitAllocNUint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1501 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint8, A0, A1, A2, L);
1502}
1503bool ByteCodeEmitter::emitAllocNSint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1504 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint16, A0, A1, A2, L);
1505}
1506bool ByteCodeEmitter::emitAllocNUint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1507 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint16, A0, A1, A2, L);
1508}
1509bool ByteCodeEmitter::emitAllocNSint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1510 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint32, A0, A1, A2, L);
1511}
1512bool ByteCodeEmitter::emitAllocNUint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1513 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint32, A0, A1, A2, L);
1514}
1515bool ByteCodeEmitter::emitAllocNSint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1516 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint64, A0, A1, A2, L);
1517}
1518bool ByteCodeEmitter::emitAllocNUint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1519 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint64, A0, A1, A2, L);
1520}
1521bool ByteCodeEmitter::emitAllocNIntAP( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1522 return emitOp<PrimType, const Expr *, bool>(OP_AllocNIntAP, A0, A1, A2, L);
1523}
1524bool ByteCodeEmitter::emitAllocNIntAPS( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1525 return emitOp<PrimType, const Expr *, bool>(OP_AllocNIntAPS, A0, A1, A2, L);
1526}
1527bool ByteCodeEmitter::emitAllocNBool( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1528 return emitOp<PrimType, const Expr *, bool>(OP_AllocNBool, A0, A1, A2, L);
1529}
1530#endif
1531#ifdef GET_EVAL_IMPL
1532bool EvalEmitter::emitAllocNSint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1533 if (!isActive()) return true;
1534 CurrentSource = L;
1535 return AllocN<PT_Sint8>(S, CodePtr(), A0, A1, A2);
1536}
1537bool EvalEmitter::emitAllocNUint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1538 if (!isActive()) return true;
1539 CurrentSource = L;
1540 return AllocN<PT_Uint8>(S, CodePtr(), A0, A1, A2);
1541}
1542bool EvalEmitter::emitAllocNSint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1543 if (!isActive()) return true;
1544 CurrentSource = L;
1545 return AllocN<PT_Sint16>(S, CodePtr(), A0, A1, A2);
1546}
1547bool EvalEmitter::emitAllocNUint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1548 if (!isActive()) return true;
1549 CurrentSource = L;
1550 return AllocN<PT_Uint16>(S, CodePtr(), A0, A1, A2);
1551}
1552bool EvalEmitter::emitAllocNSint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1553 if (!isActive()) return true;
1554 CurrentSource = L;
1555 return AllocN<PT_Sint32>(S, CodePtr(), A0, A1, A2);
1556}
1557bool EvalEmitter::emitAllocNUint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1558 if (!isActive()) return true;
1559 CurrentSource = L;
1560 return AllocN<PT_Uint32>(S, CodePtr(), A0, A1, A2);
1561}
1562bool EvalEmitter::emitAllocNSint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1563 if (!isActive()) return true;
1564 CurrentSource = L;
1565 return AllocN<PT_Sint64>(S, CodePtr(), A0, A1, A2);
1566}
1567bool EvalEmitter::emitAllocNUint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1568 if (!isActive()) return true;
1569 CurrentSource = L;
1570 return AllocN<PT_Uint64>(S, CodePtr(), A0, A1, A2);
1571}
1572bool EvalEmitter::emitAllocNIntAP( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1573 if (!isActive()) return true;
1574 CurrentSource = L;
1575 return AllocN<PT_IntAP>(S, CodePtr(), A0, A1, A2);
1576}
1577bool EvalEmitter::emitAllocNIntAPS( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1578 if (!isActive()) return true;
1579 CurrentSource = L;
1580 return AllocN<PT_IntAPS>(S, CodePtr(), A0, A1, A2);
1581}
1582bool EvalEmitter::emitAllocNBool( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1583 if (!isActive()) return true;
1584 CurrentSource = L;
1585 return AllocN<PT_Bool>(S, CodePtr(), A0, A1, A2);
1586}
1587#endif
1588#ifdef GET_OPCODE_NAMES
1589OP_ArrayDecay,
1590#endif
1591#ifdef GET_INTERPFN_LIST
1592&Interp_ArrayDecay,
1593#endif
1594#ifdef GET_INTERPFN_DISPATCHERS
1595PRESERVE_NONE
1596static bool Interp_ArrayDecay(InterpState &S) {
1597 if (!ArrayDecay(S, S.PC)) return false;
1598#if USE_TAILCALLS
1599 MUSTTAIL return InterpNext(S);
1600#else
1601 return true;
1602#endif
1603}
1604#endif
1605#ifdef GET_DISASM
1606case OP_ArrayDecay:
1607 Text.Op = PrintName("ArrayDecay");
1608 break;
1609#endif
1610#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1611bool emitArrayDecay(SourceInfo);
1612#endif
1613#ifdef GET_LINK_IMPL
1614bool ByteCodeEmitter::emitArrayDecay(SourceInfo L) {
1615 return emitOp<>(OP_ArrayDecay, L);
1616}
1617#endif
1618#ifdef GET_EVAL_IMPL
1619bool EvalEmitter::emitArrayDecay(SourceInfo L) {
1620 if (!isActive()) return true;
1621 CurrentSource = L;
1622 return ArrayDecay(S, CodePtr());
1623}
1624#endif
1625#ifdef GET_OPCODE_NAMES
1626OP_ArrayElemSint8,
1627OP_ArrayElemUint8,
1628OP_ArrayElemSint16,
1629OP_ArrayElemUint16,
1630OP_ArrayElemSint32,
1631OP_ArrayElemUint32,
1632OP_ArrayElemSint64,
1633OP_ArrayElemUint64,
1634OP_ArrayElemIntAP,
1635OP_ArrayElemIntAPS,
1636OP_ArrayElemBool,
1637OP_ArrayElemFixedPoint,
1638OP_ArrayElemPtr,
1639OP_ArrayElemMemberPtr,
1640OP_ArrayElemFloat,
1641#endif
1642#ifdef GET_INTERPFN_LIST
1643&Interp_ArrayElemSint8,
1644&Interp_ArrayElemUint8,
1645&Interp_ArrayElemSint16,
1646&Interp_ArrayElemUint16,
1647&Interp_ArrayElemSint32,
1648&Interp_ArrayElemUint32,
1649&Interp_ArrayElemSint64,
1650&Interp_ArrayElemUint64,
1651&Interp_ArrayElemIntAP,
1652&Interp_ArrayElemIntAPS,
1653&Interp_ArrayElemBool,
1654&Interp_ArrayElemFixedPoint,
1655&Interp_ArrayElemPtr,
1656&Interp_ArrayElemMemberPtr,
1657&Interp_ArrayElemFloat,
1658#endif
1659#ifdef GET_INTERPFN_DISPATCHERS
1660PRESERVE_NONE
1661static bool Interp_ArrayElemSint8(InterpState &S) {
1662 {
1663 CodePtr OpPC = S.PC;
1664 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1665 if (!ArrayElem<PT_Sint8>(S, OpPC, V0)) return false;
1666 }
1667#if USE_TAILCALLS
1668 MUSTTAIL return InterpNext(S);
1669#else
1670 return true;
1671#endif
1672}
1673PRESERVE_NONE
1674static bool Interp_ArrayElemUint8(InterpState &S) {
1675 {
1676 CodePtr OpPC = S.PC;
1677 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1678 if (!ArrayElem<PT_Uint8>(S, OpPC, V0)) return false;
1679 }
1680#if USE_TAILCALLS
1681 MUSTTAIL return InterpNext(S);
1682#else
1683 return true;
1684#endif
1685}
1686PRESERVE_NONE
1687static bool Interp_ArrayElemSint16(InterpState &S) {
1688 {
1689 CodePtr OpPC = S.PC;
1690 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1691 if (!ArrayElem<PT_Sint16>(S, OpPC, V0)) return false;
1692 }
1693#if USE_TAILCALLS
1694 MUSTTAIL return InterpNext(S);
1695#else
1696 return true;
1697#endif
1698}
1699PRESERVE_NONE
1700static bool Interp_ArrayElemUint16(InterpState &S) {
1701 {
1702 CodePtr OpPC = S.PC;
1703 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1704 if (!ArrayElem<PT_Uint16>(S, OpPC, V0)) return false;
1705 }
1706#if USE_TAILCALLS
1707 MUSTTAIL return InterpNext(S);
1708#else
1709 return true;
1710#endif
1711}
1712PRESERVE_NONE
1713static bool Interp_ArrayElemSint32(InterpState &S) {
1714 {
1715 CodePtr OpPC = S.PC;
1716 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1717 if (!ArrayElem<PT_Sint32>(S, OpPC, V0)) return false;
1718 }
1719#if USE_TAILCALLS
1720 MUSTTAIL return InterpNext(S);
1721#else
1722 return true;
1723#endif
1724}
1725PRESERVE_NONE
1726static bool Interp_ArrayElemUint32(InterpState &S) {
1727 {
1728 CodePtr OpPC = S.PC;
1729 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1730 if (!ArrayElem<PT_Uint32>(S, OpPC, V0)) return false;
1731 }
1732#if USE_TAILCALLS
1733 MUSTTAIL return InterpNext(S);
1734#else
1735 return true;
1736#endif
1737}
1738PRESERVE_NONE
1739static bool Interp_ArrayElemSint64(InterpState &S) {
1740 {
1741 CodePtr OpPC = S.PC;
1742 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1743 if (!ArrayElem<PT_Sint64>(S, OpPC, V0)) return false;
1744 }
1745#if USE_TAILCALLS
1746 MUSTTAIL return InterpNext(S);
1747#else
1748 return true;
1749#endif
1750}
1751PRESERVE_NONE
1752static bool Interp_ArrayElemUint64(InterpState &S) {
1753 {
1754 CodePtr OpPC = S.PC;
1755 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1756 if (!ArrayElem<PT_Uint64>(S, OpPC, V0)) return false;
1757 }
1758#if USE_TAILCALLS
1759 MUSTTAIL return InterpNext(S);
1760#else
1761 return true;
1762#endif
1763}
1764PRESERVE_NONE
1765static bool Interp_ArrayElemIntAP(InterpState &S) {
1766 {
1767 CodePtr OpPC = S.PC;
1768 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1769 if (!ArrayElem<PT_IntAP>(S, OpPC, V0)) return false;
1770 }
1771#if USE_TAILCALLS
1772 MUSTTAIL return InterpNext(S);
1773#else
1774 return true;
1775#endif
1776}
1777PRESERVE_NONE
1778static bool Interp_ArrayElemIntAPS(InterpState &S) {
1779 {
1780 CodePtr OpPC = S.PC;
1781 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1782 if (!ArrayElem<PT_IntAPS>(S, OpPC, V0)) return false;
1783 }
1784#if USE_TAILCALLS
1785 MUSTTAIL return InterpNext(S);
1786#else
1787 return true;
1788#endif
1789}
1790PRESERVE_NONE
1791static bool Interp_ArrayElemBool(InterpState &S) {
1792 {
1793 CodePtr OpPC = S.PC;
1794 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1795 if (!ArrayElem<PT_Bool>(S, OpPC, V0)) return false;
1796 }
1797#if USE_TAILCALLS
1798 MUSTTAIL return InterpNext(S);
1799#else
1800 return true;
1801#endif
1802}
1803PRESERVE_NONE
1804static bool Interp_ArrayElemFixedPoint(InterpState &S) {
1805 {
1806 CodePtr OpPC = S.PC;
1807 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1808 if (!ArrayElem<PT_FixedPoint>(S, OpPC, V0)) return false;
1809 }
1810#if USE_TAILCALLS
1811 MUSTTAIL return InterpNext(S);
1812#else
1813 return true;
1814#endif
1815}
1816PRESERVE_NONE
1817static bool Interp_ArrayElemPtr(InterpState &S) {
1818 {
1819 CodePtr OpPC = S.PC;
1820 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1821 if (!ArrayElem<PT_Ptr>(S, OpPC, V0)) return false;
1822 }
1823#if USE_TAILCALLS
1824 MUSTTAIL return InterpNext(S);
1825#else
1826 return true;
1827#endif
1828}
1829PRESERVE_NONE
1830static bool Interp_ArrayElemMemberPtr(InterpState &S) {
1831 {
1832 CodePtr OpPC = S.PC;
1833 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1834 if (!ArrayElem<PT_MemberPtr>(S, OpPC, V0)) return false;
1835 }
1836#if USE_TAILCALLS
1837 MUSTTAIL return InterpNext(S);
1838#else
1839 return true;
1840#endif
1841}
1842PRESERVE_NONE
1843static bool Interp_ArrayElemFloat(InterpState &S) {
1844 {
1845 CodePtr OpPC = S.PC;
1846 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1847 if (!ArrayElem<PT_Float>(S, OpPC, V0)) return false;
1848 }
1849#if USE_TAILCALLS
1850 MUSTTAIL return InterpNext(S);
1851#else
1852 return true;
1853#endif
1854}
1855#endif
1856#ifdef GET_DISASM
1857case OP_ArrayElemSint8:
1858 Text.Op = PrintName("ArrayElemSint8");
1859 Text.Args.push_back(printArg<uint32_t>(PC));
1860 break;
1861case OP_ArrayElemUint8:
1862 Text.Op = PrintName("ArrayElemUint8");
1863 Text.Args.push_back(printArg<uint32_t>(PC));
1864 break;
1865case OP_ArrayElemSint16:
1866 Text.Op = PrintName("ArrayElemSint16");
1867 Text.Args.push_back(printArg<uint32_t>(PC));
1868 break;
1869case OP_ArrayElemUint16:
1870 Text.Op = PrintName("ArrayElemUint16");
1871 Text.Args.push_back(printArg<uint32_t>(PC));
1872 break;
1873case OP_ArrayElemSint32:
1874 Text.Op = PrintName("ArrayElemSint32");
1875 Text.Args.push_back(printArg<uint32_t>(PC));
1876 break;
1877case OP_ArrayElemUint32:
1878 Text.Op = PrintName("ArrayElemUint32");
1879 Text.Args.push_back(printArg<uint32_t>(PC));
1880 break;
1881case OP_ArrayElemSint64:
1882 Text.Op = PrintName("ArrayElemSint64");
1883 Text.Args.push_back(printArg<uint32_t>(PC));
1884 break;
1885case OP_ArrayElemUint64:
1886 Text.Op = PrintName("ArrayElemUint64");
1887 Text.Args.push_back(printArg<uint32_t>(PC));
1888 break;
1889case OP_ArrayElemIntAP:
1890 Text.Op = PrintName("ArrayElemIntAP");
1891 Text.Args.push_back(printArg<uint32_t>(PC));
1892 break;
1893case OP_ArrayElemIntAPS:
1894 Text.Op = PrintName("ArrayElemIntAPS");
1895 Text.Args.push_back(printArg<uint32_t>(PC));
1896 break;
1897case OP_ArrayElemBool:
1898 Text.Op = PrintName("ArrayElemBool");
1899 Text.Args.push_back(printArg<uint32_t>(PC));
1900 break;
1901case OP_ArrayElemFixedPoint:
1902 Text.Op = PrintName("ArrayElemFixedPoint");
1903 Text.Args.push_back(printArg<uint32_t>(PC));
1904 break;
1905case OP_ArrayElemPtr:
1906 Text.Op = PrintName("ArrayElemPtr");
1907 Text.Args.push_back(printArg<uint32_t>(PC));
1908 break;
1909case OP_ArrayElemMemberPtr:
1910 Text.Op = PrintName("ArrayElemMemberPtr");
1911 Text.Args.push_back(printArg<uint32_t>(PC));
1912 break;
1913case OP_ArrayElemFloat:
1914 Text.Op = PrintName("ArrayElemFloat");
1915 Text.Args.push_back(printArg<uint32_t>(PC));
1916 break;
1917#endif
1918#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1919bool emitArrayElemSint8( uint32_t , SourceInfo);
1920bool emitArrayElemUint8( uint32_t , SourceInfo);
1921bool emitArrayElemSint16( uint32_t , SourceInfo);
1922bool emitArrayElemUint16( uint32_t , SourceInfo);
1923bool emitArrayElemSint32( uint32_t , SourceInfo);
1924bool emitArrayElemUint32( uint32_t , SourceInfo);
1925bool emitArrayElemSint64( uint32_t , SourceInfo);
1926bool emitArrayElemUint64( uint32_t , SourceInfo);
1927bool emitArrayElemIntAP( uint32_t , SourceInfo);
1928bool emitArrayElemIntAPS( uint32_t , SourceInfo);
1929bool emitArrayElemBool( uint32_t , SourceInfo);
1930bool emitArrayElemFixedPoint( uint32_t , SourceInfo);
1931bool emitArrayElemPtr( uint32_t , SourceInfo);
1932bool emitArrayElemMemberPtr( uint32_t , SourceInfo);
1933bool emitArrayElemFloat( uint32_t , SourceInfo);
1934#endif
1935#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1936[[nodiscard]] bool emitArrayElem(PrimType, uint32_t, SourceInfo I);
1937#endif
1938#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
1939bool
1940#if defined(GET_EVAL_IMPL)
1941EvalEmitter
1942#else
1943ByteCodeEmitter
1944#endif
1945::emitArrayElem(PrimType T0, uint32_t A0, SourceInfo I) {
1946 switch (T0) {
1947 case PT_Sint8:
1948 return emitArrayElemSint8(A0, I);
1949 case PT_Uint8:
1950 return emitArrayElemUint8(A0, I);
1951 case PT_Sint16:
1952 return emitArrayElemSint16(A0, I);
1953 case PT_Uint16:
1954 return emitArrayElemUint16(A0, I);
1955 case PT_Sint32:
1956 return emitArrayElemSint32(A0, I);
1957 case PT_Uint32:
1958 return emitArrayElemUint32(A0, I);
1959 case PT_Sint64:
1960 return emitArrayElemSint64(A0, I);
1961 case PT_Uint64:
1962 return emitArrayElemUint64(A0, I);
1963 case PT_IntAP:
1964 return emitArrayElemIntAP(A0, I);
1965 case PT_IntAPS:
1966 return emitArrayElemIntAPS(A0, I);
1967 case PT_Bool:
1968 return emitArrayElemBool(A0, I);
1969 case PT_FixedPoint:
1970 return emitArrayElemFixedPoint(A0, I);
1971 case PT_Ptr:
1972 return emitArrayElemPtr(A0, I);
1973 case PT_MemberPtr:
1974 return emitArrayElemMemberPtr(A0, I);
1975 case PT_Float:
1976 return emitArrayElemFloat(A0, I);
1977 }
1978 llvm_unreachable("invalid enum value");
1979}
1980#endif
1981#ifdef GET_LINK_IMPL
1982bool ByteCodeEmitter::emitArrayElemSint8( uint32_t A0, SourceInfo L) {
1983 return emitOp<uint32_t>(OP_ArrayElemSint8, A0, L);
1984}
1985bool ByteCodeEmitter::emitArrayElemUint8( uint32_t A0, SourceInfo L) {
1986 return emitOp<uint32_t>(OP_ArrayElemUint8, A0, L);
1987}
1988bool ByteCodeEmitter::emitArrayElemSint16( uint32_t A0, SourceInfo L) {
1989 return emitOp<uint32_t>(OP_ArrayElemSint16, A0, L);
1990}
1991bool ByteCodeEmitter::emitArrayElemUint16( uint32_t A0, SourceInfo L) {
1992 return emitOp<uint32_t>(OP_ArrayElemUint16, A0, L);
1993}
1994bool ByteCodeEmitter::emitArrayElemSint32( uint32_t A0, SourceInfo L) {
1995 return emitOp<uint32_t>(OP_ArrayElemSint32, A0, L);
1996}
1997bool ByteCodeEmitter::emitArrayElemUint32( uint32_t A0, SourceInfo L) {
1998 return emitOp<uint32_t>(OP_ArrayElemUint32, A0, L);
1999}
2000bool ByteCodeEmitter::emitArrayElemSint64( uint32_t A0, SourceInfo L) {
2001 return emitOp<uint32_t>(OP_ArrayElemSint64, A0, L);
2002}
2003bool ByteCodeEmitter::emitArrayElemUint64( uint32_t A0, SourceInfo L) {
2004 return emitOp<uint32_t>(OP_ArrayElemUint64, A0, L);
2005}
2006bool ByteCodeEmitter::emitArrayElemIntAP( uint32_t A0, SourceInfo L) {
2007 return emitOp<uint32_t>(OP_ArrayElemIntAP, A0, L);
2008}
2009bool ByteCodeEmitter::emitArrayElemIntAPS( uint32_t A0, SourceInfo L) {
2010 return emitOp<uint32_t>(OP_ArrayElemIntAPS, A0, L);
2011}
2012bool ByteCodeEmitter::emitArrayElemBool( uint32_t A0, SourceInfo L) {
2013 return emitOp<uint32_t>(OP_ArrayElemBool, A0, L);
2014}
2015bool ByteCodeEmitter::emitArrayElemFixedPoint( uint32_t A0, SourceInfo L) {
2016 return emitOp<uint32_t>(OP_ArrayElemFixedPoint, A0, L);
2017}
2018bool ByteCodeEmitter::emitArrayElemPtr( uint32_t A0, SourceInfo L) {
2019 return emitOp<uint32_t>(OP_ArrayElemPtr, A0, L);
2020}
2021bool ByteCodeEmitter::emitArrayElemMemberPtr( uint32_t A0, SourceInfo L) {
2022 return emitOp<uint32_t>(OP_ArrayElemMemberPtr, A0, L);
2023}
2024bool ByteCodeEmitter::emitArrayElemFloat( uint32_t A0, SourceInfo L) {
2025 return emitOp<uint32_t>(OP_ArrayElemFloat, A0, L);
2026}
2027#endif
2028#ifdef GET_EVAL_IMPL
2029bool EvalEmitter::emitArrayElemSint8( uint32_t A0, SourceInfo L) {
2030 if (!isActive()) return true;
2031 CurrentSource = L;
2032 return ArrayElem<PT_Sint8>(S, CodePtr(), A0);
2033}
2034bool EvalEmitter::emitArrayElemUint8( uint32_t A0, SourceInfo L) {
2035 if (!isActive()) return true;
2036 CurrentSource = L;
2037 return ArrayElem<PT_Uint8>(S, CodePtr(), A0);
2038}
2039bool EvalEmitter::emitArrayElemSint16( uint32_t A0, SourceInfo L) {
2040 if (!isActive()) return true;
2041 CurrentSource = L;
2042 return ArrayElem<PT_Sint16>(S, CodePtr(), A0);
2043}
2044bool EvalEmitter::emitArrayElemUint16( uint32_t A0, SourceInfo L) {
2045 if (!isActive()) return true;
2046 CurrentSource = L;
2047 return ArrayElem<PT_Uint16>(S, CodePtr(), A0);
2048}
2049bool EvalEmitter::emitArrayElemSint32( uint32_t A0, SourceInfo L) {
2050 if (!isActive()) return true;
2051 CurrentSource = L;
2052 return ArrayElem<PT_Sint32>(S, CodePtr(), A0);
2053}
2054bool EvalEmitter::emitArrayElemUint32( uint32_t A0, SourceInfo L) {
2055 if (!isActive()) return true;
2056 CurrentSource = L;
2057 return ArrayElem<PT_Uint32>(S, CodePtr(), A0);
2058}
2059bool EvalEmitter::emitArrayElemSint64( uint32_t A0, SourceInfo L) {
2060 if (!isActive()) return true;
2061 CurrentSource = L;
2062 return ArrayElem<PT_Sint64>(S, CodePtr(), A0);
2063}
2064bool EvalEmitter::emitArrayElemUint64( uint32_t A0, SourceInfo L) {
2065 if (!isActive()) return true;
2066 CurrentSource = L;
2067 return ArrayElem<PT_Uint64>(S, CodePtr(), A0);
2068}
2069bool EvalEmitter::emitArrayElemIntAP( uint32_t A0, SourceInfo L) {
2070 if (!isActive()) return true;
2071 CurrentSource = L;
2072 return ArrayElem<PT_IntAP>(S, CodePtr(), A0);
2073}
2074bool EvalEmitter::emitArrayElemIntAPS( uint32_t A0, SourceInfo L) {
2075 if (!isActive()) return true;
2076 CurrentSource = L;
2077 return ArrayElem<PT_IntAPS>(S, CodePtr(), A0);
2078}
2079bool EvalEmitter::emitArrayElemBool( uint32_t A0, SourceInfo L) {
2080 if (!isActive()) return true;
2081 CurrentSource = L;
2082 return ArrayElem<PT_Bool>(S, CodePtr(), A0);
2083}
2084bool EvalEmitter::emitArrayElemFixedPoint( uint32_t A0, SourceInfo L) {
2085 if (!isActive()) return true;
2086 CurrentSource = L;
2087 return ArrayElem<PT_FixedPoint>(S, CodePtr(), A0);
2088}
2089bool EvalEmitter::emitArrayElemPtr( uint32_t A0, SourceInfo L) {
2090 if (!isActive()) return true;
2091 CurrentSource = L;
2092 return ArrayElem<PT_Ptr>(S, CodePtr(), A0);
2093}
2094bool EvalEmitter::emitArrayElemMemberPtr( uint32_t A0, SourceInfo L) {
2095 if (!isActive()) return true;
2096 CurrentSource = L;
2097 return ArrayElem<PT_MemberPtr>(S, CodePtr(), A0);
2098}
2099bool EvalEmitter::emitArrayElemFloat( uint32_t A0, SourceInfo L) {
2100 if (!isActive()) return true;
2101 CurrentSource = L;
2102 return ArrayElem<PT_Float>(S, CodePtr(), A0);
2103}
2104#endif
2105#ifdef GET_OPCODE_NAMES
2106OP_ArrayElemPopSint8,
2107OP_ArrayElemPopUint8,
2108OP_ArrayElemPopSint16,
2109OP_ArrayElemPopUint16,
2110OP_ArrayElemPopSint32,
2111OP_ArrayElemPopUint32,
2112OP_ArrayElemPopSint64,
2113OP_ArrayElemPopUint64,
2114OP_ArrayElemPopIntAP,
2115OP_ArrayElemPopIntAPS,
2116OP_ArrayElemPopBool,
2117OP_ArrayElemPopFixedPoint,
2118OP_ArrayElemPopPtr,
2119OP_ArrayElemPopMemberPtr,
2120OP_ArrayElemPopFloat,
2121#endif
2122#ifdef GET_INTERPFN_LIST
2123&Interp_ArrayElemPopSint8,
2124&Interp_ArrayElemPopUint8,
2125&Interp_ArrayElemPopSint16,
2126&Interp_ArrayElemPopUint16,
2127&Interp_ArrayElemPopSint32,
2128&Interp_ArrayElemPopUint32,
2129&Interp_ArrayElemPopSint64,
2130&Interp_ArrayElemPopUint64,
2131&Interp_ArrayElemPopIntAP,
2132&Interp_ArrayElemPopIntAPS,
2133&Interp_ArrayElemPopBool,
2134&Interp_ArrayElemPopFixedPoint,
2135&Interp_ArrayElemPopPtr,
2136&Interp_ArrayElemPopMemberPtr,
2137&Interp_ArrayElemPopFloat,
2138#endif
2139#ifdef GET_INTERPFN_DISPATCHERS
2140PRESERVE_NONE
2141static bool Interp_ArrayElemPopSint8(InterpState &S) {
2142 {
2143 CodePtr OpPC = S.PC;
2144 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2145 if (!ArrayElemPop<PT_Sint8>(S, OpPC, V0)) return false;
2146 }
2147#if USE_TAILCALLS
2148 MUSTTAIL return InterpNext(S);
2149#else
2150 return true;
2151#endif
2152}
2153PRESERVE_NONE
2154static bool Interp_ArrayElemPopUint8(InterpState &S) {
2155 {
2156 CodePtr OpPC = S.PC;
2157 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2158 if (!ArrayElemPop<PT_Uint8>(S, OpPC, V0)) return false;
2159 }
2160#if USE_TAILCALLS
2161 MUSTTAIL return InterpNext(S);
2162#else
2163 return true;
2164#endif
2165}
2166PRESERVE_NONE
2167static bool Interp_ArrayElemPopSint16(InterpState &S) {
2168 {
2169 CodePtr OpPC = S.PC;
2170 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2171 if (!ArrayElemPop<PT_Sint16>(S, OpPC, V0)) return false;
2172 }
2173#if USE_TAILCALLS
2174 MUSTTAIL return InterpNext(S);
2175#else
2176 return true;
2177#endif
2178}
2179PRESERVE_NONE
2180static bool Interp_ArrayElemPopUint16(InterpState &S) {
2181 {
2182 CodePtr OpPC = S.PC;
2183 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2184 if (!ArrayElemPop<PT_Uint16>(S, OpPC, V0)) return false;
2185 }
2186#if USE_TAILCALLS
2187 MUSTTAIL return InterpNext(S);
2188#else
2189 return true;
2190#endif
2191}
2192PRESERVE_NONE
2193static bool Interp_ArrayElemPopSint32(InterpState &S) {
2194 {
2195 CodePtr OpPC = S.PC;
2196 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2197 if (!ArrayElemPop<PT_Sint32>(S, OpPC, V0)) return false;
2198 }
2199#if USE_TAILCALLS
2200 MUSTTAIL return InterpNext(S);
2201#else
2202 return true;
2203#endif
2204}
2205PRESERVE_NONE
2206static bool Interp_ArrayElemPopUint32(InterpState &S) {
2207 {
2208 CodePtr OpPC = S.PC;
2209 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2210 if (!ArrayElemPop<PT_Uint32>(S, OpPC, V0)) return false;
2211 }
2212#if USE_TAILCALLS
2213 MUSTTAIL return InterpNext(S);
2214#else
2215 return true;
2216#endif
2217}
2218PRESERVE_NONE
2219static bool Interp_ArrayElemPopSint64(InterpState &S) {
2220 {
2221 CodePtr OpPC = S.PC;
2222 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2223 if (!ArrayElemPop<PT_Sint64>(S, OpPC, V0)) return false;
2224 }
2225#if USE_TAILCALLS
2226 MUSTTAIL return InterpNext(S);
2227#else
2228 return true;
2229#endif
2230}
2231PRESERVE_NONE
2232static bool Interp_ArrayElemPopUint64(InterpState &S) {
2233 {
2234 CodePtr OpPC = S.PC;
2235 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2236 if (!ArrayElemPop<PT_Uint64>(S, OpPC, V0)) return false;
2237 }
2238#if USE_TAILCALLS
2239 MUSTTAIL return InterpNext(S);
2240#else
2241 return true;
2242#endif
2243}
2244PRESERVE_NONE
2245static bool Interp_ArrayElemPopIntAP(InterpState &S) {
2246 {
2247 CodePtr OpPC = S.PC;
2248 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2249 if (!ArrayElemPop<PT_IntAP>(S, OpPC, V0)) return false;
2250 }
2251#if USE_TAILCALLS
2252 MUSTTAIL return InterpNext(S);
2253#else
2254 return true;
2255#endif
2256}
2257PRESERVE_NONE
2258static bool Interp_ArrayElemPopIntAPS(InterpState &S) {
2259 {
2260 CodePtr OpPC = S.PC;
2261 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2262 if (!ArrayElemPop<PT_IntAPS>(S, OpPC, V0)) return false;
2263 }
2264#if USE_TAILCALLS
2265 MUSTTAIL return InterpNext(S);
2266#else
2267 return true;
2268#endif
2269}
2270PRESERVE_NONE
2271static bool Interp_ArrayElemPopBool(InterpState &S) {
2272 {
2273 CodePtr OpPC = S.PC;
2274 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2275 if (!ArrayElemPop<PT_Bool>(S, OpPC, V0)) return false;
2276 }
2277#if USE_TAILCALLS
2278 MUSTTAIL return InterpNext(S);
2279#else
2280 return true;
2281#endif
2282}
2283PRESERVE_NONE
2284static bool Interp_ArrayElemPopFixedPoint(InterpState &S) {
2285 {
2286 CodePtr OpPC = S.PC;
2287 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2288 if (!ArrayElemPop<PT_FixedPoint>(S, OpPC, V0)) return false;
2289 }
2290#if USE_TAILCALLS
2291 MUSTTAIL return InterpNext(S);
2292#else
2293 return true;
2294#endif
2295}
2296PRESERVE_NONE
2297static bool Interp_ArrayElemPopPtr(InterpState &S) {
2298 {
2299 CodePtr OpPC = S.PC;
2300 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2301 if (!ArrayElemPop<PT_Ptr>(S, OpPC, V0)) return false;
2302 }
2303#if USE_TAILCALLS
2304 MUSTTAIL return InterpNext(S);
2305#else
2306 return true;
2307#endif
2308}
2309PRESERVE_NONE
2310static bool Interp_ArrayElemPopMemberPtr(InterpState &S) {
2311 {
2312 CodePtr OpPC = S.PC;
2313 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2314 if (!ArrayElemPop<PT_MemberPtr>(S, OpPC, V0)) return false;
2315 }
2316#if USE_TAILCALLS
2317 MUSTTAIL return InterpNext(S);
2318#else
2319 return true;
2320#endif
2321}
2322PRESERVE_NONE
2323static bool Interp_ArrayElemPopFloat(InterpState &S) {
2324 {
2325 CodePtr OpPC = S.PC;
2326 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2327 if (!ArrayElemPop<PT_Float>(S, OpPC, V0)) return false;
2328 }
2329#if USE_TAILCALLS
2330 MUSTTAIL return InterpNext(S);
2331#else
2332 return true;
2333#endif
2334}
2335#endif
2336#ifdef GET_DISASM
2337case OP_ArrayElemPopSint8:
2338 Text.Op = PrintName("ArrayElemPopSint8");
2339 Text.Args.push_back(printArg<uint32_t>(PC));
2340 break;
2341case OP_ArrayElemPopUint8:
2342 Text.Op = PrintName("ArrayElemPopUint8");
2343 Text.Args.push_back(printArg<uint32_t>(PC));
2344 break;
2345case OP_ArrayElemPopSint16:
2346 Text.Op = PrintName("ArrayElemPopSint16");
2347 Text.Args.push_back(printArg<uint32_t>(PC));
2348 break;
2349case OP_ArrayElemPopUint16:
2350 Text.Op = PrintName("ArrayElemPopUint16");
2351 Text.Args.push_back(printArg<uint32_t>(PC));
2352 break;
2353case OP_ArrayElemPopSint32:
2354 Text.Op = PrintName("ArrayElemPopSint32");
2355 Text.Args.push_back(printArg<uint32_t>(PC));
2356 break;
2357case OP_ArrayElemPopUint32:
2358 Text.Op = PrintName("ArrayElemPopUint32");
2359 Text.Args.push_back(printArg<uint32_t>(PC));
2360 break;
2361case OP_ArrayElemPopSint64:
2362 Text.Op = PrintName("ArrayElemPopSint64");
2363 Text.Args.push_back(printArg<uint32_t>(PC));
2364 break;
2365case OP_ArrayElemPopUint64:
2366 Text.Op = PrintName("ArrayElemPopUint64");
2367 Text.Args.push_back(printArg<uint32_t>(PC));
2368 break;
2369case OP_ArrayElemPopIntAP:
2370 Text.Op = PrintName("ArrayElemPopIntAP");
2371 Text.Args.push_back(printArg<uint32_t>(PC));
2372 break;
2373case OP_ArrayElemPopIntAPS:
2374 Text.Op = PrintName("ArrayElemPopIntAPS");
2375 Text.Args.push_back(printArg<uint32_t>(PC));
2376 break;
2377case OP_ArrayElemPopBool:
2378 Text.Op = PrintName("ArrayElemPopBool");
2379 Text.Args.push_back(printArg<uint32_t>(PC));
2380 break;
2381case OP_ArrayElemPopFixedPoint:
2382 Text.Op = PrintName("ArrayElemPopFixedPoint");
2383 Text.Args.push_back(printArg<uint32_t>(PC));
2384 break;
2385case OP_ArrayElemPopPtr:
2386 Text.Op = PrintName("ArrayElemPopPtr");
2387 Text.Args.push_back(printArg<uint32_t>(PC));
2388 break;
2389case OP_ArrayElemPopMemberPtr:
2390 Text.Op = PrintName("ArrayElemPopMemberPtr");
2391 Text.Args.push_back(printArg<uint32_t>(PC));
2392 break;
2393case OP_ArrayElemPopFloat:
2394 Text.Op = PrintName("ArrayElemPopFloat");
2395 Text.Args.push_back(printArg<uint32_t>(PC));
2396 break;
2397#endif
2398#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2399bool emitArrayElemPopSint8( uint32_t , SourceInfo);
2400bool emitArrayElemPopUint8( uint32_t , SourceInfo);
2401bool emitArrayElemPopSint16( uint32_t , SourceInfo);
2402bool emitArrayElemPopUint16( uint32_t , SourceInfo);
2403bool emitArrayElemPopSint32( uint32_t , SourceInfo);
2404bool emitArrayElemPopUint32( uint32_t , SourceInfo);
2405bool emitArrayElemPopSint64( uint32_t , SourceInfo);
2406bool emitArrayElemPopUint64( uint32_t , SourceInfo);
2407bool emitArrayElemPopIntAP( uint32_t , SourceInfo);
2408bool emitArrayElemPopIntAPS( uint32_t , SourceInfo);
2409bool emitArrayElemPopBool( uint32_t , SourceInfo);
2410bool emitArrayElemPopFixedPoint( uint32_t , SourceInfo);
2411bool emitArrayElemPopPtr( uint32_t , SourceInfo);
2412bool emitArrayElemPopMemberPtr( uint32_t , SourceInfo);
2413bool emitArrayElemPopFloat( uint32_t , SourceInfo);
2414#endif
2415#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2416[[nodiscard]] bool emitArrayElemPop(PrimType, uint32_t, SourceInfo I);
2417#endif
2418#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
2419bool
2420#if defined(GET_EVAL_IMPL)
2421EvalEmitter
2422#else
2423ByteCodeEmitter
2424#endif
2425::emitArrayElemPop(PrimType T0, uint32_t A0, SourceInfo I) {
2426 switch (T0) {
2427 case PT_Sint8:
2428 return emitArrayElemPopSint8(A0, I);
2429 case PT_Uint8:
2430 return emitArrayElemPopUint8(A0, I);
2431 case PT_Sint16:
2432 return emitArrayElemPopSint16(A0, I);
2433 case PT_Uint16:
2434 return emitArrayElemPopUint16(A0, I);
2435 case PT_Sint32:
2436 return emitArrayElemPopSint32(A0, I);
2437 case PT_Uint32:
2438 return emitArrayElemPopUint32(A0, I);
2439 case PT_Sint64:
2440 return emitArrayElemPopSint64(A0, I);
2441 case PT_Uint64:
2442 return emitArrayElemPopUint64(A0, I);
2443 case PT_IntAP:
2444 return emitArrayElemPopIntAP(A0, I);
2445 case PT_IntAPS:
2446 return emitArrayElemPopIntAPS(A0, I);
2447 case PT_Bool:
2448 return emitArrayElemPopBool(A0, I);
2449 case PT_FixedPoint:
2450 return emitArrayElemPopFixedPoint(A0, I);
2451 case PT_Ptr:
2452 return emitArrayElemPopPtr(A0, I);
2453 case PT_MemberPtr:
2454 return emitArrayElemPopMemberPtr(A0, I);
2455 case PT_Float:
2456 return emitArrayElemPopFloat(A0, I);
2457 }
2458 llvm_unreachable("invalid enum value");
2459}
2460#endif
2461#ifdef GET_LINK_IMPL
2462bool ByteCodeEmitter::emitArrayElemPopSint8( uint32_t A0, SourceInfo L) {
2463 return emitOp<uint32_t>(OP_ArrayElemPopSint8, A0, L);
2464}
2465bool ByteCodeEmitter::emitArrayElemPopUint8( uint32_t A0, SourceInfo L) {
2466 return emitOp<uint32_t>(OP_ArrayElemPopUint8, A0, L);
2467}
2468bool ByteCodeEmitter::emitArrayElemPopSint16( uint32_t A0, SourceInfo L) {
2469 return emitOp<uint32_t>(OP_ArrayElemPopSint16, A0, L);
2470}
2471bool ByteCodeEmitter::emitArrayElemPopUint16( uint32_t A0, SourceInfo L) {
2472 return emitOp<uint32_t>(OP_ArrayElemPopUint16, A0, L);
2473}
2474bool ByteCodeEmitter::emitArrayElemPopSint32( uint32_t A0, SourceInfo L) {
2475 return emitOp<uint32_t>(OP_ArrayElemPopSint32, A0, L);
2476}
2477bool ByteCodeEmitter::emitArrayElemPopUint32( uint32_t A0, SourceInfo L) {
2478 return emitOp<uint32_t>(OP_ArrayElemPopUint32, A0, L);
2479}
2480bool ByteCodeEmitter::emitArrayElemPopSint64( uint32_t A0, SourceInfo L) {
2481 return emitOp<uint32_t>(OP_ArrayElemPopSint64, A0, L);
2482}
2483bool ByteCodeEmitter::emitArrayElemPopUint64( uint32_t A0, SourceInfo L) {
2484 return emitOp<uint32_t>(OP_ArrayElemPopUint64, A0, L);
2485}
2486bool ByteCodeEmitter::emitArrayElemPopIntAP( uint32_t A0, SourceInfo L) {
2487 return emitOp<uint32_t>(OP_ArrayElemPopIntAP, A0, L);
2488}
2489bool ByteCodeEmitter::emitArrayElemPopIntAPS( uint32_t A0, SourceInfo L) {
2490 return emitOp<uint32_t>(OP_ArrayElemPopIntAPS, A0, L);
2491}
2492bool ByteCodeEmitter::emitArrayElemPopBool( uint32_t A0, SourceInfo L) {
2493 return emitOp<uint32_t>(OP_ArrayElemPopBool, A0, L);
2494}
2495bool ByteCodeEmitter::emitArrayElemPopFixedPoint( uint32_t A0, SourceInfo L) {
2496 return emitOp<uint32_t>(OP_ArrayElemPopFixedPoint, A0, L);
2497}
2498bool ByteCodeEmitter::emitArrayElemPopPtr( uint32_t A0, SourceInfo L) {
2499 return emitOp<uint32_t>(OP_ArrayElemPopPtr, A0, L);
2500}
2501bool ByteCodeEmitter::emitArrayElemPopMemberPtr( uint32_t A0, SourceInfo L) {
2502 return emitOp<uint32_t>(OP_ArrayElemPopMemberPtr, A0, L);
2503}
2504bool ByteCodeEmitter::emitArrayElemPopFloat( uint32_t A0, SourceInfo L) {
2505 return emitOp<uint32_t>(OP_ArrayElemPopFloat, A0, L);
2506}
2507#endif
2508#ifdef GET_EVAL_IMPL
2509bool EvalEmitter::emitArrayElemPopSint8( uint32_t A0, SourceInfo L) {
2510 if (!isActive()) return true;
2511 CurrentSource = L;
2512 return ArrayElemPop<PT_Sint8>(S, CodePtr(), A0);
2513}
2514bool EvalEmitter::emitArrayElemPopUint8( uint32_t A0, SourceInfo L) {
2515 if (!isActive()) return true;
2516 CurrentSource = L;
2517 return ArrayElemPop<PT_Uint8>(S, CodePtr(), A0);
2518}
2519bool EvalEmitter::emitArrayElemPopSint16( uint32_t A0, SourceInfo L) {
2520 if (!isActive()) return true;
2521 CurrentSource = L;
2522 return ArrayElemPop<PT_Sint16>(S, CodePtr(), A0);
2523}
2524bool EvalEmitter::emitArrayElemPopUint16( uint32_t A0, SourceInfo L) {
2525 if (!isActive()) return true;
2526 CurrentSource = L;
2527 return ArrayElemPop<PT_Uint16>(S, CodePtr(), A0);
2528}
2529bool EvalEmitter::emitArrayElemPopSint32( uint32_t A0, SourceInfo L) {
2530 if (!isActive()) return true;
2531 CurrentSource = L;
2532 return ArrayElemPop<PT_Sint32>(S, CodePtr(), A0);
2533}
2534bool EvalEmitter::emitArrayElemPopUint32( uint32_t A0, SourceInfo L) {
2535 if (!isActive()) return true;
2536 CurrentSource = L;
2537 return ArrayElemPop<PT_Uint32>(S, CodePtr(), A0);
2538}
2539bool EvalEmitter::emitArrayElemPopSint64( uint32_t A0, SourceInfo L) {
2540 if (!isActive()) return true;
2541 CurrentSource = L;
2542 return ArrayElemPop<PT_Sint64>(S, CodePtr(), A0);
2543}
2544bool EvalEmitter::emitArrayElemPopUint64( uint32_t A0, SourceInfo L) {
2545 if (!isActive()) return true;
2546 CurrentSource = L;
2547 return ArrayElemPop<PT_Uint64>(S, CodePtr(), A0);
2548}
2549bool EvalEmitter::emitArrayElemPopIntAP( uint32_t A0, SourceInfo L) {
2550 if (!isActive()) return true;
2551 CurrentSource = L;
2552 return ArrayElemPop<PT_IntAP>(S, CodePtr(), A0);
2553}
2554bool EvalEmitter::emitArrayElemPopIntAPS( uint32_t A0, SourceInfo L) {
2555 if (!isActive()) return true;
2556 CurrentSource = L;
2557 return ArrayElemPop<PT_IntAPS>(S, CodePtr(), A0);
2558}
2559bool EvalEmitter::emitArrayElemPopBool( uint32_t A0, SourceInfo L) {
2560 if (!isActive()) return true;
2561 CurrentSource = L;
2562 return ArrayElemPop<PT_Bool>(S, CodePtr(), A0);
2563}
2564bool EvalEmitter::emitArrayElemPopFixedPoint( uint32_t A0, SourceInfo L) {
2565 if (!isActive()) return true;
2566 CurrentSource = L;
2567 return ArrayElemPop<PT_FixedPoint>(S, CodePtr(), A0);
2568}
2569bool EvalEmitter::emitArrayElemPopPtr( uint32_t A0, SourceInfo L) {
2570 if (!isActive()) return true;
2571 CurrentSource = L;
2572 return ArrayElemPop<PT_Ptr>(S, CodePtr(), A0);
2573}
2574bool EvalEmitter::emitArrayElemPopMemberPtr( uint32_t A0, SourceInfo L) {
2575 if (!isActive()) return true;
2576 CurrentSource = L;
2577 return ArrayElemPop<PT_MemberPtr>(S, CodePtr(), A0);
2578}
2579bool EvalEmitter::emitArrayElemPopFloat( uint32_t A0, SourceInfo L) {
2580 if (!isActive()) return true;
2581 CurrentSource = L;
2582 return ArrayElemPop<PT_Float>(S, CodePtr(), A0);
2583}
2584#endif
2585#ifdef GET_OPCODE_NAMES
2586OP_ArrayElemPtrSint8,
2587OP_ArrayElemPtrUint8,
2588OP_ArrayElemPtrSint16,
2589OP_ArrayElemPtrUint16,
2590OP_ArrayElemPtrSint32,
2591OP_ArrayElemPtrUint32,
2592OP_ArrayElemPtrSint64,
2593OP_ArrayElemPtrUint64,
2594OP_ArrayElemPtrIntAP,
2595OP_ArrayElemPtrIntAPS,
2596OP_ArrayElemPtrBool,
2597#endif
2598#ifdef GET_INTERPFN_LIST
2599&Interp_ArrayElemPtrSint8,
2600&Interp_ArrayElemPtrUint8,
2601&Interp_ArrayElemPtrSint16,
2602&Interp_ArrayElemPtrUint16,
2603&Interp_ArrayElemPtrSint32,
2604&Interp_ArrayElemPtrUint32,
2605&Interp_ArrayElemPtrSint64,
2606&Interp_ArrayElemPtrUint64,
2607&Interp_ArrayElemPtrIntAP,
2608&Interp_ArrayElemPtrIntAPS,
2609&Interp_ArrayElemPtrBool,
2610#endif
2611#ifdef GET_INTERPFN_DISPATCHERS
2612PRESERVE_NONE
2613static bool Interp_ArrayElemPtrSint8(InterpState &S) {
2614 if (!ArrayElemPtr<PT_Sint8>(S, S.PC)) return false;
2615#if USE_TAILCALLS
2616 MUSTTAIL return InterpNext(S);
2617#else
2618 return true;
2619#endif
2620}
2621PRESERVE_NONE
2622static bool Interp_ArrayElemPtrUint8(InterpState &S) {
2623 if (!ArrayElemPtr<PT_Uint8>(S, S.PC)) return false;
2624#if USE_TAILCALLS
2625 MUSTTAIL return InterpNext(S);
2626#else
2627 return true;
2628#endif
2629}
2630PRESERVE_NONE
2631static bool Interp_ArrayElemPtrSint16(InterpState &S) {
2632 if (!ArrayElemPtr<PT_Sint16>(S, S.PC)) return false;
2633#if USE_TAILCALLS
2634 MUSTTAIL return InterpNext(S);
2635#else
2636 return true;
2637#endif
2638}
2639PRESERVE_NONE
2640static bool Interp_ArrayElemPtrUint16(InterpState &S) {
2641 if (!ArrayElemPtr<PT_Uint16>(S, S.PC)) return false;
2642#if USE_TAILCALLS
2643 MUSTTAIL return InterpNext(S);
2644#else
2645 return true;
2646#endif
2647}
2648PRESERVE_NONE
2649static bool Interp_ArrayElemPtrSint32(InterpState &S) {
2650 if (!ArrayElemPtr<PT_Sint32>(S, S.PC)) return false;
2651#if USE_TAILCALLS
2652 MUSTTAIL return InterpNext(S);
2653#else
2654 return true;
2655#endif
2656}
2657PRESERVE_NONE
2658static bool Interp_ArrayElemPtrUint32(InterpState &S) {
2659 if (!ArrayElemPtr<PT_Uint32>(S, S.PC)) return false;
2660#if USE_TAILCALLS
2661 MUSTTAIL return InterpNext(S);
2662#else
2663 return true;
2664#endif
2665}
2666PRESERVE_NONE
2667static bool Interp_ArrayElemPtrSint64(InterpState &S) {
2668 if (!ArrayElemPtr<PT_Sint64>(S, S.PC)) return false;
2669#if USE_TAILCALLS
2670 MUSTTAIL return InterpNext(S);
2671#else
2672 return true;
2673#endif
2674}
2675PRESERVE_NONE
2676static bool Interp_ArrayElemPtrUint64(InterpState &S) {
2677 if (!ArrayElemPtr<PT_Uint64>(S, S.PC)) return false;
2678#if USE_TAILCALLS
2679 MUSTTAIL return InterpNext(S);
2680#else
2681 return true;
2682#endif
2683}
2684PRESERVE_NONE
2685static bool Interp_ArrayElemPtrIntAP(InterpState &S) {
2686 if (!ArrayElemPtr<PT_IntAP>(S, S.PC)) return false;
2687#if USE_TAILCALLS
2688 MUSTTAIL return InterpNext(S);
2689#else
2690 return true;
2691#endif
2692}
2693PRESERVE_NONE
2694static bool Interp_ArrayElemPtrIntAPS(InterpState &S) {
2695 if (!ArrayElemPtr<PT_IntAPS>(S, S.PC)) return false;
2696#if USE_TAILCALLS
2697 MUSTTAIL return InterpNext(S);
2698#else
2699 return true;
2700#endif
2701}
2702PRESERVE_NONE
2703static bool Interp_ArrayElemPtrBool(InterpState &S) {
2704 if (!ArrayElemPtr<PT_Bool>(S, S.PC)) return false;
2705#if USE_TAILCALLS
2706 MUSTTAIL return InterpNext(S);
2707#else
2708 return true;
2709#endif
2710}
2711#endif
2712#ifdef GET_DISASM
2713case OP_ArrayElemPtrSint8:
2714 Text.Op = PrintName("ArrayElemPtrSint8");
2715 break;
2716case OP_ArrayElemPtrUint8:
2717 Text.Op = PrintName("ArrayElemPtrUint8");
2718 break;
2719case OP_ArrayElemPtrSint16:
2720 Text.Op = PrintName("ArrayElemPtrSint16");
2721 break;
2722case OP_ArrayElemPtrUint16:
2723 Text.Op = PrintName("ArrayElemPtrUint16");
2724 break;
2725case OP_ArrayElemPtrSint32:
2726 Text.Op = PrintName("ArrayElemPtrSint32");
2727 break;
2728case OP_ArrayElemPtrUint32:
2729 Text.Op = PrintName("ArrayElemPtrUint32");
2730 break;
2731case OP_ArrayElemPtrSint64:
2732 Text.Op = PrintName("ArrayElemPtrSint64");
2733 break;
2734case OP_ArrayElemPtrUint64:
2735 Text.Op = PrintName("ArrayElemPtrUint64");
2736 break;
2737case OP_ArrayElemPtrIntAP:
2738 Text.Op = PrintName("ArrayElemPtrIntAP");
2739 break;
2740case OP_ArrayElemPtrIntAPS:
2741 Text.Op = PrintName("ArrayElemPtrIntAPS");
2742 break;
2743case OP_ArrayElemPtrBool:
2744 Text.Op = PrintName("ArrayElemPtrBool");
2745 break;
2746#endif
2747#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2748bool emitArrayElemPtrSint8(SourceInfo);
2749bool emitArrayElemPtrUint8(SourceInfo);
2750bool emitArrayElemPtrSint16(SourceInfo);
2751bool emitArrayElemPtrUint16(SourceInfo);
2752bool emitArrayElemPtrSint32(SourceInfo);
2753bool emitArrayElemPtrUint32(SourceInfo);
2754bool emitArrayElemPtrSint64(SourceInfo);
2755bool emitArrayElemPtrUint64(SourceInfo);
2756bool emitArrayElemPtrIntAP(SourceInfo);
2757bool emitArrayElemPtrIntAPS(SourceInfo);
2758bool emitArrayElemPtrBool(SourceInfo);
2759#endif
2760#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2761[[nodiscard]] bool emitArrayElemPtr(PrimType, SourceInfo I);
2762#endif
2763#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
2764bool
2765#if defined(GET_EVAL_IMPL)
2766EvalEmitter
2767#else
2768ByteCodeEmitter
2769#endif
2770::emitArrayElemPtr(PrimType T0, SourceInfo I) {
2771 switch (T0) {
2772 case PT_Sint8:
2773 return emitArrayElemPtrSint8(I);
2774 case PT_Uint8:
2775 return emitArrayElemPtrUint8(I);
2776 case PT_Sint16:
2777 return emitArrayElemPtrSint16(I);
2778 case PT_Uint16:
2779 return emitArrayElemPtrUint16(I);
2780 case PT_Sint32:
2781 return emitArrayElemPtrSint32(I);
2782 case PT_Uint32:
2783 return emitArrayElemPtrUint32(I);
2784 case PT_Sint64:
2785 return emitArrayElemPtrSint64(I);
2786 case PT_Uint64:
2787 return emitArrayElemPtrUint64(I);
2788 case PT_IntAP:
2789 return emitArrayElemPtrIntAP(I);
2790 case PT_IntAPS:
2791 return emitArrayElemPtrIntAPS(I);
2792 case PT_Bool:
2793 return emitArrayElemPtrBool(I);
2794 default: llvm_unreachable("invalid type: emitArrayElemPtr");
2795 }
2796 llvm_unreachable("invalid enum value");
2797}
2798#endif
2799#ifdef GET_LINK_IMPL
2800bool ByteCodeEmitter::emitArrayElemPtrSint8(SourceInfo L) {
2801 return emitOp<>(OP_ArrayElemPtrSint8, L);
2802}
2803bool ByteCodeEmitter::emitArrayElemPtrUint8(SourceInfo L) {
2804 return emitOp<>(OP_ArrayElemPtrUint8, L);
2805}
2806bool ByteCodeEmitter::emitArrayElemPtrSint16(SourceInfo L) {
2807 return emitOp<>(OP_ArrayElemPtrSint16, L);
2808}
2809bool ByteCodeEmitter::emitArrayElemPtrUint16(SourceInfo L) {
2810 return emitOp<>(OP_ArrayElemPtrUint16, L);
2811}
2812bool ByteCodeEmitter::emitArrayElemPtrSint32(SourceInfo L) {
2813 return emitOp<>(OP_ArrayElemPtrSint32, L);
2814}
2815bool ByteCodeEmitter::emitArrayElemPtrUint32(SourceInfo L) {
2816 return emitOp<>(OP_ArrayElemPtrUint32, L);
2817}
2818bool ByteCodeEmitter::emitArrayElemPtrSint64(SourceInfo L) {
2819 return emitOp<>(OP_ArrayElemPtrSint64, L);
2820}
2821bool ByteCodeEmitter::emitArrayElemPtrUint64(SourceInfo L) {
2822 return emitOp<>(OP_ArrayElemPtrUint64, L);
2823}
2824bool ByteCodeEmitter::emitArrayElemPtrIntAP(SourceInfo L) {
2825 return emitOp<>(OP_ArrayElemPtrIntAP, L);
2826}
2827bool ByteCodeEmitter::emitArrayElemPtrIntAPS(SourceInfo L) {
2828 return emitOp<>(OP_ArrayElemPtrIntAPS, L);
2829}
2830bool ByteCodeEmitter::emitArrayElemPtrBool(SourceInfo L) {
2831 return emitOp<>(OP_ArrayElemPtrBool, L);
2832}
2833#endif
2834#ifdef GET_EVAL_IMPL
2835bool EvalEmitter::emitArrayElemPtrSint8(SourceInfo L) {
2836 if (!isActive()) return true;
2837 CurrentSource = L;
2838 return ArrayElemPtr<PT_Sint8>(S, CodePtr());
2839}
2840bool EvalEmitter::emitArrayElemPtrUint8(SourceInfo L) {
2841 if (!isActive()) return true;
2842 CurrentSource = L;
2843 return ArrayElemPtr<PT_Uint8>(S, CodePtr());
2844}
2845bool EvalEmitter::emitArrayElemPtrSint16(SourceInfo L) {
2846 if (!isActive()) return true;
2847 CurrentSource = L;
2848 return ArrayElemPtr<PT_Sint16>(S, CodePtr());
2849}
2850bool EvalEmitter::emitArrayElemPtrUint16(SourceInfo L) {
2851 if (!isActive()) return true;
2852 CurrentSource = L;
2853 return ArrayElemPtr<PT_Uint16>(S, CodePtr());
2854}
2855bool EvalEmitter::emitArrayElemPtrSint32(SourceInfo L) {
2856 if (!isActive()) return true;
2857 CurrentSource = L;
2858 return ArrayElemPtr<PT_Sint32>(S, CodePtr());
2859}
2860bool EvalEmitter::emitArrayElemPtrUint32(SourceInfo L) {
2861 if (!isActive()) return true;
2862 CurrentSource = L;
2863 return ArrayElemPtr<PT_Uint32>(S, CodePtr());
2864}
2865bool EvalEmitter::emitArrayElemPtrSint64(SourceInfo L) {
2866 if (!isActive()) return true;
2867 CurrentSource = L;
2868 return ArrayElemPtr<PT_Sint64>(S, CodePtr());
2869}
2870bool EvalEmitter::emitArrayElemPtrUint64(SourceInfo L) {
2871 if (!isActive()) return true;
2872 CurrentSource = L;
2873 return ArrayElemPtr<PT_Uint64>(S, CodePtr());
2874}
2875bool EvalEmitter::emitArrayElemPtrIntAP(SourceInfo L) {
2876 if (!isActive()) return true;
2877 CurrentSource = L;
2878 return ArrayElemPtr<PT_IntAP>(S, CodePtr());
2879}
2880bool EvalEmitter::emitArrayElemPtrIntAPS(SourceInfo L) {
2881 if (!isActive()) return true;
2882 CurrentSource = L;
2883 return ArrayElemPtr<PT_IntAPS>(S, CodePtr());
2884}
2885bool EvalEmitter::emitArrayElemPtrBool(SourceInfo L) {
2886 if (!isActive()) return true;
2887 CurrentSource = L;
2888 return ArrayElemPtr<PT_Bool>(S, CodePtr());
2889}
2890#endif
2891#ifdef GET_OPCODE_NAMES
2892OP_ArrayElemPtrPopSint8,
2893OP_ArrayElemPtrPopUint8,
2894OP_ArrayElemPtrPopSint16,
2895OP_ArrayElemPtrPopUint16,
2896OP_ArrayElemPtrPopSint32,
2897OP_ArrayElemPtrPopUint32,
2898OP_ArrayElemPtrPopSint64,
2899OP_ArrayElemPtrPopUint64,
2900OP_ArrayElemPtrPopIntAP,
2901OP_ArrayElemPtrPopIntAPS,
2902OP_ArrayElemPtrPopBool,
2903#endif
2904#ifdef GET_INTERPFN_LIST
2905&Interp_ArrayElemPtrPopSint8,
2906&Interp_ArrayElemPtrPopUint8,
2907&Interp_ArrayElemPtrPopSint16,
2908&Interp_ArrayElemPtrPopUint16,
2909&Interp_ArrayElemPtrPopSint32,
2910&Interp_ArrayElemPtrPopUint32,
2911&Interp_ArrayElemPtrPopSint64,
2912&Interp_ArrayElemPtrPopUint64,
2913&Interp_ArrayElemPtrPopIntAP,
2914&Interp_ArrayElemPtrPopIntAPS,
2915&Interp_ArrayElemPtrPopBool,
2916#endif
2917#ifdef GET_INTERPFN_DISPATCHERS
2918PRESERVE_NONE
2919static bool Interp_ArrayElemPtrPopSint8(InterpState &S) {
2920 if (!ArrayElemPtrPop<PT_Sint8>(S, S.PC)) return false;
2921#if USE_TAILCALLS
2922 MUSTTAIL return InterpNext(S);
2923#else
2924 return true;
2925#endif
2926}
2927PRESERVE_NONE
2928static bool Interp_ArrayElemPtrPopUint8(InterpState &S) {
2929 if (!ArrayElemPtrPop<PT_Uint8>(S, S.PC)) return false;
2930#if USE_TAILCALLS
2931 MUSTTAIL return InterpNext(S);
2932#else
2933 return true;
2934#endif
2935}
2936PRESERVE_NONE
2937static bool Interp_ArrayElemPtrPopSint16(InterpState &S) {
2938 if (!ArrayElemPtrPop<PT_Sint16>(S, S.PC)) return false;
2939#if USE_TAILCALLS
2940 MUSTTAIL return InterpNext(S);
2941#else
2942 return true;
2943#endif
2944}
2945PRESERVE_NONE
2946static bool Interp_ArrayElemPtrPopUint16(InterpState &S) {
2947 if (!ArrayElemPtrPop<PT_Uint16>(S, S.PC)) return false;
2948#if USE_TAILCALLS
2949 MUSTTAIL return InterpNext(S);
2950#else
2951 return true;
2952#endif
2953}
2954PRESERVE_NONE
2955static bool Interp_ArrayElemPtrPopSint32(InterpState &S) {
2956 if (!ArrayElemPtrPop<PT_Sint32>(S, S.PC)) return false;
2957#if USE_TAILCALLS
2958 MUSTTAIL return InterpNext(S);
2959#else
2960 return true;
2961#endif
2962}
2963PRESERVE_NONE
2964static bool Interp_ArrayElemPtrPopUint32(InterpState &S) {
2965 if (!ArrayElemPtrPop<PT_Uint32>(S, S.PC)) return false;
2966#if USE_TAILCALLS
2967 MUSTTAIL return InterpNext(S);
2968#else
2969 return true;
2970#endif
2971}
2972PRESERVE_NONE
2973static bool Interp_ArrayElemPtrPopSint64(InterpState &S) {
2974 if (!ArrayElemPtrPop<PT_Sint64>(S, S.PC)) return false;
2975#if USE_TAILCALLS
2976 MUSTTAIL return InterpNext(S);
2977#else
2978 return true;
2979#endif
2980}
2981PRESERVE_NONE
2982static bool Interp_ArrayElemPtrPopUint64(InterpState &S) {
2983 if (!ArrayElemPtrPop<PT_Uint64>(S, S.PC)) return false;
2984#if USE_TAILCALLS
2985 MUSTTAIL return InterpNext(S);
2986#else
2987 return true;
2988#endif
2989}
2990PRESERVE_NONE
2991static bool Interp_ArrayElemPtrPopIntAP(InterpState &S) {
2992 if (!ArrayElemPtrPop<PT_IntAP>(S, S.PC)) return false;
2993#if USE_TAILCALLS
2994 MUSTTAIL return InterpNext(S);
2995#else
2996 return true;
2997#endif
2998}
2999PRESERVE_NONE
3000static bool Interp_ArrayElemPtrPopIntAPS(InterpState &S) {
3001 if (!ArrayElemPtrPop<PT_IntAPS>(S, S.PC)) return false;
3002#if USE_TAILCALLS
3003 MUSTTAIL return InterpNext(S);
3004#else
3005 return true;
3006#endif
3007}
3008PRESERVE_NONE
3009static bool Interp_ArrayElemPtrPopBool(InterpState &S) {
3010 if (!ArrayElemPtrPop<PT_Bool>(S, S.PC)) return false;
3011#if USE_TAILCALLS
3012 MUSTTAIL return InterpNext(S);
3013#else
3014 return true;
3015#endif
3016}
3017#endif
3018#ifdef GET_DISASM
3019case OP_ArrayElemPtrPopSint8:
3020 Text.Op = PrintName("ArrayElemPtrPopSint8");
3021 break;
3022case OP_ArrayElemPtrPopUint8:
3023 Text.Op = PrintName("ArrayElemPtrPopUint8");
3024 break;
3025case OP_ArrayElemPtrPopSint16:
3026 Text.Op = PrintName("ArrayElemPtrPopSint16");
3027 break;
3028case OP_ArrayElemPtrPopUint16:
3029 Text.Op = PrintName("ArrayElemPtrPopUint16");
3030 break;
3031case OP_ArrayElemPtrPopSint32:
3032 Text.Op = PrintName("ArrayElemPtrPopSint32");
3033 break;
3034case OP_ArrayElemPtrPopUint32:
3035 Text.Op = PrintName("ArrayElemPtrPopUint32");
3036 break;
3037case OP_ArrayElemPtrPopSint64:
3038 Text.Op = PrintName("ArrayElemPtrPopSint64");
3039 break;
3040case OP_ArrayElemPtrPopUint64:
3041 Text.Op = PrintName("ArrayElemPtrPopUint64");
3042 break;
3043case OP_ArrayElemPtrPopIntAP:
3044 Text.Op = PrintName("ArrayElemPtrPopIntAP");
3045 break;
3046case OP_ArrayElemPtrPopIntAPS:
3047 Text.Op = PrintName("ArrayElemPtrPopIntAPS");
3048 break;
3049case OP_ArrayElemPtrPopBool:
3050 Text.Op = PrintName("ArrayElemPtrPopBool");
3051 break;
3052#endif
3053#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3054bool emitArrayElemPtrPopSint8(SourceInfo);
3055bool emitArrayElemPtrPopUint8(SourceInfo);
3056bool emitArrayElemPtrPopSint16(SourceInfo);
3057bool emitArrayElemPtrPopUint16(SourceInfo);
3058bool emitArrayElemPtrPopSint32(SourceInfo);
3059bool emitArrayElemPtrPopUint32(SourceInfo);
3060bool emitArrayElemPtrPopSint64(SourceInfo);
3061bool emitArrayElemPtrPopUint64(SourceInfo);
3062bool emitArrayElemPtrPopIntAP(SourceInfo);
3063bool emitArrayElemPtrPopIntAPS(SourceInfo);
3064bool emitArrayElemPtrPopBool(SourceInfo);
3065#endif
3066#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3067[[nodiscard]] bool emitArrayElemPtrPop(PrimType, SourceInfo I);
3068#endif
3069#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
3070bool
3071#if defined(GET_EVAL_IMPL)
3072EvalEmitter
3073#else
3074ByteCodeEmitter
3075#endif
3076::emitArrayElemPtrPop(PrimType T0, SourceInfo I) {
3077 switch (T0) {
3078 case PT_Sint8:
3079 return emitArrayElemPtrPopSint8(I);
3080 case PT_Uint8:
3081 return emitArrayElemPtrPopUint8(I);
3082 case PT_Sint16:
3083 return emitArrayElemPtrPopSint16(I);
3084 case PT_Uint16:
3085 return emitArrayElemPtrPopUint16(I);
3086 case PT_Sint32:
3087 return emitArrayElemPtrPopSint32(I);
3088 case PT_Uint32:
3089 return emitArrayElemPtrPopUint32(I);
3090 case PT_Sint64:
3091 return emitArrayElemPtrPopSint64(I);
3092 case PT_Uint64:
3093 return emitArrayElemPtrPopUint64(I);
3094 case PT_IntAP:
3095 return emitArrayElemPtrPopIntAP(I);
3096 case PT_IntAPS:
3097 return emitArrayElemPtrPopIntAPS(I);
3098 case PT_Bool:
3099 return emitArrayElemPtrPopBool(I);
3100 default: llvm_unreachable("invalid type: emitArrayElemPtrPop");
3101 }
3102 llvm_unreachable("invalid enum value");
3103}
3104#endif
3105#ifdef GET_LINK_IMPL
3106bool ByteCodeEmitter::emitArrayElemPtrPopSint8(SourceInfo L) {
3107 return emitOp<>(OP_ArrayElemPtrPopSint8, L);
3108}
3109bool ByteCodeEmitter::emitArrayElemPtrPopUint8(SourceInfo L) {
3110 return emitOp<>(OP_ArrayElemPtrPopUint8, L);
3111}
3112bool ByteCodeEmitter::emitArrayElemPtrPopSint16(SourceInfo L) {
3113 return emitOp<>(OP_ArrayElemPtrPopSint16, L);
3114}
3115bool ByteCodeEmitter::emitArrayElemPtrPopUint16(SourceInfo L) {
3116 return emitOp<>(OP_ArrayElemPtrPopUint16, L);
3117}
3118bool ByteCodeEmitter::emitArrayElemPtrPopSint32(SourceInfo L) {
3119 return emitOp<>(OP_ArrayElemPtrPopSint32, L);
3120}
3121bool ByteCodeEmitter::emitArrayElemPtrPopUint32(SourceInfo L) {
3122 return emitOp<>(OP_ArrayElemPtrPopUint32, L);
3123}
3124bool ByteCodeEmitter::emitArrayElemPtrPopSint64(SourceInfo L) {
3125 return emitOp<>(OP_ArrayElemPtrPopSint64, L);
3126}
3127bool ByteCodeEmitter::emitArrayElemPtrPopUint64(SourceInfo L) {
3128 return emitOp<>(OP_ArrayElemPtrPopUint64, L);
3129}
3130bool ByteCodeEmitter::emitArrayElemPtrPopIntAP(SourceInfo L) {
3131 return emitOp<>(OP_ArrayElemPtrPopIntAP, L);
3132}
3133bool ByteCodeEmitter::emitArrayElemPtrPopIntAPS(SourceInfo L) {
3134 return emitOp<>(OP_ArrayElemPtrPopIntAPS, L);
3135}
3136bool ByteCodeEmitter::emitArrayElemPtrPopBool(SourceInfo L) {
3137 return emitOp<>(OP_ArrayElemPtrPopBool, L);
3138}
3139#endif
3140#ifdef GET_EVAL_IMPL
3141bool EvalEmitter::emitArrayElemPtrPopSint8(SourceInfo L) {
3142 if (!isActive()) return true;
3143 CurrentSource = L;
3144 return ArrayElemPtrPop<PT_Sint8>(S, CodePtr());
3145}
3146bool EvalEmitter::emitArrayElemPtrPopUint8(SourceInfo L) {
3147 if (!isActive()) return true;
3148 CurrentSource = L;
3149 return ArrayElemPtrPop<PT_Uint8>(S, CodePtr());
3150}
3151bool EvalEmitter::emitArrayElemPtrPopSint16(SourceInfo L) {
3152 if (!isActive()) return true;
3153 CurrentSource = L;
3154 return ArrayElemPtrPop<PT_Sint16>(S, CodePtr());
3155}
3156bool EvalEmitter::emitArrayElemPtrPopUint16(SourceInfo L) {
3157 if (!isActive()) return true;
3158 CurrentSource = L;
3159 return ArrayElemPtrPop<PT_Uint16>(S, CodePtr());
3160}
3161bool EvalEmitter::emitArrayElemPtrPopSint32(SourceInfo L) {
3162 if (!isActive()) return true;
3163 CurrentSource = L;
3164 return ArrayElemPtrPop<PT_Sint32>(S, CodePtr());
3165}
3166bool EvalEmitter::emitArrayElemPtrPopUint32(SourceInfo L) {
3167 if (!isActive()) return true;
3168 CurrentSource = L;
3169 return ArrayElemPtrPop<PT_Uint32>(S, CodePtr());
3170}
3171bool EvalEmitter::emitArrayElemPtrPopSint64(SourceInfo L) {
3172 if (!isActive()) return true;
3173 CurrentSource = L;
3174 return ArrayElemPtrPop<PT_Sint64>(S, CodePtr());
3175}
3176bool EvalEmitter::emitArrayElemPtrPopUint64(SourceInfo L) {
3177 if (!isActive()) return true;
3178 CurrentSource = L;
3179 return ArrayElemPtrPop<PT_Uint64>(S, CodePtr());
3180}
3181bool EvalEmitter::emitArrayElemPtrPopIntAP(SourceInfo L) {
3182 if (!isActive()) return true;
3183 CurrentSource = L;
3184 return ArrayElemPtrPop<PT_IntAP>(S, CodePtr());
3185}
3186bool EvalEmitter::emitArrayElemPtrPopIntAPS(SourceInfo L) {
3187 if (!isActive()) return true;
3188 CurrentSource = L;
3189 return ArrayElemPtrPop<PT_IntAPS>(S, CodePtr());
3190}
3191bool EvalEmitter::emitArrayElemPtrPopBool(SourceInfo L) {
3192 if (!isActive()) return true;
3193 CurrentSource = L;
3194 return ArrayElemPtrPop<PT_Bool>(S, CodePtr());
3195}
3196#endif
3197#ifdef GET_OPCODE_NAMES
3198OP_Assume,
3199#endif
3200#ifdef GET_INTERPFN_LIST
3201&Interp_Assume,
3202#endif
3203#ifdef GET_INTERPFN_DISPATCHERS
3204PRESERVE_NONE
3205static bool Interp_Assume(InterpState &S) {
3206 if (!Assume(S, S.PC)) return false;
3207#if USE_TAILCALLS
3208 MUSTTAIL return InterpNext(S);
3209#else
3210 return true;
3211#endif
3212}
3213#endif
3214#ifdef GET_DISASM
3215case OP_Assume:
3216 Text.Op = PrintName("Assume");
3217 break;
3218#endif
3219#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3220bool emitAssume(SourceInfo);
3221#endif
3222#ifdef GET_LINK_IMPL
3223bool ByteCodeEmitter::emitAssume(SourceInfo L) {
3224 return emitOp<>(OP_Assume, L);
3225}
3226#endif
3227#ifdef GET_EVAL_IMPL
3228bool EvalEmitter::emitAssume(SourceInfo L) {
3229 if (!isActive()) return true;
3230 CurrentSource = L;
3231 return Assume(S, CodePtr());
3232}
3233#endif
3234#ifdef GET_OPCODE_NAMES
3235OP_BCP,
3236#endif
3237#ifdef GET_INTERPFN_LIST
3238&Interp_BCP,
3239#endif
3240#ifdef GET_INTERPFN_DISPATCHERS
3241PRESERVE_NONE
3242static bool Interp_BCP(InterpState &S) {
3243 {
3244 CodePtr OpPC = S.PC;
3245 const auto V0 = ReadArg<int32_t>(S, S.PC);
3246 const auto V1 = ReadArg<PrimType>(S, S.PC);
3247 if (!BCP(S, OpPC, V0, V1)) return false;
3248 }
3249#if USE_TAILCALLS
3250 MUSTTAIL return InterpNext(S);
3251#else
3252 return true;
3253#endif
3254}
3255#endif
3256#ifdef GET_DISASM
3257case OP_BCP:
3258 Text.Op = PrintName("BCP");
3259 Text.Args.push_back(printArg<int32_t>(PC));
3260 Text.Args.push_back(printArg<PrimType>(PC));
3261 break;
3262#endif
3263#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3264bool emitBCP( int32_t , PrimType , SourceInfo);
3265#endif
3266#ifdef GET_LINK_IMPL
3267bool ByteCodeEmitter::emitBCP( int32_t A0, PrimType A1, SourceInfo L) {
3268 return emitOp<int32_t, PrimType>(OP_BCP, A0, A1, L);
3269}
3270#endif
3271#ifdef GET_OPCODE_NAMES
3272OP_BitAndSint8,
3273OP_BitAndUint8,
3274OP_BitAndSint16,
3275OP_BitAndUint16,
3276OP_BitAndSint32,
3277OP_BitAndUint32,
3278OP_BitAndSint64,
3279OP_BitAndUint64,
3280OP_BitAndIntAP,
3281OP_BitAndIntAPS,
3282OP_BitAndFixedPoint,
3283#endif
3284#ifdef GET_INTERPFN_LIST
3285&Interp_BitAndSint8,
3286&Interp_BitAndUint8,
3287&Interp_BitAndSint16,
3288&Interp_BitAndUint16,
3289&Interp_BitAndSint32,
3290&Interp_BitAndUint32,
3291&Interp_BitAndSint64,
3292&Interp_BitAndUint64,
3293&Interp_BitAndIntAP,
3294&Interp_BitAndIntAPS,
3295&Interp_BitAndFixedPoint,
3296#endif
3297#ifdef GET_INTERPFN_DISPATCHERS
3298PRESERVE_NONE
3299static bool Interp_BitAndSint8(InterpState &S) {
3300 if (!BitAnd<PT_Sint8>(S)) return false;
3301#if USE_TAILCALLS
3302 MUSTTAIL return InterpNext(S);
3303#else
3304 return true;
3305#endif
3306}
3307PRESERVE_NONE
3308static bool Interp_BitAndUint8(InterpState &S) {
3309 if (!BitAnd<PT_Uint8>(S)) return false;
3310#if USE_TAILCALLS
3311 MUSTTAIL return InterpNext(S);
3312#else
3313 return true;
3314#endif
3315}
3316PRESERVE_NONE
3317static bool Interp_BitAndSint16(InterpState &S) {
3318 if (!BitAnd<PT_Sint16>(S)) return false;
3319#if USE_TAILCALLS
3320 MUSTTAIL return InterpNext(S);
3321#else
3322 return true;
3323#endif
3324}
3325PRESERVE_NONE
3326static bool Interp_BitAndUint16(InterpState &S) {
3327 if (!BitAnd<PT_Uint16>(S)) return false;
3328#if USE_TAILCALLS
3329 MUSTTAIL return InterpNext(S);
3330#else
3331 return true;
3332#endif
3333}
3334PRESERVE_NONE
3335static bool Interp_BitAndSint32(InterpState &S) {
3336 if (!BitAnd<PT_Sint32>(S)) return false;
3337#if USE_TAILCALLS
3338 MUSTTAIL return InterpNext(S);
3339#else
3340 return true;
3341#endif
3342}
3343PRESERVE_NONE
3344static bool Interp_BitAndUint32(InterpState &S) {
3345 if (!BitAnd<PT_Uint32>(S)) return false;
3346#if USE_TAILCALLS
3347 MUSTTAIL return InterpNext(S);
3348#else
3349 return true;
3350#endif
3351}
3352PRESERVE_NONE
3353static bool Interp_BitAndSint64(InterpState &S) {
3354 if (!BitAnd<PT_Sint64>(S)) return false;
3355#if USE_TAILCALLS
3356 MUSTTAIL return InterpNext(S);
3357#else
3358 return true;
3359#endif
3360}
3361PRESERVE_NONE
3362static bool Interp_BitAndUint64(InterpState &S) {
3363 if (!BitAnd<PT_Uint64>(S)) return false;
3364#if USE_TAILCALLS
3365 MUSTTAIL return InterpNext(S);
3366#else
3367 return true;
3368#endif
3369}
3370PRESERVE_NONE
3371static bool Interp_BitAndIntAP(InterpState &S) {
3372 if (!BitAnd<PT_IntAP>(S)) return false;
3373#if USE_TAILCALLS
3374 MUSTTAIL return InterpNext(S);
3375#else
3376 return true;
3377#endif
3378}
3379PRESERVE_NONE
3380static bool Interp_BitAndIntAPS(InterpState &S) {
3381 if (!BitAnd<PT_IntAPS>(S)) return false;
3382#if USE_TAILCALLS
3383 MUSTTAIL return InterpNext(S);
3384#else
3385 return true;
3386#endif
3387}
3388PRESERVE_NONE
3389static bool Interp_BitAndFixedPoint(InterpState &S) {
3390 if (!BitAnd<PT_FixedPoint>(S)) return false;
3391#if USE_TAILCALLS
3392 MUSTTAIL return InterpNext(S);
3393#else
3394 return true;
3395#endif
3396}
3397#endif
3398#ifdef GET_DISASM
3399case OP_BitAndSint8:
3400 Text.Op = PrintName("BitAndSint8");
3401 break;
3402case OP_BitAndUint8:
3403 Text.Op = PrintName("BitAndUint8");
3404 break;
3405case OP_BitAndSint16:
3406 Text.Op = PrintName("BitAndSint16");
3407 break;
3408case OP_BitAndUint16:
3409 Text.Op = PrintName("BitAndUint16");
3410 break;
3411case OP_BitAndSint32:
3412 Text.Op = PrintName("BitAndSint32");
3413 break;
3414case OP_BitAndUint32:
3415 Text.Op = PrintName("BitAndUint32");
3416 break;
3417case OP_BitAndSint64:
3418 Text.Op = PrintName("BitAndSint64");
3419 break;
3420case OP_BitAndUint64:
3421 Text.Op = PrintName("BitAndUint64");
3422 break;
3423case OP_BitAndIntAP:
3424 Text.Op = PrintName("BitAndIntAP");
3425 break;
3426case OP_BitAndIntAPS:
3427 Text.Op = PrintName("BitAndIntAPS");
3428 break;
3429case OP_BitAndFixedPoint:
3430 Text.Op = PrintName("BitAndFixedPoint");
3431 break;
3432#endif
3433#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3434bool emitBitAndSint8(SourceInfo);
3435bool emitBitAndUint8(SourceInfo);
3436bool emitBitAndSint16(SourceInfo);
3437bool emitBitAndUint16(SourceInfo);
3438bool emitBitAndSint32(SourceInfo);
3439bool emitBitAndUint32(SourceInfo);
3440bool emitBitAndSint64(SourceInfo);
3441bool emitBitAndUint64(SourceInfo);
3442bool emitBitAndIntAP(SourceInfo);
3443bool emitBitAndIntAPS(SourceInfo);
3444bool emitBitAndFixedPoint(SourceInfo);
3445#endif
3446#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3447[[nodiscard]] bool emitBitAnd(PrimType, SourceInfo I);
3448#endif
3449#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
3450bool
3451#if defined(GET_EVAL_IMPL)
3452EvalEmitter
3453#else
3454ByteCodeEmitter
3455#endif
3456::emitBitAnd(PrimType T0, SourceInfo I) {
3457 switch (T0) {
3458 case PT_Sint8:
3459 return emitBitAndSint8(I);
3460 case PT_Uint8:
3461 return emitBitAndUint8(I);
3462 case PT_Sint16:
3463 return emitBitAndSint16(I);
3464 case PT_Uint16:
3465 return emitBitAndUint16(I);
3466 case PT_Sint32:
3467 return emitBitAndSint32(I);
3468 case PT_Uint32:
3469 return emitBitAndUint32(I);
3470 case PT_Sint64:
3471 return emitBitAndSint64(I);
3472 case PT_Uint64:
3473 return emitBitAndUint64(I);
3474 case PT_IntAP:
3475 return emitBitAndIntAP(I);
3476 case PT_IntAPS:
3477 return emitBitAndIntAPS(I);
3478 case PT_FixedPoint:
3479 return emitBitAndFixedPoint(I);
3480 default: llvm_unreachable("invalid type: emitBitAnd");
3481 }
3482 llvm_unreachable("invalid enum value");
3483}
3484#endif
3485#ifdef GET_LINK_IMPL
3486bool ByteCodeEmitter::emitBitAndSint8(SourceInfo L) {
3487 return emitOp<>(OP_BitAndSint8, L);
3488}
3489bool ByteCodeEmitter::emitBitAndUint8(SourceInfo L) {
3490 return emitOp<>(OP_BitAndUint8, L);
3491}
3492bool ByteCodeEmitter::emitBitAndSint16(SourceInfo L) {
3493 return emitOp<>(OP_BitAndSint16, L);
3494}
3495bool ByteCodeEmitter::emitBitAndUint16(SourceInfo L) {
3496 return emitOp<>(OP_BitAndUint16, L);
3497}
3498bool ByteCodeEmitter::emitBitAndSint32(SourceInfo L) {
3499 return emitOp<>(OP_BitAndSint32, L);
3500}
3501bool ByteCodeEmitter::emitBitAndUint32(SourceInfo L) {
3502 return emitOp<>(OP_BitAndUint32, L);
3503}
3504bool ByteCodeEmitter::emitBitAndSint64(SourceInfo L) {
3505 return emitOp<>(OP_BitAndSint64, L);
3506}
3507bool ByteCodeEmitter::emitBitAndUint64(SourceInfo L) {
3508 return emitOp<>(OP_BitAndUint64, L);
3509}
3510bool ByteCodeEmitter::emitBitAndIntAP(SourceInfo L) {
3511 return emitOp<>(OP_BitAndIntAP, L);
3512}
3513bool ByteCodeEmitter::emitBitAndIntAPS(SourceInfo L) {
3514 return emitOp<>(OP_BitAndIntAPS, L);
3515}
3516bool ByteCodeEmitter::emitBitAndFixedPoint(SourceInfo L) {
3517 return emitOp<>(OP_BitAndFixedPoint, L);
3518}
3519#endif
3520#ifdef GET_EVAL_IMPL
3521bool EvalEmitter::emitBitAndSint8(SourceInfo L) {
3522 if (!isActive()) return true;
3523 CurrentSource = L;
3524 return BitAnd<PT_Sint8>(S);
3525}
3526bool EvalEmitter::emitBitAndUint8(SourceInfo L) {
3527 if (!isActive()) return true;
3528 CurrentSource = L;
3529 return BitAnd<PT_Uint8>(S);
3530}
3531bool EvalEmitter::emitBitAndSint16(SourceInfo L) {
3532 if (!isActive()) return true;
3533 CurrentSource = L;
3534 return BitAnd<PT_Sint16>(S);
3535}
3536bool EvalEmitter::emitBitAndUint16(SourceInfo L) {
3537 if (!isActive()) return true;
3538 CurrentSource = L;
3539 return BitAnd<PT_Uint16>(S);
3540}
3541bool EvalEmitter::emitBitAndSint32(SourceInfo L) {
3542 if (!isActive()) return true;
3543 CurrentSource = L;
3544 return BitAnd<PT_Sint32>(S);
3545}
3546bool EvalEmitter::emitBitAndUint32(SourceInfo L) {
3547 if (!isActive()) return true;
3548 CurrentSource = L;
3549 return BitAnd<PT_Uint32>(S);
3550}
3551bool EvalEmitter::emitBitAndSint64(SourceInfo L) {
3552 if (!isActive()) return true;
3553 CurrentSource = L;
3554 return BitAnd<PT_Sint64>(S);
3555}
3556bool EvalEmitter::emitBitAndUint64(SourceInfo L) {
3557 if (!isActive()) return true;
3558 CurrentSource = L;
3559 return BitAnd<PT_Uint64>(S);
3560}
3561bool EvalEmitter::emitBitAndIntAP(SourceInfo L) {
3562 if (!isActive()) return true;
3563 CurrentSource = L;
3564 return BitAnd<PT_IntAP>(S);
3565}
3566bool EvalEmitter::emitBitAndIntAPS(SourceInfo L) {
3567 if (!isActive()) return true;
3568 CurrentSource = L;
3569 return BitAnd<PT_IntAPS>(S);
3570}
3571bool EvalEmitter::emitBitAndFixedPoint(SourceInfo L) {
3572 if (!isActive()) return true;
3573 CurrentSource = L;
3574 return BitAnd<PT_FixedPoint>(S);
3575}
3576#endif
3577#ifdef GET_OPCODE_NAMES
3578OP_BitCast,
3579#endif
3580#ifdef GET_INTERPFN_LIST
3581&Interp_BitCast,
3582#endif
3583#ifdef GET_INTERPFN_DISPATCHERS
3584PRESERVE_NONE
3585static bool Interp_BitCast(InterpState &S) {
3586 if (!BitCast(S, S.PC)) return false;
3587#if USE_TAILCALLS
3588 MUSTTAIL return InterpNext(S);
3589#else
3590 return true;
3591#endif
3592}
3593#endif
3594#ifdef GET_DISASM
3595case OP_BitCast:
3596 Text.Op = PrintName("BitCast");
3597 break;
3598#endif
3599#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3600bool emitBitCast(SourceInfo);
3601#endif
3602#ifdef GET_LINK_IMPL
3603bool ByteCodeEmitter::emitBitCast(SourceInfo L) {
3604 return emitOp<>(OP_BitCast, L);
3605}
3606#endif
3607#ifdef GET_EVAL_IMPL
3608bool EvalEmitter::emitBitCast(SourceInfo L) {
3609 if (!isActive()) return true;
3610 CurrentSource = L;
3611 return BitCast(S, CodePtr());
3612}
3613#endif
3614#ifdef GET_OPCODE_NAMES
3615OP_BitCastPrimUint8,
3616OP_BitCastPrimSint8,
3617OP_BitCastPrimUint16,
3618OP_BitCastPrimSint16,
3619OP_BitCastPrimUint32,
3620OP_BitCastPrimSint32,
3621OP_BitCastPrimUint64,
3622OP_BitCastPrimSint64,
3623OP_BitCastPrimIntAP,
3624OP_BitCastPrimIntAPS,
3625OP_BitCastPrimBool,
3626OP_BitCastPrimFloat,
3627OP_BitCastPrimPtr,
3628OP_BitCastPrimMemberPtr,
3629#endif
3630#ifdef GET_INTERPFN_LIST
3631&Interp_BitCastPrimUint8,
3632&Interp_BitCastPrimSint8,
3633&Interp_BitCastPrimUint16,
3634&Interp_BitCastPrimSint16,
3635&Interp_BitCastPrimUint32,
3636&Interp_BitCastPrimSint32,
3637&Interp_BitCastPrimUint64,
3638&Interp_BitCastPrimSint64,
3639&Interp_BitCastPrimIntAP,
3640&Interp_BitCastPrimIntAPS,
3641&Interp_BitCastPrimBool,
3642&Interp_BitCastPrimFloat,
3643&Interp_BitCastPrimPtr,
3644&Interp_BitCastPrimMemberPtr,
3645#endif
3646#ifdef GET_INTERPFN_DISPATCHERS
3647PRESERVE_NONE
3648static bool Interp_BitCastPrimUint8(InterpState &S) {
3649 {
3650 CodePtr OpPC = S.PC;
3651 const auto V0 = ReadArg<bool>(S, S.PC);
3652 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3653 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3654 const auto V3 = ReadArg<const Type *>(S, S.PC);
3655 if (!BitCastPrim<PT_Uint8>(S, OpPC, V0, V1, V2, V3)) return false;
3656 }
3657#if USE_TAILCALLS
3658 MUSTTAIL return InterpNext(S);
3659#else
3660 return true;
3661#endif
3662}
3663PRESERVE_NONE
3664static bool Interp_BitCastPrimSint8(InterpState &S) {
3665 {
3666 CodePtr OpPC = S.PC;
3667 const auto V0 = ReadArg<bool>(S, S.PC);
3668 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3669 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3670 const auto V3 = ReadArg<const Type *>(S, S.PC);
3671 if (!BitCastPrim<PT_Sint8>(S, OpPC, V0, V1, V2, V3)) return false;
3672 }
3673#if USE_TAILCALLS
3674 MUSTTAIL return InterpNext(S);
3675#else
3676 return true;
3677#endif
3678}
3679PRESERVE_NONE
3680static bool Interp_BitCastPrimUint16(InterpState &S) {
3681 {
3682 CodePtr OpPC = S.PC;
3683 const auto V0 = ReadArg<bool>(S, S.PC);
3684 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3685 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3686 const auto V3 = ReadArg<const Type *>(S, S.PC);
3687 if (!BitCastPrim<PT_Uint16>(S, OpPC, V0, V1, V2, V3)) return false;
3688 }
3689#if USE_TAILCALLS
3690 MUSTTAIL return InterpNext(S);
3691#else
3692 return true;
3693#endif
3694}
3695PRESERVE_NONE
3696static bool Interp_BitCastPrimSint16(InterpState &S) {
3697 {
3698 CodePtr OpPC = S.PC;
3699 const auto V0 = ReadArg<bool>(S, S.PC);
3700 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3701 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3702 const auto V3 = ReadArg<const Type *>(S, S.PC);
3703 if (!BitCastPrim<PT_Sint16>(S, OpPC, V0, V1, V2, V3)) return false;
3704 }
3705#if USE_TAILCALLS
3706 MUSTTAIL return InterpNext(S);
3707#else
3708 return true;
3709#endif
3710}
3711PRESERVE_NONE
3712static bool Interp_BitCastPrimUint32(InterpState &S) {
3713 {
3714 CodePtr OpPC = S.PC;
3715 const auto V0 = ReadArg<bool>(S, S.PC);
3716 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3717 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3718 const auto V3 = ReadArg<const Type *>(S, S.PC);
3719 if (!BitCastPrim<PT_Uint32>(S, OpPC, V0, V1, V2, V3)) return false;
3720 }
3721#if USE_TAILCALLS
3722 MUSTTAIL return InterpNext(S);
3723#else
3724 return true;
3725#endif
3726}
3727PRESERVE_NONE
3728static bool Interp_BitCastPrimSint32(InterpState &S) {
3729 {
3730 CodePtr OpPC = S.PC;
3731 const auto V0 = ReadArg<bool>(S, S.PC);
3732 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3733 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3734 const auto V3 = ReadArg<const Type *>(S, S.PC);
3735 if (!BitCastPrim<PT_Sint32>(S, OpPC, V0, V1, V2, V3)) return false;
3736 }
3737#if USE_TAILCALLS
3738 MUSTTAIL return InterpNext(S);
3739#else
3740 return true;
3741#endif
3742}
3743PRESERVE_NONE
3744static bool Interp_BitCastPrimUint64(InterpState &S) {
3745 {
3746 CodePtr OpPC = S.PC;
3747 const auto V0 = ReadArg<bool>(S, S.PC);
3748 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3749 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3750 const auto V3 = ReadArg<const Type *>(S, S.PC);
3751 if (!BitCastPrim<PT_Uint64>(S, OpPC, V0, V1, V2, V3)) return false;
3752 }
3753#if USE_TAILCALLS
3754 MUSTTAIL return InterpNext(S);
3755#else
3756 return true;
3757#endif
3758}
3759PRESERVE_NONE
3760static bool Interp_BitCastPrimSint64(InterpState &S) {
3761 {
3762 CodePtr OpPC = S.PC;
3763 const auto V0 = ReadArg<bool>(S, S.PC);
3764 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3765 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3766 const auto V3 = ReadArg<const Type *>(S, S.PC);
3767 if (!BitCastPrim<PT_Sint64>(S, OpPC, V0, V1, V2, V3)) return false;
3768 }
3769#if USE_TAILCALLS
3770 MUSTTAIL return InterpNext(S);
3771#else
3772 return true;
3773#endif
3774}
3775PRESERVE_NONE
3776static bool Interp_BitCastPrimIntAP(InterpState &S) {
3777 {
3778 CodePtr OpPC = S.PC;
3779 const auto V0 = ReadArg<bool>(S, S.PC);
3780 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3781 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3782 const auto V3 = ReadArg<const Type *>(S, S.PC);
3783 if (!BitCastPrim<PT_IntAP>(S, OpPC, V0, V1, V2, V3)) return false;
3784 }
3785#if USE_TAILCALLS
3786 MUSTTAIL return InterpNext(S);
3787#else
3788 return true;
3789#endif
3790}
3791PRESERVE_NONE
3792static bool Interp_BitCastPrimIntAPS(InterpState &S) {
3793 {
3794 CodePtr OpPC = S.PC;
3795 const auto V0 = ReadArg<bool>(S, S.PC);
3796 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3797 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3798 const auto V3 = ReadArg<const Type *>(S, S.PC);
3799 if (!BitCastPrim<PT_IntAPS>(S, OpPC, V0, V1, V2, V3)) return false;
3800 }
3801#if USE_TAILCALLS
3802 MUSTTAIL return InterpNext(S);
3803#else
3804 return true;
3805#endif
3806}
3807PRESERVE_NONE
3808static bool Interp_BitCastPrimBool(InterpState &S) {
3809 {
3810 CodePtr OpPC = S.PC;
3811 const auto V0 = ReadArg<bool>(S, S.PC);
3812 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3813 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3814 const auto V3 = ReadArg<const Type *>(S, S.PC);
3815 if (!BitCastPrim<PT_Bool>(S, OpPC, V0, V1, V2, V3)) return false;
3816 }
3817#if USE_TAILCALLS
3818 MUSTTAIL return InterpNext(S);
3819#else
3820 return true;
3821#endif
3822}
3823PRESERVE_NONE
3824static bool Interp_BitCastPrimFloat(InterpState &S) {
3825 {
3826 CodePtr OpPC = S.PC;
3827 const auto V0 = ReadArg<bool>(S, S.PC);
3828 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3829 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3830 const auto V3 = ReadArg<const Type *>(S, S.PC);
3831 if (!BitCastPrim<PT_Float>(S, OpPC, V0, V1, V2, V3)) return false;
3832 }
3833#if USE_TAILCALLS
3834 MUSTTAIL return InterpNext(S);
3835#else
3836 return true;
3837#endif
3838}
3839PRESERVE_NONE
3840static bool Interp_BitCastPrimPtr(InterpState &S) {
3841 {
3842 CodePtr OpPC = S.PC;
3843 const auto V0 = ReadArg<bool>(S, S.PC);
3844 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3845 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3846 const auto V3 = ReadArg<const Type *>(S, S.PC);
3847 if (!BitCastPrim<PT_Ptr>(S, OpPC, V0, V1, V2, V3)) return false;
3848 }
3849#if USE_TAILCALLS
3850 MUSTTAIL return InterpNext(S);
3851#else
3852 return true;
3853#endif
3854}
3855PRESERVE_NONE
3856static bool Interp_BitCastPrimMemberPtr(InterpState &S) {
3857 {
3858 CodePtr OpPC = S.PC;
3859 const auto V0 = ReadArg<bool>(S, S.PC);
3860 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3861 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3862 const auto V3 = ReadArg<const Type *>(S, S.PC);
3863 if (!BitCastPrim<PT_MemberPtr>(S, OpPC, V0, V1, V2, V3)) return false;
3864 }
3865#if USE_TAILCALLS
3866 MUSTTAIL return InterpNext(S);
3867#else
3868 return true;
3869#endif
3870}
3871#endif
3872#ifdef GET_DISASM
3873case OP_BitCastPrimUint8:
3874 Text.Op = PrintName("BitCastPrimUint8");
3875 Text.Args.push_back(printArg<bool>(PC));
3876 Text.Args.push_back(printArg<uint32_t>(PC));
3877 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3878 Text.Args.push_back(printArg<const Type *>(PC));
3879 break;
3880case OP_BitCastPrimSint8:
3881 Text.Op = PrintName("BitCastPrimSint8");
3882 Text.Args.push_back(printArg<bool>(PC));
3883 Text.Args.push_back(printArg<uint32_t>(PC));
3884 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3885 Text.Args.push_back(printArg<const Type *>(PC));
3886 break;
3887case OP_BitCastPrimUint16:
3888 Text.Op = PrintName("BitCastPrimUint16");
3889 Text.Args.push_back(printArg<bool>(PC));
3890 Text.Args.push_back(printArg<uint32_t>(PC));
3891 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3892 Text.Args.push_back(printArg<const Type *>(PC));
3893 break;
3894case OP_BitCastPrimSint16:
3895 Text.Op = PrintName("BitCastPrimSint16");
3896 Text.Args.push_back(printArg<bool>(PC));
3897 Text.Args.push_back(printArg<uint32_t>(PC));
3898 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3899 Text.Args.push_back(printArg<const Type *>(PC));
3900 break;
3901case OP_BitCastPrimUint32:
3902 Text.Op = PrintName("BitCastPrimUint32");
3903 Text.Args.push_back(printArg<bool>(PC));
3904 Text.Args.push_back(printArg<uint32_t>(PC));
3905 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3906 Text.Args.push_back(printArg<const Type *>(PC));
3907 break;
3908case OP_BitCastPrimSint32:
3909 Text.Op = PrintName("BitCastPrimSint32");
3910 Text.Args.push_back(printArg<bool>(PC));
3911 Text.Args.push_back(printArg<uint32_t>(PC));
3912 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3913 Text.Args.push_back(printArg<const Type *>(PC));
3914 break;
3915case OP_BitCastPrimUint64:
3916 Text.Op = PrintName("BitCastPrimUint64");
3917 Text.Args.push_back(printArg<bool>(PC));
3918 Text.Args.push_back(printArg<uint32_t>(PC));
3919 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3920 Text.Args.push_back(printArg<const Type *>(PC));
3921 break;
3922case OP_BitCastPrimSint64:
3923 Text.Op = PrintName("BitCastPrimSint64");
3924 Text.Args.push_back(printArg<bool>(PC));
3925 Text.Args.push_back(printArg<uint32_t>(PC));
3926 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3927 Text.Args.push_back(printArg<const Type *>(PC));
3928 break;
3929case OP_BitCastPrimIntAP:
3930 Text.Op = PrintName("BitCastPrimIntAP");
3931 Text.Args.push_back(printArg<bool>(PC));
3932 Text.Args.push_back(printArg<uint32_t>(PC));
3933 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3934 Text.Args.push_back(printArg<const Type *>(PC));
3935 break;
3936case OP_BitCastPrimIntAPS:
3937 Text.Op = PrintName("BitCastPrimIntAPS");
3938 Text.Args.push_back(printArg<bool>(PC));
3939 Text.Args.push_back(printArg<uint32_t>(PC));
3940 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3941 Text.Args.push_back(printArg<const Type *>(PC));
3942 break;
3943case OP_BitCastPrimBool:
3944 Text.Op = PrintName("BitCastPrimBool");
3945 Text.Args.push_back(printArg<bool>(PC));
3946 Text.Args.push_back(printArg<uint32_t>(PC));
3947 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3948 Text.Args.push_back(printArg<const Type *>(PC));
3949 break;
3950case OP_BitCastPrimFloat:
3951 Text.Op = PrintName("BitCastPrimFloat");
3952 Text.Args.push_back(printArg<bool>(PC));
3953 Text.Args.push_back(printArg<uint32_t>(PC));
3954 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3955 Text.Args.push_back(printArg<const Type *>(PC));
3956 break;
3957case OP_BitCastPrimPtr:
3958 Text.Op = PrintName("BitCastPrimPtr");
3959 Text.Args.push_back(printArg<bool>(PC));
3960 Text.Args.push_back(printArg<uint32_t>(PC));
3961 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3962 Text.Args.push_back(printArg<const Type *>(PC));
3963 break;
3964case OP_BitCastPrimMemberPtr:
3965 Text.Op = PrintName("BitCastPrimMemberPtr");
3966 Text.Args.push_back(printArg<bool>(PC));
3967 Text.Args.push_back(printArg<uint32_t>(PC));
3968 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3969 Text.Args.push_back(printArg<const Type *>(PC));
3970 break;
3971#endif
3972#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3973bool emitBitCastPrimUint8( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3974bool emitBitCastPrimSint8( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3975bool emitBitCastPrimUint16( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3976bool emitBitCastPrimSint16( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3977bool emitBitCastPrimUint32( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3978bool emitBitCastPrimSint32( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3979bool emitBitCastPrimUint64( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3980bool emitBitCastPrimSint64( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3981bool emitBitCastPrimIntAP( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3982bool emitBitCastPrimIntAPS( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3983bool emitBitCastPrimBool( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3984bool emitBitCastPrimFloat( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3985bool emitBitCastPrimPtr( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3986bool emitBitCastPrimMemberPtr( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3987#endif
3988#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3989[[nodiscard]] bool emitBitCastPrim(PrimType, bool, uint32_t, const llvm::fltSemantics *, const Type *, SourceInfo I);
3990#endif
3991#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
3992bool
3993#if defined(GET_EVAL_IMPL)
3994EvalEmitter
3995#else
3996ByteCodeEmitter
3997#endif
3998::emitBitCastPrim(PrimType T0, bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo I) {
3999 switch (T0) {
4000 case PT_Uint8:
4001 return emitBitCastPrimUint8(A0, A1, A2, A3, I);
4002 case PT_Sint8:
4003 return emitBitCastPrimSint8(A0, A1, A2, A3, I);
4004 case PT_Uint16:
4005 return emitBitCastPrimUint16(A0, A1, A2, A3, I);
4006 case PT_Sint16:
4007 return emitBitCastPrimSint16(A0, A1, A2, A3, I);
4008 case PT_Uint32:
4009 return emitBitCastPrimUint32(A0, A1, A2, A3, I);
4010 case PT_Sint32:
4011 return emitBitCastPrimSint32(A0, A1, A2, A3, I);
4012 case PT_Uint64:
4013 return emitBitCastPrimUint64(A0, A1, A2, A3, I);
4014 case PT_Sint64:
4015 return emitBitCastPrimSint64(A0, A1, A2, A3, I);
4016 case PT_IntAP:
4017 return emitBitCastPrimIntAP(A0, A1, A2, A3, I);
4018 case PT_IntAPS:
4019 return emitBitCastPrimIntAPS(A0, A1, A2, A3, I);
4020 case PT_Bool:
4021 return emitBitCastPrimBool(A0, A1, A2, A3, I);
4022 case PT_Float:
4023 return emitBitCastPrimFloat(A0, A1, A2, A3, I);
4024 case PT_Ptr:
4025 return emitBitCastPrimPtr(A0, A1, A2, A3, I);
4026 case PT_MemberPtr:
4027 return emitBitCastPrimMemberPtr(A0, A1, A2, A3, I);
4028 default: llvm_unreachable("invalid type: emitBitCastPrim");
4029 }
4030 llvm_unreachable("invalid enum value");
4031}
4032#endif
4033#ifdef GET_LINK_IMPL
4034bool ByteCodeEmitter::emitBitCastPrimUint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4035 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint8, A0, A1, A2, A3, L);
4036}
4037bool ByteCodeEmitter::emitBitCastPrimSint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4038 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint8, A0, A1, A2, A3, L);
4039}
4040bool ByteCodeEmitter::emitBitCastPrimUint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4041 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint16, A0, A1, A2, A3, L);
4042}
4043bool ByteCodeEmitter::emitBitCastPrimSint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4044 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint16, A0, A1, A2, A3, L);
4045}
4046bool ByteCodeEmitter::emitBitCastPrimUint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4047 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint32, A0, A1, A2, A3, L);
4048}
4049bool ByteCodeEmitter::emitBitCastPrimSint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4050 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint32, A0, A1, A2, A3, L);
4051}
4052bool ByteCodeEmitter::emitBitCastPrimUint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4053 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint64, A0, A1, A2, A3, L);
4054}
4055bool ByteCodeEmitter::emitBitCastPrimSint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4056 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint64, A0, A1, A2, A3, L);
4057}
4058bool ByteCodeEmitter::emitBitCastPrimIntAP( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4059 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimIntAP, A0, A1, A2, A3, L);
4060}
4061bool ByteCodeEmitter::emitBitCastPrimIntAPS( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4062 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimIntAPS, A0, A1, A2, A3, L);
4063}
4064bool ByteCodeEmitter::emitBitCastPrimBool( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4065 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimBool, A0, A1, A2, A3, L);
4066}
4067bool ByteCodeEmitter::emitBitCastPrimFloat( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4068 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimFloat, A0, A1, A2, A3, L);
4069}
4070bool ByteCodeEmitter::emitBitCastPrimPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4071 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimPtr, A0, A1, A2, A3, L);
4072}
4073bool ByteCodeEmitter::emitBitCastPrimMemberPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4074 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimMemberPtr, A0, A1, A2, A3, L);
4075}
4076#endif
4077#ifdef GET_EVAL_IMPL
4078bool EvalEmitter::emitBitCastPrimUint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4079 if (!isActive()) return true;
4080 CurrentSource = L;
4081 return BitCastPrim<PT_Uint8>(S, CodePtr(), A0, A1, A2, A3);
4082}
4083bool EvalEmitter::emitBitCastPrimSint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4084 if (!isActive()) return true;
4085 CurrentSource = L;
4086 return BitCastPrim<PT_Sint8>(S, CodePtr(), A0, A1, A2, A3);
4087}
4088bool EvalEmitter::emitBitCastPrimUint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4089 if (!isActive()) return true;
4090 CurrentSource = L;
4091 return BitCastPrim<PT_Uint16>(S, CodePtr(), A0, A1, A2, A3);
4092}
4093bool EvalEmitter::emitBitCastPrimSint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4094 if (!isActive()) return true;
4095 CurrentSource = L;
4096 return BitCastPrim<PT_Sint16>(S, CodePtr(), A0, A1, A2, A3);
4097}
4098bool EvalEmitter::emitBitCastPrimUint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4099 if (!isActive()) return true;
4100 CurrentSource = L;
4101 return BitCastPrim<PT_Uint32>(S, CodePtr(), A0, A1, A2, A3);
4102}
4103bool EvalEmitter::emitBitCastPrimSint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4104 if (!isActive()) return true;
4105 CurrentSource = L;
4106 return BitCastPrim<PT_Sint32>(S, CodePtr(), A0, A1, A2, A3);
4107}
4108bool EvalEmitter::emitBitCastPrimUint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4109 if (!isActive()) return true;
4110 CurrentSource = L;
4111 return BitCastPrim<PT_Uint64>(S, CodePtr(), A0, A1, A2, A3);
4112}
4113bool EvalEmitter::emitBitCastPrimSint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4114 if (!isActive()) return true;
4115 CurrentSource = L;
4116 return BitCastPrim<PT_Sint64>(S, CodePtr(), A0, A1, A2, A3);
4117}
4118bool EvalEmitter::emitBitCastPrimIntAP( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4119 if (!isActive()) return true;
4120 CurrentSource = L;
4121 return BitCastPrim<PT_IntAP>(S, CodePtr(), A0, A1, A2, A3);
4122}
4123bool EvalEmitter::emitBitCastPrimIntAPS( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4124 if (!isActive()) return true;
4125 CurrentSource = L;
4126 return BitCastPrim<PT_IntAPS>(S, CodePtr(), A0, A1, A2, A3);
4127}
4128bool EvalEmitter::emitBitCastPrimBool( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4129 if (!isActive()) return true;
4130 CurrentSource = L;
4131 return BitCastPrim<PT_Bool>(S, CodePtr(), A0, A1, A2, A3);
4132}
4133bool EvalEmitter::emitBitCastPrimFloat( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4134 if (!isActive()) return true;
4135 CurrentSource = L;
4136 return BitCastPrim<PT_Float>(S, CodePtr(), A0, A1, A2, A3);
4137}
4138bool EvalEmitter::emitBitCastPrimPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4139 if (!isActive()) return true;
4140 CurrentSource = L;
4141 return BitCastPrim<PT_Ptr>(S, CodePtr(), A0, A1, A2, A3);
4142}
4143bool EvalEmitter::emitBitCastPrimMemberPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4144 if (!isActive()) return true;
4145 CurrentSource = L;
4146 return BitCastPrim<PT_MemberPtr>(S, CodePtr(), A0, A1, A2, A3);
4147}
4148#endif
4149#ifdef GET_OPCODE_NAMES
4150OP_BitOrSint8,
4151OP_BitOrUint8,
4152OP_BitOrSint16,
4153OP_BitOrUint16,
4154OP_BitOrSint32,
4155OP_BitOrUint32,
4156OP_BitOrSint64,
4157OP_BitOrUint64,
4158OP_BitOrIntAP,
4159OP_BitOrIntAPS,
4160OP_BitOrFixedPoint,
4161#endif
4162#ifdef GET_INTERPFN_LIST
4163&Interp_BitOrSint8,
4164&Interp_BitOrUint8,
4165&Interp_BitOrSint16,
4166&Interp_BitOrUint16,
4167&Interp_BitOrSint32,
4168&Interp_BitOrUint32,
4169&Interp_BitOrSint64,
4170&Interp_BitOrUint64,
4171&Interp_BitOrIntAP,
4172&Interp_BitOrIntAPS,
4173&Interp_BitOrFixedPoint,
4174#endif
4175#ifdef GET_INTERPFN_DISPATCHERS
4176PRESERVE_NONE
4177static bool Interp_BitOrSint8(InterpState &S) {
4178 if (!BitOr<PT_Sint8>(S)) return false;
4179#if USE_TAILCALLS
4180 MUSTTAIL return InterpNext(S);
4181#else
4182 return true;
4183#endif
4184}
4185PRESERVE_NONE
4186static bool Interp_BitOrUint8(InterpState &S) {
4187 if (!BitOr<PT_Uint8>(S)) return false;
4188#if USE_TAILCALLS
4189 MUSTTAIL return InterpNext(S);
4190#else
4191 return true;
4192#endif
4193}
4194PRESERVE_NONE
4195static bool Interp_BitOrSint16(InterpState &S) {
4196 if (!BitOr<PT_Sint16>(S)) return false;
4197#if USE_TAILCALLS
4198 MUSTTAIL return InterpNext(S);
4199#else
4200 return true;
4201#endif
4202}
4203PRESERVE_NONE
4204static bool Interp_BitOrUint16(InterpState &S) {
4205 if (!BitOr<PT_Uint16>(S)) return false;
4206#if USE_TAILCALLS
4207 MUSTTAIL return InterpNext(S);
4208#else
4209 return true;
4210#endif
4211}
4212PRESERVE_NONE
4213static bool Interp_BitOrSint32(InterpState &S) {
4214 if (!BitOr<PT_Sint32>(S)) return false;
4215#if USE_TAILCALLS
4216 MUSTTAIL return InterpNext(S);
4217#else
4218 return true;
4219#endif
4220}
4221PRESERVE_NONE
4222static bool Interp_BitOrUint32(InterpState &S) {
4223 if (!BitOr<PT_Uint32>(S)) return false;
4224#if USE_TAILCALLS
4225 MUSTTAIL return InterpNext(S);
4226#else
4227 return true;
4228#endif
4229}
4230PRESERVE_NONE
4231static bool Interp_BitOrSint64(InterpState &S) {
4232 if (!BitOr<PT_Sint64>(S)) return false;
4233#if USE_TAILCALLS
4234 MUSTTAIL return InterpNext(S);
4235#else
4236 return true;
4237#endif
4238}
4239PRESERVE_NONE
4240static bool Interp_BitOrUint64(InterpState &S) {
4241 if (!BitOr<PT_Uint64>(S)) return false;
4242#if USE_TAILCALLS
4243 MUSTTAIL return InterpNext(S);
4244#else
4245 return true;
4246#endif
4247}
4248PRESERVE_NONE
4249static bool Interp_BitOrIntAP(InterpState &S) {
4250 if (!BitOr<PT_IntAP>(S)) return false;
4251#if USE_TAILCALLS
4252 MUSTTAIL return InterpNext(S);
4253#else
4254 return true;
4255#endif
4256}
4257PRESERVE_NONE
4258static bool Interp_BitOrIntAPS(InterpState &S) {
4259 if (!BitOr<PT_IntAPS>(S)) return false;
4260#if USE_TAILCALLS
4261 MUSTTAIL return InterpNext(S);
4262#else
4263 return true;
4264#endif
4265}
4266PRESERVE_NONE
4267static bool Interp_BitOrFixedPoint(InterpState &S) {
4268 if (!BitOr<PT_FixedPoint>(S)) return false;
4269#if USE_TAILCALLS
4270 MUSTTAIL return InterpNext(S);
4271#else
4272 return true;
4273#endif
4274}
4275#endif
4276#ifdef GET_DISASM
4277case OP_BitOrSint8:
4278 Text.Op = PrintName("BitOrSint8");
4279 break;
4280case OP_BitOrUint8:
4281 Text.Op = PrintName("BitOrUint8");
4282 break;
4283case OP_BitOrSint16:
4284 Text.Op = PrintName("BitOrSint16");
4285 break;
4286case OP_BitOrUint16:
4287 Text.Op = PrintName("BitOrUint16");
4288 break;
4289case OP_BitOrSint32:
4290 Text.Op = PrintName("BitOrSint32");
4291 break;
4292case OP_BitOrUint32:
4293 Text.Op = PrintName("BitOrUint32");
4294 break;
4295case OP_BitOrSint64:
4296 Text.Op = PrintName("BitOrSint64");
4297 break;
4298case OP_BitOrUint64:
4299 Text.Op = PrintName("BitOrUint64");
4300 break;
4301case OP_BitOrIntAP:
4302 Text.Op = PrintName("BitOrIntAP");
4303 break;
4304case OP_BitOrIntAPS:
4305 Text.Op = PrintName("BitOrIntAPS");
4306 break;
4307case OP_BitOrFixedPoint:
4308 Text.Op = PrintName("BitOrFixedPoint");
4309 break;
4310#endif
4311#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4312bool emitBitOrSint8(SourceInfo);
4313bool emitBitOrUint8(SourceInfo);
4314bool emitBitOrSint16(SourceInfo);
4315bool emitBitOrUint16(SourceInfo);
4316bool emitBitOrSint32(SourceInfo);
4317bool emitBitOrUint32(SourceInfo);
4318bool emitBitOrSint64(SourceInfo);
4319bool emitBitOrUint64(SourceInfo);
4320bool emitBitOrIntAP(SourceInfo);
4321bool emitBitOrIntAPS(SourceInfo);
4322bool emitBitOrFixedPoint(SourceInfo);
4323#endif
4324#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4325[[nodiscard]] bool emitBitOr(PrimType, SourceInfo I);
4326#endif
4327#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
4328bool
4329#if defined(GET_EVAL_IMPL)
4330EvalEmitter
4331#else
4332ByteCodeEmitter
4333#endif
4334::emitBitOr(PrimType T0, SourceInfo I) {
4335 switch (T0) {
4336 case PT_Sint8:
4337 return emitBitOrSint8(I);
4338 case PT_Uint8:
4339 return emitBitOrUint8(I);
4340 case PT_Sint16:
4341 return emitBitOrSint16(I);
4342 case PT_Uint16:
4343 return emitBitOrUint16(I);
4344 case PT_Sint32:
4345 return emitBitOrSint32(I);
4346 case PT_Uint32:
4347 return emitBitOrUint32(I);
4348 case PT_Sint64:
4349 return emitBitOrSint64(I);
4350 case PT_Uint64:
4351 return emitBitOrUint64(I);
4352 case PT_IntAP:
4353 return emitBitOrIntAP(I);
4354 case PT_IntAPS:
4355 return emitBitOrIntAPS(I);
4356 case PT_FixedPoint:
4357 return emitBitOrFixedPoint(I);
4358 default: llvm_unreachable("invalid type: emitBitOr");
4359 }
4360 llvm_unreachable("invalid enum value");
4361}
4362#endif
4363#ifdef GET_LINK_IMPL
4364bool ByteCodeEmitter::emitBitOrSint8(SourceInfo L) {
4365 return emitOp<>(OP_BitOrSint8, L);
4366}
4367bool ByteCodeEmitter::emitBitOrUint8(SourceInfo L) {
4368 return emitOp<>(OP_BitOrUint8, L);
4369}
4370bool ByteCodeEmitter::emitBitOrSint16(SourceInfo L) {
4371 return emitOp<>(OP_BitOrSint16, L);
4372}
4373bool ByteCodeEmitter::emitBitOrUint16(SourceInfo L) {
4374 return emitOp<>(OP_BitOrUint16, L);
4375}
4376bool ByteCodeEmitter::emitBitOrSint32(SourceInfo L) {
4377 return emitOp<>(OP_BitOrSint32, L);
4378}
4379bool ByteCodeEmitter::emitBitOrUint32(SourceInfo L) {
4380 return emitOp<>(OP_BitOrUint32, L);
4381}
4382bool ByteCodeEmitter::emitBitOrSint64(SourceInfo L) {
4383 return emitOp<>(OP_BitOrSint64, L);
4384}
4385bool ByteCodeEmitter::emitBitOrUint64(SourceInfo L) {
4386 return emitOp<>(OP_BitOrUint64, L);
4387}
4388bool ByteCodeEmitter::emitBitOrIntAP(SourceInfo L) {
4389 return emitOp<>(OP_BitOrIntAP, L);
4390}
4391bool ByteCodeEmitter::emitBitOrIntAPS(SourceInfo L) {
4392 return emitOp<>(OP_BitOrIntAPS, L);
4393}
4394bool ByteCodeEmitter::emitBitOrFixedPoint(SourceInfo L) {
4395 return emitOp<>(OP_BitOrFixedPoint, L);
4396}
4397#endif
4398#ifdef GET_EVAL_IMPL
4399bool EvalEmitter::emitBitOrSint8(SourceInfo L) {
4400 if (!isActive()) return true;
4401 CurrentSource = L;
4402 return BitOr<PT_Sint8>(S);
4403}
4404bool EvalEmitter::emitBitOrUint8(SourceInfo L) {
4405 if (!isActive()) return true;
4406 CurrentSource = L;
4407 return BitOr<PT_Uint8>(S);
4408}
4409bool EvalEmitter::emitBitOrSint16(SourceInfo L) {
4410 if (!isActive()) return true;
4411 CurrentSource = L;
4412 return BitOr<PT_Sint16>(S);
4413}
4414bool EvalEmitter::emitBitOrUint16(SourceInfo L) {
4415 if (!isActive()) return true;
4416 CurrentSource = L;
4417 return BitOr<PT_Uint16>(S);
4418}
4419bool EvalEmitter::emitBitOrSint32(SourceInfo L) {
4420 if (!isActive()) return true;
4421 CurrentSource = L;
4422 return BitOr<PT_Sint32>(S);
4423}
4424bool EvalEmitter::emitBitOrUint32(SourceInfo L) {
4425 if (!isActive()) return true;
4426 CurrentSource = L;
4427 return BitOr<PT_Uint32>(S);
4428}
4429bool EvalEmitter::emitBitOrSint64(SourceInfo L) {
4430 if (!isActive()) return true;
4431 CurrentSource = L;
4432 return BitOr<PT_Sint64>(S);
4433}
4434bool EvalEmitter::emitBitOrUint64(SourceInfo L) {
4435 if (!isActive()) return true;
4436 CurrentSource = L;
4437 return BitOr<PT_Uint64>(S);
4438}
4439bool EvalEmitter::emitBitOrIntAP(SourceInfo L) {
4440 if (!isActive()) return true;
4441 CurrentSource = L;
4442 return BitOr<PT_IntAP>(S);
4443}
4444bool EvalEmitter::emitBitOrIntAPS(SourceInfo L) {
4445 if (!isActive()) return true;
4446 CurrentSource = L;
4447 return BitOr<PT_IntAPS>(S);
4448}
4449bool EvalEmitter::emitBitOrFixedPoint(SourceInfo L) {
4450 if (!isActive()) return true;
4451 CurrentSource = L;
4452 return BitOr<PT_FixedPoint>(S);
4453}
4454#endif
4455#ifdef GET_OPCODE_NAMES
4456OP_BitXorSint8,
4457OP_BitXorUint8,
4458OP_BitXorSint16,
4459OP_BitXorUint16,
4460OP_BitXorSint32,
4461OP_BitXorUint32,
4462OP_BitXorSint64,
4463OP_BitXorUint64,
4464OP_BitXorIntAP,
4465OP_BitXorIntAPS,
4466OP_BitXorFixedPoint,
4467#endif
4468#ifdef GET_INTERPFN_LIST
4469&Interp_BitXorSint8,
4470&Interp_BitXorUint8,
4471&Interp_BitXorSint16,
4472&Interp_BitXorUint16,
4473&Interp_BitXorSint32,
4474&Interp_BitXorUint32,
4475&Interp_BitXorSint64,
4476&Interp_BitXorUint64,
4477&Interp_BitXorIntAP,
4478&Interp_BitXorIntAPS,
4479&Interp_BitXorFixedPoint,
4480#endif
4481#ifdef GET_INTERPFN_DISPATCHERS
4482PRESERVE_NONE
4483static bool Interp_BitXorSint8(InterpState &S) {
4484 if (!BitXor<PT_Sint8>(S)) return false;
4485#if USE_TAILCALLS
4486 MUSTTAIL return InterpNext(S);
4487#else
4488 return true;
4489#endif
4490}
4491PRESERVE_NONE
4492static bool Interp_BitXorUint8(InterpState &S) {
4493 if (!BitXor<PT_Uint8>(S)) return false;
4494#if USE_TAILCALLS
4495 MUSTTAIL return InterpNext(S);
4496#else
4497 return true;
4498#endif
4499}
4500PRESERVE_NONE
4501static bool Interp_BitXorSint16(InterpState &S) {
4502 if (!BitXor<PT_Sint16>(S)) return false;
4503#if USE_TAILCALLS
4504 MUSTTAIL return InterpNext(S);
4505#else
4506 return true;
4507#endif
4508}
4509PRESERVE_NONE
4510static bool Interp_BitXorUint16(InterpState &S) {
4511 if (!BitXor<PT_Uint16>(S)) return false;
4512#if USE_TAILCALLS
4513 MUSTTAIL return InterpNext(S);
4514#else
4515 return true;
4516#endif
4517}
4518PRESERVE_NONE
4519static bool Interp_BitXorSint32(InterpState &S) {
4520 if (!BitXor<PT_Sint32>(S)) return false;
4521#if USE_TAILCALLS
4522 MUSTTAIL return InterpNext(S);
4523#else
4524 return true;
4525#endif
4526}
4527PRESERVE_NONE
4528static bool Interp_BitXorUint32(InterpState &S) {
4529 if (!BitXor<PT_Uint32>(S)) return false;
4530#if USE_TAILCALLS
4531 MUSTTAIL return InterpNext(S);
4532#else
4533 return true;
4534#endif
4535}
4536PRESERVE_NONE
4537static bool Interp_BitXorSint64(InterpState &S) {
4538 if (!BitXor<PT_Sint64>(S)) return false;
4539#if USE_TAILCALLS
4540 MUSTTAIL return InterpNext(S);
4541#else
4542 return true;
4543#endif
4544}
4545PRESERVE_NONE
4546static bool Interp_BitXorUint64(InterpState &S) {
4547 if (!BitXor<PT_Uint64>(S)) return false;
4548#if USE_TAILCALLS
4549 MUSTTAIL return InterpNext(S);
4550#else
4551 return true;
4552#endif
4553}
4554PRESERVE_NONE
4555static bool Interp_BitXorIntAP(InterpState &S) {
4556 if (!BitXor<PT_IntAP>(S)) return false;
4557#if USE_TAILCALLS
4558 MUSTTAIL return InterpNext(S);
4559#else
4560 return true;
4561#endif
4562}
4563PRESERVE_NONE
4564static bool Interp_BitXorIntAPS(InterpState &S) {
4565 if (!BitXor<PT_IntAPS>(S)) return false;
4566#if USE_TAILCALLS
4567 MUSTTAIL return InterpNext(S);
4568#else
4569 return true;
4570#endif
4571}
4572PRESERVE_NONE
4573static bool Interp_BitXorFixedPoint(InterpState &S) {
4574 if (!BitXor<PT_FixedPoint>(S)) return false;
4575#if USE_TAILCALLS
4576 MUSTTAIL return InterpNext(S);
4577#else
4578 return true;
4579#endif
4580}
4581#endif
4582#ifdef GET_DISASM
4583case OP_BitXorSint8:
4584 Text.Op = PrintName("BitXorSint8");
4585 break;
4586case OP_BitXorUint8:
4587 Text.Op = PrintName("BitXorUint8");
4588 break;
4589case OP_BitXorSint16:
4590 Text.Op = PrintName("BitXorSint16");
4591 break;
4592case OP_BitXorUint16:
4593 Text.Op = PrintName("BitXorUint16");
4594 break;
4595case OP_BitXorSint32:
4596 Text.Op = PrintName("BitXorSint32");
4597 break;
4598case OP_BitXorUint32:
4599 Text.Op = PrintName("BitXorUint32");
4600 break;
4601case OP_BitXorSint64:
4602 Text.Op = PrintName("BitXorSint64");
4603 break;
4604case OP_BitXorUint64:
4605 Text.Op = PrintName("BitXorUint64");
4606 break;
4607case OP_BitXorIntAP:
4608 Text.Op = PrintName("BitXorIntAP");
4609 break;
4610case OP_BitXorIntAPS:
4611 Text.Op = PrintName("BitXorIntAPS");
4612 break;
4613case OP_BitXorFixedPoint:
4614 Text.Op = PrintName("BitXorFixedPoint");
4615 break;
4616#endif
4617#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4618bool emitBitXorSint8(SourceInfo);
4619bool emitBitXorUint8(SourceInfo);
4620bool emitBitXorSint16(SourceInfo);
4621bool emitBitXorUint16(SourceInfo);
4622bool emitBitXorSint32(SourceInfo);
4623bool emitBitXorUint32(SourceInfo);
4624bool emitBitXorSint64(SourceInfo);
4625bool emitBitXorUint64(SourceInfo);
4626bool emitBitXorIntAP(SourceInfo);
4627bool emitBitXorIntAPS(SourceInfo);
4628bool emitBitXorFixedPoint(SourceInfo);
4629#endif
4630#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4631[[nodiscard]] bool emitBitXor(PrimType, SourceInfo I);
4632#endif
4633#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
4634bool
4635#if defined(GET_EVAL_IMPL)
4636EvalEmitter
4637#else
4638ByteCodeEmitter
4639#endif
4640::emitBitXor(PrimType T0, SourceInfo I) {
4641 switch (T0) {
4642 case PT_Sint8:
4643 return emitBitXorSint8(I);
4644 case PT_Uint8:
4645 return emitBitXorUint8(I);
4646 case PT_Sint16:
4647 return emitBitXorSint16(I);
4648 case PT_Uint16:
4649 return emitBitXorUint16(I);
4650 case PT_Sint32:
4651 return emitBitXorSint32(I);
4652 case PT_Uint32:
4653 return emitBitXorUint32(I);
4654 case PT_Sint64:
4655 return emitBitXorSint64(I);
4656 case PT_Uint64:
4657 return emitBitXorUint64(I);
4658 case PT_IntAP:
4659 return emitBitXorIntAP(I);
4660 case PT_IntAPS:
4661 return emitBitXorIntAPS(I);
4662 case PT_FixedPoint:
4663 return emitBitXorFixedPoint(I);
4664 default: llvm_unreachable("invalid type: emitBitXor");
4665 }
4666 llvm_unreachable("invalid enum value");
4667}
4668#endif
4669#ifdef GET_LINK_IMPL
4670bool ByteCodeEmitter::emitBitXorSint8(SourceInfo L) {
4671 return emitOp<>(OP_BitXorSint8, L);
4672}
4673bool ByteCodeEmitter::emitBitXorUint8(SourceInfo L) {
4674 return emitOp<>(OP_BitXorUint8, L);
4675}
4676bool ByteCodeEmitter::emitBitXorSint16(SourceInfo L) {
4677 return emitOp<>(OP_BitXorSint16, L);
4678}
4679bool ByteCodeEmitter::emitBitXorUint16(SourceInfo L) {
4680 return emitOp<>(OP_BitXorUint16, L);
4681}
4682bool ByteCodeEmitter::emitBitXorSint32(SourceInfo L) {
4683 return emitOp<>(OP_BitXorSint32, L);
4684}
4685bool ByteCodeEmitter::emitBitXorUint32(SourceInfo L) {
4686 return emitOp<>(OP_BitXorUint32, L);
4687}
4688bool ByteCodeEmitter::emitBitXorSint64(SourceInfo L) {
4689 return emitOp<>(OP_BitXorSint64, L);
4690}
4691bool ByteCodeEmitter::emitBitXorUint64(SourceInfo L) {
4692 return emitOp<>(OP_BitXorUint64, L);
4693}
4694bool ByteCodeEmitter::emitBitXorIntAP(SourceInfo L) {
4695 return emitOp<>(OP_BitXorIntAP, L);
4696}
4697bool ByteCodeEmitter::emitBitXorIntAPS(SourceInfo L) {
4698 return emitOp<>(OP_BitXorIntAPS, L);
4699}
4700bool ByteCodeEmitter::emitBitXorFixedPoint(SourceInfo L) {
4701 return emitOp<>(OP_BitXorFixedPoint, L);
4702}
4703#endif
4704#ifdef GET_EVAL_IMPL
4705bool EvalEmitter::emitBitXorSint8(SourceInfo L) {
4706 if (!isActive()) return true;
4707 CurrentSource = L;
4708 return BitXor<PT_Sint8>(S);
4709}
4710bool EvalEmitter::emitBitXorUint8(SourceInfo L) {
4711 if (!isActive()) return true;
4712 CurrentSource = L;
4713 return BitXor<PT_Uint8>(S);
4714}
4715bool EvalEmitter::emitBitXorSint16(SourceInfo L) {
4716 if (!isActive()) return true;
4717 CurrentSource = L;
4718 return BitXor<PT_Sint16>(S);
4719}
4720bool EvalEmitter::emitBitXorUint16(SourceInfo L) {
4721 if (!isActive()) return true;
4722 CurrentSource = L;
4723 return BitXor<PT_Uint16>(S);
4724}
4725bool EvalEmitter::emitBitXorSint32(SourceInfo L) {
4726 if (!isActive()) return true;
4727 CurrentSource = L;
4728 return BitXor<PT_Sint32>(S);
4729}
4730bool EvalEmitter::emitBitXorUint32(SourceInfo L) {
4731 if (!isActive()) return true;
4732 CurrentSource = L;
4733 return BitXor<PT_Uint32>(S);
4734}
4735bool EvalEmitter::emitBitXorSint64(SourceInfo L) {
4736 if (!isActive()) return true;
4737 CurrentSource = L;
4738 return BitXor<PT_Sint64>(S);
4739}
4740bool EvalEmitter::emitBitXorUint64(SourceInfo L) {
4741 if (!isActive()) return true;
4742 CurrentSource = L;
4743 return BitXor<PT_Uint64>(S);
4744}
4745bool EvalEmitter::emitBitXorIntAP(SourceInfo L) {
4746 if (!isActive()) return true;
4747 CurrentSource = L;
4748 return BitXor<PT_IntAP>(S);
4749}
4750bool EvalEmitter::emitBitXorIntAPS(SourceInfo L) {
4751 if (!isActive()) return true;
4752 CurrentSource = L;
4753 return BitXor<PT_IntAPS>(S);
4754}
4755bool EvalEmitter::emitBitXorFixedPoint(SourceInfo L) {
4756 if (!isActive()) return true;
4757 CurrentSource = L;
4758 return BitXor<PT_FixedPoint>(S);
4759}
4760#endif
4761#ifdef GET_OPCODE_NAMES
4762OP_CMP3Sint8,
4763OP_CMP3Uint8,
4764OP_CMP3Sint16,
4765OP_CMP3Uint16,
4766OP_CMP3Sint32,
4767OP_CMP3Uint32,
4768OP_CMP3Sint64,
4769OP_CMP3Uint64,
4770OP_CMP3IntAP,
4771OP_CMP3IntAPS,
4772OP_CMP3Bool,
4773OP_CMP3FixedPoint,
4774OP_CMP3Ptr,
4775OP_CMP3Float,
4776#endif
4777#ifdef GET_INTERPFN_LIST
4778&Interp_CMP3Sint8,
4779&Interp_CMP3Uint8,
4780&Interp_CMP3Sint16,
4781&Interp_CMP3Uint16,
4782&Interp_CMP3Sint32,
4783&Interp_CMP3Uint32,
4784&Interp_CMP3Sint64,
4785&Interp_CMP3Uint64,
4786&Interp_CMP3IntAP,
4787&Interp_CMP3IntAPS,
4788&Interp_CMP3Bool,
4789&Interp_CMP3FixedPoint,
4790&Interp_CMP3Ptr,
4791&Interp_CMP3Float,
4792#endif
4793#ifdef GET_INTERPFN_DISPATCHERS
4794PRESERVE_NONE
4795static bool Interp_CMP3Sint8(InterpState &S) {
4796 {
4797 CodePtr OpPC = S.PC;
4798 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4799 if (!CMP3<PT_Sint8>(S, OpPC, V0)) return false;
4800 }
4801#if USE_TAILCALLS
4802 MUSTTAIL return InterpNext(S);
4803#else
4804 return true;
4805#endif
4806}
4807PRESERVE_NONE
4808static bool Interp_CMP3Uint8(InterpState &S) {
4809 {
4810 CodePtr OpPC = S.PC;
4811 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4812 if (!CMP3<PT_Uint8>(S, OpPC, V0)) return false;
4813 }
4814#if USE_TAILCALLS
4815 MUSTTAIL return InterpNext(S);
4816#else
4817 return true;
4818#endif
4819}
4820PRESERVE_NONE
4821static bool Interp_CMP3Sint16(InterpState &S) {
4822 {
4823 CodePtr OpPC = S.PC;
4824 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4825 if (!CMP3<PT_Sint16>(S, OpPC, V0)) return false;
4826 }
4827#if USE_TAILCALLS
4828 MUSTTAIL return InterpNext(S);
4829#else
4830 return true;
4831#endif
4832}
4833PRESERVE_NONE
4834static bool Interp_CMP3Uint16(InterpState &S) {
4835 {
4836 CodePtr OpPC = S.PC;
4837 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4838 if (!CMP3<PT_Uint16>(S, OpPC, V0)) return false;
4839 }
4840#if USE_TAILCALLS
4841 MUSTTAIL return InterpNext(S);
4842#else
4843 return true;
4844#endif
4845}
4846PRESERVE_NONE
4847static bool Interp_CMP3Sint32(InterpState &S) {
4848 {
4849 CodePtr OpPC = S.PC;
4850 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4851 if (!CMP3<PT_Sint32>(S, OpPC, V0)) return false;
4852 }
4853#if USE_TAILCALLS
4854 MUSTTAIL return InterpNext(S);
4855#else
4856 return true;
4857#endif
4858}
4859PRESERVE_NONE
4860static bool Interp_CMP3Uint32(InterpState &S) {
4861 {
4862 CodePtr OpPC = S.PC;
4863 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4864 if (!CMP3<PT_Uint32>(S, OpPC, V0)) return false;
4865 }
4866#if USE_TAILCALLS
4867 MUSTTAIL return InterpNext(S);
4868#else
4869 return true;
4870#endif
4871}
4872PRESERVE_NONE
4873static bool Interp_CMP3Sint64(InterpState &S) {
4874 {
4875 CodePtr OpPC = S.PC;
4876 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4877 if (!CMP3<PT_Sint64>(S, OpPC, V0)) return false;
4878 }
4879#if USE_TAILCALLS
4880 MUSTTAIL return InterpNext(S);
4881#else
4882 return true;
4883#endif
4884}
4885PRESERVE_NONE
4886static bool Interp_CMP3Uint64(InterpState &S) {
4887 {
4888 CodePtr OpPC = S.PC;
4889 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4890 if (!CMP3<PT_Uint64>(S, OpPC, V0)) return false;
4891 }
4892#if USE_TAILCALLS
4893 MUSTTAIL return InterpNext(S);
4894#else
4895 return true;
4896#endif
4897}
4898PRESERVE_NONE
4899static bool Interp_CMP3IntAP(InterpState &S) {
4900 {
4901 CodePtr OpPC = S.PC;
4902 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4903 if (!CMP3<PT_IntAP>(S, OpPC, V0)) return false;
4904 }
4905#if USE_TAILCALLS
4906 MUSTTAIL return InterpNext(S);
4907#else
4908 return true;
4909#endif
4910}
4911PRESERVE_NONE
4912static bool Interp_CMP3IntAPS(InterpState &S) {
4913 {
4914 CodePtr OpPC = S.PC;
4915 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4916 if (!CMP3<PT_IntAPS>(S, OpPC, V0)) return false;
4917 }
4918#if USE_TAILCALLS
4919 MUSTTAIL return InterpNext(S);
4920#else
4921 return true;
4922#endif
4923}
4924PRESERVE_NONE
4925static bool Interp_CMP3Bool(InterpState &S) {
4926 {
4927 CodePtr OpPC = S.PC;
4928 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4929 if (!CMP3<PT_Bool>(S, OpPC, V0)) return false;
4930 }
4931#if USE_TAILCALLS
4932 MUSTTAIL return InterpNext(S);
4933#else
4934 return true;
4935#endif
4936}
4937PRESERVE_NONE
4938static bool Interp_CMP3FixedPoint(InterpState &S) {
4939 {
4940 CodePtr OpPC = S.PC;
4941 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4942 if (!CMP3<PT_FixedPoint>(S, OpPC, V0)) return false;
4943 }
4944#if USE_TAILCALLS
4945 MUSTTAIL return InterpNext(S);
4946#else
4947 return true;
4948#endif
4949}
4950PRESERVE_NONE
4951static bool Interp_CMP3Ptr(InterpState &S) {
4952 {
4953 CodePtr OpPC = S.PC;
4954 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4955 if (!CMP3<PT_Ptr>(S, OpPC, V0)) return false;
4956 }
4957#if USE_TAILCALLS
4958 MUSTTAIL return InterpNext(S);
4959#else
4960 return true;
4961#endif
4962}
4963PRESERVE_NONE
4964static bool Interp_CMP3Float(InterpState &S) {
4965 {
4966 CodePtr OpPC = S.PC;
4967 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4968 if (!CMP3<PT_Float>(S, OpPC, V0)) return false;
4969 }
4970#if USE_TAILCALLS
4971 MUSTTAIL return InterpNext(S);
4972#else
4973 return true;
4974#endif
4975}
4976#endif
4977#ifdef GET_DISASM
4978case OP_CMP3Sint8:
4979 Text.Op = PrintName("CMP3Sint8");
4980 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
4981 break;
4982case OP_CMP3Uint8:
4983 Text.Op = PrintName("CMP3Uint8");
4984 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
4985 break;
4986case OP_CMP3Sint16:
4987 Text.Op = PrintName("CMP3Sint16");
4988 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
4989 break;
4990case OP_CMP3Uint16:
4991 Text.Op = PrintName("CMP3Uint16");
4992 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
4993 break;
4994case OP_CMP3Sint32:
4995 Text.Op = PrintName("CMP3Sint32");
4996 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
4997 break;
4998case OP_CMP3Uint32:
4999 Text.Op = PrintName("CMP3Uint32");
5000 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5001 break;
5002case OP_CMP3Sint64:
5003 Text.Op = PrintName("CMP3Sint64");
5004 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5005 break;
5006case OP_CMP3Uint64:
5007 Text.Op = PrintName("CMP3Uint64");
5008 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5009 break;
5010case OP_CMP3IntAP:
5011 Text.Op = PrintName("CMP3IntAP");
5012 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5013 break;
5014case OP_CMP3IntAPS:
5015 Text.Op = PrintName("CMP3IntAPS");
5016 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5017 break;
5018case OP_CMP3Bool:
5019 Text.Op = PrintName("CMP3Bool");
5020 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5021 break;
5022case OP_CMP3FixedPoint:
5023 Text.Op = PrintName("CMP3FixedPoint");
5024 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5025 break;
5026case OP_CMP3Ptr:
5027 Text.Op = PrintName("CMP3Ptr");
5028 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5029 break;
5030case OP_CMP3Float:
5031 Text.Op = PrintName("CMP3Float");
5032 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5033 break;
5034#endif
5035#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5036bool emitCMP3Sint8( const ComparisonCategoryInfo * , SourceInfo);
5037bool emitCMP3Uint8( const ComparisonCategoryInfo * , SourceInfo);
5038bool emitCMP3Sint16( const ComparisonCategoryInfo * , SourceInfo);
5039bool emitCMP3Uint16( const ComparisonCategoryInfo * , SourceInfo);
5040bool emitCMP3Sint32( const ComparisonCategoryInfo * , SourceInfo);
5041bool emitCMP3Uint32( const ComparisonCategoryInfo * , SourceInfo);
5042bool emitCMP3Sint64( const ComparisonCategoryInfo * , SourceInfo);
5043bool emitCMP3Uint64( const ComparisonCategoryInfo * , SourceInfo);
5044bool emitCMP3IntAP( const ComparisonCategoryInfo * , SourceInfo);
5045bool emitCMP3IntAPS( const ComparisonCategoryInfo * , SourceInfo);
5046bool emitCMP3Bool( const ComparisonCategoryInfo * , SourceInfo);
5047bool emitCMP3FixedPoint( const ComparisonCategoryInfo * , SourceInfo);
5048bool emitCMP3Ptr( const ComparisonCategoryInfo * , SourceInfo);
5049bool emitCMP3Float( const ComparisonCategoryInfo * , SourceInfo);
5050#endif
5051#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5052[[nodiscard]] bool emitCMP3(PrimType, const ComparisonCategoryInfo *, SourceInfo I);
5053#endif
5054#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
5055bool
5056#if defined(GET_EVAL_IMPL)
5057EvalEmitter
5058#else
5059ByteCodeEmitter
5060#endif
5061::emitCMP3(PrimType T0, const ComparisonCategoryInfo * A0, SourceInfo I) {
5062 switch (T0) {
5063 case PT_Sint8:
5064 return emitCMP3Sint8(A0, I);
5065 case PT_Uint8:
5066 return emitCMP3Uint8(A0, I);
5067 case PT_Sint16:
5068 return emitCMP3Sint16(A0, I);
5069 case PT_Uint16:
5070 return emitCMP3Uint16(A0, I);
5071 case PT_Sint32:
5072 return emitCMP3Sint32(A0, I);
5073 case PT_Uint32:
5074 return emitCMP3Uint32(A0, I);
5075 case PT_Sint64:
5076 return emitCMP3Sint64(A0, I);
5077 case PT_Uint64:
5078 return emitCMP3Uint64(A0, I);
5079 case PT_IntAP:
5080 return emitCMP3IntAP(A0, I);
5081 case PT_IntAPS:
5082 return emitCMP3IntAPS(A0, I);
5083 case PT_Bool:
5084 return emitCMP3Bool(A0, I);
5085 case PT_FixedPoint:
5086 return emitCMP3FixedPoint(A0, I);
5087 case PT_Ptr:
5088 return emitCMP3Ptr(A0, I);
5089 case PT_Float:
5090 return emitCMP3Float(A0, I);
5091 default: llvm_unreachable("invalid type: emitCMP3");
5092 }
5093 llvm_unreachable("invalid enum value");
5094}
5095#endif
5096#ifdef GET_LINK_IMPL
5097bool ByteCodeEmitter::emitCMP3Sint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
5098 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint8, A0, L);
5099}
5100bool ByteCodeEmitter::emitCMP3Uint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
5101 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint8, A0, L);
5102}
5103bool ByteCodeEmitter::emitCMP3Sint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
5104 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint16, A0, L);
5105}
5106bool ByteCodeEmitter::emitCMP3Uint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
5107 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint16, A0, L);
5108}
5109bool ByteCodeEmitter::emitCMP3Sint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
5110 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint32, A0, L);
5111}
5112bool ByteCodeEmitter::emitCMP3Uint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
5113 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint32, A0, L);
5114}
5115bool ByteCodeEmitter::emitCMP3Sint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
5116 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint64, A0, L);
5117}
5118bool ByteCodeEmitter::emitCMP3Uint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
5119 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint64, A0, L);
5120}
5121bool ByteCodeEmitter::emitCMP3IntAP( const ComparisonCategoryInfo * A0, SourceInfo L) {
5122 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3IntAP, A0, L);
5123}
5124bool ByteCodeEmitter::emitCMP3IntAPS( const ComparisonCategoryInfo * A0, SourceInfo L) {
5125 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3IntAPS, A0, L);
5126}
5127bool ByteCodeEmitter::emitCMP3Bool( const ComparisonCategoryInfo * A0, SourceInfo L) {
5128 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Bool, A0, L);
5129}
5130bool ByteCodeEmitter::emitCMP3FixedPoint( const ComparisonCategoryInfo * A0, SourceInfo L) {
5131 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3FixedPoint, A0, L);
5132}
5133bool ByteCodeEmitter::emitCMP3Ptr( const ComparisonCategoryInfo * A0, SourceInfo L) {
5134 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Ptr, A0, L);
5135}
5136bool ByteCodeEmitter::emitCMP3Float( const ComparisonCategoryInfo * A0, SourceInfo L) {
5137 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Float, A0, L);
5138}
5139#endif
5140#ifdef GET_EVAL_IMPL
5141bool EvalEmitter::emitCMP3Sint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
5142 if (!isActive()) return true;
5143 CurrentSource = L;
5144 return CMP3<PT_Sint8>(S, CodePtr(), A0);
5145}
5146bool EvalEmitter::emitCMP3Uint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
5147 if (!isActive()) return true;
5148 CurrentSource = L;
5149 return CMP3<PT_Uint8>(S, CodePtr(), A0);
5150}
5151bool EvalEmitter::emitCMP3Sint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
5152 if (!isActive()) return true;
5153 CurrentSource = L;
5154 return CMP3<PT_Sint16>(S, CodePtr(), A0);
5155}
5156bool EvalEmitter::emitCMP3Uint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
5157 if (!isActive()) return true;
5158 CurrentSource = L;
5159 return CMP3<PT_Uint16>(S, CodePtr(), A0);
5160}
5161bool EvalEmitter::emitCMP3Sint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
5162 if (!isActive()) return true;
5163 CurrentSource = L;
5164 return CMP3<PT_Sint32>(S, CodePtr(), A0);
5165}
5166bool EvalEmitter::emitCMP3Uint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
5167 if (!isActive()) return true;
5168 CurrentSource = L;
5169 return CMP3<PT_Uint32>(S, CodePtr(), A0);
5170}
5171bool EvalEmitter::emitCMP3Sint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
5172 if (!isActive()) return true;
5173 CurrentSource = L;
5174 return CMP3<PT_Sint64>(S, CodePtr(), A0);
5175}
5176bool EvalEmitter::emitCMP3Uint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
5177 if (!isActive()) return true;
5178 CurrentSource = L;
5179 return CMP3<PT_Uint64>(S, CodePtr(), A0);
5180}
5181bool EvalEmitter::emitCMP3IntAP( const ComparisonCategoryInfo * A0, SourceInfo L) {
5182 if (!isActive()) return true;
5183 CurrentSource = L;
5184 return CMP3<PT_IntAP>(S, CodePtr(), A0);
5185}
5186bool EvalEmitter::emitCMP3IntAPS( const ComparisonCategoryInfo * A0, SourceInfo L) {
5187 if (!isActive()) return true;
5188 CurrentSource = L;
5189 return CMP3<PT_IntAPS>(S, CodePtr(), A0);
5190}
5191bool EvalEmitter::emitCMP3Bool( const ComparisonCategoryInfo * A0, SourceInfo L) {
5192 if (!isActive()) return true;
5193 CurrentSource = L;
5194 return CMP3<PT_Bool>(S, CodePtr(), A0);
5195}
5196bool EvalEmitter::emitCMP3FixedPoint( const ComparisonCategoryInfo * A0, SourceInfo L) {
5197 if (!isActive()) return true;
5198 CurrentSource = L;
5199 return CMP3<PT_FixedPoint>(S, CodePtr(), A0);
5200}
5201bool EvalEmitter::emitCMP3Ptr( const ComparisonCategoryInfo * A0, SourceInfo L) {
5202 if (!isActive()) return true;
5203 CurrentSource = L;
5204 return CMP3<PT_Ptr>(S, CodePtr(), A0);
5205}
5206bool EvalEmitter::emitCMP3Float( const ComparisonCategoryInfo * A0, SourceInfo L) {
5207 if (!isActive()) return true;
5208 CurrentSource = L;
5209 return CMP3<PT_Float>(S, CodePtr(), A0);
5210}
5211#endif
5212#ifdef GET_OPCODE_NAMES
5213OP_Call,
5214#endif
5215#ifdef GET_INTERPFN_LIST
5216&Interp_Call,
5217#endif
5218#ifdef GET_INTERPFN_DISPATCHERS
5219PRESERVE_NONE
5220static bool Interp_Call(InterpState &S) {
5221 {
5222 CodePtr OpPC = S.PC;
5223 const auto V0 = ReadArg<const Function *>(S, S.PC);
5224 const auto V1 = ReadArg<uint32_t>(S, S.PC);
5225 if (!Call(S, OpPC, V0, V1)) return false;
5226 }
5227#if USE_TAILCALLS
5228 MUSTTAIL return InterpNext(S);
5229#else
5230 return true;
5231#endif
5232}
5233#endif
5234#ifdef GET_DISASM
5235case OP_Call:
5236 Text.Op = PrintName("Call");
5237 Text.Args.push_back(printArg<const Function *>(PC));
5238 Text.Args.push_back(printArg<uint32_t>(PC));
5239 break;
5240#endif
5241#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5242bool emitCall( const Function * , uint32_t , SourceInfo);
5243#endif
5244#ifdef GET_LINK_IMPL
5245bool ByteCodeEmitter::emitCall( const Function * A0, uint32_t A1, SourceInfo L) {
5246 return emitOp<const Function *, uint32_t>(OP_Call, A0, A1, L);
5247}
5248#endif
5249#ifdef GET_EVAL_IMPL
5250bool EvalEmitter::emitCall( const Function * A0, uint32_t A1, SourceInfo L) {
5251 if (!isActive()) return true;
5252 CurrentSource = L;
5253 return Call(S, CodePtr(), A0, A1);
5254}
5255#endif
5256#ifdef GET_OPCODE_NAMES
5257OP_CallBI,
5258#endif
5259#ifdef GET_INTERPFN_LIST
5260&Interp_CallBI,
5261#endif
5262#ifdef GET_INTERPFN_DISPATCHERS
5263PRESERVE_NONE
5264static bool Interp_CallBI(InterpState &S) {
5265 {
5266 CodePtr OpPC = S.PC;
5267 const auto V0 = ReadArg<const CallExpr *>(S, S.PC);
5268 const auto V1 = ReadArg<uint32_t>(S, S.PC);
5269 if (!CallBI(S, OpPC, V0, V1)) return false;
5270 }
5271#if USE_TAILCALLS
5272 MUSTTAIL return InterpNext(S);
5273#else
5274 return true;
5275#endif
5276}
5277#endif
5278#ifdef GET_DISASM
5279case OP_CallBI:
5280 Text.Op = PrintName("CallBI");
5281 Text.Args.push_back(printArg<const CallExpr *>(PC));
5282 Text.Args.push_back(printArg<uint32_t>(PC));
5283 break;
5284#endif
5285#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5286bool emitCallBI( const CallExpr * , uint32_t , SourceInfo);
5287#endif
5288#ifdef GET_LINK_IMPL
5289bool ByteCodeEmitter::emitCallBI( const CallExpr * A0, uint32_t A1, SourceInfo L) {
5290 return emitOp<const CallExpr *, uint32_t>(OP_CallBI, A0, A1, L);
5291}
5292#endif
5293#ifdef GET_EVAL_IMPL
5294bool EvalEmitter::emitCallBI( const CallExpr * A0, uint32_t A1, SourceInfo L) {
5295 if (!isActive()) return true;
5296 CurrentSource = L;
5297 return CallBI(S, CodePtr(), A0, A1);
5298}
5299#endif
5300#ifdef GET_OPCODE_NAMES
5301OP_CallPtr,
5302#endif
5303#ifdef GET_INTERPFN_LIST
5304&Interp_CallPtr,
5305#endif
5306#ifdef GET_INTERPFN_DISPATCHERS
5307PRESERVE_NONE
5308static bool Interp_CallPtr(InterpState &S) {
5309 {
5310 CodePtr OpPC = S.PC;
5311 const auto V0 = ReadArg<uint32_t>(S, S.PC);
5312 const auto V1 = ReadArg<const CallExpr *>(S, S.PC);
5313 if (!CallPtr(S, OpPC, V0, V1)) return false;
5314 }
5315#if USE_TAILCALLS
5316 MUSTTAIL return InterpNext(S);
5317#else
5318 return true;
5319#endif
5320}
5321#endif
5322#ifdef GET_DISASM
5323case OP_CallPtr:
5324 Text.Op = PrintName("CallPtr");
5325 Text.Args.push_back(printArg<uint32_t>(PC));
5326 Text.Args.push_back(printArg<const CallExpr *>(PC));
5327 break;
5328#endif
5329#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5330bool emitCallPtr( uint32_t , const CallExpr * , SourceInfo);
5331#endif
5332#ifdef GET_LINK_IMPL
5333bool ByteCodeEmitter::emitCallPtr( uint32_t A0, const CallExpr * A1, SourceInfo L) {
5334 return emitOp<uint32_t, const CallExpr *>(OP_CallPtr, A0, A1, L);
5335}
5336#endif
5337#ifdef GET_EVAL_IMPL
5338bool EvalEmitter::emitCallPtr( uint32_t A0, const CallExpr * A1, SourceInfo L) {
5339 if (!isActive()) return true;
5340 CurrentSource = L;
5341 return CallPtr(S, CodePtr(), A0, A1);
5342}
5343#endif
5344#ifdef GET_OPCODE_NAMES
5345OP_CallVar,
5346#endif
5347#ifdef GET_INTERPFN_LIST
5348&Interp_CallVar,
5349#endif
5350#ifdef GET_INTERPFN_DISPATCHERS
5351PRESERVE_NONE
5352static bool Interp_CallVar(InterpState &S) {
5353 {
5354 CodePtr OpPC = S.PC;
5355 const auto V0 = ReadArg<const Function *>(S, S.PC);
5356 const auto V1 = ReadArg<uint32_t>(S, S.PC);
5357 if (!CallVar(S, OpPC, V0, V1)) return false;
5358 }
5359#if USE_TAILCALLS
5360 MUSTTAIL return InterpNext(S);
5361#else
5362 return true;
5363#endif
5364}
5365#endif
5366#ifdef GET_DISASM
5367case OP_CallVar:
5368 Text.Op = PrintName("CallVar");
5369 Text.Args.push_back(printArg<const Function *>(PC));
5370 Text.Args.push_back(printArg<uint32_t>(PC));
5371 break;
5372#endif
5373#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5374bool emitCallVar( const Function * , uint32_t , SourceInfo);
5375#endif
5376#ifdef GET_LINK_IMPL
5377bool ByteCodeEmitter::emitCallVar( const Function * A0, uint32_t A1, SourceInfo L) {
5378 return emitOp<const Function *, uint32_t>(OP_CallVar, A0, A1, L);
5379}
5380#endif
5381#ifdef GET_EVAL_IMPL
5382bool EvalEmitter::emitCallVar( const Function * A0, uint32_t A1, SourceInfo L) {
5383 if (!isActive()) return true;
5384 CurrentSource = L;
5385 return CallVar(S, CodePtr(), A0, A1);
5386}
5387#endif
5388#ifdef GET_OPCODE_NAMES
5389OP_CallVirt,
5390#endif
5391#ifdef GET_INTERPFN_LIST
5392&Interp_CallVirt,
5393#endif
5394#ifdef GET_INTERPFN_DISPATCHERS
5395PRESERVE_NONE
5396static bool Interp_CallVirt(InterpState &S) {
5397 {
5398 CodePtr OpPC = S.PC;
5399 const auto V0 = ReadArg<const Function *>(S, S.PC);
5400 const auto V1 = ReadArg<uint32_t>(S, S.PC);
5401 if (!CallVirt(S, OpPC, V0, V1)) return false;
5402 }
5403#if USE_TAILCALLS
5404 MUSTTAIL return InterpNext(S);
5405#else
5406 return true;
5407#endif
5408}
5409#endif
5410#ifdef GET_DISASM
5411case OP_CallVirt:
5412 Text.Op = PrintName("CallVirt");
5413 Text.Args.push_back(printArg<const Function *>(PC));
5414 Text.Args.push_back(printArg<uint32_t>(PC));
5415 break;
5416#endif
5417#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5418bool emitCallVirt( const Function * , uint32_t , SourceInfo);
5419#endif
5420#ifdef GET_LINK_IMPL
5421bool ByteCodeEmitter::emitCallVirt( const Function * A0, uint32_t A1, SourceInfo L) {
5422 return emitOp<const Function *, uint32_t>(OP_CallVirt, A0, A1, L);
5423}
5424#endif
5425#ifdef GET_EVAL_IMPL
5426bool EvalEmitter::emitCallVirt( const Function * A0, uint32_t A1, SourceInfo L) {
5427 if (!isActive()) return true;
5428 CurrentSource = L;
5429 return CallVirt(S, CodePtr(), A0, A1);
5430}
5431#endif
5432#ifdef GET_OPCODE_NAMES
5433OP_CastUint8Uint8,
5434OP_CastUint8Sint8,
5435OP_CastUint8Uint16,
5436OP_CastUint8Sint16,
5437OP_CastUint8Uint32,
5438OP_CastUint8Sint32,
5439OP_CastUint8Uint64,
5440OP_CastUint8Sint64,
5441OP_CastUint8Bool,
5442OP_CastSint8Uint8,
5443OP_CastSint8Sint8,
5444OP_CastSint8Uint16,
5445OP_CastSint8Sint16,
5446OP_CastSint8Uint32,
5447OP_CastSint8Sint32,
5448OP_CastSint8Uint64,
5449OP_CastSint8Sint64,
5450OP_CastSint8Bool,
5451OP_CastUint16Uint8,
5452OP_CastUint16Sint8,
5453OP_CastUint16Uint16,
5454OP_CastUint16Sint16,
5455OP_CastUint16Uint32,
5456OP_CastUint16Sint32,
5457OP_CastUint16Uint64,
5458OP_CastUint16Sint64,
5459OP_CastUint16Bool,
5460OP_CastSint16Uint8,
5461OP_CastSint16Sint8,
5462OP_CastSint16Uint16,
5463OP_CastSint16Sint16,
5464OP_CastSint16Uint32,
5465OP_CastSint16Sint32,
5466OP_CastSint16Uint64,
5467OP_CastSint16Sint64,
5468OP_CastSint16Bool,
5469OP_CastUint32Uint8,
5470OP_CastUint32Sint8,
5471OP_CastUint32Uint16,
5472OP_CastUint32Sint16,
5473OP_CastUint32Uint32,
5474OP_CastUint32Sint32,
5475OP_CastUint32Uint64,
5476OP_CastUint32Sint64,
5477OP_CastUint32Bool,
5478OP_CastSint32Uint8,
5479OP_CastSint32Sint8,
5480OP_CastSint32Uint16,
5481OP_CastSint32Sint16,
5482OP_CastSint32Uint32,
5483OP_CastSint32Sint32,
5484OP_CastSint32Uint64,
5485OP_CastSint32Sint64,
5486OP_CastSint32Bool,
5487OP_CastUint64Uint8,
5488OP_CastUint64Sint8,
5489OP_CastUint64Uint16,
5490OP_CastUint64Sint16,
5491OP_CastUint64Uint32,
5492OP_CastUint64Sint32,
5493OP_CastUint64Uint64,
5494OP_CastUint64Sint64,
5495OP_CastUint64Bool,
5496OP_CastSint64Uint8,
5497OP_CastSint64Sint8,
5498OP_CastSint64Uint16,
5499OP_CastSint64Sint16,
5500OP_CastSint64Uint32,
5501OP_CastSint64Sint32,
5502OP_CastSint64Uint64,
5503OP_CastSint64Sint64,
5504OP_CastSint64Bool,
5505OP_CastBoolUint8,
5506OP_CastBoolSint8,
5507OP_CastBoolUint16,
5508OP_CastBoolSint16,
5509OP_CastBoolUint32,
5510OP_CastBoolSint32,
5511OP_CastBoolUint64,
5512OP_CastBoolSint64,
5513OP_CastBoolBool,
5514OP_CastIntAPUint8,
5515OP_CastIntAPSint8,
5516OP_CastIntAPUint16,
5517OP_CastIntAPSint16,
5518OP_CastIntAPUint32,
5519OP_CastIntAPSint32,
5520OP_CastIntAPUint64,
5521OP_CastIntAPSint64,
5522OP_CastIntAPBool,
5523OP_CastIntAPSUint8,
5524OP_CastIntAPSSint8,
5525OP_CastIntAPSUint16,
5526OP_CastIntAPSSint16,
5527OP_CastIntAPSUint32,
5528OP_CastIntAPSSint32,
5529OP_CastIntAPSUint64,
5530OP_CastIntAPSSint64,
5531OP_CastIntAPSBool,
5532OP_CastFixedPointUint8,
5533OP_CastFixedPointSint8,
5534OP_CastFixedPointUint16,
5535OP_CastFixedPointSint16,
5536OP_CastFixedPointUint32,
5537OP_CastFixedPointSint32,
5538OP_CastFixedPointUint64,
5539OP_CastFixedPointSint64,
5540OP_CastFixedPointBool,
5541#endif
5542#ifdef GET_INTERPFN_LIST
5543&Interp_CastUint8Uint8,
5544&Interp_CastUint8Sint8,
5545&Interp_CastUint8Uint16,
5546&Interp_CastUint8Sint16,
5547&Interp_CastUint8Uint32,
5548&Interp_CastUint8Sint32,
5549&Interp_CastUint8Uint64,
5550&Interp_CastUint8Sint64,
5551&Interp_CastUint8Bool,
5552&Interp_CastSint8Uint8,
5553&Interp_CastSint8Sint8,
5554&Interp_CastSint8Uint16,
5555&Interp_CastSint8Sint16,
5556&Interp_CastSint8Uint32,
5557&Interp_CastSint8Sint32,
5558&Interp_CastSint8Uint64,
5559&Interp_CastSint8Sint64,
5560&Interp_CastSint8Bool,
5561&Interp_CastUint16Uint8,
5562&Interp_CastUint16Sint8,
5563&Interp_CastUint16Uint16,
5564&Interp_CastUint16Sint16,
5565&Interp_CastUint16Uint32,
5566&Interp_CastUint16Sint32,
5567&Interp_CastUint16Uint64,
5568&Interp_CastUint16Sint64,
5569&Interp_CastUint16Bool,
5570&Interp_CastSint16Uint8,
5571&Interp_CastSint16Sint8,
5572&Interp_CastSint16Uint16,
5573&Interp_CastSint16Sint16,
5574&Interp_CastSint16Uint32,
5575&Interp_CastSint16Sint32,
5576&Interp_CastSint16Uint64,
5577&Interp_CastSint16Sint64,
5578&Interp_CastSint16Bool,
5579&Interp_CastUint32Uint8,
5580&Interp_CastUint32Sint8,
5581&Interp_CastUint32Uint16,
5582&Interp_CastUint32Sint16,
5583&Interp_CastUint32Uint32,
5584&Interp_CastUint32Sint32,
5585&Interp_CastUint32Uint64,
5586&Interp_CastUint32Sint64,
5587&Interp_CastUint32Bool,
5588&Interp_CastSint32Uint8,
5589&Interp_CastSint32Sint8,
5590&Interp_CastSint32Uint16,
5591&Interp_CastSint32Sint16,
5592&Interp_CastSint32Uint32,
5593&Interp_CastSint32Sint32,
5594&Interp_CastSint32Uint64,
5595&Interp_CastSint32Sint64,
5596&Interp_CastSint32Bool,
5597&Interp_CastUint64Uint8,
5598&Interp_CastUint64Sint8,
5599&Interp_CastUint64Uint16,
5600&Interp_CastUint64Sint16,
5601&Interp_CastUint64Uint32,
5602&Interp_CastUint64Sint32,
5603&Interp_CastUint64Uint64,
5604&Interp_CastUint64Sint64,
5605&Interp_CastUint64Bool,
5606&Interp_CastSint64Uint8,
5607&Interp_CastSint64Sint8,
5608&Interp_CastSint64Uint16,
5609&Interp_CastSint64Sint16,
5610&Interp_CastSint64Uint32,
5611&Interp_CastSint64Sint32,
5612&Interp_CastSint64Uint64,
5613&Interp_CastSint64Sint64,
5614&Interp_CastSint64Bool,
5615&Interp_CastBoolUint8,
5616&Interp_CastBoolSint8,
5617&Interp_CastBoolUint16,
5618&Interp_CastBoolSint16,
5619&Interp_CastBoolUint32,
5620&Interp_CastBoolSint32,
5621&Interp_CastBoolUint64,
5622&Interp_CastBoolSint64,
5623&Interp_CastBoolBool,
5624&Interp_CastIntAPUint8,
5625&Interp_CastIntAPSint8,
5626&Interp_CastIntAPUint16,
5627&Interp_CastIntAPSint16,
5628&Interp_CastIntAPUint32,
5629&Interp_CastIntAPSint32,
5630&Interp_CastIntAPUint64,
5631&Interp_CastIntAPSint64,
5632&Interp_CastIntAPBool,
5633&Interp_CastIntAPSUint8,
5634&Interp_CastIntAPSSint8,
5635&Interp_CastIntAPSUint16,
5636&Interp_CastIntAPSSint16,
5637&Interp_CastIntAPSUint32,
5638&Interp_CastIntAPSSint32,
5639&Interp_CastIntAPSUint64,
5640&Interp_CastIntAPSSint64,
5641&Interp_CastIntAPSBool,
5642&Interp_CastFixedPointUint8,
5643&Interp_CastFixedPointSint8,
5644&Interp_CastFixedPointUint16,
5645&Interp_CastFixedPointSint16,
5646&Interp_CastFixedPointUint32,
5647&Interp_CastFixedPointSint32,
5648&Interp_CastFixedPointUint64,
5649&Interp_CastFixedPointSint64,
5650&Interp_CastFixedPointBool,
5651#endif
5652#ifdef GET_INTERPFN_DISPATCHERS
5653PRESERVE_NONE
5654static bool Interp_CastUint8Uint8(InterpState &S) {
5655 if (!Cast<PT_Uint8, PT_Uint8>(S, S.PC)) return false;
5656#if USE_TAILCALLS
5657 MUSTTAIL return InterpNext(S);
5658#else
5659 return true;
5660#endif
5661}
5662PRESERVE_NONE
5663static bool Interp_CastUint8Sint8(InterpState &S) {
5664 if (!Cast<PT_Uint8, PT_Sint8>(S, S.PC)) return false;
5665#if USE_TAILCALLS
5666 MUSTTAIL return InterpNext(S);
5667#else
5668 return true;
5669#endif
5670}
5671PRESERVE_NONE
5672static bool Interp_CastUint8Uint16(InterpState &S) {
5673 if (!Cast<PT_Uint8, PT_Uint16>(S, S.PC)) return false;
5674#if USE_TAILCALLS
5675 MUSTTAIL return InterpNext(S);
5676#else
5677 return true;
5678#endif
5679}
5680PRESERVE_NONE
5681static bool Interp_CastUint8Sint16(InterpState &S) {
5682 if (!Cast<PT_Uint8, PT_Sint16>(S, S.PC)) return false;
5683#if USE_TAILCALLS
5684 MUSTTAIL return InterpNext(S);
5685#else
5686 return true;
5687#endif
5688}
5689PRESERVE_NONE
5690static bool Interp_CastUint8Uint32(InterpState &S) {
5691 if (!Cast<PT_Uint8, PT_Uint32>(S, S.PC)) return false;
5692#if USE_TAILCALLS
5693 MUSTTAIL return InterpNext(S);
5694#else
5695 return true;
5696#endif
5697}
5698PRESERVE_NONE
5699static bool Interp_CastUint8Sint32(InterpState &S) {
5700 if (!Cast<PT_Uint8, PT_Sint32>(S, S.PC)) return false;
5701#if USE_TAILCALLS
5702 MUSTTAIL return InterpNext(S);
5703#else
5704 return true;
5705#endif
5706}
5707PRESERVE_NONE
5708static bool Interp_CastUint8Uint64(InterpState &S) {
5709 if (!Cast<PT_Uint8, PT_Uint64>(S, S.PC)) return false;
5710#if USE_TAILCALLS
5711 MUSTTAIL return InterpNext(S);
5712#else
5713 return true;
5714#endif
5715}
5716PRESERVE_NONE
5717static bool Interp_CastUint8Sint64(InterpState &S) {
5718 if (!Cast<PT_Uint8, PT_Sint64>(S, S.PC)) return false;
5719#if USE_TAILCALLS
5720 MUSTTAIL return InterpNext(S);
5721#else
5722 return true;
5723#endif
5724}
5725PRESERVE_NONE
5726static bool Interp_CastUint8Bool(InterpState &S) {
5727 if (!Cast<PT_Uint8, PT_Bool>(S, S.PC)) return false;
5728#if USE_TAILCALLS
5729 MUSTTAIL return InterpNext(S);
5730#else
5731 return true;
5732#endif
5733}
5734PRESERVE_NONE
5735static bool Interp_CastSint8Uint8(InterpState &S) {
5736 if (!Cast<PT_Sint8, PT_Uint8>(S, S.PC)) return false;
5737#if USE_TAILCALLS
5738 MUSTTAIL return InterpNext(S);
5739#else
5740 return true;
5741#endif
5742}
5743PRESERVE_NONE
5744static bool Interp_CastSint8Sint8(InterpState &S) {
5745 if (!Cast<PT_Sint8, PT_Sint8>(S, S.PC)) return false;
5746#if USE_TAILCALLS
5747 MUSTTAIL return InterpNext(S);
5748#else
5749 return true;
5750#endif
5751}
5752PRESERVE_NONE
5753static bool Interp_CastSint8Uint16(InterpState &S) {
5754 if (!Cast<PT_Sint8, PT_Uint16>(S, S.PC)) return false;
5755#if USE_TAILCALLS
5756 MUSTTAIL return InterpNext(S);
5757#else
5758 return true;
5759#endif
5760}
5761PRESERVE_NONE
5762static bool Interp_CastSint8Sint16(InterpState &S) {
5763 if (!Cast<PT_Sint8, PT_Sint16>(S, S.PC)) return false;
5764#if USE_TAILCALLS
5765 MUSTTAIL return InterpNext(S);
5766#else
5767 return true;
5768#endif
5769}
5770PRESERVE_NONE
5771static bool Interp_CastSint8Uint32(InterpState &S) {
5772 if (!Cast<PT_Sint8, PT_Uint32>(S, S.PC)) return false;
5773#if USE_TAILCALLS
5774 MUSTTAIL return InterpNext(S);
5775#else
5776 return true;
5777#endif
5778}
5779PRESERVE_NONE
5780static bool Interp_CastSint8Sint32(InterpState &S) {
5781 if (!Cast<PT_Sint8, PT_Sint32>(S, S.PC)) return false;
5782#if USE_TAILCALLS
5783 MUSTTAIL return InterpNext(S);
5784#else
5785 return true;
5786#endif
5787}
5788PRESERVE_NONE
5789static bool Interp_CastSint8Uint64(InterpState &S) {
5790 if (!Cast<PT_Sint8, PT_Uint64>(S, S.PC)) return false;
5791#if USE_TAILCALLS
5792 MUSTTAIL return InterpNext(S);
5793#else
5794 return true;
5795#endif
5796}
5797PRESERVE_NONE
5798static bool Interp_CastSint8Sint64(InterpState &S) {
5799 if (!Cast<PT_Sint8, PT_Sint64>(S, S.PC)) return false;
5800#if USE_TAILCALLS
5801 MUSTTAIL return InterpNext(S);
5802#else
5803 return true;
5804#endif
5805}
5806PRESERVE_NONE
5807static bool Interp_CastSint8Bool(InterpState &S) {
5808 if (!Cast<PT_Sint8, PT_Bool>(S, S.PC)) return false;
5809#if USE_TAILCALLS
5810 MUSTTAIL return InterpNext(S);
5811#else
5812 return true;
5813#endif
5814}
5815PRESERVE_NONE
5816static bool Interp_CastUint16Uint8(InterpState &S) {
5817 if (!Cast<PT_Uint16, PT_Uint8>(S, S.PC)) return false;
5818#if USE_TAILCALLS
5819 MUSTTAIL return InterpNext(S);
5820#else
5821 return true;
5822#endif
5823}
5824PRESERVE_NONE
5825static bool Interp_CastUint16Sint8(InterpState &S) {
5826 if (!Cast<PT_Uint16, PT_Sint8>(S, S.PC)) return false;
5827#if USE_TAILCALLS
5828 MUSTTAIL return InterpNext(S);
5829#else
5830 return true;
5831#endif
5832}
5833PRESERVE_NONE
5834static bool Interp_CastUint16Uint16(InterpState &S) {
5835 if (!Cast<PT_Uint16, PT_Uint16>(S, S.PC)) return false;
5836#if USE_TAILCALLS
5837 MUSTTAIL return InterpNext(S);
5838#else
5839 return true;
5840#endif
5841}
5842PRESERVE_NONE
5843static bool Interp_CastUint16Sint16(InterpState &S) {
5844 if (!Cast<PT_Uint16, PT_Sint16>(S, S.PC)) return false;
5845#if USE_TAILCALLS
5846 MUSTTAIL return InterpNext(S);
5847#else
5848 return true;
5849#endif
5850}
5851PRESERVE_NONE
5852static bool Interp_CastUint16Uint32(InterpState &S) {
5853 if (!Cast<PT_Uint16, PT_Uint32>(S, S.PC)) return false;
5854#if USE_TAILCALLS
5855 MUSTTAIL return InterpNext(S);
5856#else
5857 return true;
5858#endif
5859}
5860PRESERVE_NONE
5861static bool Interp_CastUint16Sint32(InterpState &S) {
5862 if (!Cast<PT_Uint16, PT_Sint32>(S, S.PC)) return false;
5863#if USE_TAILCALLS
5864 MUSTTAIL return InterpNext(S);
5865#else
5866 return true;
5867#endif
5868}
5869PRESERVE_NONE
5870static bool Interp_CastUint16Uint64(InterpState &S) {
5871 if (!Cast<PT_Uint16, PT_Uint64>(S, S.PC)) return false;
5872#if USE_TAILCALLS
5873 MUSTTAIL return InterpNext(S);
5874#else
5875 return true;
5876#endif
5877}
5878PRESERVE_NONE
5879static bool Interp_CastUint16Sint64(InterpState &S) {
5880 if (!Cast<PT_Uint16, PT_Sint64>(S, S.PC)) return false;
5881#if USE_TAILCALLS
5882 MUSTTAIL return InterpNext(S);
5883#else
5884 return true;
5885#endif
5886}
5887PRESERVE_NONE
5888static bool Interp_CastUint16Bool(InterpState &S) {
5889 if (!Cast<PT_Uint16, PT_Bool>(S, S.PC)) return false;
5890#if USE_TAILCALLS
5891 MUSTTAIL return InterpNext(S);
5892#else
5893 return true;
5894#endif
5895}
5896PRESERVE_NONE
5897static bool Interp_CastSint16Uint8(InterpState &S) {
5898 if (!Cast<PT_Sint16, PT_Uint8>(S, S.PC)) return false;
5899#if USE_TAILCALLS
5900 MUSTTAIL return InterpNext(S);
5901#else
5902 return true;
5903#endif
5904}
5905PRESERVE_NONE
5906static bool Interp_CastSint16Sint8(InterpState &S) {
5907 if (!Cast<PT_Sint16, PT_Sint8>(S, S.PC)) return false;
5908#if USE_TAILCALLS
5909 MUSTTAIL return InterpNext(S);
5910#else
5911 return true;
5912#endif
5913}
5914PRESERVE_NONE
5915static bool Interp_CastSint16Uint16(InterpState &S) {
5916 if (!Cast<PT_Sint16, PT_Uint16>(S, S.PC)) return false;
5917#if USE_TAILCALLS
5918 MUSTTAIL return InterpNext(S);
5919#else
5920 return true;
5921#endif
5922}
5923PRESERVE_NONE
5924static bool Interp_CastSint16Sint16(InterpState &S) {
5925 if (!Cast<PT_Sint16, PT_Sint16>(S, S.PC)) return false;
5926#if USE_TAILCALLS
5927 MUSTTAIL return InterpNext(S);
5928#else
5929 return true;
5930#endif
5931}
5932PRESERVE_NONE
5933static bool Interp_CastSint16Uint32(InterpState &S) {
5934 if (!Cast<PT_Sint16, PT_Uint32>(S, S.PC)) return false;
5935#if USE_TAILCALLS
5936 MUSTTAIL return InterpNext(S);
5937#else
5938 return true;
5939#endif
5940}
5941PRESERVE_NONE
5942static bool Interp_CastSint16Sint32(InterpState &S) {
5943 if (!Cast<PT_Sint16, PT_Sint32>(S, S.PC)) return false;
5944#if USE_TAILCALLS
5945 MUSTTAIL return InterpNext(S);
5946#else
5947 return true;
5948#endif
5949}
5950PRESERVE_NONE
5951static bool Interp_CastSint16Uint64(InterpState &S) {
5952 if (!Cast<PT_Sint16, PT_Uint64>(S, S.PC)) return false;
5953#if USE_TAILCALLS
5954 MUSTTAIL return InterpNext(S);
5955#else
5956 return true;
5957#endif
5958}
5959PRESERVE_NONE
5960static bool Interp_CastSint16Sint64(InterpState &S) {
5961 if (!Cast<PT_Sint16, PT_Sint64>(S, S.PC)) return false;
5962#if USE_TAILCALLS
5963 MUSTTAIL return InterpNext(S);
5964#else
5965 return true;
5966#endif
5967}
5968PRESERVE_NONE
5969static bool Interp_CastSint16Bool(InterpState &S) {
5970 if (!Cast<PT_Sint16, PT_Bool>(S, S.PC)) return false;
5971#if USE_TAILCALLS
5972 MUSTTAIL return InterpNext(S);
5973#else
5974 return true;
5975#endif
5976}
5977PRESERVE_NONE
5978static bool Interp_CastUint32Uint8(InterpState &S) {
5979 if (!Cast<PT_Uint32, PT_Uint8>(S, S.PC)) return false;
5980#if USE_TAILCALLS
5981 MUSTTAIL return InterpNext(S);
5982#else
5983 return true;
5984#endif
5985}
5986PRESERVE_NONE
5987static bool Interp_CastUint32Sint8(InterpState &S) {
5988 if (!Cast<PT_Uint32, PT_Sint8>(S, S.PC)) return false;
5989#if USE_TAILCALLS
5990 MUSTTAIL return InterpNext(S);
5991#else
5992 return true;
5993#endif
5994}
5995PRESERVE_NONE
5996static bool Interp_CastUint32Uint16(InterpState &S) {
5997 if (!Cast<PT_Uint32, PT_Uint16>(S, S.PC)) return false;
5998#if USE_TAILCALLS
5999 MUSTTAIL return InterpNext(S);
6000#else
6001 return true;
6002#endif
6003}
6004PRESERVE_NONE
6005static bool Interp_CastUint32Sint16(InterpState &S) {
6006 if (!Cast<PT_Uint32, PT_Sint16>(S, S.PC)) return false;
6007#if USE_TAILCALLS
6008 MUSTTAIL return InterpNext(S);
6009#else
6010 return true;
6011#endif
6012}
6013PRESERVE_NONE
6014static bool Interp_CastUint32Uint32(InterpState &S) {
6015 if (!Cast<PT_Uint32, PT_Uint32>(S, S.PC)) return false;
6016#if USE_TAILCALLS
6017 MUSTTAIL return InterpNext(S);
6018#else
6019 return true;
6020#endif
6021}
6022PRESERVE_NONE
6023static bool Interp_CastUint32Sint32(InterpState &S) {
6024 if (!Cast<PT_Uint32, PT_Sint32>(S, S.PC)) return false;
6025#if USE_TAILCALLS
6026 MUSTTAIL return InterpNext(S);
6027#else
6028 return true;
6029#endif
6030}
6031PRESERVE_NONE
6032static bool Interp_CastUint32Uint64(InterpState &S) {
6033 if (!Cast<PT_Uint32, PT_Uint64>(S, S.PC)) return false;
6034#if USE_TAILCALLS
6035 MUSTTAIL return InterpNext(S);
6036#else
6037 return true;
6038#endif
6039}
6040PRESERVE_NONE
6041static bool Interp_CastUint32Sint64(InterpState &S) {
6042 if (!Cast<PT_Uint32, PT_Sint64>(S, S.PC)) return false;
6043#if USE_TAILCALLS
6044 MUSTTAIL return InterpNext(S);
6045#else
6046 return true;
6047#endif
6048}
6049PRESERVE_NONE
6050static bool Interp_CastUint32Bool(InterpState &S) {
6051 if (!Cast<PT_Uint32, PT_Bool>(S, S.PC)) return false;
6052#if USE_TAILCALLS
6053 MUSTTAIL return InterpNext(S);
6054#else
6055 return true;
6056#endif
6057}
6058PRESERVE_NONE
6059static bool Interp_CastSint32Uint8(InterpState &S) {
6060 if (!Cast<PT_Sint32, PT_Uint8>(S, S.PC)) return false;
6061#if USE_TAILCALLS
6062 MUSTTAIL return InterpNext(S);
6063#else
6064 return true;
6065#endif
6066}
6067PRESERVE_NONE
6068static bool Interp_CastSint32Sint8(InterpState &S) {
6069 if (!Cast<PT_Sint32, PT_Sint8>(S, S.PC)) return false;
6070#if USE_TAILCALLS
6071 MUSTTAIL return InterpNext(S);
6072#else
6073 return true;
6074#endif
6075}
6076PRESERVE_NONE
6077static bool Interp_CastSint32Uint16(InterpState &S) {
6078 if (!Cast<PT_Sint32, PT_Uint16>(S, S.PC)) return false;
6079#if USE_TAILCALLS
6080 MUSTTAIL return InterpNext(S);
6081#else
6082 return true;
6083#endif
6084}
6085PRESERVE_NONE
6086static bool Interp_CastSint32Sint16(InterpState &S) {
6087 if (!Cast<PT_Sint32, PT_Sint16>(S, S.PC)) return false;
6088#if USE_TAILCALLS
6089 MUSTTAIL return InterpNext(S);
6090#else
6091 return true;
6092#endif
6093}
6094PRESERVE_NONE
6095static bool Interp_CastSint32Uint32(InterpState &S) {
6096 if (!Cast<PT_Sint32, PT_Uint32>(S, S.PC)) return false;
6097#if USE_TAILCALLS
6098 MUSTTAIL return InterpNext(S);
6099#else
6100 return true;
6101#endif
6102}
6103PRESERVE_NONE
6104static bool Interp_CastSint32Sint32(InterpState &S) {
6105 if (!Cast<PT_Sint32, PT_Sint32>(S, S.PC)) return false;
6106#if USE_TAILCALLS
6107 MUSTTAIL return InterpNext(S);
6108#else
6109 return true;
6110#endif
6111}
6112PRESERVE_NONE
6113static bool Interp_CastSint32Uint64(InterpState &S) {
6114 if (!Cast<PT_Sint32, PT_Uint64>(S, S.PC)) return false;
6115#if USE_TAILCALLS
6116 MUSTTAIL return InterpNext(S);
6117#else
6118 return true;
6119#endif
6120}
6121PRESERVE_NONE
6122static bool Interp_CastSint32Sint64(InterpState &S) {
6123 if (!Cast<PT_Sint32, PT_Sint64>(S, S.PC)) return false;
6124#if USE_TAILCALLS
6125 MUSTTAIL return InterpNext(S);
6126#else
6127 return true;
6128#endif
6129}
6130PRESERVE_NONE
6131static bool Interp_CastSint32Bool(InterpState &S) {
6132 if (!Cast<PT_Sint32, PT_Bool>(S, S.PC)) return false;
6133#if USE_TAILCALLS
6134 MUSTTAIL return InterpNext(S);
6135#else
6136 return true;
6137#endif
6138}
6139PRESERVE_NONE
6140static bool Interp_CastUint64Uint8(InterpState &S) {
6141 if (!Cast<PT_Uint64, PT_Uint8>(S, S.PC)) return false;
6142#if USE_TAILCALLS
6143 MUSTTAIL return InterpNext(S);
6144#else
6145 return true;
6146#endif
6147}
6148PRESERVE_NONE
6149static bool Interp_CastUint64Sint8(InterpState &S) {
6150 if (!Cast<PT_Uint64, PT_Sint8>(S, S.PC)) return false;
6151#if USE_TAILCALLS
6152 MUSTTAIL return InterpNext(S);
6153#else
6154 return true;
6155#endif
6156}
6157PRESERVE_NONE
6158static bool Interp_CastUint64Uint16(InterpState &S) {
6159 if (!Cast<PT_Uint64, PT_Uint16>(S, S.PC)) return false;
6160#if USE_TAILCALLS
6161 MUSTTAIL return InterpNext(S);
6162#else
6163 return true;
6164#endif
6165}
6166PRESERVE_NONE
6167static bool Interp_CastUint64Sint16(InterpState &S) {
6168 if (!Cast<PT_Uint64, PT_Sint16>(S, S.PC)) return false;
6169#if USE_TAILCALLS
6170 MUSTTAIL return InterpNext(S);
6171#else
6172 return true;
6173#endif
6174}
6175PRESERVE_NONE
6176static bool Interp_CastUint64Uint32(InterpState &S) {
6177 if (!Cast<PT_Uint64, PT_Uint32>(S, S.PC)) return false;
6178#if USE_TAILCALLS
6179 MUSTTAIL return InterpNext(S);
6180#else
6181 return true;
6182#endif
6183}
6184PRESERVE_NONE
6185static bool Interp_CastUint64Sint32(InterpState &S) {
6186 if (!Cast<PT_Uint64, PT_Sint32>(S, S.PC)) return false;
6187#if USE_TAILCALLS
6188 MUSTTAIL return InterpNext(S);
6189#else
6190 return true;
6191#endif
6192}
6193PRESERVE_NONE
6194static bool Interp_CastUint64Uint64(InterpState &S) {
6195 if (!Cast<PT_Uint64, PT_Uint64>(S, S.PC)) return false;
6196#if USE_TAILCALLS
6197 MUSTTAIL return InterpNext(S);
6198#else
6199 return true;
6200#endif
6201}
6202PRESERVE_NONE
6203static bool Interp_CastUint64Sint64(InterpState &S) {
6204 if (!Cast<PT_Uint64, PT_Sint64>(S, S.PC)) return false;
6205#if USE_TAILCALLS
6206 MUSTTAIL return InterpNext(S);
6207#else
6208 return true;
6209#endif
6210}
6211PRESERVE_NONE
6212static bool Interp_CastUint64Bool(InterpState &S) {
6213 if (!Cast<PT_Uint64, PT_Bool>(S, S.PC)) return false;
6214#if USE_TAILCALLS
6215 MUSTTAIL return InterpNext(S);
6216#else
6217 return true;
6218#endif
6219}
6220PRESERVE_NONE
6221static bool Interp_CastSint64Uint8(InterpState &S) {
6222 if (!Cast<PT_Sint64, PT_Uint8>(S, S.PC)) return false;
6223#if USE_TAILCALLS
6224 MUSTTAIL return InterpNext(S);
6225#else
6226 return true;
6227#endif
6228}
6229PRESERVE_NONE
6230static bool Interp_CastSint64Sint8(InterpState &S) {
6231 if (!Cast<PT_Sint64, PT_Sint8>(S, S.PC)) return false;
6232#if USE_TAILCALLS
6233 MUSTTAIL return InterpNext(S);
6234#else
6235 return true;
6236#endif
6237}
6238PRESERVE_NONE
6239static bool Interp_CastSint64Uint16(InterpState &S) {
6240 if (!Cast<PT_Sint64, PT_Uint16>(S, S.PC)) return false;
6241#if USE_TAILCALLS
6242 MUSTTAIL return InterpNext(S);
6243#else
6244 return true;
6245#endif
6246}
6247PRESERVE_NONE
6248static bool Interp_CastSint64Sint16(InterpState &S) {
6249 if (!Cast<PT_Sint64, PT_Sint16>(S, S.PC)) return false;
6250#if USE_TAILCALLS
6251 MUSTTAIL return InterpNext(S);
6252#else
6253 return true;
6254#endif
6255}
6256PRESERVE_NONE
6257static bool Interp_CastSint64Uint32(InterpState &S) {
6258 if (!Cast<PT_Sint64, PT_Uint32>(S, S.PC)) return false;
6259#if USE_TAILCALLS
6260 MUSTTAIL return InterpNext(S);
6261#else
6262 return true;
6263#endif
6264}
6265PRESERVE_NONE
6266static bool Interp_CastSint64Sint32(InterpState &S) {
6267 if (!Cast<PT_Sint64, PT_Sint32>(S, S.PC)) return false;
6268#if USE_TAILCALLS
6269 MUSTTAIL return InterpNext(S);
6270#else
6271 return true;
6272#endif
6273}
6274PRESERVE_NONE
6275static bool Interp_CastSint64Uint64(InterpState &S) {
6276 if (!Cast<PT_Sint64, PT_Uint64>(S, S.PC)) return false;
6277#if USE_TAILCALLS
6278 MUSTTAIL return InterpNext(S);
6279#else
6280 return true;
6281#endif
6282}
6283PRESERVE_NONE
6284static bool Interp_CastSint64Sint64(InterpState &S) {
6285 if (!Cast<PT_Sint64, PT_Sint64>(S, S.PC)) return false;
6286#if USE_TAILCALLS
6287 MUSTTAIL return InterpNext(S);
6288#else
6289 return true;
6290#endif
6291}
6292PRESERVE_NONE
6293static bool Interp_CastSint64Bool(InterpState &S) {
6294 if (!Cast<PT_Sint64, PT_Bool>(S, S.PC)) return false;
6295#if USE_TAILCALLS
6296 MUSTTAIL return InterpNext(S);
6297#else
6298 return true;
6299#endif
6300}
6301PRESERVE_NONE
6302static bool Interp_CastBoolUint8(InterpState &S) {
6303 if (!Cast<PT_Bool, PT_Uint8>(S, S.PC)) return false;
6304#if USE_TAILCALLS
6305 MUSTTAIL return InterpNext(S);
6306#else
6307 return true;
6308#endif
6309}
6310PRESERVE_NONE
6311static bool Interp_CastBoolSint8(InterpState &S) {
6312 if (!Cast<PT_Bool, PT_Sint8>(S, S.PC)) return false;
6313#if USE_TAILCALLS
6314 MUSTTAIL return InterpNext(S);
6315#else
6316 return true;
6317#endif
6318}
6319PRESERVE_NONE
6320static bool Interp_CastBoolUint16(InterpState &S) {
6321 if (!Cast<PT_Bool, PT_Uint16>(S, S.PC)) return false;
6322#if USE_TAILCALLS
6323 MUSTTAIL return InterpNext(S);
6324#else
6325 return true;
6326#endif
6327}
6328PRESERVE_NONE
6329static bool Interp_CastBoolSint16(InterpState &S) {
6330 if (!Cast<PT_Bool, PT_Sint16>(S, S.PC)) return false;
6331#if USE_TAILCALLS
6332 MUSTTAIL return InterpNext(S);
6333#else
6334 return true;
6335#endif
6336}
6337PRESERVE_NONE
6338static bool Interp_CastBoolUint32(InterpState &S) {
6339 if (!Cast<PT_Bool, PT_Uint32>(S, S.PC)) return false;
6340#if USE_TAILCALLS
6341 MUSTTAIL return InterpNext(S);
6342#else
6343 return true;
6344#endif
6345}
6346PRESERVE_NONE
6347static bool Interp_CastBoolSint32(InterpState &S) {
6348 if (!Cast<PT_Bool, PT_Sint32>(S, S.PC)) return false;
6349#if USE_TAILCALLS
6350 MUSTTAIL return InterpNext(S);
6351#else
6352 return true;
6353#endif
6354}
6355PRESERVE_NONE
6356static bool Interp_CastBoolUint64(InterpState &S) {
6357 if (!Cast<PT_Bool, PT_Uint64>(S, S.PC)) return false;
6358#if USE_TAILCALLS
6359 MUSTTAIL return InterpNext(S);
6360#else
6361 return true;
6362#endif
6363}
6364PRESERVE_NONE
6365static bool Interp_CastBoolSint64(InterpState &S) {
6366 if (!Cast<PT_Bool, PT_Sint64>(S, S.PC)) return false;
6367#if USE_TAILCALLS
6368 MUSTTAIL return InterpNext(S);
6369#else
6370 return true;
6371#endif
6372}
6373PRESERVE_NONE
6374static bool Interp_CastBoolBool(InterpState &S) {
6375 if (!Cast<PT_Bool, PT_Bool>(S, S.PC)) return false;
6376#if USE_TAILCALLS
6377 MUSTTAIL return InterpNext(S);
6378#else
6379 return true;
6380#endif
6381}
6382PRESERVE_NONE
6383static bool Interp_CastIntAPUint8(InterpState &S) {
6384 if (!Cast<PT_IntAP, PT_Uint8>(S, S.PC)) return false;
6385#if USE_TAILCALLS
6386 MUSTTAIL return InterpNext(S);
6387#else
6388 return true;
6389#endif
6390}
6391PRESERVE_NONE
6392static bool Interp_CastIntAPSint8(InterpState &S) {
6393 if (!Cast<PT_IntAP, PT_Sint8>(S, S.PC)) return false;
6394#if USE_TAILCALLS
6395 MUSTTAIL return InterpNext(S);
6396#else
6397 return true;
6398#endif
6399}
6400PRESERVE_NONE
6401static bool Interp_CastIntAPUint16(InterpState &S) {
6402 if (!Cast<PT_IntAP, PT_Uint16>(S, S.PC)) return false;
6403#if USE_TAILCALLS
6404 MUSTTAIL return InterpNext(S);
6405#else
6406 return true;
6407#endif
6408}
6409PRESERVE_NONE
6410static bool Interp_CastIntAPSint16(InterpState &S) {
6411 if (!Cast<PT_IntAP, PT_Sint16>(S, S.PC)) return false;
6412#if USE_TAILCALLS
6413 MUSTTAIL return InterpNext(S);
6414#else
6415 return true;
6416#endif
6417}
6418PRESERVE_NONE
6419static bool Interp_CastIntAPUint32(InterpState &S) {
6420 if (!Cast<PT_IntAP, PT_Uint32>(S, S.PC)) return false;
6421#if USE_TAILCALLS
6422 MUSTTAIL return InterpNext(S);
6423#else
6424 return true;
6425#endif
6426}
6427PRESERVE_NONE
6428static bool Interp_CastIntAPSint32(InterpState &S) {
6429 if (!Cast<PT_IntAP, PT_Sint32>(S, S.PC)) return false;
6430#if USE_TAILCALLS
6431 MUSTTAIL return InterpNext(S);
6432#else
6433 return true;
6434#endif
6435}
6436PRESERVE_NONE
6437static bool Interp_CastIntAPUint64(InterpState &S) {
6438 if (!Cast<PT_IntAP, PT_Uint64>(S, S.PC)) return false;
6439#if USE_TAILCALLS
6440 MUSTTAIL return InterpNext(S);
6441#else
6442 return true;
6443#endif
6444}
6445PRESERVE_NONE
6446static bool Interp_CastIntAPSint64(InterpState &S) {
6447 if (!Cast<PT_IntAP, PT_Sint64>(S, S.PC)) return false;
6448#if USE_TAILCALLS
6449 MUSTTAIL return InterpNext(S);
6450#else
6451 return true;
6452#endif
6453}
6454PRESERVE_NONE
6455static bool Interp_CastIntAPBool(InterpState &S) {
6456 if (!Cast<PT_IntAP, PT_Bool>(S, S.PC)) return false;
6457#if USE_TAILCALLS
6458 MUSTTAIL return InterpNext(S);
6459#else
6460 return true;
6461#endif
6462}
6463PRESERVE_NONE
6464static bool Interp_CastIntAPSUint8(InterpState &S) {
6465 if (!Cast<PT_IntAPS, PT_Uint8>(S, S.PC)) return false;
6466#if USE_TAILCALLS
6467 MUSTTAIL return InterpNext(S);
6468#else
6469 return true;
6470#endif
6471}
6472PRESERVE_NONE
6473static bool Interp_CastIntAPSSint8(InterpState &S) {
6474 if (!Cast<PT_IntAPS, PT_Sint8>(S, S.PC)) return false;
6475#if USE_TAILCALLS
6476 MUSTTAIL return InterpNext(S);
6477#else
6478 return true;
6479#endif
6480}
6481PRESERVE_NONE
6482static bool Interp_CastIntAPSUint16(InterpState &S) {
6483 if (!Cast<PT_IntAPS, PT_Uint16>(S, S.PC)) return false;
6484#if USE_TAILCALLS
6485 MUSTTAIL return InterpNext(S);
6486#else
6487 return true;
6488#endif
6489}
6490PRESERVE_NONE
6491static bool Interp_CastIntAPSSint16(InterpState &S) {
6492 if (!Cast<PT_IntAPS, PT_Sint16>(S, S.PC)) return false;
6493#if USE_TAILCALLS
6494 MUSTTAIL return InterpNext(S);
6495#else
6496 return true;
6497#endif
6498}
6499PRESERVE_NONE
6500static bool Interp_CastIntAPSUint32(InterpState &S) {
6501 if (!Cast<PT_IntAPS, PT_Uint32>(S, S.PC)) return false;
6502#if USE_TAILCALLS
6503 MUSTTAIL return InterpNext(S);
6504#else
6505 return true;
6506#endif
6507}
6508PRESERVE_NONE
6509static bool Interp_CastIntAPSSint32(InterpState &S) {
6510 if (!Cast<PT_IntAPS, PT_Sint32>(S, S.PC)) return false;
6511#if USE_TAILCALLS
6512 MUSTTAIL return InterpNext(S);
6513#else
6514 return true;
6515#endif
6516}
6517PRESERVE_NONE
6518static bool Interp_CastIntAPSUint64(InterpState &S) {
6519 if (!Cast<PT_IntAPS, PT_Uint64>(S, S.PC)) return false;
6520#if USE_TAILCALLS
6521 MUSTTAIL return InterpNext(S);
6522#else
6523 return true;
6524#endif
6525}
6526PRESERVE_NONE
6527static bool Interp_CastIntAPSSint64(InterpState &S) {
6528 if (!Cast<PT_IntAPS, PT_Sint64>(S, S.PC)) return false;
6529#if USE_TAILCALLS
6530 MUSTTAIL return InterpNext(S);
6531#else
6532 return true;
6533#endif
6534}
6535PRESERVE_NONE
6536static bool Interp_CastIntAPSBool(InterpState &S) {
6537 if (!Cast<PT_IntAPS, PT_Bool>(S, S.PC)) return false;
6538#if USE_TAILCALLS
6539 MUSTTAIL return InterpNext(S);
6540#else
6541 return true;
6542#endif
6543}
6544PRESERVE_NONE
6545static bool Interp_CastFixedPointUint8(InterpState &S) {
6546 if (!Cast<PT_FixedPoint, PT_Uint8>(S, S.PC)) return false;
6547#if USE_TAILCALLS
6548 MUSTTAIL return InterpNext(S);
6549#else
6550 return true;
6551#endif
6552}
6553PRESERVE_NONE
6554static bool Interp_CastFixedPointSint8(InterpState &S) {
6555 if (!Cast<PT_FixedPoint, PT_Sint8>(S, S.PC)) return false;
6556#if USE_TAILCALLS
6557 MUSTTAIL return InterpNext(S);
6558#else
6559 return true;
6560#endif
6561}
6562PRESERVE_NONE
6563static bool Interp_CastFixedPointUint16(InterpState &S) {
6564 if (!Cast<PT_FixedPoint, PT_Uint16>(S, S.PC)) return false;
6565#if USE_TAILCALLS
6566 MUSTTAIL return InterpNext(S);
6567#else
6568 return true;
6569#endif
6570}
6571PRESERVE_NONE
6572static bool Interp_CastFixedPointSint16(InterpState &S) {
6573 if (!Cast<PT_FixedPoint, PT_Sint16>(S, S.PC)) return false;
6574#if USE_TAILCALLS
6575 MUSTTAIL return InterpNext(S);
6576#else
6577 return true;
6578#endif
6579}
6580PRESERVE_NONE
6581static bool Interp_CastFixedPointUint32(InterpState &S) {
6582 if (!Cast<PT_FixedPoint, PT_Uint32>(S, S.PC)) return false;
6583#if USE_TAILCALLS
6584 MUSTTAIL return InterpNext(S);
6585#else
6586 return true;
6587#endif
6588}
6589PRESERVE_NONE
6590static bool Interp_CastFixedPointSint32(InterpState &S) {
6591 if (!Cast<PT_FixedPoint, PT_Sint32>(S, S.PC)) return false;
6592#if USE_TAILCALLS
6593 MUSTTAIL return InterpNext(S);
6594#else
6595 return true;
6596#endif
6597}
6598PRESERVE_NONE
6599static bool Interp_CastFixedPointUint64(InterpState &S) {
6600 if (!Cast<PT_FixedPoint, PT_Uint64>(S, S.PC)) return false;
6601#if USE_TAILCALLS
6602 MUSTTAIL return InterpNext(S);
6603#else
6604 return true;
6605#endif
6606}
6607PRESERVE_NONE
6608static bool Interp_CastFixedPointSint64(InterpState &S) {
6609 if (!Cast<PT_FixedPoint, PT_Sint64>(S, S.PC)) return false;
6610#if USE_TAILCALLS
6611 MUSTTAIL return InterpNext(S);
6612#else
6613 return true;
6614#endif
6615}
6616PRESERVE_NONE
6617static bool Interp_CastFixedPointBool(InterpState &S) {
6618 if (!Cast<PT_FixedPoint, PT_Bool>(S, S.PC)) return false;
6619#if USE_TAILCALLS
6620 MUSTTAIL return InterpNext(S);
6621#else
6622 return true;
6623#endif
6624}
6625#endif
6626#ifdef GET_DISASM
6627case OP_CastUint8Uint8:
6628 Text.Op = PrintName("CastUint8Uint8");
6629 break;
6630case OP_CastUint8Sint8:
6631 Text.Op = PrintName("CastUint8Sint8");
6632 break;
6633case OP_CastUint8Uint16:
6634 Text.Op = PrintName("CastUint8Uint16");
6635 break;
6636case OP_CastUint8Sint16:
6637 Text.Op = PrintName("CastUint8Sint16");
6638 break;
6639case OP_CastUint8Uint32:
6640 Text.Op = PrintName("CastUint8Uint32");
6641 break;
6642case OP_CastUint8Sint32:
6643 Text.Op = PrintName("CastUint8Sint32");
6644 break;
6645case OP_CastUint8Uint64:
6646 Text.Op = PrintName("CastUint8Uint64");
6647 break;
6648case OP_CastUint8Sint64:
6649 Text.Op = PrintName("CastUint8Sint64");
6650 break;
6651case OP_CastUint8Bool:
6652 Text.Op = PrintName("CastUint8Bool");
6653 break;
6654case OP_CastSint8Uint8:
6655 Text.Op = PrintName("CastSint8Uint8");
6656 break;
6657case OP_CastSint8Sint8:
6658 Text.Op = PrintName("CastSint8Sint8");
6659 break;
6660case OP_CastSint8Uint16:
6661 Text.Op = PrintName("CastSint8Uint16");
6662 break;
6663case OP_CastSint8Sint16:
6664 Text.Op = PrintName("CastSint8Sint16");
6665 break;
6666case OP_CastSint8Uint32:
6667 Text.Op = PrintName("CastSint8Uint32");
6668 break;
6669case OP_CastSint8Sint32:
6670 Text.Op = PrintName("CastSint8Sint32");
6671 break;
6672case OP_CastSint8Uint64:
6673 Text.Op = PrintName("CastSint8Uint64");
6674 break;
6675case OP_CastSint8Sint64:
6676 Text.Op = PrintName("CastSint8Sint64");
6677 break;
6678case OP_CastSint8Bool:
6679 Text.Op = PrintName("CastSint8Bool");
6680 break;
6681case OP_CastUint16Uint8:
6682 Text.Op = PrintName("CastUint16Uint8");
6683 break;
6684case OP_CastUint16Sint8:
6685 Text.Op = PrintName("CastUint16Sint8");
6686 break;
6687case OP_CastUint16Uint16:
6688 Text.Op = PrintName("CastUint16Uint16");
6689 break;
6690case OP_CastUint16Sint16:
6691 Text.Op = PrintName("CastUint16Sint16");
6692 break;
6693case OP_CastUint16Uint32:
6694 Text.Op = PrintName("CastUint16Uint32");
6695 break;
6696case OP_CastUint16Sint32:
6697 Text.Op = PrintName("CastUint16Sint32");
6698 break;
6699case OP_CastUint16Uint64:
6700 Text.Op = PrintName("CastUint16Uint64");
6701 break;
6702case OP_CastUint16Sint64:
6703 Text.Op = PrintName("CastUint16Sint64");
6704 break;
6705case OP_CastUint16Bool:
6706 Text.Op = PrintName("CastUint16Bool");
6707 break;
6708case OP_CastSint16Uint8:
6709 Text.Op = PrintName("CastSint16Uint8");
6710 break;
6711case OP_CastSint16Sint8:
6712 Text.Op = PrintName("CastSint16Sint8");
6713 break;
6714case OP_CastSint16Uint16:
6715 Text.Op = PrintName("CastSint16Uint16");
6716 break;
6717case OP_CastSint16Sint16:
6718 Text.Op = PrintName("CastSint16Sint16");
6719 break;
6720case OP_CastSint16Uint32:
6721 Text.Op = PrintName("CastSint16Uint32");
6722 break;
6723case OP_CastSint16Sint32:
6724 Text.Op = PrintName("CastSint16Sint32");
6725 break;
6726case OP_CastSint16Uint64:
6727 Text.Op = PrintName("CastSint16Uint64");
6728 break;
6729case OP_CastSint16Sint64:
6730 Text.Op = PrintName("CastSint16Sint64");
6731 break;
6732case OP_CastSint16Bool:
6733 Text.Op = PrintName("CastSint16Bool");
6734 break;
6735case OP_CastUint32Uint8:
6736 Text.Op = PrintName("CastUint32Uint8");
6737 break;
6738case OP_CastUint32Sint8:
6739 Text.Op = PrintName("CastUint32Sint8");
6740 break;
6741case OP_CastUint32Uint16:
6742 Text.Op = PrintName("CastUint32Uint16");
6743 break;
6744case OP_CastUint32Sint16:
6745 Text.Op = PrintName("CastUint32Sint16");
6746 break;
6747case OP_CastUint32Uint32:
6748 Text.Op = PrintName("CastUint32Uint32");
6749 break;
6750case OP_CastUint32Sint32:
6751 Text.Op = PrintName("CastUint32Sint32");
6752 break;
6753case OP_CastUint32Uint64:
6754 Text.Op = PrintName("CastUint32Uint64");
6755 break;
6756case OP_CastUint32Sint64:
6757 Text.Op = PrintName("CastUint32Sint64");
6758 break;
6759case OP_CastUint32Bool:
6760 Text.Op = PrintName("CastUint32Bool");
6761 break;
6762case OP_CastSint32Uint8:
6763 Text.Op = PrintName("CastSint32Uint8");
6764 break;
6765case OP_CastSint32Sint8:
6766 Text.Op = PrintName("CastSint32Sint8");
6767 break;
6768case OP_CastSint32Uint16:
6769 Text.Op = PrintName("CastSint32Uint16");
6770 break;
6771case OP_CastSint32Sint16:
6772 Text.Op = PrintName("CastSint32Sint16");
6773 break;
6774case OP_CastSint32Uint32:
6775 Text.Op = PrintName("CastSint32Uint32");
6776 break;
6777case OP_CastSint32Sint32:
6778 Text.Op = PrintName("CastSint32Sint32");
6779 break;
6780case OP_CastSint32Uint64:
6781 Text.Op = PrintName("CastSint32Uint64");
6782 break;
6783case OP_CastSint32Sint64:
6784 Text.Op = PrintName("CastSint32Sint64");
6785 break;
6786case OP_CastSint32Bool:
6787 Text.Op = PrintName("CastSint32Bool");
6788 break;
6789case OP_CastUint64Uint8:
6790 Text.Op = PrintName("CastUint64Uint8");
6791 break;
6792case OP_CastUint64Sint8:
6793 Text.Op = PrintName("CastUint64Sint8");
6794 break;
6795case OP_CastUint64Uint16:
6796 Text.Op = PrintName("CastUint64Uint16");
6797 break;
6798case OP_CastUint64Sint16:
6799 Text.Op = PrintName("CastUint64Sint16");
6800 break;
6801case OP_CastUint64Uint32:
6802 Text.Op = PrintName("CastUint64Uint32");
6803 break;
6804case OP_CastUint64Sint32:
6805 Text.Op = PrintName("CastUint64Sint32");
6806 break;
6807case OP_CastUint64Uint64:
6808 Text.Op = PrintName("CastUint64Uint64");
6809 break;
6810case OP_CastUint64Sint64:
6811 Text.Op = PrintName("CastUint64Sint64");
6812 break;
6813case OP_CastUint64Bool:
6814 Text.Op = PrintName("CastUint64Bool");
6815 break;
6816case OP_CastSint64Uint8:
6817 Text.Op = PrintName("CastSint64Uint8");
6818 break;
6819case OP_CastSint64Sint8:
6820 Text.Op = PrintName("CastSint64Sint8");
6821 break;
6822case OP_CastSint64Uint16:
6823 Text.Op = PrintName("CastSint64Uint16");
6824 break;
6825case OP_CastSint64Sint16:
6826 Text.Op = PrintName("CastSint64Sint16");
6827 break;
6828case OP_CastSint64Uint32:
6829 Text.Op = PrintName("CastSint64Uint32");
6830 break;
6831case OP_CastSint64Sint32:
6832 Text.Op = PrintName("CastSint64Sint32");
6833 break;
6834case OP_CastSint64Uint64:
6835 Text.Op = PrintName("CastSint64Uint64");
6836 break;
6837case OP_CastSint64Sint64:
6838 Text.Op = PrintName("CastSint64Sint64");
6839 break;
6840case OP_CastSint64Bool:
6841 Text.Op = PrintName("CastSint64Bool");
6842 break;
6843case OP_CastBoolUint8:
6844 Text.Op = PrintName("CastBoolUint8");
6845 break;
6846case OP_CastBoolSint8:
6847 Text.Op = PrintName("CastBoolSint8");
6848 break;
6849case OP_CastBoolUint16:
6850 Text.Op = PrintName("CastBoolUint16");
6851 break;
6852case OP_CastBoolSint16:
6853 Text.Op = PrintName("CastBoolSint16");
6854 break;
6855case OP_CastBoolUint32:
6856 Text.Op = PrintName("CastBoolUint32");
6857 break;
6858case OP_CastBoolSint32:
6859 Text.Op = PrintName("CastBoolSint32");
6860 break;
6861case OP_CastBoolUint64:
6862 Text.Op = PrintName("CastBoolUint64");
6863 break;
6864case OP_CastBoolSint64:
6865 Text.Op = PrintName("CastBoolSint64");
6866 break;
6867case OP_CastBoolBool:
6868 Text.Op = PrintName("CastBoolBool");
6869 break;
6870case OP_CastIntAPUint8:
6871 Text.Op = PrintName("CastIntAPUint8");
6872 break;
6873case OP_CastIntAPSint8:
6874 Text.Op = PrintName("CastIntAPSint8");
6875 break;
6876case OP_CastIntAPUint16:
6877 Text.Op = PrintName("CastIntAPUint16");
6878 break;
6879case OP_CastIntAPSint16:
6880 Text.Op = PrintName("CastIntAPSint16");
6881 break;
6882case OP_CastIntAPUint32:
6883 Text.Op = PrintName("CastIntAPUint32");
6884 break;
6885case OP_CastIntAPSint32:
6886 Text.Op = PrintName("CastIntAPSint32");
6887 break;
6888case OP_CastIntAPUint64:
6889 Text.Op = PrintName("CastIntAPUint64");
6890 break;
6891case OP_CastIntAPSint64:
6892 Text.Op = PrintName("CastIntAPSint64");
6893 break;
6894case OP_CastIntAPBool:
6895 Text.Op = PrintName("CastIntAPBool");
6896 break;
6897case OP_CastIntAPSUint8:
6898 Text.Op = PrintName("CastIntAPSUint8");
6899 break;
6900case OP_CastIntAPSSint8:
6901 Text.Op = PrintName("CastIntAPSSint8");
6902 break;
6903case OP_CastIntAPSUint16:
6904 Text.Op = PrintName("CastIntAPSUint16");
6905 break;
6906case OP_CastIntAPSSint16:
6907 Text.Op = PrintName("CastIntAPSSint16");
6908 break;
6909case OP_CastIntAPSUint32:
6910 Text.Op = PrintName("CastIntAPSUint32");
6911 break;
6912case OP_CastIntAPSSint32:
6913 Text.Op = PrintName("CastIntAPSSint32");
6914 break;
6915case OP_CastIntAPSUint64:
6916 Text.Op = PrintName("CastIntAPSUint64");
6917 break;
6918case OP_CastIntAPSSint64:
6919 Text.Op = PrintName("CastIntAPSSint64");
6920 break;
6921case OP_CastIntAPSBool:
6922 Text.Op = PrintName("CastIntAPSBool");
6923 break;
6924case OP_CastFixedPointUint8:
6925 Text.Op = PrintName("CastFixedPointUint8");
6926 break;
6927case OP_CastFixedPointSint8:
6928 Text.Op = PrintName("CastFixedPointSint8");
6929 break;
6930case OP_CastFixedPointUint16:
6931 Text.Op = PrintName("CastFixedPointUint16");
6932 break;
6933case OP_CastFixedPointSint16:
6934 Text.Op = PrintName("CastFixedPointSint16");
6935 break;
6936case OP_CastFixedPointUint32:
6937 Text.Op = PrintName("CastFixedPointUint32");
6938 break;
6939case OP_CastFixedPointSint32:
6940 Text.Op = PrintName("CastFixedPointSint32");
6941 break;
6942case OP_CastFixedPointUint64:
6943 Text.Op = PrintName("CastFixedPointUint64");
6944 break;
6945case OP_CastFixedPointSint64:
6946 Text.Op = PrintName("CastFixedPointSint64");
6947 break;
6948case OP_CastFixedPointBool:
6949 Text.Op = PrintName("CastFixedPointBool");
6950 break;
6951#endif
6952#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
6953bool emitCastUint8Uint8(SourceInfo);
6954bool emitCastUint8Sint8(SourceInfo);
6955bool emitCastUint8Uint16(SourceInfo);
6956bool emitCastUint8Sint16(SourceInfo);
6957bool emitCastUint8Uint32(SourceInfo);
6958bool emitCastUint8Sint32(SourceInfo);
6959bool emitCastUint8Uint64(SourceInfo);
6960bool emitCastUint8Sint64(SourceInfo);
6961bool emitCastUint8Bool(SourceInfo);
6962bool emitCastSint8Uint8(SourceInfo);
6963bool emitCastSint8Sint8(SourceInfo);
6964bool emitCastSint8Uint16(SourceInfo);
6965bool emitCastSint8Sint16(SourceInfo);
6966bool emitCastSint8Uint32(SourceInfo);
6967bool emitCastSint8Sint32(SourceInfo);
6968bool emitCastSint8Uint64(SourceInfo);
6969bool emitCastSint8Sint64(SourceInfo);
6970bool emitCastSint8Bool(SourceInfo);
6971bool emitCastUint16Uint8(SourceInfo);
6972bool emitCastUint16Sint8(SourceInfo);
6973bool emitCastUint16Uint16(SourceInfo);
6974bool emitCastUint16Sint16(SourceInfo);
6975bool emitCastUint16Uint32(SourceInfo);
6976bool emitCastUint16Sint32(SourceInfo);
6977bool emitCastUint16Uint64(SourceInfo);
6978bool emitCastUint16Sint64(SourceInfo);
6979bool emitCastUint16Bool(SourceInfo);
6980bool emitCastSint16Uint8(SourceInfo);
6981bool emitCastSint16Sint8(SourceInfo);
6982bool emitCastSint16Uint16(SourceInfo);
6983bool emitCastSint16Sint16(SourceInfo);
6984bool emitCastSint16Uint32(SourceInfo);
6985bool emitCastSint16Sint32(SourceInfo);
6986bool emitCastSint16Uint64(SourceInfo);
6987bool emitCastSint16Sint64(SourceInfo);
6988bool emitCastSint16Bool(SourceInfo);
6989bool emitCastUint32Uint8(SourceInfo);
6990bool emitCastUint32Sint8(SourceInfo);
6991bool emitCastUint32Uint16(SourceInfo);
6992bool emitCastUint32Sint16(SourceInfo);
6993bool emitCastUint32Uint32(SourceInfo);
6994bool emitCastUint32Sint32(SourceInfo);
6995bool emitCastUint32Uint64(SourceInfo);
6996bool emitCastUint32Sint64(SourceInfo);
6997bool emitCastUint32Bool(SourceInfo);
6998bool emitCastSint32Uint8(SourceInfo);
6999bool emitCastSint32Sint8(SourceInfo);
7000bool emitCastSint32Uint16(SourceInfo);
7001bool emitCastSint32Sint16(SourceInfo);
7002bool emitCastSint32Uint32(SourceInfo);
7003bool emitCastSint32Sint32(SourceInfo);
7004bool emitCastSint32Uint64(SourceInfo);
7005bool emitCastSint32Sint64(SourceInfo);
7006bool emitCastSint32Bool(SourceInfo);
7007bool emitCastUint64Uint8(SourceInfo);
7008bool emitCastUint64Sint8(SourceInfo);
7009bool emitCastUint64Uint16(SourceInfo);
7010bool emitCastUint64Sint16(SourceInfo);
7011bool emitCastUint64Uint32(SourceInfo);
7012bool emitCastUint64Sint32(SourceInfo);
7013bool emitCastUint64Uint64(SourceInfo);
7014bool emitCastUint64Sint64(SourceInfo);
7015bool emitCastUint64Bool(SourceInfo);
7016bool emitCastSint64Uint8(SourceInfo);
7017bool emitCastSint64Sint8(SourceInfo);
7018bool emitCastSint64Uint16(SourceInfo);
7019bool emitCastSint64Sint16(SourceInfo);
7020bool emitCastSint64Uint32(SourceInfo);
7021bool emitCastSint64Sint32(SourceInfo);
7022bool emitCastSint64Uint64(SourceInfo);
7023bool emitCastSint64Sint64(SourceInfo);
7024bool emitCastSint64Bool(SourceInfo);
7025bool emitCastBoolUint8(SourceInfo);
7026bool emitCastBoolSint8(SourceInfo);
7027bool emitCastBoolUint16(SourceInfo);
7028bool emitCastBoolSint16(SourceInfo);
7029bool emitCastBoolUint32(SourceInfo);
7030bool emitCastBoolSint32(SourceInfo);
7031bool emitCastBoolUint64(SourceInfo);
7032bool emitCastBoolSint64(SourceInfo);
7033bool emitCastBoolBool(SourceInfo);
7034bool emitCastIntAPUint8(SourceInfo);
7035bool emitCastIntAPSint8(SourceInfo);
7036bool emitCastIntAPUint16(SourceInfo);
7037bool emitCastIntAPSint16(SourceInfo);
7038bool emitCastIntAPUint32(SourceInfo);
7039bool emitCastIntAPSint32(SourceInfo);
7040bool emitCastIntAPUint64(SourceInfo);
7041bool emitCastIntAPSint64(SourceInfo);
7042bool emitCastIntAPBool(SourceInfo);
7043bool emitCastIntAPSUint8(SourceInfo);
7044bool emitCastIntAPSSint8(SourceInfo);
7045bool emitCastIntAPSUint16(SourceInfo);
7046bool emitCastIntAPSSint16(SourceInfo);
7047bool emitCastIntAPSUint32(SourceInfo);
7048bool emitCastIntAPSSint32(SourceInfo);
7049bool emitCastIntAPSUint64(SourceInfo);
7050bool emitCastIntAPSSint64(SourceInfo);
7051bool emitCastIntAPSBool(SourceInfo);
7052bool emitCastFixedPointUint8(SourceInfo);
7053bool emitCastFixedPointSint8(SourceInfo);
7054bool emitCastFixedPointUint16(SourceInfo);
7055bool emitCastFixedPointSint16(SourceInfo);
7056bool emitCastFixedPointUint32(SourceInfo);
7057bool emitCastFixedPointSint32(SourceInfo);
7058bool emitCastFixedPointUint64(SourceInfo);
7059bool emitCastFixedPointSint64(SourceInfo);
7060bool emitCastFixedPointBool(SourceInfo);
7061#endif
7062#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7063[[nodiscard]] bool emitCast(PrimType, PrimType, SourceInfo I);
7064#endif
7065#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
7066bool
7067#if defined(GET_EVAL_IMPL)
7068EvalEmitter
7069#else
7070ByteCodeEmitter
7071#endif
7072::emitCast(PrimType T0, PrimType T1, SourceInfo I) {
7073 switch (T0) {
7074 case PT_Uint8:
7075 switch (T1) {
7076 case PT_Uint8:
7077 return emitCastUint8Uint8(I);
7078 case PT_Sint8:
7079 return emitCastUint8Sint8(I);
7080 case PT_Uint16:
7081 return emitCastUint8Uint16(I);
7082 case PT_Sint16:
7083 return emitCastUint8Sint16(I);
7084 case PT_Uint32:
7085 return emitCastUint8Uint32(I);
7086 case PT_Sint32:
7087 return emitCastUint8Sint32(I);
7088 case PT_Uint64:
7089 return emitCastUint8Uint64(I);
7090 case PT_Sint64:
7091 return emitCastUint8Sint64(I);
7092 case PT_Bool:
7093 return emitCastUint8Bool(I);
7094 default: llvm_unreachable("invalid type: emitCast");
7095 }
7096 llvm_unreachable("invalid enum value");
7097 case PT_Sint8:
7098 switch (T1) {
7099 case PT_Uint8:
7100 return emitCastSint8Uint8(I);
7101 case PT_Sint8:
7102 return emitCastSint8Sint8(I);
7103 case PT_Uint16:
7104 return emitCastSint8Uint16(I);
7105 case PT_Sint16:
7106 return emitCastSint8Sint16(I);
7107 case PT_Uint32:
7108 return emitCastSint8Uint32(I);
7109 case PT_Sint32:
7110 return emitCastSint8Sint32(I);
7111 case PT_Uint64:
7112 return emitCastSint8Uint64(I);
7113 case PT_Sint64:
7114 return emitCastSint8Sint64(I);
7115 case PT_Bool:
7116 return emitCastSint8Bool(I);
7117 default: llvm_unreachable("invalid type: emitCast");
7118 }
7119 llvm_unreachable("invalid enum value");
7120 case PT_Uint16:
7121 switch (T1) {
7122 case PT_Uint8:
7123 return emitCastUint16Uint8(I);
7124 case PT_Sint8:
7125 return emitCastUint16Sint8(I);
7126 case PT_Uint16:
7127 return emitCastUint16Uint16(I);
7128 case PT_Sint16:
7129 return emitCastUint16Sint16(I);
7130 case PT_Uint32:
7131 return emitCastUint16Uint32(I);
7132 case PT_Sint32:
7133 return emitCastUint16Sint32(I);
7134 case PT_Uint64:
7135 return emitCastUint16Uint64(I);
7136 case PT_Sint64:
7137 return emitCastUint16Sint64(I);
7138 case PT_Bool:
7139 return emitCastUint16Bool(I);
7140 default: llvm_unreachable("invalid type: emitCast");
7141 }
7142 llvm_unreachable("invalid enum value");
7143 case PT_Sint16:
7144 switch (T1) {
7145 case PT_Uint8:
7146 return emitCastSint16Uint8(I);
7147 case PT_Sint8:
7148 return emitCastSint16Sint8(I);
7149 case PT_Uint16:
7150 return emitCastSint16Uint16(I);
7151 case PT_Sint16:
7152 return emitCastSint16Sint16(I);
7153 case PT_Uint32:
7154 return emitCastSint16Uint32(I);
7155 case PT_Sint32:
7156 return emitCastSint16Sint32(I);
7157 case PT_Uint64:
7158 return emitCastSint16Uint64(I);
7159 case PT_Sint64:
7160 return emitCastSint16Sint64(I);
7161 case PT_Bool:
7162 return emitCastSint16Bool(I);
7163 default: llvm_unreachable("invalid type: emitCast");
7164 }
7165 llvm_unreachable("invalid enum value");
7166 case PT_Uint32:
7167 switch (T1) {
7168 case PT_Uint8:
7169 return emitCastUint32Uint8(I);
7170 case PT_Sint8:
7171 return emitCastUint32Sint8(I);
7172 case PT_Uint16:
7173 return emitCastUint32Uint16(I);
7174 case PT_Sint16:
7175 return emitCastUint32Sint16(I);
7176 case PT_Uint32:
7177 return emitCastUint32Uint32(I);
7178 case PT_Sint32:
7179 return emitCastUint32Sint32(I);
7180 case PT_Uint64:
7181 return emitCastUint32Uint64(I);
7182 case PT_Sint64:
7183 return emitCastUint32Sint64(I);
7184 case PT_Bool:
7185 return emitCastUint32Bool(I);
7186 default: llvm_unreachable("invalid type: emitCast");
7187 }
7188 llvm_unreachable("invalid enum value");
7189 case PT_Sint32:
7190 switch (T1) {
7191 case PT_Uint8:
7192 return emitCastSint32Uint8(I);
7193 case PT_Sint8:
7194 return emitCastSint32Sint8(I);
7195 case PT_Uint16:
7196 return emitCastSint32Uint16(I);
7197 case PT_Sint16:
7198 return emitCastSint32Sint16(I);
7199 case PT_Uint32:
7200 return emitCastSint32Uint32(I);
7201 case PT_Sint32:
7202 return emitCastSint32Sint32(I);
7203 case PT_Uint64:
7204 return emitCastSint32Uint64(I);
7205 case PT_Sint64:
7206 return emitCastSint32Sint64(I);
7207 case PT_Bool:
7208 return emitCastSint32Bool(I);
7209 default: llvm_unreachable("invalid type: emitCast");
7210 }
7211 llvm_unreachable("invalid enum value");
7212 case PT_Uint64:
7213 switch (T1) {
7214 case PT_Uint8:
7215 return emitCastUint64Uint8(I);
7216 case PT_Sint8:
7217 return emitCastUint64Sint8(I);
7218 case PT_Uint16:
7219 return emitCastUint64Uint16(I);
7220 case PT_Sint16:
7221 return emitCastUint64Sint16(I);
7222 case PT_Uint32:
7223 return emitCastUint64Uint32(I);
7224 case PT_Sint32:
7225 return emitCastUint64Sint32(I);
7226 case PT_Uint64:
7227 return emitCastUint64Uint64(I);
7228 case PT_Sint64:
7229 return emitCastUint64Sint64(I);
7230 case PT_Bool:
7231 return emitCastUint64Bool(I);
7232 default: llvm_unreachable("invalid type: emitCast");
7233 }
7234 llvm_unreachable("invalid enum value");
7235 case PT_Sint64:
7236 switch (T1) {
7237 case PT_Uint8:
7238 return emitCastSint64Uint8(I);
7239 case PT_Sint8:
7240 return emitCastSint64Sint8(I);
7241 case PT_Uint16:
7242 return emitCastSint64Uint16(I);
7243 case PT_Sint16:
7244 return emitCastSint64Sint16(I);
7245 case PT_Uint32:
7246 return emitCastSint64Uint32(I);
7247 case PT_Sint32:
7248 return emitCastSint64Sint32(I);
7249 case PT_Uint64:
7250 return emitCastSint64Uint64(I);
7251 case PT_Sint64:
7252 return emitCastSint64Sint64(I);
7253 case PT_Bool:
7254 return emitCastSint64Bool(I);
7255 default: llvm_unreachable("invalid type: emitCast");
7256 }
7257 llvm_unreachable("invalid enum value");
7258 case PT_Bool:
7259 switch (T1) {
7260 case PT_Uint8:
7261 return emitCastBoolUint8(I);
7262 case PT_Sint8:
7263 return emitCastBoolSint8(I);
7264 case PT_Uint16:
7265 return emitCastBoolUint16(I);
7266 case PT_Sint16:
7267 return emitCastBoolSint16(I);
7268 case PT_Uint32:
7269 return emitCastBoolUint32(I);
7270 case PT_Sint32:
7271 return emitCastBoolSint32(I);
7272 case PT_Uint64:
7273 return emitCastBoolUint64(I);
7274 case PT_Sint64:
7275 return emitCastBoolSint64(I);
7276 case PT_Bool:
7277 return emitCastBoolBool(I);
7278 default: llvm_unreachable("invalid type: emitCast");
7279 }
7280 llvm_unreachable("invalid enum value");
7281 case PT_IntAP:
7282 switch (T1) {
7283 case PT_Uint8:
7284 return emitCastIntAPUint8(I);
7285 case PT_Sint8:
7286 return emitCastIntAPSint8(I);
7287 case PT_Uint16:
7288 return emitCastIntAPUint16(I);
7289 case PT_Sint16:
7290 return emitCastIntAPSint16(I);
7291 case PT_Uint32:
7292 return emitCastIntAPUint32(I);
7293 case PT_Sint32:
7294 return emitCastIntAPSint32(I);
7295 case PT_Uint64:
7296 return emitCastIntAPUint64(I);
7297 case PT_Sint64:
7298 return emitCastIntAPSint64(I);
7299 case PT_Bool:
7300 return emitCastIntAPBool(I);
7301 default: llvm_unreachable("invalid type: emitCast");
7302 }
7303 llvm_unreachable("invalid enum value");
7304 case PT_IntAPS:
7305 switch (T1) {
7306 case PT_Uint8:
7307 return emitCastIntAPSUint8(I);
7308 case PT_Sint8:
7309 return emitCastIntAPSSint8(I);
7310 case PT_Uint16:
7311 return emitCastIntAPSUint16(I);
7312 case PT_Sint16:
7313 return emitCastIntAPSSint16(I);
7314 case PT_Uint32:
7315 return emitCastIntAPSUint32(I);
7316 case PT_Sint32:
7317 return emitCastIntAPSSint32(I);
7318 case PT_Uint64:
7319 return emitCastIntAPSUint64(I);
7320 case PT_Sint64:
7321 return emitCastIntAPSSint64(I);
7322 case PT_Bool:
7323 return emitCastIntAPSBool(I);
7324 default: llvm_unreachable("invalid type: emitCast");
7325 }
7326 llvm_unreachable("invalid enum value");
7327 case PT_FixedPoint:
7328 switch (T1) {
7329 case PT_Uint8:
7330 return emitCastFixedPointUint8(I);
7331 case PT_Sint8:
7332 return emitCastFixedPointSint8(I);
7333 case PT_Uint16:
7334 return emitCastFixedPointUint16(I);
7335 case PT_Sint16:
7336 return emitCastFixedPointSint16(I);
7337 case PT_Uint32:
7338 return emitCastFixedPointUint32(I);
7339 case PT_Sint32:
7340 return emitCastFixedPointSint32(I);
7341 case PT_Uint64:
7342 return emitCastFixedPointUint64(I);
7343 case PT_Sint64:
7344 return emitCastFixedPointSint64(I);
7345 case PT_Bool:
7346 return emitCastFixedPointBool(I);
7347 default: llvm_unreachable("invalid type: emitCast");
7348 }
7349 llvm_unreachable("invalid enum value");
7350 default: llvm_unreachable("invalid type: emitCast");
7351 }
7352 llvm_unreachable("invalid enum value");
7353}
7354#endif
7355#ifdef GET_LINK_IMPL
7356bool ByteCodeEmitter::emitCastUint8Uint8(SourceInfo L) {
7357 return emitOp<>(OP_CastUint8Uint8, L);
7358}
7359bool ByteCodeEmitter::emitCastUint8Sint8(SourceInfo L) {
7360 return emitOp<>(OP_CastUint8Sint8, L);
7361}
7362bool ByteCodeEmitter::emitCastUint8Uint16(SourceInfo L) {
7363 return emitOp<>(OP_CastUint8Uint16, L);
7364}
7365bool ByteCodeEmitter::emitCastUint8Sint16(SourceInfo L) {
7366 return emitOp<>(OP_CastUint8Sint16, L);
7367}
7368bool ByteCodeEmitter::emitCastUint8Uint32(SourceInfo L) {
7369 return emitOp<>(OP_CastUint8Uint32, L);
7370}
7371bool ByteCodeEmitter::emitCastUint8Sint32(SourceInfo L) {
7372 return emitOp<>(OP_CastUint8Sint32, L);
7373}
7374bool ByteCodeEmitter::emitCastUint8Uint64(SourceInfo L) {
7375 return emitOp<>(OP_CastUint8Uint64, L);
7376}
7377bool ByteCodeEmitter::emitCastUint8Sint64(SourceInfo L) {
7378 return emitOp<>(OP_CastUint8Sint64, L);
7379}
7380bool ByteCodeEmitter::emitCastUint8Bool(SourceInfo L) {
7381 return emitOp<>(OP_CastUint8Bool, L);
7382}
7383bool ByteCodeEmitter::emitCastSint8Uint8(SourceInfo L) {
7384 return emitOp<>(OP_CastSint8Uint8, L);
7385}
7386bool ByteCodeEmitter::emitCastSint8Sint8(SourceInfo L) {
7387 return emitOp<>(OP_CastSint8Sint8, L);
7388}
7389bool ByteCodeEmitter::emitCastSint8Uint16(SourceInfo L) {
7390 return emitOp<>(OP_CastSint8Uint16, L);
7391}
7392bool ByteCodeEmitter::emitCastSint8Sint16(SourceInfo L) {
7393 return emitOp<>(OP_CastSint8Sint16, L);
7394}
7395bool ByteCodeEmitter::emitCastSint8Uint32(SourceInfo L) {
7396 return emitOp<>(OP_CastSint8Uint32, L);
7397}
7398bool ByteCodeEmitter::emitCastSint8Sint32(SourceInfo L) {
7399 return emitOp<>(OP_CastSint8Sint32, L);
7400}
7401bool ByteCodeEmitter::emitCastSint8Uint64(SourceInfo L) {
7402 return emitOp<>(OP_CastSint8Uint64, L);
7403}
7404bool ByteCodeEmitter::emitCastSint8Sint64(SourceInfo L) {
7405 return emitOp<>(OP_CastSint8Sint64, L);
7406}
7407bool ByteCodeEmitter::emitCastSint8Bool(SourceInfo L) {
7408 return emitOp<>(OP_CastSint8Bool, L);
7409}
7410bool ByteCodeEmitter::emitCastUint16Uint8(SourceInfo L) {
7411 return emitOp<>(OP_CastUint16Uint8, L);
7412}
7413bool ByteCodeEmitter::emitCastUint16Sint8(SourceInfo L) {
7414 return emitOp<>(OP_CastUint16Sint8, L);
7415}
7416bool ByteCodeEmitter::emitCastUint16Uint16(SourceInfo L) {
7417 return emitOp<>(OP_CastUint16Uint16, L);
7418}
7419bool ByteCodeEmitter::emitCastUint16Sint16(SourceInfo L) {
7420 return emitOp<>(OP_CastUint16Sint16, L);
7421}
7422bool ByteCodeEmitter::emitCastUint16Uint32(SourceInfo L) {
7423 return emitOp<>(OP_CastUint16Uint32, L);
7424}
7425bool ByteCodeEmitter::emitCastUint16Sint32(SourceInfo L) {
7426 return emitOp<>(OP_CastUint16Sint32, L);
7427}
7428bool ByteCodeEmitter::emitCastUint16Uint64(SourceInfo L) {
7429 return emitOp<>(OP_CastUint16Uint64, L);
7430}
7431bool ByteCodeEmitter::emitCastUint16Sint64(SourceInfo L) {
7432 return emitOp<>(OP_CastUint16Sint64, L);
7433}
7434bool ByteCodeEmitter::emitCastUint16Bool(SourceInfo L) {
7435 return emitOp<>(OP_CastUint16Bool, L);
7436}
7437bool ByteCodeEmitter::emitCastSint16Uint8(SourceInfo L) {
7438 return emitOp<>(OP_CastSint16Uint8, L);
7439}
7440bool ByteCodeEmitter::emitCastSint16Sint8(SourceInfo L) {
7441 return emitOp<>(OP_CastSint16Sint8, L);
7442}
7443bool ByteCodeEmitter::emitCastSint16Uint16(SourceInfo L) {
7444 return emitOp<>(OP_CastSint16Uint16, L);
7445}
7446bool ByteCodeEmitter::emitCastSint16Sint16(SourceInfo L) {
7447 return emitOp<>(OP_CastSint16Sint16, L);
7448}
7449bool ByteCodeEmitter::emitCastSint16Uint32(SourceInfo L) {
7450 return emitOp<>(OP_CastSint16Uint32, L);
7451}
7452bool ByteCodeEmitter::emitCastSint16Sint32(SourceInfo L) {
7453 return emitOp<>(OP_CastSint16Sint32, L);
7454}
7455bool ByteCodeEmitter::emitCastSint16Uint64(SourceInfo L) {
7456 return emitOp<>(OP_CastSint16Uint64, L);
7457}
7458bool ByteCodeEmitter::emitCastSint16Sint64(SourceInfo L) {
7459 return emitOp<>(OP_CastSint16Sint64, L);
7460}
7461bool ByteCodeEmitter::emitCastSint16Bool(SourceInfo L) {
7462 return emitOp<>(OP_CastSint16Bool, L);
7463}
7464bool ByteCodeEmitter::emitCastUint32Uint8(SourceInfo L) {
7465 return emitOp<>(OP_CastUint32Uint8, L);
7466}
7467bool ByteCodeEmitter::emitCastUint32Sint8(SourceInfo L) {
7468 return emitOp<>(OP_CastUint32Sint8, L);
7469}
7470bool ByteCodeEmitter::emitCastUint32Uint16(SourceInfo L) {
7471 return emitOp<>(OP_CastUint32Uint16, L);
7472}
7473bool ByteCodeEmitter::emitCastUint32Sint16(SourceInfo L) {
7474 return emitOp<>(OP_CastUint32Sint16, L);
7475}
7476bool ByteCodeEmitter::emitCastUint32Uint32(SourceInfo L) {
7477 return emitOp<>(OP_CastUint32Uint32, L);
7478}
7479bool ByteCodeEmitter::emitCastUint32Sint32(SourceInfo L) {
7480 return emitOp<>(OP_CastUint32Sint32, L);
7481}
7482bool ByteCodeEmitter::emitCastUint32Uint64(SourceInfo L) {
7483 return emitOp<>(OP_CastUint32Uint64, L);
7484}
7485bool ByteCodeEmitter::emitCastUint32Sint64(SourceInfo L) {
7486 return emitOp<>(OP_CastUint32Sint64, L);
7487}
7488bool ByteCodeEmitter::emitCastUint32Bool(SourceInfo L) {
7489 return emitOp<>(OP_CastUint32Bool, L);
7490}
7491bool ByteCodeEmitter::emitCastSint32Uint8(SourceInfo L) {
7492 return emitOp<>(OP_CastSint32Uint8, L);
7493}
7494bool ByteCodeEmitter::emitCastSint32Sint8(SourceInfo L) {
7495 return emitOp<>(OP_CastSint32Sint8, L);
7496}
7497bool ByteCodeEmitter::emitCastSint32Uint16(SourceInfo L) {
7498 return emitOp<>(OP_CastSint32Uint16, L);
7499}
7500bool ByteCodeEmitter::emitCastSint32Sint16(SourceInfo L) {
7501 return emitOp<>(OP_CastSint32Sint16, L);
7502}
7503bool ByteCodeEmitter::emitCastSint32Uint32(SourceInfo L) {
7504 return emitOp<>(OP_CastSint32Uint32, L);
7505}
7506bool ByteCodeEmitter::emitCastSint32Sint32(SourceInfo L) {
7507 return emitOp<>(OP_CastSint32Sint32, L);
7508}
7509bool ByteCodeEmitter::emitCastSint32Uint64(SourceInfo L) {
7510 return emitOp<>(OP_CastSint32Uint64, L);
7511}
7512bool ByteCodeEmitter::emitCastSint32Sint64(SourceInfo L) {
7513 return emitOp<>(OP_CastSint32Sint64, L);
7514}
7515bool ByteCodeEmitter::emitCastSint32Bool(SourceInfo L) {
7516 return emitOp<>(OP_CastSint32Bool, L);
7517}
7518bool ByteCodeEmitter::emitCastUint64Uint8(SourceInfo L) {
7519 return emitOp<>(OP_CastUint64Uint8, L);
7520}
7521bool ByteCodeEmitter::emitCastUint64Sint8(SourceInfo L) {
7522 return emitOp<>(OP_CastUint64Sint8, L);
7523}
7524bool ByteCodeEmitter::emitCastUint64Uint16(SourceInfo L) {
7525 return emitOp<>(OP_CastUint64Uint16, L);
7526}
7527bool ByteCodeEmitter::emitCastUint64Sint16(SourceInfo L) {
7528 return emitOp<>(OP_CastUint64Sint16, L);
7529}
7530bool ByteCodeEmitter::emitCastUint64Uint32(SourceInfo L) {
7531 return emitOp<>(OP_CastUint64Uint32, L);
7532}
7533bool ByteCodeEmitter::emitCastUint64Sint32(SourceInfo L) {
7534 return emitOp<>(OP_CastUint64Sint32, L);
7535}
7536bool ByteCodeEmitter::emitCastUint64Uint64(SourceInfo L) {
7537 return emitOp<>(OP_CastUint64Uint64, L);
7538}
7539bool ByteCodeEmitter::emitCastUint64Sint64(SourceInfo L) {
7540 return emitOp<>(OP_CastUint64Sint64, L);
7541}
7542bool ByteCodeEmitter::emitCastUint64Bool(SourceInfo L) {
7543 return emitOp<>(OP_CastUint64Bool, L);
7544}
7545bool ByteCodeEmitter::emitCastSint64Uint8(SourceInfo L) {
7546 return emitOp<>(OP_CastSint64Uint8, L);
7547}
7548bool ByteCodeEmitter::emitCastSint64Sint8(SourceInfo L) {
7549 return emitOp<>(OP_CastSint64Sint8, L);
7550}
7551bool ByteCodeEmitter::emitCastSint64Uint16(SourceInfo L) {
7552 return emitOp<>(OP_CastSint64Uint16, L);
7553}
7554bool ByteCodeEmitter::emitCastSint64Sint16(SourceInfo L) {
7555 return emitOp<>(OP_CastSint64Sint16, L);
7556}
7557bool ByteCodeEmitter::emitCastSint64Uint32(SourceInfo L) {
7558 return emitOp<>(OP_CastSint64Uint32, L);
7559}
7560bool ByteCodeEmitter::emitCastSint64Sint32(SourceInfo L) {
7561 return emitOp<>(OP_CastSint64Sint32, L);
7562}
7563bool ByteCodeEmitter::emitCastSint64Uint64(SourceInfo L) {
7564 return emitOp<>(OP_CastSint64Uint64, L);
7565}
7566bool ByteCodeEmitter::emitCastSint64Sint64(SourceInfo L) {
7567 return emitOp<>(OP_CastSint64Sint64, L);
7568}
7569bool ByteCodeEmitter::emitCastSint64Bool(SourceInfo L) {
7570 return emitOp<>(OP_CastSint64Bool, L);
7571}
7572bool ByteCodeEmitter::emitCastBoolUint8(SourceInfo L) {
7573 return emitOp<>(OP_CastBoolUint8, L);
7574}
7575bool ByteCodeEmitter::emitCastBoolSint8(SourceInfo L) {
7576 return emitOp<>(OP_CastBoolSint8, L);
7577}
7578bool ByteCodeEmitter::emitCastBoolUint16(SourceInfo L) {
7579 return emitOp<>(OP_CastBoolUint16, L);
7580}
7581bool ByteCodeEmitter::emitCastBoolSint16(SourceInfo L) {
7582 return emitOp<>(OP_CastBoolSint16, L);
7583}
7584bool ByteCodeEmitter::emitCastBoolUint32(SourceInfo L) {
7585 return emitOp<>(OP_CastBoolUint32, L);
7586}
7587bool ByteCodeEmitter::emitCastBoolSint32(SourceInfo L) {
7588 return emitOp<>(OP_CastBoolSint32, L);
7589}
7590bool ByteCodeEmitter::emitCastBoolUint64(SourceInfo L) {
7591 return emitOp<>(OP_CastBoolUint64, L);
7592}
7593bool ByteCodeEmitter::emitCastBoolSint64(SourceInfo L) {
7594 return emitOp<>(OP_CastBoolSint64, L);
7595}
7596bool ByteCodeEmitter::emitCastBoolBool(SourceInfo L) {
7597 return emitOp<>(OP_CastBoolBool, L);
7598}
7599bool ByteCodeEmitter::emitCastIntAPUint8(SourceInfo L) {
7600 return emitOp<>(OP_CastIntAPUint8, L);
7601}
7602bool ByteCodeEmitter::emitCastIntAPSint8(SourceInfo L) {
7603 return emitOp<>(OP_CastIntAPSint8, L);
7604}
7605bool ByteCodeEmitter::emitCastIntAPUint16(SourceInfo L) {
7606 return emitOp<>(OP_CastIntAPUint16, L);
7607}
7608bool ByteCodeEmitter::emitCastIntAPSint16(SourceInfo L) {
7609 return emitOp<>(OP_CastIntAPSint16, L);
7610}
7611bool ByteCodeEmitter::emitCastIntAPUint32(SourceInfo L) {
7612 return emitOp<>(OP_CastIntAPUint32, L);
7613}
7614bool ByteCodeEmitter::emitCastIntAPSint32(SourceInfo L) {
7615 return emitOp<>(OP_CastIntAPSint32, L);
7616}
7617bool ByteCodeEmitter::emitCastIntAPUint64(SourceInfo L) {
7618 return emitOp<>(OP_CastIntAPUint64, L);
7619}
7620bool ByteCodeEmitter::emitCastIntAPSint64(SourceInfo L) {
7621 return emitOp<>(OP_CastIntAPSint64, L);
7622}
7623bool ByteCodeEmitter::emitCastIntAPBool(SourceInfo L) {
7624 return emitOp<>(OP_CastIntAPBool, L);
7625}
7626bool ByteCodeEmitter::emitCastIntAPSUint8(SourceInfo L) {
7627 return emitOp<>(OP_CastIntAPSUint8, L);
7628}
7629bool ByteCodeEmitter::emitCastIntAPSSint8(SourceInfo L) {
7630 return emitOp<>(OP_CastIntAPSSint8, L);
7631}
7632bool ByteCodeEmitter::emitCastIntAPSUint16(SourceInfo L) {
7633 return emitOp<>(OP_CastIntAPSUint16, L);
7634}
7635bool ByteCodeEmitter::emitCastIntAPSSint16(SourceInfo L) {
7636 return emitOp<>(OP_CastIntAPSSint16, L);
7637}
7638bool ByteCodeEmitter::emitCastIntAPSUint32(SourceInfo L) {
7639 return emitOp<>(OP_CastIntAPSUint32, L);
7640}
7641bool ByteCodeEmitter::emitCastIntAPSSint32(SourceInfo L) {
7642 return emitOp<>(OP_CastIntAPSSint32, L);
7643}
7644bool ByteCodeEmitter::emitCastIntAPSUint64(SourceInfo L) {
7645 return emitOp<>(OP_CastIntAPSUint64, L);
7646}
7647bool ByteCodeEmitter::emitCastIntAPSSint64(SourceInfo L) {
7648 return emitOp<>(OP_CastIntAPSSint64, L);
7649}
7650bool ByteCodeEmitter::emitCastIntAPSBool(SourceInfo L) {
7651 return emitOp<>(OP_CastIntAPSBool, L);
7652}
7653bool ByteCodeEmitter::emitCastFixedPointUint8(SourceInfo L) {
7654 return emitOp<>(OP_CastFixedPointUint8, L);
7655}
7656bool ByteCodeEmitter::emitCastFixedPointSint8(SourceInfo L) {
7657 return emitOp<>(OP_CastFixedPointSint8, L);
7658}
7659bool ByteCodeEmitter::emitCastFixedPointUint16(SourceInfo L) {
7660 return emitOp<>(OP_CastFixedPointUint16, L);
7661}
7662bool ByteCodeEmitter::emitCastFixedPointSint16(SourceInfo L) {
7663 return emitOp<>(OP_CastFixedPointSint16, L);
7664}
7665bool ByteCodeEmitter::emitCastFixedPointUint32(SourceInfo L) {
7666 return emitOp<>(OP_CastFixedPointUint32, L);
7667}
7668bool ByteCodeEmitter::emitCastFixedPointSint32(SourceInfo L) {
7669 return emitOp<>(OP_CastFixedPointSint32, L);
7670}
7671bool ByteCodeEmitter::emitCastFixedPointUint64(SourceInfo L) {
7672 return emitOp<>(OP_CastFixedPointUint64, L);
7673}
7674bool ByteCodeEmitter::emitCastFixedPointSint64(SourceInfo L) {
7675 return emitOp<>(OP_CastFixedPointSint64, L);
7676}
7677bool ByteCodeEmitter::emitCastFixedPointBool(SourceInfo L) {
7678 return emitOp<>(OP_CastFixedPointBool, L);
7679}
7680#endif
7681#ifdef GET_EVAL_IMPL
7682bool EvalEmitter::emitCastUint8Uint8(SourceInfo L) {
7683 if (!isActive()) return true;
7684 CurrentSource = L;
7685 return Cast<PT_Uint8, PT_Uint8>(S, CodePtr());
7686}
7687bool EvalEmitter::emitCastUint8Sint8(SourceInfo L) {
7688 if (!isActive()) return true;
7689 CurrentSource = L;
7690 return Cast<PT_Uint8, PT_Sint8>(S, CodePtr());
7691}
7692bool EvalEmitter::emitCastUint8Uint16(SourceInfo L) {
7693 if (!isActive()) return true;
7694 CurrentSource = L;
7695 return Cast<PT_Uint8, PT_Uint16>(S, CodePtr());
7696}
7697bool EvalEmitter::emitCastUint8Sint16(SourceInfo L) {
7698 if (!isActive()) return true;
7699 CurrentSource = L;
7700 return Cast<PT_Uint8, PT_Sint16>(S, CodePtr());
7701}
7702bool EvalEmitter::emitCastUint8Uint32(SourceInfo L) {
7703 if (!isActive()) return true;
7704 CurrentSource = L;
7705 return Cast<PT_Uint8, PT_Uint32>(S, CodePtr());
7706}
7707bool EvalEmitter::emitCastUint8Sint32(SourceInfo L) {
7708 if (!isActive()) return true;
7709 CurrentSource = L;
7710 return Cast<PT_Uint8, PT_Sint32>(S, CodePtr());
7711}
7712bool EvalEmitter::emitCastUint8Uint64(SourceInfo L) {
7713 if (!isActive()) return true;
7714 CurrentSource = L;
7715 return Cast<PT_Uint8, PT_Uint64>(S, CodePtr());
7716}
7717bool EvalEmitter::emitCastUint8Sint64(SourceInfo L) {
7718 if (!isActive()) return true;
7719 CurrentSource = L;
7720 return Cast<PT_Uint8, PT_Sint64>(S, CodePtr());
7721}
7722bool EvalEmitter::emitCastUint8Bool(SourceInfo L) {
7723 if (!isActive()) return true;
7724 CurrentSource = L;
7725 return Cast<PT_Uint8, PT_Bool>(S, CodePtr());
7726}
7727bool EvalEmitter::emitCastSint8Uint8(SourceInfo L) {
7728 if (!isActive()) return true;
7729 CurrentSource = L;
7730 return Cast<PT_Sint8, PT_Uint8>(S, CodePtr());
7731}
7732bool EvalEmitter::emitCastSint8Sint8(SourceInfo L) {
7733 if (!isActive()) return true;
7734 CurrentSource = L;
7735 return Cast<PT_Sint8, PT_Sint8>(S, CodePtr());
7736}
7737bool EvalEmitter::emitCastSint8Uint16(SourceInfo L) {
7738 if (!isActive()) return true;
7739 CurrentSource = L;
7740 return Cast<PT_Sint8, PT_Uint16>(S, CodePtr());
7741}
7742bool EvalEmitter::emitCastSint8Sint16(SourceInfo L) {
7743 if (!isActive()) return true;
7744 CurrentSource = L;
7745 return Cast<PT_Sint8, PT_Sint16>(S, CodePtr());
7746}
7747bool EvalEmitter::emitCastSint8Uint32(SourceInfo L) {
7748 if (!isActive()) return true;
7749 CurrentSource = L;
7750 return Cast<PT_Sint8, PT_Uint32>(S, CodePtr());
7751}
7752bool EvalEmitter::emitCastSint8Sint32(SourceInfo L) {
7753 if (!isActive()) return true;
7754 CurrentSource = L;
7755 return Cast<PT_Sint8, PT_Sint32>(S, CodePtr());
7756}
7757bool EvalEmitter::emitCastSint8Uint64(SourceInfo L) {
7758 if (!isActive()) return true;
7759 CurrentSource = L;
7760 return Cast<PT_Sint8, PT_Uint64>(S, CodePtr());
7761}
7762bool EvalEmitter::emitCastSint8Sint64(SourceInfo L) {
7763 if (!isActive()) return true;
7764 CurrentSource = L;
7765 return Cast<PT_Sint8, PT_Sint64>(S, CodePtr());
7766}
7767bool EvalEmitter::emitCastSint8Bool(SourceInfo L) {
7768 if (!isActive()) return true;
7769 CurrentSource = L;
7770 return Cast<PT_Sint8, PT_Bool>(S, CodePtr());
7771}
7772bool EvalEmitter::emitCastUint16Uint8(SourceInfo L) {
7773 if (!isActive()) return true;
7774 CurrentSource = L;
7775 return Cast<PT_Uint16, PT_Uint8>(S, CodePtr());
7776}
7777bool EvalEmitter::emitCastUint16Sint8(SourceInfo L) {
7778 if (!isActive()) return true;
7779 CurrentSource = L;
7780 return Cast<PT_Uint16, PT_Sint8>(S, CodePtr());
7781}
7782bool EvalEmitter::emitCastUint16Uint16(SourceInfo L) {
7783 if (!isActive()) return true;
7784 CurrentSource = L;
7785 return Cast<PT_Uint16, PT_Uint16>(S, CodePtr());
7786}
7787bool EvalEmitter::emitCastUint16Sint16(SourceInfo L) {
7788 if (!isActive()) return true;
7789 CurrentSource = L;
7790 return Cast<PT_Uint16, PT_Sint16>(S, CodePtr());
7791}
7792bool EvalEmitter::emitCastUint16Uint32(SourceInfo L) {
7793 if (!isActive()) return true;
7794 CurrentSource = L;
7795 return Cast<PT_Uint16, PT_Uint32>(S, CodePtr());
7796}
7797bool EvalEmitter::emitCastUint16Sint32(SourceInfo L) {
7798 if (!isActive()) return true;
7799 CurrentSource = L;
7800 return Cast<PT_Uint16, PT_Sint32>(S, CodePtr());
7801}
7802bool EvalEmitter::emitCastUint16Uint64(SourceInfo L) {
7803 if (!isActive()) return true;
7804 CurrentSource = L;
7805 return Cast<PT_Uint16, PT_Uint64>(S, CodePtr());
7806}
7807bool EvalEmitter::emitCastUint16Sint64(SourceInfo L) {
7808 if (!isActive()) return true;
7809 CurrentSource = L;
7810 return Cast<PT_Uint16, PT_Sint64>(S, CodePtr());
7811}
7812bool EvalEmitter::emitCastUint16Bool(SourceInfo L) {
7813 if (!isActive()) return true;
7814 CurrentSource = L;
7815 return Cast<PT_Uint16, PT_Bool>(S, CodePtr());
7816}
7817bool EvalEmitter::emitCastSint16Uint8(SourceInfo L) {
7818 if (!isActive()) return true;
7819 CurrentSource = L;
7820 return Cast<PT_Sint16, PT_Uint8>(S, CodePtr());
7821}
7822bool EvalEmitter::emitCastSint16Sint8(SourceInfo L) {
7823 if (!isActive()) return true;
7824 CurrentSource = L;
7825 return Cast<PT_Sint16, PT_Sint8>(S, CodePtr());
7826}
7827bool EvalEmitter::emitCastSint16Uint16(SourceInfo L) {
7828 if (!isActive()) return true;
7829 CurrentSource = L;
7830 return Cast<PT_Sint16, PT_Uint16>(S, CodePtr());
7831}
7832bool EvalEmitter::emitCastSint16Sint16(SourceInfo L) {
7833 if (!isActive()) return true;
7834 CurrentSource = L;
7835 return Cast<PT_Sint16, PT_Sint16>(S, CodePtr());
7836}
7837bool EvalEmitter::emitCastSint16Uint32(SourceInfo L) {
7838 if (!isActive()) return true;
7839 CurrentSource = L;
7840 return Cast<PT_Sint16, PT_Uint32>(S, CodePtr());
7841}
7842bool EvalEmitter::emitCastSint16Sint32(SourceInfo L) {
7843 if (!isActive()) return true;
7844 CurrentSource = L;
7845 return Cast<PT_Sint16, PT_Sint32>(S, CodePtr());
7846}
7847bool EvalEmitter::emitCastSint16Uint64(SourceInfo L) {
7848 if (!isActive()) return true;
7849 CurrentSource = L;
7850 return Cast<PT_Sint16, PT_Uint64>(S, CodePtr());
7851}
7852bool EvalEmitter::emitCastSint16Sint64(SourceInfo L) {
7853 if (!isActive()) return true;
7854 CurrentSource = L;
7855 return Cast<PT_Sint16, PT_Sint64>(S, CodePtr());
7856}
7857bool EvalEmitter::emitCastSint16Bool(SourceInfo L) {
7858 if (!isActive()) return true;
7859 CurrentSource = L;
7860 return Cast<PT_Sint16, PT_Bool>(S, CodePtr());
7861}
7862bool EvalEmitter::emitCastUint32Uint8(SourceInfo L) {
7863 if (!isActive()) return true;
7864 CurrentSource = L;
7865 return Cast<PT_Uint32, PT_Uint8>(S, CodePtr());
7866}
7867bool EvalEmitter::emitCastUint32Sint8(SourceInfo L) {
7868 if (!isActive()) return true;
7869 CurrentSource = L;
7870 return Cast<PT_Uint32, PT_Sint8>(S, CodePtr());
7871}
7872bool EvalEmitter::emitCastUint32Uint16(SourceInfo L) {
7873 if (!isActive()) return true;
7874 CurrentSource = L;
7875 return Cast<PT_Uint32, PT_Uint16>(S, CodePtr());
7876}
7877bool EvalEmitter::emitCastUint32Sint16(SourceInfo L) {
7878 if (!isActive()) return true;
7879 CurrentSource = L;
7880 return Cast<PT_Uint32, PT_Sint16>(S, CodePtr());
7881}
7882bool EvalEmitter::emitCastUint32Uint32(SourceInfo L) {
7883 if (!isActive()) return true;
7884 CurrentSource = L;
7885 return Cast<PT_Uint32, PT_Uint32>(S, CodePtr());
7886}
7887bool EvalEmitter::emitCastUint32Sint32(SourceInfo L) {
7888 if (!isActive()) return true;
7889 CurrentSource = L;
7890 return Cast<PT_Uint32, PT_Sint32>(S, CodePtr());
7891}
7892bool EvalEmitter::emitCastUint32Uint64(SourceInfo L) {
7893 if (!isActive()) return true;
7894 CurrentSource = L;
7895 return Cast<PT_Uint32, PT_Uint64>(S, CodePtr());
7896}
7897bool EvalEmitter::emitCastUint32Sint64(SourceInfo L) {
7898 if (!isActive()) return true;
7899 CurrentSource = L;
7900 return Cast<PT_Uint32, PT_Sint64>(S, CodePtr());
7901}
7902bool EvalEmitter::emitCastUint32Bool(SourceInfo L) {
7903 if (!isActive()) return true;
7904 CurrentSource = L;
7905 return Cast<PT_Uint32, PT_Bool>(S, CodePtr());
7906}
7907bool EvalEmitter::emitCastSint32Uint8(SourceInfo L) {
7908 if (!isActive()) return true;
7909 CurrentSource = L;
7910 return Cast<PT_Sint32, PT_Uint8>(S, CodePtr());
7911}
7912bool EvalEmitter::emitCastSint32Sint8(SourceInfo L) {
7913 if (!isActive()) return true;
7914 CurrentSource = L;
7915 return Cast<PT_Sint32, PT_Sint8>(S, CodePtr());
7916}
7917bool EvalEmitter::emitCastSint32Uint16(SourceInfo L) {
7918 if (!isActive()) return true;
7919 CurrentSource = L;
7920 return Cast<PT_Sint32, PT_Uint16>(S, CodePtr());
7921}
7922bool EvalEmitter::emitCastSint32Sint16(SourceInfo L) {
7923 if (!isActive()) return true;
7924 CurrentSource = L;
7925 return Cast<PT_Sint32, PT_Sint16>(S, CodePtr());
7926}
7927bool EvalEmitter::emitCastSint32Uint32(SourceInfo L) {
7928 if (!isActive()) return true;
7929 CurrentSource = L;
7930 return Cast<PT_Sint32, PT_Uint32>(S, CodePtr());
7931}
7932bool EvalEmitter::emitCastSint32Sint32(SourceInfo L) {
7933 if (!isActive()) return true;
7934 CurrentSource = L;
7935 return Cast<PT_Sint32, PT_Sint32>(S, CodePtr());
7936}
7937bool EvalEmitter::emitCastSint32Uint64(SourceInfo L) {
7938 if (!isActive()) return true;
7939 CurrentSource = L;
7940 return Cast<PT_Sint32, PT_Uint64>(S, CodePtr());
7941}
7942bool EvalEmitter::emitCastSint32Sint64(SourceInfo L) {
7943 if (!isActive()) return true;
7944 CurrentSource = L;
7945 return Cast<PT_Sint32, PT_Sint64>(S, CodePtr());
7946}
7947bool EvalEmitter::emitCastSint32Bool(SourceInfo L) {
7948 if (!isActive()) return true;
7949 CurrentSource = L;
7950 return Cast<PT_Sint32, PT_Bool>(S, CodePtr());
7951}
7952bool EvalEmitter::emitCastUint64Uint8(SourceInfo L) {
7953 if (!isActive()) return true;
7954 CurrentSource = L;
7955 return Cast<PT_Uint64, PT_Uint8>(S, CodePtr());
7956}
7957bool EvalEmitter::emitCastUint64Sint8(SourceInfo L) {
7958 if (!isActive()) return true;
7959 CurrentSource = L;
7960 return Cast<PT_Uint64, PT_Sint8>(S, CodePtr());
7961}
7962bool EvalEmitter::emitCastUint64Uint16(SourceInfo L) {
7963 if (!isActive()) return true;
7964 CurrentSource = L;
7965 return Cast<PT_Uint64, PT_Uint16>(S, CodePtr());
7966}
7967bool EvalEmitter::emitCastUint64Sint16(SourceInfo L) {
7968 if (!isActive()) return true;
7969 CurrentSource = L;
7970 return Cast<PT_Uint64, PT_Sint16>(S, CodePtr());
7971}
7972bool EvalEmitter::emitCastUint64Uint32(SourceInfo L) {
7973 if (!isActive()) return true;
7974 CurrentSource = L;
7975 return Cast<PT_Uint64, PT_Uint32>(S, CodePtr());
7976}
7977bool EvalEmitter::emitCastUint64Sint32(SourceInfo L) {
7978 if (!isActive()) return true;
7979 CurrentSource = L;
7980 return Cast<PT_Uint64, PT_Sint32>(S, CodePtr());
7981}
7982bool EvalEmitter::emitCastUint64Uint64(SourceInfo L) {
7983 if (!isActive()) return true;
7984 CurrentSource = L;
7985 return Cast<PT_Uint64, PT_Uint64>(S, CodePtr());
7986}
7987bool EvalEmitter::emitCastUint64Sint64(SourceInfo L) {
7988 if (!isActive()) return true;
7989 CurrentSource = L;
7990 return Cast<PT_Uint64, PT_Sint64>(S, CodePtr());
7991}
7992bool EvalEmitter::emitCastUint64Bool(SourceInfo L) {
7993 if (!isActive()) return true;
7994 CurrentSource = L;
7995 return Cast<PT_Uint64, PT_Bool>(S, CodePtr());
7996}
7997bool EvalEmitter::emitCastSint64Uint8(SourceInfo L) {
7998 if (!isActive()) return true;
7999 CurrentSource = L;
8000 return Cast<PT_Sint64, PT_Uint8>(S, CodePtr());
8001}
8002bool EvalEmitter::emitCastSint64Sint8(SourceInfo L) {
8003 if (!isActive()) return true;
8004 CurrentSource = L;
8005 return Cast<PT_Sint64, PT_Sint8>(S, CodePtr());
8006}
8007bool EvalEmitter::emitCastSint64Uint16(SourceInfo L) {
8008 if (!isActive()) return true;
8009 CurrentSource = L;
8010 return Cast<PT_Sint64, PT_Uint16>(S, CodePtr());
8011}
8012bool EvalEmitter::emitCastSint64Sint16(SourceInfo L) {
8013 if (!isActive()) return true;
8014 CurrentSource = L;
8015 return Cast<PT_Sint64, PT_Sint16>(S, CodePtr());
8016}
8017bool EvalEmitter::emitCastSint64Uint32(SourceInfo L) {
8018 if (!isActive()) return true;
8019 CurrentSource = L;
8020 return Cast<PT_Sint64, PT_Uint32>(S, CodePtr());
8021}
8022bool EvalEmitter::emitCastSint64Sint32(SourceInfo L) {
8023 if (!isActive()) return true;
8024 CurrentSource = L;
8025 return Cast<PT_Sint64, PT_Sint32>(S, CodePtr());
8026}
8027bool EvalEmitter::emitCastSint64Uint64(SourceInfo L) {
8028 if (!isActive()) return true;
8029 CurrentSource = L;
8030 return Cast<PT_Sint64, PT_Uint64>(S, CodePtr());
8031}
8032bool EvalEmitter::emitCastSint64Sint64(SourceInfo L) {
8033 if (!isActive()) return true;
8034 CurrentSource = L;
8035 return Cast<PT_Sint64, PT_Sint64>(S, CodePtr());
8036}
8037bool EvalEmitter::emitCastSint64Bool(SourceInfo L) {
8038 if (!isActive()) return true;
8039 CurrentSource = L;
8040 return Cast<PT_Sint64, PT_Bool>(S, CodePtr());
8041}
8042bool EvalEmitter::emitCastBoolUint8(SourceInfo L) {
8043 if (!isActive()) return true;
8044 CurrentSource = L;
8045 return Cast<PT_Bool, PT_Uint8>(S, CodePtr());
8046}
8047bool EvalEmitter::emitCastBoolSint8(SourceInfo L) {
8048 if (!isActive()) return true;
8049 CurrentSource = L;
8050 return Cast<PT_Bool, PT_Sint8>(S, CodePtr());
8051}
8052bool EvalEmitter::emitCastBoolUint16(SourceInfo L) {
8053 if (!isActive()) return true;
8054 CurrentSource = L;
8055 return Cast<PT_Bool, PT_Uint16>(S, CodePtr());
8056}
8057bool EvalEmitter::emitCastBoolSint16(SourceInfo L) {
8058 if (!isActive()) return true;
8059 CurrentSource = L;
8060 return Cast<PT_Bool, PT_Sint16>(S, CodePtr());
8061}
8062bool EvalEmitter::emitCastBoolUint32(SourceInfo L) {
8063 if (!isActive()) return true;
8064 CurrentSource = L;
8065 return Cast<PT_Bool, PT_Uint32>(S, CodePtr());
8066}
8067bool EvalEmitter::emitCastBoolSint32(SourceInfo L) {
8068 if (!isActive()) return true;
8069 CurrentSource = L;
8070 return Cast<PT_Bool, PT_Sint32>(S, CodePtr());
8071}
8072bool EvalEmitter::emitCastBoolUint64(SourceInfo L) {
8073 if (!isActive()) return true;
8074 CurrentSource = L;
8075 return Cast<PT_Bool, PT_Uint64>(S, CodePtr());
8076}
8077bool EvalEmitter::emitCastBoolSint64(SourceInfo L) {
8078 if (!isActive()) return true;
8079 CurrentSource = L;
8080 return Cast<PT_Bool, PT_Sint64>(S, CodePtr());
8081}
8082bool EvalEmitter::emitCastBoolBool(SourceInfo L) {
8083 if (!isActive()) return true;
8084 CurrentSource = L;
8085 return Cast<PT_Bool, PT_Bool>(S, CodePtr());
8086}
8087bool EvalEmitter::emitCastIntAPUint8(SourceInfo L) {
8088 if (!isActive()) return true;
8089 CurrentSource = L;
8090 return Cast<PT_IntAP, PT_Uint8>(S, CodePtr());
8091}
8092bool EvalEmitter::emitCastIntAPSint8(SourceInfo L) {
8093 if (!isActive()) return true;
8094 CurrentSource = L;
8095 return Cast<PT_IntAP, PT_Sint8>(S, CodePtr());
8096}
8097bool EvalEmitter::emitCastIntAPUint16(SourceInfo L) {
8098 if (!isActive()) return true;
8099 CurrentSource = L;
8100 return Cast<PT_IntAP, PT_Uint16>(S, CodePtr());
8101}
8102bool EvalEmitter::emitCastIntAPSint16(SourceInfo L) {
8103 if (!isActive()) return true;
8104 CurrentSource = L;
8105 return Cast<PT_IntAP, PT_Sint16>(S, CodePtr());
8106}
8107bool EvalEmitter::emitCastIntAPUint32(SourceInfo L) {
8108 if (!isActive()) return true;
8109 CurrentSource = L;
8110 return Cast<PT_IntAP, PT_Uint32>(S, CodePtr());
8111}
8112bool EvalEmitter::emitCastIntAPSint32(SourceInfo L) {
8113 if (!isActive()) return true;
8114 CurrentSource = L;
8115 return Cast<PT_IntAP, PT_Sint32>(S, CodePtr());
8116}
8117bool EvalEmitter::emitCastIntAPUint64(SourceInfo L) {
8118 if (!isActive()) return true;
8119 CurrentSource = L;
8120 return Cast<PT_IntAP, PT_Uint64>(S, CodePtr());
8121}
8122bool EvalEmitter::emitCastIntAPSint64(SourceInfo L) {
8123 if (!isActive()) return true;
8124 CurrentSource = L;
8125 return Cast<PT_IntAP, PT_Sint64>(S, CodePtr());
8126}
8127bool EvalEmitter::emitCastIntAPBool(SourceInfo L) {
8128 if (!isActive()) return true;
8129 CurrentSource = L;
8130 return Cast<PT_IntAP, PT_Bool>(S, CodePtr());
8131}
8132bool EvalEmitter::emitCastIntAPSUint8(SourceInfo L) {
8133 if (!isActive()) return true;
8134 CurrentSource = L;
8135 return Cast<PT_IntAPS, PT_Uint8>(S, CodePtr());
8136}
8137bool EvalEmitter::emitCastIntAPSSint8(SourceInfo L) {
8138 if (!isActive()) return true;
8139 CurrentSource = L;
8140 return Cast<PT_IntAPS, PT_Sint8>(S, CodePtr());
8141}
8142bool EvalEmitter::emitCastIntAPSUint16(SourceInfo L) {
8143 if (!isActive()) return true;
8144 CurrentSource = L;
8145 return Cast<PT_IntAPS, PT_Uint16>(S, CodePtr());
8146}
8147bool EvalEmitter::emitCastIntAPSSint16(SourceInfo L) {
8148 if (!isActive()) return true;
8149 CurrentSource = L;
8150 return Cast<PT_IntAPS, PT_Sint16>(S, CodePtr());
8151}
8152bool EvalEmitter::emitCastIntAPSUint32(SourceInfo L) {
8153 if (!isActive()) return true;
8154 CurrentSource = L;
8155 return Cast<PT_IntAPS, PT_Uint32>(S, CodePtr());
8156}
8157bool EvalEmitter::emitCastIntAPSSint32(SourceInfo L) {
8158 if (!isActive()) return true;
8159 CurrentSource = L;
8160 return Cast<PT_IntAPS, PT_Sint32>(S, CodePtr());
8161}
8162bool EvalEmitter::emitCastIntAPSUint64(SourceInfo L) {
8163 if (!isActive()) return true;
8164 CurrentSource = L;
8165 return Cast<PT_IntAPS, PT_Uint64>(S, CodePtr());
8166}
8167bool EvalEmitter::emitCastIntAPSSint64(SourceInfo L) {
8168 if (!isActive()) return true;
8169 CurrentSource = L;
8170 return Cast<PT_IntAPS, PT_Sint64>(S, CodePtr());
8171}
8172bool EvalEmitter::emitCastIntAPSBool(SourceInfo L) {
8173 if (!isActive()) return true;
8174 CurrentSource = L;
8175 return Cast<PT_IntAPS, PT_Bool>(S, CodePtr());
8176}
8177bool EvalEmitter::emitCastFixedPointUint8(SourceInfo L) {
8178 if (!isActive()) return true;
8179 CurrentSource = L;
8180 return Cast<PT_FixedPoint, PT_Uint8>(S, CodePtr());
8181}
8182bool EvalEmitter::emitCastFixedPointSint8(SourceInfo L) {
8183 if (!isActive()) return true;
8184 CurrentSource = L;
8185 return Cast<PT_FixedPoint, PT_Sint8>(S, CodePtr());
8186}
8187bool EvalEmitter::emitCastFixedPointUint16(SourceInfo L) {
8188 if (!isActive()) return true;
8189 CurrentSource = L;
8190 return Cast<PT_FixedPoint, PT_Uint16>(S, CodePtr());
8191}
8192bool EvalEmitter::emitCastFixedPointSint16(SourceInfo L) {
8193 if (!isActive()) return true;
8194 CurrentSource = L;
8195 return Cast<PT_FixedPoint, PT_Sint16>(S, CodePtr());
8196}
8197bool EvalEmitter::emitCastFixedPointUint32(SourceInfo L) {
8198 if (!isActive()) return true;
8199 CurrentSource = L;
8200 return Cast<PT_FixedPoint, PT_Uint32>(S, CodePtr());
8201}
8202bool EvalEmitter::emitCastFixedPointSint32(SourceInfo L) {
8203 if (!isActive()) return true;
8204 CurrentSource = L;
8205 return Cast<PT_FixedPoint, PT_Sint32>(S, CodePtr());
8206}
8207bool EvalEmitter::emitCastFixedPointUint64(SourceInfo L) {
8208 if (!isActive()) return true;
8209 CurrentSource = L;
8210 return Cast<PT_FixedPoint, PT_Uint64>(S, CodePtr());
8211}
8212bool EvalEmitter::emitCastFixedPointSint64(SourceInfo L) {
8213 if (!isActive()) return true;
8214 CurrentSource = L;
8215 return Cast<PT_FixedPoint, PT_Sint64>(S, CodePtr());
8216}
8217bool EvalEmitter::emitCastFixedPointBool(SourceInfo L) {
8218 if (!isActive()) return true;
8219 CurrentSource = L;
8220 return Cast<PT_FixedPoint, PT_Bool>(S, CodePtr());
8221}
8222#endif
8223#ifdef GET_OPCODE_NAMES
8224OP_CastAPSint8,
8225OP_CastAPUint8,
8226OP_CastAPSint16,
8227OP_CastAPUint16,
8228OP_CastAPSint32,
8229OP_CastAPUint32,
8230OP_CastAPSint64,
8231OP_CastAPUint64,
8232OP_CastAPIntAP,
8233OP_CastAPIntAPS,
8234OP_CastAPBool,
8235OP_CastAPFixedPoint,
8236#endif
8237#ifdef GET_INTERPFN_LIST
8238&Interp_CastAPSint8,
8239&Interp_CastAPUint8,
8240&Interp_CastAPSint16,
8241&Interp_CastAPUint16,
8242&Interp_CastAPSint32,
8243&Interp_CastAPUint32,
8244&Interp_CastAPSint64,
8245&Interp_CastAPUint64,
8246&Interp_CastAPIntAP,
8247&Interp_CastAPIntAPS,
8248&Interp_CastAPBool,
8249&Interp_CastAPFixedPoint,
8250#endif
8251#ifdef GET_INTERPFN_DISPATCHERS
8252PRESERVE_NONE
8253static bool Interp_CastAPSint8(InterpState &S) {
8254 {
8255 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8256 if (!CastAP<PT_Sint8>(S, V0)) return false;
8257 }
8258#if USE_TAILCALLS
8259 MUSTTAIL return InterpNext(S);
8260#else
8261 return true;
8262#endif
8263}
8264PRESERVE_NONE
8265static bool Interp_CastAPUint8(InterpState &S) {
8266 {
8267 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8268 if (!CastAP<PT_Uint8>(S, V0)) return false;
8269 }
8270#if USE_TAILCALLS
8271 MUSTTAIL return InterpNext(S);
8272#else
8273 return true;
8274#endif
8275}
8276PRESERVE_NONE
8277static bool Interp_CastAPSint16(InterpState &S) {
8278 {
8279 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8280 if (!CastAP<PT_Sint16>(S, V0)) return false;
8281 }
8282#if USE_TAILCALLS
8283 MUSTTAIL return InterpNext(S);
8284#else
8285 return true;
8286#endif
8287}
8288PRESERVE_NONE
8289static bool Interp_CastAPUint16(InterpState &S) {
8290 {
8291 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8292 if (!CastAP<PT_Uint16>(S, V0)) return false;
8293 }
8294#if USE_TAILCALLS
8295 MUSTTAIL return InterpNext(S);
8296#else
8297 return true;
8298#endif
8299}
8300PRESERVE_NONE
8301static bool Interp_CastAPSint32(InterpState &S) {
8302 {
8303 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8304 if (!CastAP<PT_Sint32>(S, V0)) return false;
8305 }
8306#if USE_TAILCALLS
8307 MUSTTAIL return InterpNext(S);
8308#else
8309 return true;
8310#endif
8311}
8312PRESERVE_NONE
8313static bool Interp_CastAPUint32(InterpState &S) {
8314 {
8315 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8316 if (!CastAP<PT_Uint32>(S, V0)) return false;
8317 }
8318#if USE_TAILCALLS
8319 MUSTTAIL return InterpNext(S);
8320#else
8321 return true;
8322#endif
8323}
8324PRESERVE_NONE
8325static bool Interp_CastAPSint64(InterpState &S) {
8326 {
8327 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8328 if (!CastAP<PT_Sint64>(S, V0)) return false;
8329 }
8330#if USE_TAILCALLS
8331 MUSTTAIL return InterpNext(S);
8332#else
8333 return true;
8334#endif
8335}
8336PRESERVE_NONE
8337static bool Interp_CastAPUint64(InterpState &S) {
8338 {
8339 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8340 if (!CastAP<PT_Uint64>(S, V0)) return false;
8341 }
8342#if USE_TAILCALLS
8343 MUSTTAIL return InterpNext(S);
8344#else
8345 return true;
8346#endif
8347}
8348PRESERVE_NONE
8349static bool Interp_CastAPIntAP(InterpState &S) {
8350 {
8351 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8352 if (!CastAP<PT_IntAP>(S, V0)) return false;
8353 }
8354#if USE_TAILCALLS
8355 MUSTTAIL return InterpNext(S);
8356#else
8357 return true;
8358#endif
8359}
8360PRESERVE_NONE
8361static bool Interp_CastAPIntAPS(InterpState &S) {
8362 {
8363 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8364 if (!CastAP<PT_IntAPS>(S, V0)) return false;
8365 }
8366#if USE_TAILCALLS
8367 MUSTTAIL return InterpNext(S);
8368#else
8369 return true;
8370#endif
8371}
8372PRESERVE_NONE
8373static bool Interp_CastAPBool(InterpState &S) {
8374 {
8375 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8376 if (!CastAP<PT_Bool>(S, V0)) return false;
8377 }
8378#if USE_TAILCALLS
8379 MUSTTAIL return InterpNext(S);
8380#else
8381 return true;
8382#endif
8383}
8384PRESERVE_NONE
8385static bool Interp_CastAPFixedPoint(InterpState &S) {
8386 {
8387 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8388 if (!CastAP<PT_FixedPoint>(S, V0)) return false;
8389 }
8390#if USE_TAILCALLS
8391 MUSTTAIL return InterpNext(S);
8392#else
8393 return true;
8394#endif
8395}
8396#endif
8397#ifdef GET_DISASM
8398case OP_CastAPSint8:
8399 Text.Op = PrintName("CastAPSint8");
8400 Text.Args.push_back(printArg<uint32_t>(PC));
8401 break;
8402case OP_CastAPUint8:
8403 Text.Op = PrintName("CastAPUint8");
8404 Text.Args.push_back(printArg<uint32_t>(PC));
8405 break;
8406case OP_CastAPSint16:
8407 Text.Op = PrintName("CastAPSint16");
8408 Text.Args.push_back(printArg<uint32_t>(PC));
8409 break;
8410case OP_CastAPUint16:
8411 Text.Op = PrintName("CastAPUint16");
8412 Text.Args.push_back(printArg<uint32_t>(PC));
8413 break;
8414case OP_CastAPSint32:
8415 Text.Op = PrintName("CastAPSint32");
8416 Text.Args.push_back(printArg<uint32_t>(PC));
8417 break;
8418case OP_CastAPUint32:
8419 Text.Op = PrintName("CastAPUint32");
8420 Text.Args.push_back(printArg<uint32_t>(PC));
8421 break;
8422case OP_CastAPSint64:
8423 Text.Op = PrintName("CastAPSint64");
8424 Text.Args.push_back(printArg<uint32_t>(PC));
8425 break;
8426case OP_CastAPUint64:
8427 Text.Op = PrintName("CastAPUint64");
8428 Text.Args.push_back(printArg<uint32_t>(PC));
8429 break;
8430case OP_CastAPIntAP:
8431 Text.Op = PrintName("CastAPIntAP");
8432 Text.Args.push_back(printArg<uint32_t>(PC));
8433 break;
8434case OP_CastAPIntAPS:
8435 Text.Op = PrintName("CastAPIntAPS");
8436 Text.Args.push_back(printArg<uint32_t>(PC));
8437 break;
8438case OP_CastAPBool:
8439 Text.Op = PrintName("CastAPBool");
8440 Text.Args.push_back(printArg<uint32_t>(PC));
8441 break;
8442case OP_CastAPFixedPoint:
8443 Text.Op = PrintName("CastAPFixedPoint");
8444 Text.Args.push_back(printArg<uint32_t>(PC));
8445 break;
8446#endif
8447#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8448bool emitCastAPSint8( uint32_t , SourceInfo);
8449bool emitCastAPUint8( uint32_t , SourceInfo);
8450bool emitCastAPSint16( uint32_t , SourceInfo);
8451bool emitCastAPUint16( uint32_t , SourceInfo);
8452bool emitCastAPSint32( uint32_t , SourceInfo);
8453bool emitCastAPUint32( uint32_t , SourceInfo);
8454bool emitCastAPSint64( uint32_t , SourceInfo);
8455bool emitCastAPUint64( uint32_t , SourceInfo);
8456bool emitCastAPIntAP( uint32_t , SourceInfo);
8457bool emitCastAPIntAPS( uint32_t , SourceInfo);
8458bool emitCastAPBool( uint32_t , SourceInfo);
8459bool emitCastAPFixedPoint( uint32_t , SourceInfo);
8460#endif
8461#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8462[[nodiscard]] bool emitCastAP(PrimType, uint32_t, SourceInfo I);
8463#endif
8464#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
8465bool
8466#if defined(GET_EVAL_IMPL)
8467EvalEmitter
8468#else
8469ByteCodeEmitter
8470#endif
8471::emitCastAP(PrimType T0, uint32_t A0, SourceInfo I) {
8472 switch (T0) {
8473 case PT_Sint8:
8474 return emitCastAPSint8(A0, I);
8475 case PT_Uint8:
8476 return emitCastAPUint8(A0, I);
8477 case PT_Sint16:
8478 return emitCastAPSint16(A0, I);
8479 case PT_Uint16:
8480 return emitCastAPUint16(A0, I);
8481 case PT_Sint32:
8482 return emitCastAPSint32(A0, I);
8483 case PT_Uint32:
8484 return emitCastAPUint32(A0, I);
8485 case PT_Sint64:
8486 return emitCastAPSint64(A0, I);
8487 case PT_Uint64:
8488 return emitCastAPUint64(A0, I);
8489 case PT_IntAP:
8490 return emitCastAPIntAP(A0, I);
8491 case PT_IntAPS:
8492 return emitCastAPIntAPS(A0, I);
8493 case PT_Bool:
8494 return emitCastAPBool(A0, I);
8495 case PT_FixedPoint:
8496 return emitCastAPFixedPoint(A0, I);
8497 default: llvm_unreachable("invalid type: emitCastAP");
8498 }
8499 llvm_unreachable("invalid enum value");
8500}
8501#endif
8502#ifdef GET_LINK_IMPL
8503bool ByteCodeEmitter::emitCastAPSint8( uint32_t A0, SourceInfo L) {
8504 return emitOp<uint32_t>(OP_CastAPSint8, A0, L);
8505}
8506bool ByteCodeEmitter::emitCastAPUint8( uint32_t A0, SourceInfo L) {
8507 return emitOp<uint32_t>(OP_CastAPUint8, A0, L);
8508}
8509bool ByteCodeEmitter::emitCastAPSint16( uint32_t A0, SourceInfo L) {
8510 return emitOp<uint32_t>(OP_CastAPSint16, A0, L);
8511}
8512bool ByteCodeEmitter::emitCastAPUint16( uint32_t A0, SourceInfo L) {
8513 return emitOp<uint32_t>(OP_CastAPUint16, A0, L);
8514}
8515bool ByteCodeEmitter::emitCastAPSint32( uint32_t A0, SourceInfo L) {
8516 return emitOp<uint32_t>(OP_CastAPSint32, A0, L);
8517}
8518bool ByteCodeEmitter::emitCastAPUint32( uint32_t A0, SourceInfo L) {
8519 return emitOp<uint32_t>(OP_CastAPUint32, A0, L);
8520}
8521bool ByteCodeEmitter::emitCastAPSint64( uint32_t A0, SourceInfo L) {
8522 return emitOp<uint32_t>(OP_CastAPSint64, A0, L);
8523}
8524bool ByteCodeEmitter::emitCastAPUint64( uint32_t A0, SourceInfo L) {
8525 return emitOp<uint32_t>(OP_CastAPUint64, A0, L);
8526}
8527bool ByteCodeEmitter::emitCastAPIntAP( uint32_t A0, SourceInfo L) {
8528 return emitOp<uint32_t>(OP_CastAPIntAP, A0, L);
8529}
8530bool ByteCodeEmitter::emitCastAPIntAPS( uint32_t A0, SourceInfo L) {
8531 return emitOp<uint32_t>(OP_CastAPIntAPS, A0, L);
8532}
8533bool ByteCodeEmitter::emitCastAPBool( uint32_t A0, SourceInfo L) {
8534 return emitOp<uint32_t>(OP_CastAPBool, A0, L);
8535}
8536bool ByteCodeEmitter::emitCastAPFixedPoint( uint32_t A0, SourceInfo L) {
8537 return emitOp<uint32_t>(OP_CastAPFixedPoint, A0, L);
8538}
8539#endif
8540#ifdef GET_EVAL_IMPL
8541bool EvalEmitter::emitCastAPSint8( uint32_t A0, SourceInfo L) {
8542 if (!isActive()) return true;
8543 CurrentSource = L;
8544 return CastAP<PT_Sint8>(S, A0);
8545}
8546bool EvalEmitter::emitCastAPUint8( uint32_t A0, SourceInfo L) {
8547 if (!isActive()) return true;
8548 CurrentSource = L;
8549 return CastAP<PT_Uint8>(S, A0);
8550}
8551bool EvalEmitter::emitCastAPSint16( uint32_t A0, SourceInfo L) {
8552 if (!isActive()) return true;
8553 CurrentSource = L;
8554 return CastAP<PT_Sint16>(S, A0);
8555}
8556bool EvalEmitter::emitCastAPUint16( uint32_t A0, SourceInfo L) {
8557 if (!isActive()) return true;
8558 CurrentSource = L;
8559 return CastAP<PT_Uint16>(S, A0);
8560}
8561bool EvalEmitter::emitCastAPSint32( uint32_t A0, SourceInfo L) {
8562 if (!isActive()) return true;
8563 CurrentSource = L;
8564 return CastAP<PT_Sint32>(S, A0);
8565}
8566bool EvalEmitter::emitCastAPUint32( uint32_t A0, SourceInfo L) {
8567 if (!isActive()) return true;
8568 CurrentSource = L;
8569 return CastAP<PT_Uint32>(S, A0);
8570}
8571bool EvalEmitter::emitCastAPSint64( uint32_t A0, SourceInfo L) {
8572 if (!isActive()) return true;
8573 CurrentSource = L;
8574 return CastAP<PT_Sint64>(S, A0);
8575}
8576bool EvalEmitter::emitCastAPUint64( uint32_t A0, SourceInfo L) {
8577 if (!isActive()) return true;
8578 CurrentSource = L;
8579 return CastAP<PT_Uint64>(S, A0);
8580}
8581bool EvalEmitter::emitCastAPIntAP( uint32_t A0, SourceInfo L) {
8582 if (!isActive()) return true;
8583 CurrentSource = L;
8584 return CastAP<PT_IntAP>(S, A0);
8585}
8586bool EvalEmitter::emitCastAPIntAPS( uint32_t A0, SourceInfo L) {
8587 if (!isActive()) return true;
8588 CurrentSource = L;
8589 return CastAP<PT_IntAPS>(S, A0);
8590}
8591bool EvalEmitter::emitCastAPBool( uint32_t A0, SourceInfo L) {
8592 if (!isActive()) return true;
8593 CurrentSource = L;
8594 return CastAP<PT_Bool>(S, A0);
8595}
8596bool EvalEmitter::emitCastAPFixedPoint( uint32_t A0, SourceInfo L) {
8597 if (!isActive()) return true;
8598 CurrentSource = L;
8599 return CastAP<PT_FixedPoint>(S, A0);
8600}
8601#endif
8602#ifdef GET_OPCODE_NAMES
8603OP_CastAPSSint8,
8604OP_CastAPSUint8,
8605OP_CastAPSSint16,
8606OP_CastAPSUint16,
8607OP_CastAPSSint32,
8608OP_CastAPSUint32,
8609OP_CastAPSSint64,
8610OP_CastAPSUint64,
8611OP_CastAPSIntAP,
8612OP_CastAPSIntAPS,
8613OP_CastAPSBool,
8614OP_CastAPSFixedPoint,
8615#endif
8616#ifdef GET_INTERPFN_LIST
8617&Interp_CastAPSSint8,
8618&Interp_CastAPSUint8,
8619&Interp_CastAPSSint16,
8620&Interp_CastAPSUint16,
8621&Interp_CastAPSSint32,
8622&Interp_CastAPSUint32,
8623&Interp_CastAPSSint64,
8624&Interp_CastAPSUint64,
8625&Interp_CastAPSIntAP,
8626&Interp_CastAPSIntAPS,
8627&Interp_CastAPSBool,
8628&Interp_CastAPSFixedPoint,
8629#endif
8630#ifdef GET_INTERPFN_DISPATCHERS
8631PRESERVE_NONE
8632static bool Interp_CastAPSSint8(InterpState &S) {
8633 {
8634 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8635 if (!CastAPS<PT_Sint8>(S, V0)) return false;
8636 }
8637#if USE_TAILCALLS
8638 MUSTTAIL return InterpNext(S);
8639#else
8640 return true;
8641#endif
8642}
8643PRESERVE_NONE
8644static bool Interp_CastAPSUint8(InterpState &S) {
8645 {
8646 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8647 if (!CastAPS<PT_Uint8>(S, V0)) return false;
8648 }
8649#if USE_TAILCALLS
8650 MUSTTAIL return InterpNext(S);
8651#else
8652 return true;
8653#endif
8654}
8655PRESERVE_NONE
8656static bool Interp_CastAPSSint16(InterpState &S) {
8657 {
8658 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8659 if (!CastAPS<PT_Sint16>(S, V0)) return false;
8660 }
8661#if USE_TAILCALLS
8662 MUSTTAIL return InterpNext(S);
8663#else
8664 return true;
8665#endif
8666}
8667PRESERVE_NONE
8668static bool Interp_CastAPSUint16(InterpState &S) {
8669 {
8670 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8671 if (!CastAPS<PT_Uint16>(S, V0)) return false;
8672 }
8673#if USE_TAILCALLS
8674 MUSTTAIL return InterpNext(S);
8675#else
8676 return true;
8677#endif
8678}
8679PRESERVE_NONE
8680static bool Interp_CastAPSSint32(InterpState &S) {
8681 {
8682 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8683 if (!CastAPS<PT_Sint32>(S, V0)) return false;
8684 }
8685#if USE_TAILCALLS
8686 MUSTTAIL return InterpNext(S);
8687#else
8688 return true;
8689#endif
8690}
8691PRESERVE_NONE
8692static bool Interp_CastAPSUint32(InterpState &S) {
8693 {
8694 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8695 if (!CastAPS<PT_Uint32>(S, V0)) return false;
8696 }
8697#if USE_TAILCALLS
8698 MUSTTAIL return InterpNext(S);
8699#else
8700 return true;
8701#endif
8702}
8703PRESERVE_NONE
8704static bool Interp_CastAPSSint64(InterpState &S) {
8705 {
8706 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8707 if (!CastAPS<PT_Sint64>(S, V0)) return false;
8708 }
8709#if USE_TAILCALLS
8710 MUSTTAIL return InterpNext(S);
8711#else
8712 return true;
8713#endif
8714}
8715PRESERVE_NONE
8716static bool Interp_CastAPSUint64(InterpState &S) {
8717 {
8718 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8719 if (!CastAPS<PT_Uint64>(S, V0)) return false;
8720 }
8721#if USE_TAILCALLS
8722 MUSTTAIL return InterpNext(S);
8723#else
8724 return true;
8725#endif
8726}
8727PRESERVE_NONE
8728static bool Interp_CastAPSIntAP(InterpState &S) {
8729 {
8730 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8731 if (!CastAPS<PT_IntAP>(S, V0)) return false;
8732 }
8733#if USE_TAILCALLS
8734 MUSTTAIL return InterpNext(S);
8735#else
8736 return true;
8737#endif
8738}
8739PRESERVE_NONE
8740static bool Interp_CastAPSIntAPS(InterpState &S) {
8741 {
8742 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8743 if (!CastAPS<PT_IntAPS>(S, V0)) return false;
8744 }
8745#if USE_TAILCALLS
8746 MUSTTAIL return InterpNext(S);
8747#else
8748 return true;
8749#endif
8750}
8751PRESERVE_NONE
8752static bool Interp_CastAPSBool(InterpState &S) {
8753 {
8754 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8755 if (!CastAPS<PT_Bool>(S, V0)) return false;
8756 }
8757#if USE_TAILCALLS
8758 MUSTTAIL return InterpNext(S);
8759#else
8760 return true;
8761#endif
8762}
8763PRESERVE_NONE
8764static bool Interp_CastAPSFixedPoint(InterpState &S) {
8765 {
8766 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8767 if (!CastAPS<PT_FixedPoint>(S, V0)) return false;
8768 }
8769#if USE_TAILCALLS
8770 MUSTTAIL return InterpNext(S);
8771#else
8772 return true;
8773#endif
8774}
8775#endif
8776#ifdef GET_DISASM
8777case OP_CastAPSSint8:
8778 Text.Op = PrintName("CastAPSSint8");
8779 Text.Args.push_back(printArg<uint32_t>(PC));
8780 break;
8781case OP_CastAPSUint8:
8782 Text.Op = PrintName("CastAPSUint8");
8783 Text.Args.push_back(printArg<uint32_t>(PC));
8784 break;
8785case OP_CastAPSSint16:
8786 Text.Op = PrintName("CastAPSSint16");
8787 Text.Args.push_back(printArg<uint32_t>(PC));
8788 break;
8789case OP_CastAPSUint16:
8790 Text.Op = PrintName("CastAPSUint16");
8791 Text.Args.push_back(printArg<uint32_t>(PC));
8792 break;
8793case OP_CastAPSSint32:
8794 Text.Op = PrintName("CastAPSSint32");
8795 Text.Args.push_back(printArg<uint32_t>(PC));
8796 break;
8797case OP_CastAPSUint32:
8798 Text.Op = PrintName("CastAPSUint32");
8799 Text.Args.push_back(printArg<uint32_t>(PC));
8800 break;
8801case OP_CastAPSSint64:
8802 Text.Op = PrintName("CastAPSSint64");
8803 Text.Args.push_back(printArg<uint32_t>(PC));
8804 break;
8805case OP_CastAPSUint64:
8806 Text.Op = PrintName("CastAPSUint64");
8807 Text.Args.push_back(printArg<uint32_t>(PC));
8808 break;
8809case OP_CastAPSIntAP:
8810 Text.Op = PrintName("CastAPSIntAP");
8811 Text.Args.push_back(printArg<uint32_t>(PC));
8812 break;
8813case OP_CastAPSIntAPS:
8814 Text.Op = PrintName("CastAPSIntAPS");
8815 Text.Args.push_back(printArg<uint32_t>(PC));
8816 break;
8817case OP_CastAPSBool:
8818 Text.Op = PrintName("CastAPSBool");
8819 Text.Args.push_back(printArg<uint32_t>(PC));
8820 break;
8821case OP_CastAPSFixedPoint:
8822 Text.Op = PrintName("CastAPSFixedPoint");
8823 Text.Args.push_back(printArg<uint32_t>(PC));
8824 break;
8825#endif
8826#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8827bool emitCastAPSSint8( uint32_t , SourceInfo);
8828bool emitCastAPSUint8( uint32_t , SourceInfo);
8829bool emitCastAPSSint16( uint32_t , SourceInfo);
8830bool emitCastAPSUint16( uint32_t , SourceInfo);
8831bool emitCastAPSSint32( uint32_t , SourceInfo);
8832bool emitCastAPSUint32( uint32_t , SourceInfo);
8833bool emitCastAPSSint64( uint32_t , SourceInfo);
8834bool emitCastAPSUint64( uint32_t , SourceInfo);
8835bool emitCastAPSIntAP( uint32_t , SourceInfo);
8836bool emitCastAPSIntAPS( uint32_t , SourceInfo);
8837bool emitCastAPSBool( uint32_t , SourceInfo);
8838bool emitCastAPSFixedPoint( uint32_t , SourceInfo);
8839#endif
8840#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8841[[nodiscard]] bool emitCastAPS(PrimType, uint32_t, SourceInfo I);
8842#endif
8843#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
8844bool
8845#if defined(GET_EVAL_IMPL)
8846EvalEmitter
8847#else
8848ByteCodeEmitter
8849#endif
8850::emitCastAPS(PrimType T0, uint32_t A0, SourceInfo I) {
8851 switch (T0) {
8852 case PT_Sint8:
8853 return emitCastAPSSint8(A0, I);
8854 case PT_Uint8:
8855 return emitCastAPSUint8(A0, I);
8856 case PT_Sint16:
8857 return emitCastAPSSint16(A0, I);
8858 case PT_Uint16:
8859 return emitCastAPSUint16(A0, I);
8860 case PT_Sint32:
8861 return emitCastAPSSint32(A0, I);
8862 case PT_Uint32:
8863 return emitCastAPSUint32(A0, I);
8864 case PT_Sint64:
8865 return emitCastAPSSint64(A0, I);
8866 case PT_Uint64:
8867 return emitCastAPSUint64(A0, I);
8868 case PT_IntAP:
8869 return emitCastAPSIntAP(A0, I);
8870 case PT_IntAPS:
8871 return emitCastAPSIntAPS(A0, I);
8872 case PT_Bool:
8873 return emitCastAPSBool(A0, I);
8874 case PT_FixedPoint:
8875 return emitCastAPSFixedPoint(A0, I);
8876 default: llvm_unreachable("invalid type: emitCastAPS");
8877 }
8878 llvm_unreachable("invalid enum value");
8879}
8880#endif
8881#ifdef GET_LINK_IMPL
8882bool ByteCodeEmitter::emitCastAPSSint8( uint32_t A0, SourceInfo L) {
8883 return emitOp<uint32_t>(OP_CastAPSSint8, A0, L);
8884}
8885bool ByteCodeEmitter::emitCastAPSUint8( uint32_t A0, SourceInfo L) {
8886 return emitOp<uint32_t>(OP_CastAPSUint8, A0, L);
8887}
8888bool ByteCodeEmitter::emitCastAPSSint16( uint32_t A0, SourceInfo L) {
8889 return emitOp<uint32_t>(OP_CastAPSSint16, A0, L);
8890}
8891bool ByteCodeEmitter::emitCastAPSUint16( uint32_t A0, SourceInfo L) {
8892 return emitOp<uint32_t>(OP_CastAPSUint16, A0, L);
8893}
8894bool ByteCodeEmitter::emitCastAPSSint32( uint32_t A0, SourceInfo L) {
8895 return emitOp<uint32_t>(OP_CastAPSSint32, A0, L);
8896}
8897bool ByteCodeEmitter::emitCastAPSUint32( uint32_t A0, SourceInfo L) {
8898 return emitOp<uint32_t>(OP_CastAPSUint32, A0, L);
8899}
8900bool ByteCodeEmitter::emitCastAPSSint64( uint32_t A0, SourceInfo L) {
8901 return emitOp<uint32_t>(OP_CastAPSSint64, A0, L);
8902}
8903bool ByteCodeEmitter::emitCastAPSUint64( uint32_t A0, SourceInfo L) {
8904 return emitOp<uint32_t>(OP_CastAPSUint64, A0, L);
8905}
8906bool ByteCodeEmitter::emitCastAPSIntAP( uint32_t A0, SourceInfo L) {
8907 return emitOp<uint32_t>(OP_CastAPSIntAP, A0, L);
8908}
8909bool ByteCodeEmitter::emitCastAPSIntAPS( uint32_t A0, SourceInfo L) {
8910 return emitOp<uint32_t>(OP_CastAPSIntAPS, A0, L);
8911}
8912bool ByteCodeEmitter::emitCastAPSBool( uint32_t A0, SourceInfo L) {
8913 return emitOp<uint32_t>(OP_CastAPSBool, A0, L);
8914}
8915bool ByteCodeEmitter::emitCastAPSFixedPoint( uint32_t A0, SourceInfo L) {
8916 return emitOp<uint32_t>(OP_CastAPSFixedPoint, A0, L);
8917}
8918#endif
8919#ifdef GET_EVAL_IMPL
8920bool EvalEmitter::emitCastAPSSint8( uint32_t A0, SourceInfo L) {
8921 if (!isActive()) return true;
8922 CurrentSource = L;
8923 return CastAPS<PT_Sint8>(S, A0);
8924}
8925bool EvalEmitter::emitCastAPSUint8( uint32_t A0, SourceInfo L) {
8926 if (!isActive()) return true;
8927 CurrentSource = L;
8928 return CastAPS<PT_Uint8>(S, A0);
8929}
8930bool EvalEmitter::emitCastAPSSint16( uint32_t A0, SourceInfo L) {
8931 if (!isActive()) return true;
8932 CurrentSource = L;
8933 return CastAPS<PT_Sint16>(S, A0);
8934}
8935bool EvalEmitter::emitCastAPSUint16( uint32_t A0, SourceInfo L) {
8936 if (!isActive()) return true;
8937 CurrentSource = L;
8938 return CastAPS<PT_Uint16>(S, A0);
8939}
8940bool EvalEmitter::emitCastAPSSint32( uint32_t A0, SourceInfo L) {
8941 if (!isActive()) return true;
8942 CurrentSource = L;
8943 return CastAPS<PT_Sint32>(S, A0);
8944}
8945bool EvalEmitter::emitCastAPSUint32( uint32_t A0, SourceInfo L) {
8946 if (!isActive()) return true;
8947 CurrentSource = L;
8948 return CastAPS<PT_Uint32>(S, A0);
8949}
8950bool EvalEmitter::emitCastAPSSint64( uint32_t A0, SourceInfo L) {
8951 if (!isActive()) return true;
8952 CurrentSource = L;
8953 return CastAPS<PT_Sint64>(S, A0);
8954}
8955bool EvalEmitter::emitCastAPSUint64( uint32_t A0, SourceInfo L) {
8956 if (!isActive()) return true;
8957 CurrentSource = L;
8958 return CastAPS<PT_Uint64>(S, A0);
8959}
8960bool EvalEmitter::emitCastAPSIntAP( uint32_t A0, SourceInfo L) {
8961 if (!isActive()) return true;
8962 CurrentSource = L;
8963 return CastAPS<PT_IntAP>(S, A0);
8964}
8965bool EvalEmitter::emitCastAPSIntAPS( uint32_t A0, SourceInfo L) {
8966 if (!isActive()) return true;
8967 CurrentSource = L;
8968 return CastAPS<PT_IntAPS>(S, A0);
8969}
8970bool EvalEmitter::emitCastAPSBool( uint32_t A0, SourceInfo L) {
8971 if (!isActive()) return true;
8972 CurrentSource = L;
8973 return CastAPS<PT_Bool>(S, A0);
8974}
8975bool EvalEmitter::emitCastAPSFixedPoint( uint32_t A0, SourceInfo L) {
8976 if (!isActive()) return true;
8977 CurrentSource = L;
8978 return CastAPS<PT_FixedPoint>(S, A0);
8979}
8980#endif
8981#ifdef GET_OPCODE_NAMES
8982OP_CastAPToOffsetIndexIntAP,
8983OP_CastAPToOffsetIndexIntAPS,
8984#endif
8985#ifdef GET_INTERPFN_LIST
8986&Interp_CastAPToOffsetIndexIntAP,
8987&Interp_CastAPToOffsetIndexIntAPS,
8988#endif
8989#ifdef GET_INTERPFN_DISPATCHERS
8990PRESERVE_NONE
8991static bool Interp_CastAPToOffsetIndexIntAP(InterpState &S) {
8992 if (!CastAPToOffsetIndex<PT_IntAP>(S, S.PC)) return false;
8993#if USE_TAILCALLS
8994 MUSTTAIL return InterpNext(S);
8995#else
8996 return true;
8997#endif
8998}
8999PRESERVE_NONE
9000static bool Interp_CastAPToOffsetIndexIntAPS(InterpState &S) {
9001 if (!CastAPToOffsetIndex<PT_IntAPS>(S, S.PC)) return false;
9002#if USE_TAILCALLS
9003 MUSTTAIL return InterpNext(S);
9004#else
9005 return true;
9006#endif
9007}
9008#endif
9009#ifdef GET_DISASM
9010case OP_CastAPToOffsetIndexIntAP:
9011 Text.Op = PrintName("CastAPToOffsetIndexIntAP");
9012 break;
9013case OP_CastAPToOffsetIndexIntAPS:
9014 Text.Op = PrintName("CastAPToOffsetIndexIntAPS");
9015 break;
9016#endif
9017#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9018bool emitCastAPToOffsetIndexIntAP(SourceInfo);
9019bool emitCastAPToOffsetIndexIntAPS(SourceInfo);
9020#endif
9021#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9022[[nodiscard]] bool emitCastAPToOffsetIndex(PrimType, SourceInfo I);
9023#endif
9024#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
9025bool
9026#if defined(GET_EVAL_IMPL)
9027EvalEmitter
9028#else
9029ByteCodeEmitter
9030#endif
9031::emitCastAPToOffsetIndex(PrimType T0, SourceInfo I) {
9032 switch (T0) {
9033 case PT_IntAP:
9034 return emitCastAPToOffsetIndexIntAP(I);
9035 case PT_IntAPS:
9036 return emitCastAPToOffsetIndexIntAPS(I);
9037 default: llvm_unreachable("invalid type: emitCastAPToOffsetIndex");
9038 }
9039 llvm_unreachable("invalid enum value");
9040}
9041#endif
9042#ifdef GET_LINK_IMPL
9043bool ByteCodeEmitter::emitCastAPToOffsetIndexIntAP(SourceInfo L) {
9044 return emitOp<>(OP_CastAPToOffsetIndexIntAP, L);
9045}
9046bool ByteCodeEmitter::emitCastAPToOffsetIndexIntAPS(SourceInfo L) {
9047 return emitOp<>(OP_CastAPToOffsetIndexIntAPS, L);
9048}
9049#endif
9050#ifdef GET_EVAL_IMPL
9051bool EvalEmitter::emitCastAPToOffsetIndexIntAP(SourceInfo L) {
9052 if (!isActive()) return true;
9053 CurrentSource = L;
9054 return CastAPToOffsetIndex<PT_IntAP>(S, CodePtr());
9055}
9056bool EvalEmitter::emitCastAPToOffsetIndexIntAPS(SourceInfo L) {
9057 if (!isActive()) return true;
9058 CurrentSource = L;
9059 return CastAPToOffsetIndex<PT_IntAPS>(S, CodePtr());
9060}
9061#endif
9062#ifdef GET_OPCODE_NAMES
9063OP_CastFP,
9064#endif
9065#ifdef GET_INTERPFN_LIST
9066&Interp_CastFP,
9067#endif
9068#ifdef GET_INTERPFN_DISPATCHERS
9069PRESERVE_NONE
9070static bool Interp_CastFP(InterpState &S) {
9071 {
9072 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
9073 const auto V1 = ReadArg<llvm::RoundingMode>(S, S.PC);
9074 if (!CastFP(S, V0, V1)) return false;
9075 }
9076#if USE_TAILCALLS
9077 MUSTTAIL return InterpNext(S);
9078#else
9079 return true;
9080#endif
9081}
9082#endif
9083#ifdef GET_DISASM
9084case OP_CastFP:
9085 Text.Op = PrintName("CastFP");
9086 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
9087 Text.Args.push_back(printArg<llvm::RoundingMode>(PC));
9088 break;
9089#endif
9090#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9091bool emitCastFP( const llvm::fltSemantics * , llvm::RoundingMode , SourceInfo);
9092#endif
9093#ifdef GET_LINK_IMPL
9094bool ByteCodeEmitter::emitCastFP( const llvm::fltSemantics * A0, llvm::RoundingMode A1, SourceInfo L) {
9095 return emitOp<const llvm::fltSemantics *, llvm::RoundingMode>(OP_CastFP, A0, A1, L);
9096}
9097#endif
9098#ifdef GET_EVAL_IMPL
9099bool EvalEmitter::emitCastFP( const llvm::fltSemantics * A0, llvm::RoundingMode A1, SourceInfo L) {
9100 if (!isActive()) return true;
9101 CurrentSource = L;
9102 return CastFP(S, A0, A1);
9103}
9104#endif
9105#ifdef GET_OPCODE_NAMES
9106OP_CastFixedPoint,
9107#endif
9108#ifdef GET_INTERPFN_LIST
9109&Interp_CastFixedPoint,
9110#endif
9111#ifdef GET_INTERPFN_DISPATCHERS
9112PRESERVE_NONE
9113static bool Interp_CastFixedPoint(InterpState &S) {
9114 {
9115 CodePtr OpPC = S.PC;
9116 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9117 if (!CastFixedPoint(S, OpPC, V0)) return false;
9118 }
9119#if USE_TAILCALLS
9120 MUSTTAIL return InterpNext(S);
9121#else
9122 return true;
9123#endif
9124}
9125#endif
9126#ifdef GET_DISASM
9127case OP_CastFixedPoint:
9128 Text.Op = PrintName("CastFixedPoint");
9129 Text.Args.push_back(printArg<uint32_t>(PC));
9130 break;
9131#endif
9132#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9133bool emitCastFixedPoint( uint32_t , SourceInfo);
9134#endif
9135#ifdef GET_LINK_IMPL
9136bool ByteCodeEmitter::emitCastFixedPoint( uint32_t A0, SourceInfo L) {
9137 return emitOp<uint32_t>(OP_CastFixedPoint, A0, L);
9138}
9139#endif
9140#ifdef GET_EVAL_IMPL
9141bool EvalEmitter::emitCastFixedPoint( uint32_t A0, SourceInfo L) {
9142 if (!isActive()) return true;
9143 CurrentSource = L;
9144 return CastFixedPoint(S, CodePtr(), A0);
9145}
9146#endif
9147#ifdef GET_OPCODE_NAMES
9148OP_CastFixedPointFloating,
9149#endif
9150#ifdef GET_INTERPFN_LIST
9151&Interp_CastFixedPointFloating,
9152#endif
9153#ifdef GET_INTERPFN_DISPATCHERS
9154PRESERVE_NONE
9155static bool Interp_CastFixedPointFloating(InterpState &S) {
9156 {
9157 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
9158 if (!CastFixedPointFloating(S, V0)) return false;
9159 }
9160#if USE_TAILCALLS
9161 MUSTTAIL return InterpNext(S);
9162#else
9163 return true;
9164#endif
9165}
9166#endif
9167#ifdef GET_DISASM
9168case OP_CastFixedPointFloating:
9169 Text.Op = PrintName("CastFixedPointFloating");
9170 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
9171 break;
9172#endif
9173#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9174bool emitCastFixedPointFloating( const llvm::fltSemantics * , SourceInfo);
9175#endif
9176#ifdef GET_LINK_IMPL
9177bool ByteCodeEmitter::emitCastFixedPointFloating( const llvm::fltSemantics * A0, SourceInfo L) {
9178 return emitOp<const llvm::fltSemantics *>(OP_CastFixedPointFloating, A0, L);
9179}
9180#endif
9181#ifdef GET_EVAL_IMPL
9182bool EvalEmitter::emitCastFixedPointFloating( const llvm::fltSemantics * A0, SourceInfo L) {
9183 if (!isActive()) return true;
9184 CurrentSource = L;
9185 return CastFixedPointFloating(S, A0);
9186}
9187#endif
9188#ifdef GET_OPCODE_NAMES
9189OP_CastFixedPointIntegralSint8,
9190OP_CastFixedPointIntegralUint8,
9191OP_CastFixedPointIntegralSint16,
9192OP_CastFixedPointIntegralUint16,
9193OP_CastFixedPointIntegralSint32,
9194OP_CastFixedPointIntegralUint32,
9195OP_CastFixedPointIntegralSint64,
9196OP_CastFixedPointIntegralUint64,
9197#endif
9198#ifdef GET_INTERPFN_LIST
9199&Interp_CastFixedPointIntegralSint8,
9200&Interp_CastFixedPointIntegralUint8,
9201&Interp_CastFixedPointIntegralSint16,
9202&Interp_CastFixedPointIntegralUint16,
9203&Interp_CastFixedPointIntegralSint32,
9204&Interp_CastFixedPointIntegralUint32,
9205&Interp_CastFixedPointIntegralSint64,
9206&Interp_CastFixedPointIntegralUint64,
9207#endif
9208#ifdef GET_INTERPFN_DISPATCHERS
9209PRESERVE_NONE
9210static bool Interp_CastFixedPointIntegralSint8(InterpState &S) {
9211 if (!CastFixedPointIntegral<PT_Sint8>(S, S.PC)) return false;
9212#if USE_TAILCALLS
9213 MUSTTAIL return InterpNext(S);
9214#else
9215 return true;
9216#endif
9217}
9218PRESERVE_NONE
9219static bool Interp_CastFixedPointIntegralUint8(InterpState &S) {
9220 if (!CastFixedPointIntegral<PT_Uint8>(S, S.PC)) return false;
9221#if USE_TAILCALLS
9222 MUSTTAIL return InterpNext(S);
9223#else
9224 return true;
9225#endif
9226}
9227PRESERVE_NONE
9228static bool Interp_CastFixedPointIntegralSint16(InterpState &S) {
9229 if (!CastFixedPointIntegral<PT_Sint16>(S, S.PC)) return false;
9230#if USE_TAILCALLS
9231 MUSTTAIL return InterpNext(S);
9232#else
9233 return true;
9234#endif
9235}
9236PRESERVE_NONE
9237static bool Interp_CastFixedPointIntegralUint16(InterpState &S) {
9238 if (!CastFixedPointIntegral<PT_Uint16>(S, S.PC)) return false;
9239#if USE_TAILCALLS
9240 MUSTTAIL return InterpNext(S);
9241#else
9242 return true;
9243#endif
9244}
9245PRESERVE_NONE
9246static bool Interp_CastFixedPointIntegralSint32(InterpState &S) {
9247 if (!CastFixedPointIntegral<PT_Sint32>(S, S.PC)) return false;
9248#if USE_TAILCALLS
9249 MUSTTAIL return InterpNext(S);
9250#else
9251 return true;
9252#endif
9253}
9254PRESERVE_NONE
9255static bool Interp_CastFixedPointIntegralUint32(InterpState &S) {
9256 if (!CastFixedPointIntegral<PT_Uint32>(S, S.PC)) return false;
9257#if USE_TAILCALLS
9258 MUSTTAIL return InterpNext(S);
9259#else
9260 return true;
9261#endif
9262}
9263PRESERVE_NONE
9264static bool Interp_CastFixedPointIntegralSint64(InterpState &S) {
9265 if (!CastFixedPointIntegral<PT_Sint64>(S, S.PC)) return false;
9266#if USE_TAILCALLS
9267 MUSTTAIL return InterpNext(S);
9268#else
9269 return true;
9270#endif
9271}
9272PRESERVE_NONE
9273static bool Interp_CastFixedPointIntegralUint64(InterpState &S) {
9274 if (!CastFixedPointIntegral<PT_Uint64>(S, S.PC)) return false;
9275#if USE_TAILCALLS
9276 MUSTTAIL return InterpNext(S);
9277#else
9278 return true;
9279#endif
9280}
9281#endif
9282#ifdef GET_DISASM
9283case OP_CastFixedPointIntegralSint8:
9284 Text.Op = PrintName("CastFixedPointIntegralSint8");
9285 break;
9286case OP_CastFixedPointIntegralUint8:
9287 Text.Op = PrintName("CastFixedPointIntegralUint8");
9288 break;
9289case OP_CastFixedPointIntegralSint16:
9290 Text.Op = PrintName("CastFixedPointIntegralSint16");
9291 break;
9292case OP_CastFixedPointIntegralUint16:
9293 Text.Op = PrintName("CastFixedPointIntegralUint16");
9294 break;
9295case OP_CastFixedPointIntegralSint32:
9296 Text.Op = PrintName("CastFixedPointIntegralSint32");
9297 break;
9298case OP_CastFixedPointIntegralUint32:
9299 Text.Op = PrintName("CastFixedPointIntegralUint32");
9300 break;
9301case OP_CastFixedPointIntegralSint64:
9302 Text.Op = PrintName("CastFixedPointIntegralSint64");
9303 break;
9304case OP_CastFixedPointIntegralUint64:
9305 Text.Op = PrintName("CastFixedPointIntegralUint64");
9306 break;
9307#endif
9308#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9309bool emitCastFixedPointIntegralSint8(SourceInfo);
9310bool emitCastFixedPointIntegralUint8(SourceInfo);
9311bool emitCastFixedPointIntegralSint16(SourceInfo);
9312bool emitCastFixedPointIntegralUint16(SourceInfo);
9313bool emitCastFixedPointIntegralSint32(SourceInfo);
9314bool emitCastFixedPointIntegralUint32(SourceInfo);
9315bool emitCastFixedPointIntegralSint64(SourceInfo);
9316bool emitCastFixedPointIntegralUint64(SourceInfo);
9317#endif
9318#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9319[[nodiscard]] bool emitCastFixedPointIntegral(PrimType, SourceInfo I);
9320#endif
9321#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
9322bool
9323#if defined(GET_EVAL_IMPL)
9324EvalEmitter
9325#else
9326ByteCodeEmitter
9327#endif
9328::emitCastFixedPointIntegral(PrimType T0, SourceInfo I) {
9329 switch (T0) {
9330 case PT_Sint8:
9331 return emitCastFixedPointIntegralSint8(I);
9332 case PT_Uint8:
9333 return emitCastFixedPointIntegralUint8(I);
9334 case PT_Sint16:
9335 return emitCastFixedPointIntegralSint16(I);
9336 case PT_Uint16:
9337 return emitCastFixedPointIntegralUint16(I);
9338 case PT_Sint32:
9339 return emitCastFixedPointIntegralSint32(I);
9340 case PT_Uint32:
9341 return emitCastFixedPointIntegralUint32(I);
9342 case PT_Sint64:
9343 return emitCastFixedPointIntegralSint64(I);
9344 case PT_Uint64:
9345 return emitCastFixedPointIntegralUint64(I);
9346 default: llvm_unreachable("invalid type: emitCastFixedPointIntegral");
9347 }
9348 llvm_unreachable("invalid enum value");
9349}
9350#endif
9351#ifdef GET_LINK_IMPL
9352bool ByteCodeEmitter::emitCastFixedPointIntegralSint8(SourceInfo L) {
9353 return emitOp<>(OP_CastFixedPointIntegralSint8, L);
9354}
9355bool ByteCodeEmitter::emitCastFixedPointIntegralUint8(SourceInfo L) {
9356 return emitOp<>(OP_CastFixedPointIntegralUint8, L);
9357}
9358bool ByteCodeEmitter::emitCastFixedPointIntegralSint16(SourceInfo L) {
9359 return emitOp<>(OP_CastFixedPointIntegralSint16, L);
9360}
9361bool ByteCodeEmitter::emitCastFixedPointIntegralUint16(SourceInfo L) {
9362 return emitOp<>(OP_CastFixedPointIntegralUint16, L);
9363}
9364bool ByteCodeEmitter::emitCastFixedPointIntegralSint32(SourceInfo L) {
9365 return emitOp<>(OP_CastFixedPointIntegralSint32, L);
9366}
9367bool ByteCodeEmitter::emitCastFixedPointIntegralUint32(SourceInfo L) {
9368 return emitOp<>(OP_CastFixedPointIntegralUint32, L);
9369}
9370bool ByteCodeEmitter::emitCastFixedPointIntegralSint64(SourceInfo L) {
9371 return emitOp<>(OP_CastFixedPointIntegralSint64, L);
9372}
9373bool ByteCodeEmitter::emitCastFixedPointIntegralUint64(SourceInfo L) {
9374 return emitOp<>(OP_CastFixedPointIntegralUint64, L);
9375}
9376#endif
9377#ifdef GET_EVAL_IMPL
9378bool EvalEmitter::emitCastFixedPointIntegralSint8(SourceInfo L) {
9379 if (!isActive()) return true;
9380 CurrentSource = L;
9381 return CastFixedPointIntegral<PT_Sint8>(S, CodePtr());
9382}
9383bool EvalEmitter::emitCastFixedPointIntegralUint8(SourceInfo L) {
9384 if (!isActive()) return true;
9385 CurrentSource = L;
9386 return CastFixedPointIntegral<PT_Uint8>(S, CodePtr());
9387}
9388bool EvalEmitter::emitCastFixedPointIntegralSint16(SourceInfo L) {
9389 if (!isActive()) return true;
9390 CurrentSource = L;
9391 return CastFixedPointIntegral<PT_Sint16>(S, CodePtr());
9392}
9393bool EvalEmitter::emitCastFixedPointIntegralUint16(SourceInfo L) {
9394 if (!isActive()) return true;
9395 CurrentSource = L;
9396 return CastFixedPointIntegral<PT_Uint16>(S, CodePtr());
9397}
9398bool EvalEmitter::emitCastFixedPointIntegralSint32(SourceInfo L) {
9399 if (!isActive()) return true;
9400 CurrentSource = L;
9401 return CastFixedPointIntegral<PT_Sint32>(S, CodePtr());
9402}
9403bool EvalEmitter::emitCastFixedPointIntegralUint32(SourceInfo L) {
9404 if (!isActive()) return true;
9405 CurrentSource = L;
9406 return CastFixedPointIntegral<PT_Uint32>(S, CodePtr());
9407}
9408bool EvalEmitter::emitCastFixedPointIntegralSint64(SourceInfo L) {
9409 if (!isActive()) return true;
9410 CurrentSource = L;
9411 return CastFixedPointIntegral<PT_Sint64>(S, CodePtr());
9412}
9413bool EvalEmitter::emitCastFixedPointIntegralUint64(SourceInfo L) {
9414 if (!isActive()) return true;
9415 CurrentSource = L;
9416 return CastFixedPointIntegral<PT_Uint64>(S, CodePtr());
9417}
9418#endif
9419#ifdef GET_OPCODE_NAMES
9420OP_CastFloatingFixedPoint,
9421#endif
9422#ifdef GET_INTERPFN_LIST
9423&Interp_CastFloatingFixedPoint,
9424#endif
9425#ifdef GET_INTERPFN_DISPATCHERS
9426PRESERVE_NONE
9427static bool Interp_CastFloatingFixedPoint(InterpState &S) {
9428 {
9429 CodePtr OpPC = S.PC;
9430 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9431 if (!CastFloatingFixedPoint(S, OpPC, V0)) return false;
9432 }
9433#if USE_TAILCALLS
9434 MUSTTAIL return InterpNext(S);
9435#else
9436 return true;
9437#endif
9438}
9439#endif
9440#ifdef GET_DISASM
9441case OP_CastFloatingFixedPoint:
9442 Text.Op = PrintName("CastFloatingFixedPoint");
9443 Text.Args.push_back(printArg<uint32_t>(PC));
9444 break;
9445#endif
9446#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9447bool emitCastFloatingFixedPoint( uint32_t , SourceInfo);
9448#endif
9449#ifdef GET_LINK_IMPL
9450bool ByteCodeEmitter::emitCastFloatingFixedPoint( uint32_t A0, SourceInfo L) {
9451 return emitOp<uint32_t>(OP_CastFloatingFixedPoint, A0, L);
9452}
9453#endif
9454#ifdef GET_EVAL_IMPL
9455bool EvalEmitter::emitCastFloatingFixedPoint( uint32_t A0, SourceInfo L) {
9456 if (!isActive()) return true;
9457 CurrentSource = L;
9458 return CastFloatingFixedPoint(S, CodePtr(), A0);
9459}
9460#endif
9461#ifdef GET_OPCODE_NAMES
9462OP_CastFloatingIntegralSint8,
9463OP_CastFloatingIntegralUint8,
9464OP_CastFloatingIntegralSint16,
9465OP_CastFloatingIntegralUint16,
9466OP_CastFloatingIntegralSint32,
9467OP_CastFloatingIntegralUint32,
9468OP_CastFloatingIntegralSint64,
9469OP_CastFloatingIntegralUint64,
9470OP_CastFloatingIntegralBool,
9471#endif
9472#ifdef GET_INTERPFN_LIST
9473&Interp_CastFloatingIntegralSint8,
9474&Interp_CastFloatingIntegralUint8,
9475&Interp_CastFloatingIntegralSint16,
9476&Interp_CastFloatingIntegralUint16,
9477&Interp_CastFloatingIntegralSint32,
9478&Interp_CastFloatingIntegralUint32,
9479&Interp_CastFloatingIntegralSint64,
9480&Interp_CastFloatingIntegralUint64,
9481&Interp_CastFloatingIntegralBool,
9482#endif
9483#ifdef GET_INTERPFN_DISPATCHERS
9484PRESERVE_NONE
9485static bool Interp_CastFloatingIntegralSint8(InterpState &S) {
9486 {
9487 CodePtr OpPC = S.PC;
9488 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9489 if (!CastFloatingIntegral<PT_Sint8>(S, OpPC, V0)) return false;
9490 }
9491#if USE_TAILCALLS
9492 MUSTTAIL return InterpNext(S);
9493#else
9494 return true;
9495#endif
9496}
9497PRESERVE_NONE
9498static bool Interp_CastFloatingIntegralUint8(InterpState &S) {
9499 {
9500 CodePtr OpPC = S.PC;
9501 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9502 if (!CastFloatingIntegral<PT_Uint8>(S, OpPC, V0)) return false;
9503 }
9504#if USE_TAILCALLS
9505 MUSTTAIL return InterpNext(S);
9506#else
9507 return true;
9508#endif
9509}
9510PRESERVE_NONE
9511static bool Interp_CastFloatingIntegralSint16(InterpState &S) {
9512 {
9513 CodePtr OpPC = S.PC;
9514 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9515 if (!CastFloatingIntegral<PT_Sint16>(S, OpPC, V0)) return false;
9516 }
9517#if USE_TAILCALLS
9518 MUSTTAIL return InterpNext(S);
9519#else
9520 return true;
9521#endif
9522}
9523PRESERVE_NONE
9524static bool Interp_CastFloatingIntegralUint16(InterpState &S) {
9525 {
9526 CodePtr OpPC = S.PC;
9527 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9528 if (!CastFloatingIntegral<PT_Uint16>(S, OpPC, V0)) return false;
9529 }
9530#if USE_TAILCALLS
9531 MUSTTAIL return InterpNext(S);
9532#else
9533 return true;
9534#endif
9535}
9536PRESERVE_NONE
9537static bool Interp_CastFloatingIntegralSint32(InterpState &S) {
9538 {
9539 CodePtr OpPC = S.PC;
9540 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9541 if (!CastFloatingIntegral<PT_Sint32>(S, OpPC, V0)) return false;
9542 }
9543#if USE_TAILCALLS
9544 MUSTTAIL return InterpNext(S);
9545#else
9546 return true;
9547#endif
9548}
9549PRESERVE_NONE
9550static bool Interp_CastFloatingIntegralUint32(InterpState &S) {
9551 {
9552 CodePtr OpPC = S.PC;
9553 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9554 if (!CastFloatingIntegral<PT_Uint32>(S, OpPC, V0)) return false;
9555 }
9556#if USE_TAILCALLS
9557 MUSTTAIL return InterpNext(S);
9558#else
9559 return true;
9560#endif
9561}
9562PRESERVE_NONE
9563static bool Interp_CastFloatingIntegralSint64(InterpState &S) {
9564 {
9565 CodePtr OpPC = S.PC;
9566 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9567 if (!CastFloatingIntegral<PT_Sint64>(S, OpPC, V0)) return false;
9568 }
9569#if USE_TAILCALLS
9570 MUSTTAIL return InterpNext(S);
9571#else
9572 return true;
9573#endif
9574}
9575PRESERVE_NONE
9576static bool Interp_CastFloatingIntegralUint64(InterpState &S) {
9577 {
9578 CodePtr OpPC = S.PC;
9579 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9580 if (!CastFloatingIntegral<PT_Uint64>(S, OpPC, V0)) return false;
9581 }
9582#if USE_TAILCALLS
9583 MUSTTAIL return InterpNext(S);
9584#else
9585 return true;
9586#endif
9587}
9588PRESERVE_NONE
9589static bool Interp_CastFloatingIntegralBool(InterpState &S) {
9590 {
9591 CodePtr OpPC = S.PC;
9592 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9593 if (!CastFloatingIntegral<PT_Bool>(S, OpPC, V0)) return false;
9594 }
9595#if USE_TAILCALLS
9596 MUSTTAIL return InterpNext(S);
9597#else
9598 return true;
9599#endif
9600}
9601#endif
9602#ifdef GET_DISASM
9603case OP_CastFloatingIntegralSint8:
9604 Text.Op = PrintName("CastFloatingIntegralSint8");
9605 Text.Args.push_back(printArg<uint32_t>(PC));
9606 break;
9607case OP_CastFloatingIntegralUint8:
9608 Text.Op = PrintName("CastFloatingIntegralUint8");
9609 Text.Args.push_back(printArg<uint32_t>(PC));
9610 break;
9611case OP_CastFloatingIntegralSint16:
9612 Text.Op = PrintName("CastFloatingIntegralSint16");
9613 Text.Args.push_back(printArg<uint32_t>(PC));
9614 break;
9615case OP_CastFloatingIntegralUint16:
9616 Text.Op = PrintName("CastFloatingIntegralUint16");
9617 Text.Args.push_back(printArg<uint32_t>(PC));
9618 break;
9619case OP_CastFloatingIntegralSint32:
9620 Text.Op = PrintName("CastFloatingIntegralSint32");
9621 Text.Args.push_back(printArg<uint32_t>(PC));
9622 break;
9623case OP_CastFloatingIntegralUint32:
9624 Text.Op = PrintName("CastFloatingIntegralUint32");
9625 Text.Args.push_back(printArg<uint32_t>(PC));
9626 break;
9627case OP_CastFloatingIntegralSint64:
9628 Text.Op = PrintName("CastFloatingIntegralSint64");
9629 Text.Args.push_back(printArg<uint32_t>(PC));
9630 break;
9631case OP_CastFloatingIntegralUint64:
9632 Text.Op = PrintName("CastFloatingIntegralUint64");
9633 Text.Args.push_back(printArg<uint32_t>(PC));
9634 break;
9635case OP_CastFloatingIntegralBool:
9636 Text.Op = PrintName("CastFloatingIntegralBool");
9637 Text.Args.push_back(printArg<uint32_t>(PC));
9638 break;
9639#endif
9640#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9641bool emitCastFloatingIntegralSint8( uint32_t , SourceInfo);
9642bool emitCastFloatingIntegralUint8( uint32_t , SourceInfo);
9643bool emitCastFloatingIntegralSint16( uint32_t , SourceInfo);
9644bool emitCastFloatingIntegralUint16( uint32_t , SourceInfo);
9645bool emitCastFloatingIntegralSint32( uint32_t , SourceInfo);
9646bool emitCastFloatingIntegralUint32( uint32_t , SourceInfo);
9647bool emitCastFloatingIntegralSint64( uint32_t , SourceInfo);
9648bool emitCastFloatingIntegralUint64( uint32_t , SourceInfo);
9649bool emitCastFloatingIntegralBool( uint32_t , SourceInfo);
9650#endif
9651#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9652[[nodiscard]] bool emitCastFloatingIntegral(PrimType, uint32_t, SourceInfo I);
9653#endif
9654#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
9655bool
9656#if defined(GET_EVAL_IMPL)
9657EvalEmitter
9658#else
9659ByteCodeEmitter
9660#endif
9661::emitCastFloatingIntegral(PrimType T0, uint32_t A0, SourceInfo I) {
9662 switch (T0) {
9663 case PT_Sint8:
9664 return emitCastFloatingIntegralSint8(A0, I);
9665 case PT_Uint8:
9666 return emitCastFloatingIntegralUint8(A0, I);
9667 case PT_Sint16:
9668 return emitCastFloatingIntegralSint16(A0, I);
9669 case PT_Uint16:
9670 return emitCastFloatingIntegralUint16(A0, I);
9671 case PT_Sint32:
9672 return emitCastFloatingIntegralSint32(A0, I);
9673 case PT_Uint32:
9674 return emitCastFloatingIntegralUint32(A0, I);
9675 case PT_Sint64:
9676 return emitCastFloatingIntegralSint64(A0, I);
9677 case PT_Uint64:
9678 return emitCastFloatingIntegralUint64(A0, I);
9679 case PT_Bool:
9680 return emitCastFloatingIntegralBool(A0, I);
9681 default: llvm_unreachable("invalid type: emitCastFloatingIntegral");
9682 }
9683 llvm_unreachable("invalid enum value");
9684}
9685#endif
9686#ifdef GET_LINK_IMPL
9687bool ByteCodeEmitter::emitCastFloatingIntegralSint8( uint32_t A0, SourceInfo L) {
9688 return emitOp<uint32_t>(OP_CastFloatingIntegralSint8, A0, L);
9689}
9690bool ByteCodeEmitter::emitCastFloatingIntegralUint8( uint32_t A0, SourceInfo L) {
9691 return emitOp<uint32_t>(OP_CastFloatingIntegralUint8, A0, L);
9692}
9693bool ByteCodeEmitter::emitCastFloatingIntegralSint16( uint32_t A0, SourceInfo L) {
9694 return emitOp<uint32_t>(OP_CastFloatingIntegralSint16, A0, L);
9695}
9696bool ByteCodeEmitter::emitCastFloatingIntegralUint16( uint32_t A0, SourceInfo L) {
9697 return emitOp<uint32_t>(OP_CastFloatingIntegralUint16, A0, L);
9698}
9699bool ByteCodeEmitter::emitCastFloatingIntegralSint32( uint32_t A0, SourceInfo L) {
9700 return emitOp<uint32_t>(OP_CastFloatingIntegralSint32, A0, L);
9701}
9702bool ByteCodeEmitter::emitCastFloatingIntegralUint32( uint32_t A0, SourceInfo L) {
9703 return emitOp<uint32_t>(OP_CastFloatingIntegralUint32, A0, L);
9704}
9705bool ByteCodeEmitter::emitCastFloatingIntegralSint64( uint32_t A0, SourceInfo L) {
9706 return emitOp<uint32_t>(OP_CastFloatingIntegralSint64, A0, L);
9707}
9708bool ByteCodeEmitter::emitCastFloatingIntegralUint64( uint32_t A0, SourceInfo L) {
9709 return emitOp<uint32_t>(OP_CastFloatingIntegralUint64, A0, L);
9710}
9711bool ByteCodeEmitter::emitCastFloatingIntegralBool( uint32_t A0, SourceInfo L) {
9712 return emitOp<uint32_t>(OP_CastFloatingIntegralBool, A0, L);
9713}
9714#endif
9715#ifdef GET_EVAL_IMPL
9716bool EvalEmitter::emitCastFloatingIntegralSint8( uint32_t A0, SourceInfo L) {
9717 if (!isActive()) return true;
9718 CurrentSource = L;
9719 return CastFloatingIntegral<PT_Sint8>(S, CodePtr(), A0);
9720}
9721bool EvalEmitter::emitCastFloatingIntegralUint8( uint32_t A0, SourceInfo L) {
9722 if (!isActive()) return true;
9723 CurrentSource = L;
9724 return CastFloatingIntegral<PT_Uint8>(S, CodePtr(), A0);
9725}
9726bool EvalEmitter::emitCastFloatingIntegralSint16( uint32_t A0, SourceInfo L) {
9727 if (!isActive()) return true;
9728 CurrentSource = L;
9729 return CastFloatingIntegral<PT_Sint16>(S, CodePtr(), A0);
9730}
9731bool EvalEmitter::emitCastFloatingIntegralUint16( uint32_t A0, SourceInfo L) {
9732 if (!isActive()) return true;
9733 CurrentSource = L;
9734 return CastFloatingIntegral<PT_Uint16>(S, CodePtr(), A0);
9735}
9736bool EvalEmitter::emitCastFloatingIntegralSint32( uint32_t A0, SourceInfo L) {
9737 if (!isActive()) return true;
9738 CurrentSource = L;
9739 return CastFloatingIntegral<PT_Sint32>(S, CodePtr(), A0);
9740}
9741bool EvalEmitter::emitCastFloatingIntegralUint32( uint32_t A0, SourceInfo L) {
9742 if (!isActive()) return true;
9743 CurrentSource = L;
9744 return CastFloatingIntegral<PT_Uint32>(S, CodePtr(), A0);
9745}
9746bool EvalEmitter::emitCastFloatingIntegralSint64( uint32_t A0, SourceInfo L) {
9747 if (!isActive()) return true;
9748 CurrentSource = L;
9749 return CastFloatingIntegral<PT_Sint64>(S, CodePtr(), A0);
9750}
9751bool EvalEmitter::emitCastFloatingIntegralUint64( uint32_t A0, SourceInfo L) {
9752 if (!isActive()) return true;
9753 CurrentSource = L;
9754 return CastFloatingIntegral<PT_Uint64>(S, CodePtr(), A0);
9755}
9756bool EvalEmitter::emitCastFloatingIntegralBool( uint32_t A0, SourceInfo L) {
9757 if (!isActive()) return true;
9758 CurrentSource = L;
9759 return CastFloatingIntegral<PT_Bool>(S, CodePtr(), A0);
9760}
9761#endif
9762#ifdef GET_OPCODE_NAMES
9763OP_CastFloatingIntegralAP,
9764#endif
9765#ifdef GET_INTERPFN_LIST
9766&Interp_CastFloatingIntegralAP,
9767#endif
9768#ifdef GET_INTERPFN_DISPATCHERS
9769PRESERVE_NONE
9770static bool Interp_CastFloatingIntegralAP(InterpState &S) {
9771 {
9772 CodePtr OpPC = S.PC;
9773 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9774 const auto V1 = ReadArg<uint32_t>(S, S.PC);
9775 if (!CastFloatingIntegralAP(S, OpPC, V0, V1)) return false;
9776 }
9777#if USE_TAILCALLS
9778 MUSTTAIL return InterpNext(S);
9779#else
9780 return true;
9781#endif
9782}
9783#endif
9784#ifdef GET_DISASM
9785case OP_CastFloatingIntegralAP:
9786 Text.Op = PrintName("CastFloatingIntegralAP");
9787 Text.Args.push_back(printArg<uint32_t>(PC));
9788 Text.Args.push_back(printArg<uint32_t>(PC));
9789 break;
9790#endif
9791#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9792bool emitCastFloatingIntegralAP( uint32_t , uint32_t , SourceInfo);
9793#endif
9794#ifdef GET_LINK_IMPL
9795bool ByteCodeEmitter::emitCastFloatingIntegralAP( uint32_t A0, uint32_t A1, SourceInfo L) {
9796 return emitOp<uint32_t, uint32_t>(OP_CastFloatingIntegralAP, A0, A1, L);
9797}
9798#endif
9799#ifdef GET_EVAL_IMPL
9800bool EvalEmitter::emitCastFloatingIntegralAP( uint32_t A0, uint32_t A1, SourceInfo L) {
9801 if (!isActive()) return true;
9802 CurrentSource = L;
9803 return CastFloatingIntegralAP(S, CodePtr(), A0, A1);
9804}
9805#endif
9806#ifdef GET_OPCODE_NAMES
9807OP_CastFloatingIntegralAPS,
9808#endif
9809#ifdef GET_INTERPFN_LIST
9810&Interp_CastFloatingIntegralAPS,
9811#endif
9812#ifdef GET_INTERPFN_DISPATCHERS
9813PRESERVE_NONE
9814static bool Interp_CastFloatingIntegralAPS(InterpState &S) {
9815 {
9816 CodePtr OpPC = S.PC;
9817 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9818 const auto V1 = ReadArg<uint32_t>(S, S.PC);
9819 if (!CastFloatingIntegralAPS(S, OpPC, V0, V1)) return false;
9820 }
9821#if USE_TAILCALLS
9822 MUSTTAIL return InterpNext(S);
9823#else
9824 return true;
9825#endif
9826}
9827#endif
9828#ifdef GET_DISASM
9829case OP_CastFloatingIntegralAPS:
9830 Text.Op = PrintName("CastFloatingIntegralAPS");
9831 Text.Args.push_back(printArg<uint32_t>(PC));
9832 Text.Args.push_back(printArg<uint32_t>(PC));
9833 break;
9834#endif
9835#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9836bool emitCastFloatingIntegralAPS( uint32_t , uint32_t , SourceInfo);
9837#endif
9838#ifdef GET_LINK_IMPL
9839bool ByteCodeEmitter::emitCastFloatingIntegralAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
9840 return emitOp<uint32_t, uint32_t>(OP_CastFloatingIntegralAPS, A0, A1, L);
9841}
9842#endif
9843#ifdef GET_EVAL_IMPL
9844bool EvalEmitter::emitCastFloatingIntegralAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
9845 if (!isActive()) return true;
9846 CurrentSource = L;
9847 return CastFloatingIntegralAPS(S, CodePtr(), A0, A1);
9848}
9849#endif
9850#ifdef GET_OPCODE_NAMES
9851OP_CastIntegralFixedPointSint8,
9852OP_CastIntegralFixedPointUint8,
9853OP_CastIntegralFixedPointSint16,
9854OP_CastIntegralFixedPointUint16,
9855OP_CastIntegralFixedPointSint32,
9856OP_CastIntegralFixedPointUint32,
9857OP_CastIntegralFixedPointSint64,
9858OP_CastIntegralFixedPointUint64,
9859OP_CastIntegralFixedPointIntAP,
9860OP_CastIntegralFixedPointIntAPS,
9861OP_CastIntegralFixedPointBool,
9862#endif
9863#ifdef GET_INTERPFN_LIST
9864&Interp_CastIntegralFixedPointSint8,
9865&Interp_CastIntegralFixedPointUint8,
9866&Interp_CastIntegralFixedPointSint16,
9867&Interp_CastIntegralFixedPointUint16,
9868&Interp_CastIntegralFixedPointSint32,
9869&Interp_CastIntegralFixedPointUint32,
9870&Interp_CastIntegralFixedPointSint64,
9871&Interp_CastIntegralFixedPointUint64,
9872&Interp_CastIntegralFixedPointIntAP,
9873&Interp_CastIntegralFixedPointIntAPS,
9874&Interp_CastIntegralFixedPointBool,
9875#endif
9876#ifdef GET_INTERPFN_DISPATCHERS
9877PRESERVE_NONE
9878static bool Interp_CastIntegralFixedPointSint8(InterpState &S) {
9879 {
9880 CodePtr OpPC = S.PC;
9881 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9882 if (!CastIntegralFixedPoint<PT_Sint8>(S, OpPC, V0)) return false;
9883 }
9884#if USE_TAILCALLS
9885 MUSTTAIL return InterpNext(S);
9886#else
9887 return true;
9888#endif
9889}
9890PRESERVE_NONE
9891static bool Interp_CastIntegralFixedPointUint8(InterpState &S) {
9892 {
9893 CodePtr OpPC = S.PC;
9894 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9895 if (!CastIntegralFixedPoint<PT_Uint8>(S, OpPC, V0)) return false;
9896 }
9897#if USE_TAILCALLS
9898 MUSTTAIL return InterpNext(S);
9899#else
9900 return true;
9901#endif
9902}
9903PRESERVE_NONE
9904static bool Interp_CastIntegralFixedPointSint16(InterpState &S) {
9905 {
9906 CodePtr OpPC = S.PC;
9907 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9908 if (!CastIntegralFixedPoint<PT_Sint16>(S, OpPC, V0)) return false;
9909 }
9910#if USE_TAILCALLS
9911 MUSTTAIL return InterpNext(S);
9912#else
9913 return true;
9914#endif
9915}
9916PRESERVE_NONE
9917static bool Interp_CastIntegralFixedPointUint16(InterpState &S) {
9918 {
9919 CodePtr OpPC = S.PC;
9920 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9921 if (!CastIntegralFixedPoint<PT_Uint16>(S, OpPC, V0)) return false;
9922 }
9923#if USE_TAILCALLS
9924 MUSTTAIL return InterpNext(S);
9925#else
9926 return true;
9927#endif
9928}
9929PRESERVE_NONE
9930static bool Interp_CastIntegralFixedPointSint32(InterpState &S) {
9931 {
9932 CodePtr OpPC = S.PC;
9933 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9934 if (!CastIntegralFixedPoint<PT_Sint32>(S, OpPC, V0)) return false;
9935 }
9936#if USE_TAILCALLS
9937 MUSTTAIL return InterpNext(S);
9938#else
9939 return true;
9940#endif
9941}
9942PRESERVE_NONE
9943static bool Interp_CastIntegralFixedPointUint32(InterpState &S) {
9944 {
9945 CodePtr OpPC = S.PC;
9946 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9947 if (!CastIntegralFixedPoint<PT_Uint32>(S, OpPC, V0)) return false;
9948 }
9949#if USE_TAILCALLS
9950 MUSTTAIL return InterpNext(S);
9951#else
9952 return true;
9953#endif
9954}
9955PRESERVE_NONE
9956static bool Interp_CastIntegralFixedPointSint64(InterpState &S) {
9957 {
9958 CodePtr OpPC = S.PC;
9959 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9960 if (!CastIntegralFixedPoint<PT_Sint64>(S, OpPC, V0)) return false;
9961 }
9962#if USE_TAILCALLS
9963 MUSTTAIL return InterpNext(S);
9964#else
9965 return true;
9966#endif
9967}
9968PRESERVE_NONE
9969static bool Interp_CastIntegralFixedPointUint64(InterpState &S) {
9970 {
9971 CodePtr OpPC = S.PC;
9972 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9973 if (!CastIntegralFixedPoint<PT_Uint64>(S, OpPC, V0)) return false;
9974 }
9975#if USE_TAILCALLS
9976 MUSTTAIL return InterpNext(S);
9977#else
9978 return true;
9979#endif
9980}
9981PRESERVE_NONE
9982static bool Interp_CastIntegralFixedPointIntAP(InterpState &S) {
9983 {
9984 CodePtr OpPC = S.PC;
9985 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9986 if (!CastIntegralFixedPoint<PT_IntAP>(S, OpPC, V0)) return false;
9987 }
9988#if USE_TAILCALLS
9989 MUSTTAIL return InterpNext(S);
9990#else
9991 return true;
9992#endif
9993}
9994PRESERVE_NONE
9995static bool Interp_CastIntegralFixedPointIntAPS(InterpState &S) {
9996 {
9997 CodePtr OpPC = S.PC;
9998 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9999 if (!CastIntegralFixedPoint<PT_IntAPS>(S, OpPC, V0)) return false;
10000 }
10001#if USE_TAILCALLS
10002 MUSTTAIL return InterpNext(S);
10003#else
10004 return true;
10005#endif
10006}
10007PRESERVE_NONE
10008static bool Interp_CastIntegralFixedPointBool(InterpState &S) {
10009 {
10010 CodePtr OpPC = S.PC;
10011 const auto V0 = ReadArg<uint32_t>(S, S.PC);
10012 if (!CastIntegralFixedPoint<PT_Bool>(S, OpPC, V0)) return false;
10013 }
10014#if USE_TAILCALLS
10015 MUSTTAIL return InterpNext(S);
10016#else
10017 return true;
10018#endif
10019}
10020#endif
10021#ifdef GET_DISASM
10022case OP_CastIntegralFixedPointSint8:
10023 Text.Op = PrintName("CastIntegralFixedPointSint8");
10024 Text.Args.push_back(printArg<uint32_t>(PC));
10025 break;
10026case OP_CastIntegralFixedPointUint8:
10027 Text.Op = PrintName("CastIntegralFixedPointUint8");
10028 Text.Args.push_back(printArg<uint32_t>(PC));
10029 break;
10030case OP_CastIntegralFixedPointSint16:
10031 Text.Op = PrintName("CastIntegralFixedPointSint16");
10032 Text.Args.push_back(printArg<uint32_t>(PC));
10033 break;
10034case OP_CastIntegralFixedPointUint16:
10035 Text.Op = PrintName("CastIntegralFixedPointUint16");
10036 Text.Args.push_back(printArg<uint32_t>(PC));
10037 break;
10038case OP_CastIntegralFixedPointSint32:
10039 Text.Op = PrintName("CastIntegralFixedPointSint32");
10040 Text.Args.push_back(printArg<uint32_t>(PC));
10041 break;
10042case OP_CastIntegralFixedPointUint32:
10043 Text.Op = PrintName("CastIntegralFixedPointUint32");
10044 Text.Args.push_back(printArg<uint32_t>(PC));
10045 break;
10046case OP_CastIntegralFixedPointSint64:
10047 Text.Op = PrintName("CastIntegralFixedPointSint64");
10048 Text.Args.push_back(printArg<uint32_t>(PC));
10049 break;
10050case OP_CastIntegralFixedPointUint64:
10051 Text.Op = PrintName("CastIntegralFixedPointUint64");
10052 Text.Args.push_back(printArg<uint32_t>(PC));
10053 break;
10054case OP_CastIntegralFixedPointIntAP:
10055 Text.Op = PrintName("CastIntegralFixedPointIntAP");
10056 Text.Args.push_back(printArg<uint32_t>(PC));
10057 break;
10058case OP_CastIntegralFixedPointIntAPS:
10059 Text.Op = PrintName("CastIntegralFixedPointIntAPS");
10060 Text.Args.push_back(printArg<uint32_t>(PC));
10061 break;
10062case OP_CastIntegralFixedPointBool:
10063 Text.Op = PrintName("CastIntegralFixedPointBool");
10064 Text.Args.push_back(printArg<uint32_t>(PC));
10065 break;
10066#endif
10067#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10068bool emitCastIntegralFixedPointSint8( uint32_t , SourceInfo);
10069bool emitCastIntegralFixedPointUint8( uint32_t , SourceInfo);
10070bool emitCastIntegralFixedPointSint16( uint32_t , SourceInfo);
10071bool emitCastIntegralFixedPointUint16( uint32_t , SourceInfo);
10072bool emitCastIntegralFixedPointSint32( uint32_t , SourceInfo);
10073bool emitCastIntegralFixedPointUint32( uint32_t , SourceInfo);
10074bool emitCastIntegralFixedPointSint64( uint32_t , SourceInfo);
10075bool emitCastIntegralFixedPointUint64( uint32_t , SourceInfo);
10076bool emitCastIntegralFixedPointIntAP( uint32_t , SourceInfo);
10077bool emitCastIntegralFixedPointIntAPS( uint32_t , SourceInfo);
10078bool emitCastIntegralFixedPointBool( uint32_t , SourceInfo);
10079#endif
10080#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10081[[nodiscard]] bool emitCastIntegralFixedPoint(PrimType, uint32_t, SourceInfo I);
10082#endif
10083#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
10084bool
10085#if defined(GET_EVAL_IMPL)
10086EvalEmitter
10087#else
10088ByteCodeEmitter
10089#endif
10090::emitCastIntegralFixedPoint(PrimType T0, uint32_t A0, SourceInfo I) {
10091 switch (T0) {
10092 case PT_Sint8:
10093 return emitCastIntegralFixedPointSint8(A0, I);
10094 case PT_Uint8:
10095 return emitCastIntegralFixedPointUint8(A0, I);
10096 case PT_Sint16:
10097 return emitCastIntegralFixedPointSint16(A0, I);
10098 case PT_Uint16:
10099 return emitCastIntegralFixedPointUint16(A0, I);
10100 case PT_Sint32:
10101 return emitCastIntegralFixedPointSint32(A0, I);
10102 case PT_Uint32:
10103 return emitCastIntegralFixedPointUint32(A0, I);
10104 case PT_Sint64:
10105 return emitCastIntegralFixedPointSint64(A0, I);
10106 case PT_Uint64:
10107 return emitCastIntegralFixedPointUint64(A0, I);
10108 case PT_IntAP:
10109 return emitCastIntegralFixedPointIntAP(A0, I);
10110 case PT_IntAPS:
10111 return emitCastIntegralFixedPointIntAPS(A0, I);
10112 case PT_Bool:
10113 return emitCastIntegralFixedPointBool(A0, I);
10114 default: llvm_unreachable("invalid type: emitCastIntegralFixedPoint");
10115 }
10116 llvm_unreachable("invalid enum value");
10117}
10118#endif
10119#ifdef GET_LINK_IMPL
10120bool ByteCodeEmitter::emitCastIntegralFixedPointSint8( uint32_t A0, SourceInfo L) {
10121 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint8, A0, L);
10122}
10123bool ByteCodeEmitter::emitCastIntegralFixedPointUint8( uint32_t A0, SourceInfo L) {
10124 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint8, A0, L);
10125}
10126bool ByteCodeEmitter::emitCastIntegralFixedPointSint16( uint32_t A0, SourceInfo L) {
10127 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint16, A0, L);
10128}
10129bool ByteCodeEmitter::emitCastIntegralFixedPointUint16( uint32_t A0, SourceInfo L) {
10130 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint16, A0, L);
10131}
10132bool ByteCodeEmitter::emitCastIntegralFixedPointSint32( uint32_t A0, SourceInfo L) {
10133 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint32, A0, L);
10134}
10135bool ByteCodeEmitter::emitCastIntegralFixedPointUint32( uint32_t A0, SourceInfo L) {
10136 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint32, A0, L);
10137}
10138bool ByteCodeEmitter::emitCastIntegralFixedPointSint64( uint32_t A0, SourceInfo L) {
10139 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint64, A0, L);
10140}
10141bool ByteCodeEmitter::emitCastIntegralFixedPointUint64( uint32_t A0, SourceInfo L) {
10142 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint64, A0, L);
10143}
10144bool ByteCodeEmitter::emitCastIntegralFixedPointIntAP( uint32_t A0, SourceInfo L) {
10145 return emitOp<uint32_t>(OP_CastIntegralFixedPointIntAP, A0, L);
10146}
10147bool ByteCodeEmitter::emitCastIntegralFixedPointIntAPS( uint32_t A0, SourceInfo L) {
10148 return emitOp<uint32_t>(OP_CastIntegralFixedPointIntAPS, A0, L);
10149}
10150bool ByteCodeEmitter::emitCastIntegralFixedPointBool( uint32_t A0, SourceInfo L) {
10151 return emitOp<uint32_t>(OP_CastIntegralFixedPointBool, A0, L);
10152}
10153#endif
10154#ifdef GET_EVAL_IMPL
10155bool EvalEmitter::emitCastIntegralFixedPointSint8( uint32_t A0, SourceInfo L) {
10156 if (!isActive()) return true;
10157 CurrentSource = L;
10158 return CastIntegralFixedPoint<PT_Sint8>(S, CodePtr(), A0);
10159}
10160bool EvalEmitter::emitCastIntegralFixedPointUint8( uint32_t A0, SourceInfo L) {
10161 if (!isActive()) return true;
10162 CurrentSource = L;
10163 return CastIntegralFixedPoint<PT_Uint8>(S, CodePtr(), A0);
10164}
10165bool EvalEmitter::emitCastIntegralFixedPointSint16( uint32_t A0, SourceInfo L) {
10166 if (!isActive()) return true;
10167 CurrentSource = L;
10168 return CastIntegralFixedPoint<PT_Sint16>(S, CodePtr(), A0);
10169}
10170bool EvalEmitter::emitCastIntegralFixedPointUint16( uint32_t A0, SourceInfo L) {
10171 if (!isActive()) return true;
10172 CurrentSource = L;
10173 return CastIntegralFixedPoint<PT_Uint16>(S, CodePtr(), A0);
10174}
10175bool EvalEmitter::emitCastIntegralFixedPointSint32( uint32_t A0, SourceInfo L) {
10176 if (!isActive()) return true;
10177 CurrentSource = L;
10178 return CastIntegralFixedPoint<PT_Sint32>(S, CodePtr(), A0);
10179}
10180bool EvalEmitter::emitCastIntegralFixedPointUint32( uint32_t A0, SourceInfo L) {
10181 if (!isActive()) return true;
10182 CurrentSource = L;
10183 return CastIntegralFixedPoint<PT_Uint32>(S, CodePtr(), A0);
10184}
10185bool EvalEmitter::emitCastIntegralFixedPointSint64( uint32_t A0, SourceInfo L) {
10186 if (!isActive()) return true;
10187 CurrentSource = L;
10188 return CastIntegralFixedPoint<PT_Sint64>(S, CodePtr(), A0);
10189}
10190bool EvalEmitter::emitCastIntegralFixedPointUint64( uint32_t A0, SourceInfo L) {
10191 if (!isActive()) return true;
10192 CurrentSource = L;
10193 return CastIntegralFixedPoint<PT_Uint64>(S, CodePtr(), A0);
10194}
10195bool EvalEmitter::emitCastIntegralFixedPointIntAP( uint32_t A0, SourceInfo L) {
10196 if (!isActive()) return true;
10197 CurrentSource = L;
10198 return CastIntegralFixedPoint<PT_IntAP>(S, CodePtr(), A0);
10199}
10200bool EvalEmitter::emitCastIntegralFixedPointIntAPS( uint32_t A0, SourceInfo L) {
10201 if (!isActive()) return true;
10202 CurrentSource = L;
10203 return CastIntegralFixedPoint<PT_IntAPS>(S, CodePtr(), A0);
10204}
10205bool EvalEmitter::emitCastIntegralFixedPointBool( uint32_t A0, SourceInfo L) {
10206 if (!isActive()) return true;
10207 CurrentSource = L;
10208 return CastIntegralFixedPoint<PT_Bool>(S, CodePtr(), A0);
10209}
10210#endif
10211#ifdef GET_OPCODE_NAMES
10212OP_CastIntegralFloatingSint8,
10213OP_CastIntegralFloatingUint8,
10214OP_CastIntegralFloatingSint16,
10215OP_CastIntegralFloatingUint16,
10216OP_CastIntegralFloatingSint32,
10217OP_CastIntegralFloatingUint32,
10218OP_CastIntegralFloatingSint64,
10219OP_CastIntegralFloatingUint64,
10220OP_CastIntegralFloatingIntAP,
10221OP_CastIntegralFloatingIntAPS,
10222OP_CastIntegralFloatingBool,
10223OP_CastIntegralFloatingFixedPoint,
10224#endif
10225#ifdef GET_INTERPFN_LIST
10226&Interp_CastIntegralFloatingSint8,
10227&Interp_CastIntegralFloatingUint8,
10228&Interp_CastIntegralFloatingSint16,
10229&Interp_CastIntegralFloatingUint16,
10230&Interp_CastIntegralFloatingSint32,
10231&Interp_CastIntegralFloatingUint32,
10232&Interp_CastIntegralFloatingSint64,
10233&Interp_CastIntegralFloatingUint64,
10234&Interp_CastIntegralFloatingIntAP,
10235&Interp_CastIntegralFloatingIntAPS,
10236&Interp_CastIntegralFloatingBool,
10237&Interp_CastIntegralFloatingFixedPoint,
10238#endif
10239#ifdef GET_INTERPFN_DISPATCHERS
10240PRESERVE_NONE
10241static bool Interp_CastIntegralFloatingSint8(InterpState &S) {
10242 {
10243 CodePtr OpPC = S.PC;
10244 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10245 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10246 if (!CastIntegralFloating<PT_Sint8>(S, OpPC, V0, V1)) return false;
10247 }
10248#if USE_TAILCALLS
10249 MUSTTAIL return InterpNext(S);
10250#else
10251 return true;
10252#endif
10253}
10254PRESERVE_NONE
10255static bool Interp_CastIntegralFloatingUint8(InterpState &S) {
10256 {
10257 CodePtr OpPC = S.PC;
10258 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10259 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10260 if (!CastIntegralFloating<PT_Uint8>(S, OpPC, V0, V1)) return false;
10261 }
10262#if USE_TAILCALLS
10263 MUSTTAIL return InterpNext(S);
10264#else
10265 return true;
10266#endif
10267}
10268PRESERVE_NONE
10269static bool Interp_CastIntegralFloatingSint16(InterpState &S) {
10270 {
10271 CodePtr OpPC = S.PC;
10272 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10273 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10274 if (!CastIntegralFloating<PT_Sint16>(S, OpPC, V0, V1)) return false;
10275 }
10276#if USE_TAILCALLS
10277 MUSTTAIL return InterpNext(S);
10278#else
10279 return true;
10280#endif
10281}
10282PRESERVE_NONE
10283static bool Interp_CastIntegralFloatingUint16(InterpState &S) {
10284 {
10285 CodePtr OpPC = S.PC;
10286 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10287 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10288 if (!CastIntegralFloating<PT_Uint16>(S, OpPC, V0, V1)) return false;
10289 }
10290#if USE_TAILCALLS
10291 MUSTTAIL return InterpNext(S);
10292#else
10293 return true;
10294#endif
10295}
10296PRESERVE_NONE
10297static bool Interp_CastIntegralFloatingSint32(InterpState &S) {
10298 {
10299 CodePtr OpPC = S.PC;
10300 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10301 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10302 if (!CastIntegralFloating<PT_Sint32>(S, OpPC, V0, V1)) return false;
10303 }
10304#if USE_TAILCALLS
10305 MUSTTAIL return InterpNext(S);
10306#else
10307 return true;
10308#endif
10309}
10310PRESERVE_NONE
10311static bool Interp_CastIntegralFloatingUint32(InterpState &S) {
10312 {
10313 CodePtr OpPC = S.PC;
10314 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10315 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10316 if (!CastIntegralFloating<PT_Uint32>(S, OpPC, V0, V1)) return false;
10317 }
10318#if USE_TAILCALLS
10319 MUSTTAIL return InterpNext(S);
10320#else
10321 return true;
10322#endif
10323}
10324PRESERVE_NONE
10325static bool Interp_CastIntegralFloatingSint64(InterpState &S) {
10326 {
10327 CodePtr OpPC = S.PC;
10328 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10329 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10330 if (!CastIntegralFloating<PT_Sint64>(S, OpPC, V0, V1)) return false;
10331 }
10332#if USE_TAILCALLS
10333 MUSTTAIL return InterpNext(S);
10334#else
10335 return true;
10336#endif
10337}
10338PRESERVE_NONE
10339static bool Interp_CastIntegralFloatingUint64(InterpState &S) {
10340 {
10341 CodePtr OpPC = S.PC;
10342 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10343 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10344 if (!CastIntegralFloating<PT_Uint64>(S, OpPC, V0, V1)) return false;
10345 }
10346#if USE_TAILCALLS
10347 MUSTTAIL return InterpNext(S);
10348#else
10349 return true;
10350#endif
10351}
10352PRESERVE_NONE
10353static bool Interp_CastIntegralFloatingIntAP(InterpState &S) {
10354 {
10355 CodePtr OpPC = S.PC;
10356 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10357 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10358 if (!CastIntegralFloating<PT_IntAP>(S, OpPC, V0, V1)) return false;
10359 }
10360#if USE_TAILCALLS
10361 MUSTTAIL return InterpNext(S);
10362#else
10363 return true;
10364#endif
10365}
10366PRESERVE_NONE
10367static bool Interp_CastIntegralFloatingIntAPS(InterpState &S) {
10368 {
10369 CodePtr OpPC = S.PC;
10370 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10371 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10372 if (!CastIntegralFloating<PT_IntAPS>(S, OpPC, V0, V1)) return false;
10373 }
10374#if USE_TAILCALLS
10375 MUSTTAIL return InterpNext(S);
10376#else
10377 return true;
10378#endif
10379}
10380PRESERVE_NONE
10381static bool Interp_CastIntegralFloatingBool(InterpState &S) {
10382 {
10383 CodePtr OpPC = S.PC;
10384 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10385 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10386 if (!CastIntegralFloating<PT_Bool>(S, OpPC, V0, V1)) return false;
10387 }
10388#if USE_TAILCALLS
10389 MUSTTAIL return InterpNext(S);
10390#else
10391 return true;
10392#endif
10393}
10394PRESERVE_NONE
10395static bool Interp_CastIntegralFloatingFixedPoint(InterpState &S) {
10396 {
10397 CodePtr OpPC = S.PC;
10398 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10399 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10400 if (!CastIntegralFloating<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
10401 }
10402#if USE_TAILCALLS
10403 MUSTTAIL return InterpNext(S);
10404#else
10405 return true;
10406#endif
10407}
10408#endif
10409#ifdef GET_DISASM
10410case OP_CastIntegralFloatingSint8:
10411 Text.Op = PrintName("CastIntegralFloatingSint8");
10412 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10413 Text.Args.push_back(printArg<uint32_t>(PC));
10414 break;
10415case OP_CastIntegralFloatingUint8:
10416 Text.Op = PrintName("CastIntegralFloatingUint8");
10417 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10418 Text.Args.push_back(printArg<uint32_t>(PC));
10419 break;
10420case OP_CastIntegralFloatingSint16:
10421 Text.Op = PrintName("CastIntegralFloatingSint16");
10422 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10423 Text.Args.push_back(printArg<uint32_t>(PC));
10424 break;
10425case OP_CastIntegralFloatingUint16:
10426 Text.Op = PrintName("CastIntegralFloatingUint16");
10427 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10428 Text.Args.push_back(printArg<uint32_t>(PC));
10429 break;
10430case OP_CastIntegralFloatingSint32:
10431 Text.Op = PrintName("CastIntegralFloatingSint32");
10432 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10433 Text.Args.push_back(printArg<uint32_t>(PC));
10434 break;
10435case OP_CastIntegralFloatingUint32:
10436 Text.Op = PrintName("CastIntegralFloatingUint32");
10437 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10438 Text.Args.push_back(printArg<uint32_t>(PC));
10439 break;
10440case OP_CastIntegralFloatingSint64:
10441 Text.Op = PrintName("CastIntegralFloatingSint64");
10442 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10443 Text.Args.push_back(printArg<uint32_t>(PC));
10444 break;
10445case OP_CastIntegralFloatingUint64:
10446 Text.Op = PrintName("CastIntegralFloatingUint64");
10447 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10448 Text.Args.push_back(printArg<uint32_t>(PC));
10449 break;
10450case OP_CastIntegralFloatingIntAP:
10451 Text.Op = PrintName("CastIntegralFloatingIntAP");
10452 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10453 Text.Args.push_back(printArg<uint32_t>(PC));
10454 break;
10455case OP_CastIntegralFloatingIntAPS:
10456 Text.Op = PrintName("CastIntegralFloatingIntAPS");
10457 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10458 Text.Args.push_back(printArg<uint32_t>(PC));
10459 break;
10460case OP_CastIntegralFloatingBool:
10461 Text.Op = PrintName("CastIntegralFloatingBool");
10462 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10463 Text.Args.push_back(printArg<uint32_t>(PC));
10464 break;
10465case OP_CastIntegralFloatingFixedPoint:
10466 Text.Op = PrintName("CastIntegralFloatingFixedPoint");
10467 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10468 Text.Args.push_back(printArg<uint32_t>(PC));
10469 break;
10470#endif
10471#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10472bool emitCastIntegralFloatingSint8( const llvm::fltSemantics * , uint32_t , SourceInfo);
10473bool emitCastIntegralFloatingUint8( const llvm::fltSemantics * , uint32_t , SourceInfo);
10474bool emitCastIntegralFloatingSint16( const llvm::fltSemantics * , uint32_t , SourceInfo);
10475bool emitCastIntegralFloatingUint16( const llvm::fltSemantics * , uint32_t , SourceInfo);
10476bool emitCastIntegralFloatingSint32( const llvm::fltSemantics * , uint32_t , SourceInfo);
10477bool emitCastIntegralFloatingUint32( const llvm::fltSemantics * , uint32_t , SourceInfo);
10478bool emitCastIntegralFloatingSint64( const llvm::fltSemantics * , uint32_t , SourceInfo);
10479bool emitCastIntegralFloatingUint64( const llvm::fltSemantics * , uint32_t , SourceInfo);
10480bool emitCastIntegralFloatingIntAP( const llvm::fltSemantics * , uint32_t , SourceInfo);
10481bool emitCastIntegralFloatingIntAPS( const llvm::fltSemantics * , uint32_t , SourceInfo);
10482bool emitCastIntegralFloatingBool( const llvm::fltSemantics * , uint32_t , SourceInfo);
10483bool emitCastIntegralFloatingFixedPoint( const llvm::fltSemantics * , uint32_t , SourceInfo);
10484#endif
10485#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10486[[nodiscard]] bool emitCastIntegralFloating(PrimType, const llvm::fltSemantics *, uint32_t, SourceInfo I);
10487#endif
10488#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
10489bool
10490#if defined(GET_EVAL_IMPL)
10491EvalEmitter
10492#else
10493ByteCodeEmitter
10494#endif
10495::emitCastIntegralFloating(PrimType T0, const llvm::fltSemantics * A0, uint32_t A1, SourceInfo I) {
10496 switch (T0) {
10497 case PT_Sint8:
10498 return emitCastIntegralFloatingSint8(A0, A1, I);
10499 case PT_Uint8:
10500 return emitCastIntegralFloatingUint8(A0, A1, I);
10501 case PT_Sint16:
10502 return emitCastIntegralFloatingSint16(A0, A1, I);
10503 case PT_Uint16:
10504 return emitCastIntegralFloatingUint16(A0, A1, I);
10505 case PT_Sint32:
10506 return emitCastIntegralFloatingSint32(A0, A1, I);
10507 case PT_Uint32:
10508 return emitCastIntegralFloatingUint32(A0, A1, I);
10509 case PT_Sint64:
10510 return emitCastIntegralFloatingSint64(A0, A1, I);
10511 case PT_Uint64:
10512 return emitCastIntegralFloatingUint64(A0, A1, I);
10513 case PT_IntAP:
10514 return emitCastIntegralFloatingIntAP(A0, A1, I);
10515 case PT_IntAPS:
10516 return emitCastIntegralFloatingIntAPS(A0, A1, I);
10517 case PT_Bool:
10518 return emitCastIntegralFloatingBool(A0, A1, I);
10519 case PT_FixedPoint:
10520 return emitCastIntegralFloatingFixedPoint(A0, A1, I);
10521 default: llvm_unreachable("invalid type: emitCastIntegralFloating");
10522 }
10523 llvm_unreachable("invalid enum value");
10524}
10525#endif
10526#ifdef GET_LINK_IMPL
10527bool ByteCodeEmitter::emitCastIntegralFloatingSint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10528 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint8, A0, A1, L);
10529}
10530bool ByteCodeEmitter::emitCastIntegralFloatingUint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10531 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint8, A0, A1, L);
10532}
10533bool ByteCodeEmitter::emitCastIntegralFloatingSint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10534 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint16, A0, A1, L);
10535}
10536bool ByteCodeEmitter::emitCastIntegralFloatingUint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10537 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint16, A0, A1, L);
10538}
10539bool ByteCodeEmitter::emitCastIntegralFloatingSint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10540 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint32, A0, A1, L);
10541}
10542bool ByteCodeEmitter::emitCastIntegralFloatingUint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10543 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint32, A0, A1, L);
10544}
10545bool ByteCodeEmitter::emitCastIntegralFloatingSint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10546 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint64, A0, A1, L);
10547}
10548bool ByteCodeEmitter::emitCastIntegralFloatingUint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10549 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint64, A0, A1, L);
10550}
10551bool ByteCodeEmitter::emitCastIntegralFloatingIntAP( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10552 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingIntAP, A0, A1, L);
10553}
10554bool ByteCodeEmitter::emitCastIntegralFloatingIntAPS( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10555 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingIntAPS, A0, A1, L);
10556}
10557bool ByteCodeEmitter::emitCastIntegralFloatingBool( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10558 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingBool, A0, A1, L);
10559}
10560bool ByteCodeEmitter::emitCastIntegralFloatingFixedPoint( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10561 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingFixedPoint, A0, A1, L);
10562}
10563#endif
10564#ifdef GET_EVAL_IMPL
10565bool EvalEmitter::emitCastIntegralFloatingSint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10566 if (!isActive()) return true;
10567 CurrentSource = L;
10568 return CastIntegralFloating<PT_Sint8>(S, CodePtr(), A0, A1);
10569}
10570bool EvalEmitter::emitCastIntegralFloatingUint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10571 if (!isActive()) return true;
10572 CurrentSource = L;
10573 return CastIntegralFloating<PT_Uint8>(S, CodePtr(), A0, A1);
10574}
10575bool EvalEmitter::emitCastIntegralFloatingSint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10576 if (!isActive()) return true;
10577 CurrentSource = L;
10578 return CastIntegralFloating<PT_Sint16>(S, CodePtr(), A0, A1);
10579}
10580bool EvalEmitter::emitCastIntegralFloatingUint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10581 if (!isActive()) return true;
10582 CurrentSource = L;
10583 return CastIntegralFloating<PT_Uint16>(S, CodePtr(), A0, A1);
10584}
10585bool EvalEmitter::emitCastIntegralFloatingSint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10586 if (!isActive()) return true;
10587 CurrentSource = L;
10588 return CastIntegralFloating<PT_Sint32>(S, CodePtr(), A0, A1);
10589}
10590bool EvalEmitter::emitCastIntegralFloatingUint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10591 if (!isActive()) return true;
10592 CurrentSource = L;
10593 return CastIntegralFloating<PT_Uint32>(S, CodePtr(), A0, A1);
10594}
10595bool EvalEmitter::emitCastIntegralFloatingSint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10596 if (!isActive()) return true;
10597 CurrentSource = L;
10598 return CastIntegralFloating<PT_Sint64>(S, CodePtr(), A0, A1);
10599}
10600bool EvalEmitter::emitCastIntegralFloatingUint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10601 if (!isActive()) return true;
10602 CurrentSource = L;
10603 return CastIntegralFloating<PT_Uint64>(S, CodePtr(), A0, A1);
10604}
10605bool EvalEmitter::emitCastIntegralFloatingIntAP( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10606 if (!isActive()) return true;
10607 CurrentSource = L;
10608 return CastIntegralFloating<PT_IntAP>(S, CodePtr(), A0, A1);
10609}
10610bool EvalEmitter::emitCastIntegralFloatingIntAPS( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10611 if (!isActive()) return true;
10612 CurrentSource = L;
10613 return CastIntegralFloating<PT_IntAPS>(S, CodePtr(), A0, A1);
10614}
10615bool EvalEmitter::emitCastIntegralFloatingBool( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10616 if (!isActive()) return true;
10617 CurrentSource = L;
10618 return CastIntegralFloating<PT_Bool>(S, CodePtr(), A0, A1);
10619}
10620bool EvalEmitter::emitCastIntegralFloatingFixedPoint( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10621 if (!isActive()) return true;
10622 CurrentSource = L;
10623 return CastIntegralFloating<PT_FixedPoint>(S, CodePtr(), A0, A1);
10624}
10625#endif
10626#ifdef GET_OPCODE_NAMES
10627OP_CastMemberPtrBasePop,
10628#endif
10629#ifdef GET_INTERPFN_LIST
10630&Interp_CastMemberPtrBasePop,
10631#endif
10632#ifdef GET_INTERPFN_DISPATCHERS
10633PRESERVE_NONE
10634static bool Interp_CastMemberPtrBasePop(InterpState &S) {
10635 {
10636 const auto V0 = ReadArg<int32_t>(S, S.PC);
10637 const auto V1 = ReadArg<const RecordDecl *>(S, S.PC);
10638 if (!CastMemberPtrBasePop(S, V0, V1)) return false;
10639 }
10640#if USE_TAILCALLS
10641 MUSTTAIL return InterpNext(S);
10642#else
10643 return true;
10644#endif
10645}
10646#endif
10647#ifdef GET_DISASM
10648case OP_CastMemberPtrBasePop:
10649 Text.Op = PrintName("CastMemberPtrBasePop");
10650 Text.Args.push_back(printArg<int32_t>(PC));
10651 Text.Args.push_back(printArg<const RecordDecl *>(PC));
10652 break;
10653#endif
10654#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10655bool emitCastMemberPtrBasePop( int32_t , const RecordDecl * , SourceInfo);
10656#endif
10657#ifdef GET_LINK_IMPL
10658bool ByteCodeEmitter::emitCastMemberPtrBasePop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
10659 return emitOp<int32_t, const RecordDecl *>(OP_CastMemberPtrBasePop, A0, A1, L);
10660}
10661#endif
10662#ifdef GET_EVAL_IMPL
10663bool EvalEmitter::emitCastMemberPtrBasePop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
10664 if (!isActive()) return true;
10665 CurrentSource = L;
10666 return CastMemberPtrBasePop(S, A0, A1);
10667}
10668#endif
10669#ifdef GET_OPCODE_NAMES
10670OP_CastMemberPtrDerivedPop,
10671#endif
10672#ifdef GET_INTERPFN_LIST
10673&Interp_CastMemberPtrDerivedPop,
10674#endif
10675#ifdef GET_INTERPFN_DISPATCHERS
10676PRESERVE_NONE
10677static bool Interp_CastMemberPtrDerivedPop(InterpState &S) {
10678 {
10679 const auto V0 = ReadArg<int32_t>(S, S.PC);
10680 const auto V1 = ReadArg<const RecordDecl *>(S, S.PC);
10681 if (!CastMemberPtrDerivedPop(S, V0, V1)) return false;
10682 }
10683#if USE_TAILCALLS
10684 MUSTTAIL return InterpNext(S);
10685#else
10686 return true;
10687#endif
10688}
10689#endif
10690#ifdef GET_DISASM
10691case OP_CastMemberPtrDerivedPop:
10692 Text.Op = PrintName("CastMemberPtrDerivedPop");
10693 Text.Args.push_back(printArg<int32_t>(PC));
10694 Text.Args.push_back(printArg<const RecordDecl *>(PC));
10695 break;
10696#endif
10697#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10698bool emitCastMemberPtrDerivedPop( int32_t , const RecordDecl * , SourceInfo);
10699#endif
10700#ifdef GET_LINK_IMPL
10701bool ByteCodeEmitter::emitCastMemberPtrDerivedPop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
10702 return emitOp<int32_t, const RecordDecl *>(OP_CastMemberPtrDerivedPop, A0, A1, L);
10703}
10704#endif
10705#ifdef GET_EVAL_IMPL
10706bool EvalEmitter::emitCastMemberPtrDerivedPop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
10707 if (!isActive()) return true;
10708 CurrentSource = L;
10709 return CastMemberPtrDerivedPop(S, A0, A1);
10710}
10711#endif
10712#ifdef GET_OPCODE_NAMES
10713OP_CastMemberPtrPtr,
10714#endif
10715#ifdef GET_INTERPFN_LIST
10716&Interp_CastMemberPtrPtr,
10717#endif
10718#ifdef GET_INTERPFN_DISPATCHERS
10719PRESERVE_NONE
10720static bool Interp_CastMemberPtrPtr(InterpState &S) {
10721 if (!CastMemberPtrPtr(S, S.PC)) return false;
10722#if USE_TAILCALLS
10723 MUSTTAIL return InterpNext(S);
10724#else
10725 return true;
10726#endif
10727}
10728#endif
10729#ifdef GET_DISASM
10730case OP_CastMemberPtrPtr:
10731 Text.Op = PrintName("CastMemberPtrPtr");
10732 break;
10733#endif
10734#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10735bool emitCastMemberPtrPtr(SourceInfo);
10736#endif
10737#ifdef GET_LINK_IMPL
10738bool ByteCodeEmitter::emitCastMemberPtrPtr(SourceInfo L) {
10739 return emitOp<>(OP_CastMemberPtrPtr, L);
10740}
10741#endif
10742#ifdef GET_EVAL_IMPL
10743bool EvalEmitter::emitCastMemberPtrPtr(SourceInfo L) {
10744 if (!isActive()) return true;
10745 CurrentSource = L;
10746 return CastMemberPtrPtr(S, CodePtr());
10747}
10748#endif
10749#ifdef GET_OPCODE_NAMES
10750OP_CastPointerIntegralSint8,
10751OP_CastPointerIntegralUint8,
10752OP_CastPointerIntegralSint16,
10753OP_CastPointerIntegralUint16,
10754OP_CastPointerIntegralSint32,
10755OP_CastPointerIntegralUint32,
10756OP_CastPointerIntegralSint64,
10757OP_CastPointerIntegralUint64,
10758OP_CastPointerIntegralBool,
10759#endif
10760#ifdef GET_INTERPFN_LIST
10761&Interp_CastPointerIntegralSint8,
10762&Interp_CastPointerIntegralUint8,
10763&Interp_CastPointerIntegralSint16,
10764&Interp_CastPointerIntegralUint16,
10765&Interp_CastPointerIntegralSint32,
10766&Interp_CastPointerIntegralUint32,
10767&Interp_CastPointerIntegralSint64,
10768&Interp_CastPointerIntegralUint64,
10769&Interp_CastPointerIntegralBool,
10770#endif
10771#ifdef GET_INTERPFN_DISPATCHERS
10772PRESERVE_NONE
10773static bool Interp_CastPointerIntegralSint8(InterpState &S) {
10774 if (!CastPointerIntegral<PT_Sint8>(S, S.PC)) return false;
10775#if USE_TAILCALLS
10776 MUSTTAIL return InterpNext(S);
10777#else
10778 return true;
10779#endif
10780}
10781PRESERVE_NONE
10782static bool Interp_CastPointerIntegralUint8(InterpState &S) {
10783 if (!CastPointerIntegral<PT_Uint8>(S, S.PC)) return false;
10784#if USE_TAILCALLS
10785 MUSTTAIL return InterpNext(S);
10786#else
10787 return true;
10788#endif
10789}
10790PRESERVE_NONE
10791static bool Interp_CastPointerIntegralSint16(InterpState &S) {
10792 if (!CastPointerIntegral<PT_Sint16>(S, S.PC)) return false;
10793#if USE_TAILCALLS
10794 MUSTTAIL return InterpNext(S);
10795#else
10796 return true;
10797#endif
10798}
10799PRESERVE_NONE
10800static bool Interp_CastPointerIntegralUint16(InterpState &S) {
10801 if (!CastPointerIntegral<PT_Uint16>(S, S.PC)) return false;
10802#if USE_TAILCALLS
10803 MUSTTAIL return InterpNext(S);
10804#else
10805 return true;
10806#endif
10807}
10808PRESERVE_NONE
10809static bool Interp_CastPointerIntegralSint32(InterpState &S) {
10810 if (!CastPointerIntegral<PT_Sint32>(S, S.PC)) return false;
10811#if USE_TAILCALLS
10812 MUSTTAIL return InterpNext(S);
10813#else
10814 return true;
10815#endif
10816}
10817PRESERVE_NONE
10818static bool Interp_CastPointerIntegralUint32(InterpState &S) {
10819 if (!CastPointerIntegral<PT_Uint32>(S, S.PC)) return false;
10820#if USE_TAILCALLS
10821 MUSTTAIL return InterpNext(S);
10822#else
10823 return true;
10824#endif
10825}
10826PRESERVE_NONE
10827static bool Interp_CastPointerIntegralSint64(InterpState &S) {
10828 if (!CastPointerIntegral<PT_Sint64>(S, S.PC)) return false;
10829#if USE_TAILCALLS
10830 MUSTTAIL return InterpNext(S);
10831#else
10832 return true;
10833#endif
10834}
10835PRESERVE_NONE
10836static bool Interp_CastPointerIntegralUint64(InterpState &S) {
10837 if (!CastPointerIntegral<PT_Uint64>(S, S.PC)) return false;
10838#if USE_TAILCALLS
10839 MUSTTAIL return InterpNext(S);
10840#else
10841 return true;
10842#endif
10843}
10844PRESERVE_NONE
10845static bool Interp_CastPointerIntegralBool(InterpState &S) {
10846 if (!CastPointerIntegral<PT_Bool>(S, S.PC)) return false;
10847#if USE_TAILCALLS
10848 MUSTTAIL return InterpNext(S);
10849#else
10850 return true;
10851#endif
10852}
10853#endif
10854#ifdef GET_DISASM
10855case OP_CastPointerIntegralSint8:
10856 Text.Op = PrintName("CastPointerIntegralSint8");
10857 break;
10858case OP_CastPointerIntegralUint8:
10859 Text.Op = PrintName("CastPointerIntegralUint8");
10860 break;
10861case OP_CastPointerIntegralSint16:
10862 Text.Op = PrintName("CastPointerIntegralSint16");
10863 break;
10864case OP_CastPointerIntegralUint16:
10865 Text.Op = PrintName("CastPointerIntegralUint16");
10866 break;
10867case OP_CastPointerIntegralSint32:
10868 Text.Op = PrintName("CastPointerIntegralSint32");
10869 break;
10870case OP_CastPointerIntegralUint32:
10871 Text.Op = PrintName("CastPointerIntegralUint32");
10872 break;
10873case OP_CastPointerIntegralSint64:
10874 Text.Op = PrintName("CastPointerIntegralSint64");
10875 break;
10876case OP_CastPointerIntegralUint64:
10877 Text.Op = PrintName("CastPointerIntegralUint64");
10878 break;
10879case OP_CastPointerIntegralBool:
10880 Text.Op = PrintName("CastPointerIntegralBool");
10881 break;
10882#endif
10883#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10884bool emitCastPointerIntegralSint8(SourceInfo);
10885bool emitCastPointerIntegralUint8(SourceInfo);
10886bool emitCastPointerIntegralSint16(SourceInfo);
10887bool emitCastPointerIntegralUint16(SourceInfo);
10888bool emitCastPointerIntegralSint32(SourceInfo);
10889bool emitCastPointerIntegralUint32(SourceInfo);
10890bool emitCastPointerIntegralSint64(SourceInfo);
10891bool emitCastPointerIntegralUint64(SourceInfo);
10892bool emitCastPointerIntegralBool(SourceInfo);
10893#endif
10894#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10895[[nodiscard]] bool emitCastPointerIntegral(PrimType, SourceInfo I);
10896#endif
10897#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
10898bool
10899#if defined(GET_EVAL_IMPL)
10900EvalEmitter
10901#else
10902ByteCodeEmitter
10903#endif
10904::emitCastPointerIntegral(PrimType T0, SourceInfo I) {
10905 switch (T0) {
10906 case PT_Sint8:
10907 return emitCastPointerIntegralSint8(I);
10908 case PT_Uint8:
10909 return emitCastPointerIntegralUint8(I);
10910 case PT_Sint16:
10911 return emitCastPointerIntegralSint16(I);
10912 case PT_Uint16:
10913 return emitCastPointerIntegralUint16(I);
10914 case PT_Sint32:
10915 return emitCastPointerIntegralSint32(I);
10916 case PT_Uint32:
10917 return emitCastPointerIntegralUint32(I);
10918 case PT_Sint64:
10919 return emitCastPointerIntegralSint64(I);
10920 case PT_Uint64:
10921 return emitCastPointerIntegralUint64(I);
10922 case PT_Bool:
10923 return emitCastPointerIntegralBool(I);
10924 default: llvm_unreachable("invalid type: emitCastPointerIntegral");
10925 }
10926 llvm_unreachable("invalid enum value");
10927}
10928#endif
10929#ifdef GET_LINK_IMPL
10930bool ByteCodeEmitter::emitCastPointerIntegralSint8(SourceInfo L) {
10931 return emitOp<>(OP_CastPointerIntegralSint8, L);
10932}
10933bool ByteCodeEmitter::emitCastPointerIntegralUint8(SourceInfo L) {
10934 return emitOp<>(OP_CastPointerIntegralUint8, L);
10935}
10936bool ByteCodeEmitter::emitCastPointerIntegralSint16(SourceInfo L) {
10937 return emitOp<>(OP_CastPointerIntegralSint16, L);
10938}
10939bool ByteCodeEmitter::emitCastPointerIntegralUint16(SourceInfo L) {
10940 return emitOp<>(OP_CastPointerIntegralUint16, L);
10941}
10942bool ByteCodeEmitter::emitCastPointerIntegralSint32(SourceInfo L) {
10943 return emitOp<>(OP_CastPointerIntegralSint32, L);
10944}
10945bool ByteCodeEmitter::emitCastPointerIntegralUint32(SourceInfo L) {
10946 return emitOp<>(OP_CastPointerIntegralUint32, L);
10947}
10948bool ByteCodeEmitter::emitCastPointerIntegralSint64(SourceInfo L) {
10949 return emitOp<>(OP_CastPointerIntegralSint64, L);
10950}
10951bool ByteCodeEmitter::emitCastPointerIntegralUint64(SourceInfo L) {
10952 return emitOp<>(OP_CastPointerIntegralUint64, L);
10953}
10954bool ByteCodeEmitter::emitCastPointerIntegralBool(SourceInfo L) {
10955 return emitOp<>(OP_CastPointerIntegralBool, L);
10956}
10957#endif
10958#ifdef GET_EVAL_IMPL
10959bool EvalEmitter::emitCastPointerIntegralSint8(SourceInfo L) {
10960 if (!isActive()) return true;
10961 CurrentSource = L;
10962 return CastPointerIntegral<PT_Sint8>(S, CodePtr());
10963}
10964bool EvalEmitter::emitCastPointerIntegralUint8(SourceInfo L) {
10965 if (!isActive()) return true;
10966 CurrentSource = L;
10967 return CastPointerIntegral<PT_Uint8>(S, CodePtr());
10968}
10969bool EvalEmitter::emitCastPointerIntegralSint16(SourceInfo L) {
10970 if (!isActive()) return true;
10971 CurrentSource = L;
10972 return CastPointerIntegral<PT_Sint16>(S, CodePtr());
10973}
10974bool EvalEmitter::emitCastPointerIntegralUint16(SourceInfo L) {
10975 if (!isActive()) return true;
10976 CurrentSource = L;
10977 return CastPointerIntegral<PT_Uint16>(S, CodePtr());
10978}
10979bool EvalEmitter::emitCastPointerIntegralSint32(SourceInfo L) {
10980 if (!isActive()) return true;
10981 CurrentSource = L;
10982 return CastPointerIntegral<PT_Sint32>(S, CodePtr());
10983}
10984bool EvalEmitter::emitCastPointerIntegralUint32(SourceInfo L) {
10985 if (!isActive()) return true;
10986 CurrentSource = L;
10987 return CastPointerIntegral<PT_Uint32>(S, CodePtr());
10988}
10989bool EvalEmitter::emitCastPointerIntegralSint64(SourceInfo L) {
10990 if (!isActive()) return true;
10991 CurrentSource = L;
10992 return CastPointerIntegral<PT_Sint64>(S, CodePtr());
10993}
10994bool EvalEmitter::emitCastPointerIntegralUint64(SourceInfo L) {
10995 if (!isActive()) return true;
10996 CurrentSource = L;
10997 return CastPointerIntegral<PT_Uint64>(S, CodePtr());
10998}
10999bool EvalEmitter::emitCastPointerIntegralBool(SourceInfo L) {
11000 if (!isActive()) return true;
11001 CurrentSource = L;
11002 return CastPointerIntegral<PT_Bool>(S, CodePtr());
11003}
11004#endif
11005#ifdef GET_OPCODE_NAMES
11006OP_CastPointerIntegralAP,
11007#endif
11008#ifdef GET_INTERPFN_LIST
11009&Interp_CastPointerIntegralAP,
11010#endif
11011#ifdef GET_INTERPFN_DISPATCHERS
11012PRESERVE_NONE
11013static bool Interp_CastPointerIntegralAP(InterpState &S) {
11014 {
11015 CodePtr OpPC = S.PC;
11016 const auto V0 = ReadArg<uint32_t>(S, S.PC);
11017 if (!CastPointerIntegralAP(S, OpPC, V0)) return false;
11018 }
11019#if USE_TAILCALLS
11020 MUSTTAIL return InterpNext(S);
11021#else
11022 return true;
11023#endif
11024}
11025#endif
11026#ifdef GET_DISASM
11027case OP_CastPointerIntegralAP:
11028 Text.Op = PrintName("CastPointerIntegralAP");
11029 Text.Args.push_back(printArg<uint32_t>(PC));
11030 break;
11031#endif
11032#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11033bool emitCastPointerIntegralAP( uint32_t , SourceInfo);
11034#endif
11035#ifdef GET_LINK_IMPL
11036bool ByteCodeEmitter::emitCastPointerIntegralAP( uint32_t A0, SourceInfo L) {
11037 return emitOp<uint32_t>(OP_CastPointerIntegralAP, A0, L);
11038}
11039#endif
11040#ifdef GET_EVAL_IMPL
11041bool EvalEmitter::emitCastPointerIntegralAP( uint32_t A0, SourceInfo L) {
11042 if (!isActive()) return true;
11043 CurrentSource = L;
11044 return CastPointerIntegralAP(S, CodePtr(), A0);
11045}
11046#endif
11047#ifdef GET_OPCODE_NAMES
11048OP_CastPointerIntegralAPS,
11049#endif
11050#ifdef GET_INTERPFN_LIST
11051&Interp_CastPointerIntegralAPS,
11052#endif
11053#ifdef GET_INTERPFN_DISPATCHERS
11054PRESERVE_NONE
11055static bool Interp_CastPointerIntegralAPS(InterpState &S) {
11056 {
11057 CodePtr OpPC = S.PC;
11058 const auto V0 = ReadArg<uint32_t>(S, S.PC);
11059 if (!CastPointerIntegralAPS(S, OpPC, V0)) return false;
11060 }
11061#if USE_TAILCALLS
11062 MUSTTAIL return InterpNext(S);
11063#else
11064 return true;
11065#endif
11066}
11067#endif
11068#ifdef GET_DISASM
11069case OP_CastPointerIntegralAPS:
11070 Text.Op = PrintName("CastPointerIntegralAPS");
11071 Text.Args.push_back(printArg<uint32_t>(PC));
11072 break;
11073#endif
11074#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11075bool emitCastPointerIntegralAPS( uint32_t , SourceInfo);
11076#endif
11077#ifdef GET_LINK_IMPL
11078bool ByteCodeEmitter::emitCastPointerIntegralAPS( uint32_t A0, SourceInfo L) {
11079 return emitOp<uint32_t>(OP_CastPointerIntegralAPS, A0, L);
11080}
11081#endif
11082#ifdef GET_EVAL_IMPL
11083bool EvalEmitter::emitCastPointerIntegralAPS( uint32_t A0, SourceInfo L) {
11084 if (!isActive()) return true;
11085 CurrentSource = L;
11086 return CastPointerIntegralAPS(S, CodePtr(), A0);
11087}
11088#endif
11089#ifdef GET_OPCODE_NAMES
11090OP_CheckAllocations,
11091#endif
11092#ifdef GET_INTERPFN_LIST
11093&Interp_CheckAllocations,
11094#endif
11095#ifdef GET_INTERPFN_DISPATCHERS
11096PRESERVE_NONE
11097static bool Interp_CheckAllocations(InterpState &S) {
11098 if (!CheckAllocations(S)) return false;
11099#if USE_TAILCALLS
11100 MUSTTAIL return InterpNext(S);
11101#else
11102 return true;
11103#endif
11104}
11105#endif
11106#ifdef GET_DISASM
11107case OP_CheckAllocations:
11108 Text.Op = PrintName("CheckAllocations");
11109 break;
11110#endif
11111#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11112bool emitCheckAllocations(SourceInfo);
11113#endif
11114#ifdef GET_LINK_IMPL
11115bool ByteCodeEmitter::emitCheckAllocations(SourceInfo L) {
11116 return emitOp<>(OP_CheckAllocations, L);
11117}
11118#endif
11119#ifdef GET_EVAL_IMPL
11120bool EvalEmitter::emitCheckAllocations(SourceInfo L) {
11121 if (!isActive()) return true;
11122 CurrentSource = L;
11123 return CheckAllocations(S);
11124}
11125#endif
11126#ifdef GET_OPCODE_NAMES
11127OP_CheckArrayDestSize,
11128#endif
11129#ifdef GET_INTERPFN_LIST
11130&Interp_CheckArrayDestSize,
11131#endif
11132#ifdef GET_INTERPFN_DISPATCHERS
11133PRESERVE_NONE
11134static bool Interp_CheckArrayDestSize(InterpState &S) {
11135 {
11136 CodePtr OpPC = S.PC;
11137 const auto V0 = ReadArg<uint64_t>(S, S.PC);
11138 if (!CheckArrayDestSize(S, OpPC, V0)) return false;
11139 }
11140#if USE_TAILCALLS
11141 MUSTTAIL return InterpNext(S);
11142#else
11143 return true;
11144#endif
11145}
11146#endif
11147#ifdef GET_DISASM
11148case OP_CheckArrayDestSize:
11149 Text.Op = PrintName("CheckArrayDestSize");
11150 Text.Args.push_back(printArg<uint64_t>(PC));
11151 break;
11152#endif
11153#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11154bool emitCheckArrayDestSize( uint64_t , SourceInfo);
11155#endif
11156#ifdef GET_LINK_IMPL
11157bool ByteCodeEmitter::emitCheckArrayDestSize( uint64_t A0, SourceInfo L) {
11158 return emitOp<uint64_t>(OP_CheckArrayDestSize, A0, L);
11159}
11160#endif
11161#ifdef GET_EVAL_IMPL
11162bool EvalEmitter::emitCheckArrayDestSize( uint64_t A0, SourceInfo L) {
11163 if (!isActive()) return true;
11164 CurrentSource = L;
11165 return CheckArrayDestSize(S, CodePtr(), A0);
11166}
11167#endif
11168#ifdef GET_OPCODE_NAMES
11169OP_CheckArraySize,
11170#endif
11171#ifdef GET_INTERPFN_LIST
11172&Interp_CheckArraySize,
11173#endif
11174#ifdef GET_INTERPFN_DISPATCHERS
11175PRESERVE_NONE
11176static bool Interp_CheckArraySize(InterpState &S) {
11177 {
11178 CodePtr OpPC = S.PC;
11179 const auto V0 = ReadArg<uint64_t>(S, S.PC);
11180 if (!CheckArraySize(S, OpPC, V0)) return false;
11181 }
11182#if USE_TAILCALLS
11183 MUSTTAIL return InterpNext(S);
11184#else
11185 return true;
11186#endif
11187}
11188#endif
11189#ifdef GET_DISASM
11190case OP_CheckArraySize:
11191 Text.Op = PrintName("CheckArraySize");
11192 Text.Args.push_back(printArg<uint64_t>(PC));
11193 break;
11194#endif
11195#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11196bool emitCheckArraySize( uint64_t , SourceInfo);
11197#endif
11198#ifdef GET_LINK_IMPL
11199bool ByteCodeEmitter::emitCheckArraySize( uint64_t A0, SourceInfo L) {
11200 return emitOp<uint64_t>(OP_CheckArraySize, A0, L);
11201}
11202#endif
11203#ifdef GET_EVAL_IMPL
11204bool EvalEmitter::emitCheckArraySize( uint64_t A0, SourceInfo L) {
11205 if (!isActive()) return true;
11206 CurrentSource = L;
11207 return CheckArraySize(S, CodePtr(), A0);
11208}
11209#endif
11210#ifdef GET_OPCODE_NAMES
11211OP_CheckBitCast,
11212#endif
11213#ifdef GET_INTERPFN_LIST
11214&Interp_CheckBitCast,
11215#endif
11216#ifdef GET_INTERPFN_DISPATCHERS
11217PRESERVE_NONE
11218static bool Interp_CheckBitCast(InterpState &S) {
11219 {
11220 CodePtr OpPC = S.PC;
11221 const auto V0 = ReadArg<const Type *>(S, S.PC);
11222 const auto V1 = ReadArg<bool>(S, S.PC);
11223 if (!CheckBitCast(S, OpPC, V0, V1)) return false;
11224 }
11225#if USE_TAILCALLS
11226 MUSTTAIL return InterpNext(S);
11227#else
11228 return true;
11229#endif
11230}
11231#endif
11232#ifdef GET_DISASM
11233case OP_CheckBitCast:
11234 Text.Op = PrintName("CheckBitCast");
11235 Text.Args.push_back(printArg<const Type *>(PC));
11236 Text.Args.push_back(printArg<bool>(PC));
11237 break;
11238#endif
11239#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11240bool emitCheckBitCast( const Type * , bool , SourceInfo);
11241#endif
11242#ifdef GET_LINK_IMPL
11243bool ByteCodeEmitter::emitCheckBitCast( const Type * A0, bool A1, SourceInfo L) {
11244 return emitOp<const Type *, bool>(OP_CheckBitCast, A0, A1, L);
11245}
11246#endif
11247#ifdef GET_EVAL_IMPL
11248bool EvalEmitter::emitCheckBitCast( const Type * A0, bool A1, SourceInfo L) {
11249 if (!isActive()) return true;
11250 CurrentSource = L;
11251 return CheckBitCast(S, CodePtr(), A0, A1);
11252}
11253#endif
11254#ifdef GET_OPCODE_NAMES
11255OP_CheckDecl,
11256#endif
11257#ifdef GET_INTERPFN_LIST
11258&Interp_CheckDecl,
11259#endif
11260#ifdef GET_INTERPFN_DISPATCHERS
11261PRESERVE_NONE
11262static bool Interp_CheckDecl(InterpState &S) {
11263 {
11264 const auto V0 = ReadArg<const VarDecl*>(S, S.PC);
11265 if (!CheckDecl(S, V0)) return false;
11266 }
11267#if USE_TAILCALLS
11268 MUSTTAIL return InterpNext(S);
11269#else
11270 return true;
11271#endif
11272}
11273#endif
11274#ifdef GET_DISASM
11275case OP_CheckDecl:
11276 Text.Op = PrintName("CheckDecl");
11277 Text.Args.push_back(printArg<const VarDecl*>(PC));
11278 break;
11279#endif
11280#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11281bool emitCheckDecl( const VarDecl* , SourceInfo);
11282#endif
11283#ifdef GET_LINK_IMPL
11284bool ByteCodeEmitter::emitCheckDecl( const VarDecl* A0, SourceInfo L) {
11285 return emitOp<const VarDecl*>(OP_CheckDecl, A0, L);
11286}
11287#endif
11288#ifdef GET_EVAL_IMPL
11289bool EvalEmitter::emitCheckDecl( const VarDecl* A0, SourceInfo L) {
11290 if (!isActive()) return true;
11291 CurrentSource = L;
11292 return CheckDecl(S, A0);
11293}
11294#endif
11295#ifdef GET_OPCODE_NAMES
11296OP_CheckDestruction,
11297#endif
11298#ifdef GET_INTERPFN_LIST
11299&Interp_CheckDestruction,
11300#endif
11301#ifdef GET_INTERPFN_DISPATCHERS
11302PRESERVE_NONE
11303static bool Interp_CheckDestruction(InterpState &S) {
11304 if (!CheckDestruction(S, S.PC)) return false;
11305#if USE_TAILCALLS
11306 MUSTTAIL return InterpNext(S);
11307#else
11308 return true;
11309#endif
11310}
11311#endif
11312#ifdef GET_DISASM
11313case OP_CheckDestruction:
11314 Text.Op = PrintName("CheckDestruction");
11315 break;
11316#endif
11317#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11318bool emitCheckDestruction(SourceInfo);
11319#endif
11320#ifdef GET_LINK_IMPL
11321bool ByteCodeEmitter::emitCheckDestruction(SourceInfo L) {
11322 return emitOp<>(OP_CheckDestruction, L);
11323}
11324#endif
11325#ifdef GET_EVAL_IMPL
11326bool EvalEmitter::emitCheckDestruction(SourceInfo L) {
11327 if (!isActive()) return true;
11328 CurrentSource = L;
11329 return CheckDestruction(S, CodePtr());
11330}
11331#endif
11332#ifdef GET_OPCODE_NAMES
11333OP_CheckEnumValueSint8,
11334OP_CheckEnumValueUint8,
11335OP_CheckEnumValueSint16,
11336OP_CheckEnumValueUint16,
11337OP_CheckEnumValueSint32,
11338OP_CheckEnumValueUint32,
11339OP_CheckEnumValueSint64,
11340OP_CheckEnumValueUint64,
11341OP_CheckEnumValueIntAP,
11342OP_CheckEnumValueIntAPS,
11343OP_CheckEnumValueBool,
11344#endif
11345#ifdef GET_INTERPFN_LIST
11346&Interp_CheckEnumValueSint8,
11347&Interp_CheckEnumValueUint8,
11348&Interp_CheckEnumValueSint16,
11349&Interp_CheckEnumValueUint16,
11350&Interp_CheckEnumValueSint32,
11351&Interp_CheckEnumValueUint32,
11352&Interp_CheckEnumValueSint64,
11353&Interp_CheckEnumValueUint64,
11354&Interp_CheckEnumValueIntAP,
11355&Interp_CheckEnumValueIntAPS,
11356&Interp_CheckEnumValueBool,
11357#endif
11358#ifdef GET_INTERPFN_DISPATCHERS
11359PRESERVE_NONE
11360static bool Interp_CheckEnumValueSint8(InterpState &S) {
11361 {
11362 CodePtr OpPC = S.PC;
11363 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11364 CheckEnumValue<PT_Sint8>(S, OpPC, V0);
11365 }
11366#if USE_TAILCALLS
11367 MUSTTAIL return InterpNext(S);
11368#else
11369 return true;
11370#endif
11371}
11372PRESERVE_NONE
11373static bool Interp_CheckEnumValueUint8(InterpState &S) {
11374 {
11375 CodePtr OpPC = S.PC;
11376 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11377 CheckEnumValue<PT_Uint8>(S, OpPC, V0);
11378 }
11379#if USE_TAILCALLS
11380 MUSTTAIL return InterpNext(S);
11381#else
11382 return true;
11383#endif
11384}
11385PRESERVE_NONE
11386static bool Interp_CheckEnumValueSint16(InterpState &S) {
11387 {
11388 CodePtr OpPC = S.PC;
11389 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11390 CheckEnumValue<PT_Sint16>(S, OpPC, V0);
11391 }
11392#if USE_TAILCALLS
11393 MUSTTAIL return InterpNext(S);
11394#else
11395 return true;
11396#endif
11397}
11398PRESERVE_NONE
11399static bool Interp_CheckEnumValueUint16(InterpState &S) {
11400 {
11401 CodePtr OpPC = S.PC;
11402 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11403 CheckEnumValue<PT_Uint16>(S, OpPC, V0);
11404 }
11405#if USE_TAILCALLS
11406 MUSTTAIL return InterpNext(S);
11407#else
11408 return true;
11409#endif
11410}
11411PRESERVE_NONE
11412static bool Interp_CheckEnumValueSint32(InterpState &S) {
11413 {
11414 CodePtr OpPC = S.PC;
11415 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11416 CheckEnumValue<PT_Sint32>(S, OpPC, V0);
11417 }
11418#if USE_TAILCALLS
11419 MUSTTAIL return InterpNext(S);
11420#else
11421 return true;
11422#endif
11423}
11424PRESERVE_NONE
11425static bool Interp_CheckEnumValueUint32(InterpState &S) {
11426 {
11427 CodePtr OpPC = S.PC;
11428 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11429 CheckEnumValue<PT_Uint32>(S, OpPC, V0);
11430 }
11431#if USE_TAILCALLS
11432 MUSTTAIL return InterpNext(S);
11433#else
11434 return true;
11435#endif
11436}
11437PRESERVE_NONE
11438static bool Interp_CheckEnumValueSint64(InterpState &S) {
11439 {
11440 CodePtr OpPC = S.PC;
11441 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11442 CheckEnumValue<PT_Sint64>(S, OpPC, V0);
11443 }
11444#if USE_TAILCALLS
11445 MUSTTAIL return InterpNext(S);
11446#else
11447 return true;
11448#endif
11449}
11450PRESERVE_NONE
11451static bool Interp_CheckEnumValueUint64(InterpState &S) {
11452 {
11453 CodePtr OpPC = S.PC;
11454 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11455 CheckEnumValue<PT_Uint64>(S, OpPC, V0);
11456 }
11457#if USE_TAILCALLS
11458 MUSTTAIL return InterpNext(S);
11459#else
11460 return true;
11461#endif
11462}
11463PRESERVE_NONE
11464static bool Interp_CheckEnumValueIntAP(InterpState &S) {
11465 {
11466 CodePtr OpPC = S.PC;
11467 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11468 CheckEnumValue<PT_IntAP>(S, OpPC, V0);
11469 }
11470#if USE_TAILCALLS
11471 MUSTTAIL return InterpNext(S);
11472#else
11473 return true;
11474#endif
11475}
11476PRESERVE_NONE
11477static bool Interp_CheckEnumValueIntAPS(InterpState &S) {
11478 {
11479 CodePtr OpPC = S.PC;
11480 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11481 CheckEnumValue<PT_IntAPS>(S, OpPC, V0);
11482 }
11483#if USE_TAILCALLS
11484 MUSTTAIL return InterpNext(S);
11485#else
11486 return true;
11487#endif
11488}
11489PRESERVE_NONE
11490static bool Interp_CheckEnumValueBool(InterpState &S) {
11491 {
11492 CodePtr OpPC = S.PC;
11493 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11494 CheckEnumValue<PT_Bool>(S, OpPC, V0);
11495 }
11496#if USE_TAILCALLS
11497 MUSTTAIL return InterpNext(S);
11498#else
11499 return true;
11500#endif
11501}
11502#endif
11503#ifdef GET_DISASM
11504case OP_CheckEnumValueSint8:
11505 Text.Op = PrintName("CheckEnumValueSint8");
11506 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11507 break;
11508case OP_CheckEnumValueUint8:
11509 Text.Op = PrintName("CheckEnumValueUint8");
11510 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11511 break;
11512case OP_CheckEnumValueSint16:
11513 Text.Op = PrintName("CheckEnumValueSint16");
11514 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11515 break;
11516case OP_CheckEnumValueUint16:
11517 Text.Op = PrintName("CheckEnumValueUint16");
11518 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11519 break;
11520case OP_CheckEnumValueSint32:
11521 Text.Op = PrintName("CheckEnumValueSint32");
11522 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11523 break;
11524case OP_CheckEnumValueUint32:
11525 Text.Op = PrintName("CheckEnumValueUint32");
11526 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11527 break;
11528case OP_CheckEnumValueSint64:
11529 Text.Op = PrintName("CheckEnumValueSint64");
11530 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11531 break;
11532case OP_CheckEnumValueUint64:
11533 Text.Op = PrintName("CheckEnumValueUint64");
11534 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11535 break;
11536case OP_CheckEnumValueIntAP:
11537 Text.Op = PrintName("CheckEnumValueIntAP");
11538 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11539 break;
11540case OP_CheckEnumValueIntAPS:
11541 Text.Op = PrintName("CheckEnumValueIntAPS");
11542 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11543 break;
11544case OP_CheckEnumValueBool:
11545 Text.Op = PrintName("CheckEnumValueBool");
11546 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11547 break;
11548#endif
11549#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11550bool emitCheckEnumValueSint8( const EnumDecl * , SourceInfo);
11551bool emitCheckEnumValueUint8( const EnumDecl * , SourceInfo);
11552bool emitCheckEnumValueSint16( const EnumDecl * , SourceInfo);
11553bool emitCheckEnumValueUint16( const EnumDecl * , SourceInfo);
11554bool emitCheckEnumValueSint32( const EnumDecl * , SourceInfo);
11555bool emitCheckEnumValueUint32( const EnumDecl * , SourceInfo);
11556bool emitCheckEnumValueSint64( const EnumDecl * , SourceInfo);
11557bool emitCheckEnumValueUint64( const EnumDecl * , SourceInfo);
11558bool emitCheckEnumValueIntAP( const EnumDecl * , SourceInfo);
11559bool emitCheckEnumValueIntAPS( const EnumDecl * , SourceInfo);
11560bool emitCheckEnumValueBool( const EnumDecl * , SourceInfo);
11561#endif
11562#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11563[[nodiscard]] bool emitCheckEnumValue(PrimType, const EnumDecl *, SourceInfo I);
11564#endif
11565#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
11566bool
11567#if defined(GET_EVAL_IMPL)
11568EvalEmitter
11569#else
11570ByteCodeEmitter
11571#endif
11572::emitCheckEnumValue(PrimType T0, const EnumDecl * A0, SourceInfo I) {
11573 switch (T0) {
11574 case PT_Sint8:
11575 return emitCheckEnumValueSint8(A0, I);
11576 case PT_Uint8:
11577 return emitCheckEnumValueUint8(A0, I);
11578 case PT_Sint16:
11579 return emitCheckEnumValueSint16(A0, I);
11580 case PT_Uint16:
11581 return emitCheckEnumValueUint16(A0, I);
11582 case PT_Sint32:
11583 return emitCheckEnumValueSint32(A0, I);
11584 case PT_Uint32:
11585 return emitCheckEnumValueUint32(A0, I);
11586 case PT_Sint64:
11587 return emitCheckEnumValueSint64(A0, I);
11588 case PT_Uint64:
11589 return emitCheckEnumValueUint64(A0, I);
11590 case PT_IntAP:
11591 return emitCheckEnumValueIntAP(A0, I);
11592 case PT_IntAPS:
11593 return emitCheckEnumValueIntAPS(A0, I);
11594 case PT_Bool:
11595 return emitCheckEnumValueBool(A0, I);
11596 default: llvm_unreachable("invalid type: emitCheckEnumValue");
11597 }
11598 llvm_unreachable("invalid enum value");
11599}
11600#endif
11601#ifdef GET_LINK_IMPL
11602bool ByteCodeEmitter::emitCheckEnumValueSint8( const EnumDecl * A0, SourceInfo L) {
11603 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint8, A0, L);
11604}
11605bool ByteCodeEmitter::emitCheckEnumValueUint8( const EnumDecl * A0, SourceInfo L) {
11606 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint8, A0, L);
11607}
11608bool ByteCodeEmitter::emitCheckEnumValueSint16( const EnumDecl * A0, SourceInfo L) {
11609 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint16, A0, L);
11610}
11611bool ByteCodeEmitter::emitCheckEnumValueUint16( const EnumDecl * A0, SourceInfo L) {
11612 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint16, A0, L);
11613}
11614bool ByteCodeEmitter::emitCheckEnumValueSint32( const EnumDecl * A0, SourceInfo L) {
11615 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint32, A0, L);
11616}
11617bool ByteCodeEmitter::emitCheckEnumValueUint32( const EnumDecl * A0, SourceInfo L) {
11618 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint32, A0, L);
11619}
11620bool ByteCodeEmitter::emitCheckEnumValueSint64( const EnumDecl * A0, SourceInfo L) {
11621 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint64, A0, L);
11622}
11623bool ByteCodeEmitter::emitCheckEnumValueUint64( const EnumDecl * A0, SourceInfo L) {
11624 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint64, A0, L);
11625}
11626bool ByteCodeEmitter::emitCheckEnumValueIntAP( const EnumDecl * A0, SourceInfo L) {
11627 return emitOp<const EnumDecl *>(OP_CheckEnumValueIntAP, A0, L);
11628}
11629bool ByteCodeEmitter::emitCheckEnumValueIntAPS( const EnumDecl * A0, SourceInfo L) {
11630 return emitOp<const EnumDecl *>(OP_CheckEnumValueIntAPS, A0, L);
11631}
11632bool ByteCodeEmitter::emitCheckEnumValueBool( const EnumDecl * A0, SourceInfo L) {
11633 return emitOp<const EnumDecl *>(OP_CheckEnumValueBool, A0, L);
11634}
11635#endif
11636#ifdef GET_EVAL_IMPL
11637bool EvalEmitter::emitCheckEnumValueSint8( const EnumDecl * A0, SourceInfo L) {
11638 if (!isActive()) return true;
11639 CurrentSource = L;
11640 return CheckEnumValue<PT_Sint8>(S, CodePtr(), A0);
11641}
11642bool EvalEmitter::emitCheckEnumValueUint8( const EnumDecl * A0, SourceInfo L) {
11643 if (!isActive()) return true;
11644 CurrentSource = L;
11645 return CheckEnumValue<PT_Uint8>(S, CodePtr(), A0);
11646}
11647bool EvalEmitter::emitCheckEnumValueSint16( const EnumDecl * A0, SourceInfo L) {
11648 if (!isActive()) return true;
11649 CurrentSource = L;
11650 return CheckEnumValue<PT_Sint16>(S, CodePtr(), A0);
11651}
11652bool EvalEmitter::emitCheckEnumValueUint16( const EnumDecl * A0, SourceInfo L) {
11653 if (!isActive()) return true;
11654 CurrentSource = L;
11655 return CheckEnumValue<PT_Uint16>(S, CodePtr(), A0);
11656}
11657bool EvalEmitter::emitCheckEnumValueSint32( const EnumDecl * A0, SourceInfo L) {
11658 if (!isActive()) return true;
11659 CurrentSource = L;
11660 return CheckEnumValue<PT_Sint32>(S, CodePtr(), A0);
11661}
11662bool EvalEmitter::emitCheckEnumValueUint32( const EnumDecl * A0, SourceInfo L) {
11663 if (!isActive()) return true;
11664 CurrentSource = L;
11665 return CheckEnumValue<PT_Uint32>(S, CodePtr(), A0);
11666}
11667bool EvalEmitter::emitCheckEnumValueSint64( const EnumDecl * A0, SourceInfo L) {
11668 if (!isActive()) return true;
11669 CurrentSource = L;
11670 return CheckEnumValue<PT_Sint64>(S, CodePtr(), A0);
11671}
11672bool EvalEmitter::emitCheckEnumValueUint64( const EnumDecl * A0, SourceInfo L) {
11673 if (!isActive()) return true;
11674 CurrentSource = L;
11675 return CheckEnumValue<PT_Uint64>(S, CodePtr(), A0);
11676}
11677bool EvalEmitter::emitCheckEnumValueIntAP( const EnumDecl * A0, SourceInfo L) {
11678 if (!isActive()) return true;
11679 CurrentSource = L;
11680 return CheckEnumValue<PT_IntAP>(S, CodePtr(), A0);
11681}
11682bool EvalEmitter::emitCheckEnumValueIntAPS( const EnumDecl * A0, SourceInfo L) {
11683 if (!isActive()) return true;
11684 CurrentSource = L;
11685 return CheckEnumValue<PT_IntAPS>(S, CodePtr(), A0);
11686}
11687bool EvalEmitter::emitCheckEnumValueBool( const EnumDecl * A0, SourceInfo L) {
11688 if (!isActive()) return true;
11689 CurrentSource = L;
11690 return CheckEnumValue<PT_Bool>(S, CodePtr(), A0);
11691}
11692#endif
11693#ifdef GET_OPCODE_NAMES
11694OP_CheckFunctionDecl,
11695#endif
11696#ifdef GET_INTERPFN_LIST
11697&Interp_CheckFunctionDecl,
11698#endif
11699#ifdef GET_INTERPFN_DISPATCHERS
11700PRESERVE_NONE
11701static bool Interp_CheckFunctionDecl(InterpState &S) {
11702 {
11703 CodePtr OpPC = S.PC;
11704 const auto V0 = ReadArg<const FunctionDecl *>(S, S.PC);
11705 if (!CheckFunctionDecl(S, OpPC, V0)) return false;
11706 }
11707#if USE_TAILCALLS
11708 MUSTTAIL return InterpNext(S);
11709#else
11710 return true;
11711#endif
11712}
11713#endif
11714#ifdef GET_DISASM
11715case OP_CheckFunctionDecl:
11716 Text.Op = PrintName("CheckFunctionDecl");
11717 Text.Args.push_back(printArg<const FunctionDecl *>(PC));
11718 break;
11719#endif
11720#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11721bool emitCheckFunctionDecl( const FunctionDecl * , SourceInfo);
11722#endif
11723#ifdef GET_LINK_IMPL
11724bool ByteCodeEmitter::emitCheckFunctionDecl( const FunctionDecl * A0, SourceInfo L) {
11725 return emitOp<const FunctionDecl *>(OP_CheckFunctionDecl, A0, L);
11726}
11727#endif
11728#ifdef GET_EVAL_IMPL
11729bool EvalEmitter::emitCheckFunctionDecl( const FunctionDecl * A0, SourceInfo L) {
11730 if (!isActive()) return true;
11731 CurrentSource = L;
11732 return CheckFunctionDecl(S, CodePtr(), A0);
11733}
11734#endif
11735#ifdef GET_OPCODE_NAMES
11736OP_CheckLiteralType,
11737#endif
11738#ifdef GET_INTERPFN_LIST
11739&Interp_CheckLiteralType,
11740#endif
11741#ifdef GET_INTERPFN_DISPATCHERS
11742PRESERVE_NONE
11743static bool Interp_CheckLiteralType(InterpState &S) {
11744 {
11745 CodePtr OpPC = S.PC;
11746 const auto V0 = ReadArg<const Type *>(S, S.PC);
11747 if (!CheckLiteralType(S, OpPC, V0)) return false;
11748 }
11749#if USE_TAILCALLS
11750 MUSTTAIL return InterpNext(S);
11751#else
11752 return true;
11753#endif
11754}
11755#endif
11756#ifdef GET_DISASM
11757case OP_CheckLiteralType:
11758 Text.Op = PrintName("CheckLiteralType");
11759 Text.Args.push_back(printArg<const Type *>(PC));
11760 break;
11761#endif
11762#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11763bool emitCheckLiteralType( const Type * , SourceInfo);
11764#endif
11765#ifdef GET_LINK_IMPL
11766bool ByteCodeEmitter::emitCheckLiteralType( const Type * A0, SourceInfo L) {
11767 return emitOp<const Type *>(OP_CheckLiteralType, A0, L);
11768}
11769#endif
11770#ifdef GET_EVAL_IMPL
11771bool EvalEmitter::emitCheckLiteralType( const Type * A0, SourceInfo L) {
11772 if (!isActive()) return true;
11773 CurrentSource = L;
11774 return CheckLiteralType(S, CodePtr(), A0);
11775}
11776#endif
11777#ifdef GET_OPCODE_NAMES
11778OP_CheckNewTypeMismatch,
11779#endif
11780#ifdef GET_INTERPFN_LIST
11781&Interp_CheckNewTypeMismatch,
11782#endif
11783#ifdef GET_INTERPFN_DISPATCHERS
11784PRESERVE_NONE
11785static bool Interp_CheckNewTypeMismatch(InterpState &S) {
11786 {
11787 CodePtr OpPC = S.PC;
11788 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11789 if (!CheckNewTypeMismatch(S, OpPC, V0)) return false;
11790 }
11791#if USE_TAILCALLS
11792 MUSTTAIL return InterpNext(S);
11793#else
11794 return true;
11795#endif
11796}
11797#endif
11798#ifdef GET_DISASM
11799case OP_CheckNewTypeMismatch:
11800 Text.Op = PrintName("CheckNewTypeMismatch");
11801 Text.Args.push_back(printArg<const Expr *>(PC));
11802 break;
11803#endif
11804#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11805bool emitCheckNewTypeMismatch( const Expr * , SourceInfo);
11806#endif
11807#ifdef GET_LINK_IMPL
11808bool ByteCodeEmitter::emitCheckNewTypeMismatch( const Expr * A0, SourceInfo L) {
11809 return emitOp<const Expr *>(OP_CheckNewTypeMismatch, A0, L);
11810}
11811#endif
11812#ifdef GET_EVAL_IMPL
11813bool EvalEmitter::emitCheckNewTypeMismatch( const Expr * A0, SourceInfo L) {
11814 if (!isActive()) return true;
11815 CurrentSource = L;
11816 return CheckNewTypeMismatch(S, CodePtr(), A0);
11817}
11818#endif
11819#ifdef GET_OPCODE_NAMES
11820OP_CheckNewTypeMismatchArraySint8,
11821OP_CheckNewTypeMismatchArrayUint8,
11822OP_CheckNewTypeMismatchArraySint16,
11823OP_CheckNewTypeMismatchArrayUint16,
11824OP_CheckNewTypeMismatchArraySint32,
11825OP_CheckNewTypeMismatchArrayUint32,
11826OP_CheckNewTypeMismatchArraySint64,
11827OP_CheckNewTypeMismatchArrayUint64,
11828OP_CheckNewTypeMismatchArrayIntAP,
11829OP_CheckNewTypeMismatchArrayIntAPS,
11830#endif
11831#ifdef GET_INTERPFN_LIST
11832&Interp_CheckNewTypeMismatchArraySint8,
11833&Interp_CheckNewTypeMismatchArrayUint8,
11834&Interp_CheckNewTypeMismatchArraySint16,
11835&Interp_CheckNewTypeMismatchArrayUint16,
11836&Interp_CheckNewTypeMismatchArraySint32,
11837&Interp_CheckNewTypeMismatchArrayUint32,
11838&Interp_CheckNewTypeMismatchArraySint64,
11839&Interp_CheckNewTypeMismatchArrayUint64,
11840&Interp_CheckNewTypeMismatchArrayIntAP,
11841&Interp_CheckNewTypeMismatchArrayIntAPS,
11842#endif
11843#ifdef GET_INTERPFN_DISPATCHERS
11844PRESERVE_NONE
11845static bool Interp_CheckNewTypeMismatchArraySint8(InterpState &S) {
11846 {
11847 CodePtr OpPC = S.PC;
11848 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11849 if (!CheckNewTypeMismatchArray<PT_Sint8>(S, OpPC, V0)) return false;
11850 }
11851#if USE_TAILCALLS
11852 MUSTTAIL return InterpNext(S);
11853#else
11854 return true;
11855#endif
11856}
11857PRESERVE_NONE
11858static bool Interp_CheckNewTypeMismatchArrayUint8(InterpState &S) {
11859 {
11860 CodePtr OpPC = S.PC;
11861 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11862 if (!CheckNewTypeMismatchArray<PT_Uint8>(S, OpPC, V0)) return false;
11863 }
11864#if USE_TAILCALLS
11865 MUSTTAIL return InterpNext(S);
11866#else
11867 return true;
11868#endif
11869}
11870PRESERVE_NONE
11871static bool Interp_CheckNewTypeMismatchArraySint16(InterpState &S) {
11872 {
11873 CodePtr OpPC = S.PC;
11874 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11875 if (!CheckNewTypeMismatchArray<PT_Sint16>(S, OpPC, V0)) return false;
11876 }
11877#if USE_TAILCALLS
11878 MUSTTAIL return InterpNext(S);
11879#else
11880 return true;
11881#endif
11882}
11883PRESERVE_NONE
11884static bool Interp_CheckNewTypeMismatchArrayUint16(InterpState &S) {
11885 {
11886 CodePtr OpPC = S.PC;
11887 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11888 if (!CheckNewTypeMismatchArray<PT_Uint16>(S, OpPC, V0)) return false;
11889 }
11890#if USE_TAILCALLS
11891 MUSTTAIL return InterpNext(S);
11892#else
11893 return true;
11894#endif
11895}
11896PRESERVE_NONE
11897static bool Interp_CheckNewTypeMismatchArraySint32(InterpState &S) {
11898 {
11899 CodePtr OpPC = S.PC;
11900 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11901 if (!CheckNewTypeMismatchArray<PT_Sint32>(S, OpPC, V0)) return false;
11902 }
11903#if USE_TAILCALLS
11904 MUSTTAIL return InterpNext(S);
11905#else
11906 return true;
11907#endif
11908}
11909PRESERVE_NONE
11910static bool Interp_CheckNewTypeMismatchArrayUint32(InterpState &S) {
11911 {
11912 CodePtr OpPC = S.PC;
11913 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11914 if (!CheckNewTypeMismatchArray<PT_Uint32>(S, OpPC, V0)) return false;
11915 }
11916#if USE_TAILCALLS
11917 MUSTTAIL return InterpNext(S);
11918#else
11919 return true;
11920#endif
11921}
11922PRESERVE_NONE
11923static bool Interp_CheckNewTypeMismatchArraySint64(InterpState &S) {
11924 {
11925 CodePtr OpPC = S.PC;
11926 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11927 if (!CheckNewTypeMismatchArray<PT_Sint64>(S, OpPC, V0)) return false;
11928 }
11929#if USE_TAILCALLS
11930 MUSTTAIL return InterpNext(S);
11931#else
11932 return true;
11933#endif
11934}
11935PRESERVE_NONE
11936static bool Interp_CheckNewTypeMismatchArrayUint64(InterpState &S) {
11937 {
11938 CodePtr OpPC = S.PC;
11939 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11940 if (!CheckNewTypeMismatchArray<PT_Uint64>(S, OpPC, V0)) return false;
11941 }
11942#if USE_TAILCALLS
11943 MUSTTAIL return InterpNext(S);
11944#else
11945 return true;
11946#endif
11947}
11948PRESERVE_NONE
11949static bool Interp_CheckNewTypeMismatchArrayIntAP(InterpState &S) {
11950 {
11951 CodePtr OpPC = S.PC;
11952 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11953 if (!CheckNewTypeMismatchArray<PT_IntAP>(S, OpPC, V0)) return false;
11954 }
11955#if USE_TAILCALLS
11956 MUSTTAIL return InterpNext(S);
11957#else
11958 return true;
11959#endif
11960}
11961PRESERVE_NONE
11962static bool Interp_CheckNewTypeMismatchArrayIntAPS(InterpState &S) {
11963 {
11964 CodePtr OpPC = S.PC;
11965 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11966 if (!CheckNewTypeMismatchArray<PT_IntAPS>(S, OpPC, V0)) return false;
11967 }
11968#if USE_TAILCALLS
11969 MUSTTAIL return InterpNext(S);
11970#else
11971 return true;
11972#endif
11973}
11974#endif
11975#ifdef GET_DISASM
11976case OP_CheckNewTypeMismatchArraySint8:
11977 Text.Op = PrintName("CheckNewTypeMismatchArraySint8");
11978 Text.Args.push_back(printArg<const Expr *>(PC));
11979 break;
11980case OP_CheckNewTypeMismatchArrayUint8:
11981 Text.Op = PrintName("CheckNewTypeMismatchArrayUint8");
11982 Text.Args.push_back(printArg<const Expr *>(PC));
11983 break;
11984case OP_CheckNewTypeMismatchArraySint16:
11985 Text.Op = PrintName("CheckNewTypeMismatchArraySint16");
11986 Text.Args.push_back(printArg<const Expr *>(PC));
11987 break;
11988case OP_CheckNewTypeMismatchArrayUint16:
11989 Text.Op = PrintName("CheckNewTypeMismatchArrayUint16");
11990 Text.Args.push_back(printArg<const Expr *>(PC));
11991 break;
11992case OP_CheckNewTypeMismatchArraySint32:
11993 Text.Op = PrintName("CheckNewTypeMismatchArraySint32");
11994 Text.Args.push_back(printArg<const Expr *>(PC));
11995 break;
11996case OP_CheckNewTypeMismatchArrayUint32:
11997 Text.Op = PrintName("CheckNewTypeMismatchArrayUint32");
11998 Text.Args.push_back(printArg<const Expr *>(PC));
11999 break;
12000case OP_CheckNewTypeMismatchArraySint64:
12001 Text.Op = PrintName("CheckNewTypeMismatchArraySint64");
12002 Text.Args.push_back(printArg<const Expr *>(PC));
12003 break;
12004case OP_CheckNewTypeMismatchArrayUint64:
12005 Text.Op = PrintName("CheckNewTypeMismatchArrayUint64");
12006 Text.Args.push_back(printArg<const Expr *>(PC));
12007 break;
12008case OP_CheckNewTypeMismatchArrayIntAP:
12009 Text.Op = PrintName("CheckNewTypeMismatchArrayIntAP");
12010 Text.Args.push_back(printArg<const Expr *>(PC));
12011 break;
12012case OP_CheckNewTypeMismatchArrayIntAPS:
12013 Text.Op = PrintName("CheckNewTypeMismatchArrayIntAPS");
12014 Text.Args.push_back(printArg<const Expr *>(PC));
12015 break;
12016#endif
12017#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12018bool emitCheckNewTypeMismatchArraySint8( const Expr * , SourceInfo);
12019bool emitCheckNewTypeMismatchArrayUint8( const Expr * , SourceInfo);
12020bool emitCheckNewTypeMismatchArraySint16( const Expr * , SourceInfo);
12021bool emitCheckNewTypeMismatchArrayUint16( const Expr * , SourceInfo);
12022bool emitCheckNewTypeMismatchArraySint32( const Expr * , SourceInfo);
12023bool emitCheckNewTypeMismatchArrayUint32( const Expr * , SourceInfo);
12024bool emitCheckNewTypeMismatchArraySint64( const Expr * , SourceInfo);
12025bool emitCheckNewTypeMismatchArrayUint64( const Expr * , SourceInfo);
12026bool emitCheckNewTypeMismatchArrayIntAP( const Expr * , SourceInfo);
12027bool emitCheckNewTypeMismatchArrayIntAPS( const Expr * , SourceInfo);
12028#endif
12029#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12030[[nodiscard]] bool emitCheckNewTypeMismatchArray(PrimType, const Expr *, SourceInfo I);
12031#endif
12032#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
12033bool
12034#if defined(GET_EVAL_IMPL)
12035EvalEmitter
12036#else
12037ByteCodeEmitter
12038#endif
12039::emitCheckNewTypeMismatchArray(PrimType T0, const Expr * A0, SourceInfo I) {
12040 switch (T0) {
12041 case PT_Sint8:
12042 return emitCheckNewTypeMismatchArraySint8(A0, I);
12043 case PT_Uint8:
12044 return emitCheckNewTypeMismatchArrayUint8(A0, I);
12045 case PT_Sint16:
12046 return emitCheckNewTypeMismatchArraySint16(A0, I);
12047 case PT_Uint16:
12048 return emitCheckNewTypeMismatchArrayUint16(A0, I);
12049 case PT_Sint32:
12050 return emitCheckNewTypeMismatchArraySint32(A0, I);
12051 case PT_Uint32:
12052 return emitCheckNewTypeMismatchArrayUint32(A0, I);
12053 case PT_Sint64:
12054 return emitCheckNewTypeMismatchArraySint64(A0, I);
12055 case PT_Uint64:
12056 return emitCheckNewTypeMismatchArrayUint64(A0, I);
12057 case PT_IntAP:
12058 return emitCheckNewTypeMismatchArrayIntAP(A0, I);
12059 case PT_IntAPS:
12060 return emitCheckNewTypeMismatchArrayIntAPS(A0, I);
12061 default: llvm_unreachable("invalid type: emitCheckNewTypeMismatchArray");
12062 }
12063 llvm_unreachable("invalid enum value");
12064}
12065#endif
12066#ifdef GET_LINK_IMPL
12067bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint8( const Expr * A0, SourceInfo L) {
12068 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint8, A0, L);
12069}
12070bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint8( const Expr * A0, SourceInfo L) {
12071 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint8, A0, L);
12072}
12073bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint16( const Expr * A0, SourceInfo L) {
12074 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint16, A0, L);
12075}
12076bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint16( const Expr * A0, SourceInfo L) {
12077 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint16, A0, L);
12078}
12079bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint32( const Expr * A0, SourceInfo L) {
12080 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint32, A0, L);
12081}
12082bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint32( const Expr * A0, SourceInfo L) {
12083 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint32, A0, L);
12084}
12085bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint64( const Expr * A0, SourceInfo L) {
12086 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint64, A0, L);
12087}
12088bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint64( const Expr * A0, SourceInfo L) {
12089 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint64, A0, L);
12090}
12091bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayIntAP( const Expr * A0, SourceInfo L) {
12092 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayIntAP, A0, L);
12093}
12094bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayIntAPS( const Expr * A0, SourceInfo L) {
12095 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayIntAPS, A0, L);
12096}
12097#endif
12098#ifdef GET_EVAL_IMPL
12099bool EvalEmitter::emitCheckNewTypeMismatchArraySint8( const Expr * A0, SourceInfo L) {
12100 if (!isActive()) return true;
12101 CurrentSource = L;
12102 return CheckNewTypeMismatchArray<PT_Sint8>(S, CodePtr(), A0);
12103}
12104bool EvalEmitter::emitCheckNewTypeMismatchArrayUint8( const Expr * A0, SourceInfo L) {
12105 if (!isActive()) return true;
12106 CurrentSource = L;
12107 return CheckNewTypeMismatchArray<PT_Uint8>(S, CodePtr(), A0);
12108}
12109bool EvalEmitter::emitCheckNewTypeMismatchArraySint16( const Expr * A0, SourceInfo L) {
12110 if (!isActive()) return true;
12111 CurrentSource = L;
12112 return CheckNewTypeMismatchArray<PT_Sint16>(S, CodePtr(), A0);
12113}
12114bool EvalEmitter::emitCheckNewTypeMismatchArrayUint16( const Expr * A0, SourceInfo L) {
12115 if (!isActive()) return true;
12116 CurrentSource = L;
12117 return CheckNewTypeMismatchArray<PT_Uint16>(S, CodePtr(), A0);
12118}
12119bool EvalEmitter::emitCheckNewTypeMismatchArraySint32( const Expr * A0, SourceInfo L) {
12120 if (!isActive()) return true;
12121 CurrentSource = L;
12122 return CheckNewTypeMismatchArray<PT_Sint32>(S, CodePtr(), A0);
12123}
12124bool EvalEmitter::emitCheckNewTypeMismatchArrayUint32( const Expr * A0, SourceInfo L) {
12125 if (!isActive()) return true;
12126 CurrentSource = L;
12127 return CheckNewTypeMismatchArray<PT_Uint32>(S, CodePtr(), A0);
12128}
12129bool EvalEmitter::emitCheckNewTypeMismatchArraySint64( const Expr * A0, SourceInfo L) {
12130 if (!isActive()) return true;
12131 CurrentSource = L;
12132 return CheckNewTypeMismatchArray<PT_Sint64>(S, CodePtr(), A0);
12133}
12134bool EvalEmitter::emitCheckNewTypeMismatchArrayUint64( const Expr * A0, SourceInfo L) {
12135 if (!isActive()) return true;
12136 CurrentSource = L;
12137 return CheckNewTypeMismatchArray<PT_Uint64>(S, CodePtr(), A0);
12138}
12139bool EvalEmitter::emitCheckNewTypeMismatchArrayIntAP( const Expr * A0, SourceInfo L) {
12140 if (!isActive()) return true;
12141 CurrentSource = L;
12142 return CheckNewTypeMismatchArray<PT_IntAP>(S, CodePtr(), A0);
12143}
12144bool EvalEmitter::emitCheckNewTypeMismatchArrayIntAPS( const Expr * A0, SourceInfo L) {
12145 if (!isActive()) return true;
12146 CurrentSource = L;
12147 return CheckNewTypeMismatchArray<PT_IntAPS>(S, CodePtr(), A0);
12148}
12149#endif
12150#ifdef GET_OPCODE_NAMES
12151OP_CheckNonNullArgPtr,
12152OP_CheckNonNullArgMemberPtr,
12153#endif
12154#ifdef GET_INTERPFN_LIST
12155&Interp_CheckNonNullArgPtr,
12156&Interp_CheckNonNullArgMemberPtr,
12157#endif
12158#ifdef GET_INTERPFN_DISPATCHERS
12159PRESERVE_NONE
12160static bool Interp_CheckNonNullArgPtr(InterpState &S) {
12161 if (!CheckNonNullArg<PT_Ptr>(S, S.PC)) return false;
12162#if USE_TAILCALLS
12163 MUSTTAIL return InterpNext(S);
12164#else
12165 return true;
12166#endif
12167}
12168PRESERVE_NONE
12169static bool Interp_CheckNonNullArgMemberPtr(InterpState &S) {
12170 if (!CheckNonNullArg<PT_MemberPtr>(S, S.PC)) return false;
12171#if USE_TAILCALLS
12172 MUSTTAIL return InterpNext(S);
12173#else
12174 return true;
12175#endif
12176}
12177#endif
12178#ifdef GET_DISASM
12179case OP_CheckNonNullArgPtr:
12180 Text.Op = PrintName("CheckNonNullArgPtr");
12181 break;
12182case OP_CheckNonNullArgMemberPtr:
12183 Text.Op = PrintName("CheckNonNullArgMemberPtr");
12184 break;
12185#endif
12186#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12187bool emitCheckNonNullArgPtr(SourceInfo);
12188bool emitCheckNonNullArgMemberPtr(SourceInfo);
12189#endif
12190#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12191[[nodiscard]] bool emitCheckNonNullArg(PrimType, SourceInfo I);
12192#endif
12193#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
12194bool
12195#if defined(GET_EVAL_IMPL)
12196EvalEmitter
12197#else
12198ByteCodeEmitter
12199#endif
12200::emitCheckNonNullArg(PrimType T0, SourceInfo I) {
12201 switch (T0) {
12202 case PT_Ptr:
12203 return emitCheckNonNullArgPtr(I);
12204 case PT_MemberPtr:
12205 return emitCheckNonNullArgMemberPtr(I);
12206 default: llvm_unreachable("invalid type: emitCheckNonNullArg");
12207 }
12208 llvm_unreachable("invalid enum value");
12209}
12210#endif
12211#ifdef GET_LINK_IMPL
12212bool ByteCodeEmitter::emitCheckNonNullArgPtr(SourceInfo L) {
12213 return emitOp<>(OP_CheckNonNullArgPtr, L);
12214}
12215bool ByteCodeEmitter::emitCheckNonNullArgMemberPtr(SourceInfo L) {
12216 return emitOp<>(OP_CheckNonNullArgMemberPtr, L);
12217}
12218#endif
12219#ifdef GET_EVAL_IMPL
12220bool EvalEmitter::emitCheckNonNullArgPtr(SourceInfo L) {
12221 if (!isActive()) return true;
12222 CurrentSource = L;
12223 return CheckNonNullArg<PT_Ptr>(S, CodePtr());
12224}
12225bool EvalEmitter::emitCheckNonNullArgMemberPtr(SourceInfo L) {
12226 if (!isActive()) return true;
12227 CurrentSource = L;
12228 return CheckNonNullArg<PT_MemberPtr>(S, CodePtr());
12229}
12230#endif
12231#ifdef GET_OPCODE_NAMES
12232OP_CheckNull,
12233#endif
12234#ifdef GET_INTERPFN_LIST
12235&Interp_CheckNull,
12236#endif
12237#ifdef GET_INTERPFN_DISPATCHERS
12238PRESERVE_NONE
12239static bool Interp_CheckNull(InterpState &S) {
12240 if (!CheckNull(S, S.PC)) return false;
12241#if USE_TAILCALLS
12242 MUSTTAIL return InterpNext(S);
12243#else
12244 return true;
12245#endif
12246}
12247#endif
12248#ifdef GET_DISASM
12249case OP_CheckNull:
12250 Text.Op = PrintName("CheckNull");
12251 break;
12252#endif
12253#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12254bool emitCheckNull(SourceInfo);
12255#endif
12256#ifdef GET_LINK_IMPL
12257bool ByteCodeEmitter::emitCheckNull(SourceInfo L) {
12258 return emitOp<>(OP_CheckNull, L);
12259}
12260#endif
12261#ifdef GET_EVAL_IMPL
12262bool EvalEmitter::emitCheckNull(SourceInfo L) {
12263 if (!isActive()) return true;
12264 CurrentSource = L;
12265 return CheckNull(S, CodePtr());
12266}
12267#endif
12268#ifdef GET_OPCODE_NAMES
12269OP_CheckPseudoDtor,
12270#endif
12271#ifdef GET_INTERPFN_LIST
12272&Interp_CheckPseudoDtor,
12273#endif
12274#ifdef GET_INTERPFN_DISPATCHERS
12275PRESERVE_NONE
12276static bool Interp_CheckPseudoDtor(InterpState &S) {
12277 CheckPseudoDtor(S, S.PC);
12278#if USE_TAILCALLS
12279 MUSTTAIL return InterpNext(S);
12280#else
12281 return true;
12282#endif
12283}
12284#endif
12285#ifdef GET_DISASM
12286case OP_CheckPseudoDtor:
12287 Text.Op = PrintName("CheckPseudoDtor");
12288 break;
12289#endif
12290#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12291bool emitCheckPseudoDtor(SourceInfo);
12292#endif
12293#ifdef GET_LINK_IMPL
12294bool ByteCodeEmitter::emitCheckPseudoDtor(SourceInfo L) {
12295 return emitOp<>(OP_CheckPseudoDtor, L);
12296}
12297#endif
12298#ifdef GET_EVAL_IMPL
12299bool EvalEmitter::emitCheckPseudoDtor(SourceInfo L) {
12300 if (!isActive()) return true;
12301 CurrentSource = L;
12302 return CheckPseudoDtor(S, CodePtr());
12303}
12304#endif
12305#ifdef GET_OPCODE_NAMES
12306OP_CheckRefInit,
12307#endif
12308#ifdef GET_INTERPFN_LIST
12309&Interp_CheckRefInit,
12310#endif
12311#ifdef GET_INTERPFN_DISPATCHERS
12312PRESERVE_NONE
12313static bool Interp_CheckRefInit(InterpState &S) {
12314 if (!CheckRefInit(S, S.PC)) return false;
12315#if USE_TAILCALLS
12316 MUSTTAIL return InterpNext(S);
12317#else
12318 return true;
12319#endif
12320}
12321#endif
12322#ifdef GET_DISASM
12323case OP_CheckRefInit:
12324 Text.Op = PrintName("CheckRefInit");
12325 break;
12326#endif
12327#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12328bool emitCheckRefInit(SourceInfo);
12329#endif
12330#ifdef GET_LINK_IMPL
12331bool ByteCodeEmitter::emitCheckRefInit(SourceInfo L) {
12332 return emitOp<>(OP_CheckRefInit, L);
12333}
12334#endif
12335#ifdef GET_EVAL_IMPL
12336bool EvalEmitter::emitCheckRefInit(SourceInfo L) {
12337 if (!isActive()) return true;
12338 CurrentSource = L;
12339 return CheckRefInit(S, CodePtr());
12340}
12341#endif
12342#ifdef GET_OPCODE_NAMES
12343OP_CompSint8,
12344OP_CompUint8,
12345OP_CompSint16,
12346OP_CompUint16,
12347OP_CompSint32,
12348OP_CompUint32,
12349OP_CompSint64,
12350OP_CompUint64,
12351OP_CompIntAP,
12352OP_CompIntAPS,
12353#endif
12354#ifdef GET_INTERPFN_LIST
12355&Interp_CompSint8,
12356&Interp_CompUint8,
12357&Interp_CompSint16,
12358&Interp_CompUint16,
12359&Interp_CompSint32,
12360&Interp_CompUint32,
12361&Interp_CompSint64,
12362&Interp_CompUint64,
12363&Interp_CompIntAP,
12364&Interp_CompIntAPS,
12365#endif
12366#ifdef GET_INTERPFN_DISPATCHERS
12367PRESERVE_NONE
12368static bool Interp_CompSint8(InterpState &S) {
12369 if (!Comp<PT_Sint8>(S)) return false;
12370#if USE_TAILCALLS
12371 MUSTTAIL return InterpNext(S);
12372#else
12373 return true;
12374#endif
12375}
12376PRESERVE_NONE
12377static bool Interp_CompUint8(InterpState &S) {
12378 if (!Comp<PT_Uint8>(S)) return false;
12379#if USE_TAILCALLS
12380 MUSTTAIL return InterpNext(S);
12381#else
12382 return true;
12383#endif
12384}
12385PRESERVE_NONE
12386static bool Interp_CompSint16(InterpState &S) {
12387 if (!Comp<PT_Sint16>(S)) return false;
12388#if USE_TAILCALLS
12389 MUSTTAIL return InterpNext(S);
12390#else
12391 return true;
12392#endif
12393}
12394PRESERVE_NONE
12395static bool Interp_CompUint16(InterpState &S) {
12396 if (!Comp<PT_Uint16>(S)) return false;
12397#if USE_TAILCALLS
12398 MUSTTAIL return InterpNext(S);
12399#else
12400 return true;
12401#endif
12402}
12403PRESERVE_NONE
12404static bool Interp_CompSint32(InterpState &S) {
12405 if (!Comp<PT_Sint32>(S)) return false;
12406#if USE_TAILCALLS
12407 MUSTTAIL return InterpNext(S);
12408#else
12409 return true;
12410#endif
12411}
12412PRESERVE_NONE
12413static bool Interp_CompUint32(InterpState &S) {
12414 if (!Comp<PT_Uint32>(S)) return false;
12415#if USE_TAILCALLS
12416 MUSTTAIL return InterpNext(S);
12417#else
12418 return true;
12419#endif
12420}
12421PRESERVE_NONE
12422static bool Interp_CompSint64(InterpState &S) {
12423 if (!Comp<PT_Sint64>(S)) return false;
12424#if USE_TAILCALLS
12425 MUSTTAIL return InterpNext(S);
12426#else
12427 return true;
12428#endif
12429}
12430PRESERVE_NONE
12431static bool Interp_CompUint64(InterpState &S) {
12432 if (!Comp<PT_Uint64>(S)) return false;
12433#if USE_TAILCALLS
12434 MUSTTAIL return InterpNext(S);
12435#else
12436 return true;
12437#endif
12438}
12439PRESERVE_NONE
12440static bool Interp_CompIntAP(InterpState &S) {
12441 if (!Comp<PT_IntAP>(S)) return false;
12442#if USE_TAILCALLS
12443 MUSTTAIL return InterpNext(S);
12444#else
12445 return true;
12446#endif
12447}
12448PRESERVE_NONE
12449static bool Interp_CompIntAPS(InterpState &S) {
12450 if (!Comp<PT_IntAPS>(S)) return false;
12451#if USE_TAILCALLS
12452 MUSTTAIL return InterpNext(S);
12453#else
12454 return true;
12455#endif
12456}
12457#endif
12458#ifdef GET_DISASM
12459case OP_CompSint8:
12460 Text.Op = PrintName("CompSint8");
12461 break;
12462case OP_CompUint8:
12463 Text.Op = PrintName("CompUint8");
12464 break;
12465case OP_CompSint16:
12466 Text.Op = PrintName("CompSint16");
12467 break;
12468case OP_CompUint16:
12469 Text.Op = PrintName("CompUint16");
12470 break;
12471case OP_CompSint32:
12472 Text.Op = PrintName("CompSint32");
12473 break;
12474case OP_CompUint32:
12475 Text.Op = PrintName("CompUint32");
12476 break;
12477case OP_CompSint64:
12478 Text.Op = PrintName("CompSint64");
12479 break;
12480case OP_CompUint64:
12481 Text.Op = PrintName("CompUint64");
12482 break;
12483case OP_CompIntAP:
12484 Text.Op = PrintName("CompIntAP");
12485 break;
12486case OP_CompIntAPS:
12487 Text.Op = PrintName("CompIntAPS");
12488 break;
12489#endif
12490#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12491bool emitCompSint8(SourceInfo);
12492bool emitCompUint8(SourceInfo);
12493bool emitCompSint16(SourceInfo);
12494bool emitCompUint16(SourceInfo);
12495bool emitCompSint32(SourceInfo);
12496bool emitCompUint32(SourceInfo);
12497bool emitCompSint64(SourceInfo);
12498bool emitCompUint64(SourceInfo);
12499bool emitCompIntAP(SourceInfo);
12500bool emitCompIntAPS(SourceInfo);
12501#endif
12502#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12503[[nodiscard]] bool emitComp(PrimType, SourceInfo I);
12504#endif
12505#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
12506bool
12507#if defined(GET_EVAL_IMPL)
12508EvalEmitter
12509#else
12510ByteCodeEmitter
12511#endif
12512::emitComp(PrimType T0, SourceInfo I) {
12513 switch (T0) {
12514 case PT_Sint8:
12515 return emitCompSint8(I);
12516 case PT_Uint8:
12517 return emitCompUint8(I);
12518 case PT_Sint16:
12519 return emitCompSint16(I);
12520 case PT_Uint16:
12521 return emitCompUint16(I);
12522 case PT_Sint32:
12523 return emitCompSint32(I);
12524 case PT_Uint32:
12525 return emitCompUint32(I);
12526 case PT_Sint64:
12527 return emitCompSint64(I);
12528 case PT_Uint64:
12529 return emitCompUint64(I);
12530 case PT_IntAP:
12531 return emitCompIntAP(I);
12532 case PT_IntAPS:
12533 return emitCompIntAPS(I);
12534 default: llvm_unreachable("invalid type: emitComp");
12535 }
12536 llvm_unreachable("invalid enum value");
12537}
12538#endif
12539#ifdef GET_LINK_IMPL
12540bool ByteCodeEmitter::emitCompSint8(SourceInfo L) {
12541 return emitOp<>(OP_CompSint8, L);
12542}
12543bool ByteCodeEmitter::emitCompUint8(SourceInfo L) {
12544 return emitOp<>(OP_CompUint8, L);
12545}
12546bool ByteCodeEmitter::emitCompSint16(SourceInfo L) {
12547 return emitOp<>(OP_CompSint16, L);
12548}
12549bool ByteCodeEmitter::emitCompUint16(SourceInfo L) {
12550 return emitOp<>(OP_CompUint16, L);
12551}
12552bool ByteCodeEmitter::emitCompSint32(SourceInfo L) {
12553 return emitOp<>(OP_CompSint32, L);
12554}
12555bool ByteCodeEmitter::emitCompUint32(SourceInfo L) {
12556 return emitOp<>(OP_CompUint32, L);
12557}
12558bool ByteCodeEmitter::emitCompSint64(SourceInfo L) {
12559 return emitOp<>(OP_CompSint64, L);
12560}
12561bool ByteCodeEmitter::emitCompUint64(SourceInfo L) {
12562 return emitOp<>(OP_CompUint64, L);
12563}
12564bool ByteCodeEmitter::emitCompIntAP(SourceInfo L) {
12565 return emitOp<>(OP_CompIntAP, L);
12566}
12567bool ByteCodeEmitter::emitCompIntAPS(SourceInfo L) {
12568 return emitOp<>(OP_CompIntAPS, L);
12569}
12570#endif
12571#ifdef GET_EVAL_IMPL
12572bool EvalEmitter::emitCompSint8(SourceInfo L) {
12573 if (!isActive()) return true;
12574 CurrentSource = L;
12575 return Comp<PT_Sint8>(S);
12576}
12577bool EvalEmitter::emitCompUint8(SourceInfo L) {
12578 if (!isActive()) return true;
12579 CurrentSource = L;
12580 return Comp<PT_Uint8>(S);
12581}
12582bool EvalEmitter::emitCompSint16(SourceInfo L) {
12583 if (!isActive()) return true;
12584 CurrentSource = L;
12585 return Comp<PT_Sint16>(S);
12586}
12587bool EvalEmitter::emitCompUint16(SourceInfo L) {
12588 if (!isActive()) return true;
12589 CurrentSource = L;
12590 return Comp<PT_Uint16>(S);
12591}
12592bool EvalEmitter::emitCompSint32(SourceInfo L) {
12593 if (!isActive()) return true;
12594 CurrentSource = L;
12595 return Comp<PT_Sint32>(S);
12596}
12597bool EvalEmitter::emitCompUint32(SourceInfo L) {
12598 if (!isActive()) return true;
12599 CurrentSource = L;
12600 return Comp<PT_Uint32>(S);
12601}
12602bool EvalEmitter::emitCompSint64(SourceInfo L) {
12603 if (!isActive()) return true;
12604 CurrentSource = L;
12605 return Comp<PT_Sint64>(S);
12606}
12607bool EvalEmitter::emitCompUint64(SourceInfo L) {
12608 if (!isActive()) return true;
12609 CurrentSource = L;
12610 return Comp<PT_Uint64>(S);
12611}
12612bool EvalEmitter::emitCompIntAP(SourceInfo L) {
12613 if (!isActive()) return true;
12614 CurrentSource = L;
12615 return Comp<PT_IntAP>(S);
12616}
12617bool EvalEmitter::emitCompIntAPS(SourceInfo L) {
12618 if (!isActive()) return true;
12619 CurrentSource = L;
12620 return Comp<PT_IntAPS>(S);
12621}
12622#endif
12623#ifdef GET_OPCODE_NAMES
12624OP_ConstBool,
12625#endif
12626#ifdef GET_INTERPFN_LIST
12627&Interp_ConstBool,
12628#endif
12629#ifdef GET_INTERPFN_DISPATCHERS
12630PRESERVE_NONE
12631static bool Interp_ConstBool(InterpState &S) {
12632 {
12633 const auto V0 = ReadArg<bool>(S, S.PC);
12634 Const<PT_Bool>(S, V0);
12635 }
12636#if USE_TAILCALLS
12637 MUSTTAIL return InterpNext(S);
12638#else
12639 return true;
12640#endif
12641}
12642#endif
12643#ifdef GET_DISASM
12644case OP_ConstBool:
12645 Text.Op = PrintName("ConstBool");
12646 Text.Args.push_back(printArg<bool>(PC));
12647 break;
12648#endif
12649#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12650bool emitConstBool( bool , SourceInfo);
12651#endif
12652#ifdef GET_LINK_IMPL
12653bool ByteCodeEmitter::emitConstBool( bool A0, SourceInfo L) {
12654 return emitOp<bool>(OP_ConstBool, A0, L);
12655}
12656#endif
12657#ifdef GET_EVAL_IMPL
12658bool EvalEmitter::emitConstBool( bool A0, SourceInfo L) {
12659 if (!isActive()) return true;
12660 CurrentSource = L;
12661 return Const<PT_Bool>(S, A0);
12662}
12663#endif
12664#ifdef GET_OPCODE_NAMES
12665OP_ConstFixedPoint,
12666#endif
12667#ifdef GET_INTERPFN_LIST
12668&Interp_ConstFixedPoint,
12669#endif
12670#ifdef GET_INTERPFN_DISPATCHERS
12671PRESERVE_NONE
12672static bool Interp_ConstFixedPoint(InterpState &S) {
12673 {
12674 const auto &V0 = ReadArg<FixedPoint>(S, S.PC);
12675 Const<PT_FixedPoint>(S, V0);
12676 }
12677#if USE_TAILCALLS
12678 MUSTTAIL return InterpNext(S);
12679#else
12680 return true;
12681#endif
12682}
12683#endif
12684#ifdef GET_DISASM
12685case OP_ConstFixedPoint:
12686 Text.Op = PrintName("ConstFixedPoint");
12687 Text.Args.push_back(printArg<FixedPoint>(PC));
12688 break;
12689#endif
12690#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12691bool emitConstFixedPoint(const FixedPoint &, SourceInfo);
12692#endif
12693#ifdef GET_LINK_IMPL
12694bool ByteCodeEmitter::emitConstFixedPoint(const FixedPoint &A0, SourceInfo L) {
12695 return emitOp<FixedPoint>(OP_ConstFixedPoint, A0, L);
12696}
12697#endif
12698#ifdef GET_EVAL_IMPL
12699bool EvalEmitter::emitConstFixedPoint(const FixedPoint &A0, SourceInfo L) {
12700 if (!isActive()) return true;
12701 CurrentSource = L;
12702 return Const<PT_FixedPoint>(S, A0);
12703}
12704#endif
12705#ifdef GET_OPCODE_NAMES
12706OP_ConstFloat,
12707#endif
12708#ifdef GET_INTERPFN_LIST
12709&Interp_ConstFloat,
12710#endif
12711#ifdef GET_INTERPFN_DISPATCHERS
12712PRESERVE_NONE
12713static bool Interp_ConstFloat(InterpState &S) {
12714 {
12715 const auto &V0 = ReadArg<Floating>(S, S.PC);
12716 ConstFloat(S, V0);
12717 }
12718#if USE_TAILCALLS
12719 MUSTTAIL return InterpNext(S);
12720#else
12721 return true;
12722#endif
12723}
12724#endif
12725#ifdef GET_DISASM
12726case OP_ConstFloat:
12727 Text.Op = PrintName("ConstFloat");
12728 Text.Args.push_back(printArg<Floating>(PC));
12729 break;
12730#endif
12731#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12732bool emitConstFloat(const Floating &, SourceInfo);
12733#endif
12734#ifdef GET_LINK_IMPL
12735bool ByteCodeEmitter::emitConstFloat(const Floating &A0, SourceInfo L) {
12736 return emitOp<Floating>(OP_ConstFloat, A0, L);
12737}
12738#endif
12739#ifdef GET_EVAL_IMPL
12740bool EvalEmitter::emitConstFloat(const Floating &A0, SourceInfo L) {
12741 if (!isActive()) return true;
12742 CurrentSource = L;
12743 return ConstFloat(S, A0);
12744}
12745#endif
12746#ifdef GET_OPCODE_NAMES
12747OP_ConstIntAP,
12748#endif
12749#ifdef GET_INTERPFN_LIST
12750&Interp_ConstIntAP,
12751#endif
12752#ifdef GET_INTERPFN_DISPATCHERS
12753PRESERVE_NONE
12754static bool Interp_ConstIntAP(InterpState &S) {
12755 {
12756 const auto &V0 = ReadArg<IntegralAP<false>>(S, S.PC);
12757 Const<PT_IntAP>(S, V0);
12758 }
12759#if USE_TAILCALLS
12760 MUSTTAIL return InterpNext(S);
12761#else
12762 return true;
12763#endif
12764}
12765#endif
12766#ifdef GET_DISASM
12767case OP_ConstIntAP:
12768 Text.Op = PrintName("ConstIntAP");
12769 Text.Args.push_back(printArg<IntegralAP<false>>(PC));
12770 break;
12771#endif
12772#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12773bool emitConstIntAP(const IntegralAP<false> &, SourceInfo);
12774#endif
12775#ifdef GET_LINK_IMPL
12776bool ByteCodeEmitter::emitConstIntAP(const IntegralAP<false> &A0, SourceInfo L) {
12777 return emitOp<IntegralAP<false>>(OP_ConstIntAP, A0, L);
12778}
12779#endif
12780#ifdef GET_EVAL_IMPL
12781bool EvalEmitter::emitConstIntAP(const IntegralAP<false> &A0, SourceInfo L) {
12782 if (!isActive()) return true;
12783 CurrentSource = L;
12784 return Const<PT_IntAP>(S, A0);
12785}
12786#endif
12787#ifdef GET_OPCODE_NAMES
12788OP_ConstIntAPS,
12789#endif
12790#ifdef GET_INTERPFN_LIST
12791&Interp_ConstIntAPS,
12792#endif
12793#ifdef GET_INTERPFN_DISPATCHERS
12794PRESERVE_NONE
12795static bool Interp_ConstIntAPS(InterpState &S) {
12796 {
12797 const auto &V0 = ReadArg<IntegralAP<true>>(S, S.PC);
12798 Const<PT_IntAPS>(S, V0);
12799 }
12800#if USE_TAILCALLS
12801 MUSTTAIL return InterpNext(S);
12802#else
12803 return true;
12804#endif
12805}
12806#endif
12807#ifdef GET_DISASM
12808case OP_ConstIntAPS:
12809 Text.Op = PrintName("ConstIntAPS");
12810 Text.Args.push_back(printArg<IntegralAP<true>>(PC));
12811 break;
12812#endif
12813#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12814bool emitConstIntAPS(const IntegralAP<true> &, SourceInfo);
12815#endif
12816#ifdef GET_LINK_IMPL
12817bool ByteCodeEmitter::emitConstIntAPS(const IntegralAP<true> &A0, SourceInfo L) {
12818 return emitOp<IntegralAP<true>>(OP_ConstIntAPS, A0, L);
12819}
12820#endif
12821#ifdef GET_EVAL_IMPL
12822bool EvalEmitter::emitConstIntAPS(const IntegralAP<true> &A0, SourceInfo L) {
12823 if (!isActive()) return true;
12824 CurrentSource = L;
12825 return Const<PT_IntAPS>(S, A0);
12826}
12827#endif
12828#ifdef GET_OPCODE_NAMES
12829OP_ConstSint8,
12830#endif
12831#ifdef GET_INTERPFN_LIST
12832&Interp_ConstSint8,
12833#endif
12834#ifdef GET_INTERPFN_DISPATCHERS
12835PRESERVE_NONE
12836static bool Interp_ConstSint8(InterpState &S) {
12837 {
12838 const auto V0 = ReadArg<int8_t>(S, S.PC);
12839 Const<PT_Sint8>(S, V0);
12840 }
12841#if USE_TAILCALLS
12842 MUSTTAIL return InterpNext(S);
12843#else
12844 return true;
12845#endif
12846}
12847#endif
12848#ifdef GET_DISASM
12849case OP_ConstSint8:
12850 Text.Op = PrintName("ConstSint8");
12851 Text.Args.push_back(printArg<int8_t>(PC));
12852 break;
12853#endif
12854#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12855bool emitConstSint8( int8_t , SourceInfo);
12856#endif
12857#ifdef GET_LINK_IMPL
12858bool ByteCodeEmitter::emitConstSint8( int8_t A0, SourceInfo L) {
12859 return emitOp<int8_t>(OP_ConstSint8, A0, L);
12860}
12861#endif
12862#ifdef GET_EVAL_IMPL
12863bool EvalEmitter::emitConstSint8( int8_t A0, SourceInfo L) {
12864 if (!isActive()) return true;
12865 CurrentSource = L;
12866 return Const<PT_Sint8>(S, A0);
12867}
12868#endif
12869#ifdef GET_OPCODE_NAMES
12870OP_ConstSint16,
12871#endif
12872#ifdef GET_INTERPFN_LIST
12873&Interp_ConstSint16,
12874#endif
12875#ifdef GET_INTERPFN_DISPATCHERS
12876PRESERVE_NONE
12877static bool Interp_ConstSint16(InterpState &S) {
12878 {
12879 const auto V0 = ReadArg<int16_t>(S, S.PC);
12880 Const<PT_Sint16>(S, V0);
12881 }
12882#if USE_TAILCALLS
12883 MUSTTAIL return InterpNext(S);
12884#else
12885 return true;
12886#endif
12887}
12888#endif
12889#ifdef GET_DISASM
12890case OP_ConstSint16:
12891 Text.Op = PrintName("ConstSint16");
12892 Text.Args.push_back(printArg<int16_t>(PC));
12893 break;
12894#endif
12895#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12896bool emitConstSint16( int16_t , SourceInfo);
12897#endif
12898#ifdef GET_LINK_IMPL
12899bool ByteCodeEmitter::emitConstSint16( int16_t A0, SourceInfo L) {
12900 return emitOp<int16_t>(OP_ConstSint16, A0, L);
12901}
12902#endif
12903#ifdef GET_EVAL_IMPL
12904bool EvalEmitter::emitConstSint16( int16_t A0, SourceInfo L) {
12905 if (!isActive()) return true;
12906 CurrentSource = L;
12907 return Const<PT_Sint16>(S, A0);
12908}
12909#endif
12910#ifdef GET_OPCODE_NAMES
12911OP_ConstSint32,
12912#endif
12913#ifdef GET_INTERPFN_LIST
12914&Interp_ConstSint32,
12915#endif
12916#ifdef GET_INTERPFN_DISPATCHERS
12917PRESERVE_NONE
12918static bool Interp_ConstSint32(InterpState &S) {
12919 {
12920 const auto V0 = ReadArg<int32_t>(S, S.PC);
12921 Const<PT_Sint32>(S, V0);
12922 }
12923#if USE_TAILCALLS
12924 MUSTTAIL return InterpNext(S);
12925#else
12926 return true;
12927#endif
12928}
12929#endif
12930#ifdef GET_DISASM
12931case OP_ConstSint32:
12932 Text.Op = PrintName("ConstSint32");
12933 Text.Args.push_back(printArg<int32_t>(PC));
12934 break;
12935#endif
12936#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12937bool emitConstSint32( int32_t , SourceInfo);
12938#endif
12939#ifdef GET_LINK_IMPL
12940bool ByteCodeEmitter::emitConstSint32( int32_t A0, SourceInfo L) {
12941 return emitOp<int32_t>(OP_ConstSint32, A0, L);
12942}
12943#endif
12944#ifdef GET_EVAL_IMPL
12945bool EvalEmitter::emitConstSint32( int32_t A0, SourceInfo L) {
12946 if (!isActive()) return true;
12947 CurrentSource = L;
12948 return Const<PT_Sint32>(S, A0);
12949}
12950#endif
12951#ifdef GET_OPCODE_NAMES
12952OP_ConstSint64,
12953#endif
12954#ifdef GET_INTERPFN_LIST
12955&Interp_ConstSint64,
12956#endif
12957#ifdef GET_INTERPFN_DISPATCHERS
12958PRESERVE_NONE
12959static bool Interp_ConstSint64(InterpState &S) {
12960 {
12961 const auto V0 = ReadArg<int64_t>(S, S.PC);
12962 Const<PT_Sint64>(S, V0);
12963 }
12964#if USE_TAILCALLS
12965 MUSTTAIL return InterpNext(S);
12966#else
12967 return true;
12968#endif
12969}
12970#endif
12971#ifdef GET_DISASM
12972case OP_ConstSint64:
12973 Text.Op = PrintName("ConstSint64");
12974 Text.Args.push_back(printArg<int64_t>(PC));
12975 break;
12976#endif
12977#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12978bool emitConstSint64( int64_t , SourceInfo);
12979#endif
12980#ifdef GET_LINK_IMPL
12981bool ByteCodeEmitter::emitConstSint64( int64_t A0, SourceInfo L) {
12982 return emitOp<int64_t>(OP_ConstSint64, A0, L);
12983}
12984#endif
12985#ifdef GET_EVAL_IMPL
12986bool EvalEmitter::emitConstSint64( int64_t A0, SourceInfo L) {
12987 if (!isActive()) return true;
12988 CurrentSource = L;
12989 return Const<PT_Sint64>(S, A0);
12990}
12991#endif
12992#ifdef GET_OPCODE_NAMES
12993OP_ConstUint8,
12994#endif
12995#ifdef GET_INTERPFN_LIST
12996&Interp_ConstUint8,
12997#endif
12998#ifdef GET_INTERPFN_DISPATCHERS
12999PRESERVE_NONE
13000static bool Interp_ConstUint8(InterpState &S) {
13001 {
13002 const auto V0 = ReadArg<uint8_t>(S, S.PC);
13003 Const<PT_Uint8>(S, V0);
13004 }
13005#if USE_TAILCALLS
13006 MUSTTAIL return InterpNext(S);
13007#else
13008 return true;
13009#endif
13010}
13011#endif
13012#ifdef GET_DISASM
13013case OP_ConstUint8:
13014 Text.Op = PrintName("ConstUint8");
13015 Text.Args.push_back(printArg<uint8_t>(PC));
13016 break;
13017#endif
13018#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13019bool emitConstUint8( uint8_t , SourceInfo);
13020#endif
13021#ifdef GET_LINK_IMPL
13022bool ByteCodeEmitter::emitConstUint8( uint8_t A0, SourceInfo L) {
13023 return emitOp<uint8_t>(OP_ConstUint8, A0, L);
13024}
13025#endif
13026#ifdef GET_EVAL_IMPL
13027bool EvalEmitter::emitConstUint8( uint8_t A0, SourceInfo L) {
13028 if (!isActive()) return true;
13029 CurrentSource = L;
13030 return Const<PT_Uint8>(S, A0);
13031}
13032#endif
13033#ifdef GET_OPCODE_NAMES
13034OP_ConstUint16,
13035#endif
13036#ifdef GET_INTERPFN_LIST
13037&Interp_ConstUint16,
13038#endif
13039#ifdef GET_INTERPFN_DISPATCHERS
13040PRESERVE_NONE
13041static bool Interp_ConstUint16(InterpState &S) {
13042 {
13043 const auto V0 = ReadArg<uint16_t>(S, S.PC);
13044 Const<PT_Uint16>(S, V0);
13045 }
13046#if USE_TAILCALLS
13047 MUSTTAIL return InterpNext(S);
13048#else
13049 return true;
13050#endif
13051}
13052#endif
13053#ifdef GET_DISASM
13054case OP_ConstUint16:
13055 Text.Op = PrintName("ConstUint16");
13056 Text.Args.push_back(printArg<uint16_t>(PC));
13057 break;
13058#endif
13059#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13060bool emitConstUint16( uint16_t , SourceInfo);
13061#endif
13062#ifdef GET_LINK_IMPL
13063bool ByteCodeEmitter::emitConstUint16( uint16_t A0, SourceInfo L) {
13064 return emitOp<uint16_t>(OP_ConstUint16, A0, L);
13065}
13066#endif
13067#ifdef GET_EVAL_IMPL
13068bool EvalEmitter::emitConstUint16( uint16_t A0, SourceInfo L) {
13069 if (!isActive()) return true;
13070 CurrentSource = L;
13071 return Const<PT_Uint16>(S, A0);
13072}
13073#endif
13074#ifdef GET_OPCODE_NAMES
13075OP_ConstUint32,
13076#endif
13077#ifdef GET_INTERPFN_LIST
13078&Interp_ConstUint32,
13079#endif
13080#ifdef GET_INTERPFN_DISPATCHERS
13081PRESERVE_NONE
13082static bool Interp_ConstUint32(InterpState &S) {
13083 {
13084 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13085 Const<PT_Uint32>(S, V0);
13086 }
13087#if USE_TAILCALLS
13088 MUSTTAIL return InterpNext(S);
13089#else
13090 return true;
13091#endif
13092}
13093#endif
13094#ifdef GET_DISASM
13095case OP_ConstUint32:
13096 Text.Op = PrintName("ConstUint32");
13097 Text.Args.push_back(printArg<uint32_t>(PC));
13098 break;
13099#endif
13100#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13101bool emitConstUint32( uint32_t , SourceInfo);
13102#endif
13103#ifdef GET_LINK_IMPL
13104bool ByteCodeEmitter::emitConstUint32( uint32_t A0, SourceInfo L) {
13105 return emitOp<uint32_t>(OP_ConstUint32, A0, L);
13106}
13107#endif
13108#ifdef GET_EVAL_IMPL
13109bool EvalEmitter::emitConstUint32( uint32_t A0, SourceInfo L) {
13110 if (!isActive()) return true;
13111 CurrentSource = L;
13112 return Const<PT_Uint32>(S, A0);
13113}
13114#endif
13115#ifdef GET_OPCODE_NAMES
13116OP_ConstUint64,
13117#endif
13118#ifdef GET_INTERPFN_LIST
13119&Interp_ConstUint64,
13120#endif
13121#ifdef GET_INTERPFN_DISPATCHERS
13122PRESERVE_NONE
13123static bool Interp_ConstUint64(InterpState &S) {
13124 {
13125 const auto V0 = ReadArg<uint64_t>(S, S.PC);
13126 Const<PT_Uint64>(S, V0);
13127 }
13128#if USE_TAILCALLS
13129 MUSTTAIL return InterpNext(S);
13130#else
13131 return true;
13132#endif
13133}
13134#endif
13135#ifdef GET_DISASM
13136case OP_ConstUint64:
13137 Text.Op = PrintName("ConstUint64");
13138 Text.Args.push_back(printArg<uint64_t>(PC));
13139 break;
13140#endif
13141#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13142bool emitConstUint64( uint64_t , SourceInfo);
13143#endif
13144#ifdef GET_LINK_IMPL
13145bool ByteCodeEmitter::emitConstUint64( uint64_t A0, SourceInfo L) {
13146 return emitOp<uint64_t>(OP_ConstUint64, A0, L);
13147}
13148#endif
13149#ifdef GET_EVAL_IMPL
13150bool EvalEmitter::emitConstUint64( uint64_t A0, SourceInfo L) {
13151 if (!isActive()) return true;
13152 CurrentSource = L;
13153 return Const<PT_Uint64>(S, A0);
13154}
13155#endif
13156#ifdef GET_OPCODE_NAMES
13157OP_CopyArraySint8,
13158OP_CopyArrayUint8,
13159OP_CopyArraySint16,
13160OP_CopyArrayUint16,
13161OP_CopyArraySint32,
13162OP_CopyArrayUint32,
13163OP_CopyArraySint64,
13164OP_CopyArrayUint64,
13165OP_CopyArrayIntAP,
13166OP_CopyArrayIntAPS,
13167OP_CopyArrayBool,
13168OP_CopyArrayFixedPoint,
13169OP_CopyArrayPtr,
13170OP_CopyArrayMemberPtr,
13171OP_CopyArrayFloat,
13172#endif
13173#ifdef GET_INTERPFN_LIST
13174&Interp_CopyArraySint8,
13175&Interp_CopyArrayUint8,
13176&Interp_CopyArraySint16,
13177&Interp_CopyArrayUint16,
13178&Interp_CopyArraySint32,
13179&Interp_CopyArrayUint32,
13180&Interp_CopyArraySint64,
13181&Interp_CopyArrayUint64,
13182&Interp_CopyArrayIntAP,
13183&Interp_CopyArrayIntAPS,
13184&Interp_CopyArrayBool,
13185&Interp_CopyArrayFixedPoint,
13186&Interp_CopyArrayPtr,
13187&Interp_CopyArrayMemberPtr,
13188&Interp_CopyArrayFloat,
13189#endif
13190#ifdef GET_INTERPFN_DISPATCHERS
13191PRESERVE_NONE
13192static bool Interp_CopyArraySint8(InterpState &S) {
13193 {
13194 CodePtr OpPC = S.PC;
13195 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13196 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13197 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13198 if (!CopyArray<PT_Sint8>(S, OpPC, V0, V1, V2)) return false;
13199 }
13200#if USE_TAILCALLS
13201 MUSTTAIL return InterpNext(S);
13202#else
13203 return true;
13204#endif
13205}
13206PRESERVE_NONE
13207static bool Interp_CopyArrayUint8(InterpState &S) {
13208 {
13209 CodePtr OpPC = S.PC;
13210 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13211 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13212 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13213 if (!CopyArray<PT_Uint8>(S, OpPC, V0, V1, V2)) return false;
13214 }
13215#if USE_TAILCALLS
13216 MUSTTAIL return InterpNext(S);
13217#else
13218 return true;
13219#endif
13220}
13221PRESERVE_NONE
13222static bool Interp_CopyArraySint16(InterpState &S) {
13223 {
13224 CodePtr OpPC = S.PC;
13225 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13226 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13227 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13228 if (!CopyArray<PT_Sint16>(S, OpPC, V0, V1, V2)) return false;
13229 }
13230#if USE_TAILCALLS
13231 MUSTTAIL return InterpNext(S);
13232#else
13233 return true;
13234#endif
13235}
13236PRESERVE_NONE
13237static bool Interp_CopyArrayUint16(InterpState &S) {
13238 {
13239 CodePtr OpPC = S.PC;
13240 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13241 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13242 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13243 if (!CopyArray<PT_Uint16>(S, OpPC, V0, V1, V2)) return false;
13244 }
13245#if USE_TAILCALLS
13246 MUSTTAIL return InterpNext(S);
13247#else
13248 return true;
13249#endif
13250}
13251PRESERVE_NONE
13252static bool Interp_CopyArraySint32(InterpState &S) {
13253 {
13254 CodePtr OpPC = S.PC;
13255 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13256 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13257 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13258 if (!CopyArray<PT_Sint32>(S, OpPC, V0, V1, V2)) return false;
13259 }
13260#if USE_TAILCALLS
13261 MUSTTAIL return InterpNext(S);
13262#else
13263 return true;
13264#endif
13265}
13266PRESERVE_NONE
13267static bool Interp_CopyArrayUint32(InterpState &S) {
13268 {
13269 CodePtr OpPC = S.PC;
13270 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13271 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13272 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13273 if (!CopyArray<PT_Uint32>(S, OpPC, V0, V1, V2)) return false;
13274 }
13275#if USE_TAILCALLS
13276 MUSTTAIL return InterpNext(S);
13277#else
13278 return true;
13279#endif
13280}
13281PRESERVE_NONE
13282static bool Interp_CopyArraySint64(InterpState &S) {
13283 {
13284 CodePtr OpPC = S.PC;
13285 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13286 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13287 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13288 if (!CopyArray<PT_Sint64>(S, OpPC, V0, V1, V2)) return false;
13289 }
13290#if USE_TAILCALLS
13291 MUSTTAIL return InterpNext(S);
13292#else
13293 return true;
13294#endif
13295}
13296PRESERVE_NONE
13297static bool Interp_CopyArrayUint64(InterpState &S) {
13298 {
13299 CodePtr OpPC = S.PC;
13300 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13301 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13302 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13303 if (!CopyArray<PT_Uint64>(S, OpPC, V0, V1, V2)) return false;
13304 }
13305#if USE_TAILCALLS
13306 MUSTTAIL return InterpNext(S);
13307#else
13308 return true;
13309#endif
13310}
13311PRESERVE_NONE
13312static bool Interp_CopyArrayIntAP(InterpState &S) {
13313 {
13314 CodePtr OpPC = S.PC;
13315 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13316 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13317 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13318 if (!CopyArray<PT_IntAP>(S, OpPC, V0, V1, V2)) return false;
13319 }
13320#if USE_TAILCALLS
13321 MUSTTAIL return InterpNext(S);
13322#else
13323 return true;
13324#endif
13325}
13326PRESERVE_NONE
13327static bool Interp_CopyArrayIntAPS(InterpState &S) {
13328 {
13329 CodePtr OpPC = S.PC;
13330 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13331 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13332 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13333 if (!CopyArray<PT_IntAPS>(S, OpPC, V0, V1, V2)) return false;
13334 }
13335#if USE_TAILCALLS
13336 MUSTTAIL return InterpNext(S);
13337#else
13338 return true;
13339#endif
13340}
13341PRESERVE_NONE
13342static bool Interp_CopyArrayBool(InterpState &S) {
13343 {
13344 CodePtr OpPC = S.PC;
13345 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13346 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13347 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13348 if (!CopyArray<PT_Bool>(S, OpPC, V0, V1, V2)) return false;
13349 }
13350#if USE_TAILCALLS
13351 MUSTTAIL return InterpNext(S);
13352#else
13353 return true;
13354#endif
13355}
13356PRESERVE_NONE
13357static bool Interp_CopyArrayFixedPoint(InterpState &S) {
13358 {
13359 CodePtr OpPC = S.PC;
13360 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13361 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13362 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13363 if (!CopyArray<PT_FixedPoint>(S, OpPC, V0, V1, V2)) return false;
13364 }
13365#if USE_TAILCALLS
13366 MUSTTAIL return InterpNext(S);
13367#else
13368 return true;
13369#endif
13370}
13371PRESERVE_NONE
13372static bool Interp_CopyArrayPtr(InterpState &S) {
13373 {
13374 CodePtr OpPC = S.PC;
13375 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13376 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13377 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13378 if (!CopyArray<PT_Ptr>(S, OpPC, V0, V1, V2)) return false;
13379 }
13380#if USE_TAILCALLS
13381 MUSTTAIL return InterpNext(S);
13382#else
13383 return true;
13384#endif
13385}
13386PRESERVE_NONE
13387static bool Interp_CopyArrayMemberPtr(InterpState &S) {
13388 {
13389 CodePtr OpPC = S.PC;
13390 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13391 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13392 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13393 if (!CopyArray<PT_MemberPtr>(S, OpPC, V0, V1, V2)) return false;
13394 }
13395#if USE_TAILCALLS
13396 MUSTTAIL return InterpNext(S);
13397#else
13398 return true;
13399#endif
13400}
13401PRESERVE_NONE
13402static bool Interp_CopyArrayFloat(InterpState &S) {
13403 {
13404 CodePtr OpPC = S.PC;
13405 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13406 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13407 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13408 if (!CopyArray<PT_Float>(S, OpPC, V0, V1, V2)) return false;
13409 }
13410#if USE_TAILCALLS
13411 MUSTTAIL return InterpNext(S);
13412#else
13413 return true;
13414#endif
13415}
13416#endif
13417#ifdef GET_DISASM
13418case OP_CopyArraySint8:
13419 Text.Op = PrintName("CopyArraySint8");
13420 Text.Args.push_back(printArg<uint32_t>(PC));
13421 Text.Args.push_back(printArg<uint32_t>(PC));
13422 Text.Args.push_back(printArg<uint32_t>(PC));
13423 break;
13424case OP_CopyArrayUint8:
13425 Text.Op = PrintName("CopyArrayUint8");
13426 Text.Args.push_back(printArg<uint32_t>(PC));
13427 Text.Args.push_back(printArg<uint32_t>(PC));
13428 Text.Args.push_back(printArg<uint32_t>(PC));
13429 break;
13430case OP_CopyArraySint16:
13431 Text.Op = PrintName("CopyArraySint16");
13432 Text.Args.push_back(printArg<uint32_t>(PC));
13433 Text.Args.push_back(printArg<uint32_t>(PC));
13434 Text.Args.push_back(printArg<uint32_t>(PC));
13435 break;
13436case OP_CopyArrayUint16:
13437 Text.Op = PrintName("CopyArrayUint16");
13438 Text.Args.push_back(printArg<uint32_t>(PC));
13439 Text.Args.push_back(printArg<uint32_t>(PC));
13440 Text.Args.push_back(printArg<uint32_t>(PC));
13441 break;
13442case OP_CopyArraySint32:
13443 Text.Op = PrintName("CopyArraySint32");
13444 Text.Args.push_back(printArg<uint32_t>(PC));
13445 Text.Args.push_back(printArg<uint32_t>(PC));
13446 Text.Args.push_back(printArg<uint32_t>(PC));
13447 break;
13448case OP_CopyArrayUint32:
13449 Text.Op = PrintName("CopyArrayUint32");
13450 Text.Args.push_back(printArg<uint32_t>(PC));
13451 Text.Args.push_back(printArg<uint32_t>(PC));
13452 Text.Args.push_back(printArg<uint32_t>(PC));
13453 break;
13454case OP_CopyArraySint64:
13455 Text.Op = PrintName("CopyArraySint64");
13456 Text.Args.push_back(printArg<uint32_t>(PC));
13457 Text.Args.push_back(printArg<uint32_t>(PC));
13458 Text.Args.push_back(printArg<uint32_t>(PC));
13459 break;
13460case OP_CopyArrayUint64:
13461 Text.Op = PrintName("CopyArrayUint64");
13462 Text.Args.push_back(printArg<uint32_t>(PC));
13463 Text.Args.push_back(printArg<uint32_t>(PC));
13464 Text.Args.push_back(printArg<uint32_t>(PC));
13465 break;
13466case OP_CopyArrayIntAP:
13467 Text.Op = PrintName("CopyArrayIntAP");
13468 Text.Args.push_back(printArg<uint32_t>(PC));
13469 Text.Args.push_back(printArg<uint32_t>(PC));
13470 Text.Args.push_back(printArg<uint32_t>(PC));
13471 break;
13472case OP_CopyArrayIntAPS:
13473 Text.Op = PrintName("CopyArrayIntAPS");
13474 Text.Args.push_back(printArg<uint32_t>(PC));
13475 Text.Args.push_back(printArg<uint32_t>(PC));
13476 Text.Args.push_back(printArg<uint32_t>(PC));
13477 break;
13478case OP_CopyArrayBool:
13479 Text.Op = PrintName("CopyArrayBool");
13480 Text.Args.push_back(printArg<uint32_t>(PC));
13481 Text.Args.push_back(printArg<uint32_t>(PC));
13482 Text.Args.push_back(printArg<uint32_t>(PC));
13483 break;
13484case OP_CopyArrayFixedPoint:
13485 Text.Op = PrintName("CopyArrayFixedPoint");
13486 Text.Args.push_back(printArg<uint32_t>(PC));
13487 Text.Args.push_back(printArg<uint32_t>(PC));
13488 Text.Args.push_back(printArg<uint32_t>(PC));
13489 break;
13490case OP_CopyArrayPtr:
13491 Text.Op = PrintName("CopyArrayPtr");
13492 Text.Args.push_back(printArg<uint32_t>(PC));
13493 Text.Args.push_back(printArg<uint32_t>(PC));
13494 Text.Args.push_back(printArg<uint32_t>(PC));
13495 break;
13496case OP_CopyArrayMemberPtr:
13497 Text.Op = PrintName("CopyArrayMemberPtr");
13498 Text.Args.push_back(printArg<uint32_t>(PC));
13499 Text.Args.push_back(printArg<uint32_t>(PC));
13500 Text.Args.push_back(printArg<uint32_t>(PC));
13501 break;
13502case OP_CopyArrayFloat:
13503 Text.Op = PrintName("CopyArrayFloat");
13504 Text.Args.push_back(printArg<uint32_t>(PC));
13505 Text.Args.push_back(printArg<uint32_t>(PC));
13506 Text.Args.push_back(printArg<uint32_t>(PC));
13507 break;
13508#endif
13509#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13510bool emitCopyArraySint8( uint32_t , uint32_t , uint32_t , SourceInfo);
13511bool emitCopyArrayUint8( uint32_t , uint32_t , uint32_t , SourceInfo);
13512bool emitCopyArraySint16( uint32_t , uint32_t , uint32_t , SourceInfo);
13513bool emitCopyArrayUint16( uint32_t , uint32_t , uint32_t , SourceInfo);
13514bool emitCopyArraySint32( uint32_t , uint32_t , uint32_t , SourceInfo);
13515bool emitCopyArrayUint32( uint32_t , uint32_t , uint32_t , SourceInfo);
13516bool emitCopyArraySint64( uint32_t , uint32_t , uint32_t , SourceInfo);
13517bool emitCopyArrayUint64( uint32_t , uint32_t , uint32_t , SourceInfo);
13518bool emitCopyArrayIntAP( uint32_t , uint32_t , uint32_t , SourceInfo);
13519bool emitCopyArrayIntAPS( uint32_t , uint32_t , uint32_t , SourceInfo);
13520bool emitCopyArrayBool( uint32_t , uint32_t , uint32_t , SourceInfo);
13521bool emitCopyArrayFixedPoint( uint32_t , uint32_t , uint32_t , SourceInfo);
13522bool emitCopyArrayPtr( uint32_t , uint32_t , uint32_t , SourceInfo);
13523bool emitCopyArrayMemberPtr( uint32_t , uint32_t , uint32_t , SourceInfo);
13524bool emitCopyArrayFloat( uint32_t , uint32_t , uint32_t , SourceInfo);
13525#endif
13526#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13527[[nodiscard]] bool emitCopyArray(PrimType, uint32_t, uint32_t, uint32_t, SourceInfo I);
13528#endif
13529#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
13530bool
13531#if defined(GET_EVAL_IMPL)
13532EvalEmitter
13533#else
13534ByteCodeEmitter
13535#endif
13536::emitCopyArray(PrimType T0, uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo I) {
13537 switch (T0) {
13538 case PT_Sint8:
13539 return emitCopyArraySint8(A0, A1, A2, I);
13540 case PT_Uint8:
13541 return emitCopyArrayUint8(A0, A1, A2, I);
13542 case PT_Sint16:
13543 return emitCopyArraySint16(A0, A1, A2, I);
13544 case PT_Uint16:
13545 return emitCopyArrayUint16(A0, A1, A2, I);
13546 case PT_Sint32:
13547 return emitCopyArraySint32(A0, A1, A2, I);
13548 case PT_Uint32:
13549 return emitCopyArrayUint32(A0, A1, A2, I);
13550 case PT_Sint64:
13551 return emitCopyArraySint64(A0, A1, A2, I);
13552 case PT_Uint64:
13553 return emitCopyArrayUint64(A0, A1, A2, I);
13554 case PT_IntAP:
13555 return emitCopyArrayIntAP(A0, A1, A2, I);
13556 case PT_IntAPS:
13557 return emitCopyArrayIntAPS(A0, A1, A2, I);
13558 case PT_Bool:
13559 return emitCopyArrayBool(A0, A1, A2, I);
13560 case PT_FixedPoint:
13561 return emitCopyArrayFixedPoint(A0, A1, A2, I);
13562 case PT_Ptr:
13563 return emitCopyArrayPtr(A0, A1, A2, I);
13564 case PT_MemberPtr:
13565 return emitCopyArrayMemberPtr(A0, A1, A2, I);
13566 case PT_Float:
13567 return emitCopyArrayFloat(A0, A1, A2, I);
13568 }
13569 llvm_unreachable("invalid enum value");
13570}
13571#endif
13572#ifdef GET_LINK_IMPL
13573bool ByteCodeEmitter::emitCopyArraySint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13574 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint8, A0, A1, A2, L);
13575}
13576bool ByteCodeEmitter::emitCopyArrayUint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13577 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint8, A0, A1, A2, L);
13578}
13579bool ByteCodeEmitter::emitCopyArraySint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13580 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint16, A0, A1, A2, L);
13581}
13582bool ByteCodeEmitter::emitCopyArrayUint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13583 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint16, A0, A1, A2, L);
13584}
13585bool ByteCodeEmitter::emitCopyArraySint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13586 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint32, A0, A1, A2, L);
13587}
13588bool ByteCodeEmitter::emitCopyArrayUint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13589 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint32, A0, A1, A2, L);
13590}
13591bool ByteCodeEmitter::emitCopyArraySint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13592 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint64, A0, A1, A2, L);
13593}
13594bool ByteCodeEmitter::emitCopyArrayUint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13595 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint64, A0, A1, A2, L);
13596}
13597bool ByteCodeEmitter::emitCopyArrayIntAP( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13598 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayIntAP, A0, A1, A2, L);
13599}
13600bool ByteCodeEmitter::emitCopyArrayIntAPS( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13601 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayIntAPS, A0, A1, A2, L);
13602}
13603bool ByteCodeEmitter::emitCopyArrayBool( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13604 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayBool, A0, A1, A2, L);
13605}
13606bool ByteCodeEmitter::emitCopyArrayFixedPoint( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13607 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayFixedPoint, A0, A1, A2, L);
13608}
13609bool ByteCodeEmitter::emitCopyArrayPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13610 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayPtr, A0, A1, A2, L);
13611}
13612bool ByteCodeEmitter::emitCopyArrayMemberPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13613 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayMemberPtr, A0, A1, A2, L);
13614}
13615bool ByteCodeEmitter::emitCopyArrayFloat( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13616 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayFloat, A0, A1, A2, L);
13617}
13618#endif
13619#ifdef GET_EVAL_IMPL
13620bool EvalEmitter::emitCopyArraySint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13621 if (!isActive()) return true;
13622 CurrentSource = L;
13623 return CopyArray<PT_Sint8>(S, CodePtr(), A0, A1, A2);
13624}
13625bool EvalEmitter::emitCopyArrayUint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13626 if (!isActive()) return true;
13627 CurrentSource = L;
13628 return CopyArray<PT_Uint8>(S, CodePtr(), A0, A1, A2);
13629}
13630bool EvalEmitter::emitCopyArraySint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13631 if (!isActive()) return true;
13632 CurrentSource = L;
13633 return CopyArray<PT_Sint16>(S, CodePtr(), A0, A1, A2);
13634}
13635bool EvalEmitter::emitCopyArrayUint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13636 if (!isActive()) return true;
13637 CurrentSource = L;
13638 return CopyArray<PT_Uint16>(S, CodePtr(), A0, A1, A2);
13639}
13640bool EvalEmitter::emitCopyArraySint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13641 if (!isActive()) return true;
13642 CurrentSource = L;
13643 return CopyArray<PT_Sint32>(S, CodePtr(), A0, A1, A2);
13644}
13645bool EvalEmitter::emitCopyArrayUint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13646 if (!isActive()) return true;
13647 CurrentSource = L;
13648 return CopyArray<PT_Uint32>(S, CodePtr(), A0, A1, A2);
13649}
13650bool EvalEmitter::emitCopyArraySint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13651 if (!isActive()) return true;
13652 CurrentSource = L;
13653 return CopyArray<PT_Sint64>(S, CodePtr(), A0, A1, A2);
13654}
13655bool EvalEmitter::emitCopyArrayUint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13656 if (!isActive()) return true;
13657 CurrentSource = L;
13658 return CopyArray<PT_Uint64>(S, CodePtr(), A0, A1, A2);
13659}
13660bool EvalEmitter::emitCopyArrayIntAP( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13661 if (!isActive()) return true;
13662 CurrentSource = L;
13663 return CopyArray<PT_IntAP>(S, CodePtr(), A0, A1, A2);
13664}
13665bool EvalEmitter::emitCopyArrayIntAPS( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13666 if (!isActive()) return true;
13667 CurrentSource = L;
13668 return CopyArray<PT_IntAPS>(S, CodePtr(), A0, A1, A2);
13669}
13670bool EvalEmitter::emitCopyArrayBool( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13671 if (!isActive()) return true;
13672 CurrentSource = L;
13673 return CopyArray<PT_Bool>(S, CodePtr(), A0, A1, A2);
13674}
13675bool EvalEmitter::emitCopyArrayFixedPoint( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13676 if (!isActive()) return true;
13677 CurrentSource = L;
13678 return CopyArray<PT_FixedPoint>(S, CodePtr(), A0, A1, A2);
13679}
13680bool EvalEmitter::emitCopyArrayPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13681 if (!isActive()) return true;
13682 CurrentSource = L;
13683 return CopyArray<PT_Ptr>(S, CodePtr(), A0, A1, A2);
13684}
13685bool EvalEmitter::emitCopyArrayMemberPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13686 if (!isActive()) return true;
13687 CurrentSource = L;
13688 return CopyArray<PT_MemberPtr>(S, CodePtr(), A0, A1, A2);
13689}
13690bool EvalEmitter::emitCopyArrayFloat( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13691 if (!isActive()) return true;
13692 CurrentSource = L;
13693 return CopyArray<PT_Float>(S, CodePtr(), A0, A1, A2);
13694}
13695#endif
13696#ifdef GET_OPCODE_NAMES
13697OP_CopyMemberPtrPath,
13698#endif
13699#ifdef GET_INTERPFN_LIST
13700&Interp_CopyMemberPtrPath,
13701#endif
13702#ifdef GET_INTERPFN_DISPATCHERS
13703PRESERVE_NONE
13704static bool Interp_CopyMemberPtrPath(InterpState &S) {
13705 {
13706 const auto V0 = ReadArg<const RecordDecl *>(S, S.PC);
13707 const auto V1 = ReadArg<bool>(S, S.PC);
13708 CopyMemberPtrPath(S, V0, V1);
13709 }
13710#if USE_TAILCALLS
13711 MUSTTAIL return InterpNext(S);
13712#else
13713 return true;
13714#endif
13715}
13716#endif
13717#ifdef GET_DISASM
13718case OP_CopyMemberPtrPath:
13719 Text.Op = PrintName("CopyMemberPtrPath");
13720 Text.Args.push_back(printArg<const RecordDecl *>(PC));
13721 Text.Args.push_back(printArg<bool>(PC));
13722 break;
13723#endif
13724#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13725bool emitCopyMemberPtrPath( const RecordDecl * , bool , SourceInfo);
13726#endif
13727#ifdef GET_LINK_IMPL
13728bool ByteCodeEmitter::emitCopyMemberPtrPath( const RecordDecl * A0, bool A1, SourceInfo L) {
13729 return emitOp<const RecordDecl *, bool>(OP_CopyMemberPtrPath, A0, A1, L);
13730}
13731#endif
13732#ifdef GET_EVAL_IMPL
13733bool EvalEmitter::emitCopyMemberPtrPath( const RecordDecl * A0, bool A1, SourceInfo L) {
13734 if (!isActive()) return true;
13735 CurrentSource = L;
13736 return CopyMemberPtrPath(S, A0, A1);
13737}
13738#endif
13739#ifdef GET_OPCODE_NAMES
13740OP_CtorCheck,
13741#endif
13742#ifdef GET_INTERPFN_LIST
13743&Interp_CtorCheck,
13744#endif
13745#ifdef GET_INTERPFN_DISPATCHERS
13746PRESERVE_NONE
13747static bool Interp_CtorCheck(InterpState &S) {
13748 if (!CtorCheck(S)) return false;
13749#if USE_TAILCALLS
13750 MUSTTAIL return InterpNext(S);
13751#else
13752 return true;
13753#endif
13754}
13755#endif
13756#ifdef GET_DISASM
13757case OP_CtorCheck:
13758 Text.Op = PrintName("CtorCheck");
13759 break;
13760#endif
13761#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13762bool emitCtorCheck(SourceInfo);
13763#endif
13764#ifdef GET_LINK_IMPL
13765bool ByteCodeEmitter::emitCtorCheck(SourceInfo L) {
13766 return emitOp<>(OP_CtorCheck, L);
13767}
13768#endif
13769#ifdef GET_EVAL_IMPL
13770bool EvalEmitter::emitCtorCheck(SourceInfo L) {
13771 if (!isActive()) return true;
13772 CurrentSource = L;
13773 return CtorCheck(S);
13774}
13775#endif
13776#ifdef GET_OPCODE_NAMES
13777OP_DecSint8,
13778OP_DecUint8,
13779OP_DecSint16,
13780OP_DecUint16,
13781OP_DecSint32,
13782OP_DecUint32,
13783OP_DecSint64,
13784OP_DecUint64,
13785OP_DecIntAP,
13786OP_DecIntAPS,
13787OP_DecBool,
13788OP_DecFixedPoint,
13789#endif
13790#ifdef GET_INTERPFN_LIST
13791&Interp_DecSint8,
13792&Interp_DecUint8,
13793&Interp_DecSint16,
13794&Interp_DecUint16,
13795&Interp_DecSint32,
13796&Interp_DecUint32,
13797&Interp_DecSint64,
13798&Interp_DecUint64,
13799&Interp_DecIntAP,
13800&Interp_DecIntAPS,
13801&Interp_DecBool,
13802&Interp_DecFixedPoint,
13803#endif
13804#ifdef GET_INTERPFN_DISPATCHERS
13805PRESERVE_NONE
13806static bool Interp_DecSint8(InterpState &S) {
13807 {
13808 CodePtr OpPC = S.PC;
13809 const auto V0 = ReadArg<bool>(S, S.PC);
13810 if (!Dec<PT_Sint8>(S, OpPC, V0)) return false;
13811 }
13812#if USE_TAILCALLS
13813 MUSTTAIL return InterpNext(S);
13814#else
13815 return true;
13816#endif
13817}
13818PRESERVE_NONE
13819static bool Interp_DecUint8(InterpState &S) {
13820 {
13821 CodePtr OpPC = S.PC;
13822 const auto V0 = ReadArg<bool>(S, S.PC);
13823 if (!Dec<PT_Uint8>(S, OpPC, V0)) return false;
13824 }
13825#if USE_TAILCALLS
13826 MUSTTAIL return InterpNext(S);
13827#else
13828 return true;
13829#endif
13830}
13831PRESERVE_NONE
13832static bool Interp_DecSint16(InterpState &S) {
13833 {
13834 CodePtr OpPC = S.PC;
13835 const auto V0 = ReadArg<bool>(S, S.PC);
13836 if (!Dec<PT_Sint16>(S, OpPC, V0)) return false;
13837 }
13838#if USE_TAILCALLS
13839 MUSTTAIL return InterpNext(S);
13840#else
13841 return true;
13842#endif
13843}
13844PRESERVE_NONE
13845static bool Interp_DecUint16(InterpState &S) {
13846 {
13847 CodePtr OpPC = S.PC;
13848 const auto V0 = ReadArg<bool>(S, S.PC);
13849 if (!Dec<PT_Uint16>(S, OpPC, V0)) return false;
13850 }
13851#if USE_TAILCALLS
13852 MUSTTAIL return InterpNext(S);
13853#else
13854 return true;
13855#endif
13856}
13857PRESERVE_NONE
13858static bool Interp_DecSint32(InterpState &S) {
13859 {
13860 CodePtr OpPC = S.PC;
13861 const auto V0 = ReadArg<bool>(S, S.PC);
13862 if (!Dec<PT_Sint32>(S, OpPC, V0)) return false;
13863 }
13864#if USE_TAILCALLS
13865 MUSTTAIL return InterpNext(S);
13866#else
13867 return true;
13868#endif
13869}
13870PRESERVE_NONE
13871static bool Interp_DecUint32(InterpState &S) {
13872 {
13873 CodePtr OpPC = S.PC;
13874 const auto V0 = ReadArg<bool>(S, S.PC);
13875 if (!Dec<PT_Uint32>(S, OpPC, V0)) return false;
13876 }
13877#if USE_TAILCALLS
13878 MUSTTAIL return InterpNext(S);
13879#else
13880 return true;
13881#endif
13882}
13883PRESERVE_NONE
13884static bool Interp_DecSint64(InterpState &S) {
13885 {
13886 CodePtr OpPC = S.PC;
13887 const auto V0 = ReadArg<bool>(S, S.PC);
13888 if (!Dec<PT_Sint64>(S, OpPC, V0)) return false;
13889 }
13890#if USE_TAILCALLS
13891 MUSTTAIL return InterpNext(S);
13892#else
13893 return true;
13894#endif
13895}
13896PRESERVE_NONE
13897static bool Interp_DecUint64(InterpState &S) {
13898 {
13899 CodePtr OpPC = S.PC;
13900 const auto V0 = ReadArg<bool>(S, S.PC);
13901 if (!Dec<PT_Uint64>(S, OpPC, V0)) return false;
13902 }
13903#if USE_TAILCALLS
13904 MUSTTAIL return InterpNext(S);
13905#else
13906 return true;
13907#endif
13908}
13909PRESERVE_NONE
13910static bool Interp_DecIntAP(InterpState &S) {
13911 {
13912 CodePtr OpPC = S.PC;
13913 const auto V0 = ReadArg<bool>(S, S.PC);
13914 if (!Dec<PT_IntAP>(S, OpPC, V0)) return false;
13915 }
13916#if USE_TAILCALLS
13917 MUSTTAIL return InterpNext(S);
13918#else
13919 return true;
13920#endif
13921}
13922PRESERVE_NONE
13923static bool Interp_DecIntAPS(InterpState &S) {
13924 {
13925 CodePtr OpPC = S.PC;
13926 const auto V0 = ReadArg<bool>(S, S.PC);
13927 if (!Dec<PT_IntAPS>(S, OpPC, V0)) return false;
13928 }
13929#if USE_TAILCALLS
13930 MUSTTAIL return InterpNext(S);
13931#else
13932 return true;
13933#endif
13934}
13935PRESERVE_NONE
13936static bool Interp_DecBool(InterpState &S) {
13937 {
13938 CodePtr OpPC = S.PC;
13939 const auto V0 = ReadArg<bool>(S, S.PC);
13940 if (!Dec<PT_Bool>(S, OpPC, V0)) return false;
13941 }
13942#if USE_TAILCALLS
13943 MUSTTAIL return InterpNext(S);
13944#else
13945 return true;
13946#endif
13947}
13948PRESERVE_NONE
13949static bool Interp_DecFixedPoint(InterpState &S) {
13950 {
13951 CodePtr OpPC = S.PC;
13952 const auto V0 = ReadArg<bool>(S, S.PC);
13953 if (!Dec<PT_FixedPoint>(S, OpPC, V0)) return false;
13954 }
13955#if USE_TAILCALLS
13956 MUSTTAIL return InterpNext(S);
13957#else
13958 return true;
13959#endif
13960}
13961#endif
13962#ifdef GET_DISASM
13963case OP_DecSint8:
13964 Text.Op = PrintName("DecSint8");
13965 Text.Args.push_back(printArg<bool>(PC));
13966 break;
13967case OP_DecUint8:
13968 Text.Op = PrintName("DecUint8");
13969 Text.Args.push_back(printArg<bool>(PC));
13970 break;
13971case OP_DecSint16:
13972 Text.Op = PrintName("DecSint16");
13973 Text.Args.push_back(printArg<bool>(PC));
13974 break;
13975case OP_DecUint16:
13976 Text.Op = PrintName("DecUint16");
13977 Text.Args.push_back(printArg<bool>(PC));
13978 break;
13979case OP_DecSint32:
13980 Text.Op = PrintName("DecSint32");
13981 Text.Args.push_back(printArg<bool>(PC));
13982 break;
13983case OP_DecUint32:
13984 Text.Op = PrintName("DecUint32");
13985 Text.Args.push_back(printArg<bool>(PC));
13986 break;
13987case OP_DecSint64:
13988 Text.Op = PrintName("DecSint64");
13989 Text.Args.push_back(printArg<bool>(PC));
13990 break;
13991case OP_DecUint64:
13992 Text.Op = PrintName("DecUint64");
13993 Text.Args.push_back(printArg<bool>(PC));
13994 break;
13995case OP_DecIntAP:
13996 Text.Op = PrintName("DecIntAP");
13997 Text.Args.push_back(printArg<bool>(PC));
13998 break;
13999case OP_DecIntAPS:
14000 Text.Op = PrintName("DecIntAPS");
14001 Text.Args.push_back(printArg<bool>(PC));
14002 break;
14003case OP_DecBool:
14004 Text.Op = PrintName("DecBool");
14005 Text.Args.push_back(printArg<bool>(PC));
14006 break;
14007case OP_DecFixedPoint:
14008 Text.Op = PrintName("DecFixedPoint");
14009 Text.Args.push_back(printArg<bool>(PC));
14010 break;
14011#endif
14012#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14013bool emitDecSint8( bool , SourceInfo);
14014bool emitDecUint8( bool , SourceInfo);
14015bool emitDecSint16( bool , SourceInfo);
14016bool emitDecUint16( bool , SourceInfo);
14017bool emitDecSint32( bool , SourceInfo);
14018bool emitDecUint32( bool , SourceInfo);
14019bool emitDecSint64( bool , SourceInfo);
14020bool emitDecUint64( bool , SourceInfo);
14021bool emitDecIntAP( bool , SourceInfo);
14022bool emitDecIntAPS( bool , SourceInfo);
14023bool emitDecBool( bool , SourceInfo);
14024bool emitDecFixedPoint( bool , SourceInfo);
14025#endif
14026#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14027[[nodiscard]] bool emitDec(PrimType, bool, SourceInfo I);
14028#endif
14029#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
14030bool
14031#if defined(GET_EVAL_IMPL)
14032EvalEmitter
14033#else
14034ByteCodeEmitter
14035#endif
14036::emitDec(PrimType T0, bool A0, SourceInfo I) {
14037 switch (T0) {
14038 case PT_Sint8:
14039 return emitDecSint8(A0, I);
14040 case PT_Uint8:
14041 return emitDecUint8(A0, I);
14042 case PT_Sint16:
14043 return emitDecSint16(A0, I);
14044 case PT_Uint16:
14045 return emitDecUint16(A0, I);
14046 case PT_Sint32:
14047 return emitDecSint32(A0, I);
14048 case PT_Uint32:
14049 return emitDecUint32(A0, I);
14050 case PT_Sint64:
14051 return emitDecSint64(A0, I);
14052 case PT_Uint64:
14053 return emitDecUint64(A0, I);
14054 case PT_IntAP:
14055 return emitDecIntAP(A0, I);
14056 case PT_IntAPS:
14057 return emitDecIntAPS(A0, I);
14058 case PT_Bool:
14059 return emitDecBool(A0, I);
14060 case PT_FixedPoint:
14061 return emitDecFixedPoint(A0, I);
14062 default: llvm_unreachable("invalid type: emitDec");
14063 }
14064 llvm_unreachable("invalid enum value");
14065}
14066#endif
14067#ifdef GET_LINK_IMPL
14068bool ByteCodeEmitter::emitDecSint8( bool A0, SourceInfo L) {
14069 return emitOp<bool>(OP_DecSint8, A0, L);
14070}
14071bool ByteCodeEmitter::emitDecUint8( bool A0, SourceInfo L) {
14072 return emitOp<bool>(OP_DecUint8, A0, L);
14073}
14074bool ByteCodeEmitter::emitDecSint16( bool A0, SourceInfo L) {
14075 return emitOp<bool>(OP_DecSint16, A0, L);
14076}
14077bool ByteCodeEmitter::emitDecUint16( bool A0, SourceInfo L) {
14078 return emitOp<bool>(OP_DecUint16, A0, L);
14079}
14080bool ByteCodeEmitter::emitDecSint32( bool A0, SourceInfo L) {
14081 return emitOp<bool>(OP_DecSint32, A0, L);
14082}
14083bool ByteCodeEmitter::emitDecUint32( bool A0, SourceInfo L) {
14084 return emitOp<bool>(OP_DecUint32, A0, L);
14085}
14086bool ByteCodeEmitter::emitDecSint64( bool A0, SourceInfo L) {
14087 return emitOp<bool>(OP_DecSint64, A0, L);
14088}
14089bool ByteCodeEmitter::emitDecUint64( bool A0, SourceInfo L) {
14090 return emitOp<bool>(OP_DecUint64, A0, L);
14091}
14092bool ByteCodeEmitter::emitDecIntAP( bool A0, SourceInfo L) {
14093 return emitOp<bool>(OP_DecIntAP, A0, L);
14094}
14095bool ByteCodeEmitter::emitDecIntAPS( bool A0, SourceInfo L) {
14096 return emitOp<bool>(OP_DecIntAPS, A0, L);
14097}
14098bool ByteCodeEmitter::emitDecBool( bool A0, SourceInfo L) {
14099 return emitOp<bool>(OP_DecBool, A0, L);
14100}
14101bool ByteCodeEmitter::emitDecFixedPoint( bool A0, SourceInfo L) {
14102 return emitOp<bool>(OP_DecFixedPoint, A0, L);
14103}
14104#endif
14105#ifdef GET_EVAL_IMPL
14106bool EvalEmitter::emitDecSint8( bool A0, SourceInfo L) {
14107 if (!isActive()) return true;
14108 CurrentSource = L;
14109 return Dec<PT_Sint8>(S, CodePtr(), A0);
14110}
14111bool EvalEmitter::emitDecUint8( bool A0, SourceInfo L) {
14112 if (!isActive()) return true;
14113 CurrentSource = L;
14114 return Dec<PT_Uint8>(S, CodePtr(), A0);
14115}
14116bool EvalEmitter::emitDecSint16( bool A0, SourceInfo L) {
14117 if (!isActive()) return true;
14118 CurrentSource = L;
14119 return Dec<PT_Sint16>(S, CodePtr(), A0);
14120}
14121bool EvalEmitter::emitDecUint16( bool A0, SourceInfo L) {
14122 if (!isActive()) return true;
14123 CurrentSource = L;
14124 return Dec<PT_Uint16>(S, CodePtr(), A0);
14125}
14126bool EvalEmitter::emitDecSint32( bool A0, SourceInfo L) {
14127 if (!isActive()) return true;
14128 CurrentSource = L;
14129 return Dec<PT_Sint32>(S, CodePtr(), A0);
14130}
14131bool EvalEmitter::emitDecUint32( bool A0, SourceInfo L) {
14132 if (!isActive()) return true;
14133 CurrentSource = L;
14134 return Dec<PT_Uint32>(S, CodePtr(), A0);
14135}
14136bool EvalEmitter::emitDecSint64( bool A0, SourceInfo L) {
14137 if (!isActive()) return true;
14138 CurrentSource = L;
14139 return Dec<PT_Sint64>(S, CodePtr(), A0);
14140}
14141bool EvalEmitter::emitDecUint64( bool A0, SourceInfo L) {
14142 if (!isActive()) return true;
14143 CurrentSource = L;
14144 return Dec<PT_Uint64>(S, CodePtr(), A0);
14145}
14146bool EvalEmitter::emitDecIntAP( bool A0, SourceInfo L) {
14147 if (!isActive()) return true;
14148 CurrentSource = L;
14149 return Dec<PT_IntAP>(S, CodePtr(), A0);
14150}
14151bool EvalEmitter::emitDecIntAPS( bool A0, SourceInfo L) {
14152 if (!isActive()) return true;
14153 CurrentSource = L;
14154 return Dec<PT_IntAPS>(S, CodePtr(), A0);
14155}
14156bool EvalEmitter::emitDecBool( bool A0, SourceInfo L) {
14157 if (!isActive()) return true;
14158 CurrentSource = L;
14159 return Dec<PT_Bool>(S, CodePtr(), A0);
14160}
14161bool EvalEmitter::emitDecFixedPoint( bool A0, SourceInfo L) {
14162 if (!isActive()) return true;
14163 CurrentSource = L;
14164 return Dec<PT_FixedPoint>(S, CodePtr(), A0);
14165}
14166#endif
14167#ifdef GET_OPCODE_NAMES
14168OP_DecBitfieldSint8,
14169OP_DecBitfieldUint8,
14170OP_DecBitfieldSint16,
14171OP_DecBitfieldUint16,
14172OP_DecBitfieldSint32,
14173OP_DecBitfieldUint32,
14174OP_DecBitfieldSint64,
14175OP_DecBitfieldUint64,
14176OP_DecBitfieldIntAP,
14177OP_DecBitfieldIntAPS,
14178OP_DecBitfieldBool,
14179OP_DecBitfieldFixedPoint,
14180#endif
14181#ifdef GET_INTERPFN_LIST
14182&Interp_DecBitfieldSint8,
14183&Interp_DecBitfieldUint8,
14184&Interp_DecBitfieldSint16,
14185&Interp_DecBitfieldUint16,
14186&Interp_DecBitfieldSint32,
14187&Interp_DecBitfieldUint32,
14188&Interp_DecBitfieldSint64,
14189&Interp_DecBitfieldUint64,
14190&Interp_DecBitfieldIntAP,
14191&Interp_DecBitfieldIntAPS,
14192&Interp_DecBitfieldBool,
14193&Interp_DecBitfieldFixedPoint,
14194#endif
14195#ifdef GET_INTERPFN_DISPATCHERS
14196PRESERVE_NONE
14197static bool Interp_DecBitfieldSint8(InterpState &S) {
14198 {
14199 CodePtr OpPC = S.PC;
14200 const auto V0 = ReadArg<bool>(S, S.PC);
14201 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14202 if (!DecBitfield<PT_Sint8>(S, OpPC, V0, V1)) return false;
14203 }
14204#if USE_TAILCALLS
14205 MUSTTAIL return InterpNext(S);
14206#else
14207 return true;
14208#endif
14209}
14210PRESERVE_NONE
14211static bool Interp_DecBitfieldUint8(InterpState &S) {
14212 {
14213 CodePtr OpPC = S.PC;
14214 const auto V0 = ReadArg<bool>(S, S.PC);
14215 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14216 if (!DecBitfield<PT_Uint8>(S, OpPC, V0, V1)) return false;
14217 }
14218#if USE_TAILCALLS
14219 MUSTTAIL return InterpNext(S);
14220#else
14221 return true;
14222#endif
14223}
14224PRESERVE_NONE
14225static bool Interp_DecBitfieldSint16(InterpState &S) {
14226 {
14227 CodePtr OpPC = S.PC;
14228 const auto V0 = ReadArg<bool>(S, S.PC);
14229 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14230 if (!DecBitfield<PT_Sint16>(S, OpPC, V0, V1)) return false;
14231 }
14232#if USE_TAILCALLS
14233 MUSTTAIL return InterpNext(S);
14234#else
14235 return true;
14236#endif
14237}
14238PRESERVE_NONE
14239static bool Interp_DecBitfieldUint16(InterpState &S) {
14240 {
14241 CodePtr OpPC = S.PC;
14242 const auto V0 = ReadArg<bool>(S, S.PC);
14243 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14244 if (!DecBitfield<PT_Uint16>(S, OpPC, V0, V1)) return false;
14245 }
14246#if USE_TAILCALLS
14247 MUSTTAIL return InterpNext(S);
14248#else
14249 return true;
14250#endif
14251}
14252PRESERVE_NONE
14253static bool Interp_DecBitfieldSint32(InterpState &S) {
14254 {
14255 CodePtr OpPC = S.PC;
14256 const auto V0 = ReadArg<bool>(S, S.PC);
14257 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14258 if (!DecBitfield<PT_Sint32>(S, OpPC, V0, V1)) return false;
14259 }
14260#if USE_TAILCALLS
14261 MUSTTAIL return InterpNext(S);
14262#else
14263 return true;
14264#endif
14265}
14266PRESERVE_NONE
14267static bool Interp_DecBitfieldUint32(InterpState &S) {
14268 {
14269 CodePtr OpPC = S.PC;
14270 const auto V0 = ReadArg<bool>(S, S.PC);
14271 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14272 if (!DecBitfield<PT_Uint32>(S, OpPC, V0, V1)) return false;
14273 }
14274#if USE_TAILCALLS
14275 MUSTTAIL return InterpNext(S);
14276#else
14277 return true;
14278#endif
14279}
14280PRESERVE_NONE
14281static bool Interp_DecBitfieldSint64(InterpState &S) {
14282 {
14283 CodePtr OpPC = S.PC;
14284 const auto V0 = ReadArg<bool>(S, S.PC);
14285 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14286 if (!DecBitfield<PT_Sint64>(S, OpPC, V0, V1)) return false;
14287 }
14288#if USE_TAILCALLS
14289 MUSTTAIL return InterpNext(S);
14290#else
14291 return true;
14292#endif
14293}
14294PRESERVE_NONE
14295static bool Interp_DecBitfieldUint64(InterpState &S) {
14296 {
14297 CodePtr OpPC = S.PC;
14298 const auto V0 = ReadArg<bool>(S, S.PC);
14299 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14300 if (!DecBitfield<PT_Uint64>(S, OpPC, V0, V1)) return false;
14301 }
14302#if USE_TAILCALLS
14303 MUSTTAIL return InterpNext(S);
14304#else
14305 return true;
14306#endif
14307}
14308PRESERVE_NONE
14309static bool Interp_DecBitfieldIntAP(InterpState &S) {
14310 {
14311 CodePtr OpPC = S.PC;
14312 const auto V0 = ReadArg<bool>(S, S.PC);
14313 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14314 if (!DecBitfield<PT_IntAP>(S, OpPC, V0, V1)) return false;
14315 }
14316#if USE_TAILCALLS
14317 MUSTTAIL return InterpNext(S);
14318#else
14319 return true;
14320#endif
14321}
14322PRESERVE_NONE
14323static bool Interp_DecBitfieldIntAPS(InterpState &S) {
14324 {
14325 CodePtr OpPC = S.PC;
14326 const auto V0 = ReadArg<bool>(S, S.PC);
14327 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14328 if (!DecBitfield<PT_IntAPS>(S, OpPC, V0, V1)) return false;
14329 }
14330#if USE_TAILCALLS
14331 MUSTTAIL return InterpNext(S);
14332#else
14333 return true;
14334#endif
14335}
14336PRESERVE_NONE
14337static bool Interp_DecBitfieldBool(InterpState &S) {
14338 {
14339 CodePtr OpPC = S.PC;
14340 const auto V0 = ReadArg<bool>(S, S.PC);
14341 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14342 if (!DecBitfield<PT_Bool>(S, OpPC, V0, V1)) return false;
14343 }
14344#if USE_TAILCALLS
14345 MUSTTAIL return InterpNext(S);
14346#else
14347 return true;
14348#endif
14349}
14350PRESERVE_NONE
14351static bool Interp_DecBitfieldFixedPoint(InterpState &S) {
14352 {
14353 CodePtr OpPC = S.PC;
14354 const auto V0 = ReadArg<bool>(S, S.PC);
14355 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14356 if (!DecBitfield<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
14357 }
14358#if USE_TAILCALLS
14359 MUSTTAIL return InterpNext(S);
14360#else
14361 return true;
14362#endif
14363}
14364#endif
14365#ifdef GET_DISASM
14366case OP_DecBitfieldSint8:
14367 Text.Op = PrintName("DecBitfieldSint8");
14368 Text.Args.push_back(printArg<bool>(PC));
14369 Text.Args.push_back(printArg<uint32_t>(PC));
14370 break;
14371case OP_DecBitfieldUint8:
14372 Text.Op = PrintName("DecBitfieldUint8");
14373 Text.Args.push_back(printArg<bool>(PC));
14374 Text.Args.push_back(printArg<uint32_t>(PC));
14375 break;
14376case OP_DecBitfieldSint16:
14377 Text.Op = PrintName("DecBitfieldSint16");
14378 Text.Args.push_back(printArg<bool>(PC));
14379 Text.Args.push_back(printArg<uint32_t>(PC));
14380 break;
14381case OP_DecBitfieldUint16:
14382 Text.Op = PrintName("DecBitfieldUint16");
14383 Text.Args.push_back(printArg<bool>(PC));
14384 Text.Args.push_back(printArg<uint32_t>(PC));
14385 break;
14386case OP_DecBitfieldSint32:
14387 Text.Op = PrintName("DecBitfieldSint32");
14388 Text.Args.push_back(printArg<bool>(PC));
14389 Text.Args.push_back(printArg<uint32_t>(PC));
14390 break;
14391case OP_DecBitfieldUint32:
14392 Text.Op = PrintName("DecBitfieldUint32");
14393 Text.Args.push_back(printArg<bool>(PC));
14394 Text.Args.push_back(printArg<uint32_t>(PC));
14395 break;
14396case OP_DecBitfieldSint64:
14397 Text.Op = PrintName("DecBitfieldSint64");
14398 Text.Args.push_back(printArg<bool>(PC));
14399 Text.Args.push_back(printArg<uint32_t>(PC));
14400 break;
14401case OP_DecBitfieldUint64:
14402 Text.Op = PrintName("DecBitfieldUint64");
14403 Text.Args.push_back(printArg<bool>(PC));
14404 Text.Args.push_back(printArg<uint32_t>(PC));
14405 break;
14406case OP_DecBitfieldIntAP:
14407 Text.Op = PrintName("DecBitfieldIntAP");
14408 Text.Args.push_back(printArg<bool>(PC));
14409 Text.Args.push_back(printArg<uint32_t>(PC));
14410 break;
14411case OP_DecBitfieldIntAPS:
14412 Text.Op = PrintName("DecBitfieldIntAPS");
14413 Text.Args.push_back(printArg<bool>(PC));
14414 Text.Args.push_back(printArg<uint32_t>(PC));
14415 break;
14416case OP_DecBitfieldBool:
14417 Text.Op = PrintName("DecBitfieldBool");
14418 Text.Args.push_back(printArg<bool>(PC));
14419 Text.Args.push_back(printArg<uint32_t>(PC));
14420 break;
14421case OP_DecBitfieldFixedPoint:
14422 Text.Op = PrintName("DecBitfieldFixedPoint");
14423 Text.Args.push_back(printArg<bool>(PC));
14424 Text.Args.push_back(printArg<uint32_t>(PC));
14425 break;
14426#endif
14427#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14428bool emitDecBitfieldSint8( bool , uint32_t , SourceInfo);
14429bool emitDecBitfieldUint8( bool , uint32_t , SourceInfo);
14430bool emitDecBitfieldSint16( bool , uint32_t , SourceInfo);
14431bool emitDecBitfieldUint16( bool , uint32_t , SourceInfo);
14432bool emitDecBitfieldSint32( bool , uint32_t , SourceInfo);
14433bool emitDecBitfieldUint32( bool , uint32_t , SourceInfo);
14434bool emitDecBitfieldSint64( bool , uint32_t , SourceInfo);
14435bool emitDecBitfieldUint64( bool , uint32_t , SourceInfo);
14436bool emitDecBitfieldIntAP( bool , uint32_t , SourceInfo);
14437bool emitDecBitfieldIntAPS( bool , uint32_t , SourceInfo);
14438bool emitDecBitfieldBool( bool , uint32_t , SourceInfo);
14439bool emitDecBitfieldFixedPoint( bool , uint32_t , SourceInfo);
14440#endif
14441#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14442[[nodiscard]] bool emitDecBitfield(PrimType, bool, uint32_t, SourceInfo I);
14443#endif
14444#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
14445bool
14446#if defined(GET_EVAL_IMPL)
14447EvalEmitter
14448#else
14449ByteCodeEmitter
14450#endif
14451::emitDecBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
14452 switch (T0) {
14453 case PT_Sint8:
14454 return emitDecBitfieldSint8(A0, A1, I);
14455 case PT_Uint8:
14456 return emitDecBitfieldUint8(A0, A1, I);
14457 case PT_Sint16:
14458 return emitDecBitfieldSint16(A0, A1, I);
14459 case PT_Uint16:
14460 return emitDecBitfieldUint16(A0, A1, I);
14461 case PT_Sint32:
14462 return emitDecBitfieldSint32(A0, A1, I);
14463 case PT_Uint32:
14464 return emitDecBitfieldUint32(A0, A1, I);
14465 case PT_Sint64:
14466 return emitDecBitfieldSint64(A0, A1, I);
14467 case PT_Uint64:
14468 return emitDecBitfieldUint64(A0, A1, I);
14469 case PT_IntAP:
14470 return emitDecBitfieldIntAP(A0, A1, I);
14471 case PT_IntAPS:
14472 return emitDecBitfieldIntAPS(A0, A1, I);
14473 case PT_Bool:
14474 return emitDecBitfieldBool(A0, A1, I);
14475 case PT_FixedPoint:
14476 return emitDecBitfieldFixedPoint(A0, A1, I);
14477 default: llvm_unreachable("invalid type: emitDecBitfield");
14478 }
14479 llvm_unreachable("invalid enum value");
14480}
14481#endif
14482#ifdef GET_LINK_IMPL
14483bool ByteCodeEmitter::emitDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
14484 return emitOp<bool, uint32_t>(OP_DecBitfieldSint8, A0, A1, L);
14485}
14486bool ByteCodeEmitter::emitDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
14487 return emitOp<bool, uint32_t>(OP_DecBitfieldUint8, A0, A1, L);
14488}
14489bool ByteCodeEmitter::emitDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
14490 return emitOp<bool, uint32_t>(OP_DecBitfieldSint16, A0, A1, L);
14491}
14492bool ByteCodeEmitter::emitDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
14493 return emitOp<bool, uint32_t>(OP_DecBitfieldUint16, A0, A1, L);
14494}
14495bool ByteCodeEmitter::emitDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
14496 return emitOp<bool, uint32_t>(OP_DecBitfieldSint32, A0, A1, L);
14497}
14498bool ByteCodeEmitter::emitDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
14499 return emitOp<bool, uint32_t>(OP_DecBitfieldUint32, A0, A1, L);
14500}
14501bool ByteCodeEmitter::emitDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
14502 return emitOp<bool, uint32_t>(OP_DecBitfieldSint64, A0, A1, L);
14503}
14504bool ByteCodeEmitter::emitDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
14505 return emitOp<bool, uint32_t>(OP_DecBitfieldUint64, A0, A1, L);
14506}
14507bool ByteCodeEmitter::emitDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
14508 return emitOp<bool, uint32_t>(OP_DecBitfieldIntAP, A0, A1, L);
14509}
14510bool ByteCodeEmitter::emitDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
14511 return emitOp<bool, uint32_t>(OP_DecBitfieldIntAPS, A0, A1, L);
14512}
14513bool ByteCodeEmitter::emitDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
14514 return emitOp<bool, uint32_t>(OP_DecBitfieldBool, A0, A1, L);
14515}
14516bool ByteCodeEmitter::emitDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
14517 return emitOp<bool, uint32_t>(OP_DecBitfieldFixedPoint, A0, A1, L);
14518}
14519#endif
14520#ifdef GET_EVAL_IMPL
14521bool EvalEmitter::emitDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
14522 if (!isActive()) return true;
14523 CurrentSource = L;
14524 return DecBitfield<PT_Sint8>(S, CodePtr(), A0, A1);
14525}
14526bool EvalEmitter::emitDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
14527 if (!isActive()) return true;
14528 CurrentSource = L;
14529 return DecBitfield<PT_Uint8>(S, CodePtr(), A0, A1);
14530}
14531bool EvalEmitter::emitDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
14532 if (!isActive()) return true;
14533 CurrentSource = L;
14534 return DecBitfield<PT_Sint16>(S, CodePtr(), A0, A1);
14535}
14536bool EvalEmitter::emitDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
14537 if (!isActive()) return true;
14538 CurrentSource = L;
14539 return DecBitfield<PT_Uint16>(S, CodePtr(), A0, A1);
14540}
14541bool EvalEmitter::emitDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
14542 if (!isActive()) return true;
14543 CurrentSource = L;
14544 return DecBitfield<PT_Sint32>(S, CodePtr(), A0, A1);
14545}
14546bool EvalEmitter::emitDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
14547 if (!isActive()) return true;
14548 CurrentSource = L;
14549 return DecBitfield<PT_Uint32>(S, CodePtr(), A0, A1);
14550}
14551bool EvalEmitter::emitDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
14552 if (!isActive()) return true;
14553 CurrentSource = L;
14554 return DecBitfield<PT_Sint64>(S, CodePtr(), A0, A1);
14555}
14556bool EvalEmitter::emitDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
14557 if (!isActive()) return true;
14558 CurrentSource = L;
14559 return DecBitfield<PT_Uint64>(S, CodePtr(), A0, A1);
14560}
14561bool EvalEmitter::emitDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
14562 if (!isActive()) return true;
14563 CurrentSource = L;
14564 return DecBitfield<PT_IntAP>(S, CodePtr(), A0, A1);
14565}
14566bool EvalEmitter::emitDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
14567 if (!isActive()) return true;
14568 CurrentSource = L;
14569 return DecBitfield<PT_IntAPS>(S, CodePtr(), A0, A1);
14570}
14571bool EvalEmitter::emitDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
14572 if (!isActive()) return true;
14573 CurrentSource = L;
14574 return DecBitfield<PT_Bool>(S, CodePtr(), A0, A1);
14575}
14576bool EvalEmitter::emitDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
14577 if (!isActive()) return true;
14578 CurrentSource = L;
14579 return DecBitfield<PT_FixedPoint>(S, CodePtr(), A0, A1);
14580}
14581#endif
14582#ifdef GET_OPCODE_NAMES
14583OP_DecPopSint8,
14584OP_DecPopUint8,
14585OP_DecPopSint16,
14586OP_DecPopUint16,
14587OP_DecPopSint32,
14588OP_DecPopUint32,
14589OP_DecPopSint64,
14590OP_DecPopUint64,
14591OP_DecPopIntAP,
14592OP_DecPopIntAPS,
14593OP_DecPopBool,
14594OP_DecPopFixedPoint,
14595#endif
14596#ifdef GET_INTERPFN_LIST
14597&Interp_DecPopSint8,
14598&Interp_DecPopUint8,
14599&Interp_DecPopSint16,
14600&Interp_DecPopUint16,
14601&Interp_DecPopSint32,
14602&Interp_DecPopUint32,
14603&Interp_DecPopSint64,
14604&Interp_DecPopUint64,
14605&Interp_DecPopIntAP,
14606&Interp_DecPopIntAPS,
14607&Interp_DecPopBool,
14608&Interp_DecPopFixedPoint,
14609#endif
14610#ifdef GET_INTERPFN_DISPATCHERS
14611PRESERVE_NONE
14612static bool Interp_DecPopSint8(InterpState &S) {
14613 {
14614 CodePtr OpPC = S.PC;
14615 const auto V0 = ReadArg<bool>(S, S.PC);
14616 if (!DecPop<PT_Sint8>(S, OpPC, V0)) return false;
14617 }
14618#if USE_TAILCALLS
14619 MUSTTAIL return InterpNext(S);
14620#else
14621 return true;
14622#endif
14623}
14624PRESERVE_NONE
14625static bool Interp_DecPopUint8(InterpState &S) {
14626 {
14627 CodePtr OpPC = S.PC;
14628 const auto V0 = ReadArg<bool>(S, S.PC);
14629 if (!DecPop<PT_Uint8>(S, OpPC, V0)) return false;
14630 }
14631#if USE_TAILCALLS
14632 MUSTTAIL return InterpNext(S);
14633#else
14634 return true;
14635#endif
14636}
14637PRESERVE_NONE
14638static bool Interp_DecPopSint16(InterpState &S) {
14639 {
14640 CodePtr OpPC = S.PC;
14641 const auto V0 = ReadArg<bool>(S, S.PC);
14642 if (!DecPop<PT_Sint16>(S, OpPC, V0)) return false;
14643 }
14644#if USE_TAILCALLS
14645 MUSTTAIL return InterpNext(S);
14646#else
14647 return true;
14648#endif
14649}
14650PRESERVE_NONE
14651static bool Interp_DecPopUint16(InterpState &S) {
14652 {
14653 CodePtr OpPC = S.PC;
14654 const auto V0 = ReadArg<bool>(S, S.PC);
14655 if (!DecPop<PT_Uint16>(S, OpPC, V0)) return false;
14656 }
14657#if USE_TAILCALLS
14658 MUSTTAIL return InterpNext(S);
14659#else
14660 return true;
14661#endif
14662}
14663PRESERVE_NONE
14664static bool Interp_DecPopSint32(InterpState &S) {
14665 {
14666 CodePtr OpPC = S.PC;
14667 const auto V0 = ReadArg<bool>(S, S.PC);
14668 if (!DecPop<PT_Sint32>(S, OpPC, V0)) return false;
14669 }
14670#if USE_TAILCALLS
14671 MUSTTAIL return InterpNext(S);
14672#else
14673 return true;
14674#endif
14675}
14676PRESERVE_NONE
14677static bool Interp_DecPopUint32(InterpState &S) {
14678 {
14679 CodePtr OpPC = S.PC;
14680 const auto V0 = ReadArg<bool>(S, S.PC);
14681 if (!DecPop<PT_Uint32>(S, OpPC, V0)) return false;
14682 }
14683#if USE_TAILCALLS
14684 MUSTTAIL return InterpNext(S);
14685#else
14686 return true;
14687#endif
14688}
14689PRESERVE_NONE
14690static bool Interp_DecPopSint64(InterpState &S) {
14691 {
14692 CodePtr OpPC = S.PC;
14693 const auto V0 = ReadArg<bool>(S, S.PC);
14694 if (!DecPop<PT_Sint64>(S, OpPC, V0)) return false;
14695 }
14696#if USE_TAILCALLS
14697 MUSTTAIL return InterpNext(S);
14698#else
14699 return true;
14700#endif
14701}
14702PRESERVE_NONE
14703static bool Interp_DecPopUint64(InterpState &S) {
14704 {
14705 CodePtr OpPC = S.PC;
14706 const auto V0 = ReadArg<bool>(S, S.PC);
14707 if (!DecPop<PT_Uint64>(S, OpPC, V0)) return false;
14708 }
14709#if USE_TAILCALLS
14710 MUSTTAIL return InterpNext(S);
14711#else
14712 return true;
14713#endif
14714}
14715PRESERVE_NONE
14716static bool Interp_DecPopIntAP(InterpState &S) {
14717 {
14718 CodePtr OpPC = S.PC;
14719 const auto V0 = ReadArg<bool>(S, S.PC);
14720 if (!DecPop<PT_IntAP>(S, OpPC, V0)) return false;
14721 }
14722#if USE_TAILCALLS
14723 MUSTTAIL return InterpNext(S);
14724#else
14725 return true;
14726#endif
14727}
14728PRESERVE_NONE
14729static bool Interp_DecPopIntAPS(InterpState &S) {
14730 {
14731 CodePtr OpPC = S.PC;
14732 const auto V0 = ReadArg<bool>(S, S.PC);
14733 if (!DecPop<PT_IntAPS>(S, OpPC, V0)) return false;
14734 }
14735#if USE_TAILCALLS
14736 MUSTTAIL return InterpNext(S);
14737#else
14738 return true;
14739#endif
14740}
14741PRESERVE_NONE
14742static bool Interp_DecPopBool(InterpState &S) {
14743 {
14744 CodePtr OpPC = S.PC;
14745 const auto V0 = ReadArg<bool>(S, S.PC);
14746 if (!DecPop<PT_Bool>(S, OpPC, V0)) return false;
14747 }
14748#if USE_TAILCALLS
14749 MUSTTAIL return InterpNext(S);
14750#else
14751 return true;
14752#endif
14753}
14754PRESERVE_NONE
14755static bool Interp_DecPopFixedPoint(InterpState &S) {
14756 {
14757 CodePtr OpPC = S.PC;
14758 const auto V0 = ReadArg<bool>(S, S.PC);
14759 if (!DecPop<PT_FixedPoint>(S, OpPC, V0)) return false;
14760 }
14761#if USE_TAILCALLS
14762 MUSTTAIL return InterpNext(S);
14763#else
14764 return true;
14765#endif
14766}
14767#endif
14768#ifdef GET_DISASM
14769case OP_DecPopSint8:
14770 Text.Op = PrintName("DecPopSint8");
14771 Text.Args.push_back(printArg<bool>(PC));
14772 break;
14773case OP_DecPopUint8:
14774 Text.Op = PrintName("DecPopUint8");
14775 Text.Args.push_back(printArg<bool>(PC));
14776 break;
14777case OP_DecPopSint16:
14778 Text.Op = PrintName("DecPopSint16");
14779 Text.Args.push_back(printArg<bool>(PC));
14780 break;
14781case OP_DecPopUint16:
14782 Text.Op = PrintName("DecPopUint16");
14783 Text.Args.push_back(printArg<bool>(PC));
14784 break;
14785case OP_DecPopSint32:
14786 Text.Op = PrintName("DecPopSint32");
14787 Text.Args.push_back(printArg<bool>(PC));
14788 break;
14789case OP_DecPopUint32:
14790 Text.Op = PrintName("DecPopUint32");
14791 Text.Args.push_back(printArg<bool>(PC));
14792 break;
14793case OP_DecPopSint64:
14794 Text.Op = PrintName("DecPopSint64");
14795 Text.Args.push_back(printArg<bool>(PC));
14796 break;
14797case OP_DecPopUint64:
14798 Text.Op = PrintName("DecPopUint64");
14799 Text.Args.push_back(printArg<bool>(PC));
14800 break;
14801case OP_DecPopIntAP:
14802 Text.Op = PrintName("DecPopIntAP");
14803 Text.Args.push_back(printArg<bool>(PC));
14804 break;
14805case OP_DecPopIntAPS:
14806 Text.Op = PrintName("DecPopIntAPS");
14807 Text.Args.push_back(printArg<bool>(PC));
14808 break;
14809case OP_DecPopBool:
14810 Text.Op = PrintName("DecPopBool");
14811 Text.Args.push_back(printArg<bool>(PC));
14812 break;
14813case OP_DecPopFixedPoint:
14814 Text.Op = PrintName("DecPopFixedPoint");
14815 Text.Args.push_back(printArg<bool>(PC));
14816 break;
14817#endif
14818#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14819bool emitDecPopSint8( bool , SourceInfo);
14820bool emitDecPopUint8( bool , SourceInfo);
14821bool emitDecPopSint16( bool , SourceInfo);
14822bool emitDecPopUint16( bool , SourceInfo);
14823bool emitDecPopSint32( bool , SourceInfo);
14824bool emitDecPopUint32( bool , SourceInfo);
14825bool emitDecPopSint64( bool , SourceInfo);
14826bool emitDecPopUint64( bool , SourceInfo);
14827bool emitDecPopIntAP( bool , SourceInfo);
14828bool emitDecPopIntAPS( bool , SourceInfo);
14829bool emitDecPopBool( bool , SourceInfo);
14830bool emitDecPopFixedPoint( bool , SourceInfo);
14831#endif
14832#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14833[[nodiscard]] bool emitDecPop(PrimType, bool, SourceInfo I);
14834#endif
14835#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
14836bool
14837#if defined(GET_EVAL_IMPL)
14838EvalEmitter
14839#else
14840ByteCodeEmitter
14841#endif
14842::emitDecPop(PrimType T0, bool A0, SourceInfo I) {
14843 switch (T0) {
14844 case PT_Sint8:
14845 return emitDecPopSint8(A0, I);
14846 case PT_Uint8:
14847 return emitDecPopUint8(A0, I);
14848 case PT_Sint16:
14849 return emitDecPopSint16(A0, I);
14850 case PT_Uint16:
14851 return emitDecPopUint16(A0, I);
14852 case PT_Sint32:
14853 return emitDecPopSint32(A0, I);
14854 case PT_Uint32:
14855 return emitDecPopUint32(A0, I);
14856 case PT_Sint64:
14857 return emitDecPopSint64(A0, I);
14858 case PT_Uint64:
14859 return emitDecPopUint64(A0, I);
14860 case PT_IntAP:
14861 return emitDecPopIntAP(A0, I);
14862 case PT_IntAPS:
14863 return emitDecPopIntAPS(A0, I);
14864 case PT_Bool:
14865 return emitDecPopBool(A0, I);
14866 case PT_FixedPoint:
14867 return emitDecPopFixedPoint(A0, I);
14868 default: llvm_unreachable("invalid type: emitDecPop");
14869 }
14870 llvm_unreachable("invalid enum value");
14871}
14872#endif
14873#ifdef GET_LINK_IMPL
14874bool ByteCodeEmitter::emitDecPopSint8( bool A0, SourceInfo L) {
14875 return emitOp<bool>(OP_DecPopSint8, A0, L);
14876}
14877bool ByteCodeEmitter::emitDecPopUint8( bool A0, SourceInfo L) {
14878 return emitOp<bool>(OP_DecPopUint8, A0, L);
14879}
14880bool ByteCodeEmitter::emitDecPopSint16( bool A0, SourceInfo L) {
14881 return emitOp<bool>(OP_DecPopSint16, A0, L);
14882}
14883bool ByteCodeEmitter::emitDecPopUint16( bool A0, SourceInfo L) {
14884 return emitOp<bool>(OP_DecPopUint16, A0, L);
14885}
14886bool ByteCodeEmitter::emitDecPopSint32( bool A0, SourceInfo L) {
14887 return emitOp<bool>(OP_DecPopSint32, A0, L);
14888}
14889bool ByteCodeEmitter::emitDecPopUint32( bool A0, SourceInfo L) {
14890 return emitOp<bool>(OP_DecPopUint32, A0, L);
14891}
14892bool ByteCodeEmitter::emitDecPopSint64( bool A0, SourceInfo L) {
14893 return emitOp<bool>(OP_DecPopSint64, A0, L);
14894}
14895bool ByteCodeEmitter::emitDecPopUint64( bool A0, SourceInfo L) {
14896 return emitOp<bool>(OP_DecPopUint64, A0, L);
14897}
14898bool ByteCodeEmitter::emitDecPopIntAP( bool A0, SourceInfo L) {
14899 return emitOp<bool>(OP_DecPopIntAP, A0, L);
14900}
14901bool ByteCodeEmitter::emitDecPopIntAPS( bool A0, SourceInfo L) {
14902 return emitOp<bool>(OP_DecPopIntAPS, A0, L);
14903}
14904bool ByteCodeEmitter::emitDecPopBool( bool A0, SourceInfo L) {
14905 return emitOp<bool>(OP_DecPopBool, A0, L);
14906}
14907bool ByteCodeEmitter::emitDecPopFixedPoint( bool A0, SourceInfo L) {
14908 return emitOp<bool>(OP_DecPopFixedPoint, A0, L);
14909}
14910#endif
14911#ifdef GET_EVAL_IMPL
14912bool EvalEmitter::emitDecPopSint8( bool A0, SourceInfo L) {
14913 if (!isActive()) return true;
14914 CurrentSource = L;
14915 return DecPop<PT_Sint8>(S, CodePtr(), A0);
14916}
14917bool EvalEmitter::emitDecPopUint8( bool A0, SourceInfo L) {
14918 if (!isActive()) return true;
14919 CurrentSource = L;
14920 return DecPop<PT_Uint8>(S, CodePtr(), A0);
14921}
14922bool EvalEmitter::emitDecPopSint16( bool A0, SourceInfo L) {
14923 if (!isActive()) return true;
14924 CurrentSource = L;
14925 return DecPop<PT_Sint16>(S, CodePtr(), A0);
14926}
14927bool EvalEmitter::emitDecPopUint16( bool A0, SourceInfo L) {
14928 if (!isActive()) return true;
14929 CurrentSource = L;
14930 return DecPop<PT_Uint16>(S, CodePtr(), A0);
14931}
14932bool EvalEmitter::emitDecPopSint32( bool A0, SourceInfo L) {
14933 if (!isActive()) return true;
14934 CurrentSource = L;
14935 return DecPop<PT_Sint32>(S, CodePtr(), A0);
14936}
14937bool EvalEmitter::emitDecPopUint32( bool A0, SourceInfo L) {
14938 if (!isActive()) return true;
14939 CurrentSource = L;
14940 return DecPop<PT_Uint32>(S, CodePtr(), A0);
14941}
14942bool EvalEmitter::emitDecPopSint64( bool A0, SourceInfo L) {
14943 if (!isActive()) return true;
14944 CurrentSource = L;
14945 return DecPop<PT_Sint64>(S, CodePtr(), A0);
14946}
14947bool EvalEmitter::emitDecPopUint64( bool A0, SourceInfo L) {
14948 if (!isActive()) return true;
14949 CurrentSource = L;
14950 return DecPop<PT_Uint64>(S, CodePtr(), A0);
14951}
14952bool EvalEmitter::emitDecPopIntAP( bool A0, SourceInfo L) {
14953 if (!isActive()) return true;
14954 CurrentSource = L;
14955 return DecPop<PT_IntAP>(S, CodePtr(), A0);
14956}
14957bool EvalEmitter::emitDecPopIntAPS( bool A0, SourceInfo L) {
14958 if (!isActive()) return true;
14959 CurrentSource = L;
14960 return DecPop<PT_IntAPS>(S, CodePtr(), A0);
14961}
14962bool EvalEmitter::emitDecPopBool( bool A0, SourceInfo L) {
14963 if (!isActive()) return true;
14964 CurrentSource = L;
14965 return DecPop<PT_Bool>(S, CodePtr(), A0);
14966}
14967bool EvalEmitter::emitDecPopFixedPoint( bool A0, SourceInfo L) {
14968 if (!isActive()) return true;
14969 CurrentSource = L;
14970 return DecPop<PT_FixedPoint>(S, CodePtr(), A0);
14971}
14972#endif
14973#ifdef GET_OPCODE_NAMES
14974OP_DecPopBitfieldSint8,
14975OP_DecPopBitfieldUint8,
14976OP_DecPopBitfieldSint16,
14977OP_DecPopBitfieldUint16,
14978OP_DecPopBitfieldSint32,
14979OP_DecPopBitfieldUint32,
14980OP_DecPopBitfieldSint64,
14981OP_DecPopBitfieldUint64,
14982OP_DecPopBitfieldIntAP,
14983OP_DecPopBitfieldIntAPS,
14984OP_DecPopBitfieldBool,
14985OP_DecPopBitfieldFixedPoint,
14986#endif
14987#ifdef GET_INTERPFN_LIST
14988&Interp_DecPopBitfieldSint8,
14989&Interp_DecPopBitfieldUint8,
14990&Interp_DecPopBitfieldSint16,
14991&Interp_DecPopBitfieldUint16,
14992&Interp_DecPopBitfieldSint32,
14993&Interp_DecPopBitfieldUint32,
14994&Interp_DecPopBitfieldSint64,
14995&Interp_DecPopBitfieldUint64,
14996&Interp_DecPopBitfieldIntAP,
14997&Interp_DecPopBitfieldIntAPS,
14998&Interp_DecPopBitfieldBool,
14999&Interp_DecPopBitfieldFixedPoint,
15000#endif
15001#ifdef GET_INTERPFN_DISPATCHERS
15002PRESERVE_NONE
15003static bool Interp_DecPopBitfieldSint8(InterpState &S) {
15004 {
15005 CodePtr OpPC = S.PC;
15006 const auto V0 = ReadArg<bool>(S, S.PC);
15007 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15008 if (!DecPopBitfield<PT_Sint8>(S, OpPC, V0, V1)) return false;
15009 }
15010#if USE_TAILCALLS
15011 MUSTTAIL return InterpNext(S);
15012#else
15013 return true;
15014#endif
15015}
15016PRESERVE_NONE
15017static bool Interp_DecPopBitfieldUint8(InterpState &S) {
15018 {
15019 CodePtr OpPC = S.PC;
15020 const auto V0 = ReadArg<bool>(S, S.PC);
15021 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15022 if (!DecPopBitfield<PT_Uint8>(S, OpPC, V0, V1)) return false;
15023 }
15024#if USE_TAILCALLS
15025 MUSTTAIL return InterpNext(S);
15026#else
15027 return true;
15028#endif
15029}
15030PRESERVE_NONE
15031static bool Interp_DecPopBitfieldSint16(InterpState &S) {
15032 {
15033 CodePtr OpPC = S.PC;
15034 const auto V0 = ReadArg<bool>(S, S.PC);
15035 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15036 if (!DecPopBitfield<PT_Sint16>(S, OpPC, V0, V1)) return false;
15037 }
15038#if USE_TAILCALLS
15039 MUSTTAIL return InterpNext(S);
15040#else
15041 return true;
15042#endif
15043}
15044PRESERVE_NONE
15045static bool Interp_DecPopBitfieldUint16(InterpState &S) {
15046 {
15047 CodePtr OpPC = S.PC;
15048 const auto V0 = ReadArg<bool>(S, S.PC);
15049 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15050 if (!DecPopBitfield<PT_Uint16>(S, OpPC, V0, V1)) return false;
15051 }
15052#if USE_TAILCALLS
15053 MUSTTAIL return InterpNext(S);
15054#else
15055 return true;
15056#endif
15057}
15058PRESERVE_NONE
15059static bool Interp_DecPopBitfieldSint32(InterpState &S) {
15060 {
15061 CodePtr OpPC = S.PC;
15062 const auto V0 = ReadArg<bool>(S, S.PC);
15063 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15064 if (!DecPopBitfield<PT_Sint32>(S, OpPC, V0, V1)) return false;
15065 }
15066#if USE_TAILCALLS
15067 MUSTTAIL return InterpNext(S);
15068#else
15069 return true;
15070#endif
15071}
15072PRESERVE_NONE
15073static bool Interp_DecPopBitfieldUint32(InterpState &S) {
15074 {
15075 CodePtr OpPC = S.PC;
15076 const auto V0 = ReadArg<bool>(S, S.PC);
15077 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15078 if (!DecPopBitfield<PT_Uint32>(S, OpPC, V0, V1)) return false;
15079 }
15080#if USE_TAILCALLS
15081 MUSTTAIL return InterpNext(S);
15082#else
15083 return true;
15084#endif
15085}
15086PRESERVE_NONE
15087static bool Interp_DecPopBitfieldSint64(InterpState &S) {
15088 {
15089 CodePtr OpPC = S.PC;
15090 const auto V0 = ReadArg<bool>(S, S.PC);
15091 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15092 if (!DecPopBitfield<PT_Sint64>(S, OpPC, V0, V1)) return false;
15093 }
15094#if USE_TAILCALLS
15095 MUSTTAIL return InterpNext(S);
15096#else
15097 return true;
15098#endif
15099}
15100PRESERVE_NONE
15101static bool Interp_DecPopBitfieldUint64(InterpState &S) {
15102 {
15103 CodePtr OpPC = S.PC;
15104 const auto V0 = ReadArg<bool>(S, S.PC);
15105 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15106 if (!DecPopBitfield<PT_Uint64>(S, OpPC, V0, V1)) return false;
15107 }
15108#if USE_TAILCALLS
15109 MUSTTAIL return InterpNext(S);
15110#else
15111 return true;
15112#endif
15113}
15114PRESERVE_NONE
15115static bool Interp_DecPopBitfieldIntAP(InterpState &S) {
15116 {
15117 CodePtr OpPC = S.PC;
15118 const auto V0 = ReadArg<bool>(S, S.PC);
15119 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15120 if (!DecPopBitfield<PT_IntAP>(S, OpPC, V0, V1)) return false;
15121 }
15122#if USE_TAILCALLS
15123 MUSTTAIL return InterpNext(S);
15124#else
15125 return true;
15126#endif
15127}
15128PRESERVE_NONE
15129static bool Interp_DecPopBitfieldIntAPS(InterpState &S) {
15130 {
15131 CodePtr OpPC = S.PC;
15132 const auto V0 = ReadArg<bool>(S, S.PC);
15133 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15134 if (!DecPopBitfield<PT_IntAPS>(S, OpPC, V0, V1)) return false;
15135 }
15136#if USE_TAILCALLS
15137 MUSTTAIL return InterpNext(S);
15138#else
15139 return true;
15140#endif
15141}
15142PRESERVE_NONE
15143static bool Interp_DecPopBitfieldBool(InterpState &S) {
15144 {
15145 CodePtr OpPC = S.PC;
15146 const auto V0 = ReadArg<bool>(S, S.PC);
15147 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15148 if (!DecPopBitfield<PT_Bool>(S, OpPC, V0, V1)) return false;
15149 }
15150#if USE_TAILCALLS
15151 MUSTTAIL return InterpNext(S);
15152#else
15153 return true;
15154#endif
15155}
15156PRESERVE_NONE
15157static bool Interp_DecPopBitfieldFixedPoint(InterpState &S) {
15158 {
15159 CodePtr OpPC = S.PC;
15160 const auto V0 = ReadArg<bool>(S, S.PC);
15161 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15162 if (!DecPopBitfield<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
15163 }
15164#if USE_TAILCALLS
15165 MUSTTAIL return InterpNext(S);
15166#else
15167 return true;
15168#endif
15169}
15170#endif
15171#ifdef GET_DISASM
15172case OP_DecPopBitfieldSint8:
15173 Text.Op = PrintName("DecPopBitfieldSint8");
15174 Text.Args.push_back(printArg<bool>(PC));
15175 Text.Args.push_back(printArg<uint32_t>(PC));
15176 break;
15177case OP_DecPopBitfieldUint8:
15178 Text.Op = PrintName("DecPopBitfieldUint8");
15179 Text.Args.push_back(printArg<bool>(PC));
15180 Text.Args.push_back(printArg<uint32_t>(PC));
15181 break;
15182case OP_DecPopBitfieldSint16:
15183 Text.Op = PrintName("DecPopBitfieldSint16");
15184 Text.Args.push_back(printArg<bool>(PC));
15185 Text.Args.push_back(printArg<uint32_t>(PC));
15186 break;
15187case OP_DecPopBitfieldUint16:
15188 Text.Op = PrintName("DecPopBitfieldUint16");
15189 Text.Args.push_back(printArg<bool>(PC));
15190 Text.Args.push_back(printArg<uint32_t>(PC));
15191 break;
15192case OP_DecPopBitfieldSint32:
15193 Text.Op = PrintName("DecPopBitfieldSint32");
15194 Text.Args.push_back(printArg<bool>(PC));
15195 Text.Args.push_back(printArg<uint32_t>(PC));
15196 break;
15197case OP_DecPopBitfieldUint32:
15198 Text.Op = PrintName("DecPopBitfieldUint32");
15199 Text.Args.push_back(printArg<bool>(PC));
15200 Text.Args.push_back(printArg<uint32_t>(PC));
15201 break;
15202case OP_DecPopBitfieldSint64:
15203 Text.Op = PrintName("DecPopBitfieldSint64");
15204 Text.Args.push_back(printArg<bool>(PC));
15205 Text.Args.push_back(printArg<uint32_t>(PC));
15206 break;
15207case OP_DecPopBitfieldUint64:
15208 Text.Op = PrintName("DecPopBitfieldUint64");
15209 Text.Args.push_back(printArg<bool>(PC));
15210 Text.Args.push_back(printArg<uint32_t>(PC));
15211 break;
15212case OP_DecPopBitfieldIntAP:
15213 Text.Op = PrintName("DecPopBitfieldIntAP");
15214 Text.Args.push_back(printArg<bool>(PC));
15215 Text.Args.push_back(printArg<uint32_t>(PC));
15216 break;
15217case OP_DecPopBitfieldIntAPS:
15218 Text.Op = PrintName("DecPopBitfieldIntAPS");
15219 Text.Args.push_back(printArg<bool>(PC));
15220 Text.Args.push_back(printArg<uint32_t>(PC));
15221 break;
15222case OP_DecPopBitfieldBool:
15223 Text.Op = PrintName("DecPopBitfieldBool");
15224 Text.Args.push_back(printArg<bool>(PC));
15225 Text.Args.push_back(printArg<uint32_t>(PC));
15226 break;
15227case OP_DecPopBitfieldFixedPoint:
15228 Text.Op = PrintName("DecPopBitfieldFixedPoint");
15229 Text.Args.push_back(printArg<bool>(PC));
15230 Text.Args.push_back(printArg<uint32_t>(PC));
15231 break;
15232#endif
15233#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15234bool emitDecPopBitfieldSint8( bool , uint32_t , SourceInfo);
15235bool emitDecPopBitfieldUint8( bool , uint32_t , SourceInfo);
15236bool emitDecPopBitfieldSint16( bool , uint32_t , SourceInfo);
15237bool emitDecPopBitfieldUint16( bool , uint32_t , SourceInfo);
15238bool emitDecPopBitfieldSint32( bool , uint32_t , SourceInfo);
15239bool emitDecPopBitfieldUint32( bool , uint32_t , SourceInfo);
15240bool emitDecPopBitfieldSint64( bool , uint32_t , SourceInfo);
15241bool emitDecPopBitfieldUint64( bool , uint32_t , SourceInfo);
15242bool emitDecPopBitfieldIntAP( bool , uint32_t , SourceInfo);
15243bool emitDecPopBitfieldIntAPS( bool , uint32_t , SourceInfo);
15244bool emitDecPopBitfieldBool( bool , uint32_t , SourceInfo);
15245bool emitDecPopBitfieldFixedPoint( bool , uint32_t , SourceInfo);
15246#endif
15247#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15248[[nodiscard]] bool emitDecPopBitfield(PrimType, bool, uint32_t, SourceInfo I);
15249#endif
15250#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
15251bool
15252#if defined(GET_EVAL_IMPL)
15253EvalEmitter
15254#else
15255ByteCodeEmitter
15256#endif
15257::emitDecPopBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
15258 switch (T0) {
15259 case PT_Sint8:
15260 return emitDecPopBitfieldSint8(A0, A1, I);
15261 case PT_Uint8:
15262 return emitDecPopBitfieldUint8(A0, A1, I);
15263 case PT_Sint16:
15264 return emitDecPopBitfieldSint16(A0, A1, I);
15265 case PT_Uint16:
15266 return emitDecPopBitfieldUint16(A0, A1, I);
15267 case PT_Sint32:
15268 return emitDecPopBitfieldSint32(A0, A1, I);
15269 case PT_Uint32:
15270 return emitDecPopBitfieldUint32(A0, A1, I);
15271 case PT_Sint64:
15272 return emitDecPopBitfieldSint64(A0, A1, I);
15273 case PT_Uint64:
15274 return emitDecPopBitfieldUint64(A0, A1, I);
15275 case PT_IntAP:
15276 return emitDecPopBitfieldIntAP(A0, A1, I);
15277 case PT_IntAPS:
15278 return emitDecPopBitfieldIntAPS(A0, A1, I);
15279 case PT_Bool:
15280 return emitDecPopBitfieldBool(A0, A1, I);
15281 case PT_FixedPoint:
15282 return emitDecPopBitfieldFixedPoint(A0, A1, I);
15283 default: llvm_unreachable("invalid type: emitDecPopBitfield");
15284 }
15285 llvm_unreachable("invalid enum value");
15286}
15287#endif
15288#ifdef GET_LINK_IMPL
15289bool ByteCodeEmitter::emitDecPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
15290 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint8, A0, A1, L);
15291}
15292bool ByteCodeEmitter::emitDecPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
15293 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint8, A0, A1, L);
15294}
15295bool ByteCodeEmitter::emitDecPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
15296 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint16, A0, A1, L);
15297}
15298bool ByteCodeEmitter::emitDecPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
15299 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint16, A0, A1, L);
15300}
15301bool ByteCodeEmitter::emitDecPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
15302 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint32, A0, A1, L);
15303}
15304bool ByteCodeEmitter::emitDecPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
15305 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint32, A0, A1, L);
15306}
15307bool ByteCodeEmitter::emitDecPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
15308 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint64, A0, A1, L);
15309}
15310bool ByteCodeEmitter::emitDecPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
15311 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint64, A0, A1, L);
15312}
15313bool ByteCodeEmitter::emitDecPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
15314 return emitOp<bool, uint32_t>(OP_DecPopBitfieldIntAP, A0, A1, L);
15315}
15316bool ByteCodeEmitter::emitDecPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
15317 return emitOp<bool, uint32_t>(OP_DecPopBitfieldIntAPS, A0, A1, L);
15318}
15319bool ByteCodeEmitter::emitDecPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
15320 return emitOp<bool, uint32_t>(OP_DecPopBitfieldBool, A0, A1, L);
15321}
15322bool ByteCodeEmitter::emitDecPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
15323 return emitOp<bool, uint32_t>(OP_DecPopBitfieldFixedPoint, A0, A1, L);
15324}
15325#endif
15326#ifdef GET_EVAL_IMPL
15327bool EvalEmitter::emitDecPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
15328 if (!isActive()) return true;
15329 CurrentSource = L;
15330 return DecPopBitfield<PT_Sint8>(S, CodePtr(), A0, A1);
15331}
15332bool EvalEmitter::emitDecPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
15333 if (!isActive()) return true;
15334 CurrentSource = L;
15335 return DecPopBitfield<PT_Uint8>(S, CodePtr(), A0, A1);
15336}
15337bool EvalEmitter::emitDecPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
15338 if (!isActive()) return true;
15339 CurrentSource = L;
15340 return DecPopBitfield<PT_Sint16>(S, CodePtr(), A0, A1);
15341}
15342bool EvalEmitter::emitDecPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
15343 if (!isActive()) return true;
15344 CurrentSource = L;
15345 return DecPopBitfield<PT_Uint16>(S, CodePtr(), A0, A1);
15346}
15347bool EvalEmitter::emitDecPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
15348 if (!isActive()) return true;
15349 CurrentSource = L;
15350 return DecPopBitfield<PT_Sint32>(S, CodePtr(), A0, A1);
15351}
15352bool EvalEmitter::emitDecPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
15353 if (!isActive()) return true;
15354 CurrentSource = L;
15355 return DecPopBitfield<PT_Uint32>(S, CodePtr(), A0, A1);
15356}
15357bool EvalEmitter::emitDecPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
15358 if (!isActive()) return true;
15359 CurrentSource = L;
15360 return DecPopBitfield<PT_Sint64>(S, CodePtr(), A0, A1);
15361}
15362bool EvalEmitter::emitDecPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
15363 if (!isActive()) return true;
15364 CurrentSource = L;
15365 return DecPopBitfield<PT_Uint64>(S, CodePtr(), A0, A1);
15366}
15367bool EvalEmitter::emitDecPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
15368 if (!isActive()) return true;
15369 CurrentSource = L;
15370 return DecPopBitfield<PT_IntAP>(S, CodePtr(), A0, A1);
15371}
15372bool EvalEmitter::emitDecPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
15373 if (!isActive()) return true;
15374 CurrentSource = L;
15375 return DecPopBitfield<PT_IntAPS>(S, CodePtr(), A0, A1);
15376}
15377bool EvalEmitter::emitDecPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
15378 if (!isActive()) return true;
15379 CurrentSource = L;
15380 return DecPopBitfield<PT_Bool>(S, CodePtr(), A0, A1);
15381}
15382bool EvalEmitter::emitDecPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
15383 if (!isActive()) return true;
15384 CurrentSource = L;
15385 return DecPopBitfield<PT_FixedPoint>(S, CodePtr(), A0, A1);
15386}
15387#endif
15388#ifdef GET_OPCODE_NAMES
15389OP_DecPtr,
15390#endif
15391#ifdef GET_INTERPFN_LIST
15392&Interp_DecPtr,
15393#endif
15394#ifdef GET_INTERPFN_DISPATCHERS
15395PRESERVE_NONE
15396static bool Interp_DecPtr(InterpState &S) {
15397 if (!DecPtr(S, S.PC)) return false;
15398#if USE_TAILCALLS
15399 MUSTTAIL return InterpNext(S);
15400#else
15401 return true;
15402#endif
15403}
15404#endif
15405#ifdef GET_DISASM
15406case OP_DecPtr:
15407 Text.Op = PrintName("DecPtr");
15408 break;
15409#endif
15410#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15411bool emitDecPtr(SourceInfo);
15412#endif
15413#ifdef GET_LINK_IMPL
15414bool ByteCodeEmitter::emitDecPtr(SourceInfo L) {
15415 return emitOp<>(OP_DecPtr, L);
15416}
15417#endif
15418#ifdef GET_EVAL_IMPL
15419bool EvalEmitter::emitDecPtr(SourceInfo L) {
15420 if (!isActive()) return true;
15421 CurrentSource = L;
15422 return DecPtr(S, CodePtr());
15423}
15424#endif
15425#ifdef GET_OPCODE_NAMES
15426OP_DecayPtrPtrPtr,
15427OP_DecayPtrPtrMemberPtr,
15428OP_DecayPtrMemberPtrPtr,
15429OP_DecayPtrMemberPtrMemberPtr,
15430#endif
15431#ifdef GET_INTERPFN_LIST
15432&Interp_DecayPtrPtrPtr,
15433&Interp_DecayPtrPtrMemberPtr,
15434&Interp_DecayPtrMemberPtrPtr,
15435&Interp_DecayPtrMemberPtrMemberPtr,
15436#endif
15437#ifdef GET_INTERPFN_DISPATCHERS
15438PRESERVE_NONE
15439static bool Interp_DecayPtrPtrPtr(InterpState &S) {
15440 if (!DecayPtr<PT_Ptr, PT_Ptr>(S)) return false;
15441#if USE_TAILCALLS
15442 MUSTTAIL return InterpNext(S);
15443#else
15444 return true;
15445#endif
15446}
15447PRESERVE_NONE
15448static bool Interp_DecayPtrPtrMemberPtr(InterpState &S) {
15449 if (!DecayPtr<PT_Ptr, PT_MemberPtr>(S)) return false;
15450#if USE_TAILCALLS
15451 MUSTTAIL return InterpNext(S);
15452#else
15453 return true;
15454#endif
15455}
15456PRESERVE_NONE
15457static bool Interp_DecayPtrMemberPtrPtr(InterpState &S) {
15458 if (!DecayPtr<PT_MemberPtr, PT_Ptr>(S)) return false;
15459#if USE_TAILCALLS
15460 MUSTTAIL return InterpNext(S);
15461#else
15462 return true;
15463#endif
15464}
15465PRESERVE_NONE
15466static bool Interp_DecayPtrMemberPtrMemberPtr(InterpState &S) {
15467 if (!DecayPtr<PT_MemberPtr, PT_MemberPtr>(S)) return false;
15468#if USE_TAILCALLS
15469 MUSTTAIL return InterpNext(S);
15470#else
15471 return true;
15472#endif
15473}
15474#endif
15475#ifdef GET_DISASM
15476case OP_DecayPtrPtrPtr:
15477 Text.Op = PrintName("DecayPtrPtrPtr");
15478 break;
15479case OP_DecayPtrPtrMemberPtr:
15480 Text.Op = PrintName("DecayPtrPtrMemberPtr");
15481 break;
15482case OP_DecayPtrMemberPtrPtr:
15483 Text.Op = PrintName("DecayPtrMemberPtrPtr");
15484 break;
15485case OP_DecayPtrMemberPtrMemberPtr:
15486 Text.Op = PrintName("DecayPtrMemberPtrMemberPtr");
15487 break;
15488#endif
15489#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15490bool emitDecayPtrPtrPtr(SourceInfo);
15491bool emitDecayPtrPtrMemberPtr(SourceInfo);
15492bool emitDecayPtrMemberPtrPtr(SourceInfo);
15493bool emitDecayPtrMemberPtrMemberPtr(SourceInfo);
15494#endif
15495#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15496[[nodiscard]] bool emitDecayPtr(PrimType, PrimType, SourceInfo I);
15497#endif
15498#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
15499bool
15500#if defined(GET_EVAL_IMPL)
15501EvalEmitter
15502#else
15503ByteCodeEmitter
15504#endif
15505::emitDecayPtr(PrimType T0, PrimType T1, SourceInfo I) {
15506 switch (T0) {
15507 case PT_Ptr:
15508 switch (T1) {
15509 case PT_Ptr:
15510 return emitDecayPtrPtrPtr(I);
15511 case PT_MemberPtr:
15512 return emitDecayPtrPtrMemberPtr(I);
15513 default: llvm_unreachable("invalid type: emitDecayPtr");
15514 }
15515 llvm_unreachable("invalid enum value");
15516 case PT_MemberPtr:
15517 switch (T1) {
15518 case PT_Ptr:
15519 return emitDecayPtrMemberPtrPtr(I);
15520 case PT_MemberPtr:
15521 return emitDecayPtrMemberPtrMemberPtr(I);
15522 default: llvm_unreachable("invalid type: emitDecayPtr");
15523 }
15524 llvm_unreachable("invalid enum value");
15525 default: llvm_unreachable("invalid type: emitDecayPtr");
15526 }
15527 llvm_unreachable("invalid enum value");
15528}
15529#endif
15530#ifdef GET_LINK_IMPL
15531bool ByteCodeEmitter::emitDecayPtrPtrPtr(SourceInfo L) {
15532 return emitOp<>(OP_DecayPtrPtrPtr, L);
15533}
15534bool ByteCodeEmitter::emitDecayPtrPtrMemberPtr(SourceInfo L) {
15535 return emitOp<>(OP_DecayPtrPtrMemberPtr, L);
15536}
15537bool ByteCodeEmitter::emitDecayPtrMemberPtrPtr(SourceInfo L) {
15538 return emitOp<>(OP_DecayPtrMemberPtrPtr, L);
15539}
15540bool ByteCodeEmitter::emitDecayPtrMemberPtrMemberPtr(SourceInfo L) {
15541 return emitOp<>(OP_DecayPtrMemberPtrMemberPtr, L);
15542}
15543#endif
15544#ifdef GET_EVAL_IMPL
15545bool EvalEmitter::emitDecayPtrPtrPtr(SourceInfo L) {
15546 if (!isActive()) return true;
15547 CurrentSource = L;
15548 return DecayPtr<PT_Ptr, PT_Ptr>(S);
15549}
15550bool EvalEmitter::emitDecayPtrPtrMemberPtr(SourceInfo L) {
15551 if (!isActive()) return true;
15552 CurrentSource = L;
15553 return DecayPtr<PT_Ptr, PT_MemberPtr>(S);
15554}
15555bool EvalEmitter::emitDecayPtrMemberPtrPtr(SourceInfo L) {
15556 if (!isActive()) return true;
15557 CurrentSource = L;
15558 return DecayPtr<PT_MemberPtr, PT_Ptr>(S);
15559}
15560bool EvalEmitter::emitDecayPtrMemberPtrMemberPtr(SourceInfo L) {
15561 if (!isActive()) return true;
15562 CurrentSource = L;
15563 return DecayPtr<PT_MemberPtr, PT_MemberPtr>(S);
15564}
15565#endif
15566#ifdef GET_OPCODE_NAMES
15567OP_Decf,
15568#endif
15569#ifdef GET_INTERPFN_LIST
15570&Interp_Decf,
15571#endif
15572#ifdef GET_INTERPFN_DISPATCHERS
15573PRESERVE_NONE
15574static bool Interp_Decf(InterpState &S) {
15575 {
15576 CodePtr OpPC = S.PC;
15577 const auto V0 = ReadArg<uint32_t>(S, S.PC);
15578 if (!Decf(S, OpPC, V0)) return false;
15579 }
15580#if USE_TAILCALLS
15581 MUSTTAIL return InterpNext(S);
15582#else
15583 return true;
15584#endif
15585}
15586#endif
15587#ifdef GET_DISASM
15588case OP_Decf:
15589 Text.Op = PrintName("Decf");
15590 Text.Args.push_back(printArg<uint32_t>(PC));
15591 break;
15592#endif
15593#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15594bool emitDecf( uint32_t , SourceInfo);
15595#endif
15596#ifdef GET_LINK_IMPL
15597bool ByteCodeEmitter::emitDecf( uint32_t A0, SourceInfo L) {
15598 return emitOp<uint32_t>(OP_Decf, A0, L);
15599}
15600#endif
15601#ifdef GET_EVAL_IMPL
15602bool EvalEmitter::emitDecf( uint32_t A0, SourceInfo L) {
15603 if (!isActive()) return true;
15604 CurrentSource = L;
15605 return Decf(S, CodePtr(), A0);
15606}
15607#endif
15608#ifdef GET_OPCODE_NAMES
15609OP_DecfPop,
15610#endif
15611#ifdef GET_INTERPFN_LIST
15612&Interp_DecfPop,
15613#endif
15614#ifdef GET_INTERPFN_DISPATCHERS
15615PRESERVE_NONE
15616static bool Interp_DecfPop(InterpState &S) {
15617 {
15618 CodePtr OpPC = S.PC;
15619 const auto V0 = ReadArg<uint32_t>(S, S.PC);
15620 if (!DecfPop(S, OpPC, V0)) return false;
15621 }
15622#if USE_TAILCALLS
15623 MUSTTAIL return InterpNext(S);
15624#else
15625 return true;
15626#endif
15627}
15628#endif
15629#ifdef GET_DISASM
15630case OP_DecfPop:
15631 Text.Op = PrintName("DecfPop");
15632 Text.Args.push_back(printArg<uint32_t>(PC));
15633 break;
15634#endif
15635#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15636bool emitDecfPop( uint32_t , SourceInfo);
15637#endif
15638#ifdef GET_LINK_IMPL
15639bool ByteCodeEmitter::emitDecfPop( uint32_t A0, SourceInfo L) {
15640 return emitOp<uint32_t>(OP_DecfPop, A0, L);
15641}
15642#endif
15643#ifdef GET_EVAL_IMPL
15644bool EvalEmitter::emitDecfPop( uint32_t A0, SourceInfo L) {
15645 if (!isActive()) return true;
15646 CurrentSource = L;
15647 return DecfPop(S, CodePtr(), A0);
15648}
15649#endif
15650#ifdef GET_OPCODE_NAMES
15651OP_Destroy,
15652#endif
15653#ifdef GET_INTERPFN_LIST
15654&Interp_Destroy,
15655#endif
15656#ifdef GET_INTERPFN_DISPATCHERS
15657PRESERVE_NONE
15658static bool Interp_Destroy(InterpState &S) {
15659 {
15660 CodePtr OpPC = S.PC;
15661 const auto V0 = ReadArg<uint32_t>(S, S.PC);
15662 if (!Destroy(S, OpPC, V0)) return false;
15663 }
15664#if USE_TAILCALLS
15665 MUSTTAIL return InterpNext(S);
15666#else
15667 return true;
15668#endif
15669}
15670#endif
15671#ifdef GET_DISASM
15672case OP_Destroy:
15673 Text.Op = PrintName("Destroy");
15674 Text.Args.push_back(printArg<uint32_t>(PC));
15675 break;
15676#endif
15677#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15678bool emitDestroy( uint32_t , SourceInfo);
15679#endif
15680#ifdef GET_LINK_IMPL
15681bool ByteCodeEmitter::emitDestroy( uint32_t A0, SourceInfo L) {
15682 return emitOp<uint32_t>(OP_Destroy, A0, L);
15683}
15684#endif
15685#ifdef GET_OPCODE_NAMES
15686OP_DiagTypeid,
15687#endif
15688#ifdef GET_INTERPFN_LIST
15689&Interp_DiagTypeid,
15690#endif
15691#ifdef GET_INTERPFN_DISPATCHERS
15692PRESERVE_NONE
15693static bool Interp_DiagTypeid(InterpState &S) {
15694 if (!DiagTypeid(S, S.PC)) return false;
15695#if USE_TAILCALLS
15696 MUSTTAIL return InterpNext(S);
15697#else
15698 return true;
15699#endif
15700}
15701#endif
15702#ifdef GET_DISASM
15703case OP_DiagTypeid:
15704 Text.Op = PrintName("DiagTypeid");
15705 break;
15706#endif
15707#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15708bool emitDiagTypeid(SourceInfo);
15709#endif
15710#ifdef GET_LINK_IMPL
15711bool ByteCodeEmitter::emitDiagTypeid(SourceInfo L) {
15712 return emitOp<>(OP_DiagTypeid, L);
15713}
15714#endif
15715#ifdef GET_EVAL_IMPL
15716bool EvalEmitter::emitDiagTypeid(SourceInfo L) {
15717 if (!isActive()) return true;
15718 CurrentSource = L;
15719 return DiagTypeid(S, CodePtr());
15720}
15721#endif
15722#ifdef GET_OPCODE_NAMES
15723OP_DivSint8,
15724OP_DivUint8,
15725OP_DivSint16,
15726OP_DivUint16,
15727OP_DivSint32,
15728OP_DivUint32,
15729OP_DivSint64,
15730OP_DivUint64,
15731OP_DivIntAP,
15732OP_DivIntAPS,
15733OP_DivFixedPoint,
15734#endif
15735#ifdef GET_INTERPFN_LIST
15736&Interp_DivSint8,
15737&Interp_DivUint8,
15738&Interp_DivSint16,
15739&Interp_DivUint16,
15740&Interp_DivSint32,
15741&Interp_DivUint32,
15742&Interp_DivSint64,
15743&Interp_DivUint64,
15744&Interp_DivIntAP,
15745&Interp_DivIntAPS,
15746&Interp_DivFixedPoint,
15747#endif
15748#ifdef GET_INTERPFN_DISPATCHERS
15749PRESERVE_NONE
15750static bool Interp_DivSint8(InterpState &S) {
15751 if (!Div<PT_Sint8>(S, S.PC)) return false;
15752#if USE_TAILCALLS
15753 MUSTTAIL return InterpNext(S);
15754#else
15755 return true;
15756#endif
15757}
15758PRESERVE_NONE
15759static bool Interp_DivUint8(InterpState &S) {
15760 if (!Div<PT_Uint8>(S, S.PC)) return false;
15761#if USE_TAILCALLS
15762 MUSTTAIL return InterpNext(S);
15763#else
15764 return true;
15765#endif
15766}
15767PRESERVE_NONE
15768static bool Interp_DivSint16(InterpState &S) {
15769 if (!Div<PT_Sint16>(S, S.PC)) return false;
15770#if USE_TAILCALLS
15771 MUSTTAIL return InterpNext(S);
15772#else
15773 return true;
15774#endif
15775}
15776PRESERVE_NONE
15777static bool Interp_DivUint16(InterpState &S) {
15778 if (!Div<PT_Uint16>(S, S.PC)) return false;
15779#if USE_TAILCALLS
15780 MUSTTAIL return InterpNext(S);
15781#else
15782 return true;
15783#endif
15784}
15785PRESERVE_NONE
15786static bool Interp_DivSint32(InterpState &S) {
15787 if (!Div<PT_Sint32>(S, S.PC)) return false;
15788#if USE_TAILCALLS
15789 MUSTTAIL return InterpNext(S);
15790#else
15791 return true;
15792#endif
15793}
15794PRESERVE_NONE
15795static bool Interp_DivUint32(InterpState &S) {
15796 if (!Div<PT_Uint32>(S, S.PC)) return false;
15797#if USE_TAILCALLS
15798 MUSTTAIL return InterpNext(S);
15799#else
15800 return true;
15801#endif
15802}
15803PRESERVE_NONE
15804static bool Interp_DivSint64(InterpState &S) {
15805 if (!Div<PT_Sint64>(S, S.PC)) return false;
15806#if USE_TAILCALLS
15807 MUSTTAIL return InterpNext(S);
15808#else
15809 return true;
15810#endif
15811}
15812PRESERVE_NONE
15813static bool Interp_DivUint64(InterpState &S) {
15814 if (!Div<PT_Uint64>(S, S.PC)) return false;
15815#if USE_TAILCALLS
15816 MUSTTAIL return InterpNext(S);
15817#else
15818 return true;
15819#endif
15820}
15821PRESERVE_NONE
15822static bool Interp_DivIntAP(InterpState &S) {
15823 if (!Div<PT_IntAP>(S, S.PC)) return false;
15824#if USE_TAILCALLS
15825 MUSTTAIL return InterpNext(S);
15826#else
15827 return true;
15828#endif
15829}
15830PRESERVE_NONE
15831static bool Interp_DivIntAPS(InterpState &S) {
15832 if (!Div<PT_IntAPS>(S, S.PC)) return false;
15833#if USE_TAILCALLS
15834 MUSTTAIL return InterpNext(S);
15835#else
15836 return true;
15837#endif
15838}
15839PRESERVE_NONE
15840static bool Interp_DivFixedPoint(InterpState &S) {
15841 if (!Div<PT_FixedPoint>(S, S.PC)) return false;
15842#if USE_TAILCALLS
15843 MUSTTAIL return InterpNext(S);
15844#else
15845 return true;
15846#endif
15847}
15848#endif
15849#ifdef GET_DISASM
15850case OP_DivSint8:
15851 Text.Op = PrintName("DivSint8");
15852 break;
15853case OP_DivUint8:
15854 Text.Op = PrintName("DivUint8");
15855 break;
15856case OP_DivSint16:
15857 Text.Op = PrintName("DivSint16");
15858 break;
15859case OP_DivUint16:
15860 Text.Op = PrintName("DivUint16");
15861 break;
15862case OP_DivSint32:
15863 Text.Op = PrintName("DivSint32");
15864 break;
15865case OP_DivUint32:
15866 Text.Op = PrintName("DivUint32");
15867 break;
15868case OP_DivSint64:
15869 Text.Op = PrintName("DivSint64");
15870 break;
15871case OP_DivUint64:
15872 Text.Op = PrintName("DivUint64");
15873 break;
15874case OP_DivIntAP:
15875 Text.Op = PrintName("DivIntAP");
15876 break;
15877case OP_DivIntAPS:
15878 Text.Op = PrintName("DivIntAPS");
15879 break;
15880case OP_DivFixedPoint:
15881 Text.Op = PrintName("DivFixedPoint");
15882 break;
15883#endif
15884#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15885bool emitDivSint8(SourceInfo);
15886bool emitDivUint8(SourceInfo);
15887bool emitDivSint16(SourceInfo);
15888bool emitDivUint16(SourceInfo);
15889bool emitDivSint32(SourceInfo);
15890bool emitDivUint32(SourceInfo);
15891bool emitDivSint64(SourceInfo);
15892bool emitDivUint64(SourceInfo);
15893bool emitDivIntAP(SourceInfo);
15894bool emitDivIntAPS(SourceInfo);
15895bool emitDivFixedPoint(SourceInfo);
15896#endif
15897#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15898[[nodiscard]] bool emitDiv(PrimType, SourceInfo I);
15899#endif
15900#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
15901bool
15902#if defined(GET_EVAL_IMPL)
15903EvalEmitter
15904#else
15905ByteCodeEmitter
15906#endif
15907::emitDiv(PrimType T0, SourceInfo I) {
15908 switch (T0) {
15909 case PT_Sint8:
15910 return emitDivSint8(I);
15911 case PT_Uint8:
15912 return emitDivUint8(I);
15913 case PT_Sint16:
15914 return emitDivSint16(I);
15915 case PT_Uint16:
15916 return emitDivUint16(I);
15917 case PT_Sint32:
15918 return emitDivSint32(I);
15919 case PT_Uint32:
15920 return emitDivUint32(I);
15921 case PT_Sint64:
15922 return emitDivSint64(I);
15923 case PT_Uint64:
15924 return emitDivUint64(I);
15925 case PT_IntAP:
15926 return emitDivIntAP(I);
15927 case PT_IntAPS:
15928 return emitDivIntAPS(I);
15929 case PT_FixedPoint:
15930 return emitDivFixedPoint(I);
15931 default: llvm_unreachable("invalid type: emitDiv");
15932 }
15933 llvm_unreachable("invalid enum value");
15934}
15935#endif
15936#ifdef GET_LINK_IMPL
15937bool ByteCodeEmitter::emitDivSint8(SourceInfo L) {
15938 return emitOp<>(OP_DivSint8, L);
15939}
15940bool ByteCodeEmitter::emitDivUint8(SourceInfo L) {
15941 return emitOp<>(OP_DivUint8, L);
15942}
15943bool ByteCodeEmitter::emitDivSint16(SourceInfo L) {
15944 return emitOp<>(OP_DivSint16, L);
15945}
15946bool ByteCodeEmitter::emitDivUint16(SourceInfo L) {
15947 return emitOp<>(OP_DivUint16, L);
15948}
15949bool ByteCodeEmitter::emitDivSint32(SourceInfo L) {
15950 return emitOp<>(OP_DivSint32, L);
15951}
15952bool ByteCodeEmitter::emitDivUint32(SourceInfo L) {
15953 return emitOp<>(OP_DivUint32, L);
15954}
15955bool ByteCodeEmitter::emitDivSint64(SourceInfo L) {
15956 return emitOp<>(OP_DivSint64, L);
15957}
15958bool ByteCodeEmitter::emitDivUint64(SourceInfo L) {
15959 return emitOp<>(OP_DivUint64, L);
15960}
15961bool ByteCodeEmitter::emitDivIntAP(SourceInfo L) {
15962 return emitOp<>(OP_DivIntAP, L);
15963}
15964bool ByteCodeEmitter::emitDivIntAPS(SourceInfo L) {
15965 return emitOp<>(OP_DivIntAPS, L);
15966}
15967bool ByteCodeEmitter::emitDivFixedPoint(SourceInfo L) {
15968 return emitOp<>(OP_DivFixedPoint, L);
15969}
15970#endif
15971#ifdef GET_EVAL_IMPL
15972bool EvalEmitter::emitDivSint8(SourceInfo L) {
15973 if (!isActive()) return true;
15974 CurrentSource = L;
15975 return Div<PT_Sint8>(S, CodePtr());
15976}
15977bool EvalEmitter::emitDivUint8(SourceInfo L) {
15978 if (!isActive()) return true;
15979 CurrentSource = L;
15980 return Div<PT_Uint8>(S, CodePtr());
15981}
15982bool EvalEmitter::emitDivSint16(SourceInfo L) {
15983 if (!isActive()) return true;
15984 CurrentSource = L;
15985 return Div<PT_Sint16>(S, CodePtr());
15986}
15987bool EvalEmitter::emitDivUint16(SourceInfo L) {
15988 if (!isActive()) return true;
15989 CurrentSource = L;
15990 return Div<PT_Uint16>(S, CodePtr());
15991}
15992bool EvalEmitter::emitDivSint32(SourceInfo L) {
15993 if (!isActive()) return true;
15994 CurrentSource = L;
15995 return Div<PT_Sint32>(S, CodePtr());
15996}
15997bool EvalEmitter::emitDivUint32(SourceInfo L) {
15998 if (!isActive()) return true;
15999 CurrentSource = L;
16000 return Div<PT_Uint32>(S, CodePtr());
16001}
16002bool EvalEmitter::emitDivSint64(SourceInfo L) {
16003 if (!isActive()) return true;
16004 CurrentSource = L;
16005 return Div<PT_Sint64>(S, CodePtr());
16006}
16007bool EvalEmitter::emitDivUint64(SourceInfo L) {
16008 if (!isActive()) return true;
16009 CurrentSource = L;
16010 return Div<PT_Uint64>(S, CodePtr());
16011}
16012bool EvalEmitter::emitDivIntAP(SourceInfo L) {
16013 if (!isActive()) return true;
16014 CurrentSource = L;
16015 return Div<PT_IntAP>(S, CodePtr());
16016}
16017bool EvalEmitter::emitDivIntAPS(SourceInfo L) {
16018 if (!isActive()) return true;
16019 CurrentSource = L;
16020 return Div<PT_IntAPS>(S, CodePtr());
16021}
16022bool EvalEmitter::emitDivFixedPoint(SourceInfo L) {
16023 if (!isActive()) return true;
16024 CurrentSource = L;
16025 return Div<PT_FixedPoint>(S, CodePtr());
16026}
16027#endif
16028#ifdef GET_OPCODE_NAMES
16029OP_DivcSint8,
16030OP_DivcUint8,
16031OP_DivcSint16,
16032OP_DivcUint16,
16033OP_DivcSint32,
16034OP_DivcUint32,
16035OP_DivcSint64,
16036OP_DivcUint64,
16037OP_DivcIntAP,
16038OP_DivcIntAPS,
16039OP_DivcFloat,
16040#endif
16041#ifdef GET_INTERPFN_LIST
16042&Interp_DivcSint8,
16043&Interp_DivcUint8,
16044&Interp_DivcSint16,
16045&Interp_DivcUint16,
16046&Interp_DivcSint32,
16047&Interp_DivcUint32,
16048&Interp_DivcSint64,
16049&Interp_DivcUint64,
16050&Interp_DivcIntAP,
16051&Interp_DivcIntAPS,
16052&Interp_DivcFloat,
16053#endif
16054#ifdef GET_INTERPFN_DISPATCHERS
16055PRESERVE_NONE
16056static bool Interp_DivcSint8(InterpState &S) {
16057 if (!Divc<PT_Sint8>(S, S.PC)) return false;
16058#if USE_TAILCALLS
16059 MUSTTAIL return InterpNext(S);
16060#else
16061 return true;
16062#endif
16063}
16064PRESERVE_NONE
16065static bool Interp_DivcUint8(InterpState &S) {
16066 if (!Divc<PT_Uint8>(S, S.PC)) return false;
16067#if USE_TAILCALLS
16068 MUSTTAIL return InterpNext(S);
16069#else
16070 return true;
16071#endif
16072}
16073PRESERVE_NONE
16074static bool Interp_DivcSint16(InterpState &S) {
16075 if (!Divc<PT_Sint16>(S, S.PC)) return false;
16076#if USE_TAILCALLS
16077 MUSTTAIL return InterpNext(S);
16078#else
16079 return true;
16080#endif
16081}
16082PRESERVE_NONE
16083static bool Interp_DivcUint16(InterpState &S) {
16084 if (!Divc<PT_Uint16>(S, S.PC)) return false;
16085#if USE_TAILCALLS
16086 MUSTTAIL return InterpNext(S);
16087#else
16088 return true;
16089#endif
16090}
16091PRESERVE_NONE
16092static bool Interp_DivcSint32(InterpState &S) {
16093 if (!Divc<PT_Sint32>(S, S.PC)) return false;
16094#if USE_TAILCALLS
16095 MUSTTAIL return InterpNext(S);
16096#else
16097 return true;
16098#endif
16099}
16100PRESERVE_NONE
16101static bool Interp_DivcUint32(InterpState &S) {
16102 if (!Divc<PT_Uint32>(S, S.PC)) return false;
16103#if USE_TAILCALLS
16104 MUSTTAIL return InterpNext(S);
16105#else
16106 return true;
16107#endif
16108}
16109PRESERVE_NONE
16110static bool Interp_DivcSint64(InterpState &S) {
16111 if (!Divc<PT_Sint64>(S, S.PC)) return false;
16112#if USE_TAILCALLS
16113 MUSTTAIL return InterpNext(S);
16114#else
16115 return true;
16116#endif
16117}
16118PRESERVE_NONE
16119static bool Interp_DivcUint64(InterpState &S) {
16120 if (!Divc<PT_Uint64>(S, S.PC)) return false;
16121#if USE_TAILCALLS
16122 MUSTTAIL return InterpNext(S);
16123#else
16124 return true;
16125#endif
16126}
16127PRESERVE_NONE
16128static bool Interp_DivcIntAP(InterpState &S) {
16129 if (!Divc<PT_IntAP>(S, S.PC)) return false;
16130#if USE_TAILCALLS
16131 MUSTTAIL return InterpNext(S);
16132#else
16133 return true;
16134#endif
16135}
16136PRESERVE_NONE
16137static bool Interp_DivcIntAPS(InterpState &S) {
16138 if (!Divc<PT_IntAPS>(S, S.PC)) return false;
16139#if USE_TAILCALLS
16140 MUSTTAIL return InterpNext(S);
16141#else
16142 return true;
16143#endif
16144}
16145PRESERVE_NONE
16146static bool Interp_DivcFloat(InterpState &S) {
16147 if (!Divc<PT_Float>(S, S.PC)) return false;
16148#if USE_TAILCALLS
16149 MUSTTAIL return InterpNext(S);
16150#else
16151 return true;
16152#endif
16153}
16154#endif
16155#ifdef GET_DISASM
16156case OP_DivcSint8:
16157 Text.Op = PrintName("DivcSint8");
16158 break;
16159case OP_DivcUint8:
16160 Text.Op = PrintName("DivcUint8");
16161 break;
16162case OP_DivcSint16:
16163 Text.Op = PrintName("DivcSint16");
16164 break;
16165case OP_DivcUint16:
16166 Text.Op = PrintName("DivcUint16");
16167 break;
16168case OP_DivcSint32:
16169 Text.Op = PrintName("DivcSint32");
16170 break;
16171case OP_DivcUint32:
16172 Text.Op = PrintName("DivcUint32");
16173 break;
16174case OP_DivcSint64:
16175 Text.Op = PrintName("DivcSint64");
16176 break;
16177case OP_DivcUint64:
16178 Text.Op = PrintName("DivcUint64");
16179 break;
16180case OP_DivcIntAP:
16181 Text.Op = PrintName("DivcIntAP");
16182 break;
16183case OP_DivcIntAPS:
16184 Text.Op = PrintName("DivcIntAPS");
16185 break;
16186case OP_DivcFloat:
16187 Text.Op = PrintName("DivcFloat");
16188 break;
16189#endif
16190#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16191bool emitDivcSint8(SourceInfo);
16192bool emitDivcUint8(SourceInfo);
16193bool emitDivcSint16(SourceInfo);
16194bool emitDivcUint16(SourceInfo);
16195bool emitDivcSint32(SourceInfo);
16196bool emitDivcUint32(SourceInfo);
16197bool emitDivcSint64(SourceInfo);
16198bool emitDivcUint64(SourceInfo);
16199bool emitDivcIntAP(SourceInfo);
16200bool emitDivcIntAPS(SourceInfo);
16201bool emitDivcFloat(SourceInfo);
16202#endif
16203#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16204[[nodiscard]] bool emitDivc(PrimType, SourceInfo I);
16205#endif
16206#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
16207bool
16208#if defined(GET_EVAL_IMPL)
16209EvalEmitter
16210#else
16211ByteCodeEmitter
16212#endif
16213::emitDivc(PrimType T0, SourceInfo I) {
16214 switch (T0) {
16215 case PT_Sint8:
16216 return emitDivcSint8(I);
16217 case PT_Uint8:
16218 return emitDivcUint8(I);
16219 case PT_Sint16:
16220 return emitDivcSint16(I);
16221 case PT_Uint16:
16222 return emitDivcUint16(I);
16223 case PT_Sint32:
16224 return emitDivcSint32(I);
16225 case PT_Uint32:
16226 return emitDivcUint32(I);
16227 case PT_Sint64:
16228 return emitDivcSint64(I);
16229 case PT_Uint64:
16230 return emitDivcUint64(I);
16231 case PT_IntAP:
16232 return emitDivcIntAP(I);
16233 case PT_IntAPS:
16234 return emitDivcIntAPS(I);
16235 case PT_Float:
16236 return emitDivcFloat(I);
16237 default: llvm_unreachable("invalid type: emitDivc");
16238 }
16239 llvm_unreachable("invalid enum value");
16240}
16241#endif
16242#ifdef GET_LINK_IMPL
16243bool ByteCodeEmitter::emitDivcSint8(SourceInfo L) {
16244 return emitOp<>(OP_DivcSint8, L);
16245}
16246bool ByteCodeEmitter::emitDivcUint8(SourceInfo L) {
16247 return emitOp<>(OP_DivcUint8, L);
16248}
16249bool ByteCodeEmitter::emitDivcSint16(SourceInfo L) {
16250 return emitOp<>(OP_DivcSint16, L);
16251}
16252bool ByteCodeEmitter::emitDivcUint16(SourceInfo L) {
16253 return emitOp<>(OP_DivcUint16, L);
16254}
16255bool ByteCodeEmitter::emitDivcSint32(SourceInfo L) {
16256 return emitOp<>(OP_DivcSint32, L);
16257}
16258bool ByteCodeEmitter::emitDivcUint32(SourceInfo L) {
16259 return emitOp<>(OP_DivcUint32, L);
16260}
16261bool ByteCodeEmitter::emitDivcSint64(SourceInfo L) {
16262 return emitOp<>(OP_DivcSint64, L);
16263}
16264bool ByteCodeEmitter::emitDivcUint64(SourceInfo L) {
16265 return emitOp<>(OP_DivcUint64, L);
16266}
16267bool ByteCodeEmitter::emitDivcIntAP(SourceInfo L) {
16268 return emitOp<>(OP_DivcIntAP, L);
16269}
16270bool ByteCodeEmitter::emitDivcIntAPS(SourceInfo L) {
16271 return emitOp<>(OP_DivcIntAPS, L);
16272}
16273bool ByteCodeEmitter::emitDivcFloat(SourceInfo L) {
16274 return emitOp<>(OP_DivcFloat, L);
16275}
16276#endif
16277#ifdef GET_EVAL_IMPL
16278bool EvalEmitter::emitDivcSint8(SourceInfo L) {
16279 if (!isActive()) return true;
16280 CurrentSource = L;
16281 return Divc<PT_Sint8>(S, CodePtr());
16282}
16283bool EvalEmitter::emitDivcUint8(SourceInfo L) {
16284 if (!isActive()) return true;
16285 CurrentSource = L;
16286 return Divc<PT_Uint8>(S, CodePtr());
16287}
16288bool EvalEmitter::emitDivcSint16(SourceInfo L) {
16289 if (!isActive()) return true;
16290 CurrentSource = L;
16291 return Divc<PT_Sint16>(S, CodePtr());
16292}
16293bool EvalEmitter::emitDivcUint16(SourceInfo L) {
16294 if (!isActive()) return true;
16295 CurrentSource = L;
16296 return Divc<PT_Uint16>(S, CodePtr());
16297}
16298bool EvalEmitter::emitDivcSint32(SourceInfo L) {
16299 if (!isActive()) return true;
16300 CurrentSource = L;
16301 return Divc<PT_Sint32>(S, CodePtr());
16302}
16303bool EvalEmitter::emitDivcUint32(SourceInfo L) {
16304 if (!isActive()) return true;
16305 CurrentSource = L;
16306 return Divc<PT_Uint32>(S, CodePtr());
16307}
16308bool EvalEmitter::emitDivcSint64(SourceInfo L) {
16309 if (!isActive()) return true;
16310 CurrentSource = L;
16311 return Divc<PT_Sint64>(S, CodePtr());
16312}
16313bool EvalEmitter::emitDivcUint64(SourceInfo L) {
16314 if (!isActive()) return true;
16315 CurrentSource = L;
16316 return Divc<PT_Uint64>(S, CodePtr());
16317}
16318bool EvalEmitter::emitDivcIntAP(SourceInfo L) {
16319 if (!isActive()) return true;
16320 CurrentSource = L;
16321 return Divc<PT_IntAP>(S, CodePtr());
16322}
16323bool EvalEmitter::emitDivcIntAPS(SourceInfo L) {
16324 if (!isActive()) return true;
16325 CurrentSource = L;
16326 return Divc<PT_IntAPS>(S, CodePtr());
16327}
16328bool EvalEmitter::emitDivcFloat(SourceInfo L) {
16329 if (!isActive()) return true;
16330 CurrentSource = L;
16331 return Divc<PT_Float>(S, CodePtr());
16332}
16333#endif
16334#ifdef GET_OPCODE_NAMES
16335OP_Divf,
16336#endif
16337#ifdef GET_INTERPFN_LIST
16338&Interp_Divf,
16339#endif
16340#ifdef GET_INTERPFN_DISPATCHERS
16341PRESERVE_NONE
16342static bool Interp_Divf(InterpState &S) {
16343 {
16344 CodePtr OpPC = S.PC;
16345 const auto V0 = ReadArg<uint32_t>(S, S.PC);
16346 if (!Divf(S, OpPC, V0)) return false;
16347 }
16348#if USE_TAILCALLS
16349 MUSTTAIL return InterpNext(S);
16350#else
16351 return true;
16352#endif
16353}
16354#endif
16355#ifdef GET_DISASM
16356case OP_Divf:
16357 Text.Op = PrintName("Divf");
16358 Text.Args.push_back(printArg<uint32_t>(PC));
16359 break;
16360#endif
16361#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16362bool emitDivf( uint32_t , SourceInfo);
16363#endif
16364#ifdef GET_LINK_IMPL
16365bool ByteCodeEmitter::emitDivf( uint32_t A0, SourceInfo L) {
16366 return emitOp<uint32_t>(OP_Divf, A0, L);
16367}
16368#endif
16369#ifdef GET_EVAL_IMPL
16370bool EvalEmitter::emitDivf( uint32_t A0, SourceInfo L) {
16371 if (!isActive()) return true;
16372 CurrentSource = L;
16373 return Divf(S, CodePtr(), A0);
16374}
16375#endif
16376#ifdef GET_OPCODE_NAMES
16377OP_Dump,
16378#endif
16379#ifdef GET_INTERPFN_LIST
16380&Interp_Dump,
16381#endif
16382#ifdef GET_INTERPFN_DISPATCHERS
16383PRESERVE_NONE
16384static bool Interp_Dump(InterpState &S) {
16385 if (!Dump(S)) return false;
16386#if USE_TAILCALLS
16387 MUSTTAIL return InterpNext(S);
16388#else
16389 return true;
16390#endif
16391}
16392#endif
16393#ifdef GET_DISASM
16394case OP_Dump:
16395 Text.Op = PrintName("Dump");
16396 break;
16397#endif
16398#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16399bool emitDump(SourceInfo);
16400#endif
16401#ifdef GET_LINK_IMPL
16402bool ByteCodeEmitter::emitDump(SourceInfo L) {
16403 return emitOp<>(OP_Dump, L);
16404}
16405#endif
16406#ifdef GET_EVAL_IMPL
16407bool EvalEmitter::emitDump(SourceInfo L) {
16408 if (!isActive()) return true;
16409 CurrentSource = L;
16410 return Dump(S);
16411}
16412#endif
16413#ifdef GET_OPCODE_NAMES
16414OP_DupSint8,
16415OP_DupUint8,
16416OP_DupSint16,
16417OP_DupUint16,
16418OP_DupSint32,
16419OP_DupUint32,
16420OP_DupSint64,
16421OP_DupUint64,
16422OP_DupIntAP,
16423OP_DupIntAPS,
16424OP_DupBool,
16425OP_DupFixedPoint,
16426OP_DupPtr,
16427OP_DupMemberPtr,
16428OP_DupFloat,
16429#endif
16430#ifdef GET_INTERPFN_LIST
16431&Interp_DupSint8,
16432&Interp_DupUint8,
16433&Interp_DupSint16,
16434&Interp_DupUint16,
16435&Interp_DupSint32,
16436&Interp_DupUint32,
16437&Interp_DupSint64,
16438&Interp_DupUint64,
16439&Interp_DupIntAP,
16440&Interp_DupIntAPS,
16441&Interp_DupBool,
16442&Interp_DupFixedPoint,
16443&Interp_DupPtr,
16444&Interp_DupMemberPtr,
16445&Interp_DupFloat,
16446#endif
16447#ifdef GET_INTERPFN_DISPATCHERS
16448PRESERVE_NONE
16449static bool Interp_DupSint8(InterpState &S) {
16450 Dup<PT_Sint8>(S);
16451#if USE_TAILCALLS
16452 MUSTTAIL return InterpNext(S);
16453#else
16454 return true;
16455#endif
16456}
16457PRESERVE_NONE
16458static bool Interp_DupUint8(InterpState &S) {
16459 Dup<PT_Uint8>(S);
16460#if USE_TAILCALLS
16461 MUSTTAIL return InterpNext(S);
16462#else
16463 return true;
16464#endif
16465}
16466PRESERVE_NONE
16467static bool Interp_DupSint16(InterpState &S) {
16468 Dup<PT_Sint16>(S);
16469#if USE_TAILCALLS
16470 MUSTTAIL return InterpNext(S);
16471#else
16472 return true;
16473#endif
16474}
16475PRESERVE_NONE
16476static bool Interp_DupUint16(InterpState &S) {
16477 Dup<PT_Uint16>(S);
16478#if USE_TAILCALLS
16479 MUSTTAIL return InterpNext(S);
16480#else
16481 return true;
16482#endif
16483}
16484PRESERVE_NONE
16485static bool Interp_DupSint32(InterpState &S) {
16486 Dup<PT_Sint32>(S);
16487#if USE_TAILCALLS
16488 MUSTTAIL return InterpNext(S);
16489#else
16490 return true;
16491#endif
16492}
16493PRESERVE_NONE
16494static bool Interp_DupUint32(InterpState &S) {
16495 Dup<PT_Uint32>(S);
16496#if USE_TAILCALLS
16497 MUSTTAIL return InterpNext(S);
16498#else
16499 return true;
16500#endif
16501}
16502PRESERVE_NONE
16503static bool Interp_DupSint64(InterpState &S) {
16504 Dup<PT_Sint64>(S);
16505#if USE_TAILCALLS
16506 MUSTTAIL return InterpNext(S);
16507#else
16508 return true;
16509#endif
16510}
16511PRESERVE_NONE
16512static bool Interp_DupUint64(InterpState &S) {
16513 Dup<PT_Uint64>(S);
16514#if USE_TAILCALLS
16515 MUSTTAIL return InterpNext(S);
16516#else
16517 return true;
16518#endif
16519}
16520PRESERVE_NONE
16521static bool Interp_DupIntAP(InterpState &S) {
16522 Dup<PT_IntAP>(S);
16523#if USE_TAILCALLS
16524 MUSTTAIL return InterpNext(S);
16525#else
16526 return true;
16527#endif
16528}
16529PRESERVE_NONE
16530static bool Interp_DupIntAPS(InterpState &S) {
16531 Dup<PT_IntAPS>(S);
16532#if USE_TAILCALLS
16533 MUSTTAIL return InterpNext(S);
16534#else
16535 return true;
16536#endif
16537}
16538PRESERVE_NONE
16539static bool Interp_DupBool(InterpState &S) {
16540 Dup<PT_Bool>(S);
16541#if USE_TAILCALLS
16542 MUSTTAIL return InterpNext(S);
16543#else
16544 return true;
16545#endif
16546}
16547PRESERVE_NONE
16548static bool Interp_DupFixedPoint(InterpState &S) {
16549 Dup<PT_FixedPoint>(S);
16550#if USE_TAILCALLS
16551 MUSTTAIL return InterpNext(S);
16552#else
16553 return true;
16554#endif
16555}
16556PRESERVE_NONE
16557static bool Interp_DupPtr(InterpState &S) {
16558 Dup<PT_Ptr>(S);
16559#if USE_TAILCALLS
16560 MUSTTAIL return InterpNext(S);
16561#else
16562 return true;
16563#endif
16564}
16565PRESERVE_NONE
16566static bool Interp_DupMemberPtr(InterpState &S) {
16567 Dup<PT_MemberPtr>(S);
16568#if USE_TAILCALLS
16569 MUSTTAIL return InterpNext(S);
16570#else
16571 return true;
16572#endif
16573}
16574PRESERVE_NONE
16575static bool Interp_DupFloat(InterpState &S) {
16576 Dup<PT_Float>(S);
16577#if USE_TAILCALLS
16578 MUSTTAIL return InterpNext(S);
16579#else
16580 return true;
16581#endif
16582}
16583#endif
16584#ifdef GET_DISASM
16585case OP_DupSint8:
16586 Text.Op = PrintName("DupSint8");
16587 break;
16588case OP_DupUint8:
16589 Text.Op = PrintName("DupUint8");
16590 break;
16591case OP_DupSint16:
16592 Text.Op = PrintName("DupSint16");
16593 break;
16594case OP_DupUint16:
16595 Text.Op = PrintName("DupUint16");
16596 break;
16597case OP_DupSint32:
16598 Text.Op = PrintName("DupSint32");
16599 break;
16600case OP_DupUint32:
16601 Text.Op = PrintName("DupUint32");
16602 break;
16603case OP_DupSint64:
16604 Text.Op = PrintName("DupSint64");
16605 break;
16606case OP_DupUint64:
16607 Text.Op = PrintName("DupUint64");
16608 break;
16609case OP_DupIntAP:
16610 Text.Op = PrintName("DupIntAP");
16611 break;
16612case OP_DupIntAPS:
16613 Text.Op = PrintName("DupIntAPS");
16614 break;
16615case OP_DupBool:
16616 Text.Op = PrintName("DupBool");
16617 break;
16618case OP_DupFixedPoint:
16619 Text.Op = PrintName("DupFixedPoint");
16620 break;
16621case OP_DupPtr:
16622 Text.Op = PrintName("DupPtr");
16623 break;
16624case OP_DupMemberPtr:
16625 Text.Op = PrintName("DupMemberPtr");
16626 break;
16627case OP_DupFloat:
16628 Text.Op = PrintName("DupFloat");
16629 break;
16630#endif
16631#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16632bool emitDupSint8(SourceInfo);
16633bool emitDupUint8(SourceInfo);
16634bool emitDupSint16(SourceInfo);
16635bool emitDupUint16(SourceInfo);
16636bool emitDupSint32(SourceInfo);
16637bool emitDupUint32(SourceInfo);
16638bool emitDupSint64(SourceInfo);
16639bool emitDupUint64(SourceInfo);
16640bool emitDupIntAP(SourceInfo);
16641bool emitDupIntAPS(SourceInfo);
16642bool emitDupBool(SourceInfo);
16643bool emitDupFixedPoint(SourceInfo);
16644bool emitDupPtr(SourceInfo);
16645bool emitDupMemberPtr(SourceInfo);
16646bool emitDupFloat(SourceInfo);
16647#endif
16648#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16649[[nodiscard]] bool emitDup(PrimType, SourceInfo I);
16650#endif
16651#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
16652bool
16653#if defined(GET_EVAL_IMPL)
16654EvalEmitter
16655#else
16656ByteCodeEmitter
16657#endif
16658::emitDup(PrimType T0, SourceInfo I) {
16659 switch (T0) {
16660 case PT_Sint8:
16661 return emitDupSint8(I);
16662 case PT_Uint8:
16663 return emitDupUint8(I);
16664 case PT_Sint16:
16665 return emitDupSint16(I);
16666 case PT_Uint16:
16667 return emitDupUint16(I);
16668 case PT_Sint32:
16669 return emitDupSint32(I);
16670 case PT_Uint32:
16671 return emitDupUint32(I);
16672 case PT_Sint64:
16673 return emitDupSint64(I);
16674 case PT_Uint64:
16675 return emitDupUint64(I);
16676 case PT_IntAP:
16677 return emitDupIntAP(I);
16678 case PT_IntAPS:
16679 return emitDupIntAPS(I);
16680 case PT_Bool:
16681 return emitDupBool(I);
16682 case PT_FixedPoint:
16683 return emitDupFixedPoint(I);
16684 case PT_Ptr:
16685 return emitDupPtr(I);
16686 case PT_MemberPtr:
16687 return emitDupMemberPtr(I);
16688 case PT_Float:
16689 return emitDupFloat(I);
16690 }
16691 llvm_unreachable("invalid enum value");
16692}
16693#endif
16694#ifdef GET_LINK_IMPL
16695bool ByteCodeEmitter::emitDupSint8(SourceInfo L) {
16696 return emitOp<>(OP_DupSint8, L);
16697}
16698bool ByteCodeEmitter::emitDupUint8(SourceInfo L) {
16699 return emitOp<>(OP_DupUint8, L);
16700}
16701bool ByteCodeEmitter::emitDupSint16(SourceInfo L) {
16702 return emitOp<>(OP_DupSint16, L);
16703}
16704bool ByteCodeEmitter::emitDupUint16(SourceInfo L) {
16705 return emitOp<>(OP_DupUint16, L);
16706}
16707bool ByteCodeEmitter::emitDupSint32(SourceInfo L) {
16708 return emitOp<>(OP_DupSint32, L);
16709}
16710bool ByteCodeEmitter::emitDupUint32(SourceInfo L) {
16711 return emitOp<>(OP_DupUint32, L);
16712}
16713bool ByteCodeEmitter::emitDupSint64(SourceInfo L) {
16714 return emitOp<>(OP_DupSint64, L);
16715}
16716bool ByteCodeEmitter::emitDupUint64(SourceInfo L) {
16717 return emitOp<>(OP_DupUint64, L);
16718}
16719bool ByteCodeEmitter::emitDupIntAP(SourceInfo L) {
16720 return emitOp<>(OP_DupIntAP, L);
16721}
16722bool ByteCodeEmitter::emitDupIntAPS(SourceInfo L) {
16723 return emitOp<>(OP_DupIntAPS, L);
16724}
16725bool ByteCodeEmitter::emitDupBool(SourceInfo L) {
16726 return emitOp<>(OP_DupBool, L);
16727}
16728bool ByteCodeEmitter::emitDupFixedPoint(SourceInfo L) {
16729 return emitOp<>(OP_DupFixedPoint, L);
16730}
16731bool ByteCodeEmitter::emitDupPtr(SourceInfo L) {
16732 return emitOp<>(OP_DupPtr, L);
16733}
16734bool ByteCodeEmitter::emitDupMemberPtr(SourceInfo L) {
16735 return emitOp<>(OP_DupMemberPtr, L);
16736}
16737bool ByteCodeEmitter::emitDupFloat(SourceInfo L) {
16738 return emitOp<>(OP_DupFloat, L);
16739}
16740#endif
16741#ifdef GET_EVAL_IMPL
16742bool EvalEmitter::emitDupSint8(SourceInfo L) {
16743 if (!isActive()) return true;
16744 CurrentSource = L;
16745 return Dup<PT_Sint8>(S);
16746}
16747bool EvalEmitter::emitDupUint8(SourceInfo L) {
16748 if (!isActive()) return true;
16749 CurrentSource = L;
16750 return Dup<PT_Uint8>(S);
16751}
16752bool EvalEmitter::emitDupSint16(SourceInfo L) {
16753 if (!isActive()) return true;
16754 CurrentSource = L;
16755 return Dup<PT_Sint16>(S);
16756}
16757bool EvalEmitter::emitDupUint16(SourceInfo L) {
16758 if (!isActive()) return true;
16759 CurrentSource = L;
16760 return Dup<PT_Uint16>(S);
16761}
16762bool EvalEmitter::emitDupSint32(SourceInfo L) {
16763 if (!isActive()) return true;
16764 CurrentSource = L;
16765 return Dup<PT_Sint32>(S);
16766}
16767bool EvalEmitter::emitDupUint32(SourceInfo L) {
16768 if (!isActive()) return true;
16769 CurrentSource = L;
16770 return Dup<PT_Uint32>(S);
16771}
16772bool EvalEmitter::emitDupSint64(SourceInfo L) {
16773 if (!isActive()) return true;
16774 CurrentSource = L;
16775 return Dup<PT_Sint64>(S);
16776}
16777bool EvalEmitter::emitDupUint64(SourceInfo L) {
16778 if (!isActive()) return true;
16779 CurrentSource = L;
16780 return Dup<PT_Uint64>(S);
16781}
16782bool EvalEmitter::emitDupIntAP(SourceInfo L) {
16783 if (!isActive()) return true;
16784 CurrentSource = L;
16785 return Dup<PT_IntAP>(S);
16786}
16787bool EvalEmitter::emitDupIntAPS(SourceInfo L) {
16788 if (!isActive()) return true;
16789 CurrentSource = L;
16790 return Dup<PT_IntAPS>(S);
16791}
16792bool EvalEmitter::emitDupBool(SourceInfo L) {
16793 if (!isActive()) return true;
16794 CurrentSource = L;
16795 return Dup<PT_Bool>(S);
16796}
16797bool EvalEmitter::emitDupFixedPoint(SourceInfo L) {
16798 if (!isActive()) return true;
16799 CurrentSource = L;
16800 return Dup<PT_FixedPoint>(S);
16801}
16802bool EvalEmitter::emitDupPtr(SourceInfo L) {
16803 if (!isActive()) return true;
16804 CurrentSource = L;
16805 return Dup<PT_Ptr>(S);
16806}
16807bool EvalEmitter::emitDupMemberPtr(SourceInfo L) {
16808 if (!isActive()) return true;
16809 CurrentSource = L;
16810 return Dup<PT_MemberPtr>(S);
16811}
16812bool EvalEmitter::emitDupFloat(SourceInfo L) {
16813 if (!isActive()) return true;
16814 CurrentSource = L;
16815 return Dup<PT_Float>(S);
16816}
16817#endif
16818#ifdef GET_OPCODE_NAMES
16819OP_DynamicCast,
16820#endif
16821#ifdef GET_INTERPFN_LIST
16822&Interp_DynamicCast,
16823#endif
16824#ifdef GET_INTERPFN_DISPATCHERS
16825PRESERVE_NONE
16826static bool Interp_DynamicCast(InterpState &S) {
16827 {
16828 CodePtr OpPC = S.PC;
16829 const auto V0 = ReadArg<const Type *>(S, S.PC);
16830 const auto V1 = ReadArg<bool>(S, S.PC);
16831 if (!DynamicCast(S, OpPC, V0, V1)) return false;
16832 }
16833#if USE_TAILCALLS
16834 MUSTTAIL return InterpNext(S);
16835#else
16836 return true;
16837#endif
16838}
16839#endif
16840#ifdef GET_DISASM
16841case OP_DynamicCast:
16842 Text.Op = PrintName("DynamicCast");
16843 Text.Args.push_back(printArg<const Type *>(PC));
16844 Text.Args.push_back(printArg<bool>(PC));
16845 break;
16846#endif
16847#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16848bool emitDynamicCast( const Type * , bool , SourceInfo);
16849#endif
16850#ifdef GET_LINK_IMPL
16851bool ByteCodeEmitter::emitDynamicCast( const Type * A0, bool A1, SourceInfo L) {
16852 return emitOp<const Type *, bool>(OP_DynamicCast, A0, A1, L);
16853}
16854#endif
16855#ifdef GET_EVAL_IMPL
16856bool EvalEmitter::emitDynamicCast( const Type * A0, bool A1, SourceInfo L) {
16857 if (!isActive()) return true;
16858 CurrentSource = L;
16859 return DynamicCast(S, CodePtr(), A0, A1);
16860}
16861#endif
16862#ifdef GET_OPCODE_NAMES
16863OP_EQSint8,
16864OP_EQUint8,
16865OP_EQSint16,
16866OP_EQUint16,
16867OP_EQSint32,
16868OP_EQUint32,
16869OP_EQSint64,
16870OP_EQUint64,
16871OP_EQIntAP,
16872OP_EQIntAPS,
16873OP_EQBool,
16874OP_EQFixedPoint,
16875OP_EQPtr,
16876OP_EQMemberPtr,
16877OP_EQFloat,
16878#endif
16879#ifdef GET_INTERPFN_LIST
16880&Interp_EQSint8,
16881&Interp_EQUint8,
16882&Interp_EQSint16,
16883&Interp_EQUint16,
16884&Interp_EQSint32,
16885&Interp_EQUint32,
16886&Interp_EQSint64,
16887&Interp_EQUint64,
16888&Interp_EQIntAP,
16889&Interp_EQIntAPS,
16890&Interp_EQBool,
16891&Interp_EQFixedPoint,
16892&Interp_EQPtr,
16893&Interp_EQMemberPtr,
16894&Interp_EQFloat,
16895#endif
16896#ifdef GET_INTERPFN_DISPATCHERS
16897PRESERVE_NONE
16898static bool Interp_EQSint8(InterpState &S) {
16899 if (!EQ<PT_Sint8>(S, S.PC)) return false;
16900#if USE_TAILCALLS
16901 MUSTTAIL return InterpNext(S);
16902#else
16903 return true;
16904#endif
16905}
16906PRESERVE_NONE
16907static bool Interp_EQUint8(InterpState &S) {
16908 if (!EQ<PT_Uint8>(S, S.PC)) return false;
16909#if USE_TAILCALLS
16910 MUSTTAIL return InterpNext(S);
16911#else
16912 return true;
16913#endif
16914}
16915PRESERVE_NONE
16916static bool Interp_EQSint16(InterpState &S) {
16917 if (!EQ<PT_Sint16>(S, S.PC)) return false;
16918#if USE_TAILCALLS
16919 MUSTTAIL return InterpNext(S);
16920#else
16921 return true;
16922#endif
16923}
16924PRESERVE_NONE
16925static bool Interp_EQUint16(InterpState &S) {
16926 if (!EQ<PT_Uint16>(S, S.PC)) return false;
16927#if USE_TAILCALLS
16928 MUSTTAIL return InterpNext(S);
16929#else
16930 return true;
16931#endif
16932}
16933PRESERVE_NONE
16934static bool Interp_EQSint32(InterpState &S) {
16935 if (!EQ<PT_Sint32>(S, S.PC)) return false;
16936#if USE_TAILCALLS
16937 MUSTTAIL return InterpNext(S);
16938#else
16939 return true;
16940#endif
16941}
16942PRESERVE_NONE
16943static bool Interp_EQUint32(InterpState &S) {
16944 if (!EQ<PT_Uint32>(S, S.PC)) return false;
16945#if USE_TAILCALLS
16946 MUSTTAIL return InterpNext(S);
16947#else
16948 return true;
16949#endif
16950}
16951PRESERVE_NONE
16952static bool Interp_EQSint64(InterpState &S) {
16953 if (!EQ<PT_Sint64>(S, S.PC)) return false;
16954#if USE_TAILCALLS
16955 MUSTTAIL return InterpNext(S);
16956#else
16957 return true;
16958#endif
16959}
16960PRESERVE_NONE
16961static bool Interp_EQUint64(InterpState &S) {
16962 if (!EQ<PT_Uint64>(S, S.PC)) return false;
16963#if USE_TAILCALLS
16964 MUSTTAIL return InterpNext(S);
16965#else
16966 return true;
16967#endif
16968}
16969PRESERVE_NONE
16970static bool Interp_EQIntAP(InterpState &S) {
16971 if (!EQ<PT_IntAP>(S, S.PC)) return false;
16972#if USE_TAILCALLS
16973 MUSTTAIL return InterpNext(S);
16974#else
16975 return true;
16976#endif
16977}
16978PRESERVE_NONE
16979static bool Interp_EQIntAPS(InterpState &S) {
16980 if (!EQ<PT_IntAPS>(S, S.PC)) return false;
16981#if USE_TAILCALLS
16982 MUSTTAIL return InterpNext(S);
16983#else
16984 return true;
16985#endif
16986}
16987PRESERVE_NONE
16988static bool Interp_EQBool(InterpState &S) {
16989 if (!EQ<PT_Bool>(S, S.PC)) return false;
16990#if USE_TAILCALLS
16991 MUSTTAIL return InterpNext(S);
16992#else
16993 return true;
16994#endif
16995}
16996PRESERVE_NONE
16997static bool Interp_EQFixedPoint(InterpState &S) {
16998 if (!EQ<PT_FixedPoint>(S, S.PC)) return false;
16999#if USE_TAILCALLS
17000 MUSTTAIL return InterpNext(S);
17001#else
17002 return true;
17003#endif
17004}
17005PRESERVE_NONE
17006static bool Interp_EQPtr(InterpState &S) {
17007 if (!EQ<PT_Ptr>(S, S.PC)) return false;
17008#if USE_TAILCALLS
17009 MUSTTAIL return InterpNext(S);
17010#else
17011 return true;
17012#endif
17013}
17014PRESERVE_NONE
17015static bool Interp_EQMemberPtr(InterpState &S) {
17016 if (!EQ<PT_MemberPtr>(S, S.PC)) return false;
17017#if USE_TAILCALLS
17018 MUSTTAIL return InterpNext(S);
17019#else
17020 return true;
17021#endif
17022}
17023PRESERVE_NONE
17024static bool Interp_EQFloat(InterpState &S) {
17025 if (!EQ<PT_Float>(S, S.PC)) return false;
17026#if USE_TAILCALLS
17027 MUSTTAIL return InterpNext(S);
17028#else
17029 return true;
17030#endif
17031}
17032#endif
17033#ifdef GET_DISASM
17034case OP_EQSint8:
17035 Text.Op = PrintName("EQSint8");
17036 break;
17037case OP_EQUint8:
17038 Text.Op = PrintName("EQUint8");
17039 break;
17040case OP_EQSint16:
17041 Text.Op = PrintName("EQSint16");
17042 break;
17043case OP_EQUint16:
17044 Text.Op = PrintName("EQUint16");
17045 break;
17046case OP_EQSint32:
17047 Text.Op = PrintName("EQSint32");
17048 break;
17049case OP_EQUint32:
17050 Text.Op = PrintName("EQUint32");
17051 break;
17052case OP_EQSint64:
17053 Text.Op = PrintName("EQSint64");
17054 break;
17055case OP_EQUint64:
17056 Text.Op = PrintName("EQUint64");
17057 break;
17058case OP_EQIntAP:
17059 Text.Op = PrintName("EQIntAP");
17060 break;
17061case OP_EQIntAPS:
17062 Text.Op = PrintName("EQIntAPS");
17063 break;
17064case OP_EQBool:
17065 Text.Op = PrintName("EQBool");
17066 break;
17067case OP_EQFixedPoint:
17068 Text.Op = PrintName("EQFixedPoint");
17069 break;
17070case OP_EQPtr:
17071 Text.Op = PrintName("EQPtr");
17072 break;
17073case OP_EQMemberPtr:
17074 Text.Op = PrintName("EQMemberPtr");
17075 break;
17076case OP_EQFloat:
17077 Text.Op = PrintName("EQFloat");
17078 break;
17079#endif
17080#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17081bool emitEQSint8(SourceInfo);
17082bool emitEQUint8(SourceInfo);
17083bool emitEQSint16(SourceInfo);
17084bool emitEQUint16(SourceInfo);
17085bool emitEQSint32(SourceInfo);
17086bool emitEQUint32(SourceInfo);
17087bool emitEQSint64(SourceInfo);
17088bool emitEQUint64(SourceInfo);
17089bool emitEQIntAP(SourceInfo);
17090bool emitEQIntAPS(SourceInfo);
17091bool emitEQBool(SourceInfo);
17092bool emitEQFixedPoint(SourceInfo);
17093bool emitEQPtr(SourceInfo);
17094bool emitEQMemberPtr(SourceInfo);
17095bool emitEQFloat(SourceInfo);
17096#endif
17097#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17098[[nodiscard]] bool emitEQ(PrimType, SourceInfo I);
17099#endif
17100#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
17101bool
17102#if defined(GET_EVAL_IMPL)
17103EvalEmitter
17104#else
17105ByteCodeEmitter
17106#endif
17107::emitEQ(PrimType T0, SourceInfo I) {
17108 switch (T0) {
17109 case PT_Sint8:
17110 return emitEQSint8(I);
17111 case PT_Uint8:
17112 return emitEQUint8(I);
17113 case PT_Sint16:
17114 return emitEQSint16(I);
17115 case PT_Uint16:
17116 return emitEQUint16(I);
17117 case PT_Sint32:
17118 return emitEQSint32(I);
17119 case PT_Uint32:
17120 return emitEQUint32(I);
17121 case PT_Sint64:
17122 return emitEQSint64(I);
17123 case PT_Uint64:
17124 return emitEQUint64(I);
17125 case PT_IntAP:
17126 return emitEQIntAP(I);
17127 case PT_IntAPS:
17128 return emitEQIntAPS(I);
17129 case PT_Bool:
17130 return emitEQBool(I);
17131 case PT_FixedPoint:
17132 return emitEQFixedPoint(I);
17133 case PT_Ptr:
17134 return emitEQPtr(I);
17135 case PT_MemberPtr:
17136 return emitEQMemberPtr(I);
17137 case PT_Float:
17138 return emitEQFloat(I);
17139 }
17140 llvm_unreachable("invalid enum value");
17141}
17142#endif
17143#ifdef GET_LINK_IMPL
17144bool ByteCodeEmitter::emitEQSint8(SourceInfo L) {
17145 return emitOp<>(OP_EQSint8, L);
17146}
17147bool ByteCodeEmitter::emitEQUint8(SourceInfo L) {
17148 return emitOp<>(OP_EQUint8, L);
17149}
17150bool ByteCodeEmitter::emitEQSint16(SourceInfo L) {
17151 return emitOp<>(OP_EQSint16, L);
17152}
17153bool ByteCodeEmitter::emitEQUint16(SourceInfo L) {
17154 return emitOp<>(OP_EQUint16, L);
17155}
17156bool ByteCodeEmitter::emitEQSint32(SourceInfo L) {
17157 return emitOp<>(OP_EQSint32, L);
17158}
17159bool ByteCodeEmitter::emitEQUint32(SourceInfo L) {
17160 return emitOp<>(OP_EQUint32, L);
17161}
17162bool ByteCodeEmitter::emitEQSint64(SourceInfo L) {
17163 return emitOp<>(OP_EQSint64, L);
17164}
17165bool ByteCodeEmitter::emitEQUint64(SourceInfo L) {
17166 return emitOp<>(OP_EQUint64, L);
17167}
17168bool ByteCodeEmitter::emitEQIntAP(SourceInfo L) {
17169 return emitOp<>(OP_EQIntAP, L);
17170}
17171bool ByteCodeEmitter::emitEQIntAPS(SourceInfo L) {
17172 return emitOp<>(OP_EQIntAPS, L);
17173}
17174bool ByteCodeEmitter::emitEQBool(SourceInfo L) {
17175 return emitOp<>(OP_EQBool, L);
17176}
17177bool ByteCodeEmitter::emitEQFixedPoint(SourceInfo L) {
17178 return emitOp<>(OP_EQFixedPoint, L);
17179}
17180bool ByteCodeEmitter::emitEQPtr(SourceInfo L) {
17181 return emitOp<>(OP_EQPtr, L);
17182}
17183bool ByteCodeEmitter::emitEQMemberPtr(SourceInfo L) {
17184 return emitOp<>(OP_EQMemberPtr, L);
17185}
17186bool ByteCodeEmitter::emitEQFloat(SourceInfo L) {
17187 return emitOp<>(OP_EQFloat, L);
17188}
17189#endif
17190#ifdef GET_EVAL_IMPL
17191bool EvalEmitter::emitEQSint8(SourceInfo L) {
17192 if (!isActive()) return true;
17193 CurrentSource = L;
17194 return EQ<PT_Sint8>(S, CodePtr());
17195}
17196bool EvalEmitter::emitEQUint8(SourceInfo L) {
17197 if (!isActive()) return true;
17198 CurrentSource = L;
17199 return EQ<PT_Uint8>(S, CodePtr());
17200}
17201bool EvalEmitter::emitEQSint16(SourceInfo L) {
17202 if (!isActive()) return true;
17203 CurrentSource = L;
17204 return EQ<PT_Sint16>(S, CodePtr());
17205}
17206bool EvalEmitter::emitEQUint16(SourceInfo L) {
17207 if (!isActive()) return true;
17208 CurrentSource = L;
17209 return EQ<PT_Uint16>(S, CodePtr());
17210}
17211bool EvalEmitter::emitEQSint32(SourceInfo L) {
17212 if (!isActive()) return true;
17213 CurrentSource = L;
17214 return EQ<PT_Sint32>(S, CodePtr());
17215}
17216bool EvalEmitter::emitEQUint32(SourceInfo L) {
17217 if (!isActive()) return true;
17218 CurrentSource = L;
17219 return EQ<PT_Uint32>(S, CodePtr());
17220}
17221bool EvalEmitter::emitEQSint64(SourceInfo L) {
17222 if (!isActive()) return true;
17223 CurrentSource = L;
17224 return EQ<PT_Sint64>(S, CodePtr());
17225}
17226bool EvalEmitter::emitEQUint64(SourceInfo L) {
17227 if (!isActive()) return true;
17228 CurrentSource = L;
17229 return EQ<PT_Uint64>(S, CodePtr());
17230}
17231bool EvalEmitter::emitEQIntAP(SourceInfo L) {
17232 if (!isActive()) return true;
17233 CurrentSource = L;
17234 return EQ<PT_IntAP>(S, CodePtr());
17235}
17236bool EvalEmitter::emitEQIntAPS(SourceInfo L) {
17237 if (!isActive()) return true;
17238 CurrentSource = L;
17239 return EQ<PT_IntAPS>(S, CodePtr());
17240}
17241bool EvalEmitter::emitEQBool(SourceInfo L) {
17242 if (!isActive()) return true;
17243 CurrentSource = L;
17244 return EQ<PT_Bool>(S, CodePtr());
17245}
17246bool EvalEmitter::emitEQFixedPoint(SourceInfo L) {
17247 if (!isActive()) return true;
17248 CurrentSource = L;
17249 return EQ<PT_FixedPoint>(S, CodePtr());
17250}
17251bool EvalEmitter::emitEQPtr(SourceInfo L) {
17252 if (!isActive()) return true;
17253 CurrentSource = L;
17254 return EQ<PT_Ptr>(S, CodePtr());
17255}
17256bool EvalEmitter::emitEQMemberPtr(SourceInfo L) {
17257 if (!isActive()) return true;
17258 CurrentSource = L;
17259 return EQ<PT_MemberPtr>(S, CodePtr());
17260}
17261bool EvalEmitter::emitEQFloat(SourceInfo L) {
17262 if (!isActive()) return true;
17263 CurrentSource = L;
17264 return EQ<PT_Float>(S, CodePtr());
17265}
17266#endif
17267#ifdef GET_OPCODE_NAMES
17268OP_EnableLocal,
17269#endif
17270#ifdef GET_INTERPFN_LIST
17271&Interp_EnableLocal,
17272#endif
17273#ifdef GET_INTERPFN_DISPATCHERS
17274PRESERVE_NONE
17275static bool Interp_EnableLocal(InterpState &S) {
17276 {
17277 const auto V0 = ReadArg<uint32_t>(S, S.PC);
17278 EnableLocal(S, V0);
17279 }
17280#if USE_TAILCALLS
17281 MUSTTAIL return InterpNext(S);
17282#else
17283 return true;
17284#endif
17285}
17286#endif
17287#ifdef GET_DISASM
17288case OP_EnableLocal:
17289 Text.Op = PrintName("EnableLocal");
17290 Text.Args.push_back(printArg<uint32_t>(PC));
17291 break;
17292#endif
17293#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17294bool emitEnableLocal( uint32_t , SourceInfo);
17295#endif
17296#ifdef GET_LINK_IMPL
17297bool ByteCodeEmitter::emitEnableLocal( uint32_t A0, SourceInfo L) {
17298 return emitOp<uint32_t>(OP_EnableLocal, A0, L);
17299}
17300#endif
17301#ifdef GET_OPCODE_NAMES
17302OP_EndInit,
17303#endif
17304#ifdef GET_INTERPFN_LIST
17305&Interp_EndInit,
17306#endif
17307#ifdef GET_INTERPFN_DISPATCHERS
17308PRESERVE_NONE
17309static bool Interp_EndInit(InterpState &S) {
17310 EndInit(S);
17311#if USE_TAILCALLS
17312 MUSTTAIL return InterpNext(S);
17313#else
17314 return true;
17315#endif
17316}
17317#endif
17318#ifdef GET_DISASM
17319case OP_EndInit:
17320 Text.Op = PrintName("EndInit");
17321 break;
17322#endif
17323#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17324bool emitEndInit(SourceInfo);
17325#endif
17326#ifdef GET_LINK_IMPL
17327bool ByteCodeEmitter::emitEndInit(SourceInfo L) {
17328 return emitOp<>(OP_EndInit, L);
17329}
17330#endif
17331#ifdef GET_EVAL_IMPL
17332bool EvalEmitter::emitEndInit(SourceInfo L) {
17333 if (!isActive()) return true;
17334 CurrentSource = L;
17335 return EndInit(S);
17336}
17337#endif
17338#ifdef GET_OPCODE_NAMES
17339OP_EndLifetime,
17340#endif
17341#ifdef GET_INTERPFN_LIST
17342&Interp_EndLifetime,
17343#endif
17344#ifdef GET_INTERPFN_DISPATCHERS
17345PRESERVE_NONE
17346static bool Interp_EndLifetime(InterpState &S) {
17347 if (!EndLifetime(S, S.PC)) return false;
17348#if USE_TAILCALLS
17349 MUSTTAIL return InterpNext(S);
17350#else
17351 return true;
17352#endif
17353}
17354#endif
17355#ifdef GET_DISASM
17356case OP_EndLifetime:
17357 Text.Op = PrintName("EndLifetime");
17358 break;
17359#endif
17360#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17361bool emitEndLifetime(SourceInfo);
17362#endif
17363#ifdef GET_LINK_IMPL
17364bool ByteCodeEmitter::emitEndLifetime(SourceInfo L) {
17365 return emitOp<>(OP_EndLifetime, L);
17366}
17367#endif
17368#ifdef GET_EVAL_IMPL
17369bool EvalEmitter::emitEndLifetime(SourceInfo L) {
17370 if (!isActive()) return true;
17371 CurrentSource = L;
17372 return EndLifetime(S, CodePtr());
17373}
17374#endif
17375#ifdef GET_OPCODE_NAMES
17376OP_EndSpeculation,
17377#endif
17378#ifdef GET_INTERPFN_LIST
17379&Interp_EndSpeculation,
17380#endif
17381#ifdef GET_INTERPFN_DISPATCHERS
17382PRESERVE_NONE
17383static bool Interp_EndSpeculation(InterpState &S) {
17384 MUSTTAIL return EndSpeculation(S);
17385}
17386#endif
17387#ifdef GET_DISASM
17388case OP_EndSpeculation:
17389 Text.Op = PrintName("EndSpeculation");
17390 break;
17391#endif
17392#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17393bool emitEndSpeculation(SourceInfo);
17394#endif
17395#ifdef GET_LINK_IMPL
17396bool ByteCodeEmitter::emitEndSpeculation(SourceInfo L) {
17397 return emitOp<>(OP_EndSpeculation, L);
17398}
17399#endif
17400#ifdef GET_EVAL_IMPL
17401bool EvalEmitter::emitEndSpeculation(SourceInfo L) {
17402 if (!isActive()) return true;
17403 CurrentSource = L;
17404return EndSpeculation(S);
17405}
17406#endif
17407#ifdef GET_OPCODE_NAMES
17408OP_Error,
17409#endif
17410#ifdef GET_INTERPFN_LIST
17411&Interp_Error,
17412#endif
17413#ifdef GET_INTERPFN_DISPATCHERS
17414PRESERVE_NONE
17415static bool Interp_Error(InterpState &S) {
17416 if (!Error(S)) return false;
17417#if USE_TAILCALLS
17418 MUSTTAIL return InterpNext(S);
17419#else
17420 return true;
17421#endif
17422}
17423#endif
17424#ifdef GET_DISASM
17425case OP_Error:
17426 Text.Op = PrintName("Error");
17427 break;
17428#endif
17429#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17430bool emitError(SourceInfo);
17431#endif
17432#ifdef GET_LINK_IMPL
17433bool ByteCodeEmitter::emitError(SourceInfo L) {
17434 return emitOp<>(OP_Error, L);
17435}
17436#endif
17437#ifdef GET_EVAL_IMPL
17438bool EvalEmitter::emitError(SourceInfo L) {
17439 if (!isActive()) return true;
17440 CurrentSource = L;
17441 return Error(S);
17442}
17443#endif
17444#ifdef GET_OPCODE_NAMES
17445OP_ExpandPtr,
17446#endif
17447#ifdef GET_INTERPFN_LIST
17448&Interp_ExpandPtr,
17449#endif
17450#ifdef GET_INTERPFN_DISPATCHERS
17451PRESERVE_NONE
17452static bool Interp_ExpandPtr(InterpState &S) {
17453 ExpandPtr(S);
17454#if USE_TAILCALLS
17455 MUSTTAIL return InterpNext(S);
17456#else
17457 return true;
17458#endif
17459}
17460#endif
17461#ifdef GET_DISASM
17462case OP_ExpandPtr:
17463 Text.Op = PrintName("ExpandPtr");
17464 break;
17465#endif
17466#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17467bool emitExpandPtr(SourceInfo);
17468#endif
17469#ifdef GET_LINK_IMPL
17470bool ByteCodeEmitter::emitExpandPtr(SourceInfo L) {
17471 return emitOp<>(OP_ExpandPtr, L);
17472}
17473#endif
17474#ifdef GET_EVAL_IMPL
17475bool EvalEmitter::emitExpandPtr(SourceInfo L) {
17476 if (!isActive()) return true;
17477 CurrentSource = L;
17478 return ExpandPtr(S);
17479}
17480#endif
17481#ifdef GET_OPCODE_NAMES
17482OP_FinishInit,
17483#endif
17484#ifdef GET_INTERPFN_LIST
17485&Interp_FinishInit,
17486#endif
17487#ifdef GET_INTERPFN_DISPATCHERS
17488PRESERVE_NONE
17489static bool Interp_FinishInit(InterpState &S) {
17490 FinishInit(S);
17491#if USE_TAILCALLS
17492 MUSTTAIL return InterpNext(S);
17493#else
17494 return true;
17495#endif
17496}
17497#endif
17498#ifdef GET_DISASM
17499case OP_FinishInit:
17500 Text.Op = PrintName("FinishInit");
17501 break;
17502#endif
17503#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17504bool emitFinishInit(SourceInfo);
17505#endif
17506#ifdef GET_LINK_IMPL
17507bool ByteCodeEmitter::emitFinishInit(SourceInfo L) {
17508 return emitOp<>(OP_FinishInit, L);
17509}
17510#endif
17511#ifdef GET_EVAL_IMPL
17512bool EvalEmitter::emitFinishInit(SourceInfo L) {
17513 if (!isActive()) return true;
17514 CurrentSource = L;
17515 return FinishInit(S);
17516}
17517#endif
17518#ifdef GET_OPCODE_NAMES
17519OP_FinishInitActivate,
17520#endif
17521#ifdef GET_INTERPFN_LIST
17522&Interp_FinishInitActivate,
17523#endif
17524#ifdef GET_INTERPFN_DISPATCHERS
17525PRESERVE_NONE
17526static bool Interp_FinishInitActivate(InterpState &S) {
17527 FinishInitActivate(S);
17528#if USE_TAILCALLS
17529 MUSTTAIL return InterpNext(S);
17530#else
17531 return true;
17532#endif
17533}
17534#endif
17535#ifdef GET_DISASM
17536case OP_FinishInitActivate:
17537 Text.Op = PrintName("FinishInitActivate");
17538 break;
17539#endif
17540#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17541bool emitFinishInitActivate(SourceInfo);
17542#endif
17543#ifdef GET_LINK_IMPL
17544bool ByteCodeEmitter::emitFinishInitActivate(SourceInfo L) {
17545 return emitOp<>(OP_FinishInitActivate, L);
17546}
17547#endif
17548#ifdef GET_EVAL_IMPL
17549bool EvalEmitter::emitFinishInitActivate(SourceInfo L) {
17550 if (!isActive()) return true;
17551 CurrentSource = L;
17552 return FinishInitActivate(S);
17553}
17554#endif
17555#ifdef GET_OPCODE_NAMES
17556OP_FinishInitActivatePop,
17557#endif
17558#ifdef GET_INTERPFN_LIST
17559&Interp_FinishInitActivatePop,
17560#endif
17561#ifdef GET_INTERPFN_DISPATCHERS
17562PRESERVE_NONE
17563static bool Interp_FinishInitActivatePop(InterpState &S) {
17564 FinishInitActivatePop(S);
17565#if USE_TAILCALLS
17566 MUSTTAIL return InterpNext(S);
17567#else
17568 return true;
17569#endif
17570}
17571#endif
17572#ifdef GET_DISASM
17573case OP_FinishInitActivatePop:
17574 Text.Op = PrintName("FinishInitActivatePop");
17575 break;
17576#endif
17577#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17578bool emitFinishInitActivatePop(SourceInfo);
17579#endif
17580#ifdef GET_LINK_IMPL
17581bool ByteCodeEmitter::emitFinishInitActivatePop(SourceInfo L) {
17582 return emitOp<>(OP_FinishInitActivatePop, L);
17583}
17584#endif
17585#ifdef GET_EVAL_IMPL
17586bool EvalEmitter::emitFinishInitActivatePop(SourceInfo L) {
17587 if (!isActive()) return true;
17588 CurrentSource = L;
17589 return FinishInitActivatePop(S);
17590}
17591#endif
17592#ifdef GET_OPCODE_NAMES
17593OP_FinishInitGlobal,
17594#endif
17595#ifdef GET_INTERPFN_LIST
17596&Interp_FinishInitGlobal,
17597#endif
17598#ifdef GET_INTERPFN_DISPATCHERS
17599PRESERVE_NONE
17600static bool Interp_FinishInitGlobal(InterpState &S) {
17601 FinishInitGlobal(S);
17602#if USE_TAILCALLS
17603 MUSTTAIL return InterpNext(S);
17604#else
17605 return true;
17606#endif
17607}
17608#endif
17609#ifdef GET_DISASM
17610case OP_FinishInitGlobal:
17611 Text.Op = PrintName("FinishInitGlobal");
17612 break;
17613#endif
17614#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17615bool emitFinishInitGlobal(SourceInfo);
17616#endif
17617#ifdef GET_LINK_IMPL
17618bool ByteCodeEmitter::emitFinishInitGlobal(SourceInfo L) {
17619 return emitOp<>(OP_FinishInitGlobal, L);
17620}
17621#endif
17622#ifdef GET_EVAL_IMPL
17623bool EvalEmitter::emitFinishInitGlobal(SourceInfo L) {
17624 if (!isActive()) return true;
17625 CurrentSource = L;
17626 return FinishInitGlobal(S);
17627}
17628#endif
17629#ifdef GET_OPCODE_NAMES
17630OP_FinishInitPop,
17631#endif
17632#ifdef GET_INTERPFN_LIST
17633&Interp_FinishInitPop,
17634#endif
17635#ifdef GET_INTERPFN_DISPATCHERS
17636PRESERVE_NONE
17637static bool Interp_FinishInitPop(InterpState &S) {
17638 FinishInitPop(S);
17639#if USE_TAILCALLS
17640 MUSTTAIL return InterpNext(S);
17641#else
17642 return true;
17643#endif
17644}
17645#endif
17646#ifdef GET_DISASM
17647case OP_FinishInitPop:
17648 Text.Op = PrintName("FinishInitPop");
17649 break;
17650#endif
17651#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17652bool emitFinishInitPop(SourceInfo);
17653#endif
17654#ifdef GET_LINK_IMPL
17655bool ByteCodeEmitter::emitFinishInitPop(SourceInfo L) {
17656 return emitOp<>(OP_FinishInitPop, L);
17657}
17658#endif
17659#ifdef GET_EVAL_IMPL
17660bool EvalEmitter::emitFinishInitPop(SourceInfo L) {
17661 if (!isActive()) return true;
17662 CurrentSource = L;
17663 return FinishInitPop(S);
17664}
17665#endif
17666#ifdef GET_OPCODE_NAMES
17667OP_FlipSint8Sint8,
17668OP_FlipSint8Uint8,
17669OP_FlipSint8Sint16,
17670OP_FlipSint8Uint16,
17671OP_FlipSint8Sint32,
17672OP_FlipSint8Uint32,
17673OP_FlipSint8Sint64,
17674OP_FlipSint8Uint64,
17675OP_FlipSint8IntAP,
17676OP_FlipSint8IntAPS,
17677OP_FlipSint8Bool,
17678OP_FlipSint8FixedPoint,
17679OP_FlipSint8Ptr,
17680OP_FlipSint8MemberPtr,
17681OP_FlipSint8Float,
17682OP_FlipUint8Sint8,
17683OP_FlipUint8Uint8,
17684OP_FlipUint8Sint16,
17685OP_FlipUint8Uint16,
17686OP_FlipUint8Sint32,
17687OP_FlipUint8Uint32,
17688OP_FlipUint8Sint64,
17689OP_FlipUint8Uint64,
17690OP_FlipUint8IntAP,
17691OP_FlipUint8IntAPS,
17692OP_FlipUint8Bool,
17693OP_FlipUint8FixedPoint,
17694OP_FlipUint8Ptr,
17695OP_FlipUint8MemberPtr,
17696OP_FlipUint8Float,
17697OP_FlipSint16Sint8,
17698OP_FlipSint16Uint8,
17699OP_FlipSint16Sint16,
17700OP_FlipSint16Uint16,
17701OP_FlipSint16Sint32,
17702OP_FlipSint16Uint32,
17703OP_FlipSint16Sint64,
17704OP_FlipSint16Uint64,
17705OP_FlipSint16IntAP,
17706OP_FlipSint16IntAPS,
17707OP_FlipSint16Bool,
17708OP_FlipSint16FixedPoint,
17709OP_FlipSint16Ptr,
17710OP_FlipSint16MemberPtr,
17711OP_FlipSint16Float,
17712OP_FlipUint16Sint8,
17713OP_FlipUint16Uint8,
17714OP_FlipUint16Sint16,
17715OP_FlipUint16Uint16,
17716OP_FlipUint16Sint32,
17717OP_FlipUint16Uint32,
17718OP_FlipUint16Sint64,
17719OP_FlipUint16Uint64,
17720OP_FlipUint16IntAP,
17721OP_FlipUint16IntAPS,
17722OP_FlipUint16Bool,
17723OP_FlipUint16FixedPoint,
17724OP_FlipUint16Ptr,
17725OP_FlipUint16MemberPtr,
17726OP_FlipUint16Float,
17727OP_FlipSint32Sint8,
17728OP_FlipSint32Uint8,
17729OP_FlipSint32Sint16,
17730OP_FlipSint32Uint16,
17731OP_FlipSint32Sint32,
17732OP_FlipSint32Uint32,
17733OP_FlipSint32Sint64,
17734OP_FlipSint32Uint64,
17735OP_FlipSint32IntAP,
17736OP_FlipSint32IntAPS,
17737OP_FlipSint32Bool,
17738OP_FlipSint32FixedPoint,
17739OP_FlipSint32Ptr,
17740OP_FlipSint32MemberPtr,
17741OP_FlipSint32Float,
17742OP_FlipUint32Sint8,
17743OP_FlipUint32Uint8,
17744OP_FlipUint32Sint16,
17745OP_FlipUint32Uint16,
17746OP_FlipUint32Sint32,
17747OP_FlipUint32Uint32,
17748OP_FlipUint32Sint64,
17749OP_FlipUint32Uint64,
17750OP_FlipUint32IntAP,
17751OP_FlipUint32IntAPS,
17752OP_FlipUint32Bool,
17753OP_FlipUint32FixedPoint,
17754OP_FlipUint32Ptr,
17755OP_FlipUint32MemberPtr,
17756OP_FlipUint32Float,
17757OP_FlipSint64Sint8,
17758OP_FlipSint64Uint8,
17759OP_FlipSint64Sint16,
17760OP_FlipSint64Uint16,
17761OP_FlipSint64Sint32,
17762OP_FlipSint64Uint32,
17763OP_FlipSint64Sint64,
17764OP_FlipSint64Uint64,
17765OP_FlipSint64IntAP,
17766OP_FlipSint64IntAPS,
17767OP_FlipSint64Bool,
17768OP_FlipSint64FixedPoint,
17769OP_FlipSint64Ptr,
17770OP_FlipSint64MemberPtr,
17771OP_FlipSint64Float,
17772OP_FlipUint64Sint8,
17773OP_FlipUint64Uint8,
17774OP_FlipUint64Sint16,
17775OP_FlipUint64Uint16,
17776OP_FlipUint64Sint32,
17777OP_FlipUint64Uint32,
17778OP_FlipUint64Sint64,
17779OP_FlipUint64Uint64,
17780OP_FlipUint64IntAP,
17781OP_FlipUint64IntAPS,
17782OP_FlipUint64Bool,
17783OP_FlipUint64FixedPoint,
17784OP_FlipUint64Ptr,
17785OP_FlipUint64MemberPtr,
17786OP_FlipUint64Float,
17787OP_FlipIntAPSint8,
17788OP_FlipIntAPUint8,
17789OP_FlipIntAPSint16,
17790OP_FlipIntAPUint16,
17791OP_FlipIntAPSint32,
17792OP_FlipIntAPUint32,
17793OP_FlipIntAPSint64,
17794OP_FlipIntAPUint64,
17795OP_FlipIntAPIntAP,
17796OP_FlipIntAPIntAPS,
17797OP_FlipIntAPBool,
17798OP_FlipIntAPFixedPoint,
17799OP_FlipIntAPPtr,
17800OP_FlipIntAPMemberPtr,
17801OP_FlipIntAPFloat,
17802OP_FlipIntAPSSint8,
17803OP_FlipIntAPSUint8,
17804OP_FlipIntAPSSint16,
17805OP_FlipIntAPSUint16,
17806OP_FlipIntAPSSint32,
17807OP_FlipIntAPSUint32,
17808OP_FlipIntAPSSint64,
17809OP_FlipIntAPSUint64,
17810OP_FlipIntAPSIntAP,
17811OP_FlipIntAPSIntAPS,
17812OP_FlipIntAPSBool,
17813OP_FlipIntAPSFixedPoint,
17814OP_FlipIntAPSPtr,
17815OP_FlipIntAPSMemberPtr,
17816OP_FlipIntAPSFloat,
17817OP_FlipBoolSint8,
17818OP_FlipBoolUint8,
17819OP_FlipBoolSint16,
17820OP_FlipBoolUint16,
17821OP_FlipBoolSint32,
17822OP_FlipBoolUint32,
17823OP_FlipBoolSint64,
17824OP_FlipBoolUint64,
17825OP_FlipBoolIntAP,
17826OP_FlipBoolIntAPS,
17827OP_FlipBoolBool,
17828OP_FlipBoolFixedPoint,
17829OP_FlipBoolPtr,
17830OP_FlipBoolMemberPtr,
17831OP_FlipBoolFloat,
17832OP_FlipFixedPointSint8,
17833OP_FlipFixedPointUint8,
17834OP_FlipFixedPointSint16,
17835OP_FlipFixedPointUint16,
17836OP_FlipFixedPointSint32,
17837OP_FlipFixedPointUint32,
17838OP_FlipFixedPointSint64,
17839OP_FlipFixedPointUint64,
17840OP_FlipFixedPointIntAP,
17841OP_FlipFixedPointIntAPS,
17842OP_FlipFixedPointBool,
17843OP_FlipFixedPointFixedPoint,
17844OP_FlipFixedPointPtr,
17845OP_FlipFixedPointMemberPtr,
17846OP_FlipFixedPointFloat,
17847OP_FlipPtrSint8,
17848OP_FlipPtrUint8,
17849OP_FlipPtrSint16,
17850OP_FlipPtrUint16,
17851OP_FlipPtrSint32,
17852OP_FlipPtrUint32,
17853OP_FlipPtrSint64,
17854OP_FlipPtrUint64,
17855OP_FlipPtrIntAP,
17856OP_FlipPtrIntAPS,
17857OP_FlipPtrBool,
17858OP_FlipPtrFixedPoint,
17859OP_FlipPtrPtr,
17860OP_FlipPtrMemberPtr,
17861OP_FlipPtrFloat,
17862OP_FlipMemberPtrSint8,
17863OP_FlipMemberPtrUint8,
17864OP_FlipMemberPtrSint16,
17865OP_FlipMemberPtrUint16,
17866OP_FlipMemberPtrSint32,
17867OP_FlipMemberPtrUint32,
17868OP_FlipMemberPtrSint64,
17869OP_FlipMemberPtrUint64,
17870OP_FlipMemberPtrIntAP,
17871OP_FlipMemberPtrIntAPS,
17872OP_FlipMemberPtrBool,
17873OP_FlipMemberPtrFixedPoint,
17874OP_FlipMemberPtrPtr,
17875OP_FlipMemberPtrMemberPtr,
17876OP_FlipMemberPtrFloat,
17877OP_FlipFloatSint8,
17878OP_FlipFloatUint8,
17879OP_FlipFloatSint16,
17880OP_FlipFloatUint16,
17881OP_FlipFloatSint32,
17882OP_FlipFloatUint32,
17883OP_FlipFloatSint64,
17884OP_FlipFloatUint64,
17885OP_FlipFloatIntAP,
17886OP_FlipFloatIntAPS,
17887OP_FlipFloatBool,
17888OP_FlipFloatFixedPoint,
17889OP_FlipFloatPtr,
17890OP_FlipFloatMemberPtr,
17891OP_FlipFloatFloat,
17892#endif
17893#ifdef GET_INTERPFN_LIST
17894&Interp_FlipSint8Sint8,
17895&Interp_FlipSint8Uint8,
17896&Interp_FlipSint8Sint16,
17897&Interp_FlipSint8Uint16,
17898&Interp_FlipSint8Sint32,
17899&Interp_FlipSint8Uint32,
17900&Interp_FlipSint8Sint64,
17901&Interp_FlipSint8Uint64,
17902&Interp_FlipSint8IntAP,
17903&Interp_FlipSint8IntAPS,
17904&Interp_FlipSint8Bool,
17905&Interp_FlipSint8FixedPoint,
17906&Interp_FlipSint8Ptr,
17907&Interp_FlipSint8MemberPtr,
17908&Interp_FlipSint8Float,
17909&Interp_FlipUint8Sint8,
17910&Interp_FlipUint8Uint8,
17911&Interp_FlipUint8Sint16,
17912&Interp_FlipUint8Uint16,
17913&Interp_FlipUint8Sint32,
17914&Interp_FlipUint8Uint32,
17915&Interp_FlipUint8Sint64,
17916&Interp_FlipUint8Uint64,
17917&Interp_FlipUint8IntAP,
17918&Interp_FlipUint8IntAPS,
17919&Interp_FlipUint8Bool,
17920&Interp_FlipUint8FixedPoint,
17921&Interp_FlipUint8Ptr,
17922&Interp_FlipUint8MemberPtr,
17923&Interp_FlipUint8Float,
17924&Interp_FlipSint16Sint8,
17925&Interp_FlipSint16Uint8,
17926&Interp_FlipSint16Sint16,
17927&Interp_FlipSint16Uint16,
17928&Interp_FlipSint16Sint32,
17929&Interp_FlipSint16Uint32,
17930&Interp_FlipSint16Sint64,
17931&Interp_FlipSint16Uint64,
17932&Interp_FlipSint16IntAP,
17933&Interp_FlipSint16IntAPS,
17934&Interp_FlipSint16Bool,
17935&Interp_FlipSint16FixedPoint,
17936&Interp_FlipSint16Ptr,
17937&Interp_FlipSint16MemberPtr,
17938&Interp_FlipSint16Float,
17939&Interp_FlipUint16Sint8,
17940&Interp_FlipUint16Uint8,
17941&Interp_FlipUint16Sint16,
17942&Interp_FlipUint16Uint16,
17943&Interp_FlipUint16Sint32,
17944&Interp_FlipUint16Uint32,
17945&Interp_FlipUint16Sint64,
17946&Interp_FlipUint16Uint64,
17947&Interp_FlipUint16IntAP,
17948&Interp_FlipUint16IntAPS,
17949&Interp_FlipUint16Bool,
17950&Interp_FlipUint16FixedPoint,
17951&Interp_FlipUint16Ptr,
17952&Interp_FlipUint16MemberPtr,
17953&Interp_FlipUint16Float,
17954&Interp_FlipSint32Sint8,
17955&Interp_FlipSint32Uint8,
17956&Interp_FlipSint32Sint16,
17957&Interp_FlipSint32Uint16,
17958&Interp_FlipSint32Sint32,
17959&Interp_FlipSint32Uint32,
17960&Interp_FlipSint32Sint64,
17961&Interp_FlipSint32Uint64,
17962&Interp_FlipSint32IntAP,
17963&Interp_FlipSint32IntAPS,
17964&Interp_FlipSint32Bool,
17965&Interp_FlipSint32FixedPoint,
17966&Interp_FlipSint32Ptr,
17967&Interp_FlipSint32MemberPtr,
17968&Interp_FlipSint32Float,
17969&Interp_FlipUint32Sint8,
17970&Interp_FlipUint32Uint8,
17971&Interp_FlipUint32Sint16,
17972&Interp_FlipUint32Uint16,
17973&Interp_FlipUint32Sint32,
17974&Interp_FlipUint32Uint32,
17975&Interp_FlipUint32Sint64,
17976&Interp_FlipUint32Uint64,
17977&Interp_FlipUint32IntAP,
17978&Interp_FlipUint32IntAPS,
17979&Interp_FlipUint32Bool,
17980&Interp_FlipUint32FixedPoint,
17981&Interp_FlipUint32Ptr,
17982&Interp_FlipUint32MemberPtr,
17983&Interp_FlipUint32Float,
17984&Interp_FlipSint64Sint8,
17985&Interp_FlipSint64Uint8,
17986&Interp_FlipSint64Sint16,
17987&Interp_FlipSint64Uint16,
17988&Interp_FlipSint64Sint32,
17989&Interp_FlipSint64Uint32,
17990&Interp_FlipSint64Sint64,
17991&Interp_FlipSint64Uint64,
17992&Interp_FlipSint64IntAP,
17993&Interp_FlipSint64IntAPS,
17994&Interp_FlipSint64Bool,
17995&Interp_FlipSint64FixedPoint,
17996&Interp_FlipSint64Ptr,
17997&Interp_FlipSint64MemberPtr,
17998&Interp_FlipSint64Float,
17999&Interp_FlipUint64Sint8,
18000&Interp_FlipUint64Uint8,
18001&Interp_FlipUint64Sint16,
18002&Interp_FlipUint64Uint16,
18003&Interp_FlipUint64Sint32,
18004&Interp_FlipUint64Uint32,
18005&Interp_FlipUint64Sint64,
18006&Interp_FlipUint64Uint64,
18007&Interp_FlipUint64IntAP,
18008&Interp_FlipUint64IntAPS,
18009&Interp_FlipUint64Bool,
18010&Interp_FlipUint64FixedPoint,
18011&Interp_FlipUint64Ptr,
18012&Interp_FlipUint64MemberPtr,
18013&Interp_FlipUint64Float,
18014&Interp_FlipIntAPSint8,
18015&Interp_FlipIntAPUint8,
18016&Interp_FlipIntAPSint16,
18017&Interp_FlipIntAPUint16,
18018&Interp_FlipIntAPSint32,
18019&Interp_FlipIntAPUint32,
18020&Interp_FlipIntAPSint64,
18021&Interp_FlipIntAPUint64,
18022&Interp_FlipIntAPIntAP,
18023&Interp_FlipIntAPIntAPS,
18024&Interp_FlipIntAPBool,
18025&Interp_FlipIntAPFixedPoint,
18026&Interp_FlipIntAPPtr,
18027&Interp_FlipIntAPMemberPtr,
18028&Interp_FlipIntAPFloat,
18029&Interp_FlipIntAPSSint8,
18030&Interp_FlipIntAPSUint8,
18031&Interp_FlipIntAPSSint16,
18032&Interp_FlipIntAPSUint16,
18033&Interp_FlipIntAPSSint32,
18034&Interp_FlipIntAPSUint32,
18035&Interp_FlipIntAPSSint64,
18036&Interp_FlipIntAPSUint64,
18037&Interp_FlipIntAPSIntAP,
18038&Interp_FlipIntAPSIntAPS,
18039&Interp_FlipIntAPSBool,
18040&Interp_FlipIntAPSFixedPoint,
18041&Interp_FlipIntAPSPtr,
18042&Interp_FlipIntAPSMemberPtr,
18043&Interp_FlipIntAPSFloat,
18044&Interp_FlipBoolSint8,
18045&Interp_FlipBoolUint8,
18046&Interp_FlipBoolSint16,
18047&Interp_FlipBoolUint16,
18048&Interp_FlipBoolSint32,
18049&Interp_FlipBoolUint32,
18050&Interp_FlipBoolSint64,
18051&Interp_FlipBoolUint64,
18052&Interp_FlipBoolIntAP,
18053&Interp_FlipBoolIntAPS,
18054&Interp_FlipBoolBool,
18055&Interp_FlipBoolFixedPoint,
18056&Interp_FlipBoolPtr,
18057&Interp_FlipBoolMemberPtr,
18058&Interp_FlipBoolFloat,
18059&Interp_FlipFixedPointSint8,
18060&Interp_FlipFixedPointUint8,
18061&Interp_FlipFixedPointSint16,
18062&Interp_FlipFixedPointUint16,
18063&Interp_FlipFixedPointSint32,
18064&Interp_FlipFixedPointUint32,
18065&Interp_FlipFixedPointSint64,
18066&Interp_FlipFixedPointUint64,
18067&Interp_FlipFixedPointIntAP,
18068&Interp_FlipFixedPointIntAPS,
18069&Interp_FlipFixedPointBool,
18070&Interp_FlipFixedPointFixedPoint,
18071&Interp_FlipFixedPointPtr,
18072&Interp_FlipFixedPointMemberPtr,
18073&Interp_FlipFixedPointFloat,
18074&Interp_FlipPtrSint8,
18075&Interp_FlipPtrUint8,
18076&Interp_FlipPtrSint16,
18077&Interp_FlipPtrUint16,
18078&Interp_FlipPtrSint32,
18079&Interp_FlipPtrUint32,
18080&Interp_FlipPtrSint64,
18081&Interp_FlipPtrUint64,
18082&Interp_FlipPtrIntAP,
18083&Interp_FlipPtrIntAPS,
18084&Interp_FlipPtrBool,
18085&Interp_FlipPtrFixedPoint,
18086&Interp_FlipPtrPtr,
18087&Interp_FlipPtrMemberPtr,
18088&Interp_FlipPtrFloat,
18089&Interp_FlipMemberPtrSint8,
18090&Interp_FlipMemberPtrUint8,
18091&Interp_FlipMemberPtrSint16,
18092&Interp_FlipMemberPtrUint16,
18093&Interp_FlipMemberPtrSint32,
18094&Interp_FlipMemberPtrUint32,
18095&Interp_FlipMemberPtrSint64,
18096&Interp_FlipMemberPtrUint64,
18097&Interp_FlipMemberPtrIntAP,
18098&Interp_FlipMemberPtrIntAPS,
18099&Interp_FlipMemberPtrBool,
18100&Interp_FlipMemberPtrFixedPoint,
18101&Interp_FlipMemberPtrPtr,
18102&Interp_FlipMemberPtrMemberPtr,
18103&Interp_FlipMemberPtrFloat,
18104&Interp_FlipFloatSint8,
18105&Interp_FlipFloatUint8,
18106&Interp_FlipFloatSint16,
18107&Interp_FlipFloatUint16,
18108&Interp_FlipFloatSint32,
18109&Interp_FlipFloatUint32,
18110&Interp_FlipFloatSint64,
18111&Interp_FlipFloatUint64,
18112&Interp_FlipFloatIntAP,
18113&Interp_FlipFloatIntAPS,
18114&Interp_FlipFloatBool,
18115&Interp_FlipFloatFixedPoint,
18116&Interp_FlipFloatPtr,
18117&Interp_FlipFloatMemberPtr,
18118&Interp_FlipFloatFloat,
18119#endif
18120#ifdef GET_INTERPFN_DISPATCHERS
18121PRESERVE_NONE
18122static bool Interp_FlipSint8Sint8(InterpState &S) {
18123 Flip<PT_Sint8, PT_Sint8>(S);
18124#if USE_TAILCALLS
18125 MUSTTAIL return InterpNext(S);
18126#else
18127 return true;
18128#endif
18129}
18130PRESERVE_NONE
18131static bool Interp_FlipSint8Uint8(InterpState &S) {
18132 Flip<PT_Sint8, PT_Uint8>(S);
18133#if USE_TAILCALLS
18134 MUSTTAIL return InterpNext(S);
18135#else
18136 return true;
18137#endif
18138}
18139PRESERVE_NONE
18140static bool Interp_FlipSint8Sint16(InterpState &S) {
18141 Flip<PT_Sint8, PT_Sint16>(S);
18142#if USE_TAILCALLS
18143 MUSTTAIL return InterpNext(S);
18144#else
18145 return true;
18146#endif
18147}
18148PRESERVE_NONE
18149static bool Interp_FlipSint8Uint16(InterpState &S) {
18150 Flip<PT_Sint8, PT_Uint16>(S);
18151#if USE_TAILCALLS
18152 MUSTTAIL return InterpNext(S);
18153#else
18154 return true;
18155#endif
18156}
18157PRESERVE_NONE
18158static bool Interp_FlipSint8Sint32(InterpState &S) {
18159 Flip<PT_Sint8, PT_Sint32>(S);
18160#if USE_TAILCALLS
18161 MUSTTAIL return InterpNext(S);
18162#else
18163 return true;
18164#endif
18165}
18166PRESERVE_NONE
18167static bool Interp_FlipSint8Uint32(InterpState &S) {
18168 Flip<PT_Sint8, PT_Uint32>(S);
18169#if USE_TAILCALLS
18170 MUSTTAIL return InterpNext(S);
18171#else
18172 return true;
18173#endif
18174}
18175PRESERVE_NONE
18176static bool Interp_FlipSint8Sint64(InterpState &S) {
18177 Flip<PT_Sint8, PT_Sint64>(S);
18178#if USE_TAILCALLS
18179 MUSTTAIL return InterpNext(S);
18180#else
18181 return true;
18182#endif
18183}
18184PRESERVE_NONE
18185static bool Interp_FlipSint8Uint64(InterpState &S) {
18186 Flip<PT_Sint8, PT_Uint64>(S);
18187#if USE_TAILCALLS
18188 MUSTTAIL return InterpNext(S);
18189#else
18190 return true;
18191#endif
18192}
18193PRESERVE_NONE
18194static bool Interp_FlipSint8IntAP(InterpState &S) {
18195 Flip<PT_Sint8, PT_IntAP>(S);
18196#if USE_TAILCALLS
18197 MUSTTAIL return InterpNext(S);
18198#else
18199 return true;
18200#endif
18201}
18202PRESERVE_NONE
18203static bool Interp_FlipSint8IntAPS(InterpState &S) {
18204 Flip<PT_Sint8, PT_IntAPS>(S);
18205#if USE_TAILCALLS
18206 MUSTTAIL return InterpNext(S);
18207#else
18208 return true;
18209#endif
18210}
18211PRESERVE_NONE
18212static bool Interp_FlipSint8Bool(InterpState &S) {
18213 Flip<PT_Sint8, PT_Bool>(S);
18214#if USE_TAILCALLS
18215 MUSTTAIL return InterpNext(S);
18216#else
18217 return true;
18218#endif
18219}
18220PRESERVE_NONE
18221static bool Interp_FlipSint8FixedPoint(InterpState &S) {
18222 Flip<PT_Sint8, PT_FixedPoint>(S);
18223#if USE_TAILCALLS
18224 MUSTTAIL return InterpNext(S);
18225#else
18226 return true;
18227#endif
18228}
18229PRESERVE_NONE
18230static bool Interp_FlipSint8Ptr(InterpState &S) {
18231 Flip<PT_Sint8, PT_Ptr>(S);
18232#if USE_TAILCALLS
18233 MUSTTAIL return InterpNext(S);
18234#else
18235 return true;
18236#endif
18237}
18238PRESERVE_NONE
18239static bool Interp_FlipSint8MemberPtr(InterpState &S) {
18240 Flip<PT_Sint8, PT_MemberPtr>(S);
18241#if USE_TAILCALLS
18242 MUSTTAIL return InterpNext(S);
18243#else
18244 return true;
18245#endif
18246}
18247PRESERVE_NONE
18248static bool Interp_FlipSint8Float(InterpState &S) {
18249 Flip<PT_Sint8, PT_Float>(S);
18250#if USE_TAILCALLS
18251 MUSTTAIL return InterpNext(S);
18252#else
18253 return true;
18254#endif
18255}
18256PRESERVE_NONE
18257static bool Interp_FlipUint8Sint8(InterpState &S) {
18258 Flip<PT_Uint8, PT_Sint8>(S);
18259#if USE_TAILCALLS
18260 MUSTTAIL return InterpNext(S);
18261#else
18262 return true;
18263#endif
18264}
18265PRESERVE_NONE
18266static bool Interp_FlipUint8Uint8(InterpState &S) {
18267 Flip<PT_Uint8, PT_Uint8>(S);
18268#if USE_TAILCALLS
18269 MUSTTAIL return InterpNext(S);
18270#else
18271 return true;
18272#endif
18273}
18274PRESERVE_NONE
18275static bool Interp_FlipUint8Sint16(InterpState &S) {
18276 Flip<PT_Uint8, PT_Sint16>(S);
18277#if USE_TAILCALLS
18278 MUSTTAIL return InterpNext(S);
18279#else
18280 return true;
18281#endif
18282}
18283PRESERVE_NONE
18284static bool Interp_FlipUint8Uint16(InterpState &S) {
18285 Flip<PT_Uint8, PT_Uint16>(S);
18286#if USE_TAILCALLS
18287 MUSTTAIL return InterpNext(S);
18288#else
18289 return true;
18290#endif
18291}
18292PRESERVE_NONE
18293static bool Interp_FlipUint8Sint32(InterpState &S) {
18294 Flip<PT_Uint8, PT_Sint32>(S);
18295#if USE_TAILCALLS
18296 MUSTTAIL return InterpNext(S);
18297#else
18298 return true;
18299#endif
18300}
18301PRESERVE_NONE
18302static bool Interp_FlipUint8Uint32(InterpState &S) {
18303 Flip<PT_Uint8, PT_Uint32>(S);
18304#if USE_TAILCALLS
18305 MUSTTAIL return InterpNext(S);
18306#else
18307 return true;
18308#endif
18309}
18310PRESERVE_NONE
18311static bool Interp_FlipUint8Sint64(InterpState &S) {
18312 Flip<PT_Uint8, PT_Sint64>(S);
18313#if USE_TAILCALLS
18314 MUSTTAIL return InterpNext(S);
18315#else
18316 return true;
18317#endif
18318}
18319PRESERVE_NONE
18320static bool Interp_FlipUint8Uint64(InterpState &S) {
18321 Flip<PT_Uint8, PT_Uint64>(S);
18322#if USE_TAILCALLS
18323 MUSTTAIL return InterpNext(S);
18324#else
18325 return true;
18326#endif
18327}
18328PRESERVE_NONE
18329static bool Interp_FlipUint8IntAP(InterpState &S) {
18330 Flip<PT_Uint8, PT_IntAP>(S);
18331#if USE_TAILCALLS
18332 MUSTTAIL return InterpNext(S);
18333#else
18334 return true;
18335#endif
18336}
18337PRESERVE_NONE
18338static bool Interp_FlipUint8IntAPS(InterpState &S) {
18339 Flip<PT_Uint8, PT_IntAPS>(S);
18340#if USE_TAILCALLS
18341 MUSTTAIL return InterpNext(S);
18342#else
18343 return true;
18344#endif
18345}
18346PRESERVE_NONE
18347static bool Interp_FlipUint8Bool(InterpState &S) {
18348 Flip<PT_Uint8, PT_Bool>(S);
18349#if USE_TAILCALLS
18350 MUSTTAIL return InterpNext(S);
18351#else
18352 return true;
18353#endif
18354}
18355PRESERVE_NONE
18356static bool Interp_FlipUint8FixedPoint(InterpState &S) {
18357 Flip<PT_Uint8, PT_FixedPoint>(S);
18358#if USE_TAILCALLS
18359 MUSTTAIL return InterpNext(S);
18360#else
18361 return true;
18362#endif
18363}
18364PRESERVE_NONE
18365static bool Interp_FlipUint8Ptr(InterpState &S) {
18366 Flip<PT_Uint8, PT_Ptr>(S);
18367#if USE_TAILCALLS
18368 MUSTTAIL return InterpNext(S);
18369#else
18370 return true;
18371#endif
18372}
18373PRESERVE_NONE
18374static bool Interp_FlipUint8MemberPtr(InterpState &S) {
18375 Flip<PT_Uint8, PT_MemberPtr>(S);
18376#if USE_TAILCALLS
18377 MUSTTAIL return InterpNext(S);
18378#else
18379 return true;
18380#endif
18381}
18382PRESERVE_NONE
18383static bool Interp_FlipUint8Float(InterpState &S) {
18384 Flip<PT_Uint8, PT_Float>(S);
18385#if USE_TAILCALLS
18386 MUSTTAIL return InterpNext(S);
18387#else
18388 return true;
18389#endif
18390}
18391PRESERVE_NONE
18392static bool Interp_FlipSint16Sint8(InterpState &S) {
18393 Flip<PT_Sint16, PT_Sint8>(S);
18394#if USE_TAILCALLS
18395 MUSTTAIL return InterpNext(S);
18396#else
18397 return true;
18398#endif
18399}
18400PRESERVE_NONE
18401static bool Interp_FlipSint16Uint8(InterpState &S) {
18402 Flip<PT_Sint16, PT_Uint8>(S);
18403#if USE_TAILCALLS
18404 MUSTTAIL return InterpNext(S);
18405#else
18406 return true;
18407#endif
18408}
18409PRESERVE_NONE
18410static bool Interp_FlipSint16Sint16(InterpState &S) {
18411 Flip<PT_Sint16, PT_Sint16>(S);
18412#if USE_TAILCALLS
18413 MUSTTAIL return InterpNext(S);
18414#else
18415 return true;
18416#endif
18417}
18418PRESERVE_NONE
18419static bool Interp_FlipSint16Uint16(InterpState &S) {
18420 Flip<PT_Sint16, PT_Uint16>(S);
18421#if USE_TAILCALLS
18422 MUSTTAIL return InterpNext(S);
18423#else
18424 return true;
18425#endif
18426}
18427PRESERVE_NONE
18428static bool Interp_FlipSint16Sint32(InterpState &S) {
18429 Flip<PT_Sint16, PT_Sint32>(S);
18430#if USE_TAILCALLS
18431 MUSTTAIL return InterpNext(S);
18432#else
18433 return true;
18434#endif
18435}
18436PRESERVE_NONE
18437static bool Interp_FlipSint16Uint32(InterpState &S) {
18438 Flip<PT_Sint16, PT_Uint32>(S);
18439#if USE_TAILCALLS
18440 MUSTTAIL return InterpNext(S);
18441#else
18442 return true;
18443#endif
18444}
18445PRESERVE_NONE
18446static bool Interp_FlipSint16Sint64(InterpState &S) {
18447 Flip<PT_Sint16, PT_Sint64>(S);
18448#if USE_TAILCALLS
18449 MUSTTAIL return InterpNext(S);
18450#else
18451 return true;
18452#endif
18453}
18454PRESERVE_NONE
18455static bool Interp_FlipSint16Uint64(InterpState &S) {
18456 Flip<PT_Sint16, PT_Uint64>(S);
18457#if USE_TAILCALLS
18458 MUSTTAIL return InterpNext(S);
18459#else
18460 return true;
18461#endif
18462}
18463PRESERVE_NONE
18464static bool Interp_FlipSint16IntAP(InterpState &S) {
18465 Flip<PT_Sint16, PT_IntAP>(S);
18466#if USE_TAILCALLS
18467 MUSTTAIL return InterpNext(S);
18468#else
18469 return true;
18470#endif
18471}
18472PRESERVE_NONE
18473static bool Interp_FlipSint16IntAPS(InterpState &S) {
18474 Flip<PT_Sint16, PT_IntAPS>(S);
18475#if USE_TAILCALLS
18476 MUSTTAIL return InterpNext(S);
18477#else
18478 return true;
18479#endif
18480}
18481PRESERVE_NONE
18482static bool Interp_FlipSint16Bool(InterpState &S) {
18483 Flip<PT_Sint16, PT_Bool>(S);
18484#if USE_TAILCALLS
18485 MUSTTAIL return InterpNext(S);
18486#else
18487 return true;
18488#endif
18489}
18490PRESERVE_NONE
18491static bool Interp_FlipSint16FixedPoint(InterpState &S) {
18492 Flip<PT_Sint16, PT_FixedPoint>(S);
18493#if USE_TAILCALLS
18494 MUSTTAIL return InterpNext(S);
18495#else
18496 return true;
18497#endif
18498}
18499PRESERVE_NONE
18500static bool Interp_FlipSint16Ptr(InterpState &S) {
18501 Flip<PT_Sint16, PT_Ptr>(S);
18502#if USE_TAILCALLS
18503 MUSTTAIL return InterpNext(S);
18504#else
18505 return true;
18506#endif
18507}
18508PRESERVE_NONE
18509static bool Interp_FlipSint16MemberPtr(InterpState &S) {
18510 Flip<PT_Sint16, PT_MemberPtr>(S);
18511#if USE_TAILCALLS
18512 MUSTTAIL return InterpNext(S);
18513#else
18514 return true;
18515#endif
18516}
18517PRESERVE_NONE
18518static bool Interp_FlipSint16Float(InterpState &S) {
18519 Flip<PT_Sint16, PT_Float>(S);
18520#if USE_TAILCALLS
18521 MUSTTAIL return InterpNext(S);
18522#else
18523 return true;
18524#endif
18525}
18526PRESERVE_NONE
18527static bool Interp_FlipUint16Sint8(InterpState &S) {
18528 Flip<PT_Uint16, PT_Sint8>(S);
18529#if USE_TAILCALLS
18530 MUSTTAIL return InterpNext(S);
18531#else
18532 return true;
18533#endif
18534}
18535PRESERVE_NONE
18536static bool Interp_FlipUint16Uint8(InterpState &S) {
18537 Flip<PT_Uint16, PT_Uint8>(S);
18538#if USE_TAILCALLS
18539 MUSTTAIL return InterpNext(S);
18540#else
18541 return true;
18542#endif
18543}
18544PRESERVE_NONE
18545static bool Interp_FlipUint16Sint16(InterpState &S) {
18546 Flip<PT_Uint16, PT_Sint16>(S);
18547#if USE_TAILCALLS
18548 MUSTTAIL return InterpNext(S);
18549#else
18550 return true;
18551#endif
18552}
18553PRESERVE_NONE
18554static bool Interp_FlipUint16Uint16(InterpState &S) {
18555 Flip<PT_Uint16, PT_Uint16>(S);
18556#if USE_TAILCALLS
18557 MUSTTAIL return InterpNext(S);
18558#else
18559 return true;
18560#endif
18561}
18562PRESERVE_NONE
18563static bool Interp_FlipUint16Sint32(InterpState &S) {
18564 Flip<PT_Uint16, PT_Sint32>(S);
18565#if USE_TAILCALLS
18566 MUSTTAIL return InterpNext(S);
18567#else
18568 return true;
18569#endif
18570}
18571PRESERVE_NONE
18572static bool Interp_FlipUint16Uint32(InterpState &S) {
18573 Flip<PT_Uint16, PT_Uint32>(S);
18574#if USE_TAILCALLS
18575 MUSTTAIL return InterpNext(S);
18576#else
18577 return true;
18578#endif
18579}
18580PRESERVE_NONE
18581static bool Interp_FlipUint16Sint64(InterpState &S) {
18582 Flip<PT_Uint16, PT_Sint64>(S);
18583#if USE_TAILCALLS
18584 MUSTTAIL return InterpNext(S);
18585#else
18586 return true;
18587#endif
18588}
18589PRESERVE_NONE
18590static bool Interp_FlipUint16Uint64(InterpState &S) {
18591 Flip<PT_Uint16, PT_Uint64>(S);
18592#if USE_TAILCALLS
18593 MUSTTAIL return InterpNext(S);
18594#else
18595 return true;
18596#endif
18597}
18598PRESERVE_NONE
18599static bool Interp_FlipUint16IntAP(InterpState &S) {
18600 Flip<PT_Uint16, PT_IntAP>(S);
18601#if USE_TAILCALLS
18602 MUSTTAIL return InterpNext(S);
18603#else
18604 return true;
18605#endif
18606}
18607PRESERVE_NONE
18608static bool Interp_FlipUint16IntAPS(InterpState &S) {
18609 Flip<PT_Uint16, PT_IntAPS>(S);
18610#if USE_TAILCALLS
18611 MUSTTAIL return InterpNext(S);
18612#else
18613 return true;
18614#endif
18615}
18616PRESERVE_NONE
18617static bool Interp_FlipUint16Bool(InterpState &S) {
18618 Flip<PT_Uint16, PT_Bool>(S);
18619#if USE_TAILCALLS
18620 MUSTTAIL return InterpNext(S);
18621#else
18622 return true;
18623#endif
18624}
18625PRESERVE_NONE
18626static bool Interp_FlipUint16FixedPoint(InterpState &S) {
18627 Flip<PT_Uint16, PT_FixedPoint>(S);
18628#if USE_TAILCALLS
18629 MUSTTAIL return InterpNext(S);
18630#else
18631 return true;
18632#endif
18633}
18634PRESERVE_NONE
18635static bool Interp_FlipUint16Ptr(InterpState &S) {
18636 Flip<PT_Uint16, PT_Ptr>(S);
18637#if USE_TAILCALLS
18638 MUSTTAIL return InterpNext(S);
18639#else
18640 return true;
18641#endif
18642}
18643PRESERVE_NONE
18644static bool Interp_FlipUint16MemberPtr(InterpState &S) {
18645 Flip<PT_Uint16, PT_MemberPtr>(S);
18646#if USE_TAILCALLS
18647 MUSTTAIL return InterpNext(S);
18648#else
18649 return true;
18650#endif
18651}
18652PRESERVE_NONE
18653static bool Interp_FlipUint16Float(InterpState &S) {
18654 Flip<PT_Uint16, PT_Float>(S);
18655#if USE_TAILCALLS
18656 MUSTTAIL return InterpNext(S);
18657#else
18658 return true;
18659#endif
18660}
18661PRESERVE_NONE
18662static bool Interp_FlipSint32Sint8(InterpState &S) {
18663 Flip<PT_Sint32, PT_Sint8>(S);
18664#if USE_TAILCALLS
18665 MUSTTAIL return InterpNext(S);
18666#else
18667 return true;
18668#endif
18669}
18670PRESERVE_NONE
18671static bool Interp_FlipSint32Uint8(InterpState &S) {
18672 Flip<PT_Sint32, PT_Uint8>(S);
18673#if USE_TAILCALLS
18674 MUSTTAIL return InterpNext(S);
18675#else
18676 return true;
18677#endif
18678}
18679PRESERVE_NONE
18680static bool Interp_FlipSint32Sint16(InterpState &S) {
18681 Flip<PT_Sint32, PT_Sint16>(S);
18682#if USE_TAILCALLS
18683 MUSTTAIL return InterpNext(S);
18684#else
18685 return true;
18686#endif
18687}
18688PRESERVE_NONE
18689static bool Interp_FlipSint32Uint16(InterpState &S) {
18690 Flip<PT_Sint32, PT_Uint16>(S);
18691#if USE_TAILCALLS
18692 MUSTTAIL return InterpNext(S);
18693#else
18694 return true;
18695#endif
18696}
18697PRESERVE_NONE
18698static bool Interp_FlipSint32Sint32(InterpState &S) {
18699 Flip<PT_Sint32, PT_Sint32>(S);
18700#if USE_TAILCALLS
18701 MUSTTAIL return InterpNext(S);
18702#else
18703 return true;
18704#endif
18705}
18706PRESERVE_NONE
18707static bool Interp_FlipSint32Uint32(InterpState &S) {
18708 Flip<PT_Sint32, PT_Uint32>(S);
18709#if USE_TAILCALLS
18710 MUSTTAIL return InterpNext(S);
18711#else
18712 return true;
18713#endif
18714}
18715PRESERVE_NONE
18716static bool Interp_FlipSint32Sint64(InterpState &S) {
18717 Flip<PT_Sint32, PT_Sint64>(S);
18718#if USE_TAILCALLS
18719 MUSTTAIL return InterpNext(S);
18720#else
18721 return true;
18722#endif
18723}
18724PRESERVE_NONE
18725static bool Interp_FlipSint32Uint64(InterpState &S) {
18726 Flip<PT_Sint32, PT_Uint64>(S);
18727#if USE_TAILCALLS
18728 MUSTTAIL return InterpNext(S);
18729#else
18730 return true;
18731#endif
18732}
18733PRESERVE_NONE
18734static bool Interp_FlipSint32IntAP(InterpState &S) {
18735 Flip<PT_Sint32, PT_IntAP>(S);
18736#if USE_TAILCALLS
18737 MUSTTAIL return InterpNext(S);
18738#else
18739 return true;
18740#endif
18741}
18742PRESERVE_NONE
18743static bool Interp_FlipSint32IntAPS(InterpState &S) {
18744 Flip<PT_Sint32, PT_IntAPS>(S);
18745#if USE_TAILCALLS
18746 MUSTTAIL return InterpNext(S);
18747#else
18748 return true;
18749#endif
18750}
18751PRESERVE_NONE
18752static bool Interp_FlipSint32Bool(InterpState &S) {
18753 Flip<PT_Sint32, PT_Bool>(S);
18754#if USE_TAILCALLS
18755 MUSTTAIL return InterpNext(S);
18756#else
18757 return true;
18758#endif
18759}
18760PRESERVE_NONE
18761static bool Interp_FlipSint32FixedPoint(InterpState &S) {
18762 Flip<PT_Sint32, PT_FixedPoint>(S);
18763#if USE_TAILCALLS
18764 MUSTTAIL return InterpNext(S);
18765#else
18766 return true;
18767#endif
18768}
18769PRESERVE_NONE
18770static bool Interp_FlipSint32Ptr(InterpState &S) {
18771 Flip<PT_Sint32, PT_Ptr>(S);
18772#if USE_TAILCALLS
18773 MUSTTAIL return InterpNext(S);
18774#else
18775 return true;
18776#endif
18777}
18778PRESERVE_NONE
18779static bool Interp_FlipSint32MemberPtr(InterpState &S) {
18780 Flip<PT_Sint32, PT_MemberPtr>(S);
18781#if USE_TAILCALLS
18782 MUSTTAIL return InterpNext(S);
18783#else
18784 return true;
18785#endif
18786}
18787PRESERVE_NONE
18788static bool Interp_FlipSint32Float(InterpState &S) {
18789 Flip<PT_Sint32, PT_Float>(S);
18790#if USE_TAILCALLS
18791 MUSTTAIL return InterpNext(S);
18792#else
18793 return true;
18794#endif
18795}
18796PRESERVE_NONE
18797static bool Interp_FlipUint32Sint8(InterpState &S) {
18798 Flip<PT_Uint32, PT_Sint8>(S);
18799#if USE_TAILCALLS
18800 MUSTTAIL return InterpNext(S);
18801#else
18802 return true;
18803#endif
18804}
18805PRESERVE_NONE
18806static bool Interp_FlipUint32Uint8(InterpState &S) {
18807 Flip<PT_Uint32, PT_Uint8>(S);
18808#if USE_TAILCALLS
18809 MUSTTAIL return InterpNext(S);
18810#else
18811 return true;
18812#endif
18813}
18814PRESERVE_NONE
18815static bool Interp_FlipUint32Sint16(InterpState &S) {
18816 Flip<PT_Uint32, PT_Sint16>(S);
18817#if USE_TAILCALLS
18818 MUSTTAIL return InterpNext(S);
18819#else
18820 return true;
18821#endif
18822}
18823PRESERVE_NONE
18824static bool Interp_FlipUint32Uint16(InterpState &S) {
18825 Flip<PT_Uint32, PT_Uint16>(S);
18826#if USE_TAILCALLS
18827 MUSTTAIL return InterpNext(S);
18828#else
18829 return true;
18830#endif
18831}
18832PRESERVE_NONE
18833static bool Interp_FlipUint32Sint32(InterpState &S) {
18834 Flip<PT_Uint32, PT_Sint32>(S);
18835#if USE_TAILCALLS
18836 MUSTTAIL return InterpNext(S);
18837#else
18838 return true;
18839#endif
18840}
18841PRESERVE_NONE
18842static bool Interp_FlipUint32Uint32(InterpState &S) {
18843 Flip<PT_Uint32, PT_Uint32>(S);
18844#if USE_TAILCALLS
18845 MUSTTAIL return InterpNext(S);
18846#else
18847 return true;
18848#endif
18849}
18850PRESERVE_NONE
18851static bool Interp_FlipUint32Sint64(InterpState &S) {
18852 Flip<PT_Uint32, PT_Sint64>(S);
18853#if USE_TAILCALLS
18854 MUSTTAIL return InterpNext(S);
18855#else
18856 return true;
18857#endif
18858}
18859PRESERVE_NONE
18860static bool Interp_FlipUint32Uint64(InterpState &S) {
18861 Flip<PT_Uint32, PT_Uint64>(S);
18862#if USE_TAILCALLS
18863 MUSTTAIL return InterpNext(S);
18864#else
18865 return true;
18866#endif
18867}
18868PRESERVE_NONE
18869static bool Interp_FlipUint32IntAP(InterpState &S) {
18870 Flip<PT_Uint32, PT_IntAP>(S);
18871#if USE_TAILCALLS
18872 MUSTTAIL return InterpNext(S);
18873#else
18874 return true;
18875#endif
18876}
18877PRESERVE_NONE
18878static bool Interp_FlipUint32IntAPS(InterpState &S) {
18879 Flip<PT_Uint32, PT_IntAPS>(S);
18880#if USE_TAILCALLS
18881 MUSTTAIL return InterpNext(S);
18882#else
18883 return true;
18884#endif
18885}
18886PRESERVE_NONE
18887static bool Interp_FlipUint32Bool(InterpState &S) {
18888 Flip<PT_Uint32, PT_Bool>(S);
18889#if USE_TAILCALLS
18890 MUSTTAIL return InterpNext(S);
18891#else
18892 return true;
18893#endif
18894}
18895PRESERVE_NONE
18896static bool Interp_FlipUint32FixedPoint(InterpState &S) {
18897 Flip<PT_Uint32, PT_FixedPoint>(S);
18898#if USE_TAILCALLS
18899 MUSTTAIL return InterpNext(S);
18900#else
18901 return true;
18902#endif
18903}
18904PRESERVE_NONE
18905static bool Interp_FlipUint32Ptr(InterpState &S) {
18906 Flip<PT_Uint32, PT_Ptr>(S);
18907#if USE_TAILCALLS
18908 MUSTTAIL return InterpNext(S);
18909#else
18910 return true;
18911#endif
18912}
18913PRESERVE_NONE
18914static bool Interp_FlipUint32MemberPtr(InterpState &S) {
18915 Flip<PT_Uint32, PT_MemberPtr>(S);
18916#if USE_TAILCALLS
18917 MUSTTAIL return InterpNext(S);
18918#else
18919 return true;
18920#endif
18921}
18922PRESERVE_NONE
18923static bool Interp_FlipUint32Float(InterpState &S) {
18924 Flip<PT_Uint32, PT_Float>(S);
18925#if USE_TAILCALLS
18926 MUSTTAIL return InterpNext(S);
18927#else
18928 return true;
18929#endif
18930}
18931PRESERVE_NONE
18932static bool Interp_FlipSint64Sint8(InterpState &S) {
18933 Flip<PT_Sint64, PT_Sint8>(S);
18934#if USE_TAILCALLS
18935 MUSTTAIL return InterpNext(S);
18936#else
18937 return true;
18938#endif
18939}
18940PRESERVE_NONE
18941static bool Interp_FlipSint64Uint8(InterpState &S) {
18942 Flip<PT_Sint64, PT_Uint8>(S);
18943#if USE_TAILCALLS
18944 MUSTTAIL return InterpNext(S);
18945#else
18946 return true;
18947#endif
18948}
18949PRESERVE_NONE
18950static bool Interp_FlipSint64Sint16(InterpState &S) {
18951 Flip<PT_Sint64, PT_Sint16>(S);
18952#if USE_TAILCALLS
18953 MUSTTAIL return InterpNext(S);
18954#else
18955 return true;
18956#endif
18957}
18958PRESERVE_NONE
18959static bool Interp_FlipSint64Uint16(InterpState &S) {
18960 Flip<PT_Sint64, PT_Uint16>(S);
18961#if USE_TAILCALLS
18962 MUSTTAIL return InterpNext(S);
18963#else
18964 return true;
18965#endif
18966}
18967PRESERVE_NONE
18968static bool Interp_FlipSint64Sint32(InterpState &S) {
18969 Flip<PT_Sint64, PT_Sint32>(S);
18970#if USE_TAILCALLS
18971 MUSTTAIL return InterpNext(S);
18972#else
18973 return true;
18974#endif
18975}
18976PRESERVE_NONE
18977static bool Interp_FlipSint64Uint32(InterpState &S) {
18978 Flip<PT_Sint64, PT_Uint32>(S);
18979#if USE_TAILCALLS
18980 MUSTTAIL return InterpNext(S);
18981#else
18982 return true;
18983#endif
18984}
18985PRESERVE_NONE
18986static bool Interp_FlipSint64Sint64(InterpState &S) {
18987 Flip<PT_Sint64, PT_Sint64>(S);
18988#if USE_TAILCALLS
18989 MUSTTAIL return InterpNext(S);
18990#else
18991 return true;
18992#endif
18993}
18994PRESERVE_NONE
18995static bool Interp_FlipSint64Uint64(InterpState &S) {
18996 Flip<PT_Sint64, PT_Uint64>(S);
18997#if USE_TAILCALLS
18998 MUSTTAIL return InterpNext(S);
18999#else
19000 return true;
19001#endif
19002}
19003PRESERVE_NONE
19004static bool Interp_FlipSint64IntAP(InterpState &S) {
19005 Flip<PT_Sint64, PT_IntAP>(S);
19006#if USE_TAILCALLS
19007 MUSTTAIL return InterpNext(S);
19008#else
19009 return true;
19010#endif
19011}
19012PRESERVE_NONE
19013static bool Interp_FlipSint64IntAPS(InterpState &S) {
19014 Flip<PT_Sint64, PT_IntAPS>(S);
19015#if USE_TAILCALLS
19016 MUSTTAIL return InterpNext(S);
19017#else
19018 return true;
19019#endif
19020}
19021PRESERVE_NONE
19022static bool Interp_FlipSint64Bool(InterpState &S) {
19023 Flip<PT_Sint64, PT_Bool>(S);
19024#if USE_TAILCALLS
19025 MUSTTAIL return InterpNext(S);
19026#else
19027 return true;
19028#endif
19029}
19030PRESERVE_NONE
19031static bool Interp_FlipSint64FixedPoint(InterpState &S) {
19032 Flip<PT_Sint64, PT_FixedPoint>(S);
19033#if USE_TAILCALLS
19034 MUSTTAIL return InterpNext(S);
19035#else
19036 return true;
19037#endif
19038}
19039PRESERVE_NONE
19040static bool Interp_FlipSint64Ptr(InterpState &S) {
19041 Flip<PT_Sint64, PT_Ptr>(S);
19042#if USE_TAILCALLS
19043 MUSTTAIL return InterpNext(S);
19044#else
19045 return true;
19046#endif
19047}
19048PRESERVE_NONE
19049static bool Interp_FlipSint64MemberPtr(InterpState &S) {
19050 Flip<PT_Sint64, PT_MemberPtr>(S);
19051#if USE_TAILCALLS
19052 MUSTTAIL return InterpNext(S);
19053#else
19054 return true;
19055#endif
19056}
19057PRESERVE_NONE
19058static bool Interp_FlipSint64Float(InterpState &S) {
19059 Flip<PT_Sint64, PT_Float>(S);
19060#if USE_TAILCALLS
19061 MUSTTAIL return InterpNext(S);
19062#else
19063 return true;
19064#endif
19065}
19066PRESERVE_NONE
19067static bool Interp_FlipUint64Sint8(InterpState &S) {
19068 Flip<PT_Uint64, PT_Sint8>(S);
19069#if USE_TAILCALLS
19070 MUSTTAIL return InterpNext(S);
19071#else
19072 return true;
19073#endif
19074}
19075PRESERVE_NONE
19076static bool Interp_FlipUint64Uint8(InterpState &S) {
19077 Flip<PT_Uint64, PT_Uint8>(S);
19078#if USE_TAILCALLS
19079 MUSTTAIL return InterpNext(S);
19080#else
19081 return true;
19082#endif
19083}
19084PRESERVE_NONE
19085static bool Interp_FlipUint64Sint16(InterpState &S) {
19086 Flip<PT_Uint64, PT_Sint16>(S);
19087#if USE_TAILCALLS
19088 MUSTTAIL return InterpNext(S);
19089#else
19090 return true;
19091#endif
19092}
19093PRESERVE_NONE
19094static bool Interp_FlipUint64Uint16(InterpState &S) {
19095 Flip<PT_Uint64, PT_Uint16>(S);
19096#if USE_TAILCALLS
19097 MUSTTAIL return InterpNext(S);
19098#else
19099 return true;
19100#endif
19101}
19102PRESERVE_NONE
19103static bool Interp_FlipUint64Sint32(InterpState &S) {
19104 Flip<PT_Uint64, PT_Sint32>(S);
19105#if USE_TAILCALLS
19106 MUSTTAIL return InterpNext(S);
19107#else
19108 return true;
19109#endif
19110}
19111PRESERVE_NONE
19112static bool Interp_FlipUint64Uint32(InterpState &S) {
19113 Flip<PT_Uint64, PT_Uint32>(S);
19114#if USE_TAILCALLS
19115 MUSTTAIL return InterpNext(S);
19116#else
19117 return true;
19118#endif
19119}
19120PRESERVE_NONE
19121static bool Interp_FlipUint64Sint64(InterpState &S) {
19122 Flip<PT_Uint64, PT_Sint64>(S);
19123#if USE_TAILCALLS
19124 MUSTTAIL return InterpNext(S);
19125#else
19126 return true;
19127#endif
19128}
19129PRESERVE_NONE
19130static bool Interp_FlipUint64Uint64(InterpState &S) {
19131 Flip<PT_Uint64, PT_Uint64>(S);
19132#if USE_TAILCALLS
19133 MUSTTAIL return InterpNext(S);
19134#else
19135 return true;
19136#endif
19137}
19138PRESERVE_NONE
19139static bool Interp_FlipUint64IntAP(InterpState &S) {
19140 Flip<PT_Uint64, PT_IntAP>(S);
19141#if USE_TAILCALLS
19142 MUSTTAIL return InterpNext(S);
19143#else
19144 return true;
19145#endif
19146}
19147PRESERVE_NONE
19148static bool Interp_FlipUint64IntAPS(InterpState &S) {
19149 Flip<PT_Uint64, PT_IntAPS>(S);
19150#if USE_TAILCALLS
19151 MUSTTAIL return InterpNext(S);
19152#else
19153 return true;
19154#endif
19155}
19156PRESERVE_NONE
19157static bool Interp_FlipUint64Bool(InterpState &S) {
19158 Flip<PT_Uint64, PT_Bool>(S);
19159#if USE_TAILCALLS
19160 MUSTTAIL return InterpNext(S);
19161#else
19162 return true;
19163#endif
19164}
19165PRESERVE_NONE
19166static bool Interp_FlipUint64FixedPoint(InterpState &S) {
19167 Flip<PT_Uint64, PT_FixedPoint>(S);
19168#if USE_TAILCALLS
19169 MUSTTAIL return InterpNext(S);
19170#else
19171 return true;
19172#endif
19173}
19174PRESERVE_NONE
19175static bool Interp_FlipUint64Ptr(InterpState &S) {
19176 Flip<PT_Uint64, PT_Ptr>(S);
19177#if USE_TAILCALLS
19178 MUSTTAIL return InterpNext(S);
19179#else
19180 return true;
19181#endif
19182}
19183PRESERVE_NONE
19184static bool Interp_FlipUint64MemberPtr(InterpState &S) {
19185 Flip<PT_Uint64, PT_MemberPtr>(S);
19186#if USE_TAILCALLS
19187 MUSTTAIL return InterpNext(S);
19188#else
19189 return true;
19190#endif
19191}
19192PRESERVE_NONE
19193static bool Interp_FlipUint64Float(InterpState &S) {
19194 Flip<PT_Uint64, PT_Float>(S);
19195#if USE_TAILCALLS
19196 MUSTTAIL return InterpNext(S);
19197#else
19198 return true;
19199#endif
19200}
19201PRESERVE_NONE
19202static bool Interp_FlipIntAPSint8(InterpState &S) {
19203 Flip<PT_IntAP, PT_Sint8>(S);
19204#if USE_TAILCALLS
19205 MUSTTAIL return InterpNext(S);
19206#else
19207 return true;
19208#endif
19209}
19210PRESERVE_NONE
19211static bool Interp_FlipIntAPUint8(InterpState &S) {
19212 Flip<PT_IntAP, PT_Uint8>(S);
19213#if USE_TAILCALLS
19214 MUSTTAIL return InterpNext(S);
19215#else
19216 return true;
19217#endif
19218}
19219PRESERVE_NONE
19220static bool Interp_FlipIntAPSint16(InterpState &S) {
19221 Flip<PT_IntAP, PT_Sint16>(S);
19222#if USE_TAILCALLS
19223 MUSTTAIL return InterpNext(S);
19224#else
19225 return true;
19226#endif
19227}
19228PRESERVE_NONE
19229static bool Interp_FlipIntAPUint16(InterpState &S) {
19230 Flip<PT_IntAP, PT_Uint16>(S);
19231#if USE_TAILCALLS
19232 MUSTTAIL return InterpNext(S);
19233#else
19234 return true;
19235#endif
19236}
19237PRESERVE_NONE
19238static bool Interp_FlipIntAPSint32(InterpState &S) {
19239 Flip<PT_IntAP, PT_Sint32>(S);
19240#if USE_TAILCALLS
19241 MUSTTAIL return InterpNext(S);
19242#else
19243 return true;
19244#endif
19245}
19246PRESERVE_NONE
19247static bool Interp_FlipIntAPUint32(InterpState &S) {
19248 Flip<PT_IntAP, PT_Uint32>(S);
19249#if USE_TAILCALLS
19250 MUSTTAIL return InterpNext(S);
19251#else
19252 return true;
19253#endif
19254}
19255PRESERVE_NONE
19256static bool Interp_FlipIntAPSint64(InterpState &S) {
19257 Flip<PT_IntAP, PT_Sint64>(S);
19258#if USE_TAILCALLS
19259 MUSTTAIL return InterpNext(S);
19260#else
19261 return true;
19262#endif
19263}
19264PRESERVE_NONE
19265static bool Interp_FlipIntAPUint64(InterpState &S) {
19266 Flip<PT_IntAP, PT_Uint64>(S);
19267#if USE_TAILCALLS
19268 MUSTTAIL return InterpNext(S);
19269#else
19270 return true;
19271#endif
19272}
19273PRESERVE_NONE
19274static bool Interp_FlipIntAPIntAP(InterpState &S) {
19275 Flip<PT_IntAP, PT_IntAP>(S);
19276#if USE_TAILCALLS
19277 MUSTTAIL return InterpNext(S);
19278#else
19279 return true;
19280#endif
19281}
19282PRESERVE_NONE
19283static bool Interp_FlipIntAPIntAPS(InterpState &S) {
19284 Flip<PT_IntAP, PT_IntAPS>(S);
19285#if USE_TAILCALLS
19286 MUSTTAIL return InterpNext(S);
19287#else
19288 return true;
19289#endif
19290}
19291PRESERVE_NONE
19292static bool Interp_FlipIntAPBool(InterpState &S) {
19293 Flip<PT_IntAP, PT_Bool>(S);
19294#if USE_TAILCALLS
19295 MUSTTAIL return InterpNext(S);
19296#else
19297 return true;
19298#endif
19299}
19300PRESERVE_NONE
19301static bool Interp_FlipIntAPFixedPoint(InterpState &S) {
19302 Flip<PT_IntAP, PT_FixedPoint>(S);
19303#if USE_TAILCALLS
19304 MUSTTAIL return InterpNext(S);
19305#else
19306 return true;
19307#endif
19308}
19309PRESERVE_NONE
19310static bool Interp_FlipIntAPPtr(InterpState &S) {
19311 Flip<PT_IntAP, PT_Ptr>(S);
19312#if USE_TAILCALLS
19313 MUSTTAIL return InterpNext(S);
19314#else
19315 return true;
19316#endif
19317}
19318PRESERVE_NONE
19319static bool Interp_FlipIntAPMemberPtr(InterpState &S) {
19320 Flip<PT_IntAP, PT_MemberPtr>(S);
19321#if USE_TAILCALLS
19322 MUSTTAIL return InterpNext(S);
19323#else
19324 return true;
19325#endif
19326}
19327PRESERVE_NONE
19328static bool Interp_FlipIntAPFloat(InterpState &S) {
19329 Flip<PT_IntAP, PT_Float>(S);
19330#if USE_TAILCALLS
19331 MUSTTAIL return InterpNext(S);
19332#else
19333 return true;
19334#endif
19335}
19336PRESERVE_NONE
19337static bool Interp_FlipIntAPSSint8(InterpState &S) {
19338 Flip<PT_IntAPS, PT_Sint8>(S);
19339#if USE_TAILCALLS
19340 MUSTTAIL return InterpNext(S);
19341#else
19342 return true;
19343#endif
19344}
19345PRESERVE_NONE
19346static bool Interp_FlipIntAPSUint8(InterpState &S) {
19347 Flip<PT_IntAPS, PT_Uint8>(S);
19348#if USE_TAILCALLS
19349 MUSTTAIL return InterpNext(S);
19350#else
19351 return true;
19352#endif
19353}
19354PRESERVE_NONE
19355static bool Interp_FlipIntAPSSint16(InterpState &S) {
19356 Flip<PT_IntAPS, PT_Sint16>(S);
19357#if USE_TAILCALLS
19358 MUSTTAIL return InterpNext(S);
19359#else
19360 return true;
19361#endif
19362}
19363PRESERVE_NONE
19364static bool Interp_FlipIntAPSUint16(InterpState &S) {
19365 Flip<PT_IntAPS, PT_Uint16>(S);
19366#if USE_TAILCALLS
19367 MUSTTAIL return InterpNext(S);
19368#else
19369 return true;
19370#endif
19371}
19372PRESERVE_NONE
19373static bool Interp_FlipIntAPSSint32(InterpState &S) {
19374 Flip<PT_IntAPS, PT_Sint32>(S);
19375#if USE_TAILCALLS
19376 MUSTTAIL return InterpNext(S);
19377#else
19378 return true;
19379#endif
19380}
19381PRESERVE_NONE
19382static bool Interp_FlipIntAPSUint32(InterpState &S) {
19383 Flip<PT_IntAPS, PT_Uint32>(S);
19384#if USE_TAILCALLS
19385 MUSTTAIL return InterpNext(S);
19386#else
19387 return true;
19388#endif
19389}
19390PRESERVE_NONE
19391static bool Interp_FlipIntAPSSint64(InterpState &S) {
19392 Flip<PT_IntAPS, PT_Sint64>(S);
19393#if USE_TAILCALLS
19394 MUSTTAIL return InterpNext(S);
19395#else
19396 return true;
19397#endif
19398}
19399PRESERVE_NONE
19400static bool Interp_FlipIntAPSUint64(InterpState &S) {
19401 Flip<PT_IntAPS, PT_Uint64>(S);
19402#if USE_TAILCALLS
19403 MUSTTAIL return InterpNext(S);
19404#else
19405 return true;
19406#endif
19407}
19408PRESERVE_NONE
19409static bool Interp_FlipIntAPSIntAP(InterpState &S) {
19410 Flip<PT_IntAPS, PT_IntAP>(S);
19411#if USE_TAILCALLS
19412 MUSTTAIL return InterpNext(S);
19413#else
19414 return true;
19415#endif
19416}
19417PRESERVE_NONE
19418static bool Interp_FlipIntAPSIntAPS(InterpState &S) {
19419 Flip<PT_IntAPS, PT_IntAPS>(S);
19420#if USE_TAILCALLS
19421 MUSTTAIL return InterpNext(S);
19422#else
19423 return true;
19424#endif
19425}
19426PRESERVE_NONE
19427static bool Interp_FlipIntAPSBool(InterpState &S) {
19428 Flip<PT_IntAPS, PT_Bool>(S);
19429#if USE_TAILCALLS
19430 MUSTTAIL return InterpNext(S);
19431#else
19432 return true;
19433#endif
19434}
19435PRESERVE_NONE
19436static bool Interp_FlipIntAPSFixedPoint(InterpState &S) {
19437 Flip<PT_IntAPS, PT_FixedPoint>(S);
19438#if USE_TAILCALLS
19439 MUSTTAIL return InterpNext(S);
19440#else
19441 return true;
19442#endif
19443}
19444PRESERVE_NONE
19445static bool Interp_FlipIntAPSPtr(InterpState &S) {
19446 Flip<PT_IntAPS, PT_Ptr>(S);
19447#if USE_TAILCALLS
19448 MUSTTAIL return InterpNext(S);
19449#else
19450 return true;
19451#endif
19452}
19453PRESERVE_NONE
19454static bool Interp_FlipIntAPSMemberPtr(InterpState &S) {
19455 Flip<PT_IntAPS, PT_MemberPtr>(S);
19456#if USE_TAILCALLS
19457 MUSTTAIL return InterpNext(S);
19458#else
19459 return true;
19460#endif
19461}
19462PRESERVE_NONE
19463static bool Interp_FlipIntAPSFloat(InterpState &S) {
19464 Flip<PT_IntAPS, PT_Float>(S);
19465#if USE_TAILCALLS
19466 MUSTTAIL return InterpNext(S);
19467#else
19468 return true;
19469#endif
19470}
19471PRESERVE_NONE
19472static bool Interp_FlipBoolSint8(InterpState &S) {
19473 Flip<PT_Bool, PT_Sint8>(S);
19474#if USE_TAILCALLS
19475 MUSTTAIL return InterpNext(S);
19476#else
19477 return true;
19478#endif
19479}
19480PRESERVE_NONE
19481static bool Interp_FlipBoolUint8(InterpState &S) {
19482 Flip<PT_Bool, PT_Uint8>(S);
19483#if USE_TAILCALLS
19484 MUSTTAIL return InterpNext(S);
19485#else
19486 return true;
19487#endif
19488}
19489PRESERVE_NONE
19490static bool Interp_FlipBoolSint16(InterpState &S) {
19491 Flip<PT_Bool, PT_Sint16>(S);
19492#if USE_TAILCALLS
19493 MUSTTAIL return InterpNext(S);
19494#else
19495 return true;
19496#endif
19497}
19498PRESERVE_NONE
19499static bool Interp_FlipBoolUint16(InterpState &S) {
19500 Flip<PT_Bool, PT_Uint16>(S);
19501#if USE_TAILCALLS
19502 MUSTTAIL return InterpNext(S);
19503#else
19504 return true;
19505#endif
19506}
19507PRESERVE_NONE
19508static bool Interp_FlipBoolSint32(InterpState &S) {
19509 Flip<PT_Bool, PT_Sint32>(S);
19510#if USE_TAILCALLS
19511 MUSTTAIL return InterpNext(S);
19512#else
19513 return true;
19514#endif
19515}
19516PRESERVE_NONE
19517static bool Interp_FlipBoolUint32(InterpState &S) {
19518 Flip<PT_Bool, PT_Uint32>(S);
19519#if USE_TAILCALLS
19520 MUSTTAIL return InterpNext(S);
19521#else
19522 return true;
19523#endif
19524}
19525PRESERVE_NONE
19526static bool Interp_FlipBoolSint64(InterpState &S) {
19527 Flip<PT_Bool, PT_Sint64>(S);
19528#if USE_TAILCALLS
19529 MUSTTAIL return InterpNext(S);
19530#else
19531 return true;
19532#endif
19533}
19534PRESERVE_NONE
19535static bool Interp_FlipBoolUint64(InterpState &S) {
19536 Flip<PT_Bool, PT_Uint64>(S);
19537#if USE_TAILCALLS
19538 MUSTTAIL return InterpNext(S);
19539#else
19540 return true;
19541#endif
19542}
19543PRESERVE_NONE
19544static bool Interp_FlipBoolIntAP(InterpState &S) {
19545 Flip<PT_Bool, PT_IntAP>(S);
19546#if USE_TAILCALLS
19547 MUSTTAIL return InterpNext(S);
19548#else
19549 return true;
19550#endif
19551}
19552PRESERVE_NONE
19553static bool Interp_FlipBoolIntAPS(InterpState &S) {
19554 Flip<PT_Bool, PT_IntAPS>(S);
19555#if USE_TAILCALLS
19556 MUSTTAIL return InterpNext(S);
19557#else
19558 return true;
19559#endif
19560}
19561PRESERVE_NONE
19562static bool Interp_FlipBoolBool(InterpState &S) {
19563 Flip<PT_Bool, PT_Bool>(S);
19564#if USE_TAILCALLS
19565 MUSTTAIL return InterpNext(S);
19566#else
19567 return true;
19568#endif
19569}
19570PRESERVE_NONE
19571static bool Interp_FlipBoolFixedPoint(InterpState &S) {
19572 Flip<PT_Bool, PT_FixedPoint>(S);
19573#if USE_TAILCALLS
19574 MUSTTAIL return InterpNext(S);
19575#else
19576 return true;
19577#endif
19578}
19579PRESERVE_NONE
19580static bool Interp_FlipBoolPtr(InterpState &S) {
19581 Flip<PT_Bool, PT_Ptr>(S);
19582#if USE_TAILCALLS
19583 MUSTTAIL return InterpNext(S);
19584#else
19585 return true;
19586#endif
19587}
19588PRESERVE_NONE
19589static bool Interp_FlipBoolMemberPtr(InterpState &S) {
19590 Flip<PT_Bool, PT_MemberPtr>(S);
19591#if USE_TAILCALLS
19592 MUSTTAIL return InterpNext(S);
19593#else
19594 return true;
19595#endif
19596}
19597PRESERVE_NONE
19598static bool Interp_FlipBoolFloat(InterpState &S) {
19599 Flip<PT_Bool, PT_Float>(S);
19600#if USE_TAILCALLS
19601 MUSTTAIL return InterpNext(S);
19602#else
19603 return true;
19604#endif
19605}
19606PRESERVE_NONE
19607static bool Interp_FlipFixedPointSint8(InterpState &S) {
19608 Flip<PT_FixedPoint, PT_Sint8>(S);
19609#if USE_TAILCALLS
19610 MUSTTAIL return InterpNext(S);
19611#else
19612 return true;
19613#endif
19614}
19615PRESERVE_NONE
19616static bool Interp_FlipFixedPointUint8(InterpState &S) {
19617 Flip<PT_FixedPoint, PT_Uint8>(S);
19618#if USE_TAILCALLS
19619 MUSTTAIL return InterpNext(S);
19620#else
19621 return true;
19622#endif
19623}
19624PRESERVE_NONE
19625static bool Interp_FlipFixedPointSint16(InterpState &S) {
19626 Flip<PT_FixedPoint, PT_Sint16>(S);
19627#if USE_TAILCALLS
19628 MUSTTAIL return InterpNext(S);
19629#else
19630 return true;
19631#endif
19632}
19633PRESERVE_NONE
19634static bool Interp_FlipFixedPointUint16(InterpState &S) {
19635 Flip<PT_FixedPoint, PT_Uint16>(S);
19636#if USE_TAILCALLS
19637 MUSTTAIL return InterpNext(S);
19638#else
19639 return true;
19640#endif
19641}
19642PRESERVE_NONE
19643static bool Interp_FlipFixedPointSint32(InterpState &S) {
19644 Flip<PT_FixedPoint, PT_Sint32>(S);
19645#if USE_TAILCALLS
19646 MUSTTAIL return InterpNext(S);
19647#else
19648 return true;
19649#endif
19650}
19651PRESERVE_NONE
19652static bool Interp_FlipFixedPointUint32(InterpState &S) {
19653 Flip<PT_FixedPoint, PT_Uint32>(S);
19654#if USE_TAILCALLS
19655 MUSTTAIL return InterpNext(S);
19656#else
19657 return true;
19658#endif
19659}
19660PRESERVE_NONE
19661static bool Interp_FlipFixedPointSint64(InterpState &S) {
19662 Flip<PT_FixedPoint, PT_Sint64>(S);
19663#if USE_TAILCALLS
19664 MUSTTAIL return InterpNext(S);
19665#else
19666 return true;
19667#endif
19668}
19669PRESERVE_NONE
19670static bool Interp_FlipFixedPointUint64(InterpState &S) {
19671 Flip<PT_FixedPoint, PT_Uint64>(S);
19672#if USE_TAILCALLS
19673 MUSTTAIL return InterpNext(S);
19674#else
19675 return true;
19676#endif
19677}
19678PRESERVE_NONE
19679static bool Interp_FlipFixedPointIntAP(InterpState &S) {
19680 Flip<PT_FixedPoint, PT_IntAP>(S);
19681#if USE_TAILCALLS
19682 MUSTTAIL return InterpNext(S);
19683#else
19684 return true;
19685#endif
19686}
19687PRESERVE_NONE
19688static bool Interp_FlipFixedPointIntAPS(InterpState &S) {
19689 Flip<PT_FixedPoint, PT_IntAPS>(S);
19690#if USE_TAILCALLS
19691 MUSTTAIL return InterpNext(S);
19692#else
19693 return true;
19694#endif
19695}
19696PRESERVE_NONE
19697static bool Interp_FlipFixedPointBool(InterpState &S) {
19698 Flip<PT_FixedPoint, PT_Bool>(S);
19699#if USE_TAILCALLS
19700 MUSTTAIL return InterpNext(S);
19701#else
19702 return true;
19703#endif
19704}
19705PRESERVE_NONE
19706static bool Interp_FlipFixedPointFixedPoint(InterpState &S) {
19707 Flip<PT_FixedPoint, PT_FixedPoint>(S);
19708#if USE_TAILCALLS
19709 MUSTTAIL return InterpNext(S);
19710#else
19711 return true;
19712#endif
19713}
19714PRESERVE_NONE
19715static bool Interp_FlipFixedPointPtr(InterpState &S) {
19716 Flip<PT_FixedPoint, PT_Ptr>(S);
19717#if USE_TAILCALLS
19718 MUSTTAIL return InterpNext(S);
19719#else
19720 return true;
19721#endif
19722}
19723PRESERVE_NONE
19724static bool Interp_FlipFixedPointMemberPtr(InterpState &S) {
19725 Flip<PT_FixedPoint, PT_MemberPtr>(S);
19726#if USE_TAILCALLS
19727 MUSTTAIL return InterpNext(S);
19728#else
19729 return true;
19730#endif
19731}
19732PRESERVE_NONE
19733static bool Interp_FlipFixedPointFloat(InterpState &S) {
19734 Flip<PT_FixedPoint, PT_Float>(S);
19735#if USE_TAILCALLS
19736 MUSTTAIL return InterpNext(S);
19737#else
19738 return true;
19739#endif
19740}
19741PRESERVE_NONE
19742static bool Interp_FlipPtrSint8(InterpState &S) {
19743 Flip<PT_Ptr, PT_Sint8>(S);
19744#if USE_TAILCALLS
19745 MUSTTAIL return InterpNext(S);
19746#else
19747 return true;
19748#endif
19749}
19750PRESERVE_NONE
19751static bool Interp_FlipPtrUint8(InterpState &S) {
19752 Flip<PT_Ptr, PT_Uint8>(S);
19753#if USE_TAILCALLS
19754 MUSTTAIL return InterpNext(S);
19755#else
19756 return true;
19757#endif
19758}
19759PRESERVE_NONE
19760static bool Interp_FlipPtrSint16(InterpState &S) {
19761 Flip<PT_Ptr, PT_Sint16>(S);
19762#if USE_TAILCALLS
19763 MUSTTAIL return InterpNext(S);
19764#else
19765 return true;
19766#endif
19767}
19768PRESERVE_NONE
19769static bool Interp_FlipPtrUint16(InterpState &S) {
19770 Flip<PT_Ptr, PT_Uint16>(S);
19771#if USE_TAILCALLS
19772 MUSTTAIL return InterpNext(S);
19773#else
19774 return true;
19775#endif
19776}
19777PRESERVE_NONE
19778static bool Interp_FlipPtrSint32(InterpState &S) {
19779 Flip<PT_Ptr, PT_Sint32>(S);
19780#if USE_TAILCALLS
19781 MUSTTAIL return InterpNext(S);
19782#else
19783 return true;
19784#endif
19785}
19786PRESERVE_NONE
19787static bool Interp_FlipPtrUint32(InterpState &S) {
19788 Flip<PT_Ptr, PT_Uint32>(S);
19789#if USE_TAILCALLS
19790 MUSTTAIL return InterpNext(S);
19791#else
19792 return true;
19793#endif
19794}
19795PRESERVE_NONE
19796static bool Interp_FlipPtrSint64(InterpState &S) {
19797 Flip<PT_Ptr, PT_Sint64>(S);
19798#if USE_TAILCALLS
19799 MUSTTAIL return InterpNext(S);
19800#else
19801 return true;
19802#endif
19803}
19804PRESERVE_NONE
19805static bool Interp_FlipPtrUint64(InterpState &S) {
19806 Flip<PT_Ptr, PT_Uint64>(S);
19807#if USE_TAILCALLS
19808 MUSTTAIL return InterpNext(S);
19809#else
19810 return true;
19811#endif
19812}
19813PRESERVE_NONE
19814static bool Interp_FlipPtrIntAP(InterpState &S) {
19815 Flip<PT_Ptr, PT_IntAP>(S);
19816#if USE_TAILCALLS
19817 MUSTTAIL return InterpNext(S);
19818#else
19819 return true;
19820#endif
19821}
19822PRESERVE_NONE
19823static bool Interp_FlipPtrIntAPS(InterpState &S) {
19824 Flip<PT_Ptr, PT_IntAPS>(S);
19825#if USE_TAILCALLS
19826 MUSTTAIL return InterpNext(S);
19827#else
19828 return true;
19829#endif
19830}
19831PRESERVE_NONE
19832static bool Interp_FlipPtrBool(InterpState &S) {
19833 Flip<PT_Ptr, PT_Bool>(S);
19834#if USE_TAILCALLS
19835 MUSTTAIL return InterpNext(S);
19836#else
19837 return true;
19838#endif
19839}
19840PRESERVE_NONE
19841static bool Interp_FlipPtrFixedPoint(InterpState &S) {
19842 Flip<PT_Ptr, PT_FixedPoint>(S);
19843#if USE_TAILCALLS
19844 MUSTTAIL return InterpNext(S);
19845#else
19846 return true;
19847#endif
19848}
19849PRESERVE_NONE
19850static bool Interp_FlipPtrPtr(InterpState &S) {
19851 Flip<PT_Ptr, PT_Ptr>(S);
19852#if USE_TAILCALLS
19853 MUSTTAIL return InterpNext(S);
19854#else
19855 return true;
19856#endif
19857}
19858PRESERVE_NONE
19859static bool Interp_FlipPtrMemberPtr(InterpState &S) {
19860 Flip<PT_Ptr, PT_MemberPtr>(S);
19861#if USE_TAILCALLS
19862 MUSTTAIL return InterpNext(S);
19863#else
19864 return true;
19865#endif
19866}
19867PRESERVE_NONE
19868static bool Interp_FlipPtrFloat(InterpState &S) {
19869 Flip<PT_Ptr, PT_Float>(S);
19870#if USE_TAILCALLS
19871 MUSTTAIL return InterpNext(S);
19872#else
19873 return true;
19874#endif
19875}
19876PRESERVE_NONE
19877static bool Interp_FlipMemberPtrSint8(InterpState &S) {
19878 Flip<PT_MemberPtr, PT_Sint8>(S);
19879#if USE_TAILCALLS
19880 MUSTTAIL return InterpNext(S);
19881#else
19882 return true;
19883#endif
19884}
19885PRESERVE_NONE
19886static bool Interp_FlipMemberPtrUint8(InterpState &S) {
19887 Flip<PT_MemberPtr, PT_Uint8>(S);
19888#if USE_TAILCALLS
19889 MUSTTAIL return InterpNext(S);
19890#else
19891 return true;
19892#endif
19893}
19894PRESERVE_NONE
19895static bool Interp_FlipMemberPtrSint16(InterpState &S) {
19896 Flip<PT_MemberPtr, PT_Sint16>(S);
19897#if USE_TAILCALLS
19898 MUSTTAIL return InterpNext(S);
19899#else
19900 return true;
19901#endif
19902}
19903PRESERVE_NONE
19904static bool Interp_FlipMemberPtrUint16(InterpState &S) {
19905 Flip<PT_MemberPtr, PT_Uint16>(S);
19906#if USE_TAILCALLS
19907 MUSTTAIL return InterpNext(S);
19908#else
19909 return true;
19910#endif
19911}
19912PRESERVE_NONE
19913static bool Interp_FlipMemberPtrSint32(InterpState &S) {
19914 Flip<PT_MemberPtr, PT_Sint32>(S);
19915#if USE_TAILCALLS
19916 MUSTTAIL return InterpNext(S);
19917#else
19918 return true;
19919#endif
19920}
19921PRESERVE_NONE
19922static bool Interp_FlipMemberPtrUint32(InterpState &S) {
19923 Flip<PT_MemberPtr, PT_Uint32>(S);
19924#if USE_TAILCALLS
19925 MUSTTAIL return InterpNext(S);
19926#else
19927 return true;
19928#endif
19929}
19930PRESERVE_NONE
19931static bool Interp_FlipMemberPtrSint64(InterpState &S) {
19932 Flip<PT_MemberPtr, PT_Sint64>(S);
19933#if USE_TAILCALLS
19934 MUSTTAIL return InterpNext(S);
19935#else
19936 return true;
19937#endif
19938}
19939PRESERVE_NONE
19940static bool Interp_FlipMemberPtrUint64(InterpState &S) {
19941 Flip<PT_MemberPtr, PT_Uint64>(S);
19942#if USE_TAILCALLS
19943 MUSTTAIL return InterpNext(S);
19944#else
19945 return true;
19946#endif
19947}
19948PRESERVE_NONE
19949static bool Interp_FlipMemberPtrIntAP(InterpState &S) {
19950 Flip<PT_MemberPtr, PT_IntAP>(S);
19951#if USE_TAILCALLS
19952 MUSTTAIL return InterpNext(S);
19953#else
19954 return true;
19955#endif
19956}
19957PRESERVE_NONE
19958static bool Interp_FlipMemberPtrIntAPS(InterpState &S) {
19959 Flip<PT_MemberPtr, PT_IntAPS>(S);
19960#if USE_TAILCALLS
19961 MUSTTAIL return InterpNext(S);
19962#else
19963 return true;
19964#endif
19965}
19966PRESERVE_NONE
19967static bool Interp_FlipMemberPtrBool(InterpState &S) {
19968 Flip<PT_MemberPtr, PT_Bool>(S);
19969#if USE_TAILCALLS
19970 MUSTTAIL return InterpNext(S);
19971#else
19972 return true;
19973#endif
19974}
19975PRESERVE_NONE
19976static bool Interp_FlipMemberPtrFixedPoint(InterpState &S) {
19977 Flip<PT_MemberPtr, PT_FixedPoint>(S);
19978#if USE_TAILCALLS
19979 MUSTTAIL return InterpNext(S);
19980#else
19981 return true;
19982#endif
19983}
19984PRESERVE_NONE
19985static bool Interp_FlipMemberPtrPtr(InterpState &S) {
19986 Flip<PT_MemberPtr, PT_Ptr>(S);
19987#if USE_TAILCALLS
19988 MUSTTAIL return InterpNext(S);
19989#else
19990 return true;
19991#endif
19992}
19993PRESERVE_NONE
19994static bool Interp_FlipMemberPtrMemberPtr(InterpState &S) {
19995 Flip<PT_MemberPtr, PT_MemberPtr>(S);
19996#if USE_TAILCALLS
19997 MUSTTAIL return InterpNext(S);
19998#else
19999 return true;
20000#endif
20001}
20002PRESERVE_NONE
20003static bool Interp_FlipMemberPtrFloat(InterpState &S) {
20004 Flip<PT_MemberPtr, PT_Float>(S);
20005#if USE_TAILCALLS
20006 MUSTTAIL return InterpNext(S);
20007#else
20008 return true;
20009#endif
20010}
20011PRESERVE_NONE
20012static bool Interp_FlipFloatSint8(InterpState &S) {
20013 Flip<PT_Float, PT_Sint8>(S);
20014#if USE_TAILCALLS
20015 MUSTTAIL return InterpNext(S);
20016#else
20017 return true;
20018#endif
20019}
20020PRESERVE_NONE
20021static bool Interp_FlipFloatUint8(InterpState &S) {
20022 Flip<PT_Float, PT_Uint8>(S);
20023#if USE_TAILCALLS
20024 MUSTTAIL return InterpNext(S);
20025#else
20026 return true;
20027#endif
20028}
20029PRESERVE_NONE
20030static bool Interp_FlipFloatSint16(InterpState &S) {
20031 Flip<PT_Float, PT_Sint16>(S);
20032#if USE_TAILCALLS
20033 MUSTTAIL return InterpNext(S);
20034#else
20035 return true;
20036#endif
20037}
20038PRESERVE_NONE
20039static bool Interp_FlipFloatUint16(InterpState &S) {
20040 Flip<PT_Float, PT_Uint16>(S);
20041#if USE_TAILCALLS
20042 MUSTTAIL return InterpNext(S);
20043#else
20044 return true;
20045#endif
20046}
20047PRESERVE_NONE
20048static bool Interp_FlipFloatSint32(InterpState &S) {
20049 Flip<PT_Float, PT_Sint32>(S);
20050#if USE_TAILCALLS
20051 MUSTTAIL return InterpNext(S);
20052#else
20053 return true;
20054#endif
20055}
20056PRESERVE_NONE
20057static bool Interp_FlipFloatUint32(InterpState &S) {
20058 Flip<PT_Float, PT_Uint32>(S);
20059#if USE_TAILCALLS
20060 MUSTTAIL return InterpNext(S);
20061#else
20062 return true;
20063#endif
20064}
20065PRESERVE_NONE
20066static bool Interp_FlipFloatSint64(InterpState &S) {
20067 Flip<PT_Float, PT_Sint64>(S);
20068#if USE_TAILCALLS
20069 MUSTTAIL return InterpNext(S);
20070#else
20071 return true;
20072#endif
20073}
20074PRESERVE_NONE
20075static bool Interp_FlipFloatUint64(InterpState &S) {
20076 Flip<PT_Float, PT_Uint64>(S);
20077#if USE_TAILCALLS
20078 MUSTTAIL return InterpNext(S);
20079#else
20080 return true;
20081#endif
20082}
20083PRESERVE_NONE
20084static bool Interp_FlipFloatIntAP(InterpState &S) {
20085 Flip<PT_Float, PT_IntAP>(S);
20086#if USE_TAILCALLS
20087 MUSTTAIL return InterpNext(S);
20088#else
20089 return true;
20090#endif
20091}
20092PRESERVE_NONE
20093static bool Interp_FlipFloatIntAPS(InterpState &S) {
20094 Flip<PT_Float, PT_IntAPS>(S);
20095#if USE_TAILCALLS
20096 MUSTTAIL return InterpNext(S);
20097#else
20098 return true;
20099#endif
20100}
20101PRESERVE_NONE
20102static bool Interp_FlipFloatBool(InterpState &S) {
20103 Flip<PT_Float, PT_Bool>(S);
20104#if USE_TAILCALLS
20105 MUSTTAIL return InterpNext(S);
20106#else
20107 return true;
20108#endif
20109}
20110PRESERVE_NONE
20111static bool Interp_FlipFloatFixedPoint(InterpState &S) {
20112 Flip<PT_Float, PT_FixedPoint>(S);
20113#if USE_TAILCALLS
20114 MUSTTAIL return InterpNext(S);
20115#else
20116 return true;
20117#endif
20118}
20119PRESERVE_NONE
20120static bool Interp_FlipFloatPtr(InterpState &S) {
20121 Flip<PT_Float, PT_Ptr>(S);
20122#if USE_TAILCALLS
20123 MUSTTAIL return InterpNext(S);
20124#else
20125 return true;
20126#endif
20127}
20128PRESERVE_NONE
20129static bool Interp_FlipFloatMemberPtr(InterpState &S) {
20130 Flip<PT_Float, PT_MemberPtr>(S);
20131#if USE_TAILCALLS
20132 MUSTTAIL return InterpNext(S);
20133#else
20134 return true;
20135#endif
20136}
20137PRESERVE_NONE
20138static bool Interp_FlipFloatFloat(InterpState &S) {
20139 Flip<PT_Float, PT_Float>(S);
20140#if USE_TAILCALLS
20141 MUSTTAIL return InterpNext(S);
20142#else
20143 return true;
20144#endif
20145}
20146#endif
20147#ifdef GET_DISASM
20148case OP_FlipSint8Sint8:
20149 Text.Op = PrintName("FlipSint8Sint8");
20150 break;
20151case OP_FlipSint8Uint8:
20152 Text.Op = PrintName("FlipSint8Uint8");
20153 break;
20154case OP_FlipSint8Sint16:
20155 Text.Op = PrintName("FlipSint8Sint16");
20156 break;
20157case OP_FlipSint8Uint16:
20158 Text.Op = PrintName("FlipSint8Uint16");
20159 break;
20160case OP_FlipSint8Sint32:
20161 Text.Op = PrintName("FlipSint8Sint32");
20162 break;
20163case OP_FlipSint8Uint32:
20164 Text.Op = PrintName("FlipSint8Uint32");
20165 break;
20166case OP_FlipSint8Sint64:
20167 Text.Op = PrintName("FlipSint8Sint64");
20168 break;
20169case OP_FlipSint8Uint64:
20170 Text.Op = PrintName("FlipSint8Uint64");
20171 break;
20172case OP_FlipSint8IntAP:
20173 Text.Op = PrintName("FlipSint8IntAP");
20174 break;
20175case OP_FlipSint8IntAPS:
20176 Text.Op = PrintName("FlipSint8IntAPS");
20177 break;
20178case OP_FlipSint8Bool:
20179 Text.Op = PrintName("FlipSint8Bool");
20180 break;
20181case OP_FlipSint8FixedPoint:
20182 Text.Op = PrintName("FlipSint8FixedPoint");
20183 break;
20184case OP_FlipSint8Ptr:
20185 Text.Op = PrintName("FlipSint8Ptr");
20186 break;
20187case OP_FlipSint8MemberPtr:
20188 Text.Op = PrintName("FlipSint8MemberPtr");
20189 break;
20190case OP_FlipSint8Float:
20191 Text.Op = PrintName("FlipSint8Float");
20192 break;
20193case OP_FlipUint8Sint8:
20194 Text.Op = PrintName("FlipUint8Sint8");
20195 break;
20196case OP_FlipUint8Uint8:
20197 Text.Op = PrintName("FlipUint8Uint8");
20198 break;
20199case OP_FlipUint8Sint16:
20200 Text.Op = PrintName("FlipUint8Sint16");
20201 break;
20202case OP_FlipUint8Uint16:
20203 Text.Op = PrintName("FlipUint8Uint16");
20204 break;
20205case OP_FlipUint8Sint32:
20206 Text.Op = PrintName("FlipUint8Sint32");
20207 break;
20208case OP_FlipUint8Uint32:
20209 Text.Op = PrintName("FlipUint8Uint32");
20210 break;
20211case OP_FlipUint8Sint64:
20212 Text.Op = PrintName("FlipUint8Sint64");
20213 break;
20214case OP_FlipUint8Uint64:
20215 Text.Op = PrintName("FlipUint8Uint64");
20216 break;
20217case OP_FlipUint8IntAP:
20218 Text.Op = PrintName("FlipUint8IntAP");
20219 break;
20220case OP_FlipUint8IntAPS:
20221 Text.Op = PrintName("FlipUint8IntAPS");
20222 break;
20223case OP_FlipUint8Bool:
20224 Text.Op = PrintName("FlipUint8Bool");
20225 break;
20226case OP_FlipUint8FixedPoint:
20227 Text.Op = PrintName("FlipUint8FixedPoint");
20228 break;
20229case OP_FlipUint8Ptr:
20230 Text.Op = PrintName("FlipUint8Ptr");
20231 break;
20232case OP_FlipUint8MemberPtr:
20233 Text.Op = PrintName("FlipUint8MemberPtr");
20234 break;
20235case OP_FlipUint8Float:
20236 Text.Op = PrintName("FlipUint8Float");
20237 break;
20238case OP_FlipSint16Sint8:
20239 Text.Op = PrintName("FlipSint16Sint8");
20240 break;
20241case OP_FlipSint16Uint8:
20242 Text.Op = PrintName("FlipSint16Uint8");
20243 break;
20244case OP_FlipSint16Sint16:
20245 Text.Op = PrintName("FlipSint16Sint16");
20246 break;
20247case OP_FlipSint16Uint16:
20248 Text.Op = PrintName("FlipSint16Uint16");
20249 break;
20250case OP_FlipSint16Sint32:
20251 Text.Op = PrintName("FlipSint16Sint32");
20252 break;
20253case OP_FlipSint16Uint32:
20254 Text.Op = PrintName("FlipSint16Uint32");
20255 break;
20256case OP_FlipSint16Sint64:
20257 Text.Op = PrintName("FlipSint16Sint64");
20258 break;
20259case OP_FlipSint16Uint64:
20260 Text.Op = PrintName("FlipSint16Uint64");
20261 break;
20262case OP_FlipSint16IntAP:
20263 Text.Op = PrintName("FlipSint16IntAP");
20264 break;
20265case OP_FlipSint16IntAPS:
20266 Text.Op = PrintName("FlipSint16IntAPS");
20267 break;
20268case OP_FlipSint16Bool:
20269 Text.Op = PrintName("FlipSint16Bool");
20270 break;
20271case OP_FlipSint16FixedPoint:
20272 Text.Op = PrintName("FlipSint16FixedPoint");
20273 break;
20274case OP_FlipSint16Ptr:
20275 Text.Op = PrintName("FlipSint16Ptr");
20276 break;
20277case OP_FlipSint16MemberPtr:
20278 Text.Op = PrintName("FlipSint16MemberPtr");
20279 break;
20280case OP_FlipSint16Float:
20281 Text.Op = PrintName("FlipSint16Float");
20282 break;
20283case OP_FlipUint16Sint8:
20284 Text.Op = PrintName("FlipUint16Sint8");
20285 break;
20286case OP_FlipUint16Uint8:
20287 Text.Op = PrintName("FlipUint16Uint8");
20288 break;
20289case OP_FlipUint16Sint16:
20290 Text.Op = PrintName("FlipUint16Sint16");
20291 break;
20292case OP_FlipUint16Uint16:
20293 Text.Op = PrintName("FlipUint16Uint16");
20294 break;
20295case OP_FlipUint16Sint32:
20296 Text.Op = PrintName("FlipUint16Sint32");
20297 break;
20298case OP_FlipUint16Uint32:
20299 Text.Op = PrintName("FlipUint16Uint32");
20300 break;
20301case OP_FlipUint16Sint64:
20302 Text.Op = PrintName("FlipUint16Sint64");
20303 break;
20304case OP_FlipUint16Uint64:
20305 Text.Op = PrintName("FlipUint16Uint64");
20306 break;
20307case OP_FlipUint16IntAP:
20308 Text.Op = PrintName("FlipUint16IntAP");
20309 break;
20310case OP_FlipUint16IntAPS:
20311 Text.Op = PrintName("FlipUint16IntAPS");
20312 break;
20313case OP_FlipUint16Bool:
20314 Text.Op = PrintName("FlipUint16Bool");
20315 break;
20316case OP_FlipUint16FixedPoint:
20317 Text.Op = PrintName("FlipUint16FixedPoint");
20318 break;
20319case OP_FlipUint16Ptr:
20320 Text.Op = PrintName("FlipUint16Ptr");
20321 break;
20322case OP_FlipUint16MemberPtr:
20323 Text.Op = PrintName("FlipUint16MemberPtr");
20324 break;
20325case OP_FlipUint16Float:
20326 Text.Op = PrintName("FlipUint16Float");
20327 break;
20328case OP_FlipSint32Sint8:
20329 Text.Op = PrintName("FlipSint32Sint8");
20330 break;
20331case OP_FlipSint32Uint8:
20332 Text.Op = PrintName("FlipSint32Uint8");
20333 break;
20334case OP_FlipSint32Sint16:
20335 Text.Op = PrintName("FlipSint32Sint16");
20336 break;
20337case OP_FlipSint32Uint16:
20338 Text.Op = PrintName("FlipSint32Uint16");
20339 break;
20340case OP_FlipSint32Sint32:
20341 Text.Op = PrintName("FlipSint32Sint32");
20342 break;
20343case OP_FlipSint32Uint32:
20344 Text.Op = PrintName("FlipSint32Uint32");
20345 break;
20346case OP_FlipSint32Sint64:
20347 Text.Op = PrintName("FlipSint32Sint64");
20348 break;
20349case OP_FlipSint32Uint64:
20350 Text.Op = PrintName("FlipSint32Uint64");
20351 break;
20352case OP_FlipSint32IntAP:
20353 Text.Op = PrintName("FlipSint32IntAP");
20354 break;
20355case OP_FlipSint32IntAPS:
20356 Text.Op = PrintName("FlipSint32IntAPS");
20357 break;
20358case OP_FlipSint32Bool:
20359 Text.Op = PrintName("FlipSint32Bool");
20360 break;
20361case OP_FlipSint32FixedPoint:
20362 Text.Op = PrintName("FlipSint32FixedPoint");
20363 break;
20364case OP_FlipSint32Ptr:
20365 Text.Op = PrintName("FlipSint32Ptr");
20366 break;
20367case OP_FlipSint32MemberPtr:
20368 Text.Op = PrintName("FlipSint32MemberPtr");
20369 break;
20370case OP_FlipSint32Float:
20371 Text.Op = PrintName("FlipSint32Float");
20372 break;
20373case OP_FlipUint32Sint8:
20374 Text.Op = PrintName("FlipUint32Sint8");
20375 break;
20376case OP_FlipUint32Uint8:
20377 Text.Op = PrintName("FlipUint32Uint8");
20378 break;
20379case OP_FlipUint32Sint16:
20380 Text.Op = PrintName("FlipUint32Sint16");
20381 break;
20382case OP_FlipUint32Uint16:
20383 Text.Op = PrintName("FlipUint32Uint16");
20384 break;
20385case OP_FlipUint32Sint32:
20386 Text.Op = PrintName("FlipUint32Sint32");
20387 break;
20388case OP_FlipUint32Uint32:
20389 Text.Op = PrintName("FlipUint32Uint32");
20390 break;
20391case OP_FlipUint32Sint64:
20392 Text.Op = PrintName("FlipUint32Sint64");
20393 break;
20394case OP_FlipUint32Uint64:
20395 Text.Op = PrintName("FlipUint32Uint64");
20396 break;
20397case OP_FlipUint32IntAP:
20398 Text.Op = PrintName("FlipUint32IntAP");
20399 break;
20400case OP_FlipUint32IntAPS:
20401 Text.Op = PrintName("FlipUint32IntAPS");
20402 break;
20403case OP_FlipUint32Bool:
20404 Text.Op = PrintName("FlipUint32Bool");
20405 break;
20406case OP_FlipUint32FixedPoint:
20407 Text.Op = PrintName("FlipUint32FixedPoint");
20408 break;
20409case OP_FlipUint32Ptr:
20410 Text.Op = PrintName("FlipUint32Ptr");
20411 break;
20412case OP_FlipUint32MemberPtr:
20413 Text.Op = PrintName("FlipUint32MemberPtr");
20414 break;
20415case OP_FlipUint32Float:
20416 Text.Op = PrintName("FlipUint32Float");
20417 break;
20418case OP_FlipSint64Sint8:
20419 Text.Op = PrintName("FlipSint64Sint8");
20420 break;
20421case OP_FlipSint64Uint8:
20422 Text.Op = PrintName("FlipSint64Uint8");
20423 break;
20424case OP_FlipSint64Sint16:
20425 Text.Op = PrintName("FlipSint64Sint16");
20426 break;
20427case OP_FlipSint64Uint16:
20428 Text.Op = PrintName("FlipSint64Uint16");
20429 break;
20430case OP_FlipSint64Sint32:
20431 Text.Op = PrintName("FlipSint64Sint32");
20432 break;
20433case OP_FlipSint64Uint32:
20434 Text.Op = PrintName("FlipSint64Uint32");
20435 break;
20436case OP_FlipSint64Sint64:
20437 Text.Op = PrintName("FlipSint64Sint64");
20438 break;
20439case OP_FlipSint64Uint64:
20440 Text.Op = PrintName("FlipSint64Uint64");
20441 break;
20442case OP_FlipSint64IntAP:
20443 Text.Op = PrintName("FlipSint64IntAP");
20444 break;
20445case OP_FlipSint64IntAPS:
20446 Text.Op = PrintName("FlipSint64IntAPS");
20447 break;
20448case OP_FlipSint64Bool:
20449 Text.Op = PrintName("FlipSint64Bool");
20450 break;
20451case OP_FlipSint64FixedPoint:
20452 Text.Op = PrintName("FlipSint64FixedPoint");
20453 break;
20454case OP_FlipSint64Ptr:
20455 Text.Op = PrintName("FlipSint64Ptr");
20456 break;
20457case OP_FlipSint64MemberPtr:
20458 Text.Op = PrintName("FlipSint64MemberPtr");
20459 break;
20460case OP_FlipSint64Float:
20461 Text.Op = PrintName("FlipSint64Float");
20462 break;
20463case OP_FlipUint64Sint8:
20464 Text.Op = PrintName("FlipUint64Sint8");
20465 break;
20466case OP_FlipUint64Uint8:
20467 Text.Op = PrintName("FlipUint64Uint8");
20468 break;
20469case OP_FlipUint64Sint16:
20470 Text.Op = PrintName("FlipUint64Sint16");
20471 break;
20472case OP_FlipUint64Uint16:
20473 Text.Op = PrintName("FlipUint64Uint16");
20474 break;
20475case OP_FlipUint64Sint32:
20476 Text.Op = PrintName("FlipUint64Sint32");
20477 break;
20478case OP_FlipUint64Uint32:
20479 Text.Op = PrintName("FlipUint64Uint32");
20480 break;
20481case OP_FlipUint64Sint64:
20482 Text.Op = PrintName("FlipUint64Sint64");
20483 break;
20484case OP_FlipUint64Uint64:
20485 Text.Op = PrintName("FlipUint64Uint64");
20486 break;
20487case OP_FlipUint64IntAP:
20488 Text.Op = PrintName("FlipUint64IntAP");
20489 break;
20490case OP_FlipUint64IntAPS:
20491 Text.Op = PrintName("FlipUint64IntAPS");
20492 break;
20493case OP_FlipUint64Bool:
20494 Text.Op = PrintName("FlipUint64Bool");
20495 break;
20496case OP_FlipUint64FixedPoint:
20497 Text.Op = PrintName("FlipUint64FixedPoint");
20498 break;
20499case OP_FlipUint64Ptr:
20500 Text.Op = PrintName("FlipUint64Ptr");
20501 break;
20502case OP_FlipUint64MemberPtr:
20503 Text.Op = PrintName("FlipUint64MemberPtr");
20504 break;
20505case OP_FlipUint64Float:
20506 Text.Op = PrintName("FlipUint64Float");
20507 break;
20508case OP_FlipIntAPSint8:
20509 Text.Op = PrintName("FlipIntAPSint8");
20510 break;
20511case OP_FlipIntAPUint8:
20512 Text.Op = PrintName("FlipIntAPUint8");
20513 break;
20514case OP_FlipIntAPSint16:
20515 Text.Op = PrintName("FlipIntAPSint16");
20516 break;
20517case OP_FlipIntAPUint16:
20518 Text.Op = PrintName("FlipIntAPUint16");
20519 break;
20520case OP_FlipIntAPSint32:
20521 Text.Op = PrintName("FlipIntAPSint32");
20522 break;
20523case OP_FlipIntAPUint32:
20524 Text.Op = PrintName("FlipIntAPUint32");
20525 break;
20526case OP_FlipIntAPSint64:
20527 Text.Op = PrintName("FlipIntAPSint64");
20528 break;
20529case OP_FlipIntAPUint64:
20530 Text.Op = PrintName("FlipIntAPUint64");
20531 break;
20532case OP_FlipIntAPIntAP:
20533 Text.Op = PrintName("FlipIntAPIntAP");
20534 break;
20535case OP_FlipIntAPIntAPS:
20536 Text.Op = PrintName("FlipIntAPIntAPS");
20537 break;
20538case OP_FlipIntAPBool:
20539 Text.Op = PrintName("FlipIntAPBool");
20540 break;
20541case OP_FlipIntAPFixedPoint:
20542 Text.Op = PrintName("FlipIntAPFixedPoint");
20543 break;
20544case OP_FlipIntAPPtr:
20545 Text.Op = PrintName("FlipIntAPPtr");
20546 break;
20547case OP_FlipIntAPMemberPtr:
20548 Text.Op = PrintName("FlipIntAPMemberPtr");
20549 break;
20550case OP_FlipIntAPFloat:
20551 Text.Op = PrintName("FlipIntAPFloat");
20552 break;
20553case OP_FlipIntAPSSint8:
20554 Text.Op = PrintName("FlipIntAPSSint8");
20555 break;
20556case OP_FlipIntAPSUint8:
20557 Text.Op = PrintName("FlipIntAPSUint8");
20558 break;
20559case OP_FlipIntAPSSint16:
20560 Text.Op = PrintName("FlipIntAPSSint16");
20561 break;
20562case OP_FlipIntAPSUint16:
20563 Text.Op = PrintName("FlipIntAPSUint16");
20564 break;
20565case OP_FlipIntAPSSint32:
20566 Text.Op = PrintName("FlipIntAPSSint32");
20567 break;
20568case OP_FlipIntAPSUint32:
20569 Text.Op = PrintName("FlipIntAPSUint32");
20570 break;
20571case OP_FlipIntAPSSint64:
20572 Text.Op = PrintName("FlipIntAPSSint64");
20573 break;
20574case OP_FlipIntAPSUint64:
20575 Text.Op = PrintName("FlipIntAPSUint64");
20576 break;
20577case OP_FlipIntAPSIntAP:
20578 Text.Op = PrintName("FlipIntAPSIntAP");
20579 break;
20580case OP_FlipIntAPSIntAPS:
20581 Text.Op = PrintName("FlipIntAPSIntAPS");
20582 break;
20583case OP_FlipIntAPSBool:
20584 Text.Op = PrintName("FlipIntAPSBool");
20585 break;
20586case OP_FlipIntAPSFixedPoint:
20587 Text.Op = PrintName("FlipIntAPSFixedPoint");
20588 break;
20589case OP_FlipIntAPSPtr:
20590 Text.Op = PrintName("FlipIntAPSPtr");
20591 break;
20592case OP_FlipIntAPSMemberPtr:
20593 Text.Op = PrintName("FlipIntAPSMemberPtr");
20594 break;
20595case OP_FlipIntAPSFloat:
20596 Text.Op = PrintName("FlipIntAPSFloat");
20597 break;
20598case OP_FlipBoolSint8:
20599 Text.Op = PrintName("FlipBoolSint8");
20600 break;
20601case OP_FlipBoolUint8:
20602 Text.Op = PrintName("FlipBoolUint8");
20603 break;
20604case OP_FlipBoolSint16:
20605 Text.Op = PrintName("FlipBoolSint16");
20606 break;
20607case OP_FlipBoolUint16:
20608 Text.Op = PrintName("FlipBoolUint16");
20609 break;
20610case OP_FlipBoolSint32:
20611 Text.Op = PrintName("FlipBoolSint32");
20612 break;
20613case OP_FlipBoolUint32:
20614 Text.Op = PrintName("FlipBoolUint32");
20615 break;
20616case OP_FlipBoolSint64:
20617 Text.Op = PrintName("FlipBoolSint64");
20618 break;
20619case OP_FlipBoolUint64:
20620 Text.Op = PrintName("FlipBoolUint64");
20621 break;
20622case OP_FlipBoolIntAP:
20623 Text.Op = PrintName("FlipBoolIntAP");
20624 break;
20625case OP_FlipBoolIntAPS:
20626 Text.Op = PrintName("FlipBoolIntAPS");
20627 break;
20628case OP_FlipBoolBool:
20629 Text.Op = PrintName("FlipBoolBool");
20630 break;
20631case OP_FlipBoolFixedPoint:
20632 Text.Op = PrintName("FlipBoolFixedPoint");
20633 break;
20634case OP_FlipBoolPtr:
20635 Text.Op = PrintName("FlipBoolPtr");
20636 break;
20637case OP_FlipBoolMemberPtr:
20638 Text.Op = PrintName("FlipBoolMemberPtr");
20639 break;
20640case OP_FlipBoolFloat:
20641 Text.Op = PrintName("FlipBoolFloat");
20642 break;
20643case OP_FlipFixedPointSint8:
20644 Text.Op = PrintName("FlipFixedPointSint8");
20645 break;
20646case OP_FlipFixedPointUint8:
20647 Text.Op = PrintName("FlipFixedPointUint8");
20648 break;
20649case OP_FlipFixedPointSint16:
20650 Text.Op = PrintName("FlipFixedPointSint16");
20651 break;
20652case OP_FlipFixedPointUint16:
20653 Text.Op = PrintName("FlipFixedPointUint16");
20654 break;
20655case OP_FlipFixedPointSint32:
20656 Text.Op = PrintName("FlipFixedPointSint32");
20657 break;
20658case OP_FlipFixedPointUint32:
20659 Text.Op = PrintName("FlipFixedPointUint32");
20660 break;
20661case OP_FlipFixedPointSint64:
20662 Text.Op = PrintName("FlipFixedPointSint64");
20663 break;
20664case OP_FlipFixedPointUint64:
20665 Text.Op = PrintName("FlipFixedPointUint64");
20666 break;
20667case OP_FlipFixedPointIntAP:
20668 Text.Op = PrintName("FlipFixedPointIntAP");
20669 break;
20670case OP_FlipFixedPointIntAPS:
20671 Text.Op = PrintName("FlipFixedPointIntAPS");
20672 break;
20673case OP_FlipFixedPointBool:
20674 Text.Op = PrintName("FlipFixedPointBool");
20675 break;
20676case OP_FlipFixedPointFixedPoint:
20677 Text.Op = PrintName("FlipFixedPointFixedPoint");
20678 break;
20679case OP_FlipFixedPointPtr:
20680 Text.Op = PrintName("FlipFixedPointPtr");
20681 break;
20682case OP_FlipFixedPointMemberPtr:
20683 Text.Op = PrintName("FlipFixedPointMemberPtr");
20684 break;
20685case OP_FlipFixedPointFloat:
20686 Text.Op = PrintName("FlipFixedPointFloat");
20687 break;
20688case OP_FlipPtrSint8:
20689 Text.Op = PrintName("FlipPtrSint8");
20690 break;
20691case OP_FlipPtrUint8:
20692 Text.Op = PrintName("FlipPtrUint8");
20693 break;
20694case OP_FlipPtrSint16:
20695 Text.Op = PrintName("FlipPtrSint16");
20696 break;
20697case OP_FlipPtrUint16:
20698 Text.Op = PrintName("FlipPtrUint16");
20699 break;
20700case OP_FlipPtrSint32:
20701 Text.Op = PrintName("FlipPtrSint32");
20702 break;
20703case OP_FlipPtrUint32:
20704 Text.Op = PrintName("FlipPtrUint32");
20705 break;
20706case OP_FlipPtrSint64:
20707 Text.Op = PrintName("FlipPtrSint64");
20708 break;
20709case OP_FlipPtrUint64:
20710 Text.Op = PrintName("FlipPtrUint64");
20711 break;
20712case OP_FlipPtrIntAP:
20713 Text.Op = PrintName("FlipPtrIntAP");
20714 break;
20715case OP_FlipPtrIntAPS:
20716 Text.Op = PrintName("FlipPtrIntAPS");
20717 break;
20718case OP_FlipPtrBool:
20719 Text.Op = PrintName("FlipPtrBool");
20720 break;
20721case OP_FlipPtrFixedPoint:
20722 Text.Op = PrintName("FlipPtrFixedPoint");
20723 break;
20724case OP_FlipPtrPtr:
20725 Text.Op = PrintName("FlipPtrPtr");
20726 break;
20727case OP_FlipPtrMemberPtr:
20728 Text.Op = PrintName("FlipPtrMemberPtr");
20729 break;
20730case OP_FlipPtrFloat:
20731 Text.Op = PrintName("FlipPtrFloat");
20732 break;
20733case OP_FlipMemberPtrSint8:
20734 Text.Op = PrintName("FlipMemberPtrSint8");
20735 break;
20736case OP_FlipMemberPtrUint8:
20737 Text.Op = PrintName("FlipMemberPtrUint8");
20738 break;
20739case OP_FlipMemberPtrSint16:
20740 Text.Op = PrintName("FlipMemberPtrSint16");
20741 break;
20742case OP_FlipMemberPtrUint16:
20743 Text.Op = PrintName("FlipMemberPtrUint16");
20744 break;
20745case OP_FlipMemberPtrSint32:
20746 Text.Op = PrintName("FlipMemberPtrSint32");
20747 break;
20748case OP_FlipMemberPtrUint32:
20749 Text.Op = PrintName("FlipMemberPtrUint32");
20750 break;
20751case OP_FlipMemberPtrSint64:
20752 Text.Op = PrintName("FlipMemberPtrSint64");
20753 break;
20754case OP_FlipMemberPtrUint64:
20755 Text.Op = PrintName("FlipMemberPtrUint64");
20756 break;
20757case OP_FlipMemberPtrIntAP:
20758 Text.Op = PrintName("FlipMemberPtrIntAP");
20759 break;
20760case OP_FlipMemberPtrIntAPS:
20761 Text.Op = PrintName("FlipMemberPtrIntAPS");
20762 break;
20763case OP_FlipMemberPtrBool:
20764 Text.Op = PrintName("FlipMemberPtrBool");
20765 break;
20766case OP_FlipMemberPtrFixedPoint:
20767 Text.Op = PrintName("FlipMemberPtrFixedPoint");
20768 break;
20769case OP_FlipMemberPtrPtr:
20770 Text.Op = PrintName("FlipMemberPtrPtr");
20771 break;
20772case OP_FlipMemberPtrMemberPtr:
20773 Text.Op = PrintName("FlipMemberPtrMemberPtr");
20774 break;
20775case OP_FlipMemberPtrFloat:
20776 Text.Op = PrintName("FlipMemberPtrFloat");
20777 break;
20778case OP_FlipFloatSint8:
20779 Text.Op = PrintName("FlipFloatSint8");
20780 break;
20781case OP_FlipFloatUint8:
20782 Text.Op = PrintName("FlipFloatUint8");
20783 break;
20784case OP_FlipFloatSint16:
20785 Text.Op = PrintName("FlipFloatSint16");
20786 break;
20787case OP_FlipFloatUint16:
20788 Text.Op = PrintName("FlipFloatUint16");
20789 break;
20790case OP_FlipFloatSint32:
20791 Text.Op = PrintName("FlipFloatSint32");
20792 break;
20793case OP_FlipFloatUint32:
20794 Text.Op = PrintName("FlipFloatUint32");
20795 break;
20796case OP_FlipFloatSint64:
20797 Text.Op = PrintName("FlipFloatSint64");
20798 break;
20799case OP_FlipFloatUint64:
20800 Text.Op = PrintName("FlipFloatUint64");
20801 break;
20802case OP_FlipFloatIntAP:
20803 Text.Op = PrintName("FlipFloatIntAP");
20804 break;
20805case OP_FlipFloatIntAPS:
20806 Text.Op = PrintName("FlipFloatIntAPS");
20807 break;
20808case OP_FlipFloatBool:
20809 Text.Op = PrintName("FlipFloatBool");
20810 break;
20811case OP_FlipFloatFixedPoint:
20812 Text.Op = PrintName("FlipFloatFixedPoint");
20813 break;
20814case OP_FlipFloatPtr:
20815 Text.Op = PrintName("FlipFloatPtr");
20816 break;
20817case OP_FlipFloatMemberPtr:
20818 Text.Op = PrintName("FlipFloatMemberPtr");
20819 break;
20820case OP_FlipFloatFloat:
20821 Text.Op = PrintName("FlipFloatFloat");
20822 break;
20823#endif
20824#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
20825bool emitFlipSint8Sint8(SourceInfo);
20826bool emitFlipSint8Uint8(SourceInfo);
20827bool emitFlipSint8Sint16(SourceInfo);
20828bool emitFlipSint8Uint16(SourceInfo);
20829bool emitFlipSint8Sint32(SourceInfo);
20830bool emitFlipSint8Uint32(SourceInfo);
20831bool emitFlipSint8Sint64(SourceInfo);
20832bool emitFlipSint8Uint64(SourceInfo);
20833bool emitFlipSint8IntAP(SourceInfo);
20834bool emitFlipSint8IntAPS(SourceInfo);
20835bool emitFlipSint8Bool(SourceInfo);
20836bool emitFlipSint8FixedPoint(SourceInfo);
20837bool emitFlipSint8Ptr(SourceInfo);
20838bool emitFlipSint8MemberPtr(SourceInfo);
20839bool emitFlipSint8Float(SourceInfo);
20840bool emitFlipUint8Sint8(SourceInfo);
20841bool emitFlipUint8Uint8(SourceInfo);
20842bool emitFlipUint8Sint16(SourceInfo);
20843bool emitFlipUint8Uint16(SourceInfo);
20844bool emitFlipUint8Sint32(SourceInfo);
20845bool emitFlipUint8Uint32(SourceInfo);
20846bool emitFlipUint8Sint64(SourceInfo);
20847bool emitFlipUint8Uint64(SourceInfo);
20848bool emitFlipUint8IntAP(SourceInfo);
20849bool emitFlipUint8IntAPS(SourceInfo);
20850bool emitFlipUint8Bool(SourceInfo);
20851bool emitFlipUint8FixedPoint(SourceInfo);
20852bool emitFlipUint8Ptr(SourceInfo);
20853bool emitFlipUint8MemberPtr(SourceInfo);
20854bool emitFlipUint8Float(SourceInfo);
20855bool emitFlipSint16Sint8(SourceInfo);
20856bool emitFlipSint16Uint8(SourceInfo);
20857bool emitFlipSint16Sint16(SourceInfo);
20858bool emitFlipSint16Uint16(SourceInfo);
20859bool emitFlipSint16Sint32(SourceInfo);
20860bool emitFlipSint16Uint32(SourceInfo);
20861bool emitFlipSint16Sint64(SourceInfo);
20862bool emitFlipSint16Uint64(SourceInfo);
20863bool emitFlipSint16IntAP(SourceInfo);
20864bool emitFlipSint16IntAPS(SourceInfo);
20865bool emitFlipSint16Bool(SourceInfo);
20866bool emitFlipSint16FixedPoint(SourceInfo);
20867bool emitFlipSint16Ptr(SourceInfo);
20868bool emitFlipSint16MemberPtr(SourceInfo);
20869bool emitFlipSint16Float(SourceInfo);
20870bool emitFlipUint16Sint8(SourceInfo);
20871bool emitFlipUint16Uint8(SourceInfo);
20872bool emitFlipUint16Sint16(SourceInfo);
20873bool emitFlipUint16Uint16(SourceInfo);
20874bool emitFlipUint16Sint32(SourceInfo);
20875bool emitFlipUint16Uint32(SourceInfo);
20876bool emitFlipUint16Sint64(SourceInfo);
20877bool emitFlipUint16Uint64(SourceInfo);
20878bool emitFlipUint16IntAP(SourceInfo);
20879bool emitFlipUint16IntAPS(SourceInfo);
20880bool emitFlipUint16Bool(SourceInfo);
20881bool emitFlipUint16FixedPoint(SourceInfo);
20882bool emitFlipUint16Ptr(SourceInfo);
20883bool emitFlipUint16MemberPtr(SourceInfo);
20884bool emitFlipUint16Float(SourceInfo);
20885bool emitFlipSint32Sint8(SourceInfo);
20886bool emitFlipSint32Uint8(SourceInfo);
20887bool emitFlipSint32Sint16(SourceInfo);
20888bool emitFlipSint32Uint16(SourceInfo);
20889bool emitFlipSint32Sint32(SourceInfo);
20890bool emitFlipSint32Uint32(SourceInfo);
20891bool emitFlipSint32Sint64(SourceInfo);
20892bool emitFlipSint32Uint64(SourceInfo);
20893bool emitFlipSint32IntAP(SourceInfo);
20894bool emitFlipSint32IntAPS(SourceInfo);
20895bool emitFlipSint32Bool(SourceInfo);
20896bool emitFlipSint32FixedPoint(SourceInfo);
20897bool emitFlipSint32Ptr(SourceInfo);
20898bool emitFlipSint32MemberPtr(SourceInfo);
20899bool emitFlipSint32Float(SourceInfo);
20900bool emitFlipUint32Sint8(SourceInfo);
20901bool emitFlipUint32Uint8(SourceInfo);
20902bool emitFlipUint32Sint16(SourceInfo);
20903bool emitFlipUint32Uint16(SourceInfo);
20904bool emitFlipUint32Sint32(SourceInfo);
20905bool emitFlipUint32Uint32(SourceInfo);
20906bool emitFlipUint32Sint64(SourceInfo);
20907bool emitFlipUint32Uint64(SourceInfo);
20908bool emitFlipUint32IntAP(SourceInfo);
20909bool emitFlipUint32IntAPS(SourceInfo);
20910bool emitFlipUint32Bool(SourceInfo);
20911bool emitFlipUint32FixedPoint(SourceInfo);
20912bool emitFlipUint32Ptr(SourceInfo);
20913bool emitFlipUint32MemberPtr(SourceInfo);
20914bool emitFlipUint32Float(SourceInfo);
20915bool emitFlipSint64Sint8(SourceInfo);
20916bool emitFlipSint64Uint8(SourceInfo);
20917bool emitFlipSint64Sint16(SourceInfo);
20918bool emitFlipSint64Uint16(SourceInfo);
20919bool emitFlipSint64Sint32(SourceInfo);
20920bool emitFlipSint64Uint32(SourceInfo);
20921bool emitFlipSint64Sint64(SourceInfo);
20922bool emitFlipSint64Uint64(SourceInfo);
20923bool emitFlipSint64IntAP(SourceInfo);
20924bool emitFlipSint64IntAPS(SourceInfo);
20925bool emitFlipSint64Bool(SourceInfo);
20926bool emitFlipSint64FixedPoint(SourceInfo);
20927bool emitFlipSint64Ptr(SourceInfo);
20928bool emitFlipSint64MemberPtr(SourceInfo);
20929bool emitFlipSint64Float(SourceInfo);
20930bool emitFlipUint64Sint8(SourceInfo);
20931bool emitFlipUint64Uint8(SourceInfo);
20932bool emitFlipUint64Sint16(SourceInfo);
20933bool emitFlipUint64Uint16(SourceInfo);
20934bool emitFlipUint64Sint32(SourceInfo);
20935bool emitFlipUint64Uint32(SourceInfo);
20936bool emitFlipUint64Sint64(SourceInfo);
20937bool emitFlipUint64Uint64(SourceInfo);
20938bool emitFlipUint64IntAP(SourceInfo);
20939bool emitFlipUint64IntAPS(SourceInfo);
20940bool emitFlipUint64Bool(SourceInfo);
20941bool emitFlipUint64FixedPoint(SourceInfo);
20942bool emitFlipUint64Ptr(SourceInfo);
20943bool emitFlipUint64MemberPtr(SourceInfo);
20944bool emitFlipUint64Float(SourceInfo);
20945bool emitFlipIntAPSint8(SourceInfo);
20946bool emitFlipIntAPUint8(SourceInfo);
20947bool emitFlipIntAPSint16(SourceInfo);
20948bool emitFlipIntAPUint16(SourceInfo);
20949bool emitFlipIntAPSint32(SourceInfo);
20950bool emitFlipIntAPUint32(SourceInfo);
20951bool emitFlipIntAPSint64(SourceInfo);
20952bool emitFlipIntAPUint64(SourceInfo);
20953bool emitFlipIntAPIntAP(SourceInfo);
20954bool emitFlipIntAPIntAPS(SourceInfo);
20955bool emitFlipIntAPBool(SourceInfo);
20956bool emitFlipIntAPFixedPoint(SourceInfo);
20957bool emitFlipIntAPPtr(SourceInfo);
20958bool emitFlipIntAPMemberPtr(SourceInfo);
20959bool emitFlipIntAPFloat(SourceInfo);
20960bool emitFlipIntAPSSint8(SourceInfo);
20961bool emitFlipIntAPSUint8(SourceInfo);
20962bool emitFlipIntAPSSint16(SourceInfo);
20963bool emitFlipIntAPSUint16(SourceInfo);
20964bool emitFlipIntAPSSint32(SourceInfo);
20965bool emitFlipIntAPSUint32(SourceInfo);
20966bool emitFlipIntAPSSint64(SourceInfo);
20967bool emitFlipIntAPSUint64(SourceInfo);
20968bool emitFlipIntAPSIntAP(SourceInfo);
20969bool emitFlipIntAPSIntAPS(SourceInfo);
20970bool emitFlipIntAPSBool(SourceInfo);
20971bool emitFlipIntAPSFixedPoint(SourceInfo);
20972bool emitFlipIntAPSPtr(SourceInfo);
20973bool emitFlipIntAPSMemberPtr(SourceInfo);
20974bool emitFlipIntAPSFloat(SourceInfo);
20975bool emitFlipBoolSint8(SourceInfo);
20976bool emitFlipBoolUint8(SourceInfo);
20977bool emitFlipBoolSint16(SourceInfo);
20978bool emitFlipBoolUint16(SourceInfo);
20979bool emitFlipBoolSint32(SourceInfo);
20980bool emitFlipBoolUint32(SourceInfo);
20981bool emitFlipBoolSint64(SourceInfo);
20982bool emitFlipBoolUint64(SourceInfo);
20983bool emitFlipBoolIntAP(SourceInfo);
20984bool emitFlipBoolIntAPS(SourceInfo);
20985bool emitFlipBoolBool(SourceInfo);
20986bool emitFlipBoolFixedPoint(SourceInfo);
20987bool emitFlipBoolPtr(SourceInfo);
20988bool emitFlipBoolMemberPtr(SourceInfo);
20989bool emitFlipBoolFloat(SourceInfo);
20990bool emitFlipFixedPointSint8(SourceInfo);
20991bool emitFlipFixedPointUint8(SourceInfo);
20992bool emitFlipFixedPointSint16(SourceInfo);
20993bool emitFlipFixedPointUint16(SourceInfo);
20994bool emitFlipFixedPointSint32(SourceInfo);
20995bool emitFlipFixedPointUint32(SourceInfo);
20996bool emitFlipFixedPointSint64(SourceInfo);
20997bool emitFlipFixedPointUint64(SourceInfo);
20998bool emitFlipFixedPointIntAP(SourceInfo);
20999bool emitFlipFixedPointIntAPS(SourceInfo);
21000bool emitFlipFixedPointBool(SourceInfo);
21001bool emitFlipFixedPointFixedPoint(SourceInfo);
21002bool emitFlipFixedPointPtr(SourceInfo);
21003bool emitFlipFixedPointMemberPtr(SourceInfo);
21004bool emitFlipFixedPointFloat(SourceInfo);
21005bool emitFlipPtrSint8(SourceInfo);
21006bool emitFlipPtrUint8(SourceInfo);
21007bool emitFlipPtrSint16(SourceInfo);
21008bool emitFlipPtrUint16(SourceInfo);
21009bool emitFlipPtrSint32(SourceInfo);
21010bool emitFlipPtrUint32(SourceInfo);
21011bool emitFlipPtrSint64(SourceInfo);
21012bool emitFlipPtrUint64(SourceInfo);
21013bool emitFlipPtrIntAP(SourceInfo);
21014bool emitFlipPtrIntAPS(SourceInfo);
21015bool emitFlipPtrBool(SourceInfo);
21016bool emitFlipPtrFixedPoint(SourceInfo);
21017bool emitFlipPtrPtr(SourceInfo);
21018bool emitFlipPtrMemberPtr(SourceInfo);
21019bool emitFlipPtrFloat(SourceInfo);
21020bool emitFlipMemberPtrSint8(SourceInfo);
21021bool emitFlipMemberPtrUint8(SourceInfo);
21022bool emitFlipMemberPtrSint16(SourceInfo);
21023bool emitFlipMemberPtrUint16(SourceInfo);
21024bool emitFlipMemberPtrSint32(SourceInfo);
21025bool emitFlipMemberPtrUint32(SourceInfo);
21026bool emitFlipMemberPtrSint64(SourceInfo);
21027bool emitFlipMemberPtrUint64(SourceInfo);
21028bool emitFlipMemberPtrIntAP(SourceInfo);
21029bool emitFlipMemberPtrIntAPS(SourceInfo);
21030bool emitFlipMemberPtrBool(SourceInfo);
21031bool emitFlipMemberPtrFixedPoint(SourceInfo);
21032bool emitFlipMemberPtrPtr(SourceInfo);
21033bool emitFlipMemberPtrMemberPtr(SourceInfo);
21034bool emitFlipMemberPtrFloat(SourceInfo);
21035bool emitFlipFloatSint8(SourceInfo);
21036bool emitFlipFloatUint8(SourceInfo);
21037bool emitFlipFloatSint16(SourceInfo);
21038bool emitFlipFloatUint16(SourceInfo);
21039bool emitFlipFloatSint32(SourceInfo);
21040bool emitFlipFloatUint32(SourceInfo);
21041bool emitFlipFloatSint64(SourceInfo);
21042bool emitFlipFloatUint64(SourceInfo);
21043bool emitFlipFloatIntAP(SourceInfo);
21044bool emitFlipFloatIntAPS(SourceInfo);
21045bool emitFlipFloatBool(SourceInfo);
21046bool emitFlipFloatFixedPoint(SourceInfo);
21047bool emitFlipFloatPtr(SourceInfo);
21048bool emitFlipFloatMemberPtr(SourceInfo);
21049bool emitFlipFloatFloat(SourceInfo);
21050#endif
21051#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21052[[nodiscard]] bool emitFlip(PrimType, PrimType, SourceInfo I);
21053#endif
21054#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
21055bool
21056#if defined(GET_EVAL_IMPL)
21057EvalEmitter
21058#else
21059ByteCodeEmitter
21060#endif
21061::emitFlip(PrimType T0, PrimType T1, SourceInfo I) {
21062 switch (T0) {
21063 case PT_Sint8:
21064 switch (T1) {
21065 case PT_Sint8:
21066 return emitFlipSint8Sint8(I);
21067 case PT_Uint8:
21068 return emitFlipSint8Uint8(I);
21069 case PT_Sint16:
21070 return emitFlipSint8Sint16(I);
21071 case PT_Uint16:
21072 return emitFlipSint8Uint16(I);
21073 case PT_Sint32:
21074 return emitFlipSint8Sint32(I);
21075 case PT_Uint32:
21076 return emitFlipSint8Uint32(I);
21077 case PT_Sint64:
21078 return emitFlipSint8Sint64(I);
21079 case PT_Uint64:
21080 return emitFlipSint8Uint64(I);
21081 case PT_IntAP:
21082 return emitFlipSint8IntAP(I);
21083 case PT_IntAPS:
21084 return emitFlipSint8IntAPS(I);
21085 case PT_Bool:
21086 return emitFlipSint8Bool(I);
21087 case PT_FixedPoint:
21088 return emitFlipSint8FixedPoint(I);
21089 case PT_Ptr:
21090 return emitFlipSint8Ptr(I);
21091 case PT_MemberPtr:
21092 return emitFlipSint8MemberPtr(I);
21093 case PT_Float:
21094 return emitFlipSint8Float(I);
21095 }
21096 llvm_unreachable("invalid enum value");
21097 case PT_Uint8:
21098 switch (T1) {
21099 case PT_Sint8:
21100 return emitFlipUint8Sint8(I);
21101 case PT_Uint8:
21102 return emitFlipUint8Uint8(I);
21103 case PT_Sint16:
21104 return emitFlipUint8Sint16(I);
21105 case PT_Uint16:
21106 return emitFlipUint8Uint16(I);
21107 case PT_Sint32:
21108 return emitFlipUint8Sint32(I);
21109 case PT_Uint32:
21110 return emitFlipUint8Uint32(I);
21111 case PT_Sint64:
21112 return emitFlipUint8Sint64(I);
21113 case PT_Uint64:
21114 return emitFlipUint8Uint64(I);
21115 case PT_IntAP:
21116 return emitFlipUint8IntAP(I);
21117 case PT_IntAPS:
21118 return emitFlipUint8IntAPS(I);
21119 case PT_Bool:
21120 return emitFlipUint8Bool(I);
21121 case PT_FixedPoint:
21122 return emitFlipUint8FixedPoint(I);
21123 case PT_Ptr:
21124 return emitFlipUint8Ptr(I);
21125 case PT_MemberPtr:
21126 return emitFlipUint8MemberPtr(I);
21127 case PT_Float:
21128 return emitFlipUint8Float(I);
21129 }
21130 llvm_unreachable("invalid enum value");
21131 case PT_Sint16:
21132 switch (T1) {
21133 case PT_Sint8:
21134 return emitFlipSint16Sint8(I);
21135 case PT_Uint8:
21136 return emitFlipSint16Uint8(I);
21137 case PT_Sint16:
21138 return emitFlipSint16Sint16(I);
21139 case PT_Uint16:
21140 return emitFlipSint16Uint16(I);
21141 case PT_Sint32:
21142 return emitFlipSint16Sint32(I);
21143 case PT_Uint32:
21144 return emitFlipSint16Uint32(I);
21145 case PT_Sint64:
21146 return emitFlipSint16Sint64(I);
21147 case PT_Uint64:
21148 return emitFlipSint16Uint64(I);
21149 case PT_IntAP:
21150 return emitFlipSint16IntAP(I);
21151 case PT_IntAPS:
21152 return emitFlipSint16IntAPS(I);
21153 case PT_Bool:
21154 return emitFlipSint16Bool(I);
21155 case PT_FixedPoint:
21156 return emitFlipSint16FixedPoint(I);
21157 case PT_Ptr:
21158 return emitFlipSint16Ptr(I);
21159 case PT_MemberPtr:
21160 return emitFlipSint16MemberPtr(I);
21161 case PT_Float:
21162 return emitFlipSint16Float(I);
21163 }
21164 llvm_unreachable("invalid enum value");
21165 case PT_Uint16:
21166 switch (T1) {
21167 case PT_Sint8:
21168 return emitFlipUint16Sint8(I);
21169 case PT_Uint8:
21170 return emitFlipUint16Uint8(I);
21171 case PT_Sint16:
21172 return emitFlipUint16Sint16(I);
21173 case PT_Uint16:
21174 return emitFlipUint16Uint16(I);
21175 case PT_Sint32:
21176 return emitFlipUint16Sint32(I);
21177 case PT_Uint32:
21178 return emitFlipUint16Uint32(I);
21179 case PT_Sint64:
21180 return emitFlipUint16Sint64(I);
21181 case PT_Uint64:
21182 return emitFlipUint16Uint64(I);
21183 case PT_IntAP:
21184 return emitFlipUint16IntAP(I);
21185 case PT_IntAPS:
21186 return emitFlipUint16IntAPS(I);
21187 case PT_Bool:
21188 return emitFlipUint16Bool(I);
21189 case PT_FixedPoint:
21190 return emitFlipUint16FixedPoint(I);
21191 case PT_Ptr:
21192 return emitFlipUint16Ptr(I);
21193 case PT_MemberPtr:
21194 return emitFlipUint16MemberPtr(I);
21195 case PT_Float:
21196 return emitFlipUint16Float(I);
21197 }
21198 llvm_unreachable("invalid enum value");
21199 case PT_Sint32:
21200 switch (T1) {
21201 case PT_Sint8:
21202 return emitFlipSint32Sint8(I);
21203 case PT_Uint8:
21204 return emitFlipSint32Uint8(I);
21205 case PT_Sint16:
21206 return emitFlipSint32Sint16(I);
21207 case PT_Uint16:
21208 return emitFlipSint32Uint16(I);
21209 case PT_Sint32:
21210 return emitFlipSint32Sint32(I);
21211 case PT_Uint32:
21212 return emitFlipSint32Uint32(I);
21213 case PT_Sint64:
21214 return emitFlipSint32Sint64(I);
21215 case PT_Uint64:
21216 return emitFlipSint32Uint64(I);
21217 case PT_IntAP:
21218 return emitFlipSint32IntAP(I);
21219 case PT_IntAPS:
21220 return emitFlipSint32IntAPS(I);
21221 case PT_Bool:
21222 return emitFlipSint32Bool(I);
21223 case PT_FixedPoint:
21224 return emitFlipSint32FixedPoint(I);
21225 case PT_Ptr:
21226 return emitFlipSint32Ptr(I);
21227 case PT_MemberPtr:
21228 return emitFlipSint32MemberPtr(I);
21229 case PT_Float:
21230 return emitFlipSint32Float(I);
21231 }
21232 llvm_unreachable("invalid enum value");
21233 case PT_Uint32:
21234 switch (T1) {
21235 case PT_Sint8:
21236 return emitFlipUint32Sint8(I);
21237 case PT_Uint8:
21238 return emitFlipUint32Uint8(I);
21239 case PT_Sint16:
21240 return emitFlipUint32Sint16(I);
21241 case PT_Uint16:
21242 return emitFlipUint32Uint16(I);
21243 case PT_Sint32:
21244 return emitFlipUint32Sint32(I);
21245 case PT_Uint32:
21246 return emitFlipUint32Uint32(I);
21247 case PT_Sint64:
21248 return emitFlipUint32Sint64(I);
21249 case PT_Uint64:
21250 return emitFlipUint32Uint64(I);
21251 case PT_IntAP:
21252 return emitFlipUint32IntAP(I);
21253 case PT_IntAPS:
21254 return emitFlipUint32IntAPS(I);
21255 case PT_Bool:
21256 return emitFlipUint32Bool(I);
21257 case PT_FixedPoint:
21258 return emitFlipUint32FixedPoint(I);
21259 case PT_Ptr:
21260 return emitFlipUint32Ptr(I);
21261 case PT_MemberPtr:
21262 return emitFlipUint32MemberPtr(I);
21263 case PT_Float:
21264 return emitFlipUint32Float(I);
21265 }
21266 llvm_unreachable("invalid enum value");
21267 case PT_Sint64:
21268 switch (T1) {
21269 case PT_Sint8:
21270 return emitFlipSint64Sint8(I);
21271 case PT_Uint8:
21272 return emitFlipSint64Uint8(I);
21273 case PT_Sint16:
21274 return emitFlipSint64Sint16(I);
21275 case PT_Uint16:
21276 return emitFlipSint64Uint16(I);
21277 case PT_Sint32:
21278 return emitFlipSint64Sint32(I);
21279 case PT_Uint32:
21280 return emitFlipSint64Uint32(I);
21281 case PT_Sint64:
21282 return emitFlipSint64Sint64(I);
21283 case PT_Uint64:
21284 return emitFlipSint64Uint64(I);
21285 case PT_IntAP:
21286 return emitFlipSint64IntAP(I);
21287 case PT_IntAPS:
21288 return emitFlipSint64IntAPS(I);
21289 case PT_Bool:
21290 return emitFlipSint64Bool(I);
21291 case PT_FixedPoint:
21292 return emitFlipSint64FixedPoint(I);
21293 case PT_Ptr:
21294 return emitFlipSint64Ptr(I);
21295 case PT_MemberPtr:
21296 return emitFlipSint64MemberPtr(I);
21297 case PT_Float:
21298 return emitFlipSint64Float(I);
21299 }
21300 llvm_unreachable("invalid enum value");
21301 case PT_Uint64:
21302 switch (T1) {
21303 case PT_Sint8:
21304 return emitFlipUint64Sint8(I);
21305 case PT_Uint8:
21306 return emitFlipUint64Uint8(I);
21307 case PT_Sint16:
21308 return emitFlipUint64Sint16(I);
21309 case PT_Uint16:
21310 return emitFlipUint64Uint16(I);
21311 case PT_Sint32:
21312 return emitFlipUint64Sint32(I);
21313 case PT_Uint32:
21314 return emitFlipUint64Uint32(I);
21315 case PT_Sint64:
21316 return emitFlipUint64Sint64(I);
21317 case PT_Uint64:
21318 return emitFlipUint64Uint64(I);
21319 case PT_IntAP:
21320 return emitFlipUint64IntAP(I);
21321 case PT_IntAPS:
21322 return emitFlipUint64IntAPS(I);
21323 case PT_Bool:
21324 return emitFlipUint64Bool(I);
21325 case PT_FixedPoint:
21326 return emitFlipUint64FixedPoint(I);
21327 case PT_Ptr:
21328 return emitFlipUint64Ptr(I);
21329 case PT_MemberPtr:
21330 return emitFlipUint64MemberPtr(I);
21331 case PT_Float:
21332 return emitFlipUint64Float(I);
21333 }
21334 llvm_unreachable("invalid enum value");
21335 case PT_IntAP:
21336 switch (T1) {
21337 case PT_Sint8:
21338 return emitFlipIntAPSint8(I);
21339 case PT_Uint8:
21340 return emitFlipIntAPUint8(I);
21341 case PT_Sint16:
21342 return emitFlipIntAPSint16(I);
21343 case PT_Uint16:
21344 return emitFlipIntAPUint16(I);
21345 case PT_Sint32:
21346 return emitFlipIntAPSint32(I);
21347 case PT_Uint32:
21348 return emitFlipIntAPUint32(I);
21349 case PT_Sint64:
21350 return emitFlipIntAPSint64(I);
21351 case PT_Uint64:
21352 return emitFlipIntAPUint64(I);
21353 case PT_IntAP:
21354 return emitFlipIntAPIntAP(I);
21355 case PT_IntAPS:
21356 return emitFlipIntAPIntAPS(I);
21357 case PT_Bool:
21358 return emitFlipIntAPBool(I);
21359 case PT_FixedPoint:
21360 return emitFlipIntAPFixedPoint(I);
21361 case PT_Ptr:
21362 return emitFlipIntAPPtr(I);
21363 case PT_MemberPtr:
21364 return emitFlipIntAPMemberPtr(I);
21365 case PT_Float:
21366 return emitFlipIntAPFloat(I);
21367 }
21368 llvm_unreachable("invalid enum value");
21369 case PT_IntAPS:
21370 switch (T1) {
21371 case PT_Sint8:
21372 return emitFlipIntAPSSint8(I);
21373 case PT_Uint8:
21374 return emitFlipIntAPSUint8(I);
21375 case PT_Sint16:
21376 return emitFlipIntAPSSint16(I);
21377 case PT_Uint16:
21378 return emitFlipIntAPSUint16(I);
21379 case PT_Sint32:
21380 return emitFlipIntAPSSint32(I);
21381 case PT_Uint32:
21382 return emitFlipIntAPSUint32(I);
21383 case PT_Sint64:
21384 return emitFlipIntAPSSint64(I);
21385 case PT_Uint64:
21386 return emitFlipIntAPSUint64(I);
21387 case PT_IntAP:
21388 return emitFlipIntAPSIntAP(I);
21389 case PT_IntAPS:
21390 return emitFlipIntAPSIntAPS(I);
21391 case PT_Bool:
21392 return emitFlipIntAPSBool(I);
21393 case PT_FixedPoint:
21394 return emitFlipIntAPSFixedPoint(I);
21395 case PT_Ptr:
21396 return emitFlipIntAPSPtr(I);
21397 case PT_MemberPtr:
21398 return emitFlipIntAPSMemberPtr(I);
21399 case PT_Float:
21400 return emitFlipIntAPSFloat(I);
21401 }
21402 llvm_unreachable("invalid enum value");
21403 case PT_Bool:
21404 switch (T1) {
21405 case PT_Sint8:
21406 return emitFlipBoolSint8(I);
21407 case PT_Uint8:
21408 return emitFlipBoolUint8(I);
21409 case PT_Sint16:
21410 return emitFlipBoolSint16(I);
21411 case PT_Uint16:
21412 return emitFlipBoolUint16(I);
21413 case PT_Sint32:
21414 return emitFlipBoolSint32(I);
21415 case PT_Uint32:
21416 return emitFlipBoolUint32(I);
21417 case PT_Sint64:
21418 return emitFlipBoolSint64(I);
21419 case PT_Uint64:
21420 return emitFlipBoolUint64(I);
21421 case PT_IntAP:
21422 return emitFlipBoolIntAP(I);
21423 case PT_IntAPS:
21424 return emitFlipBoolIntAPS(I);
21425 case PT_Bool:
21426 return emitFlipBoolBool(I);
21427 case PT_FixedPoint:
21428 return emitFlipBoolFixedPoint(I);
21429 case PT_Ptr:
21430 return emitFlipBoolPtr(I);
21431 case PT_MemberPtr:
21432 return emitFlipBoolMemberPtr(I);
21433 case PT_Float:
21434 return emitFlipBoolFloat(I);
21435 }
21436 llvm_unreachable("invalid enum value");
21437 case PT_FixedPoint:
21438 switch (T1) {
21439 case PT_Sint8:
21440 return emitFlipFixedPointSint8(I);
21441 case PT_Uint8:
21442 return emitFlipFixedPointUint8(I);
21443 case PT_Sint16:
21444 return emitFlipFixedPointSint16(I);
21445 case PT_Uint16:
21446 return emitFlipFixedPointUint16(I);
21447 case PT_Sint32:
21448 return emitFlipFixedPointSint32(I);
21449 case PT_Uint32:
21450 return emitFlipFixedPointUint32(I);
21451 case PT_Sint64:
21452 return emitFlipFixedPointSint64(I);
21453 case PT_Uint64:
21454 return emitFlipFixedPointUint64(I);
21455 case PT_IntAP:
21456 return emitFlipFixedPointIntAP(I);
21457 case PT_IntAPS:
21458 return emitFlipFixedPointIntAPS(I);
21459 case PT_Bool:
21460 return emitFlipFixedPointBool(I);
21461 case PT_FixedPoint:
21462 return emitFlipFixedPointFixedPoint(I);
21463 case PT_Ptr:
21464 return emitFlipFixedPointPtr(I);
21465 case PT_MemberPtr:
21466 return emitFlipFixedPointMemberPtr(I);
21467 case PT_Float:
21468 return emitFlipFixedPointFloat(I);
21469 }
21470 llvm_unreachable("invalid enum value");
21471 case PT_Ptr:
21472 switch (T1) {
21473 case PT_Sint8:
21474 return emitFlipPtrSint8(I);
21475 case PT_Uint8:
21476 return emitFlipPtrUint8(I);
21477 case PT_Sint16:
21478 return emitFlipPtrSint16(I);
21479 case PT_Uint16:
21480 return emitFlipPtrUint16(I);
21481 case PT_Sint32:
21482 return emitFlipPtrSint32(I);
21483 case PT_Uint32:
21484 return emitFlipPtrUint32(I);
21485 case PT_Sint64:
21486 return emitFlipPtrSint64(I);
21487 case PT_Uint64:
21488 return emitFlipPtrUint64(I);
21489 case PT_IntAP:
21490 return emitFlipPtrIntAP(I);
21491 case PT_IntAPS:
21492 return emitFlipPtrIntAPS(I);
21493 case PT_Bool:
21494 return emitFlipPtrBool(I);
21495 case PT_FixedPoint:
21496 return emitFlipPtrFixedPoint(I);
21497 case PT_Ptr:
21498 return emitFlipPtrPtr(I);
21499 case PT_MemberPtr:
21500 return emitFlipPtrMemberPtr(I);
21501 case PT_Float:
21502 return emitFlipPtrFloat(I);
21503 }
21504 llvm_unreachable("invalid enum value");
21505 case PT_MemberPtr:
21506 switch (T1) {
21507 case PT_Sint8:
21508 return emitFlipMemberPtrSint8(I);
21509 case PT_Uint8:
21510 return emitFlipMemberPtrUint8(I);
21511 case PT_Sint16:
21512 return emitFlipMemberPtrSint16(I);
21513 case PT_Uint16:
21514 return emitFlipMemberPtrUint16(I);
21515 case PT_Sint32:
21516 return emitFlipMemberPtrSint32(I);
21517 case PT_Uint32:
21518 return emitFlipMemberPtrUint32(I);
21519 case PT_Sint64:
21520 return emitFlipMemberPtrSint64(I);
21521 case PT_Uint64:
21522 return emitFlipMemberPtrUint64(I);
21523 case PT_IntAP:
21524 return emitFlipMemberPtrIntAP(I);
21525 case PT_IntAPS:
21526 return emitFlipMemberPtrIntAPS(I);
21527 case PT_Bool:
21528 return emitFlipMemberPtrBool(I);
21529 case PT_FixedPoint:
21530 return emitFlipMemberPtrFixedPoint(I);
21531 case PT_Ptr:
21532 return emitFlipMemberPtrPtr(I);
21533 case PT_MemberPtr:
21534 return emitFlipMemberPtrMemberPtr(I);
21535 case PT_Float:
21536 return emitFlipMemberPtrFloat(I);
21537 }
21538 llvm_unreachable("invalid enum value");
21539 case PT_Float:
21540 switch (T1) {
21541 case PT_Sint8:
21542 return emitFlipFloatSint8(I);
21543 case PT_Uint8:
21544 return emitFlipFloatUint8(I);
21545 case PT_Sint16:
21546 return emitFlipFloatSint16(I);
21547 case PT_Uint16:
21548 return emitFlipFloatUint16(I);
21549 case PT_Sint32:
21550 return emitFlipFloatSint32(I);
21551 case PT_Uint32:
21552 return emitFlipFloatUint32(I);
21553 case PT_Sint64:
21554 return emitFlipFloatSint64(I);
21555 case PT_Uint64:
21556 return emitFlipFloatUint64(I);
21557 case PT_IntAP:
21558 return emitFlipFloatIntAP(I);
21559 case PT_IntAPS:
21560 return emitFlipFloatIntAPS(I);
21561 case PT_Bool:
21562 return emitFlipFloatBool(I);
21563 case PT_FixedPoint:
21564 return emitFlipFloatFixedPoint(I);
21565 case PT_Ptr:
21566 return emitFlipFloatPtr(I);
21567 case PT_MemberPtr:
21568 return emitFlipFloatMemberPtr(I);
21569 case PT_Float:
21570 return emitFlipFloatFloat(I);
21571 }
21572 llvm_unreachable("invalid enum value");
21573 }
21574 llvm_unreachable("invalid enum value");
21575}
21576#endif
21577#ifdef GET_LINK_IMPL
21578bool ByteCodeEmitter::emitFlipSint8Sint8(SourceInfo L) {
21579 return emitOp<>(OP_FlipSint8Sint8, L);
21580}
21581bool ByteCodeEmitter::emitFlipSint8Uint8(SourceInfo L) {
21582 return emitOp<>(OP_FlipSint8Uint8, L);
21583}
21584bool ByteCodeEmitter::emitFlipSint8Sint16(SourceInfo L) {
21585 return emitOp<>(OP_FlipSint8Sint16, L);
21586}
21587bool ByteCodeEmitter::emitFlipSint8Uint16(SourceInfo L) {
21588 return emitOp<>(OP_FlipSint8Uint16, L);
21589}
21590bool ByteCodeEmitter::emitFlipSint8Sint32(SourceInfo L) {
21591 return emitOp<>(OP_FlipSint8Sint32, L);
21592}
21593bool ByteCodeEmitter::emitFlipSint8Uint32(SourceInfo L) {
21594 return emitOp<>(OP_FlipSint8Uint32, L);
21595}
21596bool ByteCodeEmitter::emitFlipSint8Sint64(SourceInfo L) {
21597 return emitOp<>(OP_FlipSint8Sint64, L);
21598}
21599bool ByteCodeEmitter::emitFlipSint8Uint64(SourceInfo L) {
21600 return emitOp<>(OP_FlipSint8Uint64, L);
21601}
21602bool ByteCodeEmitter::emitFlipSint8IntAP(SourceInfo L) {
21603 return emitOp<>(OP_FlipSint8IntAP, L);
21604}
21605bool ByteCodeEmitter::emitFlipSint8IntAPS(SourceInfo L) {
21606 return emitOp<>(OP_FlipSint8IntAPS, L);
21607}
21608bool ByteCodeEmitter::emitFlipSint8Bool(SourceInfo L) {
21609 return emitOp<>(OP_FlipSint8Bool, L);
21610}
21611bool ByteCodeEmitter::emitFlipSint8FixedPoint(SourceInfo L) {
21612 return emitOp<>(OP_FlipSint8FixedPoint, L);
21613}
21614bool ByteCodeEmitter::emitFlipSint8Ptr(SourceInfo L) {
21615 return emitOp<>(OP_FlipSint8Ptr, L);
21616}
21617bool ByteCodeEmitter::emitFlipSint8MemberPtr(SourceInfo L) {
21618 return emitOp<>(OP_FlipSint8MemberPtr, L);
21619}
21620bool ByteCodeEmitter::emitFlipSint8Float(SourceInfo L) {
21621 return emitOp<>(OP_FlipSint8Float, L);
21622}
21623bool ByteCodeEmitter::emitFlipUint8Sint8(SourceInfo L) {
21624 return emitOp<>(OP_FlipUint8Sint8, L);
21625}
21626bool ByteCodeEmitter::emitFlipUint8Uint8(SourceInfo L) {
21627 return emitOp<>(OP_FlipUint8Uint8, L);
21628}
21629bool ByteCodeEmitter::emitFlipUint8Sint16(SourceInfo L) {
21630 return emitOp<>(OP_FlipUint8Sint16, L);
21631}
21632bool ByteCodeEmitter::emitFlipUint8Uint16(SourceInfo L) {
21633 return emitOp<>(OP_FlipUint8Uint16, L);
21634}
21635bool ByteCodeEmitter::emitFlipUint8Sint32(SourceInfo L) {
21636 return emitOp<>(OP_FlipUint8Sint32, L);
21637}
21638bool ByteCodeEmitter::emitFlipUint8Uint32(SourceInfo L) {
21639 return emitOp<>(OP_FlipUint8Uint32, L);
21640}
21641bool ByteCodeEmitter::emitFlipUint8Sint64(SourceInfo L) {
21642 return emitOp<>(OP_FlipUint8Sint64, L);
21643}
21644bool ByteCodeEmitter::emitFlipUint8Uint64(SourceInfo L) {
21645 return emitOp<>(OP_FlipUint8Uint64, L);
21646}
21647bool ByteCodeEmitter::emitFlipUint8IntAP(SourceInfo L) {
21648 return emitOp<>(OP_FlipUint8IntAP, L);
21649}
21650bool ByteCodeEmitter::emitFlipUint8IntAPS(SourceInfo L) {
21651 return emitOp<>(OP_FlipUint8IntAPS, L);
21652}
21653bool ByteCodeEmitter::emitFlipUint8Bool(SourceInfo L) {
21654 return emitOp<>(OP_FlipUint8Bool, L);
21655}
21656bool ByteCodeEmitter::emitFlipUint8FixedPoint(SourceInfo L) {
21657 return emitOp<>(OP_FlipUint8FixedPoint, L);
21658}
21659bool ByteCodeEmitter::emitFlipUint8Ptr(SourceInfo L) {
21660 return emitOp<>(OP_FlipUint8Ptr, L);
21661}
21662bool ByteCodeEmitter::emitFlipUint8MemberPtr(SourceInfo L) {
21663 return emitOp<>(OP_FlipUint8MemberPtr, L);
21664}
21665bool ByteCodeEmitter::emitFlipUint8Float(SourceInfo L) {
21666 return emitOp<>(OP_FlipUint8Float, L);
21667}
21668bool ByteCodeEmitter::emitFlipSint16Sint8(SourceInfo L) {
21669 return emitOp<>(OP_FlipSint16Sint8, L);
21670}
21671bool ByteCodeEmitter::emitFlipSint16Uint8(SourceInfo L) {
21672 return emitOp<>(OP_FlipSint16Uint8, L);
21673}
21674bool ByteCodeEmitter::emitFlipSint16Sint16(SourceInfo L) {
21675 return emitOp<>(OP_FlipSint16Sint16, L);
21676}
21677bool ByteCodeEmitter::emitFlipSint16Uint16(SourceInfo L) {
21678 return emitOp<>(OP_FlipSint16Uint16, L);
21679}
21680bool ByteCodeEmitter::emitFlipSint16Sint32(SourceInfo L) {
21681 return emitOp<>(OP_FlipSint16Sint32, L);
21682}
21683bool ByteCodeEmitter::emitFlipSint16Uint32(SourceInfo L) {
21684 return emitOp<>(OP_FlipSint16Uint32, L);
21685}
21686bool ByteCodeEmitter::emitFlipSint16Sint64(SourceInfo L) {
21687 return emitOp<>(OP_FlipSint16Sint64, L);
21688}
21689bool ByteCodeEmitter::emitFlipSint16Uint64(SourceInfo L) {
21690 return emitOp<>(OP_FlipSint16Uint64, L);
21691}
21692bool ByteCodeEmitter::emitFlipSint16IntAP(SourceInfo L) {
21693 return emitOp<>(OP_FlipSint16IntAP, L);
21694}
21695bool ByteCodeEmitter::emitFlipSint16IntAPS(SourceInfo L) {
21696 return emitOp<>(OP_FlipSint16IntAPS, L);
21697}
21698bool ByteCodeEmitter::emitFlipSint16Bool(SourceInfo L) {
21699 return emitOp<>(OP_FlipSint16Bool, L);
21700}
21701bool ByteCodeEmitter::emitFlipSint16FixedPoint(SourceInfo L) {
21702 return emitOp<>(OP_FlipSint16FixedPoint, L);
21703}
21704bool ByteCodeEmitter::emitFlipSint16Ptr(SourceInfo L) {
21705 return emitOp<>(OP_FlipSint16Ptr, L);
21706}
21707bool ByteCodeEmitter::emitFlipSint16MemberPtr(SourceInfo L) {
21708 return emitOp<>(OP_FlipSint16MemberPtr, L);
21709}
21710bool ByteCodeEmitter::emitFlipSint16Float(SourceInfo L) {
21711 return emitOp<>(OP_FlipSint16Float, L);
21712}
21713bool ByteCodeEmitter::emitFlipUint16Sint8(SourceInfo L) {
21714 return emitOp<>(OP_FlipUint16Sint8, L);
21715}
21716bool ByteCodeEmitter::emitFlipUint16Uint8(SourceInfo L) {
21717 return emitOp<>(OP_FlipUint16Uint8, L);
21718}
21719bool ByteCodeEmitter::emitFlipUint16Sint16(SourceInfo L) {
21720 return emitOp<>(OP_FlipUint16Sint16, L);
21721}
21722bool ByteCodeEmitter::emitFlipUint16Uint16(SourceInfo L) {
21723 return emitOp<>(OP_FlipUint16Uint16, L);
21724}
21725bool ByteCodeEmitter::emitFlipUint16Sint32(SourceInfo L) {
21726 return emitOp<>(OP_FlipUint16Sint32, L);
21727}
21728bool ByteCodeEmitter::emitFlipUint16Uint32(SourceInfo L) {
21729 return emitOp<>(OP_FlipUint16Uint32, L);
21730}
21731bool ByteCodeEmitter::emitFlipUint16Sint64(SourceInfo L) {
21732 return emitOp<>(OP_FlipUint16Sint64, L);
21733}
21734bool ByteCodeEmitter::emitFlipUint16Uint64(SourceInfo L) {
21735 return emitOp<>(OP_FlipUint16Uint64, L);
21736}
21737bool ByteCodeEmitter::emitFlipUint16IntAP(SourceInfo L) {
21738 return emitOp<>(OP_FlipUint16IntAP, L);
21739}
21740bool ByteCodeEmitter::emitFlipUint16IntAPS(SourceInfo L) {
21741 return emitOp<>(OP_FlipUint16IntAPS, L);
21742}
21743bool ByteCodeEmitter::emitFlipUint16Bool(SourceInfo L) {
21744 return emitOp<>(OP_FlipUint16Bool, L);
21745}
21746bool ByteCodeEmitter::emitFlipUint16FixedPoint(SourceInfo L) {
21747 return emitOp<>(OP_FlipUint16FixedPoint, L);
21748}
21749bool ByteCodeEmitter::emitFlipUint16Ptr(SourceInfo L) {
21750 return emitOp<>(OP_FlipUint16Ptr, L);
21751}
21752bool ByteCodeEmitter::emitFlipUint16MemberPtr(SourceInfo L) {
21753 return emitOp<>(OP_FlipUint16MemberPtr, L);
21754}
21755bool ByteCodeEmitter::emitFlipUint16Float(SourceInfo L) {
21756 return emitOp<>(OP_FlipUint16Float, L);
21757}
21758bool ByteCodeEmitter::emitFlipSint32Sint8(SourceInfo L) {
21759 return emitOp<>(OP_FlipSint32Sint8, L);
21760}
21761bool ByteCodeEmitter::emitFlipSint32Uint8(SourceInfo L) {
21762 return emitOp<>(OP_FlipSint32Uint8, L);
21763}
21764bool ByteCodeEmitter::emitFlipSint32Sint16(SourceInfo L) {
21765 return emitOp<>(OP_FlipSint32Sint16, L);
21766}
21767bool ByteCodeEmitter::emitFlipSint32Uint16(SourceInfo L) {
21768 return emitOp<>(OP_FlipSint32Uint16, L);
21769}
21770bool ByteCodeEmitter::emitFlipSint32Sint32(SourceInfo L) {
21771 return emitOp<>(OP_FlipSint32Sint32, L);
21772}
21773bool ByteCodeEmitter::emitFlipSint32Uint32(SourceInfo L) {
21774 return emitOp<>(OP_FlipSint32Uint32, L);
21775}
21776bool ByteCodeEmitter::emitFlipSint32Sint64(SourceInfo L) {
21777 return emitOp<>(OP_FlipSint32Sint64, L);
21778}
21779bool ByteCodeEmitter::emitFlipSint32Uint64(SourceInfo L) {
21780 return emitOp<>(OP_FlipSint32Uint64, L);
21781}
21782bool ByteCodeEmitter::emitFlipSint32IntAP(SourceInfo L) {
21783 return emitOp<>(OP_FlipSint32IntAP, L);
21784}
21785bool ByteCodeEmitter::emitFlipSint32IntAPS(SourceInfo L) {
21786 return emitOp<>(OP_FlipSint32IntAPS, L);
21787}
21788bool ByteCodeEmitter::emitFlipSint32Bool(SourceInfo L) {
21789 return emitOp<>(OP_FlipSint32Bool, L);
21790}
21791bool ByteCodeEmitter::emitFlipSint32FixedPoint(SourceInfo L) {
21792 return emitOp<>(OP_FlipSint32FixedPoint, L);
21793}
21794bool ByteCodeEmitter::emitFlipSint32Ptr(SourceInfo L) {
21795 return emitOp<>(OP_FlipSint32Ptr, L);
21796}
21797bool ByteCodeEmitter::emitFlipSint32MemberPtr(SourceInfo L) {
21798 return emitOp<>(OP_FlipSint32MemberPtr, L);
21799}
21800bool ByteCodeEmitter::emitFlipSint32Float(SourceInfo L) {
21801 return emitOp<>(OP_FlipSint32Float, L);
21802}
21803bool ByteCodeEmitter::emitFlipUint32Sint8(SourceInfo L) {
21804 return emitOp<>(OP_FlipUint32Sint8, L);
21805}
21806bool ByteCodeEmitter::emitFlipUint32Uint8(SourceInfo L) {
21807 return emitOp<>(OP_FlipUint32Uint8, L);
21808}
21809bool ByteCodeEmitter::emitFlipUint32Sint16(SourceInfo L) {
21810 return emitOp<>(OP_FlipUint32Sint16, L);
21811}
21812bool ByteCodeEmitter::emitFlipUint32Uint16(SourceInfo L) {
21813 return emitOp<>(OP_FlipUint32Uint16, L);
21814}
21815bool ByteCodeEmitter::emitFlipUint32Sint32(SourceInfo L) {
21816 return emitOp<>(OP_FlipUint32Sint32, L);
21817}
21818bool ByteCodeEmitter::emitFlipUint32Uint32(SourceInfo L) {
21819 return emitOp<>(OP_FlipUint32Uint32, L);
21820}
21821bool ByteCodeEmitter::emitFlipUint32Sint64(SourceInfo L) {
21822 return emitOp<>(OP_FlipUint32Sint64, L);
21823}
21824bool ByteCodeEmitter::emitFlipUint32Uint64(SourceInfo L) {
21825 return emitOp<>(OP_FlipUint32Uint64, L);
21826}
21827bool ByteCodeEmitter::emitFlipUint32IntAP(SourceInfo L) {
21828 return emitOp<>(OP_FlipUint32IntAP, L);
21829}
21830bool ByteCodeEmitter::emitFlipUint32IntAPS(SourceInfo L) {
21831 return emitOp<>(OP_FlipUint32IntAPS, L);
21832}
21833bool ByteCodeEmitter::emitFlipUint32Bool(SourceInfo L) {
21834 return emitOp<>(OP_FlipUint32Bool, L);
21835}
21836bool ByteCodeEmitter::emitFlipUint32FixedPoint(SourceInfo L) {
21837 return emitOp<>(OP_FlipUint32FixedPoint, L);
21838}
21839bool ByteCodeEmitter::emitFlipUint32Ptr(SourceInfo L) {
21840 return emitOp<>(OP_FlipUint32Ptr, L);
21841}
21842bool ByteCodeEmitter::emitFlipUint32MemberPtr(SourceInfo L) {
21843 return emitOp<>(OP_FlipUint32MemberPtr, L);
21844}
21845bool ByteCodeEmitter::emitFlipUint32Float(SourceInfo L) {
21846 return emitOp<>(OP_FlipUint32Float, L);
21847}
21848bool ByteCodeEmitter::emitFlipSint64Sint8(SourceInfo L) {
21849 return emitOp<>(OP_FlipSint64Sint8, L);
21850}
21851bool ByteCodeEmitter::emitFlipSint64Uint8(SourceInfo L) {
21852 return emitOp<>(OP_FlipSint64Uint8, L);
21853}
21854bool ByteCodeEmitter::emitFlipSint64Sint16(SourceInfo L) {
21855 return emitOp<>(OP_FlipSint64Sint16, L);
21856}
21857bool ByteCodeEmitter::emitFlipSint64Uint16(SourceInfo L) {
21858 return emitOp<>(OP_FlipSint64Uint16, L);
21859}
21860bool ByteCodeEmitter::emitFlipSint64Sint32(SourceInfo L) {
21861 return emitOp<>(OP_FlipSint64Sint32, L);
21862}
21863bool ByteCodeEmitter::emitFlipSint64Uint32(SourceInfo L) {
21864 return emitOp<>(OP_FlipSint64Uint32, L);
21865}
21866bool ByteCodeEmitter::emitFlipSint64Sint64(SourceInfo L) {
21867 return emitOp<>(OP_FlipSint64Sint64, L);
21868}
21869bool ByteCodeEmitter::emitFlipSint64Uint64(SourceInfo L) {
21870 return emitOp<>(OP_FlipSint64Uint64, L);
21871}
21872bool ByteCodeEmitter::emitFlipSint64IntAP(SourceInfo L) {
21873 return emitOp<>(OP_FlipSint64IntAP, L);
21874}
21875bool ByteCodeEmitter::emitFlipSint64IntAPS(SourceInfo L) {
21876 return emitOp<>(OP_FlipSint64IntAPS, L);
21877}
21878bool ByteCodeEmitter::emitFlipSint64Bool(SourceInfo L) {
21879 return emitOp<>(OP_FlipSint64Bool, L);
21880}
21881bool ByteCodeEmitter::emitFlipSint64FixedPoint(SourceInfo L) {
21882 return emitOp<>(OP_FlipSint64FixedPoint, L);
21883}
21884bool ByteCodeEmitter::emitFlipSint64Ptr(SourceInfo L) {
21885 return emitOp<>(OP_FlipSint64Ptr, L);
21886}
21887bool ByteCodeEmitter::emitFlipSint64MemberPtr(SourceInfo L) {
21888 return emitOp<>(OP_FlipSint64MemberPtr, L);
21889}
21890bool ByteCodeEmitter::emitFlipSint64Float(SourceInfo L) {
21891 return emitOp<>(OP_FlipSint64Float, L);
21892}
21893bool ByteCodeEmitter::emitFlipUint64Sint8(SourceInfo L) {
21894 return emitOp<>(OP_FlipUint64Sint8, L);
21895}
21896bool ByteCodeEmitter::emitFlipUint64Uint8(SourceInfo L) {
21897 return emitOp<>(OP_FlipUint64Uint8, L);
21898}
21899bool ByteCodeEmitter::emitFlipUint64Sint16(SourceInfo L) {
21900 return emitOp<>(OP_FlipUint64Sint16, L);
21901}
21902bool ByteCodeEmitter::emitFlipUint64Uint16(SourceInfo L) {
21903 return emitOp<>(OP_FlipUint64Uint16, L);
21904}
21905bool ByteCodeEmitter::emitFlipUint64Sint32(SourceInfo L) {
21906 return emitOp<>(OP_FlipUint64Sint32, L);
21907}
21908bool ByteCodeEmitter::emitFlipUint64Uint32(SourceInfo L) {
21909 return emitOp<>(OP_FlipUint64Uint32, L);
21910}
21911bool ByteCodeEmitter::emitFlipUint64Sint64(SourceInfo L) {
21912 return emitOp<>(OP_FlipUint64Sint64, L);
21913}
21914bool ByteCodeEmitter::emitFlipUint64Uint64(SourceInfo L) {
21915 return emitOp<>(OP_FlipUint64Uint64, L);
21916}
21917bool ByteCodeEmitter::emitFlipUint64IntAP(SourceInfo L) {
21918 return emitOp<>(OP_FlipUint64IntAP, L);
21919}
21920bool ByteCodeEmitter::emitFlipUint64IntAPS(SourceInfo L) {
21921 return emitOp<>(OP_FlipUint64IntAPS, L);
21922}
21923bool ByteCodeEmitter::emitFlipUint64Bool(SourceInfo L) {
21924 return emitOp<>(OP_FlipUint64Bool, L);
21925}
21926bool ByteCodeEmitter::emitFlipUint64FixedPoint(SourceInfo L) {
21927 return emitOp<>(OP_FlipUint64FixedPoint, L);
21928}
21929bool ByteCodeEmitter::emitFlipUint64Ptr(SourceInfo L) {
21930 return emitOp<>(OP_FlipUint64Ptr, L);
21931}
21932bool ByteCodeEmitter::emitFlipUint64MemberPtr(SourceInfo L) {
21933 return emitOp<>(OP_FlipUint64MemberPtr, L);
21934}
21935bool ByteCodeEmitter::emitFlipUint64Float(SourceInfo L) {
21936 return emitOp<>(OP_FlipUint64Float, L);
21937}
21938bool ByteCodeEmitter::emitFlipIntAPSint8(SourceInfo L) {
21939 return emitOp<>(OP_FlipIntAPSint8, L);
21940}
21941bool ByteCodeEmitter::emitFlipIntAPUint8(SourceInfo L) {
21942 return emitOp<>(OP_FlipIntAPUint8, L);
21943}
21944bool ByteCodeEmitter::emitFlipIntAPSint16(SourceInfo L) {
21945 return emitOp<>(OP_FlipIntAPSint16, L);
21946}
21947bool ByteCodeEmitter::emitFlipIntAPUint16(SourceInfo L) {
21948 return emitOp<>(OP_FlipIntAPUint16, L);
21949}
21950bool ByteCodeEmitter::emitFlipIntAPSint32(SourceInfo L) {
21951 return emitOp<>(OP_FlipIntAPSint32, L);
21952}
21953bool ByteCodeEmitter::emitFlipIntAPUint32(SourceInfo L) {
21954 return emitOp<>(OP_FlipIntAPUint32, L);
21955}
21956bool ByteCodeEmitter::emitFlipIntAPSint64(SourceInfo L) {
21957 return emitOp<>(OP_FlipIntAPSint64, L);
21958}
21959bool ByteCodeEmitter::emitFlipIntAPUint64(SourceInfo L) {
21960 return emitOp<>(OP_FlipIntAPUint64, L);
21961}
21962bool ByteCodeEmitter::emitFlipIntAPIntAP(SourceInfo L) {
21963 return emitOp<>(OP_FlipIntAPIntAP, L);
21964}
21965bool ByteCodeEmitter::emitFlipIntAPIntAPS(SourceInfo L) {
21966 return emitOp<>(OP_FlipIntAPIntAPS, L);
21967}
21968bool ByteCodeEmitter::emitFlipIntAPBool(SourceInfo L) {
21969 return emitOp<>(OP_FlipIntAPBool, L);
21970}
21971bool ByteCodeEmitter::emitFlipIntAPFixedPoint(SourceInfo L) {
21972 return emitOp<>(OP_FlipIntAPFixedPoint, L);
21973}
21974bool ByteCodeEmitter::emitFlipIntAPPtr(SourceInfo L) {
21975 return emitOp<>(OP_FlipIntAPPtr, L);
21976}
21977bool ByteCodeEmitter::emitFlipIntAPMemberPtr(SourceInfo L) {
21978 return emitOp<>(OP_FlipIntAPMemberPtr, L);
21979}
21980bool ByteCodeEmitter::emitFlipIntAPFloat(SourceInfo L) {
21981 return emitOp<>(OP_FlipIntAPFloat, L);
21982}
21983bool ByteCodeEmitter::emitFlipIntAPSSint8(SourceInfo L) {
21984 return emitOp<>(OP_FlipIntAPSSint8, L);
21985}
21986bool ByteCodeEmitter::emitFlipIntAPSUint8(SourceInfo L) {
21987 return emitOp<>(OP_FlipIntAPSUint8, L);
21988}
21989bool ByteCodeEmitter::emitFlipIntAPSSint16(SourceInfo L) {
21990 return emitOp<>(OP_FlipIntAPSSint16, L);
21991}
21992bool ByteCodeEmitter::emitFlipIntAPSUint16(SourceInfo L) {
21993 return emitOp<>(OP_FlipIntAPSUint16, L);
21994}
21995bool ByteCodeEmitter::emitFlipIntAPSSint32(SourceInfo L) {
21996 return emitOp<>(OP_FlipIntAPSSint32, L);
21997}
21998bool ByteCodeEmitter::emitFlipIntAPSUint32(SourceInfo L) {
21999 return emitOp<>(OP_FlipIntAPSUint32, L);
22000}
22001bool ByteCodeEmitter::emitFlipIntAPSSint64(SourceInfo L) {
22002 return emitOp<>(OP_FlipIntAPSSint64, L);
22003}
22004bool ByteCodeEmitter::emitFlipIntAPSUint64(SourceInfo L) {
22005 return emitOp<>(OP_FlipIntAPSUint64, L);
22006}
22007bool ByteCodeEmitter::emitFlipIntAPSIntAP(SourceInfo L) {
22008 return emitOp<>(OP_FlipIntAPSIntAP, L);
22009}
22010bool ByteCodeEmitter::emitFlipIntAPSIntAPS(SourceInfo L) {
22011 return emitOp<>(OP_FlipIntAPSIntAPS, L);
22012}
22013bool ByteCodeEmitter::emitFlipIntAPSBool(SourceInfo L) {
22014 return emitOp<>(OP_FlipIntAPSBool, L);
22015}
22016bool ByteCodeEmitter::emitFlipIntAPSFixedPoint(SourceInfo L) {
22017 return emitOp<>(OP_FlipIntAPSFixedPoint, L);
22018}
22019bool ByteCodeEmitter::emitFlipIntAPSPtr(SourceInfo L) {
22020 return emitOp<>(OP_FlipIntAPSPtr, L);
22021}
22022bool ByteCodeEmitter::emitFlipIntAPSMemberPtr(SourceInfo L) {
22023 return emitOp<>(OP_FlipIntAPSMemberPtr, L);
22024}
22025bool ByteCodeEmitter::emitFlipIntAPSFloat(SourceInfo L) {
22026 return emitOp<>(OP_FlipIntAPSFloat, L);
22027}
22028bool ByteCodeEmitter::emitFlipBoolSint8(SourceInfo L) {
22029 return emitOp<>(OP_FlipBoolSint8, L);
22030}
22031bool ByteCodeEmitter::emitFlipBoolUint8(SourceInfo L) {
22032 return emitOp<>(OP_FlipBoolUint8, L);
22033}
22034bool ByteCodeEmitter::emitFlipBoolSint16(SourceInfo L) {
22035 return emitOp<>(OP_FlipBoolSint16, L);
22036}
22037bool ByteCodeEmitter::emitFlipBoolUint16(SourceInfo L) {
22038 return emitOp<>(OP_FlipBoolUint16, L);
22039}
22040bool ByteCodeEmitter::emitFlipBoolSint32(SourceInfo L) {
22041 return emitOp<>(OP_FlipBoolSint32, L);
22042}
22043bool ByteCodeEmitter::emitFlipBoolUint32(SourceInfo L) {
22044 return emitOp<>(OP_FlipBoolUint32, L);
22045}
22046bool ByteCodeEmitter::emitFlipBoolSint64(SourceInfo L) {
22047 return emitOp<>(OP_FlipBoolSint64, L);
22048}
22049bool ByteCodeEmitter::emitFlipBoolUint64(SourceInfo L) {
22050 return emitOp<>(OP_FlipBoolUint64, L);
22051}
22052bool ByteCodeEmitter::emitFlipBoolIntAP(SourceInfo L) {
22053 return emitOp<>(OP_FlipBoolIntAP, L);
22054}
22055bool ByteCodeEmitter::emitFlipBoolIntAPS(SourceInfo L) {
22056 return emitOp<>(OP_FlipBoolIntAPS, L);
22057}
22058bool ByteCodeEmitter::emitFlipBoolBool(SourceInfo L) {
22059 return emitOp<>(OP_FlipBoolBool, L);
22060}
22061bool ByteCodeEmitter::emitFlipBoolFixedPoint(SourceInfo L) {
22062 return emitOp<>(OP_FlipBoolFixedPoint, L);
22063}
22064bool ByteCodeEmitter::emitFlipBoolPtr(SourceInfo L) {
22065 return emitOp<>(OP_FlipBoolPtr, L);
22066}
22067bool ByteCodeEmitter::emitFlipBoolMemberPtr(SourceInfo L) {
22068 return emitOp<>(OP_FlipBoolMemberPtr, L);
22069}
22070bool ByteCodeEmitter::emitFlipBoolFloat(SourceInfo L) {
22071 return emitOp<>(OP_FlipBoolFloat, L);
22072}
22073bool ByteCodeEmitter::emitFlipFixedPointSint8(SourceInfo L) {
22074 return emitOp<>(OP_FlipFixedPointSint8, L);
22075}
22076bool ByteCodeEmitter::emitFlipFixedPointUint8(SourceInfo L) {
22077 return emitOp<>(OP_FlipFixedPointUint8, L);
22078}
22079bool ByteCodeEmitter::emitFlipFixedPointSint16(SourceInfo L) {
22080 return emitOp<>(OP_FlipFixedPointSint16, L);
22081}
22082bool ByteCodeEmitter::emitFlipFixedPointUint16(SourceInfo L) {
22083 return emitOp<>(OP_FlipFixedPointUint16, L);
22084}
22085bool ByteCodeEmitter::emitFlipFixedPointSint32(SourceInfo L) {
22086 return emitOp<>(OP_FlipFixedPointSint32, L);
22087}
22088bool ByteCodeEmitter::emitFlipFixedPointUint32(SourceInfo L) {
22089 return emitOp<>(OP_FlipFixedPointUint32, L);
22090}
22091bool ByteCodeEmitter::emitFlipFixedPointSint64(SourceInfo L) {
22092 return emitOp<>(OP_FlipFixedPointSint64, L);
22093}
22094bool ByteCodeEmitter::emitFlipFixedPointUint64(SourceInfo L) {
22095 return emitOp<>(OP_FlipFixedPointUint64, L);
22096}
22097bool ByteCodeEmitter::emitFlipFixedPointIntAP(SourceInfo L) {
22098 return emitOp<>(OP_FlipFixedPointIntAP, L);
22099}
22100bool ByteCodeEmitter::emitFlipFixedPointIntAPS(SourceInfo L) {
22101 return emitOp<>(OP_FlipFixedPointIntAPS, L);
22102}
22103bool ByteCodeEmitter::emitFlipFixedPointBool(SourceInfo L) {
22104 return emitOp<>(OP_FlipFixedPointBool, L);
22105}
22106bool ByteCodeEmitter::emitFlipFixedPointFixedPoint(SourceInfo L) {
22107 return emitOp<>(OP_FlipFixedPointFixedPoint, L);
22108}
22109bool ByteCodeEmitter::emitFlipFixedPointPtr(SourceInfo L) {
22110 return emitOp<>(OP_FlipFixedPointPtr, L);
22111}
22112bool ByteCodeEmitter::emitFlipFixedPointMemberPtr(SourceInfo L) {
22113 return emitOp<>(OP_FlipFixedPointMemberPtr, L);
22114}
22115bool ByteCodeEmitter::emitFlipFixedPointFloat(SourceInfo L) {
22116 return emitOp<>(OP_FlipFixedPointFloat, L);
22117}
22118bool ByteCodeEmitter::emitFlipPtrSint8(SourceInfo L) {
22119 return emitOp<>(OP_FlipPtrSint8, L);
22120}
22121bool ByteCodeEmitter::emitFlipPtrUint8(SourceInfo L) {
22122 return emitOp<>(OP_FlipPtrUint8, L);
22123}
22124bool ByteCodeEmitter::emitFlipPtrSint16(SourceInfo L) {
22125 return emitOp<>(OP_FlipPtrSint16, L);
22126}
22127bool ByteCodeEmitter::emitFlipPtrUint16(SourceInfo L) {
22128 return emitOp<>(OP_FlipPtrUint16, L);
22129}
22130bool ByteCodeEmitter::emitFlipPtrSint32(SourceInfo L) {
22131 return emitOp<>(OP_FlipPtrSint32, L);
22132}
22133bool ByteCodeEmitter::emitFlipPtrUint32(SourceInfo L) {
22134 return emitOp<>(OP_FlipPtrUint32, L);
22135}
22136bool ByteCodeEmitter::emitFlipPtrSint64(SourceInfo L) {
22137 return emitOp<>(OP_FlipPtrSint64, L);
22138}
22139bool ByteCodeEmitter::emitFlipPtrUint64(SourceInfo L) {
22140 return emitOp<>(OP_FlipPtrUint64, L);
22141}
22142bool ByteCodeEmitter::emitFlipPtrIntAP(SourceInfo L) {
22143 return emitOp<>(OP_FlipPtrIntAP, L);
22144}
22145bool ByteCodeEmitter::emitFlipPtrIntAPS(SourceInfo L) {
22146 return emitOp<>(OP_FlipPtrIntAPS, L);
22147}
22148bool ByteCodeEmitter::emitFlipPtrBool(SourceInfo L) {
22149 return emitOp<>(OP_FlipPtrBool, L);
22150}
22151bool ByteCodeEmitter::emitFlipPtrFixedPoint(SourceInfo L) {
22152 return emitOp<>(OP_FlipPtrFixedPoint, L);
22153}
22154bool ByteCodeEmitter::emitFlipPtrPtr(SourceInfo L) {
22155 return emitOp<>(OP_FlipPtrPtr, L);
22156}
22157bool ByteCodeEmitter::emitFlipPtrMemberPtr(SourceInfo L) {
22158 return emitOp<>(OP_FlipPtrMemberPtr, L);
22159}
22160bool ByteCodeEmitter::emitFlipPtrFloat(SourceInfo L) {
22161 return emitOp<>(OP_FlipPtrFloat, L);
22162}
22163bool ByteCodeEmitter::emitFlipMemberPtrSint8(SourceInfo L) {
22164 return emitOp<>(OP_FlipMemberPtrSint8, L);
22165}
22166bool ByteCodeEmitter::emitFlipMemberPtrUint8(SourceInfo L) {
22167 return emitOp<>(OP_FlipMemberPtrUint8, L);
22168}
22169bool ByteCodeEmitter::emitFlipMemberPtrSint16(SourceInfo L) {
22170 return emitOp<>(OP_FlipMemberPtrSint16, L);
22171}
22172bool ByteCodeEmitter::emitFlipMemberPtrUint16(SourceInfo L) {
22173 return emitOp<>(OP_FlipMemberPtrUint16, L);
22174}
22175bool ByteCodeEmitter::emitFlipMemberPtrSint32(SourceInfo L) {
22176 return emitOp<>(OP_FlipMemberPtrSint32, L);
22177}
22178bool ByteCodeEmitter::emitFlipMemberPtrUint32(SourceInfo L) {
22179 return emitOp<>(OP_FlipMemberPtrUint32, L);
22180}
22181bool ByteCodeEmitter::emitFlipMemberPtrSint64(SourceInfo L) {
22182 return emitOp<>(OP_FlipMemberPtrSint64, L);
22183}
22184bool ByteCodeEmitter::emitFlipMemberPtrUint64(SourceInfo L) {
22185 return emitOp<>(OP_FlipMemberPtrUint64, L);
22186}
22187bool ByteCodeEmitter::emitFlipMemberPtrIntAP(SourceInfo L) {
22188 return emitOp<>(OP_FlipMemberPtrIntAP, L);
22189}
22190bool ByteCodeEmitter::emitFlipMemberPtrIntAPS(SourceInfo L) {
22191 return emitOp<>(OP_FlipMemberPtrIntAPS, L);
22192}
22193bool ByteCodeEmitter::emitFlipMemberPtrBool(SourceInfo L) {
22194 return emitOp<>(OP_FlipMemberPtrBool, L);
22195}
22196bool ByteCodeEmitter::emitFlipMemberPtrFixedPoint(SourceInfo L) {
22197 return emitOp<>(OP_FlipMemberPtrFixedPoint, L);
22198}
22199bool ByteCodeEmitter::emitFlipMemberPtrPtr(SourceInfo L) {
22200 return emitOp<>(OP_FlipMemberPtrPtr, L);
22201}
22202bool ByteCodeEmitter::emitFlipMemberPtrMemberPtr(SourceInfo L) {
22203 return emitOp<>(OP_FlipMemberPtrMemberPtr, L);
22204}
22205bool ByteCodeEmitter::emitFlipMemberPtrFloat(SourceInfo L) {
22206 return emitOp<>(OP_FlipMemberPtrFloat, L);
22207}
22208bool ByteCodeEmitter::emitFlipFloatSint8(SourceInfo L) {
22209 return emitOp<>(OP_FlipFloatSint8, L);
22210}
22211bool ByteCodeEmitter::emitFlipFloatUint8(SourceInfo L) {
22212 return emitOp<>(OP_FlipFloatUint8, L);
22213}
22214bool ByteCodeEmitter::emitFlipFloatSint16(SourceInfo L) {
22215 return emitOp<>(OP_FlipFloatSint16, L);
22216}
22217bool ByteCodeEmitter::emitFlipFloatUint16(SourceInfo L) {
22218 return emitOp<>(OP_FlipFloatUint16, L);
22219}
22220bool ByteCodeEmitter::emitFlipFloatSint32(SourceInfo L) {
22221 return emitOp<>(OP_FlipFloatSint32, L);
22222}
22223bool ByteCodeEmitter::emitFlipFloatUint32(SourceInfo L) {
22224 return emitOp<>(OP_FlipFloatUint32, L);
22225}
22226bool ByteCodeEmitter::emitFlipFloatSint64(SourceInfo L) {
22227 return emitOp<>(OP_FlipFloatSint64, L);
22228}
22229bool ByteCodeEmitter::emitFlipFloatUint64(SourceInfo L) {
22230 return emitOp<>(OP_FlipFloatUint64, L);
22231}
22232bool ByteCodeEmitter::emitFlipFloatIntAP(SourceInfo L) {
22233 return emitOp<>(OP_FlipFloatIntAP, L);
22234}
22235bool ByteCodeEmitter::emitFlipFloatIntAPS(SourceInfo L) {
22236 return emitOp<>(OP_FlipFloatIntAPS, L);
22237}
22238bool ByteCodeEmitter::emitFlipFloatBool(SourceInfo L) {
22239 return emitOp<>(OP_FlipFloatBool, L);
22240}
22241bool ByteCodeEmitter::emitFlipFloatFixedPoint(SourceInfo L) {
22242 return emitOp<>(OP_FlipFloatFixedPoint, L);
22243}
22244bool ByteCodeEmitter::emitFlipFloatPtr(SourceInfo L) {
22245 return emitOp<>(OP_FlipFloatPtr, L);
22246}
22247bool ByteCodeEmitter::emitFlipFloatMemberPtr(SourceInfo L) {
22248 return emitOp<>(OP_FlipFloatMemberPtr, L);
22249}
22250bool ByteCodeEmitter::emitFlipFloatFloat(SourceInfo L) {
22251 return emitOp<>(OP_FlipFloatFloat, L);
22252}
22253#endif
22254#ifdef GET_EVAL_IMPL
22255bool EvalEmitter::emitFlipSint8Sint8(SourceInfo L) {
22256 if (!isActive()) return true;
22257 CurrentSource = L;
22258 return Flip<PT_Sint8, PT_Sint8>(S);
22259}
22260bool EvalEmitter::emitFlipSint8Uint8(SourceInfo L) {
22261 if (!isActive()) return true;
22262 CurrentSource = L;
22263 return Flip<PT_Sint8, PT_Uint8>(S);
22264}
22265bool EvalEmitter::emitFlipSint8Sint16(SourceInfo L) {
22266 if (!isActive()) return true;
22267 CurrentSource = L;
22268 return Flip<PT_Sint8, PT_Sint16>(S);
22269}
22270bool EvalEmitter::emitFlipSint8Uint16(SourceInfo L) {
22271 if (!isActive()) return true;
22272 CurrentSource = L;
22273 return Flip<PT_Sint8, PT_Uint16>(S);
22274}
22275bool EvalEmitter::emitFlipSint8Sint32(SourceInfo L) {
22276 if (!isActive()) return true;
22277 CurrentSource = L;
22278 return Flip<PT_Sint8, PT_Sint32>(S);
22279}
22280bool EvalEmitter::emitFlipSint8Uint32(SourceInfo L) {
22281 if (!isActive()) return true;
22282 CurrentSource = L;
22283 return Flip<PT_Sint8, PT_Uint32>(S);
22284}
22285bool EvalEmitter::emitFlipSint8Sint64(SourceInfo L) {
22286 if (!isActive()) return true;
22287 CurrentSource = L;
22288 return Flip<PT_Sint8, PT_Sint64>(S);
22289}
22290bool EvalEmitter::emitFlipSint8Uint64(SourceInfo L) {
22291 if (!isActive()) return true;
22292 CurrentSource = L;
22293 return Flip<PT_Sint8, PT_Uint64>(S);
22294}
22295bool EvalEmitter::emitFlipSint8IntAP(SourceInfo L) {
22296 if (!isActive()) return true;
22297 CurrentSource = L;
22298 return Flip<PT_Sint8, PT_IntAP>(S);
22299}
22300bool EvalEmitter::emitFlipSint8IntAPS(SourceInfo L) {
22301 if (!isActive()) return true;
22302 CurrentSource = L;
22303 return Flip<PT_Sint8, PT_IntAPS>(S);
22304}
22305bool EvalEmitter::emitFlipSint8Bool(SourceInfo L) {
22306 if (!isActive()) return true;
22307 CurrentSource = L;
22308 return Flip<PT_Sint8, PT_Bool>(S);
22309}
22310bool EvalEmitter::emitFlipSint8FixedPoint(SourceInfo L) {
22311 if (!isActive()) return true;
22312 CurrentSource = L;
22313 return Flip<PT_Sint8, PT_FixedPoint>(S);
22314}
22315bool EvalEmitter::emitFlipSint8Ptr(SourceInfo L) {
22316 if (!isActive()) return true;
22317 CurrentSource = L;
22318 return Flip<PT_Sint8, PT_Ptr>(S);
22319}
22320bool EvalEmitter::emitFlipSint8MemberPtr(SourceInfo L) {
22321 if (!isActive()) return true;
22322 CurrentSource = L;
22323 return Flip<PT_Sint8, PT_MemberPtr>(S);
22324}
22325bool EvalEmitter::emitFlipSint8Float(SourceInfo L) {
22326 if (!isActive()) return true;
22327 CurrentSource = L;
22328 return Flip<PT_Sint8, PT_Float>(S);
22329}
22330bool EvalEmitter::emitFlipUint8Sint8(SourceInfo L) {
22331 if (!isActive()) return true;
22332 CurrentSource = L;
22333 return Flip<PT_Uint8, PT_Sint8>(S);
22334}
22335bool EvalEmitter::emitFlipUint8Uint8(SourceInfo L) {
22336 if (!isActive()) return true;
22337 CurrentSource = L;
22338 return Flip<PT_Uint8, PT_Uint8>(S);
22339}
22340bool EvalEmitter::emitFlipUint8Sint16(SourceInfo L) {
22341 if (!isActive()) return true;
22342 CurrentSource = L;
22343 return Flip<PT_Uint8, PT_Sint16>(S);
22344}
22345bool EvalEmitter::emitFlipUint8Uint16(SourceInfo L) {
22346 if (!isActive()) return true;
22347 CurrentSource = L;
22348 return Flip<PT_Uint8, PT_Uint16>(S);
22349}
22350bool EvalEmitter::emitFlipUint8Sint32(SourceInfo L) {
22351 if (!isActive()) return true;
22352 CurrentSource = L;
22353 return Flip<PT_Uint8, PT_Sint32>(S);
22354}
22355bool EvalEmitter::emitFlipUint8Uint32(SourceInfo L) {
22356 if (!isActive()) return true;
22357 CurrentSource = L;
22358 return Flip<PT_Uint8, PT_Uint32>(S);
22359}
22360bool EvalEmitter::emitFlipUint8Sint64(SourceInfo L) {
22361 if (!isActive()) return true;
22362 CurrentSource = L;
22363 return Flip<PT_Uint8, PT_Sint64>(S);
22364}
22365bool EvalEmitter::emitFlipUint8Uint64(SourceInfo L) {
22366 if (!isActive()) return true;
22367 CurrentSource = L;
22368 return Flip<PT_Uint8, PT_Uint64>(S);
22369}
22370bool EvalEmitter::emitFlipUint8IntAP(SourceInfo L) {
22371 if (!isActive()) return true;
22372 CurrentSource = L;
22373 return Flip<PT_Uint8, PT_IntAP>(S);
22374}
22375bool EvalEmitter::emitFlipUint8IntAPS(SourceInfo L) {
22376 if (!isActive()) return true;
22377 CurrentSource = L;
22378 return Flip<PT_Uint8, PT_IntAPS>(S);
22379}
22380bool EvalEmitter::emitFlipUint8Bool(SourceInfo L) {
22381 if (!isActive()) return true;
22382 CurrentSource = L;
22383 return Flip<PT_Uint8, PT_Bool>(S);
22384}
22385bool EvalEmitter::emitFlipUint8FixedPoint(SourceInfo L) {
22386 if (!isActive()) return true;
22387 CurrentSource = L;
22388 return Flip<PT_Uint8, PT_FixedPoint>(S);
22389}
22390bool EvalEmitter::emitFlipUint8Ptr(SourceInfo L) {
22391 if (!isActive()) return true;
22392 CurrentSource = L;
22393 return Flip<PT_Uint8, PT_Ptr>(S);
22394}
22395bool EvalEmitter::emitFlipUint8MemberPtr(SourceInfo L) {
22396 if (!isActive()) return true;
22397 CurrentSource = L;
22398 return Flip<PT_Uint8, PT_MemberPtr>(S);
22399}
22400bool EvalEmitter::emitFlipUint8Float(SourceInfo L) {
22401 if (!isActive()) return true;
22402 CurrentSource = L;
22403 return Flip<PT_Uint8, PT_Float>(S);
22404}
22405bool EvalEmitter::emitFlipSint16Sint8(SourceInfo L) {
22406 if (!isActive()) return true;
22407 CurrentSource = L;
22408 return Flip<PT_Sint16, PT_Sint8>(S);
22409}
22410bool EvalEmitter::emitFlipSint16Uint8(SourceInfo L) {
22411 if (!isActive()) return true;
22412 CurrentSource = L;
22413 return Flip<PT_Sint16, PT_Uint8>(S);
22414}
22415bool EvalEmitter::emitFlipSint16Sint16(SourceInfo L) {
22416 if (!isActive()) return true;
22417 CurrentSource = L;
22418 return Flip<PT_Sint16, PT_Sint16>(S);
22419}
22420bool EvalEmitter::emitFlipSint16Uint16(SourceInfo L) {
22421 if (!isActive()) return true;
22422 CurrentSource = L;
22423 return Flip<PT_Sint16, PT_Uint16>(S);
22424}
22425bool EvalEmitter::emitFlipSint16Sint32(SourceInfo L) {
22426 if (!isActive()) return true;
22427 CurrentSource = L;
22428 return Flip<PT_Sint16, PT_Sint32>(S);
22429}
22430bool EvalEmitter::emitFlipSint16Uint32(SourceInfo L) {
22431 if (!isActive()) return true;
22432 CurrentSource = L;
22433 return Flip<PT_Sint16, PT_Uint32>(S);
22434}
22435bool EvalEmitter::emitFlipSint16Sint64(SourceInfo L) {
22436 if (!isActive()) return true;
22437 CurrentSource = L;
22438 return Flip<PT_Sint16, PT_Sint64>(S);
22439}
22440bool EvalEmitter::emitFlipSint16Uint64(SourceInfo L) {
22441 if (!isActive()) return true;
22442 CurrentSource = L;
22443 return Flip<PT_Sint16, PT_Uint64>(S);
22444}
22445bool EvalEmitter::emitFlipSint16IntAP(SourceInfo L) {
22446 if (!isActive()) return true;
22447 CurrentSource = L;
22448 return Flip<PT_Sint16, PT_IntAP>(S);
22449}
22450bool EvalEmitter::emitFlipSint16IntAPS(SourceInfo L) {
22451 if (!isActive()) return true;
22452 CurrentSource = L;
22453 return Flip<PT_Sint16, PT_IntAPS>(S);
22454}
22455bool EvalEmitter::emitFlipSint16Bool(SourceInfo L) {
22456 if (!isActive()) return true;
22457 CurrentSource = L;
22458 return Flip<PT_Sint16, PT_Bool>(S);
22459}
22460bool EvalEmitter::emitFlipSint16FixedPoint(SourceInfo L) {
22461 if (!isActive()) return true;
22462 CurrentSource = L;
22463 return Flip<PT_Sint16, PT_FixedPoint>(S);
22464}
22465bool EvalEmitter::emitFlipSint16Ptr(SourceInfo L) {
22466 if (!isActive()) return true;
22467 CurrentSource = L;
22468 return Flip<PT_Sint16, PT_Ptr>(S);
22469}
22470bool EvalEmitter::emitFlipSint16MemberPtr(SourceInfo L) {
22471 if (!isActive()) return true;
22472 CurrentSource = L;
22473 return Flip<PT_Sint16, PT_MemberPtr>(S);
22474}
22475bool EvalEmitter::emitFlipSint16Float(SourceInfo L) {
22476 if (!isActive()) return true;
22477 CurrentSource = L;
22478 return Flip<PT_Sint16, PT_Float>(S);
22479}
22480bool EvalEmitter::emitFlipUint16Sint8(SourceInfo L) {
22481 if (!isActive()) return true;
22482 CurrentSource = L;
22483 return Flip<PT_Uint16, PT_Sint8>(S);
22484}
22485bool EvalEmitter::emitFlipUint16Uint8(SourceInfo L) {
22486 if (!isActive()) return true;
22487 CurrentSource = L;
22488 return Flip<PT_Uint16, PT_Uint8>(S);
22489}
22490bool EvalEmitter::emitFlipUint16Sint16(SourceInfo L) {
22491 if (!isActive()) return true;
22492 CurrentSource = L;
22493 return Flip<PT_Uint16, PT_Sint16>(S);
22494}
22495bool EvalEmitter::emitFlipUint16Uint16(SourceInfo L) {
22496 if (!isActive()) return true;
22497 CurrentSource = L;
22498 return Flip<PT_Uint16, PT_Uint16>(S);
22499}
22500bool EvalEmitter::emitFlipUint16Sint32(SourceInfo L) {
22501 if (!isActive()) return true;
22502 CurrentSource = L;
22503 return Flip<PT_Uint16, PT_Sint32>(S);
22504}
22505bool EvalEmitter::emitFlipUint16Uint32(SourceInfo L) {
22506 if (!isActive()) return true;
22507 CurrentSource = L;
22508 return Flip<PT_Uint16, PT_Uint32>(S);
22509}
22510bool EvalEmitter::emitFlipUint16Sint64(SourceInfo L) {
22511 if (!isActive()) return true;
22512 CurrentSource = L;
22513 return Flip<PT_Uint16, PT_Sint64>(S);
22514}
22515bool EvalEmitter::emitFlipUint16Uint64(SourceInfo L) {
22516 if (!isActive()) return true;
22517 CurrentSource = L;
22518 return Flip<PT_Uint16, PT_Uint64>(S);
22519}
22520bool EvalEmitter::emitFlipUint16IntAP(SourceInfo L) {
22521 if (!isActive()) return true;
22522 CurrentSource = L;
22523 return Flip<PT_Uint16, PT_IntAP>(S);
22524}
22525bool EvalEmitter::emitFlipUint16IntAPS(SourceInfo L) {
22526 if (!isActive()) return true;
22527 CurrentSource = L;
22528 return Flip<PT_Uint16, PT_IntAPS>(S);
22529}
22530bool EvalEmitter::emitFlipUint16Bool(SourceInfo L) {
22531 if (!isActive()) return true;
22532 CurrentSource = L;
22533 return Flip<PT_Uint16, PT_Bool>(S);
22534}
22535bool EvalEmitter::emitFlipUint16FixedPoint(SourceInfo L) {
22536 if (!isActive()) return true;
22537 CurrentSource = L;
22538 return Flip<PT_Uint16, PT_FixedPoint>(S);
22539}
22540bool EvalEmitter::emitFlipUint16Ptr(SourceInfo L) {
22541 if (!isActive()) return true;
22542 CurrentSource = L;
22543 return Flip<PT_Uint16, PT_Ptr>(S);
22544}
22545bool EvalEmitter::emitFlipUint16MemberPtr(SourceInfo L) {
22546 if (!isActive()) return true;
22547 CurrentSource = L;
22548 return Flip<PT_Uint16, PT_MemberPtr>(S);
22549}
22550bool EvalEmitter::emitFlipUint16Float(SourceInfo L) {
22551 if (!isActive()) return true;
22552 CurrentSource = L;
22553 return Flip<PT_Uint16, PT_Float>(S);
22554}
22555bool EvalEmitter::emitFlipSint32Sint8(SourceInfo L) {
22556 if (!isActive()) return true;
22557 CurrentSource = L;
22558 return Flip<PT_Sint32, PT_Sint8>(S);
22559}
22560bool EvalEmitter::emitFlipSint32Uint8(SourceInfo L) {
22561 if (!isActive()) return true;
22562 CurrentSource = L;
22563 return Flip<PT_Sint32, PT_Uint8>(S);
22564}
22565bool EvalEmitter::emitFlipSint32Sint16(SourceInfo L) {
22566 if (!isActive()) return true;
22567 CurrentSource = L;
22568 return Flip<PT_Sint32, PT_Sint16>(S);
22569}
22570bool EvalEmitter::emitFlipSint32Uint16(SourceInfo L) {
22571 if (!isActive()) return true;
22572 CurrentSource = L;
22573 return Flip<PT_Sint32, PT_Uint16>(S);
22574}
22575bool EvalEmitter::emitFlipSint32Sint32(SourceInfo L) {
22576 if (!isActive()) return true;
22577 CurrentSource = L;
22578 return Flip<PT_Sint32, PT_Sint32>(S);
22579}
22580bool EvalEmitter::emitFlipSint32Uint32(SourceInfo L) {
22581 if (!isActive()) return true;
22582 CurrentSource = L;
22583 return Flip<PT_Sint32, PT_Uint32>(S);
22584}
22585bool EvalEmitter::emitFlipSint32Sint64(SourceInfo L) {
22586 if (!isActive()) return true;
22587 CurrentSource = L;
22588 return Flip<PT_Sint32, PT_Sint64>(S);
22589}
22590bool EvalEmitter::emitFlipSint32Uint64(SourceInfo L) {
22591 if (!isActive()) return true;
22592 CurrentSource = L;
22593 return Flip<PT_Sint32, PT_Uint64>(S);
22594}
22595bool EvalEmitter::emitFlipSint32IntAP(SourceInfo L) {
22596 if (!isActive()) return true;
22597 CurrentSource = L;
22598 return Flip<PT_Sint32, PT_IntAP>(S);
22599}
22600bool EvalEmitter::emitFlipSint32IntAPS(SourceInfo L) {
22601 if (!isActive()) return true;
22602 CurrentSource = L;
22603 return Flip<PT_Sint32, PT_IntAPS>(S);
22604}
22605bool EvalEmitter::emitFlipSint32Bool(SourceInfo L) {
22606 if (!isActive()) return true;
22607 CurrentSource = L;
22608 return Flip<PT_Sint32, PT_Bool>(S);
22609}
22610bool EvalEmitter::emitFlipSint32FixedPoint(SourceInfo L) {
22611 if (!isActive()) return true;
22612 CurrentSource = L;
22613 return Flip<PT_Sint32, PT_FixedPoint>(S);
22614}
22615bool EvalEmitter::emitFlipSint32Ptr(SourceInfo L) {
22616 if (!isActive()) return true;
22617 CurrentSource = L;
22618 return Flip<PT_Sint32, PT_Ptr>(S);
22619}
22620bool EvalEmitter::emitFlipSint32MemberPtr(SourceInfo L) {
22621 if (!isActive()) return true;
22622 CurrentSource = L;
22623 return Flip<PT_Sint32, PT_MemberPtr>(S);
22624}
22625bool EvalEmitter::emitFlipSint32Float(SourceInfo L) {
22626 if (!isActive()) return true;
22627 CurrentSource = L;
22628 return Flip<PT_Sint32, PT_Float>(S);
22629}
22630bool EvalEmitter::emitFlipUint32Sint8(SourceInfo L) {
22631 if (!isActive()) return true;
22632 CurrentSource = L;
22633 return Flip<PT_Uint32, PT_Sint8>(S);
22634}
22635bool EvalEmitter::emitFlipUint32Uint8(SourceInfo L) {
22636 if (!isActive()) return true;
22637 CurrentSource = L;
22638 return Flip<PT_Uint32, PT_Uint8>(S);
22639}
22640bool EvalEmitter::emitFlipUint32Sint16(SourceInfo L) {
22641 if (!isActive()) return true;
22642 CurrentSource = L;
22643 return Flip<PT_Uint32, PT_Sint16>(S);
22644}
22645bool EvalEmitter::emitFlipUint32Uint16(SourceInfo L) {
22646 if (!isActive()) return true;
22647 CurrentSource = L;
22648 return Flip<PT_Uint32, PT_Uint16>(S);
22649}
22650bool EvalEmitter::emitFlipUint32Sint32(SourceInfo L) {
22651 if (!isActive()) return true;
22652 CurrentSource = L;
22653 return Flip<PT_Uint32, PT_Sint32>(S);
22654}
22655bool EvalEmitter::emitFlipUint32Uint32(SourceInfo L) {
22656 if (!isActive()) return true;
22657 CurrentSource = L;
22658 return Flip<PT_Uint32, PT_Uint32>(S);
22659}
22660bool EvalEmitter::emitFlipUint32Sint64(SourceInfo L) {
22661 if (!isActive()) return true;
22662 CurrentSource = L;
22663 return Flip<PT_Uint32, PT_Sint64>(S);
22664}
22665bool EvalEmitter::emitFlipUint32Uint64(SourceInfo L) {
22666 if (!isActive()) return true;
22667 CurrentSource = L;
22668 return Flip<PT_Uint32, PT_Uint64>(S);
22669}
22670bool EvalEmitter::emitFlipUint32IntAP(SourceInfo L) {
22671 if (!isActive()) return true;
22672 CurrentSource = L;
22673 return Flip<PT_Uint32, PT_IntAP>(S);
22674}
22675bool EvalEmitter::emitFlipUint32IntAPS(SourceInfo L) {
22676 if (!isActive()) return true;
22677 CurrentSource = L;
22678 return Flip<PT_Uint32, PT_IntAPS>(S);
22679}
22680bool EvalEmitter::emitFlipUint32Bool(SourceInfo L) {
22681 if (!isActive()) return true;
22682 CurrentSource = L;
22683 return Flip<PT_Uint32, PT_Bool>(S);
22684}
22685bool EvalEmitter::emitFlipUint32FixedPoint(SourceInfo L) {
22686 if (!isActive()) return true;
22687 CurrentSource = L;
22688 return Flip<PT_Uint32, PT_FixedPoint>(S);
22689}
22690bool EvalEmitter::emitFlipUint32Ptr(SourceInfo L) {
22691 if (!isActive()) return true;
22692 CurrentSource = L;
22693 return Flip<PT_Uint32, PT_Ptr>(S);
22694}
22695bool EvalEmitter::emitFlipUint32MemberPtr(SourceInfo L) {
22696 if (!isActive()) return true;
22697 CurrentSource = L;
22698 return Flip<PT_Uint32, PT_MemberPtr>(S);
22699}
22700bool EvalEmitter::emitFlipUint32Float(SourceInfo L) {
22701 if (!isActive()) return true;
22702 CurrentSource = L;
22703 return Flip<PT_Uint32, PT_Float>(S);
22704}
22705bool EvalEmitter::emitFlipSint64Sint8(SourceInfo L) {
22706 if (!isActive()) return true;
22707 CurrentSource = L;
22708 return Flip<PT_Sint64, PT_Sint8>(S);
22709}
22710bool EvalEmitter::emitFlipSint64Uint8(SourceInfo L) {
22711 if (!isActive()) return true;
22712 CurrentSource = L;
22713 return Flip<PT_Sint64, PT_Uint8>(S);
22714}
22715bool EvalEmitter::emitFlipSint64Sint16(SourceInfo L) {
22716 if (!isActive()) return true;
22717 CurrentSource = L;
22718 return Flip<PT_Sint64, PT_Sint16>(S);
22719}
22720bool EvalEmitter::emitFlipSint64Uint16(SourceInfo L) {
22721 if (!isActive()) return true;
22722 CurrentSource = L;
22723 return Flip<PT_Sint64, PT_Uint16>(S);
22724}
22725bool EvalEmitter::emitFlipSint64Sint32(SourceInfo L) {
22726 if (!isActive()) return true;
22727 CurrentSource = L;
22728 return Flip<PT_Sint64, PT_Sint32>(S);
22729}
22730bool EvalEmitter::emitFlipSint64Uint32(SourceInfo L) {
22731 if (!isActive()) return true;
22732 CurrentSource = L;
22733 return Flip<PT_Sint64, PT_Uint32>(S);
22734}
22735bool EvalEmitter::emitFlipSint64Sint64(SourceInfo L) {
22736 if (!isActive()) return true;
22737 CurrentSource = L;
22738 return Flip<PT_Sint64, PT_Sint64>(S);
22739}
22740bool EvalEmitter::emitFlipSint64Uint64(SourceInfo L) {
22741 if (!isActive()) return true;
22742 CurrentSource = L;
22743 return Flip<PT_Sint64, PT_Uint64>(S);
22744}
22745bool EvalEmitter::emitFlipSint64IntAP(SourceInfo L) {
22746 if (!isActive()) return true;
22747 CurrentSource = L;
22748 return Flip<PT_Sint64, PT_IntAP>(S);
22749}
22750bool EvalEmitter::emitFlipSint64IntAPS(SourceInfo L) {
22751 if (!isActive()) return true;
22752 CurrentSource = L;
22753 return Flip<PT_Sint64, PT_IntAPS>(S);
22754}
22755bool EvalEmitter::emitFlipSint64Bool(SourceInfo L) {
22756 if (!isActive()) return true;
22757 CurrentSource = L;
22758 return Flip<PT_Sint64, PT_Bool>(S);
22759}
22760bool EvalEmitter::emitFlipSint64FixedPoint(SourceInfo L) {
22761 if (!isActive()) return true;
22762 CurrentSource = L;
22763 return Flip<PT_Sint64, PT_FixedPoint>(S);
22764}
22765bool EvalEmitter::emitFlipSint64Ptr(SourceInfo L) {
22766 if (!isActive()) return true;
22767 CurrentSource = L;
22768 return Flip<PT_Sint64, PT_Ptr>(S);
22769}
22770bool EvalEmitter::emitFlipSint64MemberPtr(SourceInfo L) {
22771 if (!isActive()) return true;
22772 CurrentSource = L;
22773 return Flip<PT_Sint64, PT_MemberPtr>(S);
22774}
22775bool EvalEmitter::emitFlipSint64Float(SourceInfo L) {
22776 if (!isActive()) return true;
22777 CurrentSource = L;
22778 return Flip<PT_Sint64, PT_Float>(S);
22779}
22780bool EvalEmitter::emitFlipUint64Sint8(SourceInfo L) {
22781 if (!isActive()) return true;
22782 CurrentSource = L;
22783 return Flip<PT_Uint64, PT_Sint8>(S);
22784}
22785bool EvalEmitter::emitFlipUint64Uint8(SourceInfo L) {
22786 if (!isActive()) return true;
22787 CurrentSource = L;
22788 return Flip<PT_Uint64, PT_Uint8>(S);
22789}
22790bool EvalEmitter::emitFlipUint64Sint16(SourceInfo L) {
22791 if (!isActive()) return true;
22792 CurrentSource = L;
22793 return Flip<PT_Uint64, PT_Sint16>(S);
22794}
22795bool EvalEmitter::emitFlipUint64Uint16(SourceInfo L) {
22796 if (!isActive()) return true;
22797 CurrentSource = L;
22798 return Flip<PT_Uint64, PT_Uint16>(S);
22799}
22800bool EvalEmitter::emitFlipUint64Sint32(SourceInfo L) {
22801 if (!isActive()) return true;
22802 CurrentSource = L;
22803 return Flip<PT_Uint64, PT_Sint32>(S);
22804}
22805bool EvalEmitter::emitFlipUint64Uint32(SourceInfo L) {
22806 if (!isActive()) return true;
22807 CurrentSource = L;
22808 return Flip<PT_Uint64, PT_Uint32>(S);
22809}
22810bool EvalEmitter::emitFlipUint64Sint64(SourceInfo L) {
22811 if (!isActive()) return true;
22812 CurrentSource = L;
22813 return Flip<PT_Uint64, PT_Sint64>(S);
22814}
22815bool EvalEmitter::emitFlipUint64Uint64(SourceInfo L) {
22816 if (!isActive()) return true;
22817 CurrentSource = L;
22818 return Flip<PT_Uint64, PT_Uint64>(S);
22819}
22820bool EvalEmitter::emitFlipUint64IntAP(SourceInfo L) {
22821 if (!isActive()) return true;
22822 CurrentSource = L;
22823 return Flip<PT_Uint64, PT_IntAP>(S);
22824}
22825bool EvalEmitter::emitFlipUint64IntAPS(SourceInfo L) {
22826 if (!isActive()) return true;
22827 CurrentSource = L;
22828 return Flip<PT_Uint64, PT_IntAPS>(S);
22829}
22830bool EvalEmitter::emitFlipUint64Bool(SourceInfo L) {
22831 if (!isActive()) return true;
22832 CurrentSource = L;
22833 return Flip<PT_Uint64, PT_Bool>(S);
22834}
22835bool EvalEmitter::emitFlipUint64FixedPoint(SourceInfo L) {
22836 if (!isActive()) return true;
22837 CurrentSource = L;
22838 return Flip<PT_Uint64, PT_FixedPoint>(S);
22839}
22840bool EvalEmitter::emitFlipUint64Ptr(SourceInfo L) {
22841 if (!isActive()) return true;
22842 CurrentSource = L;
22843 return Flip<PT_Uint64, PT_Ptr>(S);
22844}
22845bool EvalEmitter::emitFlipUint64MemberPtr(SourceInfo L) {
22846 if (!isActive()) return true;
22847 CurrentSource = L;
22848 return Flip<PT_Uint64, PT_MemberPtr>(S);
22849}
22850bool EvalEmitter::emitFlipUint64Float(SourceInfo L) {
22851 if (!isActive()) return true;
22852 CurrentSource = L;
22853 return Flip<PT_Uint64, PT_Float>(S);
22854}
22855bool EvalEmitter::emitFlipIntAPSint8(SourceInfo L) {
22856 if (!isActive()) return true;
22857 CurrentSource = L;
22858 return Flip<PT_IntAP, PT_Sint8>(S);
22859}
22860bool EvalEmitter::emitFlipIntAPUint8(SourceInfo L) {
22861 if (!isActive()) return true;
22862 CurrentSource = L;
22863 return Flip<PT_IntAP, PT_Uint8>(S);
22864}
22865bool EvalEmitter::emitFlipIntAPSint16(SourceInfo L) {
22866 if (!isActive()) return true;
22867 CurrentSource = L;
22868 return Flip<PT_IntAP, PT_Sint16>(S);
22869}
22870bool EvalEmitter::emitFlipIntAPUint16(SourceInfo L) {
22871 if (!isActive()) return true;
22872 CurrentSource = L;
22873 return Flip<PT_IntAP, PT_Uint16>(S);
22874}
22875bool EvalEmitter::emitFlipIntAPSint32(SourceInfo L) {
22876 if (!isActive()) return true;
22877 CurrentSource = L;
22878 return Flip<PT_IntAP, PT_Sint32>(S);
22879}
22880bool EvalEmitter::emitFlipIntAPUint32(SourceInfo L) {
22881 if (!isActive()) return true;
22882 CurrentSource = L;
22883 return Flip<PT_IntAP, PT_Uint32>(S);
22884}
22885bool EvalEmitter::emitFlipIntAPSint64(SourceInfo L) {
22886 if (!isActive()) return true;
22887 CurrentSource = L;
22888 return Flip<PT_IntAP, PT_Sint64>(S);
22889}
22890bool EvalEmitter::emitFlipIntAPUint64(SourceInfo L) {
22891 if (!isActive()) return true;
22892 CurrentSource = L;
22893 return Flip<PT_IntAP, PT_Uint64>(S);
22894}
22895bool EvalEmitter::emitFlipIntAPIntAP(SourceInfo L) {
22896 if (!isActive()) return true;
22897 CurrentSource = L;
22898 return Flip<PT_IntAP, PT_IntAP>(S);
22899}
22900bool EvalEmitter::emitFlipIntAPIntAPS(SourceInfo L) {
22901 if (!isActive()) return true;
22902 CurrentSource = L;
22903 return Flip<PT_IntAP, PT_IntAPS>(S);
22904}
22905bool EvalEmitter::emitFlipIntAPBool(SourceInfo L) {
22906 if (!isActive()) return true;
22907 CurrentSource = L;
22908 return Flip<PT_IntAP, PT_Bool>(S);
22909}
22910bool EvalEmitter::emitFlipIntAPFixedPoint(SourceInfo L) {
22911 if (!isActive()) return true;
22912 CurrentSource = L;
22913 return Flip<PT_IntAP, PT_FixedPoint>(S);
22914}
22915bool EvalEmitter::emitFlipIntAPPtr(SourceInfo L) {
22916 if (!isActive()) return true;
22917 CurrentSource = L;
22918 return Flip<PT_IntAP, PT_Ptr>(S);
22919}
22920bool EvalEmitter::emitFlipIntAPMemberPtr(SourceInfo L) {
22921 if (!isActive()) return true;
22922 CurrentSource = L;
22923 return Flip<PT_IntAP, PT_MemberPtr>(S);
22924}
22925bool EvalEmitter::emitFlipIntAPFloat(SourceInfo L) {
22926 if (!isActive()) return true;
22927 CurrentSource = L;
22928 return Flip<PT_IntAP, PT_Float>(S);
22929}
22930bool EvalEmitter::emitFlipIntAPSSint8(SourceInfo L) {
22931 if (!isActive()) return true;
22932 CurrentSource = L;
22933 return Flip<PT_IntAPS, PT_Sint8>(S);
22934}
22935bool EvalEmitter::emitFlipIntAPSUint8(SourceInfo L) {
22936 if (!isActive()) return true;
22937 CurrentSource = L;
22938 return Flip<PT_IntAPS, PT_Uint8>(S);
22939}
22940bool EvalEmitter::emitFlipIntAPSSint16(SourceInfo L) {
22941 if (!isActive()) return true;
22942 CurrentSource = L;
22943 return Flip<PT_IntAPS, PT_Sint16>(S);
22944}
22945bool EvalEmitter::emitFlipIntAPSUint16(SourceInfo L) {
22946 if (!isActive()) return true;
22947 CurrentSource = L;
22948 return Flip<PT_IntAPS, PT_Uint16>(S);
22949}
22950bool EvalEmitter::emitFlipIntAPSSint32(SourceInfo L) {
22951 if (!isActive()) return true;
22952 CurrentSource = L;
22953 return Flip<PT_IntAPS, PT_Sint32>(S);
22954}
22955bool EvalEmitter::emitFlipIntAPSUint32(SourceInfo L) {
22956 if (!isActive()) return true;
22957 CurrentSource = L;
22958 return Flip<PT_IntAPS, PT_Uint32>(S);
22959}
22960bool EvalEmitter::emitFlipIntAPSSint64(SourceInfo L) {
22961 if (!isActive()) return true;
22962 CurrentSource = L;
22963 return Flip<PT_IntAPS, PT_Sint64>(S);
22964}
22965bool EvalEmitter::emitFlipIntAPSUint64(SourceInfo L) {
22966 if (!isActive()) return true;
22967 CurrentSource = L;
22968 return Flip<PT_IntAPS, PT_Uint64>(S);
22969}
22970bool EvalEmitter::emitFlipIntAPSIntAP(SourceInfo L) {
22971 if (!isActive()) return true;
22972 CurrentSource = L;
22973 return Flip<PT_IntAPS, PT_IntAP>(S);
22974}
22975bool EvalEmitter::emitFlipIntAPSIntAPS(SourceInfo L) {
22976 if (!isActive()) return true;
22977 CurrentSource = L;
22978 return Flip<PT_IntAPS, PT_IntAPS>(S);
22979}
22980bool EvalEmitter::emitFlipIntAPSBool(SourceInfo L) {
22981 if (!isActive()) return true;
22982 CurrentSource = L;
22983 return Flip<PT_IntAPS, PT_Bool>(S);
22984}
22985bool EvalEmitter::emitFlipIntAPSFixedPoint(SourceInfo L) {
22986 if (!isActive()) return true;
22987 CurrentSource = L;
22988 return Flip<PT_IntAPS, PT_FixedPoint>(S);
22989}
22990bool EvalEmitter::emitFlipIntAPSPtr(SourceInfo L) {
22991 if (!isActive()) return true;
22992 CurrentSource = L;
22993 return Flip<PT_IntAPS, PT_Ptr>(S);
22994}
22995bool EvalEmitter::emitFlipIntAPSMemberPtr(SourceInfo L) {
22996 if (!isActive()) return true;
22997 CurrentSource = L;
22998 return Flip<PT_IntAPS, PT_MemberPtr>(S);
22999}
23000bool EvalEmitter::emitFlipIntAPSFloat(SourceInfo L) {
23001 if (!isActive()) return true;
23002 CurrentSource = L;
23003 return Flip<PT_IntAPS, PT_Float>(S);
23004}
23005bool EvalEmitter::emitFlipBoolSint8(SourceInfo L) {
23006 if (!isActive()) return true;
23007 CurrentSource = L;
23008 return Flip<PT_Bool, PT_Sint8>(S);
23009}
23010bool EvalEmitter::emitFlipBoolUint8(SourceInfo L) {
23011 if (!isActive()) return true;
23012 CurrentSource = L;
23013 return Flip<PT_Bool, PT_Uint8>(S);
23014}
23015bool EvalEmitter::emitFlipBoolSint16(SourceInfo L) {
23016 if (!isActive()) return true;
23017 CurrentSource = L;
23018 return Flip<PT_Bool, PT_Sint16>(S);
23019}
23020bool EvalEmitter::emitFlipBoolUint16(SourceInfo L) {
23021 if (!isActive()) return true;
23022 CurrentSource = L;
23023 return Flip<PT_Bool, PT_Uint16>(S);
23024}
23025bool EvalEmitter::emitFlipBoolSint32(SourceInfo L) {
23026 if (!isActive()) return true;
23027 CurrentSource = L;
23028 return Flip<PT_Bool, PT_Sint32>(S);
23029}
23030bool EvalEmitter::emitFlipBoolUint32(SourceInfo L) {
23031 if (!isActive()) return true;
23032 CurrentSource = L;
23033 return Flip<PT_Bool, PT_Uint32>(S);
23034}
23035bool EvalEmitter::emitFlipBoolSint64(SourceInfo L) {
23036 if (!isActive()) return true;
23037 CurrentSource = L;
23038 return Flip<PT_Bool, PT_Sint64>(S);
23039}
23040bool EvalEmitter::emitFlipBoolUint64(SourceInfo L) {
23041 if (!isActive()) return true;
23042 CurrentSource = L;
23043 return Flip<PT_Bool, PT_Uint64>(S);
23044}
23045bool EvalEmitter::emitFlipBoolIntAP(SourceInfo L) {
23046 if (!isActive()) return true;
23047 CurrentSource = L;
23048 return Flip<PT_Bool, PT_IntAP>(S);
23049}
23050bool EvalEmitter::emitFlipBoolIntAPS(SourceInfo L) {
23051 if (!isActive()) return true;
23052 CurrentSource = L;
23053 return Flip<PT_Bool, PT_IntAPS>(S);
23054}
23055bool EvalEmitter::emitFlipBoolBool(SourceInfo L) {
23056 if (!isActive()) return true;
23057 CurrentSource = L;
23058 return Flip<PT_Bool, PT_Bool>(S);
23059}
23060bool EvalEmitter::emitFlipBoolFixedPoint(SourceInfo L) {
23061 if (!isActive()) return true;
23062 CurrentSource = L;
23063 return Flip<PT_Bool, PT_FixedPoint>(S);
23064}
23065bool EvalEmitter::emitFlipBoolPtr(SourceInfo L) {
23066 if (!isActive()) return true;
23067 CurrentSource = L;
23068 return Flip<PT_Bool, PT_Ptr>(S);
23069}
23070bool EvalEmitter::emitFlipBoolMemberPtr(SourceInfo L) {
23071 if (!isActive()) return true;
23072 CurrentSource = L;
23073 return Flip<PT_Bool, PT_MemberPtr>(S);
23074}
23075bool EvalEmitter::emitFlipBoolFloat(SourceInfo L) {
23076 if (!isActive()) return true;
23077 CurrentSource = L;
23078 return Flip<PT_Bool, PT_Float>(S);
23079}
23080bool EvalEmitter::emitFlipFixedPointSint8(SourceInfo L) {
23081 if (!isActive()) return true;
23082 CurrentSource = L;
23083 return Flip<PT_FixedPoint, PT_Sint8>(S);
23084}
23085bool EvalEmitter::emitFlipFixedPointUint8(SourceInfo L) {
23086 if (!isActive()) return true;
23087 CurrentSource = L;
23088 return Flip<PT_FixedPoint, PT_Uint8>(S);
23089}
23090bool EvalEmitter::emitFlipFixedPointSint16(SourceInfo L) {
23091 if (!isActive()) return true;
23092 CurrentSource = L;
23093 return Flip<PT_FixedPoint, PT_Sint16>(S);
23094}
23095bool EvalEmitter::emitFlipFixedPointUint16(SourceInfo L) {
23096 if (!isActive()) return true;
23097 CurrentSource = L;
23098 return Flip<PT_FixedPoint, PT_Uint16>(S);
23099}
23100bool EvalEmitter::emitFlipFixedPointSint32(SourceInfo L) {
23101 if (!isActive()) return true;
23102 CurrentSource = L;
23103 return Flip<PT_FixedPoint, PT_Sint32>(S);
23104}
23105bool EvalEmitter::emitFlipFixedPointUint32(SourceInfo L) {
23106 if (!isActive()) return true;
23107 CurrentSource = L;
23108 return Flip<PT_FixedPoint, PT_Uint32>(S);
23109}
23110bool EvalEmitter::emitFlipFixedPointSint64(SourceInfo L) {
23111 if (!isActive()) return true;
23112 CurrentSource = L;
23113 return Flip<PT_FixedPoint, PT_Sint64>(S);
23114}
23115bool EvalEmitter::emitFlipFixedPointUint64(SourceInfo L) {
23116 if (!isActive()) return true;
23117 CurrentSource = L;
23118 return Flip<PT_FixedPoint, PT_Uint64>(S);
23119}
23120bool EvalEmitter::emitFlipFixedPointIntAP(SourceInfo L) {
23121 if (!isActive()) return true;
23122 CurrentSource = L;
23123 return Flip<PT_FixedPoint, PT_IntAP>(S);
23124}
23125bool EvalEmitter::emitFlipFixedPointIntAPS(SourceInfo L) {
23126 if (!isActive()) return true;
23127 CurrentSource = L;
23128 return Flip<PT_FixedPoint, PT_IntAPS>(S);
23129}
23130bool EvalEmitter::emitFlipFixedPointBool(SourceInfo L) {
23131 if (!isActive()) return true;
23132 CurrentSource = L;
23133 return Flip<PT_FixedPoint, PT_Bool>(S);
23134}
23135bool EvalEmitter::emitFlipFixedPointFixedPoint(SourceInfo L) {
23136 if (!isActive()) return true;
23137 CurrentSource = L;
23138 return Flip<PT_FixedPoint, PT_FixedPoint>(S);
23139}
23140bool EvalEmitter::emitFlipFixedPointPtr(SourceInfo L) {
23141 if (!isActive()) return true;
23142 CurrentSource = L;
23143 return Flip<PT_FixedPoint, PT_Ptr>(S);
23144}
23145bool EvalEmitter::emitFlipFixedPointMemberPtr(SourceInfo L) {
23146 if (!isActive()) return true;
23147 CurrentSource = L;
23148 return Flip<PT_FixedPoint, PT_MemberPtr>(S);
23149}
23150bool EvalEmitter::emitFlipFixedPointFloat(SourceInfo L) {
23151 if (!isActive()) return true;
23152 CurrentSource = L;
23153 return Flip<PT_FixedPoint, PT_Float>(S);
23154}
23155bool EvalEmitter::emitFlipPtrSint8(SourceInfo L) {
23156 if (!isActive()) return true;
23157 CurrentSource = L;
23158 return Flip<PT_Ptr, PT_Sint8>(S);
23159}
23160bool EvalEmitter::emitFlipPtrUint8(SourceInfo L) {
23161 if (!isActive()) return true;
23162 CurrentSource = L;
23163 return Flip<PT_Ptr, PT_Uint8>(S);
23164}
23165bool EvalEmitter::emitFlipPtrSint16(SourceInfo L) {
23166 if (!isActive()) return true;
23167 CurrentSource = L;
23168 return Flip<PT_Ptr, PT_Sint16>(S);
23169}
23170bool EvalEmitter::emitFlipPtrUint16(SourceInfo L) {
23171 if (!isActive()) return true;
23172 CurrentSource = L;
23173 return Flip<PT_Ptr, PT_Uint16>(S);
23174}
23175bool EvalEmitter::emitFlipPtrSint32(SourceInfo L) {
23176 if (!isActive()) return true;
23177 CurrentSource = L;
23178 return Flip<PT_Ptr, PT_Sint32>(S);
23179}
23180bool EvalEmitter::emitFlipPtrUint32(SourceInfo L) {
23181 if (!isActive()) return true;
23182 CurrentSource = L;
23183 return Flip<PT_Ptr, PT_Uint32>(S);
23184}
23185bool EvalEmitter::emitFlipPtrSint64(SourceInfo L) {
23186 if (!isActive()) return true;
23187 CurrentSource = L;
23188 return Flip<PT_Ptr, PT_Sint64>(S);
23189}
23190bool EvalEmitter::emitFlipPtrUint64(SourceInfo L) {
23191 if (!isActive()) return true;
23192 CurrentSource = L;
23193 return Flip<PT_Ptr, PT_Uint64>(S);
23194}
23195bool EvalEmitter::emitFlipPtrIntAP(SourceInfo L) {
23196 if (!isActive()) return true;
23197 CurrentSource = L;
23198 return Flip<PT_Ptr, PT_IntAP>(S);
23199}
23200bool EvalEmitter::emitFlipPtrIntAPS(SourceInfo L) {
23201 if (!isActive()) return true;
23202 CurrentSource = L;
23203 return Flip<PT_Ptr, PT_IntAPS>(S);
23204}
23205bool EvalEmitter::emitFlipPtrBool(SourceInfo L) {
23206 if (!isActive()) return true;
23207 CurrentSource = L;
23208 return Flip<PT_Ptr, PT_Bool>(S);
23209}
23210bool EvalEmitter::emitFlipPtrFixedPoint(SourceInfo L) {
23211 if (!isActive()) return true;
23212 CurrentSource = L;
23213 return Flip<PT_Ptr, PT_FixedPoint>(S);
23214}
23215bool EvalEmitter::emitFlipPtrPtr(SourceInfo L) {
23216 if (!isActive()) return true;
23217 CurrentSource = L;
23218 return Flip<PT_Ptr, PT_Ptr>(S);
23219}
23220bool EvalEmitter::emitFlipPtrMemberPtr(SourceInfo L) {
23221 if (!isActive()) return true;
23222 CurrentSource = L;
23223 return Flip<PT_Ptr, PT_MemberPtr>(S);
23224}
23225bool EvalEmitter::emitFlipPtrFloat(SourceInfo L) {
23226 if (!isActive()) return true;
23227 CurrentSource = L;
23228 return Flip<PT_Ptr, PT_Float>(S);
23229}
23230bool EvalEmitter::emitFlipMemberPtrSint8(SourceInfo L) {
23231 if (!isActive()) return true;
23232 CurrentSource = L;
23233 return Flip<PT_MemberPtr, PT_Sint8>(S);
23234}
23235bool EvalEmitter::emitFlipMemberPtrUint8(SourceInfo L) {
23236 if (!isActive()) return true;
23237 CurrentSource = L;
23238 return Flip<PT_MemberPtr, PT_Uint8>(S);
23239}
23240bool EvalEmitter::emitFlipMemberPtrSint16(SourceInfo L) {
23241 if (!isActive()) return true;
23242 CurrentSource = L;
23243 return Flip<PT_MemberPtr, PT_Sint16>(S);
23244}
23245bool EvalEmitter::emitFlipMemberPtrUint16(SourceInfo L) {
23246 if (!isActive()) return true;
23247 CurrentSource = L;
23248 return Flip<PT_MemberPtr, PT_Uint16>(S);
23249}
23250bool EvalEmitter::emitFlipMemberPtrSint32(SourceInfo L) {
23251 if (!isActive()) return true;
23252 CurrentSource = L;
23253 return Flip<PT_MemberPtr, PT_Sint32>(S);
23254}
23255bool EvalEmitter::emitFlipMemberPtrUint32(SourceInfo L) {
23256 if (!isActive()) return true;
23257 CurrentSource = L;
23258 return Flip<PT_MemberPtr, PT_Uint32>(S);
23259}
23260bool EvalEmitter::emitFlipMemberPtrSint64(SourceInfo L) {
23261 if (!isActive()) return true;
23262 CurrentSource = L;
23263 return Flip<PT_MemberPtr, PT_Sint64>(S);
23264}
23265bool EvalEmitter::emitFlipMemberPtrUint64(SourceInfo L) {
23266 if (!isActive()) return true;
23267 CurrentSource = L;
23268 return Flip<PT_MemberPtr, PT_Uint64>(S);
23269}
23270bool EvalEmitter::emitFlipMemberPtrIntAP(SourceInfo L) {
23271 if (!isActive()) return true;
23272 CurrentSource = L;
23273 return Flip<PT_MemberPtr, PT_IntAP>(S);
23274}
23275bool EvalEmitter::emitFlipMemberPtrIntAPS(SourceInfo L) {
23276 if (!isActive()) return true;
23277 CurrentSource = L;
23278 return Flip<PT_MemberPtr, PT_IntAPS>(S);
23279}
23280bool EvalEmitter::emitFlipMemberPtrBool(SourceInfo L) {
23281 if (!isActive()) return true;
23282 CurrentSource = L;
23283 return Flip<PT_MemberPtr, PT_Bool>(S);
23284}
23285bool EvalEmitter::emitFlipMemberPtrFixedPoint(SourceInfo L) {
23286 if (!isActive()) return true;
23287 CurrentSource = L;
23288 return Flip<PT_MemberPtr, PT_FixedPoint>(S);
23289}
23290bool EvalEmitter::emitFlipMemberPtrPtr(SourceInfo L) {
23291 if (!isActive()) return true;
23292 CurrentSource = L;
23293 return Flip<PT_MemberPtr, PT_Ptr>(S);
23294}
23295bool EvalEmitter::emitFlipMemberPtrMemberPtr(SourceInfo L) {
23296 if (!isActive()) return true;
23297 CurrentSource = L;
23298 return Flip<PT_MemberPtr, PT_MemberPtr>(S);
23299}
23300bool EvalEmitter::emitFlipMemberPtrFloat(SourceInfo L) {
23301 if (!isActive()) return true;
23302 CurrentSource = L;
23303 return Flip<PT_MemberPtr, PT_Float>(S);
23304}
23305bool EvalEmitter::emitFlipFloatSint8(SourceInfo L) {
23306 if (!isActive()) return true;
23307 CurrentSource = L;
23308 return Flip<PT_Float, PT_Sint8>(S);
23309}
23310bool EvalEmitter::emitFlipFloatUint8(SourceInfo L) {
23311 if (!isActive()) return true;
23312 CurrentSource = L;
23313 return Flip<PT_Float, PT_Uint8>(S);
23314}
23315bool EvalEmitter::emitFlipFloatSint16(SourceInfo L) {
23316 if (!isActive()) return true;
23317 CurrentSource = L;
23318 return Flip<PT_Float, PT_Sint16>(S);
23319}
23320bool EvalEmitter::emitFlipFloatUint16(SourceInfo L) {
23321 if (!isActive()) return true;
23322 CurrentSource = L;
23323 return Flip<PT_Float, PT_Uint16>(S);
23324}
23325bool EvalEmitter::emitFlipFloatSint32(SourceInfo L) {
23326 if (!isActive()) return true;
23327 CurrentSource = L;
23328 return Flip<PT_Float, PT_Sint32>(S);
23329}
23330bool EvalEmitter::emitFlipFloatUint32(SourceInfo L) {
23331 if (!isActive()) return true;
23332 CurrentSource = L;
23333 return Flip<PT_Float, PT_Uint32>(S);
23334}
23335bool EvalEmitter::emitFlipFloatSint64(SourceInfo L) {
23336 if (!isActive()) return true;
23337 CurrentSource = L;
23338 return Flip<PT_Float, PT_Sint64>(S);
23339}
23340bool EvalEmitter::emitFlipFloatUint64(SourceInfo L) {
23341 if (!isActive()) return true;
23342 CurrentSource = L;
23343 return Flip<PT_Float, PT_Uint64>(S);
23344}
23345bool EvalEmitter::emitFlipFloatIntAP(SourceInfo L) {
23346 if (!isActive()) return true;
23347 CurrentSource = L;
23348 return Flip<PT_Float, PT_IntAP>(S);
23349}
23350bool EvalEmitter::emitFlipFloatIntAPS(SourceInfo L) {
23351 if (!isActive()) return true;
23352 CurrentSource = L;
23353 return Flip<PT_Float, PT_IntAPS>(S);
23354}
23355bool EvalEmitter::emitFlipFloatBool(SourceInfo L) {
23356 if (!isActive()) return true;
23357 CurrentSource = L;
23358 return Flip<PT_Float, PT_Bool>(S);
23359}
23360bool EvalEmitter::emitFlipFloatFixedPoint(SourceInfo L) {
23361 if (!isActive()) return true;
23362 CurrentSource = L;
23363 return Flip<PT_Float, PT_FixedPoint>(S);
23364}
23365bool EvalEmitter::emitFlipFloatPtr(SourceInfo L) {
23366 if (!isActive()) return true;
23367 CurrentSource = L;
23368 return Flip<PT_Float, PT_Ptr>(S);
23369}
23370bool EvalEmitter::emitFlipFloatMemberPtr(SourceInfo L) {
23371 if (!isActive()) return true;
23372 CurrentSource = L;
23373 return Flip<PT_Float, PT_MemberPtr>(S);
23374}
23375bool EvalEmitter::emitFlipFloatFloat(SourceInfo L) {
23376 if (!isActive()) return true;
23377 CurrentSource = L;
23378 return Flip<PT_Float, PT_Float>(S);
23379}
23380#endif
23381#ifdef GET_OPCODE_NAMES
23382OP_FnPtrCast,
23383#endif
23384#ifdef GET_INTERPFN_LIST
23385&Interp_FnPtrCast,
23386#endif
23387#ifdef GET_INTERPFN_DISPATCHERS
23388PRESERVE_NONE
23389static bool Interp_FnPtrCast(InterpState &S) {
23390 if (!FnPtrCast(S, S.PC)) return false;
23391#if USE_TAILCALLS
23392 MUSTTAIL return InterpNext(S);
23393#else
23394 return true;
23395#endif
23396}
23397#endif
23398#ifdef GET_DISASM
23399case OP_FnPtrCast:
23400 Text.Op = PrintName("FnPtrCast");
23401 break;
23402#endif
23403#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23404bool emitFnPtrCast(SourceInfo);
23405#endif
23406#ifdef GET_LINK_IMPL
23407bool ByteCodeEmitter::emitFnPtrCast(SourceInfo L) {
23408 return emitOp<>(OP_FnPtrCast, L);
23409}
23410#endif
23411#ifdef GET_EVAL_IMPL
23412bool EvalEmitter::emitFnPtrCast(SourceInfo L) {
23413 if (!isActive()) return true;
23414 CurrentSource = L;
23415 return FnPtrCast(S, CodePtr());
23416}
23417#endif
23418#ifdef GET_OPCODE_NAMES
23419OP_Free,
23420#endif
23421#ifdef GET_INTERPFN_LIST
23422&Interp_Free,
23423#endif
23424#ifdef GET_INTERPFN_DISPATCHERS
23425PRESERVE_NONE
23426static bool Interp_Free(InterpState &S) {
23427 {
23428 CodePtr OpPC = S.PC;
23429 const auto V0 = ReadArg<bool>(S, S.PC);
23430 const auto V1 = ReadArg<bool>(S, S.PC);
23431 if (!Free(S, OpPC, V0, V1)) return false;
23432 }
23433#if USE_TAILCALLS
23434 MUSTTAIL return InterpNext(S);
23435#else
23436 return true;
23437#endif
23438}
23439#endif
23440#ifdef GET_DISASM
23441case OP_Free:
23442 Text.Op = PrintName("Free");
23443 Text.Args.push_back(printArg<bool>(PC));
23444 Text.Args.push_back(printArg<bool>(PC));
23445 break;
23446#endif
23447#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23448bool emitFree( bool , bool , SourceInfo);
23449#endif
23450#ifdef GET_LINK_IMPL
23451bool ByteCodeEmitter::emitFree( bool A0, bool A1, SourceInfo L) {
23452 return emitOp<bool, bool>(OP_Free, A0, A1, L);
23453}
23454#endif
23455#ifdef GET_EVAL_IMPL
23456bool EvalEmitter::emitFree( bool A0, bool A1, SourceInfo L) {
23457 if (!isActive()) return true;
23458 CurrentSource = L;
23459 return Free(S, CodePtr(), A0, A1);
23460}
23461#endif
23462#ifdef GET_OPCODE_NAMES
23463OP_GESint8,
23464OP_GEUint8,
23465OP_GESint16,
23466OP_GEUint16,
23467OP_GESint32,
23468OP_GEUint32,
23469OP_GESint64,
23470OP_GEUint64,
23471OP_GEIntAP,
23472OP_GEIntAPS,
23473OP_GEBool,
23474OP_GEFixedPoint,
23475OP_GEPtr,
23476OP_GEFloat,
23477#endif
23478#ifdef GET_INTERPFN_LIST
23479&Interp_GESint8,
23480&Interp_GEUint8,
23481&Interp_GESint16,
23482&Interp_GEUint16,
23483&Interp_GESint32,
23484&Interp_GEUint32,
23485&Interp_GESint64,
23486&Interp_GEUint64,
23487&Interp_GEIntAP,
23488&Interp_GEIntAPS,
23489&Interp_GEBool,
23490&Interp_GEFixedPoint,
23491&Interp_GEPtr,
23492&Interp_GEFloat,
23493#endif
23494#ifdef GET_INTERPFN_DISPATCHERS
23495PRESERVE_NONE
23496static bool Interp_GESint8(InterpState &S) {
23497 if (!GE<PT_Sint8>(S, S.PC)) return false;
23498#if USE_TAILCALLS
23499 MUSTTAIL return InterpNext(S);
23500#else
23501 return true;
23502#endif
23503}
23504PRESERVE_NONE
23505static bool Interp_GEUint8(InterpState &S) {
23506 if (!GE<PT_Uint8>(S, S.PC)) return false;
23507#if USE_TAILCALLS
23508 MUSTTAIL return InterpNext(S);
23509#else
23510 return true;
23511#endif
23512}
23513PRESERVE_NONE
23514static bool Interp_GESint16(InterpState &S) {
23515 if (!GE<PT_Sint16>(S, S.PC)) return false;
23516#if USE_TAILCALLS
23517 MUSTTAIL return InterpNext(S);
23518#else
23519 return true;
23520#endif
23521}
23522PRESERVE_NONE
23523static bool Interp_GEUint16(InterpState &S) {
23524 if (!GE<PT_Uint16>(S, S.PC)) return false;
23525#if USE_TAILCALLS
23526 MUSTTAIL return InterpNext(S);
23527#else
23528 return true;
23529#endif
23530}
23531PRESERVE_NONE
23532static bool Interp_GESint32(InterpState &S) {
23533 if (!GE<PT_Sint32>(S, S.PC)) return false;
23534#if USE_TAILCALLS
23535 MUSTTAIL return InterpNext(S);
23536#else
23537 return true;
23538#endif
23539}
23540PRESERVE_NONE
23541static bool Interp_GEUint32(InterpState &S) {
23542 if (!GE<PT_Uint32>(S, S.PC)) return false;
23543#if USE_TAILCALLS
23544 MUSTTAIL return InterpNext(S);
23545#else
23546 return true;
23547#endif
23548}
23549PRESERVE_NONE
23550static bool Interp_GESint64(InterpState &S) {
23551 if (!GE<PT_Sint64>(S, S.PC)) return false;
23552#if USE_TAILCALLS
23553 MUSTTAIL return InterpNext(S);
23554#else
23555 return true;
23556#endif
23557}
23558PRESERVE_NONE
23559static bool Interp_GEUint64(InterpState &S) {
23560 if (!GE<PT_Uint64>(S, S.PC)) return false;
23561#if USE_TAILCALLS
23562 MUSTTAIL return InterpNext(S);
23563#else
23564 return true;
23565#endif
23566}
23567PRESERVE_NONE
23568static bool Interp_GEIntAP(InterpState &S) {
23569 if (!GE<PT_IntAP>(S, S.PC)) return false;
23570#if USE_TAILCALLS
23571 MUSTTAIL return InterpNext(S);
23572#else
23573 return true;
23574#endif
23575}
23576PRESERVE_NONE
23577static bool Interp_GEIntAPS(InterpState &S) {
23578 if (!GE<PT_IntAPS>(S, S.PC)) return false;
23579#if USE_TAILCALLS
23580 MUSTTAIL return InterpNext(S);
23581#else
23582 return true;
23583#endif
23584}
23585PRESERVE_NONE
23586static bool Interp_GEBool(InterpState &S) {
23587 if (!GE<PT_Bool>(S, S.PC)) return false;
23588#if USE_TAILCALLS
23589 MUSTTAIL return InterpNext(S);
23590#else
23591 return true;
23592#endif
23593}
23594PRESERVE_NONE
23595static bool Interp_GEFixedPoint(InterpState &S) {
23596 if (!GE<PT_FixedPoint>(S, S.PC)) return false;
23597#if USE_TAILCALLS
23598 MUSTTAIL return InterpNext(S);
23599#else
23600 return true;
23601#endif
23602}
23603PRESERVE_NONE
23604static bool Interp_GEPtr(InterpState &S) {
23605 if (!GE<PT_Ptr>(S, S.PC)) return false;
23606#if USE_TAILCALLS
23607 MUSTTAIL return InterpNext(S);
23608#else
23609 return true;
23610#endif
23611}
23612PRESERVE_NONE
23613static bool Interp_GEFloat(InterpState &S) {
23614 if (!GE<PT_Float>(S, S.PC)) return false;
23615#if USE_TAILCALLS
23616 MUSTTAIL return InterpNext(S);
23617#else
23618 return true;
23619#endif
23620}
23621#endif
23622#ifdef GET_DISASM
23623case OP_GESint8:
23624 Text.Op = PrintName("GESint8");
23625 break;
23626case OP_GEUint8:
23627 Text.Op = PrintName("GEUint8");
23628 break;
23629case OP_GESint16:
23630 Text.Op = PrintName("GESint16");
23631 break;
23632case OP_GEUint16:
23633 Text.Op = PrintName("GEUint16");
23634 break;
23635case OP_GESint32:
23636 Text.Op = PrintName("GESint32");
23637 break;
23638case OP_GEUint32:
23639 Text.Op = PrintName("GEUint32");
23640 break;
23641case OP_GESint64:
23642 Text.Op = PrintName("GESint64");
23643 break;
23644case OP_GEUint64:
23645 Text.Op = PrintName("GEUint64");
23646 break;
23647case OP_GEIntAP:
23648 Text.Op = PrintName("GEIntAP");
23649 break;
23650case OP_GEIntAPS:
23651 Text.Op = PrintName("GEIntAPS");
23652 break;
23653case OP_GEBool:
23654 Text.Op = PrintName("GEBool");
23655 break;
23656case OP_GEFixedPoint:
23657 Text.Op = PrintName("GEFixedPoint");
23658 break;
23659case OP_GEPtr:
23660 Text.Op = PrintName("GEPtr");
23661 break;
23662case OP_GEFloat:
23663 Text.Op = PrintName("GEFloat");
23664 break;
23665#endif
23666#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23667bool emitGESint8(SourceInfo);
23668bool emitGEUint8(SourceInfo);
23669bool emitGESint16(SourceInfo);
23670bool emitGEUint16(SourceInfo);
23671bool emitGESint32(SourceInfo);
23672bool emitGEUint32(SourceInfo);
23673bool emitGESint64(SourceInfo);
23674bool emitGEUint64(SourceInfo);
23675bool emitGEIntAP(SourceInfo);
23676bool emitGEIntAPS(SourceInfo);
23677bool emitGEBool(SourceInfo);
23678bool emitGEFixedPoint(SourceInfo);
23679bool emitGEPtr(SourceInfo);
23680bool emitGEFloat(SourceInfo);
23681#endif
23682#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23683[[nodiscard]] bool emitGE(PrimType, SourceInfo I);
23684#endif
23685#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
23686bool
23687#if defined(GET_EVAL_IMPL)
23688EvalEmitter
23689#else
23690ByteCodeEmitter
23691#endif
23692::emitGE(PrimType T0, SourceInfo I) {
23693 switch (T0) {
23694 case PT_Sint8:
23695 return emitGESint8(I);
23696 case PT_Uint8:
23697 return emitGEUint8(I);
23698 case PT_Sint16:
23699 return emitGESint16(I);
23700 case PT_Uint16:
23701 return emitGEUint16(I);
23702 case PT_Sint32:
23703 return emitGESint32(I);
23704 case PT_Uint32:
23705 return emitGEUint32(I);
23706 case PT_Sint64:
23707 return emitGESint64(I);
23708 case PT_Uint64:
23709 return emitGEUint64(I);
23710 case PT_IntAP:
23711 return emitGEIntAP(I);
23712 case PT_IntAPS:
23713 return emitGEIntAPS(I);
23714 case PT_Bool:
23715 return emitGEBool(I);
23716 case PT_FixedPoint:
23717 return emitGEFixedPoint(I);
23718 case PT_Ptr:
23719 return emitGEPtr(I);
23720 case PT_Float:
23721 return emitGEFloat(I);
23722 default: llvm_unreachable("invalid type: emitGE");
23723 }
23724 llvm_unreachable("invalid enum value");
23725}
23726#endif
23727#ifdef GET_LINK_IMPL
23728bool ByteCodeEmitter::emitGESint8(SourceInfo L) {
23729 return emitOp<>(OP_GESint8, L);
23730}
23731bool ByteCodeEmitter::emitGEUint8(SourceInfo L) {
23732 return emitOp<>(OP_GEUint8, L);
23733}
23734bool ByteCodeEmitter::emitGESint16(SourceInfo L) {
23735 return emitOp<>(OP_GESint16, L);
23736}
23737bool ByteCodeEmitter::emitGEUint16(SourceInfo L) {
23738 return emitOp<>(OP_GEUint16, L);
23739}
23740bool ByteCodeEmitter::emitGESint32(SourceInfo L) {
23741 return emitOp<>(OP_GESint32, L);
23742}
23743bool ByteCodeEmitter::emitGEUint32(SourceInfo L) {
23744 return emitOp<>(OP_GEUint32, L);
23745}
23746bool ByteCodeEmitter::emitGESint64(SourceInfo L) {
23747 return emitOp<>(OP_GESint64, L);
23748}
23749bool ByteCodeEmitter::emitGEUint64(SourceInfo L) {
23750 return emitOp<>(OP_GEUint64, L);
23751}
23752bool ByteCodeEmitter::emitGEIntAP(SourceInfo L) {
23753 return emitOp<>(OP_GEIntAP, L);
23754}
23755bool ByteCodeEmitter::emitGEIntAPS(SourceInfo L) {
23756 return emitOp<>(OP_GEIntAPS, L);
23757}
23758bool ByteCodeEmitter::emitGEBool(SourceInfo L) {
23759 return emitOp<>(OP_GEBool, L);
23760}
23761bool ByteCodeEmitter::emitGEFixedPoint(SourceInfo L) {
23762 return emitOp<>(OP_GEFixedPoint, L);
23763}
23764bool ByteCodeEmitter::emitGEPtr(SourceInfo L) {
23765 return emitOp<>(OP_GEPtr, L);
23766}
23767bool ByteCodeEmitter::emitGEFloat(SourceInfo L) {
23768 return emitOp<>(OP_GEFloat, L);
23769}
23770#endif
23771#ifdef GET_EVAL_IMPL
23772bool EvalEmitter::emitGESint8(SourceInfo L) {
23773 if (!isActive()) return true;
23774 CurrentSource = L;
23775 return GE<PT_Sint8>(S, CodePtr());
23776}
23777bool EvalEmitter::emitGEUint8(SourceInfo L) {
23778 if (!isActive()) return true;
23779 CurrentSource = L;
23780 return GE<PT_Uint8>(S, CodePtr());
23781}
23782bool EvalEmitter::emitGESint16(SourceInfo L) {
23783 if (!isActive()) return true;
23784 CurrentSource = L;
23785 return GE<PT_Sint16>(S, CodePtr());
23786}
23787bool EvalEmitter::emitGEUint16(SourceInfo L) {
23788 if (!isActive()) return true;
23789 CurrentSource = L;
23790 return GE<PT_Uint16>(S, CodePtr());
23791}
23792bool EvalEmitter::emitGESint32(SourceInfo L) {
23793 if (!isActive()) return true;
23794 CurrentSource = L;
23795 return GE<PT_Sint32>(S, CodePtr());
23796}
23797bool EvalEmitter::emitGEUint32(SourceInfo L) {
23798 if (!isActive()) return true;
23799 CurrentSource = L;
23800 return GE<PT_Uint32>(S, CodePtr());
23801}
23802bool EvalEmitter::emitGESint64(SourceInfo L) {
23803 if (!isActive()) return true;
23804 CurrentSource = L;
23805 return GE<PT_Sint64>(S, CodePtr());
23806}
23807bool EvalEmitter::emitGEUint64(SourceInfo L) {
23808 if (!isActive()) return true;
23809 CurrentSource = L;
23810 return GE<PT_Uint64>(S, CodePtr());
23811}
23812bool EvalEmitter::emitGEIntAP(SourceInfo L) {
23813 if (!isActive()) return true;
23814 CurrentSource = L;
23815 return GE<PT_IntAP>(S, CodePtr());
23816}
23817bool EvalEmitter::emitGEIntAPS(SourceInfo L) {
23818 if (!isActive()) return true;
23819 CurrentSource = L;
23820 return GE<PT_IntAPS>(S, CodePtr());
23821}
23822bool EvalEmitter::emitGEBool(SourceInfo L) {
23823 if (!isActive()) return true;
23824 CurrentSource = L;
23825 return GE<PT_Bool>(S, CodePtr());
23826}
23827bool EvalEmitter::emitGEFixedPoint(SourceInfo L) {
23828 if (!isActive()) return true;
23829 CurrentSource = L;
23830 return GE<PT_FixedPoint>(S, CodePtr());
23831}
23832bool EvalEmitter::emitGEPtr(SourceInfo L) {
23833 if (!isActive()) return true;
23834 CurrentSource = L;
23835 return GE<PT_Ptr>(S, CodePtr());
23836}
23837bool EvalEmitter::emitGEFloat(SourceInfo L) {
23838 if (!isActive()) return true;
23839 CurrentSource = L;
23840 return GE<PT_Float>(S, CodePtr());
23841}
23842#endif
23843#ifdef GET_OPCODE_NAMES
23844OP_GTSint8,
23845OP_GTUint8,
23846OP_GTSint16,
23847OP_GTUint16,
23848OP_GTSint32,
23849OP_GTUint32,
23850OP_GTSint64,
23851OP_GTUint64,
23852OP_GTIntAP,
23853OP_GTIntAPS,
23854OP_GTBool,
23855OP_GTFixedPoint,
23856OP_GTPtr,
23857OP_GTFloat,
23858#endif
23859#ifdef GET_INTERPFN_LIST
23860&Interp_GTSint8,
23861&Interp_GTUint8,
23862&Interp_GTSint16,
23863&Interp_GTUint16,
23864&Interp_GTSint32,
23865&Interp_GTUint32,
23866&Interp_GTSint64,
23867&Interp_GTUint64,
23868&Interp_GTIntAP,
23869&Interp_GTIntAPS,
23870&Interp_GTBool,
23871&Interp_GTFixedPoint,
23872&Interp_GTPtr,
23873&Interp_GTFloat,
23874#endif
23875#ifdef GET_INTERPFN_DISPATCHERS
23876PRESERVE_NONE
23877static bool Interp_GTSint8(InterpState &S) {
23878 if (!GT<PT_Sint8>(S, S.PC)) return false;
23879#if USE_TAILCALLS
23880 MUSTTAIL return InterpNext(S);
23881#else
23882 return true;
23883#endif
23884}
23885PRESERVE_NONE
23886static bool Interp_GTUint8(InterpState &S) {
23887 if (!GT<PT_Uint8>(S, S.PC)) return false;
23888#if USE_TAILCALLS
23889 MUSTTAIL return InterpNext(S);
23890#else
23891 return true;
23892#endif
23893}
23894PRESERVE_NONE
23895static bool Interp_GTSint16(InterpState &S) {
23896 if (!GT<PT_Sint16>(S, S.PC)) return false;
23897#if USE_TAILCALLS
23898 MUSTTAIL return InterpNext(S);
23899#else
23900 return true;
23901#endif
23902}
23903PRESERVE_NONE
23904static bool Interp_GTUint16(InterpState &S) {
23905 if (!GT<PT_Uint16>(S, S.PC)) return false;
23906#if USE_TAILCALLS
23907 MUSTTAIL return InterpNext(S);
23908#else
23909 return true;
23910#endif
23911}
23912PRESERVE_NONE
23913static bool Interp_GTSint32(InterpState &S) {
23914 if (!GT<PT_Sint32>(S, S.PC)) return false;
23915#if USE_TAILCALLS
23916 MUSTTAIL return InterpNext(S);
23917#else
23918 return true;
23919#endif
23920}
23921PRESERVE_NONE
23922static bool Interp_GTUint32(InterpState &S) {
23923 if (!GT<PT_Uint32>(S, S.PC)) return false;
23924#if USE_TAILCALLS
23925 MUSTTAIL return InterpNext(S);
23926#else
23927 return true;
23928#endif
23929}
23930PRESERVE_NONE
23931static bool Interp_GTSint64(InterpState &S) {
23932 if (!GT<PT_Sint64>(S, S.PC)) return false;
23933#if USE_TAILCALLS
23934 MUSTTAIL return InterpNext(S);
23935#else
23936 return true;
23937#endif
23938}
23939PRESERVE_NONE
23940static bool Interp_GTUint64(InterpState &S) {
23941 if (!GT<PT_Uint64>(S, S.PC)) return false;
23942#if USE_TAILCALLS
23943 MUSTTAIL return InterpNext(S);
23944#else
23945 return true;
23946#endif
23947}
23948PRESERVE_NONE
23949static bool Interp_GTIntAP(InterpState &S) {
23950 if (!GT<PT_IntAP>(S, S.PC)) return false;
23951#if USE_TAILCALLS
23952 MUSTTAIL return InterpNext(S);
23953#else
23954 return true;
23955#endif
23956}
23957PRESERVE_NONE
23958static bool Interp_GTIntAPS(InterpState &S) {
23959 if (!GT<PT_IntAPS>(S, S.PC)) return false;
23960#if USE_TAILCALLS
23961 MUSTTAIL return InterpNext(S);
23962#else
23963 return true;
23964#endif
23965}
23966PRESERVE_NONE
23967static bool Interp_GTBool(InterpState &S) {
23968 if (!GT<PT_Bool>(S, S.PC)) return false;
23969#if USE_TAILCALLS
23970 MUSTTAIL return InterpNext(S);
23971#else
23972 return true;
23973#endif
23974}
23975PRESERVE_NONE
23976static bool Interp_GTFixedPoint(InterpState &S) {
23977 if (!GT<PT_FixedPoint>(S, S.PC)) return false;
23978#if USE_TAILCALLS
23979 MUSTTAIL return InterpNext(S);
23980#else
23981 return true;
23982#endif
23983}
23984PRESERVE_NONE
23985static bool Interp_GTPtr(InterpState &S) {
23986 if (!GT<PT_Ptr>(S, S.PC)) return false;
23987#if USE_TAILCALLS
23988 MUSTTAIL return InterpNext(S);
23989#else
23990 return true;
23991#endif
23992}
23993PRESERVE_NONE
23994static bool Interp_GTFloat(InterpState &S) {
23995 if (!GT<PT_Float>(S, S.PC)) return false;
23996#if USE_TAILCALLS
23997 MUSTTAIL return InterpNext(S);
23998#else
23999 return true;
24000#endif
24001}
24002#endif
24003#ifdef GET_DISASM
24004case OP_GTSint8:
24005 Text.Op = PrintName("GTSint8");
24006 break;
24007case OP_GTUint8:
24008 Text.Op = PrintName("GTUint8");
24009 break;
24010case OP_GTSint16:
24011 Text.Op = PrintName("GTSint16");
24012 break;
24013case OP_GTUint16:
24014 Text.Op = PrintName("GTUint16");
24015 break;
24016case OP_GTSint32:
24017 Text.Op = PrintName("GTSint32");
24018 break;
24019case OP_GTUint32:
24020 Text.Op = PrintName("GTUint32");
24021 break;
24022case OP_GTSint64:
24023 Text.Op = PrintName("GTSint64");
24024 break;
24025case OP_GTUint64:
24026 Text.Op = PrintName("GTUint64");
24027 break;
24028case OP_GTIntAP:
24029 Text.Op = PrintName("GTIntAP");
24030 break;
24031case OP_GTIntAPS:
24032 Text.Op = PrintName("GTIntAPS");
24033 break;
24034case OP_GTBool:
24035 Text.Op = PrintName("GTBool");
24036 break;
24037case OP_GTFixedPoint:
24038 Text.Op = PrintName("GTFixedPoint");
24039 break;
24040case OP_GTPtr:
24041 Text.Op = PrintName("GTPtr");
24042 break;
24043case OP_GTFloat:
24044 Text.Op = PrintName("GTFloat");
24045 break;
24046#endif
24047#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24048bool emitGTSint8(SourceInfo);
24049bool emitGTUint8(SourceInfo);
24050bool emitGTSint16(SourceInfo);
24051bool emitGTUint16(SourceInfo);
24052bool emitGTSint32(SourceInfo);
24053bool emitGTUint32(SourceInfo);
24054bool emitGTSint64(SourceInfo);
24055bool emitGTUint64(SourceInfo);
24056bool emitGTIntAP(SourceInfo);
24057bool emitGTIntAPS(SourceInfo);
24058bool emitGTBool(SourceInfo);
24059bool emitGTFixedPoint(SourceInfo);
24060bool emitGTPtr(SourceInfo);
24061bool emitGTFloat(SourceInfo);
24062#endif
24063#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24064[[nodiscard]] bool emitGT(PrimType, SourceInfo I);
24065#endif
24066#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
24067bool
24068#if defined(GET_EVAL_IMPL)
24069EvalEmitter
24070#else
24071ByteCodeEmitter
24072#endif
24073::emitGT(PrimType T0, SourceInfo I) {
24074 switch (T0) {
24075 case PT_Sint8:
24076 return emitGTSint8(I);
24077 case PT_Uint8:
24078 return emitGTUint8(I);
24079 case PT_Sint16:
24080 return emitGTSint16(I);
24081 case PT_Uint16:
24082 return emitGTUint16(I);
24083 case PT_Sint32:
24084 return emitGTSint32(I);
24085 case PT_Uint32:
24086 return emitGTUint32(I);
24087 case PT_Sint64:
24088 return emitGTSint64(I);
24089 case PT_Uint64:
24090 return emitGTUint64(I);
24091 case PT_IntAP:
24092 return emitGTIntAP(I);
24093 case PT_IntAPS:
24094 return emitGTIntAPS(I);
24095 case PT_Bool:
24096 return emitGTBool(I);
24097 case PT_FixedPoint:
24098 return emitGTFixedPoint(I);
24099 case PT_Ptr:
24100 return emitGTPtr(I);
24101 case PT_Float:
24102 return emitGTFloat(I);
24103 default: llvm_unreachable("invalid type: emitGT");
24104 }
24105 llvm_unreachable("invalid enum value");
24106}
24107#endif
24108#ifdef GET_LINK_IMPL
24109bool ByteCodeEmitter::emitGTSint8(SourceInfo L) {
24110 return emitOp<>(OP_GTSint8, L);
24111}
24112bool ByteCodeEmitter::emitGTUint8(SourceInfo L) {
24113 return emitOp<>(OP_GTUint8, L);
24114}
24115bool ByteCodeEmitter::emitGTSint16(SourceInfo L) {
24116 return emitOp<>(OP_GTSint16, L);
24117}
24118bool ByteCodeEmitter::emitGTUint16(SourceInfo L) {
24119 return emitOp<>(OP_GTUint16, L);
24120}
24121bool ByteCodeEmitter::emitGTSint32(SourceInfo L) {
24122 return emitOp<>(OP_GTSint32, L);
24123}
24124bool ByteCodeEmitter::emitGTUint32(SourceInfo L) {
24125 return emitOp<>(OP_GTUint32, L);
24126}
24127bool ByteCodeEmitter::emitGTSint64(SourceInfo L) {
24128 return emitOp<>(OP_GTSint64, L);
24129}
24130bool ByteCodeEmitter::emitGTUint64(SourceInfo L) {
24131 return emitOp<>(OP_GTUint64, L);
24132}
24133bool ByteCodeEmitter::emitGTIntAP(SourceInfo L) {
24134 return emitOp<>(OP_GTIntAP, L);
24135}
24136bool ByteCodeEmitter::emitGTIntAPS(SourceInfo L) {
24137 return emitOp<>(OP_GTIntAPS, L);
24138}
24139bool ByteCodeEmitter::emitGTBool(SourceInfo L) {
24140 return emitOp<>(OP_GTBool, L);
24141}
24142bool ByteCodeEmitter::emitGTFixedPoint(SourceInfo L) {
24143 return emitOp<>(OP_GTFixedPoint, L);
24144}
24145bool ByteCodeEmitter::emitGTPtr(SourceInfo L) {
24146 return emitOp<>(OP_GTPtr, L);
24147}
24148bool ByteCodeEmitter::emitGTFloat(SourceInfo L) {
24149 return emitOp<>(OP_GTFloat, L);
24150}
24151#endif
24152#ifdef GET_EVAL_IMPL
24153bool EvalEmitter::emitGTSint8(SourceInfo L) {
24154 if (!isActive()) return true;
24155 CurrentSource = L;
24156 return GT<PT_Sint8>(S, CodePtr());
24157}
24158bool EvalEmitter::emitGTUint8(SourceInfo L) {
24159 if (!isActive()) return true;
24160 CurrentSource = L;
24161 return GT<PT_Uint8>(S, CodePtr());
24162}
24163bool EvalEmitter::emitGTSint16(SourceInfo L) {
24164 if (!isActive()) return true;
24165 CurrentSource = L;
24166 return GT<PT_Sint16>(S, CodePtr());
24167}
24168bool EvalEmitter::emitGTUint16(SourceInfo L) {
24169 if (!isActive()) return true;
24170 CurrentSource = L;
24171 return GT<PT_Uint16>(S, CodePtr());
24172}
24173bool EvalEmitter::emitGTSint32(SourceInfo L) {
24174 if (!isActive()) return true;
24175 CurrentSource = L;
24176 return GT<PT_Sint32>(S, CodePtr());
24177}
24178bool EvalEmitter::emitGTUint32(SourceInfo L) {
24179 if (!isActive()) return true;
24180 CurrentSource = L;
24181 return GT<PT_Uint32>(S, CodePtr());
24182}
24183bool EvalEmitter::emitGTSint64(SourceInfo L) {
24184 if (!isActive()) return true;
24185 CurrentSource = L;
24186 return GT<PT_Sint64>(S, CodePtr());
24187}
24188bool EvalEmitter::emitGTUint64(SourceInfo L) {
24189 if (!isActive()) return true;
24190 CurrentSource = L;
24191 return GT<PT_Uint64>(S, CodePtr());
24192}
24193bool EvalEmitter::emitGTIntAP(SourceInfo L) {
24194 if (!isActive()) return true;
24195 CurrentSource = L;
24196 return GT<PT_IntAP>(S, CodePtr());
24197}
24198bool EvalEmitter::emitGTIntAPS(SourceInfo L) {
24199 if (!isActive()) return true;
24200 CurrentSource = L;
24201 return GT<PT_IntAPS>(S, CodePtr());
24202}
24203bool EvalEmitter::emitGTBool(SourceInfo L) {
24204 if (!isActive()) return true;
24205 CurrentSource = L;
24206 return GT<PT_Bool>(S, CodePtr());
24207}
24208bool EvalEmitter::emitGTFixedPoint(SourceInfo L) {
24209 if (!isActive()) return true;
24210 CurrentSource = L;
24211 return GT<PT_FixedPoint>(S, CodePtr());
24212}
24213bool EvalEmitter::emitGTPtr(SourceInfo L) {
24214 if (!isActive()) return true;
24215 CurrentSource = L;
24216 return GT<PT_Ptr>(S, CodePtr());
24217}
24218bool EvalEmitter::emitGTFloat(SourceInfo L) {
24219 if (!isActive()) return true;
24220 CurrentSource = L;
24221 return GT<PT_Float>(S, CodePtr());
24222}
24223#endif
24224#ifdef GET_OPCODE_NAMES
24225OP_GetFieldSint8,
24226OP_GetFieldUint8,
24227OP_GetFieldSint16,
24228OP_GetFieldUint16,
24229OP_GetFieldSint32,
24230OP_GetFieldUint32,
24231OP_GetFieldSint64,
24232OP_GetFieldUint64,
24233OP_GetFieldIntAP,
24234OP_GetFieldIntAPS,
24235OP_GetFieldBool,
24236OP_GetFieldFixedPoint,
24237OP_GetFieldPtr,
24238OP_GetFieldMemberPtr,
24239OP_GetFieldFloat,
24240#endif
24241#ifdef GET_INTERPFN_LIST
24242&Interp_GetFieldSint8,
24243&Interp_GetFieldUint8,
24244&Interp_GetFieldSint16,
24245&Interp_GetFieldUint16,
24246&Interp_GetFieldSint32,
24247&Interp_GetFieldUint32,
24248&Interp_GetFieldSint64,
24249&Interp_GetFieldUint64,
24250&Interp_GetFieldIntAP,
24251&Interp_GetFieldIntAPS,
24252&Interp_GetFieldBool,
24253&Interp_GetFieldFixedPoint,
24254&Interp_GetFieldPtr,
24255&Interp_GetFieldMemberPtr,
24256&Interp_GetFieldFloat,
24257#endif
24258#ifdef GET_INTERPFN_DISPATCHERS
24259PRESERVE_NONE
24260static bool Interp_GetFieldSint8(InterpState &S) {
24261 {
24262 CodePtr OpPC = S.PC;
24263 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24264 if (!GetField<PT_Sint8>(S, OpPC, V0)) return false;
24265 }
24266#if USE_TAILCALLS
24267 MUSTTAIL return InterpNext(S);
24268#else
24269 return true;
24270#endif
24271}
24272PRESERVE_NONE
24273static bool Interp_GetFieldUint8(InterpState &S) {
24274 {
24275 CodePtr OpPC = S.PC;
24276 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24277 if (!GetField<PT_Uint8>(S, OpPC, V0)) return false;
24278 }
24279#if USE_TAILCALLS
24280 MUSTTAIL return InterpNext(S);
24281#else
24282 return true;
24283#endif
24284}
24285PRESERVE_NONE
24286static bool Interp_GetFieldSint16(InterpState &S) {
24287 {
24288 CodePtr OpPC = S.PC;
24289 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24290 if (!GetField<PT_Sint16>(S, OpPC, V0)) return false;
24291 }
24292#if USE_TAILCALLS
24293 MUSTTAIL return InterpNext(S);
24294#else
24295 return true;
24296#endif
24297}
24298PRESERVE_NONE
24299static bool Interp_GetFieldUint16(InterpState &S) {
24300 {
24301 CodePtr OpPC = S.PC;
24302 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24303 if (!GetField<PT_Uint16>(S, OpPC, V0)) return false;
24304 }
24305#if USE_TAILCALLS
24306 MUSTTAIL return InterpNext(S);
24307#else
24308 return true;
24309#endif
24310}
24311PRESERVE_NONE
24312static bool Interp_GetFieldSint32(InterpState &S) {
24313 {
24314 CodePtr OpPC = S.PC;
24315 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24316 if (!GetField<PT_Sint32>(S, OpPC, V0)) return false;
24317 }
24318#if USE_TAILCALLS
24319 MUSTTAIL return InterpNext(S);
24320#else
24321 return true;
24322#endif
24323}
24324PRESERVE_NONE
24325static bool Interp_GetFieldUint32(InterpState &S) {
24326 {
24327 CodePtr OpPC = S.PC;
24328 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24329 if (!GetField<PT_Uint32>(S, OpPC, V0)) return false;
24330 }
24331#if USE_TAILCALLS
24332 MUSTTAIL return InterpNext(S);
24333#else
24334 return true;
24335#endif
24336}
24337PRESERVE_NONE
24338static bool Interp_GetFieldSint64(InterpState &S) {
24339 {
24340 CodePtr OpPC = S.PC;
24341 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24342 if (!GetField<PT_Sint64>(S, OpPC, V0)) return false;
24343 }
24344#if USE_TAILCALLS
24345 MUSTTAIL return InterpNext(S);
24346#else
24347 return true;
24348#endif
24349}
24350PRESERVE_NONE
24351static bool Interp_GetFieldUint64(InterpState &S) {
24352 {
24353 CodePtr OpPC = S.PC;
24354 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24355 if (!GetField<PT_Uint64>(S, OpPC, V0)) return false;
24356 }
24357#if USE_TAILCALLS
24358 MUSTTAIL return InterpNext(S);
24359#else
24360 return true;
24361#endif
24362}
24363PRESERVE_NONE
24364static bool Interp_GetFieldIntAP(InterpState &S) {
24365 {
24366 CodePtr OpPC = S.PC;
24367 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24368 if (!GetField<PT_IntAP>(S, OpPC, V0)) return false;
24369 }
24370#if USE_TAILCALLS
24371 MUSTTAIL return InterpNext(S);
24372#else
24373 return true;
24374#endif
24375}
24376PRESERVE_NONE
24377static bool Interp_GetFieldIntAPS(InterpState &S) {
24378 {
24379 CodePtr OpPC = S.PC;
24380 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24381 if (!GetField<PT_IntAPS>(S, OpPC, V0)) return false;
24382 }
24383#if USE_TAILCALLS
24384 MUSTTAIL return InterpNext(S);
24385#else
24386 return true;
24387#endif
24388}
24389PRESERVE_NONE
24390static bool Interp_GetFieldBool(InterpState &S) {
24391 {
24392 CodePtr OpPC = S.PC;
24393 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24394 if (!GetField<PT_Bool>(S, OpPC, V0)) return false;
24395 }
24396#if USE_TAILCALLS
24397 MUSTTAIL return InterpNext(S);
24398#else
24399 return true;
24400#endif
24401}
24402PRESERVE_NONE
24403static bool Interp_GetFieldFixedPoint(InterpState &S) {
24404 {
24405 CodePtr OpPC = S.PC;
24406 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24407 if (!GetField<PT_FixedPoint>(S, OpPC, V0)) return false;
24408 }
24409#if USE_TAILCALLS
24410 MUSTTAIL return InterpNext(S);
24411#else
24412 return true;
24413#endif
24414}
24415PRESERVE_NONE
24416static bool Interp_GetFieldPtr(InterpState &S) {
24417 {
24418 CodePtr OpPC = S.PC;
24419 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24420 if (!GetField<PT_Ptr>(S, OpPC, V0)) return false;
24421 }
24422#if USE_TAILCALLS
24423 MUSTTAIL return InterpNext(S);
24424#else
24425 return true;
24426#endif
24427}
24428PRESERVE_NONE
24429static bool Interp_GetFieldMemberPtr(InterpState &S) {
24430 {
24431 CodePtr OpPC = S.PC;
24432 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24433 if (!GetField<PT_MemberPtr>(S, OpPC, V0)) return false;
24434 }
24435#if USE_TAILCALLS
24436 MUSTTAIL return InterpNext(S);
24437#else
24438 return true;
24439#endif
24440}
24441PRESERVE_NONE
24442static bool Interp_GetFieldFloat(InterpState &S) {
24443 {
24444 CodePtr OpPC = S.PC;
24445 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24446 if (!GetField<PT_Float>(S, OpPC, V0)) return false;
24447 }
24448#if USE_TAILCALLS
24449 MUSTTAIL return InterpNext(S);
24450#else
24451 return true;
24452#endif
24453}
24454#endif
24455#ifdef GET_DISASM
24456case OP_GetFieldSint8:
24457 Text.Op = PrintName("GetFieldSint8");
24458 Text.Args.push_back(printArg<uint32_t>(PC));
24459 break;
24460case OP_GetFieldUint8:
24461 Text.Op = PrintName("GetFieldUint8");
24462 Text.Args.push_back(printArg<uint32_t>(PC));
24463 break;
24464case OP_GetFieldSint16:
24465 Text.Op = PrintName("GetFieldSint16");
24466 Text.Args.push_back(printArg<uint32_t>(PC));
24467 break;
24468case OP_GetFieldUint16:
24469 Text.Op = PrintName("GetFieldUint16");
24470 Text.Args.push_back(printArg<uint32_t>(PC));
24471 break;
24472case OP_GetFieldSint32:
24473 Text.Op = PrintName("GetFieldSint32");
24474 Text.Args.push_back(printArg<uint32_t>(PC));
24475 break;
24476case OP_GetFieldUint32:
24477 Text.Op = PrintName("GetFieldUint32");
24478 Text.Args.push_back(printArg<uint32_t>(PC));
24479 break;
24480case OP_GetFieldSint64:
24481 Text.Op = PrintName("GetFieldSint64");
24482 Text.Args.push_back(printArg<uint32_t>(PC));
24483 break;
24484case OP_GetFieldUint64:
24485 Text.Op = PrintName("GetFieldUint64");
24486 Text.Args.push_back(printArg<uint32_t>(PC));
24487 break;
24488case OP_GetFieldIntAP:
24489 Text.Op = PrintName("GetFieldIntAP");
24490 Text.Args.push_back(printArg<uint32_t>(PC));
24491 break;
24492case OP_GetFieldIntAPS:
24493 Text.Op = PrintName("GetFieldIntAPS");
24494 Text.Args.push_back(printArg<uint32_t>(PC));
24495 break;
24496case OP_GetFieldBool:
24497 Text.Op = PrintName("GetFieldBool");
24498 Text.Args.push_back(printArg<uint32_t>(PC));
24499 break;
24500case OP_GetFieldFixedPoint:
24501 Text.Op = PrintName("GetFieldFixedPoint");
24502 Text.Args.push_back(printArg<uint32_t>(PC));
24503 break;
24504case OP_GetFieldPtr:
24505 Text.Op = PrintName("GetFieldPtr");
24506 Text.Args.push_back(printArg<uint32_t>(PC));
24507 break;
24508case OP_GetFieldMemberPtr:
24509 Text.Op = PrintName("GetFieldMemberPtr");
24510 Text.Args.push_back(printArg<uint32_t>(PC));
24511 break;
24512case OP_GetFieldFloat:
24513 Text.Op = PrintName("GetFieldFloat");
24514 Text.Args.push_back(printArg<uint32_t>(PC));
24515 break;
24516#endif
24517#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24518bool emitGetFieldSint8( uint32_t , SourceInfo);
24519bool emitGetFieldUint8( uint32_t , SourceInfo);
24520bool emitGetFieldSint16( uint32_t , SourceInfo);
24521bool emitGetFieldUint16( uint32_t , SourceInfo);
24522bool emitGetFieldSint32( uint32_t , SourceInfo);
24523bool emitGetFieldUint32( uint32_t , SourceInfo);
24524bool emitGetFieldSint64( uint32_t , SourceInfo);
24525bool emitGetFieldUint64( uint32_t , SourceInfo);
24526bool emitGetFieldIntAP( uint32_t , SourceInfo);
24527bool emitGetFieldIntAPS( uint32_t , SourceInfo);
24528bool emitGetFieldBool( uint32_t , SourceInfo);
24529bool emitGetFieldFixedPoint( uint32_t , SourceInfo);
24530bool emitGetFieldPtr( uint32_t , SourceInfo);
24531bool emitGetFieldMemberPtr( uint32_t , SourceInfo);
24532bool emitGetFieldFloat( uint32_t , SourceInfo);
24533#endif
24534#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24535[[nodiscard]] bool emitGetField(PrimType, uint32_t, SourceInfo I);
24536#endif
24537#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
24538bool
24539#if defined(GET_EVAL_IMPL)
24540EvalEmitter
24541#else
24542ByteCodeEmitter
24543#endif
24544::emitGetField(PrimType T0, uint32_t A0, SourceInfo I) {
24545 switch (T0) {
24546 case PT_Sint8:
24547 return emitGetFieldSint8(A0, I);
24548 case PT_Uint8:
24549 return emitGetFieldUint8(A0, I);
24550 case PT_Sint16:
24551 return emitGetFieldSint16(A0, I);
24552 case PT_Uint16:
24553 return emitGetFieldUint16(A0, I);
24554 case PT_Sint32:
24555 return emitGetFieldSint32(A0, I);
24556 case PT_Uint32:
24557 return emitGetFieldUint32(A0, I);
24558 case PT_Sint64:
24559 return emitGetFieldSint64(A0, I);
24560 case PT_Uint64:
24561 return emitGetFieldUint64(A0, I);
24562 case PT_IntAP:
24563 return emitGetFieldIntAP(A0, I);
24564 case PT_IntAPS:
24565 return emitGetFieldIntAPS(A0, I);
24566 case PT_Bool:
24567 return emitGetFieldBool(A0, I);
24568 case PT_FixedPoint:
24569 return emitGetFieldFixedPoint(A0, I);
24570 case PT_Ptr:
24571 return emitGetFieldPtr(A0, I);
24572 case PT_MemberPtr:
24573 return emitGetFieldMemberPtr(A0, I);
24574 case PT_Float:
24575 return emitGetFieldFloat(A0, I);
24576 }
24577 llvm_unreachable("invalid enum value");
24578}
24579#endif
24580#ifdef GET_LINK_IMPL
24581bool ByteCodeEmitter::emitGetFieldSint8( uint32_t A0, SourceInfo L) {
24582 return emitOp<uint32_t>(OP_GetFieldSint8, A0, L);
24583}
24584bool ByteCodeEmitter::emitGetFieldUint8( uint32_t A0, SourceInfo L) {
24585 return emitOp<uint32_t>(OP_GetFieldUint8, A0, L);
24586}
24587bool ByteCodeEmitter::emitGetFieldSint16( uint32_t A0, SourceInfo L) {
24588 return emitOp<uint32_t>(OP_GetFieldSint16, A0, L);
24589}
24590bool ByteCodeEmitter::emitGetFieldUint16( uint32_t A0, SourceInfo L) {
24591 return emitOp<uint32_t>(OP_GetFieldUint16, A0, L);
24592}
24593bool ByteCodeEmitter::emitGetFieldSint32( uint32_t A0, SourceInfo L) {
24594 return emitOp<uint32_t>(OP_GetFieldSint32, A0, L);
24595}
24596bool ByteCodeEmitter::emitGetFieldUint32( uint32_t A0, SourceInfo L) {
24597 return emitOp<uint32_t>(OP_GetFieldUint32, A0, L);
24598}
24599bool ByteCodeEmitter::emitGetFieldSint64( uint32_t A0, SourceInfo L) {
24600 return emitOp<uint32_t>(OP_GetFieldSint64, A0, L);
24601}
24602bool ByteCodeEmitter::emitGetFieldUint64( uint32_t A0, SourceInfo L) {
24603 return emitOp<uint32_t>(OP_GetFieldUint64, A0, L);
24604}
24605bool ByteCodeEmitter::emitGetFieldIntAP( uint32_t A0, SourceInfo L) {
24606 return emitOp<uint32_t>(OP_GetFieldIntAP, A0, L);
24607}
24608bool ByteCodeEmitter::emitGetFieldIntAPS( uint32_t A0, SourceInfo L) {
24609 return emitOp<uint32_t>(OP_GetFieldIntAPS, A0, L);
24610}
24611bool ByteCodeEmitter::emitGetFieldBool( uint32_t A0, SourceInfo L) {
24612 return emitOp<uint32_t>(OP_GetFieldBool, A0, L);
24613}
24614bool ByteCodeEmitter::emitGetFieldFixedPoint( uint32_t A0, SourceInfo L) {
24615 return emitOp<uint32_t>(OP_GetFieldFixedPoint, A0, L);
24616}
24617bool ByteCodeEmitter::emitGetFieldPtr( uint32_t A0, SourceInfo L) {
24618 return emitOp<uint32_t>(OP_GetFieldPtr, A0, L);
24619}
24620bool ByteCodeEmitter::emitGetFieldMemberPtr( uint32_t A0, SourceInfo L) {
24621 return emitOp<uint32_t>(OP_GetFieldMemberPtr, A0, L);
24622}
24623bool ByteCodeEmitter::emitGetFieldFloat( uint32_t A0, SourceInfo L) {
24624 return emitOp<uint32_t>(OP_GetFieldFloat, A0, L);
24625}
24626#endif
24627#ifdef GET_EVAL_IMPL
24628bool EvalEmitter::emitGetFieldSint8( uint32_t A0, SourceInfo L) {
24629 if (!isActive()) return true;
24630 CurrentSource = L;
24631 return GetField<PT_Sint8>(S, CodePtr(), A0);
24632}
24633bool EvalEmitter::emitGetFieldUint8( uint32_t A0, SourceInfo L) {
24634 if (!isActive()) return true;
24635 CurrentSource = L;
24636 return GetField<PT_Uint8>(S, CodePtr(), A0);
24637}
24638bool EvalEmitter::emitGetFieldSint16( uint32_t A0, SourceInfo L) {
24639 if (!isActive()) return true;
24640 CurrentSource = L;
24641 return GetField<PT_Sint16>(S, CodePtr(), A0);
24642}
24643bool EvalEmitter::emitGetFieldUint16( uint32_t A0, SourceInfo L) {
24644 if (!isActive()) return true;
24645 CurrentSource = L;
24646 return GetField<PT_Uint16>(S, CodePtr(), A0);
24647}
24648bool EvalEmitter::emitGetFieldSint32( uint32_t A0, SourceInfo L) {
24649 if (!isActive()) return true;
24650 CurrentSource = L;
24651 return GetField<PT_Sint32>(S, CodePtr(), A0);
24652}
24653bool EvalEmitter::emitGetFieldUint32( uint32_t A0, SourceInfo L) {
24654 if (!isActive()) return true;
24655 CurrentSource = L;
24656 return GetField<PT_Uint32>(S, CodePtr(), A0);
24657}
24658bool EvalEmitter::emitGetFieldSint64( uint32_t A0, SourceInfo L) {
24659 if (!isActive()) return true;
24660 CurrentSource = L;
24661 return GetField<PT_Sint64>(S, CodePtr(), A0);
24662}
24663bool EvalEmitter::emitGetFieldUint64( uint32_t A0, SourceInfo L) {
24664 if (!isActive()) return true;
24665 CurrentSource = L;
24666 return GetField<PT_Uint64>(S, CodePtr(), A0);
24667}
24668bool EvalEmitter::emitGetFieldIntAP( uint32_t A0, SourceInfo L) {
24669 if (!isActive()) return true;
24670 CurrentSource = L;
24671 return GetField<PT_IntAP>(S, CodePtr(), A0);
24672}
24673bool EvalEmitter::emitGetFieldIntAPS( uint32_t A0, SourceInfo L) {
24674 if (!isActive()) return true;
24675 CurrentSource = L;
24676 return GetField<PT_IntAPS>(S, CodePtr(), A0);
24677}
24678bool EvalEmitter::emitGetFieldBool( uint32_t A0, SourceInfo L) {
24679 if (!isActive()) return true;
24680 CurrentSource = L;
24681 return GetField<PT_Bool>(S, CodePtr(), A0);
24682}
24683bool EvalEmitter::emitGetFieldFixedPoint( uint32_t A0, SourceInfo L) {
24684 if (!isActive()) return true;
24685 CurrentSource = L;
24686 return GetField<PT_FixedPoint>(S, CodePtr(), A0);
24687}
24688bool EvalEmitter::emitGetFieldPtr( uint32_t A0, SourceInfo L) {
24689 if (!isActive()) return true;
24690 CurrentSource = L;
24691 return GetField<PT_Ptr>(S, CodePtr(), A0);
24692}
24693bool EvalEmitter::emitGetFieldMemberPtr( uint32_t A0, SourceInfo L) {
24694 if (!isActive()) return true;
24695 CurrentSource = L;
24696 return GetField<PT_MemberPtr>(S, CodePtr(), A0);
24697}
24698bool EvalEmitter::emitGetFieldFloat( uint32_t A0, SourceInfo L) {
24699 if (!isActive()) return true;
24700 CurrentSource = L;
24701 return GetField<PT_Float>(S, CodePtr(), A0);
24702}
24703#endif
24704#ifdef GET_OPCODE_NAMES
24705OP_GetFieldPopSint8,
24706OP_GetFieldPopUint8,
24707OP_GetFieldPopSint16,
24708OP_GetFieldPopUint16,
24709OP_GetFieldPopSint32,
24710OP_GetFieldPopUint32,
24711OP_GetFieldPopSint64,
24712OP_GetFieldPopUint64,
24713OP_GetFieldPopIntAP,
24714OP_GetFieldPopIntAPS,
24715OP_GetFieldPopBool,
24716OP_GetFieldPopFixedPoint,
24717OP_GetFieldPopPtr,
24718OP_GetFieldPopMemberPtr,
24719OP_GetFieldPopFloat,
24720#endif
24721#ifdef GET_INTERPFN_LIST
24722&Interp_GetFieldPopSint8,
24723&Interp_GetFieldPopUint8,
24724&Interp_GetFieldPopSint16,
24725&Interp_GetFieldPopUint16,
24726&Interp_GetFieldPopSint32,
24727&Interp_GetFieldPopUint32,
24728&Interp_GetFieldPopSint64,
24729&Interp_GetFieldPopUint64,
24730&Interp_GetFieldPopIntAP,
24731&Interp_GetFieldPopIntAPS,
24732&Interp_GetFieldPopBool,
24733&Interp_GetFieldPopFixedPoint,
24734&Interp_GetFieldPopPtr,
24735&Interp_GetFieldPopMemberPtr,
24736&Interp_GetFieldPopFloat,
24737#endif
24738#ifdef GET_INTERPFN_DISPATCHERS
24739PRESERVE_NONE
24740static bool Interp_GetFieldPopSint8(InterpState &S) {
24741 {
24742 CodePtr OpPC = S.PC;
24743 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24744 if (!GetFieldPop<PT_Sint8>(S, OpPC, V0)) return false;
24745 }
24746#if USE_TAILCALLS
24747 MUSTTAIL return InterpNext(S);
24748#else
24749 return true;
24750#endif
24751}
24752PRESERVE_NONE
24753static bool Interp_GetFieldPopUint8(InterpState &S) {
24754 {
24755 CodePtr OpPC = S.PC;
24756 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24757 if (!GetFieldPop<PT_Uint8>(S, OpPC, V0)) return false;
24758 }
24759#if USE_TAILCALLS
24760 MUSTTAIL return InterpNext(S);
24761#else
24762 return true;
24763#endif
24764}
24765PRESERVE_NONE
24766static bool Interp_GetFieldPopSint16(InterpState &S) {
24767 {
24768 CodePtr OpPC = S.PC;
24769 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24770 if (!GetFieldPop<PT_Sint16>(S, OpPC, V0)) return false;
24771 }
24772#if USE_TAILCALLS
24773 MUSTTAIL return InterpNext(S);
24774#else
24775 return true;
24776#endif
24777}
24778PRESERVE_NONE
24779static bool Interp_GetFieldPopUint16(InterpState &S) {
24780 {
24781 CodePtr OpPC = S.PC;
24782 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24783 if (!GetFieldPop<PT_Uint16>(S, OpPC, V0)) return false;
24784 }
24785#if USE_TAILCALLS
24786 MUSTTAIL return InterpNext(S);
24787#else
24788 return true;
24789#endif
24790}
24791PRESERVE_NONE
24792static bool Interp_GetFieldPopSint32(InterpState &S) {
24793 {
24794 CodePtr OpPC = S.PC;
24795 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24796 if (!GetFieldPop<PT_Sint32>(S, OpPC, V0)) return false;
24797 }
24798#if USE_TAILCALLS
24799 MUSTTAIL return InterpNext(S);
24800#else
24801 return true;
24802#endif
24803}
24804PRESERVE_NONE
24805static bool Interp_GetFieldPopUint32(InterpState &S) {
24806 {
24807 CodePtr OpPC = S.PC;
24808 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24809 if (!GetFieldPop<PT_Uint32>(S, OpPC, V0)) return false;
24810 }
24811#if USE_TAILCALLS
24812 MUSTTAIL return InterpNext(S);
24813#else
24814 return true;
24815#endif
24816}
24817PRESERVE_NONE
24818static bool Interp_GetFieldPopSint64(InterpState &S) {
24819 {
24820 CodePtr OpPC = S.PC;
24821 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24822 if (!GetFieldPop<PT_Sint64>(S, OpPC, V0)) return false;
24823 }
24824#if USE_TAILCALLS
24825 MUSTTAIL return InterpNext(S);
24826#else
24827 return true;
24828#endif
24829}
24830PRESERVE_NONE
24831static bool Interp_GetFieldPopUint64(InterpState &S) {
24832 {
24833 CodePtr OpPC = S.PC;
24834 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24835 if (!GetFieldPop<PT_Uint64>(S, OpPC, V0)) return false;
24836 }
24837#if USE_TAILCALLS
24838 MUSTTAIL return InterpNext(S);
24839#else
24840 return true;
24841#endif
24842}
24843PRESERVE_NONE
24844static bool Interp_GetFieldPopIntAP(InterpState &S) {
24845 {
24846 CodePtr OpPC = S.PC;
24847 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24848 if (!GetFieldPop<PT_IntAP>(S, OpPC, V0)) return false;
24849 }
24850#if USE_TAILCALLS
24851 MUSTTAIL return InterpNext(S);
24852#else
24853 return true;
24854#endif
24855}
24856PRESERVE_NONE
24857static bool Interp_GetFieldPopIntAPS(InterpState &S) {
24858 {
24859 CodePtr OpPC = S.PC;
24860 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24861 if (!GetFieldPop<PT_IntAPS>(S, OpPC, V0)) return false;
24862 }
24863#if USE_TAILCALLS
24864 MUSTTAIL return InterpNext(S);
24865#else
24866 return true;
24867#endif
24868}
24869PRESERVE_NONE
24870static bool Interp_GetFieldPopBool(InterpState &S) {
24871 {
24872 CodePtr OpPC = S.PC;
24873 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24874 if (!GetFieldPop<PT_Bool>(S, OpPC, V0)) return false;
24875 }
24876#if USE_TAILCALLS
24877 MUSTTAIL return InterpNext(S);
24878#else
24879 return true;
24880#endif
24881}
24882PRESERVE_NONE
24883static bool Interp_GetFieldPopFixedPoint(InterpState &S) {
24884 {
24885 CodePtr OpPC = S.PC;
24886 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24887 if (!GetFieldPop<PT_FixedPoint>(S, OpPC, V0)) return false;
24888 }
24889#if USE_TAILCALLS
24890 MUSTTAIL return InterpNext(S);
24891#else
24892 return true;
24893#endif
24894}
24895PRESERVE_NONE
24896static bool Interp_GetFieldPopPtr(InterpState &S) {
24897 {
24898 CodePtr OpPC = S.PC;
24899 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24900 if (!GetFieldPop<PT_Ptr>(S, OpPC, V0)) return false;
24901 }
24902#if USE_TAILCALLS
24903 MUSTTAIL return InterpNext(S);
24904#else
24905 return true;
24906#endif
24907}
24908PRESERVE_NONE
24909static bool Interp_GetFieldPopMemberPtr(InterpState &S) {
24910 {
24911 CodePtr OpPC = S.PC;
24912 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24913 if (!GetFieldPop<PT_MemberPtr>(S, OpPC, V0)) return false;
24914 }
24915#if USE_TAILCALLS
24916 MUSTTAIL return InterpNext(S);
24917#else
24918 return true;
24919#endif
24920}
24921PRESERVE_NONE
24922static bool Interp_GetFieldPopFloat(InterpState &S) {
24923 {
24924 CodePtr OpPC = S.PC;
24925 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24926 if (!GetFieldPop<PT_Float>(S, OpPC, V0)) return false;
24927 }
24928#if USE_TAILCALLS
24929 MUSTTAIL return InterpNext(S);
24930#else
24931 return true;
24932#endif
24933}
24934#endif
24935#ifdef GET_DISASM
24936case OP_GetFieldPopSint8:
24937 Text.Op = PrintName("GetFieldPopSint8");
24938 Text.Args.push_back(printArg<uint32_t>(PC));
24939 break;
24940case OP_GetFieldPopUint8:
24941 Text.Op = PrintName("GetFieldPopUint8");
24942 Text.Args.push_back(printArg<uint32_t>(PC));
24943 break;
24944case OP_GetFieldPopSint16:
24945 Text.Op = PrintName("GetFieldPopSint16");
24946 Text.Args.push_back(printArg<uint32_t>(PC));
24947 break;
24948case OP_GetFieldPopUint16:
24949 Text.Op = PrintName("GetFieldPopUint16");
24950 Text.Args.push_back(printArg<uint32_t>(PC));
24951 break;
24952case OP_GetFieldPopSint32:
24953 Text.Op = PrintName("GetFieldPopSint32");
24954 Text.Args.push_back(printArg<uint32_t>(PC));
24955 break;
24956case OP_GetFieldPopUint32:
24957 Text.Op = PrintName("GetFieldPopUint32");
24958 Text.Args.push_back(printArg<uint32_t>(PC));
24959 break;
24960case OP_GetFieldPopSint64:
24961 Text.Op = PrintName("GetFieldPopSint64");
24962 Text.Args.push_back(printArg<uint32_t>(PC));
24963 break;
24964case OP_GetFieldPopUint64:
24965 Text.Op = PrintName("GetFieldPopUint64");
24966 Text.Args.push_back(printArg<uint32_t>(PC));
24967 break;
24968case OP_GetFieldPopIntAP:
24969 Text.Op = PrintName("GetFieldPopIntAP");
24970 Text.Args.push_back(printArg<uint32_t>(PC));
24971 break;
24972case OP_GetFieldPopIntAPS:
24973 Text.Op = PrintName("GetFieldPopIntAPS");
24974 Text.Args.push_back(printArg<uint32_t>(PC));
24975 break;
24976case OP_GetFieldPopBool:
24977 Text.Op = PrintName("GetFieldPopBool");
24978 Text.Args.push_back(printArg<uint32_t>(PC));
24979 break;
24980case OP_GetFieldPopFixedPoint:
24981 Text.Op = PrintName("GetFieldPopFixedPoint");
24982 Text.Args.push_back(printArg<uint32_t>(PC));
24983 break;
24984case OP_GetFieldPopPtr:
24985 Text.Op = PrintName("GetFieldPopPtr");
24986 Text.Args.push_back(printArg<uint32_t>(PC));
24987 break;
24988case OP_GetFieldPopMemberPtr:
24989 Text.Op = PrintName("GetFieldPopMemberPtr");
24990 Text.Args.push_back(printArg<uint32_t>(PC));
24991 break;
24992case OP_GetFieldPopFloat:
24993 Text.Op = PrintName("GetFieldPopFloat");
24994 Text.Args.push_back(printArg<uint32_t>(PC));
24995 break;
24996#endif
24997#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24998bool emitGetFieldPopSint8( uint32_t , SourceInfo);
24999bool emitGetFieldPopUint8( uint32_t , SourceInfo);
25000bool emitGetFieldPopSint16( uint32_t , SourceInfo);
25001bool emitGetFieldPopUint16( uint32_t , SourceInfo);
25002bool emitGetFieldPopSint32( uint32_t , SourceInfo);
25003bool emitGetFieldPopUint32( uint32_t , SourceInfo);
25004bool emitGetFieldPopSint64( uint32_t , SourceInfo);
25005bool emitGetFieldPopUint64( uint32_t , SourceInfo);
25006bool emitGetFieldPopIntAP( uint32_t , SourceInfo);
25007bool emitGetFieldPopIntAPS( uint32_t , SourceInfo);
25008bool emitGetFieldPopBool( uint32_t , SourceInfo);
25009bool emitGetFieldPopFixedPoint( uint32_t , SourceInfo);
25010bool emitGetFieldPopPtr( uint32_t , SourceInfo);
25011bool emitGetFieldPopMemberPtr( uint32_t , SourceInfo);
25012bool emitGetFieldPopFloat( uint32_t , SourceInfo);
25013#endif
25014#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25015[[nodiscard]] bool emitGetFieldPop(PrimType, uint32_t, SourceInfo I);
25016#endif
25017#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
25018bool
25019#if defined(GET_EVAL_IMPL)
25020EvalEmitter
25021#else
25022ByteCodeEmitter
25023#endif
25024::emitGetFieldPop(PrimType T0, uint32_t A0, SourceInfo I) {
25025 switch (T0) {
25026 case PT_Sint8:
25027 return emitGetFieldPopSint8(A0, I);
25028 case PT_Uint8:
25029 return emitGetFieldPopUint8(A0, I);
25030 case PT_Sint16:
25031 return emitGetFieldPopSint16(A0, I);
25032 case PT_Uint16:
25033 return emitGetFieldPopUint16(A0, I);
25034 case PT_Sint32:
25035 return emitGetFieldPopSint32(A0, I);
25036 case PT_Uint32:
25037 return emitGetFieldPopUint32(A0, I);
25038 case PT_Sint64:
25039 return emitGetFieldPopSint64(A0, I);
25040 case PT_Uint64:
25041 return emitGetFieldPopUint64(A0, I);
25042 case PT_IntAP:
25043 return emitGetFieldPopIntAP(A0, I);
25044 case PT_IntAPS:
25045 return emitGetFieldPopIntAPS(A0, I);
25046 case PT_Bool:
25047 return emitGetFieldPopBool(A0, I);
25048 case PT_FixedPoint:
25049 return emitGetFieldPopFixedPoint(A0, I);
25050 case PT_Ptr:
25051 return emitGetFieldPopPtr(A0, I);
25052 case PT_MemberPtr:
25053 return emitGetFieldPopMemberPtr(A0, I);
25054 case PT_Float:
25055 return emitGetFieldPopFloat(A0, I);
25056 }
25057 llvm_unreachable("invalid enum value");
25058}
25059#endif
25060#ifdef GET_LINK_IMPL
25061bool ByteCodeEmitter::emitGetFieldPopSint8( uint32_t A0, SourceInfo L) {
25062 return emitOp<uint32_t>(OP_GetFieldPopSint8, A0, L);
25063}
25064bool ByteCodeEmitter::emitGetFieldPopUint8( uint32_t A0, SourceInfo L) {
25065 return emitOp<uint32_t>(OP_GetFieldPopUint8, A0, L);
25066}
25067bool ByteCodeEmitter::emitGetFieldPopSint16( uint32_t A0, SourceInfo L) {
25068 return emitOp<uint32_t>(OP_GetFieldPopSint16, A0, L);
25069}
25070bool ByteCodeEmitter::emitGetFieldPopUint16( uint32_t A0, SourceInfo L) {
25071 return emitOp<uint32_t>(OP_GetFieldPopUint16, A0, L);
25072}
25073bool ByteCodeEmitter::emitGetFieldPopSint32( uint32_t A0, SourceInfo L) {
25074 return emitOp<uint32_t>(OP_GetFieldPopSint32, A0, L);
25075}
25076bool ByteCodeEmitter::emitGetFieldPopUint32( uint32_t A0, SourceInfo L) {
25077 return emitOp<uint32_t>(OP_GetFieldPopUint32, A0, L);
25078}
25079bool ByteCodeEmitter::emitGetFieldPopSint64( uint32_t A0, SourceInfo L) {
25080 return emitOp<uint32_t>(OP_GetFieldPopSint64, A0, L);
25081}
25082bool ByteCodeEmitter::emitGetFieldPopUint64( uint32_t A0, SourceInfo L) {
25083 return emitOp<uint32_t>(OP_GetFieldPopUint64, A0, L);
25084}
25085bool ByteCodeEmitter::emitGetFieldPopIntAP( uint32_t A0, SourceInfo L) {
25086 return emitOp<uint32_t>(OP_GetFieldPopIntAP, A0, L);
25087}
25088bool ByteCodeEmitter::emitGetFieldPopIntAPS( uint32_t A0, SourceInfo L) {
25089 return emitOp<uint32_t>(OP_GetFieldPopIntAPS, A0, L);
25090}
25091bool ByteCodeEmitter::emitGetFieldPopBool( uint32_t A0, SourceInfo L) {
25092 return emitOp<uint32_t>(OP_GetFieldPopBool, A0, L);
25093}
25094bool ByteCodeEmitter::emitGetFieldPopFixedPoint( uint32_t A0, SourceInfo L) {
25095 return emitOp<uint32_t>(OP_GetFieldPopFixedPoint, A0, L);
25096}
25097bool ByteCodeEmitter::emitGetFieldPopPtr( uint32_t A0, SourceInfo L) {
25098 return emitOp<uint32_t>(OP_GetFieldPopPtr, A0, L);
25099}
25100bool ByteCodeEmitter::emitGetFieldPopMemberPtr( uint32_t A0, SourceInfo L) {
25101 return emitOp<uint32_t>(OP_GetFieldPopMemberPtr, A0, L);
25102}
25103bool ByteCodeEmitter::emitGetFieldPopFloat( uint32_t A0, SourceInfo L) {
25104 return emitOp<uint32_t>(OP_GetFieldPopFloat, A0, L);
25105}
25106#endif
25107#ifdef GET_EVAL_IMPL
25108bool EvalEmitter::emitGetFieldPopSint8( uint32_t A0, SourceInfo L) {
25109 if (!isActive()) return true;
25110 CurrentSource = L;
25111 return GetFieldPop<PT_Sint8>(S, CodePtr(), A0);
25112}
25113bool EvalEmitter::emitGetFieldPopUint8( uint32_t A0, SourceInfo L) {
25114 if (!isActive()) return true;
25115 CurrentSource = L;
25116 return GetFieldPop<PT_Uint8>(S, CodePtr(), A0);
25117}
25118bool EvalEmitter::emitGetFieldPopSint16( uint32_t A0, SourceInfo L) {
25119 if (!isActive()) return true;
25120 CurrentSource = L;
25121 return GetFieldPop<PT_Sint16>(S, CodePtr(), A0);
25122}
25123bool EvalEmitter::emitGetFieldPopUint16( uint32_t A0, SourceInfo L) {
25124 if (!isActive()) return true;
25125 CurrentSource = L;
25126 return GetFieldPop<PT_Uint16>(S, CodePtr(), A0);
25127}
25128bool EvalEmitter::emitGetFieldPopSint32( uint32_t A0, SourceInfo L) {
25129 if (!isActive()) return true;
25130 CurrentSource = L;
25131 return GetFieldPop<PT_Sint32>(S, CodePtr(), A0);
25132}
25133bool EvalEmitter::emitGetFieldPopUint32( uint32_t A0, SourceInfo L) {
25134 if (!isActive()) return true;
25135 CurrentSource = L;
25136 return GetFieldPop<PT_Uint32>(S, CodePtr(), A0);
25137}
25138bool EvalEmitter::emitGetFieldPopSint64( uint32_t A0, SourceInfo L) {
25139 if (!isActive()) return true;
25140 CurrentSource = L;
25141 return GetFieldPop<PT_Sint64>(S, CodePtr(), A0);
25142}
25143bool EvalEmitter::emitGetFieldPopUint64( uint32_t A0, SourceInfo L) {
25144 if (!isActive()) return true;
25145 CurrentSource = L;
25146 return GetFieldPop<PT_Uint64>(S, CodePtr(), A0);
25147}
25148bool EvalEmitter::emitGetFieldPopIntAP( uint32_t A0, SourceInfo L) {
25149 if (!isActive()) return true;
25150 CurrentSource = L;
25151 return GetFieldPop<PT_IntAP>(S, CodePtr(), A0);
25152}
25153bool EvalEmitter::emitGetFieldPopIntAPS( uint32_t A0, SourceInfo L) {
25154 if (!isActive()) return true;
25155 CurrentSource = L;
25156 return GetFieldPop<PT_IntAPS>(S, CodePtr(), A0);
25157}
25158bool EvalEmitter::emitGetFieldPopBool( uint32_t A0, SourceInfo L) {
25159 if (!isActive()) return true;
25160 CurrentSource = L;
25161 return GetFieldPop<PT_Bool>(S, CodePtr(), A0);
25162}
25163bool EvalEmitter::emitGetFieldPopFixedPoint( uint32_t A0, SourceInfo L) {
25164 if (!isActive()) return true;
25165 CurrentSource = L;
25166 return GetFieldPop<PT_FixedPoint>(S, CodePtr(), A0);
25167}
25168bool EvalEmitter::emitGetFieldPopPtr( uint32_t A0, SourceInfo L) {
25169 if (!isActive()) return true;
25170 CurrentSource = L;
25171 return GetFieldPop<PT_Ptr>(S, CodePtr(), A0);
25172}
25173bool EvalEmitter::emitGetFieldPopMemberPtr( uint32_t A0, SourceInfo L) {
25174 if (!isActive()) return true;
25175 CurrentSource = L;
25176 return GetFieldPop<PT_MemberPtr>(S, CodePtr(), A0);
25177}
25178bool EvalEmitter::emitGetFieldPopFloat( uint32_t A0, SourceInfo L) {
25179 if (!isActive()) return true;
25180 CurrentSource = L;
25181 return GetFieldPop<PT_Float>(S, CodePtr(), A0);
25182}
25183#endif
25184#ifdef GET_OPCODE_NAMES
25185OP_GetFnPtr,
25186#endif
25187#ifdef GET_INTERPFN_LIST
25188&Interp_GetFnPtr,
25189#endif
25190#ifdef GET_INTERPFN_DISPATCHERS
25191PRESERVE_NONE
25192static bool Interp_GetFnPtr(InterpState &S) {
25193 {
25194 const auto V0 = ReadArg<const Function *>(S, S.PC);
25195 GetFnPtr(S, V0);
25196 }
25197#if USE_TAILCALLS
25198 MUSTTAIL return InterpNext(S);
25199#else
25200 return true;
25201#endif
25202}
25203#endif
25204#ifdef GET_DISASM
25205case OP_GetFnPtr:
25206 Text.Op = PrintName("GetFnPtr");
25207 Text.Args.push_back(printArg<const Function *>(PC));
25208 break;
25209#endif
25210#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25211bool emitGetFnPtr( const Function * , SourceInfo);
25212#endif
25213#ifdef GET_LINK_IMPL
25214bool ByteCodeEmitter::emitGetFnPtr( const Function * A0, SourceInfo L) {
25215 return emitOp<const Function *>(OP_GetFnPtr, A0, L);
25216}
25217#endif
25218#ifdef GET_EVAL_IMPL
25219bool EvalEmitter::emitGetFnPtr( const Function * A0, SourceInfo L) {
25220 if (!isActive()) return true;
25221 CurrentSource = L;
25222 return GetFnPtr(S, A0);
25223}
25224#endif
25225#ifdef GET_OPCODE_NAMES
25226OP_GetGlobalSint8,
25227OP_GetGlobalUint8,
25228OP_GetGlobalSint16,
25229OP_GetGlobalUint16,
25230OP_GetGlobalSint32,
25231OP_GetGlobalUint32,
25232OP_GetGlobalSint64,
25233OP_GetGlobalUint64,
25234OP_GetGlobalIntAP,
25235OP_GetGlobalIntAPS,
25236OP_GetGlobalBool,
25237OP_GetGlobalFixedPoint,
25238OP_GetGlobalPtr,
25239OP_GetGlobalMemberPtr,
25240OP_GetGlobalFloat,
25241#endif
25242#ifdef GET_INTERPFN_LIST
25243&Interp_GetGlobalSint8,
25244&Interp_GetGlobalUint8,
25245&Interp_GetGlobalSint16,
25246&Interp_GetGlobalUint16,
25247&Interp_GetGlobalSint32,
25248&Interp_GetGlobalUint32,
25249&Interp_GetGlobalSint64,
25250&Interp_GetGlobalUint64,
25251&Interp_GetGlobalIntAP,
25252&Interp_GetGlobalIntAPS,
25253&Interp_GetGlobalBool,
25254&Interp_GetGlobalFixedPoint,
25255&Interp_GetGlobalPtr,
25256&Interp_GetGlobalMemberPtr,
25257&Interp_GetGlobalFloat,
25258#endif
25259#ifdef GET_INTERPFN_DISPATCHERS
25260PRESERVE_NONE
25261static bool Interp_GetGlobalSint8(InterpState &S) {
25262 {
25263 CodePtr OpPC = S.PC;
25264 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25265 if (!GetGlobal<PT_Sint8>(S, OpPC, V0)) return false;
25266 }
25267#if USE_TAILCALLS
25268 MUSTTAIL return InterpNext(S);
25269#else
25270 return true;
25271#endif
25272}
25273PRESERVE_NONE
25274static bool Interp_GetGlobalUint8(InterpState &S) {
25275 {
25276 CodePtr OpPC = S.PC;
25277 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25278 if (!GetGlobal<PT_Uint8>(S, OpPC, V0)) return false;
25279 }
25280#if USE_TAILCALLS
25281 MUSTTAIL return InterpNext(S);
25282#else
25283 return true;
25284#endif
25285}
25286PRESERVE_NONE
25287static bool Interp_GetGlobalSint16(InterpState &S) {
25288 {
25289 CodePtr OpPC = S.PC;
25290 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25291 if (!GetGlobal<PT_Sint16>(S, OpPC, V0)) return false;
25292 }
25293#if USE_TAILCALLS
25294 MUSTTAIL return InterpNext(S);
25295#else
25296 return true;
25297#endif
25298}
25299PRESERVE_NONE
25300static bool Interp_GetGlobalUint16(InterpState &S) {
25301 {
25302 CodePtr OpPC = S.PC;
25303 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25304 if (!GetGlobal<PT_Uint16>(S, OpPC, V0)) return false;
25305 }
25306#if USE_TAILCALLS
25307 MUSTTAIL return InterpNext(S);
25308#else
25309 return true;
25310#endif
25311}
25312PRESERVE_NONE
25313static bool Interp_GetGlobalSint32(InterpState &S) {
25314 {
25315 CodePtr OpPC = S.PC;
25316 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25317 if (!GetGlobal<PT_Sint32>(S, OpPC, V0)) return false;
25318 }
25319#if USE_TAILCALLS
25320 MUSTTAIL return InterpNext(S);
25321#else
25322 return true;
25323#endif
25324}
25325PRESERVE_NONE
25326static bool Interp_GetGlobalUint32(InterpState &S) {
25327 {
25328 CodePtr OpPC = S.PC;
25329 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25330 if (!GetGlobal<PT_Uint32>(S, OpPC, V0)) return false;
25331 }
25332#if USE_TAILCALLS
25333 MUSTTAIL return InterpNext(S);
25334#else
25335 return true;
25336#endif
25337}
25338PRESERVE_NONE
25339static bool Interp_GetGlobalSint64(InterpState &S) {
25340 {
25341 CodePtr OpPC = S.PC;
25342 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25343 if (!GetGlobal<PT_Sint64>(S, OpPC, V0)) return false;
25344 }
25345#if USE_TAILCALLS
25346 MUSTTAIL return InterpNext(S);
25347#else
25348 return true;
25349#endif
25350}
25351PRESERVE_NONE
25352static bool Interp_GetGlobalUint64(InterpState &S) {
25353 {
25354 CodePtr OpPC = S.PC;
25355 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25356 if (!GetGlobal<PT_Uint64>(S, OpPC, V0)) return false;
25357 }
25358#if USE_TAILCALLS
25359 MUSTTAIL return InterpNext(S);
25360#else
25361 return true;
25362#endif
25363}
25364PRESERVE_NONE
25365static bool Interp_GetGlobalIntAP(InterpState &S) {
25366 {
25367 CodePtr OpPC = S.PC;
25368 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25369 if (!GetGlobal<PT_IntAP>(S, OpPC, V0)) return false;
25370 }
25371#if USE_TAILCALLS
25372 MUSTTAIL return InterpNext(S);
25373#else
25374 return true;
25375#endif
25376}
25377PRESERVE_NONE
25378static bool Interp_GetGlobalIntAPS(InterpState &S) {
25379 {
25380 CodePtr OpPC = S.PC;
25381 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25382 if (!GetGlobal<PT_IntAPS>(S, OpPC, V0)) return false;
25383 }
25384#if USE_TAILCALLS
25385 MUSTTAIL return InterpNext(S);
25386#else
25387 return true;
25388#endif
25389}
25390PRESERVE_NONE
25391static bool Interp_GetGlobalBool(InterpState &S) {
25392 {
25393 CodePtr OpPC = S.PC;
25394 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25395 if (!GetGlobal<PT_Bool>(S, OpPC, V0)) return false;
25396 }
25397#if USE_TAILCALLS
25398 MUSTTAIL return InterpNext(S);
25399#else
25400 return true;
25401#endif
25402}
25403PRESERVE_NONE
25404static bool Interp_GetGlobalFixedPoint(InterpState &S) {
25405 {
25406 CodePtr OpPC = S.PC;
25407 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25408 if (!GetGlobal<PT_FixedPoint>(S, OpPC, V0)) return false;
25409 }
25410#if USE_TAILCALLS
25411 MUSTTAIL return InterpNext(S);
25412#else
25413 return true;
25414#endif
25415}
25416PRESERVE_NONE
25417static bool Interp_GetGlobalPtr(InterpState &S) {
25418 {
25419 CodePtr OpPC = S.PC;
25420 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25421 if (!GetGlobal<PT_Ptr>(S, OpPC, V0)) return false;
25422 }
25423#if USE_TAILCALLS
25424 MUSTTAIL return InterpNext(S);
25425#else
25426 return true;
25427#endif
25428}
25429PRESERVE_NONE
25430static bool Interp_GetGlobalMemberPtr(InterpState &S) {
25431 {
25432 CodePtr OpPC = S.PC;
25433 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25434 if (!GetGlobal<PT_MemberPtr>(S, OpPC, V0)) return false;
25435 }
25436#if USE_TAILCALLS
25437 MUSTTAIL return InterpNext(S);
25438#else
25439 return true;
25440#endif
25441}
25442PRESERVE_NONE
25443static bool Interp_GetGlobalFloat(InterpState &S) {
25444 {
25445 CodePtr OpPC = S.PC;
25446 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25447 if (!GetGlobal<PT_Float>(S, OpPC, V0)) return false;
25448 }
25449#if USE_TAILCALLS
25450 MUSTTAIL return InterpNext(S);
25451#else
25452 return true;
25453#endif
25454}
25455#endif
25456#ifdef GET_DISASM
25457case OP_GetGlobalSint8:
25458 Text.Op = PrintName("GetGlobalSint8");
25459 Text.Args.push_back(printArg<uint32_t>(PC));
25460 break;
25461case OP_GetGlobalUint8:
25462 Text.Op = PrintName("GetGlobalUint8");
25463 Text.Args.push_back(printArg<uint32_t>(PC));
25464 break;
25465case OP_GetGlobalSint16:
25466 Text.Op = PrintName("GetGlobalSint16");
25467 Text.Args.push_back(printArg<uint32_t>(PC));
25468 break;
25469case OP_GetGlobalUint16:
25470 Text.Op = PrintName("GetGlobalUint16");
25471 Text.Args.push_back(printArg<uint32_t>(PC));
25472 break;
25473case OP_GetGlobalSint32:
25474 Text.Op = PrintName("GetGlobalSint32");
25475 Text.Args.push_back(printArg<uint32_t>(PC));
25476 break;
25477case OP_GetGlobalUint32:
25478 Text.Op = PrintName("GetGlobalUint32");
25479 Text.Args.push_back(printArg<uint32_t>(PC));
25480 break;
25481case OP_GetGlobalSint64:
25482 Text.Op = PrintName("GetGlobalSint64");
25483 Text.Args.push_back(printArg<uint32_t>(PC));
25484 break;
25485case OP_GetGlobalUint64:
25486 Text.Op = PrintName("GetGlobalUint64");
25487 Text.Args.push_back(printArg<uint32_t>(PC));
25488 break;
25489case OP_GetGlobalIntAP:
25490 Text.Op = PrintName("GetGlobalIntAP");
25491 Text.Args.push_back(printArg<uint32_t>(PC));
25492 break;
25493case OP_GetGlobalIntAPS:
25494 Text.Op = PrintName("GetGlobalIntAPS");
25495 Text.Args.push_back(printArg<uint32_t>(PC));
25496 break;
25497case OP_GetGlobalBool:
25498 Text.Op = PrintName("GetGlobalBool");
25499 Text.Args.push_back(printArg<uint32_t>(PC));
25500 break;
25501case OP_GetGlobalFixedPoint:
25502 Text.Op = PrintName("GetGlobalFixedPoint");
25503 Text.Args.push_back(printArg<uint32_t>(PC));
25504 break;
25505case OP_GetGlobalPtr:
25506 Text.Op = PrintName("GetGlobalPtr");
25507 Text.Args.push_back(printArg<uint32_t>(PC));
25508 break;
25509case OP_GetGlobalMemberPtr:
25510 Text.Op = PrintName("GetGlobalMemberPtr");
25511 Text.Args.push_back(printArg<uint32_t>(PC));
25512 break;
25513case OP_GetGlobalFloat:
25514 Text.Op = PrintName("GetGlobalFloat");
25515 Text.Args.push_back(printArg<uint32_t>(PC));
25516 break;
25517#endif
25518#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25519bool emitGetGlobalSint8( uint32_t , SourceInfo);
25520bool emitGetGlobalUint8( uint32_t , SourceInfo);
25521bool emitGetGlobalSint16( uint32_t , SourceInfo);
25522bool emitGetGlobalUint16( uint32_t , SourceInfo);
25523bool emitGetGlobalSint32( uint32_t , SourceInfo);
25524bool emitGetGlobalUint32( uint32_t , SourceInfo);
25525bool emitGetGlobalSint64( uint32_t , SourceInfo);
25526bool emitGetGlobalUint64( uint32_t , SourceInfo);
25527bool emitGetGlobalIntAP( uint32_t , SourceInfo);
25528bool emitGetGlobalIntAPS( uint32_t , SourceInfo);
25529bool emitGetGlobalBool( uint32_t , SourceInfo);
25530bool emitGetGlobalFixedPoint( uint32_t , SourceInfo);
25531bool emitGetGlobalPtr( uint32_t , SourceInfo);
25532bool emitGetGlobalMemberPtr( uint32_t , SourceInfo);
25533bool emitGetGlobalFloat( uint32_t , SourceInfo);
25534#endif
25535#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25536[[nodiscard]] bool emitGetGlobal(PrimType, uint32_t, SourceInfo I);
25537#endif
25538#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
25539bool
25540#if defined(GET_EVAL_IMPL)
25541EvalEmitter
25542#else
25543ByteCodeEmitter
25544#endif
25545::emitGetGlobal(PrimType T0, uint32_t A0, SourceInfo I) {
25546 switch (T0) {
25547 case PT_Sint8:
25548 return emitGetGlobalSint8(A0, I);
25549 case PT_Uint8:
25550 return emitGetGlobalUint8(A0, I);
25551 case PT_Sint16:
25552 return emitGetGlobalSint16(A0, I);
25553 case PT_Uint16:
25554 return emitGetGlobalUint16(A0, I);
25555 case PT_Sint32:
25556 return emitGetGlobalSint32(A0, I);
25557 case PT_Uint32:
25558 return emitGetGlobalUint32(A0, I);
25559 case PT_Sint64:
25560 return emitGetGlobalSint64(A0, I);
25561 case PT_Uint64:
25562 return emitGetGlobalUint64(A0, I);
25563 case PT_IntAP:
25564 return emitGetGlobalIntAP(A0, I);
25565 case PT_IntAPS:
25566 return emitGetGlobalIntAPS(A0, I);
25567 case PT_Bool:
25568 return emitGetGlobalBool(A0, I);
25569 case PT_FixedPoint:
25570 return emitGetGlobalFixedPoint(A0, I);
25571 case PT_Ptr:
25572 return emitGetGlobalPtr(A0, I);
25573 case PT_MemberPtr:
25574 return emitGetGlobalMemberPtr(A0, I);
25575 case PT_Float:
25576 return emitGetGlobalFloat(A0, I);
25577 }
25578 llvm_unreachable("invalid enum value");
25579}
25580#endif
25581#ifdef GET_LINK_IMPL
25582bool ByteCodeEmitter::emitGetGlobalSint8( uint32_t A0, SourceInfo L) {
25583 return emitOp<uint32_t>(OP_GetGlobalSint8, A0, L);
25584}
25585bool ByteCodeEmitter::emitGetGlobalUint8( uint32_t A0, SourceInfo L) {
25586 return emitOp<uint32_t>(OP_GetGlobalUint8, A0, L);
25587}
25588bool ByteCodeEmitter::emitGetGlobalSint16( uint32_t A0, SourceInfo L) {
25589 return emitOp<uint32_t>(OP_GetGlobalSint16, A0, L);
25590}
25591bool ByteCodeEmitter::emitGetGlobalUint16( uint32_t A0, SourceInfo L) {
25592 return emitOp<uint32_t>(OP_GetGlobalUint16, A0, L);
25593}
25594bool ByteCodeEmitter::emitGetGlobalSint32( uint32_t A0, SourceInfo L) {
25595 return emitOp<uint32_t>(OP_GetGlobalSint32, A0, L);
25596}
25597bool ByteCodeEmitter::emitGetGlobalUint32( uint32_t A0, SourceInfo L) {
25598 return emitOp<uint32_t>(OP_GetGlobalUint32, A0, L);
25599}
25600bool ByteCodeEmitter::emitGetGlobalSint64( uint32_t A0, SourceInfo L) {
25601 return emitOp<uint32_t>(OP_GetGlobalSint64, A0, L);
25602}
25603bool ByteCodeEmitter::emitGetGlobalUint64( uint32_t A0, SourceInfo L) {
25604 return emitOp<uint32_t>(OP_GetGlobalUint64, A0, L);
25605}
25606bool ByteCodeEmitter::emitGetGlobalIntAP( uint32_t A0, SourceInfo L) {
25607 return emitOp<uint32_t>(OP_GetGlobalIntAP, A0, L);
25608}
25609bool ByteCodeEmitter::emitGetGlobalIntAPS( uint32_t A0, SourceInfo L) {
25610 return emitOp<uint32_t>(OP_GetGlobalIntAPS, A0, L);
25611}
25612bool ByteCodeEmitter::emitGetGlobalBool( uint32_t A0, SourceInfo L) {
25613 return emitOp<uint32_t>(OP_GetGlobalBool, A0, L);
25614}
25615bool ByteCodeEmitter::emitGetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
25616 return emitOp<uint32_t>(OP_GetGlobalFixedPoint, A0, L);
25617}
25618bool ByteCodeEmitter::emitGetGlobalPtr( uint32_t A0, SourceInfo L) {
25619 return emitOp<uint32_t>(OP_GetGlobalPtr, A0, L);
25620}
25621bool ByteCodeEmitter::emitGetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
25622 return emitOp<uint32_t>(OP_GetGlobalMemberPtr, A0, L);
25623}
25624bool ByteCodeEmitter::emitGetGlobalFloat( uint32_t A0, SourceInfo L) {
25625 return emitOp<uint32_t>(OP_GetGlobalFloat, A0, L);
25626}
25627#endif
25628#ifdef GET_EVAL_IMPL
25629bool EvalEmitter::emitGetGlobalSint8( uint32_t A0, SourceInfo L) {
25630 if (!isActive()) return true;
25631 CurrentSource = L;
25632 return GetGlobal<PT_Sint8>(S, CodePtr(), A0);
25633}
25634bool EvalEmitter::emitGetGlobalUint8( uint32_t A0, SourceInfo L) {
25635 if (!isActive()) return true;
25636 CurrentSource = L;
25637 return GetGlobal<PT_Uint8>(S, CodePtr(), A0);
25638}
25639bool EvalEmitter::emitGetGlobalSint16( uint32_t A0, SourceInfo L) {
25640 if (!isActive()) return true;
25641 CurrentSource = L;
25642 return GetGlobal<PT_Sint16>(S, CodePtr(), A0);
25643}
25644bool EvalEmitter::emitGetGlobalUint16( uint32_t A0, SourceInfo L) {
25645 if (!isActive()) return true;
25646 CurrentSource = L;
25647 return GetGlobal<PT_Uint16>(S, CodePtr(), A0);
25648}
25649bool EvalEmitter::emitGetGlobalSint32( uint32_t A0, SourceInfo L) {
25650 if (!isActive()) return true;
25651 CurrentSource = L;
25652 return GetGlobal<PT_Sint32>(S, CodePtr(), A0);
25653}
25654bool EvalEmitter::emitGetGlobalUint32( uint32_t A0, SourceInfo L) {
25655 if (!isActive()) return true;
25656 CurrentSource = L;
25657 return GetGlobal<PT_Uint32>(S, CodePtr(), A0);
25658}
25659bool EvalEmitter::emitGetGlobalSint64( uint32_t A0, SourceInfo L) {
25660 if (!isActive()) return true;
25661 CurrentSource = L;
25662 return GetGlobal<PT_Sint64>(S, CodePtr(), A0);
25663}
25664bool EvalEmitter::emitGetGlobalUint64( uint32_t A0, SourceInfo L) {
25665 if (!isActive()) return true;
25666 CurrentSource = L;
25667 return GetGlobal<PT_Uint64>(S, CodePtr(), A0);
25668}
25669bool EvalEmitter::emitGetGlobalIntAP( uint32_t A0, SourceInfo L) {
25670 if (!isActive()) return true;
25671 CurrentSource = L;
25672 return GetGlobal<PT_IntAP>(S, CodePtr(), A0);
25673}
25674bool EvalEmitter::emitGetGlobalIntAPS( uint32_t A0, SourceInfo L) {
25675 if (!isActive()) return true;
25676 CurrentSource = L;
25677 return GetGlobal<PT_IntAPS>(S, CodePtr(), A0);
25678}
25679bool EvalEmitter::emitGetGlobalBool( uint32_t A0, SourceInfo L) {
25680 if (!isActive()) return true;
25681 CurrentSource = L;
25682 return GetGlobal<PT_Bool>(S, CodePtr(), A0);
25683}
25684bool EvalEmitter::emitGetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
25685 if (!isActive()) return true;
25686 CurrentSource = L;
25687 return GetGlobal<PT_FixedPoint>(S, CodePtr(), A0);
25688}
25689bool EvalEmitter::emitGetGlobalPtr( uint32_t A0, SourceInfo L) {
25690 if (!isActive()) return true;
25691 CurrentSource = L;
25692 return GetGlobal<PT_Ptr>(S, CodePtr(), A0);
25693}
25694bool EvalEmitter::emitGetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
25695 if (!isActive()) return true;
25696 CurrentSource = L;
25697 return GetGlobal<PT_MemberPtr>(S, CodePtr(), A0);
25698}
25699bool EvalEmitter::emitGetGlobalFloat( uint32_t A0, SourceInfo L) {
25700 if (!isActive()) return true;
25701 CurrentSource = L;
25702 return GetGlobal<PT_Float>(S, CodePtr(), A0);
25703}
25704#endif
25705#ifdef GET_OPCODE_NAMES
25706OP_GetGlobalUncheckedSint8,
25707OP_GetGlobalUncheckedUint8,
25708OP_GetGlobalUncheckedSint16,
25709OP_GetGlobalUncheckedUint16,
25710OP_GetGlobalUncheckedSint32,
25711OP_GetGlobalUncheckedUint32,
25712OP_GetGlobalUncheckedSint64,
25713OP_GetGlobalUncheckedUint64,
25714OP_GetGlobalUncheckedIntAP,
25715OP_GetGlobalUncheckedIntAPS,
25716OP_GetGlobalUncheckedBool,
25717OP_GetGlobalUncheckedFixedPoint,
25718OP_GetGlobalUncheckedPtr,
25719OP_GetGlobalUncheckedMemberPtr,
25720OP_GetGlobalUncheckedFloat,
25721#endif
25722#ifdef GET_INTERPFN_LIST
25723&Interp_GetGlobalUncheckedSint8,
25724&Interp_GetGlobalUncheckedUint8,
25725&Interp_GetGlobalUncheckedSint16,
25726&Interp_GetGlobalUncheckedUint16,
25727&Interp_GetGlobalUncheckedSint32,
25728&Interp_GetGlobalUncheckedUint32,
25729&Interp_GetGlobalUncheckedSint64,
25730&Interp_GetGlobalUncheckedUint64,
25731&Interp_GetGlobalUncheckedIntAP,
25732&Interp_GetGlobalUncheckedIntAPS,
25733&Interp_GetGlobalUncheckedBool,
25734&Interp_GetGlobalUncheckedFixedPoint,
25735&Interp_GetGlobalUncheckedPtr,
25736&Interp_GetGlobalUncheckedMemberPtr,
25737&Interp_GetGlobalUncheckedFloat,
25738#endif
25739#ifdef GET_INTERPFN_DISPATCHERS
25740PRESERVE_NONE
25741static bool Interp_GetGlobalUncheckedSint8(InterpState &S) {
25742 {
25743 CodePtr OpPC = S.PC;
25744 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25745 if (!GetGlobalUnchecked<PT_Sint8>(S, OpPC, V0)) return false;
25746 }
25747#if USE_TAILCALLS
25748 MUSTTAIL return InterpNext(S);
25749#else
25750 return true;
25751#endif
25752}
25753PRESERVE_NONE
25754static bool Interp_GetGlobalUncheckedUint8(InterpState &S) {
25755 {
25756 CodePtr OpPC = S.PC;
25757 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25758 if (!GetGlobalUnchecked<PT_Uint8>(S, OpPC, V0)) return false;
25759 }
25760#if USE_TAILCALLS
25761 MUSTTAIL return InterpNext(S);
25762#else
25763 return true;
25764#endif
25765}
25766PRESERVE_NONE
25767static bool Interp_GetGlobalUncheckedSint16(InterpState &S) {
25768 {
25769 CodePtr OpPC = S.PC;
25770 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25771 if (!GetGlobalUnchecked<PT_Sint16>(S, OpPC, V0)) return false;
25772 }
25773#if USE_TAILCALLS
25774 MUSTTAIL return InterpNext(S);
25775#else
25776 return true;
25777#endif
25778}
25779PRESERVE_NONE
25780static bool Interp_GetGlobalUncheckedUint16(InterpState &S) {
25781 {
25782 CodePtr OpPC = S.PC;
25783 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25784 if (!GetGlobalUnchecked<PT_Uint16>(S, OpPC, V0)) return false;
25785 }
25786#if USE_TAILCALLS
25787 MUSTTAIL return InterpNext(S);
25788#else
25789 return true;
25790#endif
25791}
25792PRESERVE_NONE
25793static bool Interp_GetGlobalUncheckedSint32(InterpState &S) {
25794 {
25795 CodePtr OpPC = S.PC;
25796 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25797 if (!GetGlobalUnchecked<PT_Sint32>(S, OpPC, V0)) return false;
25798 }
25799#if USE_TAILCALLS
25800 MUSTTAIL return InterpNext(S);
25801#else
25802 return true;
25803#endif
25804}
25805PRESERVE_NONE
25806static bool Interp_GetGlobalUncheckedUint32(InterpState &S) {
25807 {
25808 CodePtr OpPC = S.PC;
25809 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25810 if (!GetGlobalUnchecked<PT_Uint32>(S, OpPC, V0)) return false;
25811 }
25812#if USE_TAILCALLS
25813 MUSTTAIL return InterpNext(S);
25814#else
25815 return true;
25816#endif
25817}
25818PRESERVE_NONE
25819static bool Interp_GetGlobalUncheckedSint64(InterpState &S) {
25820 {
25821 CodePtr OpPC = S.PC;
25822 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25823 if (!GetGlobalUnchecked<PT_Sint64>(S, OpPC, V0)) return false;
25824 }
25825#if USE_TAILCALLS
25826 MUSTTAIL return InterpNext(S);
25827#else
25828 return true;
25829#endif
25830}
25831PRESERVE_NONE
25832static bool Interp_GetGlobalUncheckedUint64(InterpState &S) {
25833 {
25834 CodePtr OpPC = S.PC;
25835 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25836 if (!GetGlobalUnchecked<PT_Uint64>(S, OpPC, V0)) return false;
25837 }
25838#if USE_TAILCALLS
25839 MUSTTAIL return InterpNext(S);
25840#else
25841 return true;
25842#endif
25843}
25844PRESERVE_NONE
25845static bool Interp_GetGlobalUncheckedIntAP(InterpState &S) {
25846 {
25847 CodePtr OpPC = S.PC;
25848 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25849 if (!GetGlobalUnchecked<PT_IntAP>(S, OpPC, V0)) return false;
25850 }
25851#if USE_TAILCALLS
25852 MUSTTAIL return InterpNext(S);
25853#else
25854 return true;
25855#endif
25856}
25857PRESERVE_NONE
25858static bool Interp_GetGlobalUncheckedIntAPS(InterpState &S) {
25859 {
25860 CodePtr OpPC = S.PC;
25861 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25862 if (!GetGlobalUnchecked<PT_IntAPS>(S, OpPC, V0)) return false;
25863 }
25864#if USE_TAILCALLS
25865 MUSTTAIL return InterpNext(S);
25866#else
25867 return true;
25868#endif
25869}
25870PRESERVE_NONE
25871static bool Interp_GetGlobalUncheckedBool(InterpState &S) {
25872 {
25873 CodePtr OpPC = S.PC;
25874 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25875 if (!GetGlobalUnchecked<PT_Bool>(S, OpPC, V0)) return false;
25876 }
25877#if USE_TAILCALLS
25878 MUSTTAIL return InterpNext(S);
25879#else
25880 return true;
25881#endif
25882}
25883PRESERVE_NONE
25884static bool Interp_GetGlobalUncheckedFixedPoint(InterpState &S) {
25885 {
25886 CodePtr OpPC = S.PC;
25887 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25888 if (!GetGlobalUnchecked<PT_FixedPoint>(S, OpPC, V0)) return false;
25889 }
25890#if USE_TAILCALLS
25891 MUSTTAIL return InterpNext(S);
25892#else
25893 return true;
25894#endif
25895}
25896PRESERVE_NONE
25897static bool Interp_GetGlobalUncheckedPtr(InterpState &S) {
25898 {
25899 CodePtr OpPC = S.PC;
25900 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25901 if (!GetGlobalUnchecked<PT_Ptr>(S, OpPC, V0)) return false;
25902 }
25903#if USE_TAILCALLS
25904 MUSTTAIL return InterpNext(S);
25905#else
25906 return true;
25907#endif
25908}
25909PRESERVE_NONE
25910static bool Interp_GetGlobalUncheckedMemberPtr(InterpState &S) {
25911 {
25912 CodePtr OpPC = S.PC;
25913 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25914 if (!GetGlobalUnchecked<PT_MemberPtr>(S, OpPC, V0)) return false;
25915 }
25916#if USE_TAILCALLS
25917 MUSTTAIL return InterpNext(S);
25918#else
25919 return true;
25920#endif
25921}
25922PRESERVE_NONE
25923static bool Interp_GetGlobalUncheckedFloat(InterpState &S) {
25924 {
25925 CodePtr OpPC = S.PC;
25926 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25927 if (!GetGlobalUnchecked<PT_Float>(S, OpPC, V0)) return false;
25928 }
25929#if USE_TAILCALLS
25930 MUSTTAIL return InterpNext(S);
25931#else
25932 return true;
25933#endif
25934}
25935#endif
25936#ifdef GET_DISASM
25937case OP_GetGlobalUncheckedSint8:
25938 Text.Op = PrintName("GetGlobalUncheckedSint8");
25939 Text.Args.push_back(printArg<uint32_t>(PC));
25940 break;
25941case OP_GetGlobalUncheckedUint8:
25942 Text.Op = PrintName("GetGlobalUncheckedUint8");
25943 Text.Args.push_back(printArg<uint32_t>(PC));
25944 break;
25945case OP_GetGlobalUncheckedSint16:
25946 Text.Op = PrintName("GetGlobalUncheckedSint16");
25947 Text.Args.push_back(printArg<uint32_t>(PC));
25948 break;
25949case OP_GetGlobalUncheckedUint16:
25950 Text.Op = PrintName("GetGlobalUncheckedUint16");
25951 Text.Args.push_back(printArg<uint32_t>(PC));
25952 break;
25953case OP_GetGlobalUncheckedSint32:
25954 Text.Op = PrintName("GetGlobalUncheckedSint32");
25955 Text.Args.push_back(printArg<uint32_t>(PC));
25956 break;
25957case OP_GetGlobalUncheckedUint32:
25958 Text.Op = PrintName("GetGlobalUncheckedUint32");
25959 Text.Args.push_back(printArg<uint32_t>(PC));
25960 break;
25961case OP_GetGlobalUncheckedSint64:
25962 Text.Op = PrintName("GetGlobalUncheckedSint64");
25963 Text.Args.push_back(printArg<uint32_t>(PC));
25964 break;
25965case OP_GetGlobalUncheckedUint64:
25966 Text.Op = PrintName("GetGlobalUncheckedUint64");
25967 Text.Args.push_back(printArg<uint32_t>(PC));
25968 break;
25969case OP_GetGlobalUncheckedIntAP:
25970 Text.Op = PrintName("GetGlobalUncheckedIntAP");
25971 Text.Args.push_back(printArg<uint32_t>(PC));
25972 break;
25973case OP_GetGlobalUncheckedIntAPS:
25974 Text.Op = PrintName("GetGlobalUncheckedIntAPS");
25975 Text.Args.push_back(printArg<uint32_t>(PC));
25976 break;
25977case OP_GetGlobalUncheckedBool:
25978 Text.Op = PrintName("GetGlobalUncheckedBool");
25979 Text.Args.push_back(printArg<uint32_t>(PC));
25980 break;
25981case OP_GetGlobalUncheckedFixedPoint:
25982 Text.Op = PrintName("GetGlobalUncheckedFixedPoint");
25983 Text.Args.push_back(printArg<uint32_t>(PC));
25984 break;
25985case OP_GetGlobalUncheckedPtr:
25986 Text.Op = PrintName("GetGlobalUncheckedPtr");
25987 Text.Args.push_back(printArg<uint32_t>(PC));
25988 break;
25989case OP_GetGlobalUncheckedMemberPtr:
25990 Text.Op = PrintName("GetGlobalUncheckedMemberPtr");
25991 Text.Args.push_back(printArg<uint32_t>(PC));
25992 break;
25993case OP_GetGlobalUncheckedFloat:
25994 Text.Op = PrintName("GetGlobalUncheckedFloat");
25995 Text.Args.push_back(printArg<uint32_t>(PC));
25996 break;
25997#endif
25998#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25999bool emitGetGlobalUncheckedSint8( uint32_t , SourceInfo);
26000bool emitGetGlobalUncheckedUint8( uint32_t , SourceInfo);
26001bool emitGetGlobalUncheckedSint16( uint32_t , SourceInfo);
26002bool emitGetGlobalUncheckedUint16( uint32_t , SourceInfo);
26003bool emitGetGlobalUncheckedSint32( uint32_t , SourceInfo);
26004bool emitGetGlobalUncheckedUint32( uint32_t , SourceInfo);
26005bool emitGetGlobalUncheckedSint64( uint32_t , SourceInfo);
26006bool emitGetGlobalUncheckedUint64( uint32_t , SourceInfo);
26007bool emitGetGlobalUncheckedIntAP( uint32_t , SourceInfo);
26008bool emitGetGlobalUncheckedIntAPS( uint32_t , SourceInfo);
26009bool emitGetGlobalUncheckedBool( uint32_t , SourceInfo);
26010bool emitGetGlobalUncheckedFixedPoint( uint32_t , SourceInfo);
26011bool emitGetGlobalUncheckedPtr( uint32_t , SourceInfo);
26012bool emitGetGlobalUncheckedMemberPtr( uint32_t , SourceInfo);
26013bool emitGetGlobalUncheckedFloat( uint32_t , SourceInfo);
26014#endif
26015#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26016[[nodiscard]] bool emitGetGlobalUnchecked(PrimType, uint32_t, SourceInfo I);
26017#endif
26018#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
26019bool
26020#if defined(GET_EVAL_IMPL)
26021EvalEmitter
26022#else
26023ByteCodeEmitter
26024#endif
26025::emitGetGlobalUnchecked(PrimType T0, uint32_t A0, SourceInfo I) {
26026 switch (T0) {
26027 case PT_Sint8:
26028 return emitGetGlobalUncheckedSint8(A0, I);
26029 case PT_Uint8:
26030 return emitGetGlobalUncheckedUint8(A0, I);
26031 case PT_Sint16:
26032 return emitGetGlobalUncheckedSint16(A0, I);
26033 case PT_Uint16:
26034 return emitGetGlobalUncheckedUint16(A0, I);
26035 case PT_Sint32:
26036 return emitGetGlobalUncheckedSint32(A0, I);
26037 case PT_Uint32:
26038 return emitGetGlobalUncheckedUint32(A0, I);
26039 case PT_Sint64:
26040 return emitGetGlobalUncheckedSint64(A0, I);
26041 case PT_Uint64:
26042 return emitGetGlobalUncheckedUint64(A0, I);
26043 case PT_IntAP:
26044 return emitGetGlobalUncheckedIntAP(A0, I);
26045 case PT_IntAPS:
26046 return emitGetGlobalUncheckedIntAPS(A0, I);
26047 case PT_Bool:
26048 return emitGetGlobalUncheckedBool(A0, I);
26049 case PT_FixedPoint:
26050 return emitGetGlobalUncheckedFixedPoint(A0, I);
26051 case PT_Ptr:
26052 return emitGetGlobalUncheckedPtr(A0, I);
26053 case PT_MemberPtr:
26054 return emitGetGlobalUncheckedMemberPtr(A0, I);
26055 case PT_Float:
26056 return emitGetGlobalUncheckedFloat(A0, I);
26057 }
26058 llvm_unreachable("invalid enum value");
26059}
26060#endif
26061#ifdef GET_LINK_IMPL
26062bool ByteCodeEmitter::emitGetGlobalUncheckedSint8( uint32_t A0, SourceInfo L) {
26063 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint8, A0, L);
26064}
26065bool ByteCodeEmitter::emitGetGlobalUncheckedUint8( uint32_t A0, SourceInfo L) {
26066 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint8, A0, L);
26067}
26068bool ByteCodeEmitter::emitGetGlobalUncheckedSint16( uint32_t A0, SourceInfo L) {
26069 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint16, A0, L);
26070}
26071bool ByteCodeEmitter::emitGetGlobalUncheckedUint16( uint32_t A0, SourceInfo L) {
26072 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint16, A0, L);
26073}
26074bool ByteCodeEmitter::emitGetGlobalUncheckedSint32( uint32_t A0, SourceInfo L) {
26075 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint32, A0, L);
26076}
26077bool ByteCodeEmitter::emitGetGlobalUncheckedUint32( uint32_t A0, SourceInfo L) {
26078 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint32, A0, L);
26079}
26080bool ByteCodeEmitter::emitGetGlobalUncheckedSint64( uint32_t A0, SourceInfo L) {
26081 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint64, A0, L);
26082}
26083bool ByteCodeEmitter::emitGetGlobalUncheckedUint64( uint32_t A0, SourceInfo L) {
26084 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint64, A0, L);
26085}
26086bool ByteCodeEmitter::emitGetGlobalUncheckedIntAP( uint32_t A0, SourceInfo L) {
26087 return emitOp<uint32_t>(OP_GetGlobalUncheckedIntAP, A0, L);
26088}
26089bool ByteCodeEmitter::emitGetGlobalUncheckedIntAPS( uint32_t A0, SourceInfo L) {
26090 return emitOp<uint32_t>(OP_GetGlobalUncheckedIntAPS, A0, L);
26091}
26092bool ByteCodeEmitter::emitGetGlobalUncheckedBool( uint32_t A0, SourceInfo L) {
26093 return emitOp<uint32_t>(OP_GetGlobalUncheckedBool, A0, L);
26094}
26095bool ByteCodeEmitter::emitGetGlobalUncheckedFixedPoint( uint32_t A0, SourceInfo L) {
26096 return emitOp<uint32_t>(OP_GetGlobalUncheckedFixedPoint, A0, L);
26097}
26098bool ByteCodeEmitter::emitGetGlobalUncheckedPtr( uint32_t A0, SourceInfo L) {
26099 return emitOp<uint32_t>(OP_GetGlobalUncheckedPtr, A0, L);
26100}
26101bool ByteCodeEmitter::emitGetGlobalUncheckedMemberPtr( uint32_t A0, SourceInfo L) {
26102 return emitOp<uint32_t>(OP_GetGlobalUncheckedMemberPtr, A0, L);
26103}
26104bool ByteCodeEmitter::emitGetGlobalUncheckedFloat( uint32_t A0, SourceInfo L) {
26105 return emitOp<uint32_t>(OP_GetGlobalUncheckedFloat, A0, L);
26106}
26107#endif
26108#ifdef GET_EVAL_IMPL
26109bool EvalEmitter::emitGetGlobalUncheckedSint8( uint32_t A0, SourceInfo L) {
26110 if (!isActive()) return true;
26111 CurrentSource = L;
26112 return GetGlobalUnchecked<PT_Sint8>(S, CodePtr(), A0);
26113}
26114bool EvalEmitter::emitGetGlobalUncheckedUint8( uint32_t A0, SourceInfo L) {
26115 if (!isActive()) return true;
26116 CurrentSource = L;
26117 return GetGlobalUnchecked<PT_Uint8>(S, CodePtr(), A0);
26118}
26119bool EvalEmitter::emitGetGlobalUncheckedSint16( uint32_t A0, SourceInfo L) {
26120 if (!isActive()) return true;
26121 CurrentSource = L;
26122 return GetGlobalUnchecked<PT_Sint16>(S, CodePtr(), A0);
26123}
26124bool EvalEmitter::emitGetGlobalUncheckedUint16( uint32_t A0, SourceInfo L) {
26125 if (!isActive()) return true;
26126 CurrentSource = L;
26127 return GetGlobalUnchecked<PT_Uint16>(S, CodePtr(), A0);
26128}
26129bool EvalEmitter::emitGetGlobalUncheckedSint32( uint32_t A0, SourceInfo L) {
26130 if (!isActive()) return true;
26131 CurrentSource = L;
26132 return GetGlobalUnchecked<PT_Sint32>(S, CodePtr(), A0);
26133}
26134bool EvalEmitter::emitGetGlobalUncheckedUint32( uint32_t A0, SourceInfo L) {
26135 if (!isActive()) return true;
26136 CurrentSource = L;
26137 return GetGlobalUnchecked<PT_Uint32>(S, CodePtr(), A0);
26138}
26139bool EvalEmitter::emitGetGlobalUncheckedSint64( uint32_t A0, SourceInfo L) {
26140 if (!isActive()) return true;
26141 CurrentSource = L;
26142 return GetGlobalUnchecked<PT_Sint64>(S, CodePtr(), A0);
26143}
26144bool EvalEmitter::emitGetGlobalUncheckedUint64( uint32_t A0, SourceInfo L) {
26145 if (!isActive()) return true;
26146 CurrentSource = L;
26147 return GetGlobalUnchecked<PT_Uint64>(S, CodePtr(), A0);
26148}
26149bool EvalEmitter::emitGetGlobalUncheckedIntAP( uint32_t A0, SourceInfo L) {
26150 if (!isActive()) return true;
26151 CurrentSource = L;
26152 return GetGlobalUnchecked<PT_IntAP>(S, CodePtr(), A0);
26153}
26154bool EvalEmitter::emitGetGlobalUncheckedIntAPS( uint32_t A0, SourceInfo L) {
26155 if (!isActive()) return true;
26156 CurrentSource = L;
26157 return GetGlobalUnchecked<PT_IntAPS>(S, CodePtr(), A0);
26158}
26159bool EvalEmitter::emitGetGlobalUncheckedBool( uint32_t A0, SourceInfo L) {
26160 if (!isActive()) return true;
26161 CurrentSource = L;
26162 return GetGlobalUnchecked<PT_Bool>(S, CodePtr(), A0);
26163}
26164bool EvalEmitter::emitGetGlobalUncheckedFixedPoint( uint32_t A0, SourceInfo L) {
26165 if (!isActive()) return true;
26166 CurrentSource = L;
26167 return GetGlobalUnchecked<PT_FixedPoint>(S, CodePtr(), A0);
26168}
26169bool EvalEmitter::emitGetGlobalUncheckedPtr( uint32_t A0, SourceInfo L) {
26170 if (!isActive()) return true;
26171 CurrentSource = L;
26172 return GetGlobalUnchecked<PT_Ptr>(S, CodePtr(), A0);
26173}
26174bool EvalEmitter::emitGetGlobalUncheckedMemberPtr( uint32_t A0, SourceInfo L) {
26175 if (!isActive()) return true;
26176 CurrentSource = L;
26177 return GetGlobalUnchecked<PT_MemberPtr>(S, CodePtr(), A0);
26178}
26179bool EvalEmitter::emitGetGlobalUncheckedFloat( uint32_t A0, SourceInfo L) {
26180 if (!isActive()) return true;
26181 CurrentSource = L;
26182 return GetGlobalUnchecked<PT_Float>(S, CodePtr(), A0);
26183}
26184#endif
26185#ifdef GET_OPCODE_NAMES
26186OP_GetIntPtrSint8,
26187OP_GetIntPtrUint8,
26188OP_GetIntPtrSint16,
26189OP_GetIntPtrUint16,
26190OP_GetIntPtrSint32,
26191OP_GetIntPtrUint32,
26192OP_GetIntPtrSint64,
26193OP_GetIntPtrUint64,
26194OP_GetIntPtrIntAP,
26195OP_GetIntPtrIntAPS,
26196OP_GetIntPtrBool,
26197OP_GetIntPtrFixedPoint,
26198#endif
26199#ifdef GET_INTERPFN_LIST
26200&Interp_GetIntPtrSint8,
26201&Interp_GetIntPtrUint8,
26202&Interp_GetIntPtrSint16,
26203&Interp_GetIntPtrUint16,
26204&Interp_GetIntPtrSint32,
26205&Interp_GetIntPtrUint32,
26206&Interp_GetIntPtrSint64,
26207&Interp_GetIntPtrUint64,
26208&Interp_GetIntPtrIntAP,
26209&Interp_GetIntPtrIntAPS,
26210&Interp_GetIntPtrBool,
26211&Interp_GetIntPtrFixedPoint,
26212#endif
26213#ifdef GET_INTERPFN_DISPATCHERS
26214PRESERVE_NONE
26215static bool Interp_GetIntPtrSint8(InterpState &S) {
26216 {
26217 CodePtr OpPC = S.PC;
26218 const auto V0 = ReadArg<const Type *>(S, S.PC);
26219 if (!GetIntPtr<PT_Sint8>(S, OpPC, V0)) return false;
26220 }
26221#if USE_TAILCALLS
26222 MUSTTAIL return InterpNext(S);
26223#else
26224 return true;
26225#endif
26226}
26227PRESERVE_NONE
26228static bool Interp_GetIntPtrUint8(InterpState &S) {
26229 {
26230 CodePtr OpPC = S.PC;
26231 const auto V0 = ReadArg<const Type *>(S, S.PC);
26232 if (!GetIntPtr<PT_Uint8>(S, OpPC, V0)) return false;
26233 }
26234#if USE_TAILCALLS
26235 MUSTTAIL return InterpNext(S);
26236#else
26237 return true;
26238#endif
26239}
26240PRESERVE_NONE
26241static bool Interp_GetIntPtrSint16(InterpState &S) {
26242 {
26243 CodePtr OpPC = S.PC;
26244 const auto V0 = ReadArg<const Type *>(S, S.PC);
26245 if (!GetIntPtr<PT_Sint16>(S, OpPC, V0)) return false;
26246 }
26247#if USE_TAILCALLS
26248 MUSTTAIL return InterpNext(S);
26249#else
26250 return true;
26251#endif
26252}
26253PRESERVE_NONE
26254static bool Interp_GetIntPtrUint16(InterpState &S) {
26255 {
26256 CodePtr OpPC = S.PC;
26257 const auto V0 = ReadArg<const Type *>(S, S.PC);
26258 if (!GetIntPtr<PT_Uint16>(S, OpPC, V0)) return false;
26259 }
26260#if USE_TAILCALLS
26261 MUSTTAIL return InterpNext(S);
26262#else
26263 return true;
26264#endif
26265}
26266PRESERVE_NONE
26267static bool Interp_GetIntPtrSint32(InterpState &S) {
26268 {
26269 CodePtr OpPC = S.PC;
26270 const auto V0 = ReadArg<const Type *>(S, S.PC);
26271 if (!GetIntPtr<PT_Sint32>(S, OpPC, V0)) return false;
26272 }
26273#if USE_TAILCALLS
26274 MUSTTAIL return InterpNext(S);
26275#else
26276 return true;
26277#endif
26278}
26279PRESERVE_NONE
26280static bool Interp_GetIntPtrUint32(InterpState &S) {
26281 {
26282 CodePtr OpPC = S.PC;
26283 const auto V0 = ReadArg<const Type *>(S, S.PC);
26284 if (!GetIntPtr<PT_Uint32>(S, OpPC, V0)) return false;
26285 }
26286#if USE_TAILCALLS
26287 MUSTTAIL return InterpNext(S);
26288#else
26289 return true;
26290#endif
26291}
26292PRESERVE_NONE
26293static bool Interp_GetIntPtrSint64(InterpState &S) {
26294 {
26295 CodePtr OpPC = S.PC;
26296 const auto V0 = ReadArg<const Type *>(S, S.PC);
26297 if (!GetIntPtr<PT_Sint64>(S, OpPC, V0)) return false;
26298 }
26299#if USE_TAILCALLS
26300 MUSTTAIL return InterpNext(S);
26301#else
26302 return true;
26303#endif
26304}
26305PRESERVE_NONE
26306static bool Interp_GetIntPtrUint64(InterpState &S) {
26307 {
26308 CodePtr OpPC = S.PC;
26309 const auto V0 = ReadArg<const Type *>(S, S.PC);
26310 if (!GetIntPtr<PT_Uint64>(S, OpPC, V0)) return false;
26311 }
26312#if USE_TAILCALLS
26313 MUSTTAIL return InterpNext(S);
26314#else
26315 return true;
26316#endif
26317}
26318PRESERVE_NONE
26319static bool Interp_GetIntPtrIntAP(InterpState &S) {
26320 {
26321 CodePtr OpPC = S.PC;
26322 const auto V0 = ReadArg<const Type *>(S, S.PC);
26323 if (!GetIntPtr<PT_IntAP>(S, OpPC, V0)) return false;
26324 }
26325#if USE_TAILCALLS
26326 MUSTTAIL return InterpNext(S);
26327#else
26328 return true;
26329#endif
26330}
26331PRESERVE_NONE
26332static bool Interp_GetIntPtrIntAPS(InterpState &S) {
26333 {
26334 CodePtr OpPC = S.PC;
26335 const auto V0 = ReadArg<const Type *>(S, S.PC);
26336 if (!GetIntPtr<PT_IntAPS>(S, OpPC, V0)) return false;
26337 }
26338#if USE_TAILCALLS
26339 MUSTTAIL return InterpNext(S);
26340#else
26341 return true;
26342#endif
26343}
26344PRESERVE_NONE
26345static bool Interp_GetIntPtrBool(InterpState &S) {
26346 {
26347 CodePtr OpPC = S.PC;
26348 const auto V0 = ReadArg<const Type *>(S, S.PC);
26349 if (!GetIntPtr<PT_Bool>(S, OpPC, V0)) return false;
26350 }
26351#if USE_TAILCALLS
26352 MUSTTAIL return InterpNext(S);
26353#else
26354 return true;
26355#endif
26356}
26357PRESERVE_NONE
26358static bool Interp_GetIntPtrFixedPoint(InterpState &S) {
26359 {
26360 CodePtr OpPC = S.PC;
26361 const auto V0 = ReadArg<const Type *>(S, S.PC);
26362 if (!GetIntPtr<PT_FixedPoint>(S, OpPC, V0)) return false;
26363 }
26364#if USE_TAILCALLS
26365 MUSTTAIL return InterpNext(S);
26366#else
26367 return true;
26368#endif
26369}
26370#endif
26371#ifdef GET_DISASM
26372case OP_GetIntPtrSint8:
26373 Text.Op = PrintName("GetIntPtrSint8");
26374 Text.Args.push_back(printArg<const Type *>(PC));
26375 break;
26376case OP_GetIntPtrUint8:
26377 Text.Op = PrintName("GetIntPtrUint8");
26378 Text.Args.push_back(printArg<const Type *>(PC));
26379 break;
26380case OP_GetIntPtrSint16:
26381 Text.Op = PrintName("GetIntPtrSint16");
26382 Text.Args.push_back(printArg<const Type *>(PC));
26383 break;
26384case OP_GetIntPtrUint16:
26385 Text.Op = PrintName("GetIntPtrUint16");
26386 Text.Args.push_back(printArg<const Type *>(PC));
26387 break;
26388case OP_GetIntPtrSint32:
26389 Text.Op = PrintName("GetIntPtrSint32");
26390 Text.Args.push_back(printArg<const Type *>(PC));
26391 break;
26392case OP_GetIntPtrUint32:
26393 Text.Op = PrintName("GetIntPtrUint32");
26394 Text.Args.push_back(printArg<const Type *>(PC));
26395 break;
26396case OP_GetIntPtrSint64:
26397 Text.Op = PrintName("GetIntPtrSint64");
26398 Text.Args.push_back(printArg<const Type *>(PC));
26399 break;
26400case OP_GetIntPtrUint64:
26401 Text.Op = PrintName("GetIntPtrUint64");
26402 Text.Args.push_back(printArg<const Type *>(PC));
26403 break;
26404case OP_GetIntPtrIntAP:
26405 Text.Op = PrintName("GetIntPtrIntAP");
26406 Text.Args.push_back(printArg<const Type *>(PC));
26407 break;
26408case OP_GetIntPtrIntAPS:
26409 Text.Op = PrintName("GetIntPtrIntAPS");
26410 Text.Args.push_back(printArg<const Type *>(PC));
26411 break;
26412case OP_GetIntPtrBool:
26413 Text.Op = PrintName("GetIntPtrBool");
26414 Text.Args.push_back(printArg<const Type *>(PC));
26415 break;
26416case OP_GetIntPtrFixedPoint:
26417 Text.Op = PrintName("GetIntPtrFixedPoint");
26418 Text.Args.push_back(printArg<const Type *>(PC));
26419 break;
26420#endif
26421#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26422bool emitGetIntPtrSint8( const Type * , SourceInfo);
26423bool emitGetIntPtrUint8( const Type * , SourceInfo);
26424bool emitGetIntPtrSint16( const Type * , SourceInfo);
26425bool emitGetIntPtrUint16( const Type * , SourceInfo);
26426bool emitGetIntPtrSint32( const Type * , SourceInfo);
26427bool emitGetIntPtrUint32( const Type * , SourceInfo);
26428bool emitGetIntPtrSint64( const Type * , SourceInfo);
26429bool emitGetIntPtrUint64( const Type * , SourceInfo);
26430bool emitGetIntPtrIntAP( const Type * , SourceInfo);
26431bool emitGetIntPtrIntAPS( const Type * , SourceInfo);
26432bool emitGetIntPtrBool( const Type * , SourceInfo);
26433bool emitGetIntPtrFixedPoint( const Type * , SourceInfo);
26434#endif
26435#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26436[[nodiscard]] bool emitGetIntPtr(PrimType, const Type *, SourceInfo I);
26437#endif
26438#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
26439bool
26440#if defined(GET_EVAL_IMPL)
26441EvalEmitter
26442#else
26443ByteCodeEmitter
26444#endif
26445::emitGetIntPtr(PrimType T0, const Type * A0, SourceInfo I) {
26446 switch (T0) {
26447 case PT_Sint8:
26448 return emitGetIntPtrSint8(A0, I);
26449 case PT_Uint8:
26450 return emitGetIntPtrUint8(A0, I);
26451 case PT_Sint16:
26452 return emitGetIntPtrSint16(A0, I);
26453 case PT_Uint16:
26454 return emitGetIntPtrUint16(A0, I);
26455 case PT_Sint32:
26456 return emitGetIntPtrSint32(A0, I);
26457 case PT_Uint32:
26458 return emitGetIntPtrUint32(A0, I);
26459 case PT_Sint64:
26460 return emitGetIntPtrSint64(A0, I);
26461 case PT_Uint64:
26462 return emitGetIntPtrUint64(A0, I);
26463 case PT_IntAP:
26464 return emitGetIntPtrIntAP(A0, I);
26465 case PT_IntAPS:
26466 return emitGetIntPtrIntAPS(A0, I);
26467 case PT_Bool:
26468 return emitGetIntPtrBool(A0, I);
26469 case PT_FixedPoint:
26470 return emitGetIntPtrFixedPoint(A0, I);
26471 default: llvm_unreachable("invalid type: emitGetIntPtr");
26472 }
26473 llvm_unreachable("invalid enum value");
26474}
26475#endif
26476#ifdef GET_LINK_IMPL
26477bool ByteCodeEmitter::emitGetIntPtrSint8( const Type * A0, SourceInfo L) {
26478 return emitOp<const Type *>(OP_GetIntPtrSint8, A0, L);
26479}
26480bool ByteCodeEmitter::emitGetIntPtrUint8( const Type * A0, SourceInfo L) {
26481 return emitOp<const Type *>(OP_GetIntPtrUint8, A0, L);
26482}
26483bool ByteCodeEmitter::emitGetIntPtrSint16( const Type * A0, SourceInfo L) {
26484 return emitOp<const Type *>(OP_GetIntPtrSint16, A0, L);
26485}
26486bool ByteCodeEmitter::emitGetIntPtrUint16( const Type * A0, SourceInfo L) {
26487 return emitOp<const Type *>(OP_GetIntPtrUint16, A0, L);
26488}
26489bool ByteCodeEmitter::emitGetIntPtrSint32( const Type * A0, SourceInfo L) {
26490 return emitOp<const Type *>(OP_GetIntPtrSint32, A0, L);
26491}
26492bool ByteCodeEmitter::emitGetIntPtrUint32( const Type * A0, SourceInfo L) {
26493 return emitOp<const Type *>(OP_GetIntPtrUint32, A0, L);
26494}
26495bool ByteCodeEmitter::emitGetIntPtrSint64( const Type * A0, SourceInfo L) {
26496 return emitOp<const Type *>(OP_GetIntPtrSint64, A0, L);
26497}
26498bool ByteCodeEmitter::emitGetIntPtrUint64( const Type * A0, SourceInfo L) {
26499 return emitOp<const Type *>(OP_GetIntPtrUint64, A0, L);
26500}
26501bool ByteCodeEmitter::emitGetIntPtrIntAP( const Type * A0, SourceInfo L) {
26502 return emitOp<const Type *>(OP_GetIntPtrIntAP, A0, L);
26503}
26504bool ByteCodeEmitter::emitGetIntPtrIntAPS( const Type * A0, SourceInfo L) {
26505 return emitOp<const Type *>(OP_GetIntPtrIntAPS, A0, L);
26506}
26507bool ByteCodeEmitter::emitGetIntPtrBool( const Type * A0, SourceInfo L) {
26508 return emitOp<const Type *>(OP_GetIntPtrBool, A0, L);
26509}
26510bool ByteCodeEmitter::emitGetIntPtrFixedPoint( const Type * A0, SourceInfo L) {
26511 return emitOp<const Type *>(OP_GetIntPtrFixedPoint, A0, L);
26512}
26513#endif
26514#ifdef GET_EVAL_IMPL
26515bool EvalEmitter::emitGetIntPtrSint8( const Type * A0, SourceInfo L) {
26516 if (!isActive()) return true;
26517 CurrentSource = L;
26518 return GetIntPtr<PT_Sint8>(S, CodePtr(), A0);
26519}
26520bool EvalEmitter::emitGetIntPtrUint8( const Type * A0, SourceInfo L) {
26521 if (!isActive()) return true;
26522 CurrentSource = L;
26523 return GetIntPtr<PT_Uint8>(S, CodePtr(), A0);
26524}
26525bool EvalEmitter::emitGetIntPtrSint16( const Type * A0, SourceInfo L) {
26526 if (!isActive()) return true;
26527 CurrentSource = L;
26528 return GetIntPtr<PT_Sint16>(S, CodePtr(), A0);
26529}
26530bool EvalEmitter::emitGetIntPtrUint16( const Type * A0, SourceInfo L) {
26531 if (!isActive()) return true;
26532 CurrentSource = L;
26533 return GetIntPtr<PT_Uint16>(S, CodePtr(), A0);
26534}
26535bool EvalEmitter::emitGetIntPtrSint32( const Type * A0, SourceInfo L) {
26536 if (!isActive()) return true;
26537 CurrentSource = L;
26538 return GetIntPtr<PT_Sint32>(S, CodePtr(), A0);
26539}
26540bool EvalEmitter::emitGetIntPtrUint32( const Type * A0, SourceInfo L) {
26541 if (!isActive()) return true;
26542 CurrentSource = L;
26543 return GetIntPtr<PT_Uint32>(S, CodePtr(), A0);
26544}
26545bool EvalEmitter::emitGetIntPtrSint64( const Type * A0, SourceInfo L) {
26546 if (!isActive()) return true;
26547 CurrentSource = L;
26548 return GetIntPtr<PT_Sint64>(S, CodePtr(), A0);
26549}
26550bool EvalEmitter::emitGetIntPtrUint64( const Type * A0, SourceInfo L) {
26551 if (!isActive()) return true;
26552 CurrentSource = L;
26553 return GetIntPtr<PT_Uint64>(S, CodePtr(), A0);
26554}
26555bool EvalEmitter::emitGetIntPtrIntAP( const Type * A0, SourceInfo L) {
26556 if (!isActive()) return true;
26557 CurrentSource = L;
26558 return GetIntPtr<PT_IntAP>(S, CodePtr(), A0);
26559}
26560bool EvalEmitter::emitGetIntPtrIntAPS( const Type * A0, SourceInfo L) {
26561 if (!isActive()) return true;
26562 CurrentSource = L;
26563 return GetIntPtr<PT_IntAPS>(S, CodePtr(), A0);
26564}
26565bool EvalEmitter::emitGetIntPtrBool( const Type * A0, SourceInfo L) {
26566 if (!isActive()) return true;
26567 CurrentSource = L;
26568 return GetIntPtr<PT_Bool>(S, CodePtr(), A0);
26569}
26570bool EvalEmitter::emitGetIntPtrFixedPoint( const Type * A0, SourceInfo L) {
26571 if (!isActive()) return true;
26572 CurrentSource = L;
26573 return GetIntPtr<PT_FixedPoint>(S, CodePtr(), A0);
26574}
26575#endif
26576#ifdef GET_OPCODE_NAMES
26577OP_GetLocalSint8,
26578OP_GetLocalUint8,
26579OP_GetLocalSint16,
26580OP_GetLocalUint16,
26581OP_GetLocalSint32,
26582OP_GetLocalUint32,
26583OP_GetLocalSint64,
26584OP_GetLocalUint64,
26585OP_GetLocalIntAP,
26586OP_GetLocalIntAPS,
26587OP_GetLocalBool,
26588OP_GetLocalFixedPoint,
26589OP_GetLocalPtr,
26590OP_GetLocalMemberPtr,
26591OP_GetLocalFloat,
26592#endif
26593#ifdef GET_INTERPFN_LIST
26594&Interp_GetLocalSint8,
26595&Interp_GetLocalUint8,
26596&Interp_GetLocalSint16,
26597&Interp_GetLocalUint16,
26598&Interp_GetLocalSint32,
26599&Interp_GetLocalUint32,
26600&Interp_GetLocalSint64,
26601&Interp_GetLocalUint64,
26602&Interp_GetLocalIntAP,
26603&Interp_GetLocalIntAPS,
26604&Interp_GetLocalBool,
26605&Interp_GetLocalFixedPoint,
26606&Interp_GetLocalPtr,
26607&Interp_GetLocalMemberPtr,
26608&Interp_GetLocalFloat,
26609#endif
26610#ifdef GET_INTERPFN_DISPATCHERS
26611PRESERVE_NONE
26612static bool Interp_GetLocalSint8(InterpState &S) {
26613 {
26614 CodePtr OpPC = S.PC;
26615 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26616 if (!GetLocal<PT_Sint8>(S, OpPC, V0)) return false;
26617 }
26618#if USE_TAILCALLS
26619 MUSTTAIL return InterpNext(S);
26620#else
26621 return true;
26622#endif
26623}
26624PRESERVE_NONE
26625static bool Interp_GetLocalUint8(InterpState &S) {
26626 {
26627 CodePtr OpPC = S.PC;
26628 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26629 if (!GetLocal<PT_Uint8>(S, OpPC, V0)) return false;
26630 }
26631#if USE_TAILCALLS
26632 MUSTTAIL return InterpNext(S);
26633#else
26634 return true;
26635#endif
26636}
26637PRESERVE_NONE
26638static bool Interp_GetLocalSint16(InterpState &S) {
26639 {
26640 CodePtr OpPC = S.PC;
26641 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26642 if (!GetLocal<PT_Sint16>(S, OpPC, V0)) return false;
26643 }
26644#if USE_TAILCALLS
26645 MUSTTAIL return InterpNext(S);
26646#else
26647 return true;
26648#endif
26649}
26650PRESERVE_NONE
26651static bool Interp_GetLocalUint16(InterpState &S) {
26652 {
26653 CodePtr OpPC = S.PC;
26654 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26655 if (!GetLocal<PT_Uint16>(S, OpPC, V0)) return false;
26656 }
26657#if USE_TAILCALLS
26658 MUSTTAIL return InterpNext(S);
26659#else
26660 return true;
26661#endif
26662}
26663PRESERVE_NONE
26664static bool Interp_GetLocalSint32(InterpState &S) {
26665 {
26666 CodePtr OpPC = S.PC;
26667 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26668 if (!GetLocal<PT_Sint32>(S, OpPC, V0)) return false;
26669 }
26670#if USE_TAILCALLS
26671 MUSTTAIL return InterpNext(S);
26672#else
26673 return true;
26674#endif
26675}
26676PRESERVE_NONE
26677static bool Interp_GetLocalUint32(InterpState &S) {
26678 {
26679 CodePtr OpPC = S.PC;
26680 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26681 if (!GetLocal<PT_Uint32>(S, OpPC, V0)) return false;
26682 }
26683#if USE_TAILCALLS
26684 MUSTTAIL return InterpNext(S);
26685#else
26686 return true;
26687#endif
26688}
26689PRESERVE_NONE
26690static bool Interp_GetLocalSint64(InterpState &S) {
26691 {
26692 CodePtr OpPC = S.PC;
26693 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26694 if (!GetLocal<PT_Sint64>(S, OpPC, V0)) return false;
26695 }
26696#if USE_TAILCALLS
26697 MUSTTAIL return InterpNext(S);
26698#else
26699 return true;
26700#endif
26701}
26702PRESERVE_NONE
26703static bool Interp_GetLocalUint64(InterpState &S) {
26704 {
26705 CodePtr OpPC = S.PC;
26706 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26707 if (!GetLocal<PT_Uint64>(S, OpPC, V0)) return false;
26708 }
26709#if USE_TAILCALLS
26710 MUSTTAIL return InterpNext(S);
26711#else
26712 return true;
26713#endif
26714}
26715PRESERVE_NONE
26716static bool Interp_GetLocalIntAP(InterpState &S) {
26717 {
26718 CodePtr OpPC = S.PC;
26719 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26720 if (!GetLocal<PT_IntAP>(S, OpPC, V0)) return false;
26721 }
26722#if USE_TAILCALLS
26723 MUSTTAIL return InterpNext(S);
26724#else
26725 return true;
26726#endif
26727}
26728PRESERVE_NONE
26729static bool Interp_GetLocalIntAPS(InterpState &S) {
26730 {
26731 CodePtr OpPC = S.PC;
26732 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26733 if (!GetLocal<PT_IntAPS>(S, OpPC, V0)) return false;
26734 }
26735#if USE_TAILCALLS
26736 MUSTTAIL return InterpNext(S);
26737#else
26738 return true;
26739#endif
26740}
26741PRESERVE_NONE
26742static bool Interp_GetLocalBool(InterpState &S) {
26743 {
26744 CodePtr OpPC = S.PC;
26745 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26746 if (!GetLocal<PT_Bool>(S, OpPC, V0)) return false;
26747 }
26748#if USE_TAILCALLS
26749 MUSTTAIL return InterpNext(S);
26750#else
26751 return true;
26752#endif
26753}
26754PRESERVE_NONE
26755static bool Interp_GetLocalFixedPoint(InterpState &S) {
26756 {
26757 CodePtr OpPC = S.PC;
26758 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26759 if (!GetLocal<PT_FixedPoint>(S, OpPC, V0)) return false;
26760 }
26761#if USE_TAILCALLS
26762 MUSTTAIL return InterpNext(S);
26763#else
26764 return true;
26765#endif
26766}
26767PRESERVE_NONE
26768static bool Interp_GetLocalPtr(InterpState &S) {
26769 {
26770 CodePtr OpPC = S.PC;
26771 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26772 if (!GetLocal<PT_Ptr>(S, OpPC, V0)) return false;
26773 }
26774#if USE_TAILCALLS
26775 MUSTTAIL return InterpNext(S);
26776#else
26777 return true;
26778#endif
26779}
26780PRESERVE_NONE
26781static bool Interp_GetLocalMemberPtr(InterpState &S) {
26782 {
26783 CodePtr OpPC = S.PC;
26784 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26785 if (!GetLocal<PT_MemberPtr>(S, OpPC, V0)) return false;
26786 }
26787#if USE_TAILCALLS
26788 MUSTTAIL return InterpNext(S);
26789#else
26790 return true;
26791#endif
26792}
26793PRESERVE_NONE
26794static bool Interp_GetLocalFloat(InterpState &S) {
26795 {
26796 CodePtr OpPC = S.PC;
26797 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26798 if (!GetLocal<PT_Float>(S, OpPC, V0)) return false;
26799 }
26800#if USE_TAILCALLS
26801 MUSTTAIL return InterpNext(S);
26802#else
26803 return true;
26804#endif
26805}
26806#endif
26807#ifdef GET_DISASM
26808case OP_GetLocalSint8:
26809 Text.Op = PrintName("GetLocalSint8");
26810 Text.Args.push_back(printArg<uint32_t>(PC));
26811 break;
26812case OP_GetLocalUint8:
26813 Text.Op = PrintName("GetLocalUint8");
26814 Text.Args.push_back(printArg<uint32_t>(PC));
26815 break;
26816case OP_GetLocalSint16:
26817 Text.Op = PrintName("GetLocalSint16");
26818 Text.Args.push_back(printArg<uint32_t>(PC));
26819 break;
26820case OP_GetLocalUint16:
26821 Text.Op = PrintName("GetLocalUint16");
26822 Text.Args.push_back(printArg<uint32_t>(PC));
26823 break;
26824case OP_GetLocalSint32:
26825 Text.Op = PrintName("GetLocalSint32");
26826 Text.Args.push_back(printArg<uint32_t>(PC));
26827 break;
26828case OP_GetLocalUint32:
26829 Text.Op = PrintName("GetLocalUint32");
26830 Text.Args.push_back(printArg<uint32_t>(PC));
26831 break;
26832case OP_GetLocalSint64:
26833 Text.Op = PrintName("GetLocalSint64");
26834 Text.Args.push_back(printArg<uint32_t>(PC));
26835 break;
26836case OP_GetLocalUint64:
26837 Text.Op = PrintName("GetLocalUint64");
26838 Text.Args.push_back(printArg<uint32_t>(PC));
26839 break;
26840case OP_GetLocalIntAP:
26841 Text.Op = PrintName("GetLocalIntAP");
26842 Text.Args.push_back(printArg<uint32_t>(PC));
26843 break;
26844case OP_GetLocalIntAPS:
26845 Text.Op = PrintName("GetLocalIntAPS");
26846 Text.Args.push_back(printArg<uint32_t>(PC));
26847 break;
26848case OP_GetLocalBool:
26849 Text.Op = PrintName("GetLocalBool");
26850 Text.Args.push_back(printArg<uint32_t>(PC));
26851 break;
26852case OP_GetLocalFixedPoint:
26853 Text.Op = PrintName("GetLocalFixedPoint");
26854 Text.Args.push_back(printArg<uint32_t>(PC));
26855 break;
26856case OP_GetLocalPtr:
26857 Text.Op = PrintName("GetLocalPtr");
26858 Text.Args.push_back(printArg<uint32_t>(PC));
26859 break;
26860case OP_GetLocalMemberPtr:
26861 Text.Op = PrintName("GetLocalMemberPtr");
26862 Text.Args.push_back(printArg<uint32_t>(PC));
26863 break;
26864case OP_GetLocalFloat:
26865 Text.Op = PrintName("GetLocalFloat");
26866 Text.Args.push_back(printArg<uint32_t>(PC));
26867 break;
26868#endif
26869#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26870bool emitGetLocalSint8( uint32_t , SourceInfo);
26871bool emitGetLocalUint8( uint32_t , SourceInfo);
26872bool emitGetLocalSint16( uint32_t , SourceInfo);
26873bool emitGetLocalUint16( uint32_t , SourceInfo);
26874bool emitGetLocalSint32( uint32_t , SourceInfo);
26875bool emitGetLocalUint32( uint32_t , SourceInfo);
26876bool emitGetLocalSint64( uint32_t , SourceInfo);
26877bool emitGetLocalUint64( uint32_t , SourceInfo);
26878bool emitGetLocalIntAP( uint32_t , SourceInfo);
26879bool emitGetLocalIntAPS( uint32_t , SourceInfo);
26880bool emitGetLocalBool( uint32_t , SourceInfo);
26881bool emitGetLocalFixedPoint( uint32_t , SourceInfo);
26882bool emitGetLocalPtr( uint32_t , SourceInfo);
26883bool emitGetLocalMemberPtr( uint32_t , SourceInfo);
26884bool emitGetLocalFloat( uint32_t , SourceInfo);
26885#if defined(GET_EVAL_PROTO)
26886template<PrimType>
26887bool emitGetLocal(uint32_t, SourceInfo);
26888#endif
26889#endif
26890#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26891[[nodiscard]] bool emitGetLocal(PrimType, uint32_t, SourceInfo I);
26892#endif
26893#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
26894bool
26895#if defined(GET_EVAL_IMPL)
26896EvalEmitter
26897#else
26898ByteCodeEmitter
26899#endif
26900::emitGetLocal(PrimType T0, uint32_t A0, SourceInfo I) {
26901 switch (T0) {
26902 case PT_Sint8:
26903#ifdef GET_LINK_IMPL
26904 return emitGetLocalSint8
26905#else
26906 return emitGetLocal<PT_Sint8>
26907#endif
26908 (A0, I);
26909 case PT_Uint8:
26910#ifdef GET_LINK_IMPL
26911 return emitGetLocalUint8
26912#else
26913 return emitGetLocal<PT_Uint8>
26914#endif
26915 (A0, I);
26916 case PT_Sint16:
26917#ifdef GET_LINK_IMPL
26918 return emitGetLocalSint16
26919#else
26920 return emitGetLocal<PT_Sint16>
26921#endif
26922 (A0, I);
26923 case PT_Uint16:
26924#ifdef GET_LINK_IMPL
26925 return emitGetLocalUint16
26926#else
26927 return emitGetLocal<PT_Uint16>
26928#endif
26929 (A0, I);
26930 case PT_Sint32:
26931#ifdef GET_LINK_IMPL
26932 return emitGetLocalSint32
26933#else
26934 return emitGetLocal<PT_Sint32>
26935#endif
26936 (A0, I);
26937 case PT_Uint32:
26938#ifdef GET_LINK_IMPL
26939 return emitGetLocalUint32
26940#else
26941 return emitGetLocal<PT_Uint32>
26942#endif
26943 (A0, I);
26944 case PT_Sint64:
26945#ifdef GET_LINK_IMPL
26946 return emitGetLocalSint64
26947#else
26948 return emitGetLocal<PT_Sint64>
26949#endif
26950 (A0, I);
26951 case PT_Uint64:
26952#ifdef GET_LINK_IMPL
26953 return emitGetLocalUint64
26954#else
26955 return emitGetLocal<PT_Uint64>
26956#endif
26957 (A0, I);
26958 case PT_IntAP:
26959#ifdef GET_LINK_IMPL
26960 return emitGetLocalIntAP
26961#else
26962 return emitGetLocal<PT_IntAP>
26963#endif
26964 (A0, I);
26965 case PT_IntAPS:
26966#ifdef GET_LINK_IMPL
26967 return emitGetLocalIntAPS
26968#else
26969 return emitGetLocal<PT_IntAPS>
26970#endif
26971 (A0, I);
26972 case PT_Bool:
26973#ifdef GET_LINK_IMPL
26974 return emitGetLocalBool
26975#else
26976 return emitGetLocal<PT_Bool>
26977#endif
26978 (A0, I);
26979 case PT_FixedPoint:
26980#ifdef GET_LINK_IMPL
26981 return emitGetLocalFixedPoint
26982#else
26983 return emitGetLocal<PT_FixedPoint>
26984#endif
26985 (A0, I);
26986 case PT_Ptr:
26987#ifdef GET_LINK_IMPL
26988 return emitGetLocalPtr
26989#else
26990 return emitGetLocal<PT_Ptr>
26991#endif
26992 (A0, I);
26993 case PT_MemberPtr:
26994#ifdef GET_LINK_IMPL
26995 return emitGetLocalMemberPtr
26996#else
26997 return emitGetLocal<PT_MemberPtr>
26998#endif
26999 (A0, I);
27000 case PT_Float:
27001#ifdef GET_LINK_IMPL
27002 return emitGetLocalFloat
27003#else
27004 return emitGetLocal<PT_Float>
27005#endif
27006 (A0, I);
27007 }
27008 llvm_unreachable("invalid enum value");
27009}
27010#endif
27011#ifdef GET_LINK_IMPL
27012bool ByteCodeEmitter::emitGetLocalSint8( uint32_t A0, SourceInfo L) {
27013 return emitOp<uint32_t>(OP_GetLocalSint8, A0, L);
27014}
27015bool ByteCodeEmitter::emitGetLocalUint8( uint32_t A0, SourceInfo L) {
27016 return emitOp<uint32_t>(OP_GetLocalUint8, A0, L);
27017}
27018bool ByteCodeEmitter::emitGetLocalSint16( uint32_t A0, SourceInfo L) {
27019 return emitOp<uint32_t>(OP_GetLocalSint16, A0, L);
27020}
27021bool ByteCodeEmitter::emitGetLocalUint16( uint32_t A0, SourceInfo L) {
27022 return emitOp<uint32_t>(OP_GetLocalUint16, A0, L);
27023}
27024bool ByteCodeEmitter::emitGetLocalSint32( uint32_t A0, SourceInfo L) {
27025 return emitOp<uint32_t>(OP_GetLocalSint32, A0, L);
27026}
27027bool ByteCodeEmitter::emitGetLocalUint32( uint32_t A0, SourceInfo L) {
27028 return emitOp<uint32_t>(OP_GetLocalUint32, A0, L);
27029}
27030bool ByteCodeEmitter::emitGetLocalSint64( uint32_t A0, SourceInfo L) {
27031 return emitOp<uint32_t>(OP_GetLocalSint64, A0, L);
27032}
27033bool ByteCodeEmitter::emitGetLocalUint64( uint32_t A0, SourceInfo L) {
27034 return emitOp<uint32_t>(OP_GetLocalUint64, A0, L);
27035}
27036bool ByteCodeEmitter::emitGetLocalIntAP( uint32_t A0, SourceInfo L) {
27037 return emitOp<uint32_t>(OP_GetLocalIntAP, A0, L);
27038}
27039bool ByteCodeEmitter::emitGetLocalIntAPS( uint32_t A0, SourceInfo L) {
27040 return emitOp<uint32_t>(OP_GetLocalIntAPS, A0, L);
27041}
27042bool ByteCodeEmitter::emitGetLocalBool( uint32_t A0, SourceInfo L) {
27043 return emitOp<uint32_t>(OP_GetLocalBool, A0, L);
27044}
27045bool ByteCodeEmitter::emitGetLocalFixedPoint( uint32_t A0, SourceInfo L) {
27046 return emitOp<uint32_t>(OP_GetLocalFixedPoint, A0, L);
27047}
27048bool ByteCodeEmitter::emitGetLocalPtr( uint32_t A0, SourceInfo L) {
27049 return emitOp<uint32_t>(OP_GetLocalPtr, A0, L);
27050}
27051bool ByteCodeEmitter::emitGetLocalMemberPtr( uint32_t A0, SourceInfo L) {
27052 return emitOp<uint32_t>(OP_GetLocalMemberPtr, A0, L);
27053}
27054bool ByteCodeEmitter::emitGetLocalFloat( uint32_t A0, SourceInfo L) {
27055 return emitOp<uint32_t>(OP_GetLocalFloat, A0, L);
27056}
27057#endif
27058#ifdef GET_OPCODE_NAMES
27059OP_GetLocalEnabled,
27060#endif
27061#ifdef GET_INTERPFN_LIST
27062&Interp_GetLocalEnabled,
27063#endif
27064#ifdef GET_INTERPFN_DISPATCHERS
27065PRESERVE_NONE
27066static bool Interp_GetLocalEnabled(InterpState &S) {
27067 {
27068 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27069 GetLocalEnabled(S, V0);
27070 }
27071#if USE_TAILCALLS
27072 MUSTTAIL return InterpNext(S);
27073#else
27074 return true;
27075#endif
27076}
27077#endif
27078#ifdef GET_DISASM
27079case OP_GetLocalEnabled:
27080 Text.Op = PrintName("GetLocalEnabled");
27081 Text.Args.push_back(printArg<uint32_t>(PC));
27082 break;
27083#endif
27084#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27085bool emitGetLocalEnabled( uint32_t , SourceInfo);
27086#endif
27087#ifdef GET_LINK_IMPL
27088bool ByteCodeEmitter::emitGetLocalEnabled( uint32_t A0, SourceInfo L) {
27089 return emitOp<uint32_t>(OP_GetLocalEnabled, A0, L);
27090}
27091#endif
27092#ifdef GET_OPCODE_NAMES
27093OP_GetMemberPtr,
27094#endif
27095#ifdef GET_INTERPFN_LIST
27096&Interp_GetMemberPtr,
27097#endif
27098#ifdef GET_INTERPFN_DISPATCHERS
27099PRESERVE_NONE
27100static bool Interp_GetMemberPtr(InterpState &S) {
27101 {
27102 const auto V0 = ReadArg<const ValueDecl*>(S, S.PC);
27103 GetMemberPtr(S, V0);
27104 }
27105#if USE_TAILCALLS
27106 MUSTTAIL return InterpNext(S);
27107#else
27108 return true;
27109#endif
27110}
27111#endif
27112#ifdef GET_DISASM
27113case OP_GetMemberPtr:
27114 Text.Op = PrintName("GetMemberPtr");
27115 Text.Args.push_back(printArg<const ValueDecl*>(PC));
27116 break;
27117#endif
27118#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27119bool emitGetMemberPtr( const ValueDecl* , SourceInfo);
27120#endif
27121#ifdef GET_LINK_IMPL
27122bool ByteCodeEmitter::emitGetMemberPtr( const ValueDecl* A0, SourceInfo L) {
27123 return emitOp<const ValueDecl*>(OP_GetMemberPtr, A0, L);
27124}
27125#endif
27126#ifdef GET_EVAL_IMPL
27127bool EvalEmitter::emitGetMemberPtr( const ValueDecl* A0, SourceInfo L) {
27128 if (!isActive()) return true;
27129 CurrentSource = L;
27130 return GetMemberPtr(S, A0);
27131}
27132#endif
27133#ifdef GET_OPCODE_NAMES
27134OP_GetMemberPtrBase,
27135#endif
27136#ifdef GET_INTERPFN_LIST
27137&Interp_GetMemberPtrBase,
27138#endif
27139#ifdef GET_INTERPFN_DISPATCHERS
27140PRESERVE_NONE
27141static bool Interp_GetMemberPtrBase(InterpState &S) {
27142 if (!GetMemberPtrBase(S)) return false;
27143#if USE_TAILCALLS
27144 MUSTTAIL return InterpNext(S);
27145#else
27146 return true;
27147#endif
27148}
27149#endif
27150#ifdef GET_DISASM
27151case OP_GetMemberPtrBase:
27152 Text.Op = PrintName("GetMemberPtrBase");
27153 break;
27154#endif
27155#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27156bool emitGetMemberPtrBase(SourceInfo);
27157#endif
27158#ifdef GET_LINK_IMPL
27159bool ByteCodeEmitter::emitGetMemberPtrBase(SourceInfo L) {
27160 return emitOp<>(OP_GetMemberPtrBase, L);
27161}
27162#endif
27163#ifdef GET_EVAL_IMPL
27164bool EvalEmitter::emitGetMemberPtrBase(SourceInfo L) {
27165 if (!isActive()) return true;
27166 CurrentSource = L;
27167 return GetMemberPtrBase(S);
27168}
27169#endif
27170#ifdef GET_OPCODE_NAMES
27171OP_GetMemberPtrDecl,
27172#endif
27173#ifdef GET_INTERPFN_LIST
27174&Interp_GetMemberPtrDecl,
27175#endif
27176#ifdef GET_INTERPFN_DISPATCHERS
27177PRESERVE_NONE
27178static bool Interp_GetMemberPtrDecl(InterpState &S) {
27179 if (!GetMemberPtrDecl(S)) return false;
27180#if USE_TAILCALLS
27181 MUSTTAIL return InterpNext(S);
27182#else
27183 return true;
27184#endif
27185}
27186#endif
27187#ifdef GET_DISASM
27188case OP_GetMemberPtrDecl:
27189 Text.Op = PrintName("GetMemberPtrDecl");
27190 break;
27191#endif
27192#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27193bool emitGetMemberPtrDecl(SourceInfo);
27194#endif
27195#ifdef GET_LINK_IMPL
27196bool ByteCodeEmitter::emitGetMemberPtrDecl(SourceInfo L) {
27197 return emitOp<>(OP_GetMemberPtrDecl, L);
27198}
27199#endif
27200#ifdef GET_EVAL_IMPL
27201bool EvalEmitter::emitGetMemberPtrDecl(SourceInfo L) {
27202 if (!isActive()) return true;
27203 CurrentSource = L;
27204 return GetMemberPtrDecl(S);
27205}
27206#endif
27207#ifdef GET_OPCODE_NAMES
27208OP_GetParamSint8,
27209OP_GetParamUint8,
27210OP_GetParamSint16,
27211OP_GetParamUint16,
27212OP_GetParamSint32,
27213OP_GetParamUint32,
27214OP_GetParamSint64,
27215OP_GetParamUint64,
27216OP_GetParamIntAP,
27217OP_GetParamIntAPS,
27218OP_GetParamBool,
27219OP_GetParamFixedPoint,
27220OP_GetParamPtr,
27221OP_GetParamMemberPtr,
27222OP_GetParamFloat,
27223#endif
27224#ifdef GET_INTERPFN_LIST
27225&Interp_GetParamSint8,
27226&Interp_GetParamUint8,
27227&Interp_GetParamSint16,
27228&Interp_GetParamUint16,
27229&Interp_GetParamSint32,
27230&Interp_GetParamUint32,
27231&Interp_GetParamSint64,
27232&Interp_GetParamUint64,
27233&Interp_GetParamIntAP,
27234&Interp_GetParamIntAPS,
27235&Interp_GetParamBool,
27236&Interp_GetParamFixedPoint,
27237&Interp_GetParamPtr,
27238&Interp_GetParamMemberPtr,
27239&Interp_GetParamFloat,
27240#endif
27241#ifdef GET_INTERPFN_DISPATCHERS
27242PRESERVE_NONE
27243static bool Interp_GetParamSint8(InterpState &S) {
27244 {
27245 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27246 if (!GetParam<PT_Sint8>(S, V0)) return false;
27247 }
27248#if USE_TAILCALLS
27249 MUSTTAIL return InterpNext(S);
27250#else
27251 return true;
27252#endif
27253}
27254PRESERVE_NONE
27255static bool Interp_GetParamUint8(InterpState &S) {
27256 {
27257 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27258 if (!GetParam<PT_Uint8>(S, V0)) return false;
27259 }
27260#if USE_TAILCALLS
27261 MUSTTAIL return InterpNext(S);
27262#else
27263 return true;
27264#endif
27265}
27266PRESERVE_NONE
27267static bool Interp_GetParamSint16(InterpState &S) {
27268 {
27269 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27270 if (!GetParam<PT_Sint16>(S, V0)) return false;
27271 }
27272#if USE_TAILCALLS
27273 MUSTTAIL return InterpNext(S);
27274#else
27275 return true;
27276#endif
27277}
27278PRESERVE_NONE
27279static bool Interp_GetParamUint16(InterpState &S) {
27280 {
27281 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27282 if (!GetParam<PT_Uint16>(S, V0)) return false;
27283 }
27284#if USE_TAILCALLS
27285 MUSTTAIL return InterpNext(S);
27286#else
27287 return true;
27288#endif
27289}
27290PRESERVE_NONE
27291static bool Interp_GetParamSint32(InterpState &S) {
27292 {
27293 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27294 if (!GetParam<PT_Sint32>(S, V0)) return false;
27295 }
27296#if USE_TAILCALLS
27297 MUSTTAIL return InterpNext(S);
27298#else
27299 return true;
27300#endif
27301}
27302PRESERVE_NONE
27303static bool Interp_GetParamUint32(InterpState &S) {
27304 {
27305 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27306 if (!GetParam<PT_Uint32>(S, V0)) return false;
27307 }
27308#if USE_TAILCALLS
27309 MUSTTAIL return InterpNext(S);
27310#else
27311 return true;
27312#endif
27313}
27314PRESERVE_NONE
27315static bool Interp_GetParamSint64(InterpState &S) {
27316 {
27317 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27318 if (!GetParam<PT_Sint64>(S, V0)) return false;
27319 }
27320#if USE_TAILCALLS
27321 MUSTTAIL return InterpNext(S);
27322#else
27323 return true;
27324#endif
27325}
27326PRESERVE_NONE
27327static bool Interp_GetParamUint64(InterpState &S) {
27328 {
27329 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27330 if (!GetParam<PT_Uint64>(S, V0)) return false;
27331 }
27332#if USE_TAILCALLS
27333 MUSTTAIL return InterpNext(S);
27334#else
27335 return true;
27336#endif
27337}
27338PRESERVE_NONE
27339static bool Interp_GetParamIntAP(InterpState &S) {
27340 {
27341 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27342 if (!GetParam<PT_IntAP>(S, V0)) return false;
27343 }
27344#if USE_TAILCALLS
27345 MUSTTAIL return InterpNext(S);
27346#else
27347 return true;
27348#endif
27349}
27350PRESERVE_NONE
27351static bool Interp_GetParamIntAPS(InterpState &S) {
27352 {
27353 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27354 if (!GetParam<PT_IntAPS>(S, V0)) return false;
27355 }
27356#if USE_TAILCALLS
27357 MUSTTAIL return InterpNext(S);
27358#else
27359 return true;
27360#endif
27361}
27362PRESERVE_NONE
27363static bool Interp_GetParamBool(InterpState &S) {
27364 {
27365 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27366 if (!GetParam<PT_Bool>(S, V0)) return false;
27367 }
27368#if USE_TAILCALLS
27369 MUSTTAIL return InterpNext(S);
27370#else
27371 return true;
27372#endif
27373}
27374PRESERVE_NONE
27375static bool Interp_GetParamFixedPoint(InterpState &S) {
27376 {
27377 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27378 if (!GetParam<PT_FixedPoint>(S, V0)) return false;
27379 }
27380#if USE_TAILCALLS
27381 MUSTTAIL return InterpNext(S);
27382#else
27383 return true;
27384#endif
27385}
27386PRESERVE_NONE
27387static bool Interp_GetParamPtr(InterpState &S) {
27388 {
27389 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27390 if (!GetParam<PT_Ptr>(S, V0)) return false;
27391 }
27392#if USE_TAILCALLS
27393 MUSTTAIL return InterpNext(S);
27394#else
27395 return true;
27396#endif
27397}
27398PRESERVE_NONE
27399static bool Interp_GetParamMemberPtr(InterpState &S) {
27400 {
27401 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27402 if (!GetParam<PT_MemberPtr>(S, V0)) return false;
27403 }
27404#if USE_TAILCALLS
27405 MUSTTAIL return InterpNext(S);
27406#else
27407 return true;
27408#endif
27409}
27410PRESERVE_NONE
27411static bool Interp_GetParamFloat(InterpState &S) {
27412 {
27413 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27414 if (!GetParam<PT_Float>(S, V0)) return false;
27415 }
27416#if USE_TAILCALLS
27417 MUSTTAIL return InterpNext(S);
27418#else
27419 return true;
27420#endif
27421}
27422#endif
27423#ifdef GET_DISASM
27424case OP_GetParamSint8:
27425 Text.Op = PrintName("GetParamSint8");
27426 Text.Args.push_back(printArg<uint32_t>(PC));
27427 break;
27428case OP_GetParamUint8:
27429 Text.Op = PrintName("GetParamUint8");
27430 Text.Args.push_back(printArg<uint32_t>(PC));
27431 break;
27432case OP_GetParamSint16:
27433 Text.Op = PrintName("GetParamSint16");
27434 Text.Args.push_back(printArg<uint32_t>(PC));
27435 break;
27436case OP_GetParamUint16:
27437 Text.Op = PrintName("GetParamUint16");
27438 Text.Args.push_back(printArg<uint32_t>(PC));
27439 break;
27440case OP_GetParamSint32:
27441 Text.Op = PrintName("GetParamSint32");
27442 Text.Args.push_back(printArg<uint32_t>(PC));
27443 break;
27444case OP_GetParamUint32:
27445 Text.Op = PrintName("GetParamUint32");
27446 Text.Args.push_back(printArg<uint32_t>(PC));
27447 break;
27448case OP_GetParamSint64:
27449 Text.Op = PrintName("GetParamSint64");
27450 Text.Args.push_back(printArg<uint32_t>(PC));
27451 break;
27452case OP_GetParamUint64:
27453 Text.Op = PrintName("GetParamUint64");
27454 Text.Args.push_back(printArg<uint32_t>(PC));
27455 break;
27456case OP_GetParamIntAP:
27457 Text.Op = PrintName("GetParamIntAP");
27458 Text.Args.push_back(printArg<uint32_t>(PC));
27459 break;
27460case OP_GetParamIntAPS:
27461 Text.Op = PrintName("GetParamIntAPS");
27462 Text.Args.push_back(printArg<uint32_t>(PC));
27463 break;
27464case OP_GetParamBool:
27465 Text.Op = PrintName("GetParamBool");
27466 Text.Args.push_back(printArg<uint32_t>(PC));
27467 break;
27468case OP_GetParamFixedPoint:
27469 Text.Op = PrintName("GetParamFixedPoint");
27470 Text.Args.push_back(printArg<uint32_t>(PC));
27471 break;
27472case OP_GetParamPtr:
27473 Text.Op = PrintName("GetParamPtr");
27474 Text.Args.push_back(printArg<uint32_t>(PC));
27475 break;
27476case OP_GetParamMemberPtr:
27477 Text.Op = PrintName("GetParamMemberPtr");
27478 Text.Args.push_back(printArg<uint32_t>(PC));
27479 break;
27480case OP_GetParamFloat:
27481 Text.Op = PrintName("GetParamFloat");
27482 Text.Args.push_back(printArg<uint32_t>(PC));
27483 break;
27484#endif
27485#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27486bool emitGetParamSint8( uint32_t , SourceInfo);
27487bool emitGetParamUint8( uint32_t , SourceInfo);
27488bool emitGetParamSint16( uint32_t , SourceInfo);
27489bool emitGetParamUint16( uint32_t , SourceInfo);
27490bool emitGetParamSint32( uint32_t , SourceInfo);
27491bool emitGetParamUint32( uint32_t , SourceInfo);
27492bool emitGetParamSint64( uint32_t , SourceInfo);
27493bool emitGetParamUint64( uint32_t , SourceInfo);
27494bool emitGetParamIntAP( uint32_t , SourceInfo);
27495bool emitGetParamIntAPS( uint32_t , SourceInfo);
27496bool emitGetParamBool( uint32_t , SourceInfo);
27497bool emitGetParamFixedPoint( uint32_t , SourceInfo);
27498bool emitGetParamPtr( uint32_t , SourceInfo);
27499bool emitGetParamMemberPtr( uint32_t , SourceInfo);
27500bool emitGetParamFloat( uint32_t , SourceInfo);
27501#endif
27502#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27503[[nodiscard]] bool emitGetParam(PrimType, uint32_t, SourceInfo I);
27504#endif
27505#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
27506bool
27507#if defined(GET_EVAL_IMPL)
27508EvalEmitter
27509#else
27510ByteCodeEmitter
27511#endif
27512::emitGetParam(PrimType T0, uint32_t A0, SourceInfo I) {
27513 switch (T0) {
27514 case PT_Sint8:
27515 return emitGetParamSint8(A0, I);
27516 case PT_Uint8:
27517 return emitGetParamUint8(A0, I);
27518 case PT_Sint16:
27519 return emitGetParamSint16(A0, I);
27520 case PT_Uint16:
27521 return emitGetParamUint16(A0, I);
27522 case PT_Sint32:
27523 return emitGetParamSint32(A0, I);
27524 case PT_Uint32:
27525 return emitGetParamUint32(A0, I);
27526 case PT_Sint64:
27527 return emitGetParamSint64(A0, I);
27528 case PT_Uint64:
27529 return emitGetParamUint64(A0, I);
27530 case PT_IntAP:
27531 return emitGetParamIntAP(A0, I);
27532 case PT_IntAPS:
27533 return emitGetParamIntAPS(A0, I);
27534 case PT_Bool:
27535 return emitGetParamBool(A0, I);
27536 case PT_FixedPoint:
27537 return emitGetParamFixedPoint(A0, I);
27538 case PT_Ptr:
27539 return emitGetParamPtr(A0, I);
27540 case PT_MemberPtr:
27541 return emitGetParamMemberPtr(A0, I);
27542 case PT_Float:
27543 return emitGetParamFloat(A0, I);
27544 }
27545 llvm_unreachable("invalid enum value");
27546}
27547#endif
27548#ifdef GET_LINK_IMPL
27549bool ByteCodeEmitter::emitGetParamSint8( uint32_t A0, SourceInfo L) {
27550 return emitOp<uint32_t>(OP_GetParamSint8, A0, L);
27551}
27552bool ByteCodeEmitter::emitGetParamUint8( uint32_t A0, SourceInfo L) {
27553 return emitOp<uint32_t>(OP_GetParamUint8, A0, L);
27554}
27555bool ByteCodeEmitter::emitGetParamSint16( uint32_t A0, SourceInfo L) {
27556 return emitOp<uint32_t>(OP_GetParamSint16, A0, L);
27557}
27558bool ByteCodeEmitter::emitGetParamUint16( uint32_t A0, SourceInfo L) {
27559 return emitOp<uint32_t>(OP_GetParamUint16, A0, L);
27560}
27561bool ByteCodeEmitter::emitGetParamSint32( uint32_t A0, SourceInfo L) {
27562 return emitOp<uint32_t>(OP_GetParamSint32, A0, L);
27563}
27564bool ByteCodeEmitter::emitGetParamUint32( uint32_t A0, SourceInfo L) {
27565 return emitOp<uint32_t>(OP_GetParamUint32, A0, L);
27566}
27567bool ByteCodeEmitter::emitGetParamSint64( uint32_t A0, SourceInfo L) {
27568 return emitOp<uint32_t>(OP_GetParamSint64, A0, L);
27569}
27570bool ByteCodeEmitter::emitGetParamUint64( uint32_t A0, SourceInfo L) {
27571 return emitOp<uint32_t>(OP_GetParamUint64, A0, L);
27572}
27573bool ByteCodeEmitter::emitGetParamIntAP( uint32_t A0, SourceInfo L) {
27574 return emitOp<uint32_t>(OP_GetParamIntAP, A0, L);
27575}
27576bool ByteCodeEmitter::emitGetParamIntAPS( uint32_t A0, SourceInfo L) {
27577 return emitOp<uint32_t>(OP_GetParamIntAPS, A0, L);
27578}
27579bool ByteCodeEmitter::emitGetParamBool( uint32_t A0, SourceInfo L) {
27580 return emitOp<uint32_t>(OP_GetParamBool, A0, L);
27581}
27582bool ByteCodeEmitter::emitGetParamFixedPoint( uint32_t A0, SourceInfo L) {
27583 return emitOp<uint32_t>(OP_GetParamFixedPoint, A0, L);
27584}
27585bool ByteCodeEmitter::emitGetParamPtr( uint32_t A0, SourceInfo L) {
27586 return emitOp<uint32_t>(OP_GetParamPtr, A0, L);
27587}
27588bool ByteCodeEmitter::emitGetParamMemberPtr( uint32_t A0, SourceInfo L) {
27589 return emitOp<uint32_t>(OP_GetParamMemberPtr, A0, L);
27590}
27591bool ByteCodeEmitter::emitGetParamFloat( uint32_t A0, SourceInfo L) {
27592 return emitOp<uint32_t>(OP_GetParamFloat, A0, L);
27593}
27594#endif
27595#ifdef GET_EVAL_IMPL
27596bool EvalEmitter::emitGetParamSint8( uint32_t A0, SourceInfo L) {
27597 if (!isActive()) return true;
27598 CurrentSource = L;
27599 return GetParam<PT_Sint8>(S, A0);
27600}
27601bool EvalEmitter::emitGetParamUint8( uint32_t A0, SourceInfo L) {
27602 if (!isActive()) return true;
27603 CurrentSource = L;
27604 return GetParam<PT_Uint8>(S, A0);
27605}
27606bool EvalEmitter::emitGetParamSint16( uint32_t A0, SourceInfo L) {
27607 if (!isActive()) return true;
27608 CurrentSource = L;
27609 return GetParam<PT_Sint16>(S, A0);
27610}
27611bool EvalEmitter::emitGetParamUint16( uint32_t A0, SourceInfo L) {
27612 if (!isActive()) return true;
27613 CurrentSource = L;
27614 return GetParam<PT_Uint16>(S, A0);
27615}
27616bool EvalEmitter::emitGetParamSint32( uint32_t A0, SourceInfo L) {
27617 if (!isActive()) return true;
27618 CurrentSource = L;
27619 return GetParam<PT_Sint32>(S, A0);
27620}
27621bool EvalEmitter::emitGetParamUint32( uint32_t A0, SourceInfo L) {
27622 if (!isActive()) return true;
27623 CurrentSource = L;
27624 return GetParam<PT_Uint32>(S, A0);
27625}
27626bool EvalEmitter::emitGetParamSint64( uint32_t A0, SourceInfo L) {
27627 if (!isActive()) return true;
27628 CurrentSource = L;
27629 return GetParam<PT_Sint64>(S, A0);
27630}
27631bool EvalEmitter::emitGetParamUint64( uint32_t A0, SourceInfo L) {
27632 if (!isActive()) return true;
27633 CurrentSource = L;
27634 return GetParam<PT_Uint64>(S, A0);
27635}
27636bool EvalEmitter::emitGetParamIntAP( uint32_t A0, SourceInfo L) {
27637 if (!isActive()) return true;
27638 CurrentSource = L;
27639 return GetParam<PT_IntAP>(S, A0);
27640}
27641bool EvalEmitter::emitGetParamIntAPS( uint32_t A0, SourceInfo L) {
27642 if (!isActive()) return true;
27643 CurrentSource = L;
27644 return GetParam<PT_IntAPS>(S, A0);
27645}
27646bool EvalEmitter::emitGetParamBool( uint32_t A0, SourceInfo L) {
27647 if (!isActive()) return true;
27648 CurrentSource = L;
27649 return GetParam<PT_Bool>(S, A0);
27650}
27651bool EvalEmitter::emitGetParamFixedPoint( uint32_t A0, SourceInfo L) {
27652 if (!isActive()) return true;
27653 CurrentSource = L;
27654 return GetParam<PT_FixedPoint>(S, A0);
27655}
27656bool EvalEmitter::emitGetParamPtr( uint32_t A0, SourceInfo L) {
27657 if (!isActive()) return true;
27658 CurrentSource = L;
27659 return GetParam<PT_Ptr>(S, A0);
27660}
27661bool EvalEmitter::emitGetParamMemberPtr( uint32_t A0, SourceInfo L) {
27662 if (!isActive()) return true;
27663 CurrentSource = L;
27664 return GetParam<PT_MemberPtr>(S, A0);
27665}
27666bool EvalEmitter::emitGetParamFloat( uint32_t A0, SourceInfo L) {
27667 if (!isActive()) return true;
27668 CurrentSource = L;
27669 return GetParam<PT_Float>(S, A0);
27670}
27671#endif
27672#ifdef GET_OPCODE_NAMES
27673OP_GetPtrBase,
27674#endif
27675#ifdef GET_INTERPFN_LIST
27676&Interp_GetPtrBase,
27677#endif
27678#ifdef GET_INTERPFN_DISPATCHERS
27679PRESERVE_NONE
27680static bool Interp_GetPtrBase(InterpState &S) {
27681 {
27682 CodePtr OpPC = S.PC;
27683 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27684 if (!GetPtrBase(S, OpPC, V0)) return false;
27685 }
27686#if USE_TAILCALLS
27687 MUSTTAIL return InterpNext(S);
27688#else
27689 return true;
27690#endif
27691}
27692#endif
27693#ifdef GET_DISASM
27694case OP_GetPtrBase:
27695 Text.Op = PrintName("GetPtrBase");
27696 Text.Args.push_back(printArg<uint32_t>(PC));
27697 break;
27698#endif
27699#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27700bool emitGetPtrBase( uint32_t , SourceInfo);
27701#endif
27702#ifdef GET_LINK_IMPL
27703bool ByteCodeEmitter::emitGetPtrBase( uint32_t A0, SourceInfo L) {
27704 return emitOp<uint32_t>(OP_GetPtrBase, A0, L);
27705}
27706#endif
27707#ifdef GET_EVAL_IMPL
27708bool EvalEmitter::emitGetPtrBase( uint32_t A0, SourceInfo L) {
27709 if (!isActive()) return true;
27710 CurrentSource = L;
27711 return GetPtrBase(S, CodePtr(), A0);
27712}
27713#endif
27714#ifdef GET_OPCODE_NAMES
27715OP_GetPtrBasePop,
27716#endif
27717#ifdef GET_INTERPFN_LIST
27718&Interp_GetPtrBasePop,
27719#endif
27720#ifdef GET_INTERPFN_DISPATCHERS
27721PRESERVE_NONE
27722static bool Interp_GetPtrBasePop(InterpState &S) {
27723 {
27724 CodePtr OpPC = S.PC;
27725 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27726 const auto V1 = ReadArg<bool>(S, S.PC);
27727 if (!GetPtrBasePop(S, OpPC, V0, V1)) return false;
27728 }
27729#if USE_TAILCALLS
27730 MUSTTAIL return InterpNext(S);
27731#else
27732 return true;
27733#endif
27734}
27735#endif
27736#ifdef GET_DISASM
27737case OP_GetPtrBasePop:
27738 Text.Op = PrintName("GetPtrBasePop");
27739 Text.Args.push_back(printArg<uint32_t>(PC));
27740 Text.Args.push_back(printArg<bool>(PC));
27741 break;
27742#endif
27743#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27744bool emitGetPtrBasePop( uint32_t , bool , SourceInfo);
27745#endif
27746#ifdef GET_LINK_IMPL
27747bool ByteCodeEmitter::emitGetPtrBasePop( uint32_t A0, bool A1, SourceInfo L) {
27748 return emitOp<uint32_t, bool>(OP_GetPtrBasePop, A0, A1, L);
27749}
27750#endif
27751#ifdef GET_EVAL_IMPL
27752bool EvalEmitter::emitGetPtrBasePop( uint32_t A0, bool A1, SourceInfo L) {
27753 if (!isActive()) return true;
27754 CurrentSource = L;
27755 return GetPtrBasePop(S, CodePtr(), A0, A1);
27756}
27757#endif
27758#ifdef GET_OPCODE_NAMES
27759OP_GetPtrDerivedPop,
27760#endif
27761#ifdef GET_INTERPFN_LIST
27762&Interp_GetPtrDerivedPop,
27763#endif
27764#ifdef GET_INTERPFN_DISPATCHERS
27765PRESERVE_NONE
27766static bool Interp_GetPtrDerivedPop(InterpState &S) {
27767 {
27768 CodePtr OpPC = S.PC;
27769 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27770 const auto V1 = ReadArg<bool>(S, S.PC);
27771 const auto V2 = ReadArg<const Type *>(S, S.PC);
27772 if (!GetPtrDerivedPop(S, OpPC, V0, V1, V2)) return false;
27773 }
27774#if USE_TAILCALLS
27775 MUSTTAIL return InterpNext(S);
27776#else
27777 return true;
27778#endif
27779}
27780#endif
27781#ifdef GET_DISASM
27782case OP_GetPtrDerivedPop:
27783 Text.Op = PrintName("GetPtrDerivedPop");
27784 Text.Args.push_back(printArg<uint32_t>(PC));
27785 Text.Args.push_back(printArg<bool>(PC));
27786 Text.Args.push_back(printArg<const Type *>(PC));
27787 break;
27788#endif
27789#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27790bool emitGetPtrDerivedPop( uint32_t , bool , const Type * , SourceInfo);
27791#endif
27792#ifdef GET_LINK_IMPL
27793bool ByteCodeEmitter::emitGetPtrDerivedPop( uint32_t A0, bool A1, const Type * A2, SourceInfo L) {
27794 return emitOp<uint32_t, bool, const Type *>(OP_GetPtrDerivedPop, A0, A1, A2, L);
27795}
27796#endif
27797#ifdef GET_EVAL_IMPL
27798bool EvalEmitter::emitGetPtrDerivedPop( uint32_t A0, bool A1, const Type * A2, SourceInfo L) {
27799 if (!isActive()) return true;
27800 CurrentSource = L;
27801 return GetPtrDerivedPop(S, CodePtr(), A0, A1, A2);
27802}
27803#endif
27804#ifdef GET_OPCODE_NAMES
27805OP_GetPtrField,
27806#endif
27807#ifdef GET_INTERPFN_LIST
27808&Interp_GetPtrField,
27809#endif
27810#ifdef GET_INTERPFN_DISPATCHERS
27811PRESERVE_NONE
27812static bool Interp_GetPtrField(InterpState &S) {
27813 {
27814 CodePtr OpPC = S.PC;
27815 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27816 if (!GetPtrField(S, OpPC, V0)) return false;
27817 }
27818#if USE_TAILCALLS
27819 MUSTTAIL return InterpNext(S);
27820#else
27821 return true;
27822#endif
27823}
27824#endif
27825#ifdef GET_DISASM
27826case OP_GetPtrField:
27827 Text.Op = PrintName("GetPtrField");
27828 Text.Args.push_back(printArg<uint32_t>(PC));
27829 break;
27830#endif
27831#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27832bool emitGetPtrField( uint32_t , SourceInfo);
27833#endif
27834#ifdef GET_LINK_IMPL
27835bool ByteCodeEmitter::emitGetPtrField( uint32_t A0, SourceInfo L) {
27836 return emitOp<uint32_t>(OP_GetPtrField, A0, L);
27837}
27838#endif
27839#ifdef GET_EVAL_IMPL
27840bool EvalEmitter::emitGetPtrField( uint32_t A0, SourceInfo L) {
27841 if (!isActive()) return true;
27842 CurrentSource = L;
27843 return GetPtrField(S, CodePtr(), A0);
27844}
27845#endif
27846#ifdef GET_OPCODE_NAMES
27847OP_GetPtrFieldPop,
27848#endif
27849#ifdef GET_INTERPFN_LIST
27850&Interp_GetPtrFieldPop,
27851#endif
27852#ifdef GET_INTERPFN_DISPATCHERS
27853PRESERVE_NONE
27854static bool Interp_GetPtrFieldPop(InterpState &S) {
27855 {
27856 CodePtr OpPC = S.PC;
27857 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27858 if (!GetPtrFieldPop(S, OpPC, V0)) return false;
27859 }
27860#if USE_TAILCALLS
27861 MUSTTAIL return InterpNext(S);
27862#else
27863 return true;
27864#endif
27865}
27866#endif
27867#ifdef GET_DISASM
27868case OP_GetPtrFieldPop:
27869 Text.Op = PrintName("GetPtrFieldPop");
27870 Text.Args.push_back(printArg<uint32_t>(PC));
27871 break;
27872#endif
27873#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27874bool emitGetPtrFieldPop( uint32_t , SourceInfo);
27875#endif
27876#ifdef GET_LINK_IMPL
27877bool ByteCodeEmitter::emitGetPtrFieldPop( uint32_t A0, SourceInfo L) {
27878 return emitOp<uint32_t>(OP_GetPtrFieldPop, A0, L);
27879}
27880#endif
27881#ifdef GET_EVAL_IMPL
27882bool EvalEmitter::emitGetPtrFieldPop( uint32_t A0, SourceInfo L) {
27883 if (!isActive()) return true;
27884 CurrentSource = L;
27885 return GetPtrFieldPop(S, CodePtr(), A0);
27886}
27887#endif
27888#ifdef GET_OPCODE_NAMES
27889OP_GetPtrGlobal,
27890#endif
27891#ifdef GET_INTERPFN_LIST
27892&Interp_GetPtrGlobal,
27893#endif
27894#ifdef GET_INTERPFN_DISPATCHERS
27895PRESERVE_NONE
27896static bool Interp_GetPtrGlobal(InterpState &S) {
27897 {
27898 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27899 if (!GetPtrGlobal(S, V0)) return false;
27900 }
27901#if USE_TAILCALLS
27902 MUSTTAIL return InterpNext(S);
27903#else
27904 return true;
27905#endif
27906}
27907#endif
27908#ifdef GET_DISASM
27909case OP_GetPtrGlobal:
27910 Text.Op = PrintName("GetPtrGlobal");
27911 Text.Args.push_back(printArg<uint32_t>(PC));
27912 break;
27913#endif
27914#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27915bool emitGetPtrGlobal( uint32_t , SourceInfo);
27916#endif
27917#ifdef GET_LINK_IMPL
27918bool ByteCodeEmitter::emitGetPtrGlobal( uint32_t A0, SourceInfo L) {
27919 return emitOp<uint32_t>(OP_GetPtrGlobal, A0, L);
27920}
27921#endif
27922#ifdef GET_EVAL_IMPL
27923bool EvalEmitter::emitGetPtrGlobal( uint32_t A0, SourceInfo L) {
27924 if (!isActive()) return true;
27925 CurrentSource = L;
27926 return GetPtrGlobal(S, A0);
27927}
27928#endif
27929#ifdef GET_OPCODE_NAMES
27930OP_GetPtrLocal,
27931#endif
27932#ifdef GET_INTERPFN_LIST
27933&Interp_GetPtrLocal,
27934#endif
27935#ifdef GET_INTERPFN_DISPATCHERS
27936PRESERVE_NONE
27937static bool Interp_GetPtrLocal(InterpState &S) {
27938 {
27939 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27940 if (!GetPtrLocal(S, V0)) return false;
27941 }
27942#if USE_TAILCALLS
27943 MUSTTAIL return InterpNext(S);
27944#else
27945 return true;
27946#endif
27947}
27948#endif
27949#ifdef GET_DISASM
27950case OP_GetPtrLocal:
27951 Text.Op = PrintName("GetPtrLocal");
27952 Text.Args.push_back(printArg<uint32_t>(PC));
27953 break;
27954#endif
27955#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27956bool emitGetPtrLocal( uint32_t , SourceInfo);
27957#endif
27958#ifdef GET_LINK_IMPL
27959bool ByteCodeEmitter::emitGetPtrLocal( uint32_t A0, SourceInfo L) {
27960 return emitOp<uint32_t>(OP_GetPtrLocal, A0, L);
27961}
27962#endif
27963#ifdef GET_OPCODE_NAMES
27964OP_GetPtrParam,
27965#endif
27966#ifdef GET_INTERPFN_LIST
27967&Interp_GetPtrParam,
27968#endif
27969#ifdef GET_INTERPFN_DISPATCHERS
27970PRESERVE_NONE
27971static bool Interp_GetPtrParam(InterpState &S) {
27972 {
27973 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27974 if (!GetPtrParam(S, V0)) return false;
27975 }
27976#if USE_TAILCALLS
27977 MUSTTAIL return InterpNext(S);
27978#else
27979 return true;
27980#endif
27981}
27982#endif
27983#ifdef GET_DISASM
27984case OP_GetPtrParam:
27985 Text.Op = PrintName("GetPtrParam");
27986 Text.Args.push_back(printArg<uint32_t>(PC));
27987 break;
27988#endif
27989#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27990bool emitGetPtrParam( uint32_t , SourceInfo);
27991#endif
27992#ifdef GET_LINK_IMPL
27993bool ByteCodeEmitter::emitGetPtrParam( uint32_t A0, SourceInfo L) {
27994 return emitOp<uint32_t>(OP_GetPtrParam, A0, L);
27995}
27996#endif
27997#ifdef GET_EVAL_IMPL
27998bool EvalEmitter::emitGetPtrParam( uint32_t A0, SourceInfo L) {
27999 if (!isActive()) return true;
28000 CurrentSource = L;
28001 return GetPtrParam(S, A0);
28002}
28003#endif
28004#ifdef GET_OPCODE_NAMES
28005OP_GetPtrThisBase,
28006#endif
28007#ifdef GET_INTERPFN_LIST
28008&Interp_GetPtrThisBase,
28009#endif
28010#ifdef GET_INTERPFN_DISPATCHERS
28011PRESERVE_NONE
28012static bool Interp_GetPtrThisBase(InterpState &S) {
28013 {
28014 CodePtr OpPC = S.PC;
28015 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28016 if (!GetPtrThisBase(S, OpPC, V0)) return false;
28017 }
28018#if USE_TAILCALLS
28019 MUSTTAIL return InterpNext(S);
28020#else
28021 return true;
28022#endif
28023}
28024#endif
28025#ifdef GET_DISASM
28026case OP_GetPtrThisBase:
28027 Text.Op = PrintName("GetPtrThisBase");
28028 Text.Args.push_back(printArg<uint32_t>(PC));
28029 break;
28030#endif
28031#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28032bool emitGetPtrThisBase( uint32_t , SourceInfo);
28033#endif
28034#ifdef GET_LINK_IMPL
28035bool ByteCodeEmitter::emitGetPtrThisBase( uint32_t A0, SourceInfo L) {
28036 return emitOp<uint32_t>(OP_GetPtrThisBase, A0, L);
28037}
28038#endif
28039#ifdef GET_EVAL_IMPL
28040bool EvalEmitter::emitGetPtrThisBase( uint32_t A0, SourceInfo L) {
28041 if (!isActive()) return true;
28042 CurrentSource = L;
28043 return GetPtrThisBase(S, CodePtr(), A0);
28044}
28045#endif
28046#ifdef GET_OPCODE_NAMES
28047OP_GetPtrThisField,
28048#endif
28049#ifdef GET_INTERPFN_LIST
28050&Interp_GetPtrThisField,
28051#endif
28052#ifdef GET_INTERPFN_DISPATCHERS
28053PRESERVE_NONE
28054static bool Interp_GetPtrThisField(InterpState &S) {
28055 {
28056 CodePtr OpPC = S.PC;
28057 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28058 if (!GetPtrThisField(S, OpPC, V0)) return false;
28059 }
28060#if USE_TAILCALLS
28061 MUSTTAIL return InterpNext(S);
28062#else
28063 return true;
28064#endif
28065}
28066#endif
28067#ifdef GET_DISASM
28068case OP_GetPtrThisField:
28069 Text.Op = PrintName("GetPtrThisField");
28070 Text.Args.push_back(printArg<uint32_t>(PC));
28071 break;
28072#endif
28073#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28074bool emitGetPtrThisField( uint32_t , SourceInfo);
28075#endif
28076#ifdef GET_LINK_IMPL
28077bool ByteCodeEmitter::emitGetPtrThisField( uint32_t A0, SourceInfo L) {
28078 return emitOp<uint32_t>(OP_GetPtrThisField, A0, L);
28079}
28080#endif
28081#ifdef GET_EVAL_IMPL
28082bool EvalEmitter::emitGetPtrThisField( uint32_t A0, SourceInfo L) {
28083 if (!isActive()) return true;
28084 CurrentSource = L;
28085 return GetPtrThisField(S, CodePtr(), A0);
28086}
28087#endif
28088#ifdef GET_OPCODE_NAMES
28089OP_GetPtrThisVirtBase,
28090#endif
28091#ifdef GET_INTERPFN_LIST
28092&Interp_GetPtrThisVirtBase,
28093#endif
28094#ifdef GET_INTERPFN_DISPATCHERS
28095PRESERVE_NONE
28096static bool Interp_GetPtrThisVirtBase(InterpState &S) {
28097 {
28098 CodePtr OpPC = S.PC;
28099 const auto V0 = ReadArg<const RecordDecl *>(S, S.PC);
28100 if (!GetPtrThisVirtBase(S, OpPC, V0)) return false;
28101 }
28102#if USE_TAILCALLS
28103 MUSTTAIL return InterpNext(S);
28104#else
28105 return true;
28106#endif
28107}
28108#endif
28109#ifdef GET_DISASM
28110case OP_GetPtrThisVirtBase:
28111 Text.Op = PrintName("GetPtrThisVirtBase");
28112 Text.Args.push_back(printArg<const RecordDecl *>(PC));
28113 break;
28114#endif
28115#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28116bool emitGetPtrThisVirtBase( const RecordDecl * , SourceInfo);
28117#endif
28118#ifdef GET_LINK_IMPL
28119bool ByteCodeEmitter::emitGetPtrThisVirtBase( const RecordDecl * A0, SourceInfo L) {
28120 return emitOp<const RecordDecl *>(OP_GetPtrThisVirtBase, A0, L);
28121}
28122#endif
28123#ifdef GET_EVAL_IMPL
28124bool EvalEmitter::emitGetPtrThisVirtBase( const RecordDecl * A0, SourceInfo L) {
28125 if (!isActive()) return true;
28126 CurrentSource = L;
28127 return GetPtrThisVirtBase(S, CodePtr(), A0);
28128}
28129#endif
28130#ifdef GET_OPCODE_NAMES
28131OP_GetPtrVirtBase,
28132#endif
28133#ifdef GET_INTERPFN_LIST
28134&Interp_GetPtrVirtBase,
28135#endif
28136#ifdef GET_INTERPFN_DISPATCHERS
28137PRESERVE_NONE
28138static bool Interp_GetPtrVirtBase(InterpState &S) {
28139 {
28140 CodePtr OpPC = S.PC;
28141 const auto V0 = ReadArg<const RecordDecl *>(S, S.PC);
28142 if (!GetPtrVirtBase(S, OpPC, V0)) return false;
28143 }
28144#if USE_TAILCALLS
28145 MUSTTAIL return InterpNext(S);
28146#else
28147 return true;
28148#endif
28149}
28150#endif
28151#ifdef GET_DISASM
28152case OP_GetPtrVirtBase:
28153 Text.Op = PrintName("GetPtrVirtBase");
28154 Text.Args.push_back(printArg<const RecordDecl *>(PC));
28155 break;
28156#endif
28157#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28158bool emitGetPtrVirtBase( const RecordDecl * , SourceInfo);
28159#endif
28160#ifdef GET_LINK_IMPL
28161bool ByteCodeEmitter::emitGetPtrVirtBase( const RecordDecl * A0, SourceInfo L) {
28162 return emitOp<const RecordDecl *>(OP_GetPtrVirtBase, A0, L);
28163}
28164#endif
28165#ifdef GET_EVAL_IMPL
28166bool EvalEmitter::emitGetPtrVirtBase( const RecordDecl * A0, SourceInfo L) {
28167 if (!isActive()) return true;
28168 CurrentSource = L;
28169 return GetPtrVirtBase(S, CodePtr(), A0);
28170}
28171#endif
28172#ifdef GET_OPCODE_NAMES
28173OP_GetPtrVirtBasePop,
28174#endif
28175#ifdef GET_INTERPFN_LIST
28176&Interp_GetPtrVirtBasePop,
28177#endif
28178#ifdef GET_INTERPFN_DISPATCHERS
28179PRESERVE_NONE
28180static bool Interp_GetPtrVirtBasePop(InterpState &S) {
28181 {
28182 CodePtr OpPC = S.PC;
28183 const auto V0 = ReadArg<const RecordDecl *>(S, S.PC);
28184 if (!GetPtrVirtBasePop(S, OpPC, V0)) return false;
28185 }
28186#if USE_TAILCALLS
28187 MUSTTAIL return InterpNext(S);
28188#else
28189 return true;
28190#endif
28191}
28192#endif
28193#ifdef GET_DISASM
28194case OP_GetPtrVirtBasePop:
28195 Text.Op = PrintName("GetPtrVirtBasePop");
28196 Text.Args.push_back(printArg<const RecordDecl *>(PC));
28197 break;
28198#endif
28199#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28200bool emitGetPtrVirtBasePop( const RecordDecl * , SourceInfo);
28201#endif
28202#ifdef GET_LINK_IMPL
28203bool ByteCodeEmitter::emitGetPtrVirtBasePop( const RecordDecl * A0, SourceInfo L) {
28204 return emitOp<const RecordDecl *>(OP_GetPtrVirtBasePop, A0, L);
28205}
28206#endif
28207#ifdef GET_EVAL_IMPL
28208bool EvalEmitter::emitGetPtrVirtBasePop( const RecordDecl * A0, SourceInfo L) {
28209 if (!isActive()) return true;
28210 CurrentSource = L;
28211 return GetPtrVirtBasePop(S, CodePtr(), A0);
28212}
28213#endif
28214#ifdef GET_OPCODE_NAMES
28215OP_GetRefGlobal,
28216#endif
28217#ifdef GET_INTERPFN_LIST
28218&Interp_GetRefGlobal,
28219#endif
28220#ifdef GET_INTERPFN_DISPATCHERS
28221PRESERVE_NONE
28222static bool Interp_GetRefGlobal(InterpState &S) {
28223 {
28224 CodePtr OpPC = S.PC;
28225 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28226 if (!GetRefGlobal(S, OpPC, V0)) return false;
28227 }
28228#if USE_TAILCALLS
28229 MUSTTAIL return InterpNext(S);
28230#else
28231 return true;
28232#endif
28233}
28234#endif
28235#ifdef GET_DISASM
28236case OP_GetRefGlobal:
28237 Text.Op = PrintName("GetRefGlobal");
28238 Text.Args.push_back(printArg<uint32_t>(PC));
28239 break;
28240#endif
28241#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28242bool emitGetRefGlobal( uint32_t , SourceInfo);
28243#endif
28244#ifdef GET_LINK_IMPL
28245bool ByteCodeEmitter::emitGetRefGlobal( uint32_t A0, SourceInfo L) {
28246 return emitOp<uint32_t>(OP_GetRefGlobal, A0, L);
28247}
28248#endif
28249#ifdef GET_EVAL_IMPL
28250bool EvalEmitter::emitGetRefGlobal( uint32_t A0, SourceInfo L) {
28251 if (!isActive()) return true;
28252 CurrentSource = L;
28253 return GetRefGlobal(S, CodePtr(), A0);
28254}
28255#endif
28256#ifdef GET_OPCODE_NAMES
28257OP_GetRefLocal,
28258#endif
28259#ifdef GET_INTERPFN_LIST
28260&Interp_GetRefLocal,
28261#endif
28262#ifdef GET_INTERPFN_DISPATCHERS
28263PRESERVE_NONE
28264static bool Interp_GetRefLocal(InterpState &S) {
28265 {
28266 CodePtr OpPC = S.PC;
28267 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28268 if (!GetRefLocal(S, OpPC, V0)) return false;
28269 }
28270#if USE_TAILCALLS
28271 MUSTTAIL return InterpNext(S);
28272#else
28273 return true;
28274#endif
28275}
28276#endif
28277#ifdef GET_DISASM
28278case OP_GetRefLocal:
28279 Text.Op = PrintName("GetRefLocal");
28280 Text.Args.push_back(printArg<uint32_t>(PC));
28281 break;
28282#endif
28283#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28284bool emitGetRefLocal( uint32_t , SourceInfo);
28285#endif
28286#ifdef GET_LINK_IMPL
28287bool ByteCodeEmitter::emitGetRefLocal( uint32_t A0, SourceInfo L) {
28288 return emitOp<uint32_t>(OP_GetRefLocal, A0, L);
28289}
28290#endif
28291#ifdef GET_OPCODE_NAMES
28292OP_GetStringPtr,
28293#endif
28294#ifdef GET_INTERPFN_LIST
28295&Interp_GetStringPtr,
28296#endif
28297#ifdef GET_INTERPFN_DISPATCHERS
28298PRESERVE_NONE
28299static bool Interp_GetStringPtr(InterpState &S) {
28300 {
28301 const auto V0 = ReadArg<const Expr *>(S, S.PC);
28302 GetStringPtr(S, V0);
28303 }
28304#if USE_TAILCALLS
28305 MUSTTAIL return InterpNext(S);
28306#else
28307 return true;
28308#endif
28309}
28310#endif
28311#ifdef GET_DISASM
28312case OP_GetStringPtr:
28313 Text.Op = PrintName("GetStringPtr");
28314 Text.Args.push_back(printArg<const Expr *>(PC));
28315 break;
28316#endif
28317#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28318bool emitGetStringPtr( const Expr * , SourceInfo);
28319#endif
28320#ifdef GET_LINK_IMPL
28321bool ByteCodeEmitter::emitGetStringPtr( const Expr * A0, SourceInfo L) {
28322 return emitOp<const Expr *>(OP_GetStringPtr, A0, L);
28323}
28324#endif
28325#ifdef GET_EVAL_IMPL
28326bool EvalEmitter::emitGetStringPtr( const Expr * A0, SourceInfo L) {
28327 if (!isActive()) return true;
28328 CurrentSource = L;
28329 return GetStringPtr(S, A0);
28330}
28331#endif
28332#ifdef GET_OPCODE_NAMES
28333OP_GetThisFieldSint8,
28334OP_GetThisFieldUint8,
28335OP_GetThisFieldSint16,
28336OP_GetThisFieldUint16,
28337OP_GetThisFieldSint32,
28338OP_GetThisFieldUint32,
28339OP_GetThisFieldSint64,
28340OP_GetThisFieldUint64,
28341OP_GetThisFieldIntAP,
28342OP_GetThisFieldIntAPS,
28343OP_GetThisFieldBool,
28344OP_GetThisFieldFixedPoint,
28345OP_GetThisFieldPtr,
28346OP_GetThisFieldMemberPtr,
28347OP_GetThisFieldFloat,
28348#endif
28349#ifdef GET_INTERPFN_LIST
28350&Interp_GetThisFieldSint8,
28351&Interp_GetThisFieldUint8,
28352&Interp_GetThisFieldSint16,
28353&Interp_GetThisFieldUint16,
28354&Interp_GetThisFieldSint32,
28355&Interp_GetThisFieldUint32,
28356&Interp_GetThisFieldSint64,
28357&Interp_GetThisFieldUint64,
28358&Interp_GetThisFieldIntAP,
28359&Interp_GetThisFieldIntAPS,
28360&Interp_GetThisFieldBool,
28361&Interp_GetThisFieldFixedPoint,
28362&Interp_GetThisFieldPtr,
28363&Interp_GetThisFieldMemberPtr,
28364&Interp_GetThisFieldFloat,
28365#endif
28366#ifdef GET_INTERPFN_DISPATCHERS
28367PRESERVE_NONE
28368static bool Interp_GetThisFieldSint8(InterpState &S) {
28369 {
28370 CodePtr OpPC = S.PC;
28371 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28372 if (!GetThisField<PT_Sint8>(S, OpPC, V0)) return false;
28373 }
28374#if USE_TAILCALLS
28375 MUSTTAIL return InterpNext(S);
28376#else
28377 return true;
28378#endif
28379}
28380PRESERVE_NONE
28381static bool Interp_GetThisFieldUint8(InterpState &S) {
28382 {
28383 CodePtr OpPC = S.PC;
28384 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28385 if (!GetThisField<PT_Uint8>(S, OpPC, V0)) return false;
28386 }
28387#if USE_TAILCALLS
28388 MUSTTAIL return InterpNext(S);
28389#else
28390 return true;
28391#endif
28392}
28393PRESERVE_NONE
28394static bool Interp_GetThisFieldSint16(InterpState &S) {
28395 {
28396 CodePtr OpPC = S.PC;
28397 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28398 if (!GetThisField<PT_Sint16>(S, OpPC, V0)) return false;
28399 }
28400#if USE_TAILCALLS
28401 MUSTTAIL return InterpNext(S);
28402#else
28403 return true;
28404#endif
28405}
28406PRESERVE_NONE
28407static bool Interp_GetThisFieldUint16(InterpState &S) {
28408 {
28409 CodePtr OpPC = S.PC;
28410 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28411 if (!GetThisField<PT_Uint16>(S, OpPC, V0)) return false;
28412 }
28413#if USE_TAILCALLS
28414 MUSTTAIL return InterpNext(S);
28415#else
28416 return true;
28417#endif
28418}
28419PRESERVE_NONE
28420static bool Interp_GetThisFieldSint32(InterpState &S) {
28421 {
28422 CodePtr OpPC = S.PC;
28423 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28424 if (!GetThisField<PT_Sint32>(S, OpPC, V0)) return false;
28425 }
28426#if USE_TAILCALLS
28427 MUSTTAIL return InterpNext(S);
28428#else
28429 return true;
28430#endif
28431}
28432PRESERVE_NONE
28433static bool Interp_GetThisFieldUint32(InterpState &S) {
28434 {
28435 CodePtr OpPC = S.PC;
28436 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28437 if (!GetThisField<PT_Uint32>(S, OpPC, V0)) return false;
28438 }
28439#if USE_TAILCALLS
28440 MUSTTAIL return InterpNext(S);
28441#else
28442 return true;
28443#endif
28444}
28445PRESERVE_NONE
28446static bool Interp_GetThisFieldSint64(InterpState &S) {
28447 {
28448 CodePtr OpPC = S.PC;
28449 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28450 if (!GetThisField<PT_Sint64>(S, OpPC, V0)) return false;
28451 }
28452#if USE_TAILCALLS
28453 MUSTTAIL return InterpNext(S);
28454#else
28455 return true;
28456#endif
28457}
28458PRESERVE_NONE
28459static bool Interp_GetThisFieldUint64(InterpState &S) {
28460 {
28461 CodePtr OpPC = S.PC;
28462 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28463 if (!GetThisField<PT_Uint64>(S, OpPC, V0)) return false;
28464 }
28465#if USE_TAILCALLS
28466 MUSTTAIL return InterpNext(S);
28467#else
28468 return true;
28469#endif
28470}
28471PRESERVE_NONE
28472static bool Interp_GetThisFieldIntAP(InterpState &S) {
28473 {
28474 CodePtr OpPC = S.PC;
28475 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28476 if (!GetThisField<PT_IntAP>(S, OpPC, V0)) return false;
28477 }
28478#if USE_TAILCALLS
28479 MUSTTAIL return InterpNext(S);
28480#else
28481 return true;
28482#endif
28483}
28484PRESERVE_NONE
28485static bool Interp_GetThisFieldIntAPS(InterpState &S) {
28486 {
28487 CodePtr OpPC = S.PC;
28488 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28489 if (!GetThisField<PT_IntAPS>(S, OpPC, V0)) return false;
28490 }
28491#if USE_TAILCALLS
28492 MUSTTAIL return InterpNext(S);
28493#else
28494 return true;
28495#endif
28496}
28497PRESERVE_NONE
28498static bool Interp_GetThisFieldBool(InterpState &S) {
28499 {
28500 CodePtr OpPC = S.PC;
28501 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28502 if (!GetThisField<PT_Bool>(S, OpPC, V0)) return false;
28503 }
28504#if USE_TAILCALLS
28505 MUSTTAIL return InterpNext(S);
28506#else
28507 return true;
28508#endif
28509}
28510PRESERVE_NONE
28511static bool Interp_GetThisFieldFixedPoint(InterpState &S) {
28512 {
28513 CodePtr OpPC = S.PC;
28514 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28515 if (!GetThisField<PT_FixedPoint>(S, OpPC, V0)) return false;
28516 }
28517#if USE_TAILCALLS
28518 MUSTTAIL return InterpNext(S);
28519#else
28520 return true;
28521#endif
28522}
28523PRESERVE_NONE
28524static bool Interp_GetThisFieldPtr(InterpState &S) {
28525 {
28526 CodePtr OpPC = S.PC;
28527 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28528 if (!GetThisField<PT_Ptr>(S, OpPC, V0)) return false;
28529 }
28530#if USE_TAILCALLS
28531 MUSTTAIL return InterpNext(S);
28532#else
28533 return true;
28534#endif
28535}
28536PRESERVE_NONE
28537static bool Interp_GetThisFieldMemberPtr(InterpState &S) {
28538 {
28539 CodePtr OpPC = S.PC;
28540 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28541 if (!GetThisField<PT_MemberPtr>(S, OpPC, V0)) return false;
28542 }
28543#if USE_TAILCALLS
28544 MUSTTAIL return InterpNext(S);
28545#else
28546 return true;
28547#endif
28548}
28549PRESERVE_NONE
28550static bool Interp_GetThisFieldFloat(InterpState &S) {
28551 {
28552 CodePtr OpPC = S.PC;
28553 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28554 if (!GetThisField<PT_Float>(S, OpPC, V0)) return false;
28555 }
28556#if USE_TAILCALLS
28557 MUSTTAIL return InterpNext(S);
28558#else
28559 return true;
28560#endif
28561}
28562#endif
28563#ifdef GET_DISASM
28564case OP_GetThisFieldSint8:
28565 Text.Op = PrintName("GetThisFieldSint8");
28566 Text.Args.push_back(printArg<uint32_t>(PC));
28567 break;
28568case OP_GetThisFieldUint8:
28569 Text.Op = PrintName("GetThisFieldUint8");
28570 Text.Args.push_back(printArg<uint32_t>(PC));
28571 break;
28572case OP_GetThisFieldSint16:
28573 Text.Op = PrintName("GetThisFieldSint16");
28574 Text.Args.push_back(printArg<uint32_t>(PC));
28575 break;
28576case OP_GetThisFieldUint16:
28577 Text.Op = PrintName("GetThisFieldUint16");
28578 Text.Args.push_back(printArg<uint32_t>(PC));
28579 break;
28580case OP_GetThisFieldSint32:
28581 Text.Op = PrintName("GetThisFieldSint32");
28582 Text.Args.push_back(printArg<uint32_t>(PC));
28583 break;
28584case OP_GetThisFieldUint32:
28585 Text.Op = PrintName("GetThisFieldUint32");
28586 Text.Args.push_back(printArg<uint32_t>(PC));
28587 break;
28588case OP_GetThisFieldSint64:
28589 Text.Op = PrintName("GetThisFieldSint64");
28590 Text.Args.push_back(printArg<uint32_t>(PC));
28591 break;
28592case OP_GetThisFieldUint64:
28593 Text.Op = PrintName("GetThisFieldUint64");
28594 Text.Args.push_back(printArg<uint32_t>(PC));
28595 break;
28596case OP_GetThisFieldIntAP:
28597 Text.Op = PrintName("GetThisFieldIntAP");
28598 Text.Args.push_back(printArg<uint32_t>(PC));
28599 break;
28600case OP_GetThisFieldIntAPS:
28601 Text.Op = PrintName("GetThisFieldIntAPS");
28602 Text.Args.push_back(printArg<uint32_t>(PC));
28603 break;
28604case OP_GetThisFieldBool:
28605 Text.Op = PrintName("GetThisFieldBool");
28606 Text.Args.push_back(printArg<uint32_t>(PC));
28607 break;
28608case OP_GetThisFieldFixedPoint:
28609 Text.Op = PrintName("GetThisFieldFixedPoint");
28610 Text.Args.push_back(printArg<uint32_t>(PC));
28611 break;
28612case OP_GetThisFieldPtr:
28613 Text.Op = PrintName("GetThisFieldPtr");
28614 Text.Args.push_back(printArg<uint32_t>(PC));
28615 break;
28616case OP_GetThisFieldMemberPtr:
28617 Text.Op = PrintName("GetThisFieldMemberPtr");
28618 Text.Args.push_back(printArg<uint32_t>(PC));
28619 break;
28620case OP_GetThisFieldFloat:
28621 Text.Op = PrintName("GetThisFieldFloat");
28622 Text.Args.push_back(printArg<uint32_t>(PC));
28623 break;
28624#endif
28625#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28626bool emitGetThisFieldSint8( uint32_t , SourceInfo);
28627bool emitGetThisFieldUint8( uint32_t , SourceInfo);
28628bool emitGetThisFieldSint16( uint32_t , SourceInfo);
28629bool emitGetThisFieldUint16( uint32_t , SourceInfo);
28630bool emitGetThisFieldSint32( uint32_t , SourceInfo);
28631bool emitGetThisFieldUint32( uint32_t , SourceInfo);
28632bool emitGetThisFieldSint64( uint32_t , SourceInfo);
28633bool emitGetThisFieldUint64( uint32_t , SourceInfo);
28634bool emitGetThisFieldIntAP( uint32_t , SourceInfo);
28635bool emitGetThisFieldIntAPS( uint32_t , SourceInfo);
28636bool emitGetThisFieldBool( uint32_t , SourceInfo);
28637bool emitGetThisFieldFixedPoint( uint32_t , SourceInfo);
28638bool emitGetThisFieldPtr( uint32_t , SourceInfo);
28639bool emitGetThisFieldMemberPtr( uint32_t , SourceInfo);
28640bool emitGetThisFieldFloat( uint32_t , SourceInfo);
28641#endif
28642#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28643[[nodiscard]] bool emitGetThisField(PrimType, uint32_t, SourceInfo I);
28644#endif
28645#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
28646bool
28647#if defined(GET_EVAL_IMPL)
28648EvalEmitter
28649#else
28650ByteCodeEmitter
28651#endif
28652::emitGetThisField(PrimType T0, uint32_t A0, SourceInfo I) {
28653 switch (T0) {
28654 case PT_Sint8:
28655 return emitGetThisFieldSint8(A0, I);
28656 case PT_Uint8:
28657 return emitGetThisFieldUint8(A0, I);
28658 case PT_Sint16:
28659 return emitGetThisFieldSint16(A0, I);
28660 case PT_Uint16:
28661 return emitGetThisFieldUint16(A0, I);
28662 case PT_Sint32:
28663 return emitGetThisFieldSint32(A0, I);
28664 case PT_Uint32:
28665 return emitGetThisFieldUint32(A0, I);
28666 case PT_Sint64:
28667 return emitGetThisFieldSint64(A0, I);
28668 case PT_Uint64:
28669 return emitGetThisFieldUint64(A0, I);
28670 case PT_IntAP:
28671 return emitGetThisFieldIntAP(A0, I);
28672 case PT_IntAPS:
28673 return emitGetThisFieldIntAPS(A0, I);
28674 case PT_Bool:
28675 return emitGetThisFieldBool(A0, I);
28676 case PT_FixedPoint:
28677 return emitGetThisFieldFixedPoint(A0, I);
28678 case PT_Ptr:
28679 return emitGetThisFieldPtr(A0, I);
28680 case PT_MemberPtr:
28681 return emitGetThisFieldMemberPtr(A0, I);
28682 case PT_Float:
28683 return emitGetThisFieldFloat(A0, I);
28684 }
28685 llvm_unreachable("invalid enum value");
28686}
28687#endif
28688#ifdef GET_LINK_IMPL
28689bool ByteCodeEmitter::emitGetThisFieldSint8( uint32_t A0, SourceInfo L) {
28690 return emitOp<uint32_t>(OP_GetThisFieldSint8, A0, L);
28691}
28692bool ByteCodeEmitter::emitGetThisFieldUint8( uint32_t A0, SourceInfo L) {
28693 return emitOp<uint32_t>(OP_GetThisFieldUint8, A0, L);
28694}
28695bool ByteCodeEmitter::emitGetThisFieldSint16( uint32_t A0, SourceInfo L) {
28696 return emitOp<uint32_t>(OP_GetThisFieldSint16, A0, L);
28697}
28698bool ByteCodeEmitter::emitGetThisFieldUint16( uint32_t A0, SourceInfo L) {
28699 return emitOp<uint32_t>(OP_GetThisFieldUint16, A0, L);
28700}
28701bool ByteCodeEmitter::emitGetThisFieldSint32( uint32_t A0, SourceInfo L) {
28702 return emitOp<uint32_t>(OP_GetThisFieldSint32, A0, L);
28703}
28704bool ByteCodeEmitter::emitGetThisFieldUint32( uint32_t A0, SourceInfo L) {
28705 return emitOp<uint32_t>(OP_GetThisFieldUint32, A0, L);
28706}
28707bool ByteCodeEmitter::emitGetThisFieldSint64( uint32_t A0, SourceInfo L) {
28708 return emitOp<uint32_t>(OP_GetThisFieldSint64, A0, L);
28709}
28710bool ByteCodeEmitter::emitGetThisFieldUint64( uint32_t A0, SourceInfo L) {
28711 return emitOp<uint32_t>(OP_GetThisFieldUint64, A0, L);
28712}
28713bool ByteCodeEmitter::emitGetThisFieldIntAP( uint32_t A0, SourceInfo L) {
28714 return emitOp<uint32_t>(OP_GetThisFieldIntAP, A0, L);
28715}
28716bool ByteCodeEmitter::emitGetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
28717 return emitOp<uint32_t>(OP_GetThisFieldIntAPS, A0, L);
28718}
28719bool ByteCodeEmitter::emitGetThisFieldBool( uint32_t A0, SourceInfo L) {
28720 return emitOp<uint32_t>(OP_GetThisFieldBool, A0, L);
28721}
28722bool ByteCodeEmitter::emitGetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
28723 return emitOp<uint32_t>(OP_GetThisFieldFixedPoint, A0, L);
28724}
28725bool ByteCodeEmitter::emitGetThisFieldPtr( uint32_t A0, SourceInfo L) {
28726 return emitOp<uint32_t>(OP_GetThisFieldPtr, A0, L);
28727}
28728bool ByteCodeEmitter::emitGetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
28729 return emitOp<uint32_t>(OP_GetThisFieldMemberPtr, A0, L);
28730}
28731bool ByteCodeEmitter::emitGetThisFieldFloat( uint32_t A0, SourceInfo L) {
28732 return emitOp<uint32_t>(OP_GetThisFieldFloat, A0, L);
28733}
28734#endif
28735#ifdef GET_EVAL_IMPL
28736bool EvalEmitter::emitGetThisFieldSint8( uint32_t A0, SourceInfo L) {
28737 if (!isActive()) return true;
28738 CurrentSource = L;
28739 return GetThisField<PT_Sint8>(S, CodePtr(), A0);
28740}
28741bool EvalEmitter::emitGetThisFieldUint8( uint32_t A0, SourceInfo L) {
28742 if (!isActive()) return true;
28743 CurrentSource = L;
28744 return GetThisField<PT_Uint8>(S, CodePtr(), A0);
28745}
28746bool EvalEmitter::emitGetThisFieldSint16( uint32_t A0, SourceInfo L) {
28747 if (!isActive()) return true;
28748 CurrentSource = L;
28749 return GetThisField<PT_Sint16>(S, CodePtr(), A0);
28750}
28751bool EvalEmitter::emitGetThisFieldUint16( uint32_t A0, SourceInfo L) {
28752 if (!isActive()) return true;
28753 CurrentSource = L;
28754 return GetThisField<PT_Uint16>(S, CodePtr(), A0);
28755}
28756bool EvalEmitter::emitGetThisFieldSint32( uint32_t A0, SourceInfo L) {
28757 if (!isActive()) return true;
28758 CurrentSource = L;
28759 return GetThisField<PT_Sint32>(S, CodePtr(), A0);
28760}
28761bool EvalEmitter::emitGetThisFieldUint32( uint32_t A0, SourceInfo L) {
28762 if (!isActive()) return true;
28763 CurrentSource = L;
28764 return GetThisField<PT_Uint32>(S, CodePtr(), A0);
28765}
28766bool EvalEmitter::emitGetThisFieldSint64( uint32_t A0, SourceInfo L) {
28767 if (!isActive()) return true;
28768 CurrentSource = L;
28769 return GetThisField<PT_Sint64>(S, CodePtr(), A0);
28770}
28771bool EvalEmitter::emitGetThisFieldUint64( uint32_t A0, SourceInfo L) {
28772 if (!isActive()) return true;
28773 CurrentSource = L;
28774 return GetThisField<PT_Uint64>(S, CodePtr(), A0);
28775}
28776bool EvalEmitter::emitGetThisFieldIntAP( uint32_t A0, SourceInfo L) {
28777 if (!isActive()) return true;
28778 CurrentSource = L;
28779 return GetThisField<PT_IntAP>(S, CodePtr(), A0);
28780}
28781bool EvalEmitter::emitGetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
28782 if (!isActive()) return true;
28783 CurrentSource = L;
28784 return GetThisField<PT_IntAPS>(S, CodePtr(), A0);
28785}
28786bool EvalEmitter::emitGetThisFieldBool( uint32_t A0, SourceInfo L) {
28787 if (!isActive()) return true;
28788 CurrentSource = L;
28789 return GetThisField<PT_Bool>(S, CodePtr(), A0);
28790}
28791bool EvalEmitter::emitGetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
28792 if (!isActive()) return true;
28793 CurrentSource = L;
28794 return GetThisField<PT_FixedPoint>(S, CodePtr(), A0);
28795}
28796bool EvalEmitter::emitGetThisFieldPtr( uint32_t A0, SourceInfo L) {
28797 if (!isActive()) return true;
28798 CurrentSource = L;
28799 return GetThisField<PT_Ptr>(S, CodePtr(), A0);
28800}
28801bool EvalEmitter::emitGetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
28802 if (!isActive()) return true;
28803 CurrentSource = L;
28804 return GetThisField<PT_MemberPtr>(S, CodePtr(), A0);
28805}
28806bool EvalEmitter::emitGetThisFieldFloat( uint32_t A0, SourceInfo L) {
28807 if (!isActive()) return true;
28808 CurrentSource = L;
28809 return GetThisField<PT_Float>(S, CodePtr(), A0);
28810}
28811#endif
28812#ifdef GET_OPCODE_NAMES
28813OP_GetTypeid,
28814#endif
28815#ifdef GET_INTERPFN_LIST
28816&Interp_GetTypeid,
28817#endif
28818#ifdef GET_INTERPFN_DISPATCHERS
28819PRESERVE_NONE
28820static bool Interp_GetTypeid(InterpState &S) {
28821 {
28822 const auto V0 = ReadArg<const Type *>(S, S.PC);
28823 const auto V1 = ReadArg<const Type *>(S, S.PC);
28824 GetTypeid(S, V0, V1);
28825 }
28826#if USE_TAILCALLS
28827 MUSTTAIL return InterpNext(S);
28828#else
28829 return true;
28830#endif
28831}
28832#endif
28833#ifdef GET_DISASM
28834case OP_GetTypeid:
28835 Text.Op = PrintName("GetTypeid");
28836 Text.Args.push_back(printArg<const Type *>(PC));
28837 Text.Args.push_back(printArg<const Type *>(PC));
28838 break;
28839#endif
28840#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28841bool emitGetTypeid( const Type * , const Type * , SourceInfo);
28842#endif
28843#ifdef GET_LINK_IMPL
28844bool ByteCodeEmitter::emitGetTypeid( const Type * A0, const Type * A1, SourceInfo L) {
28845 return emitOp<const Type *, const Type *>(OP_GetTypeid, A0, A1, L);
28846}
28847#endif
28848#ifdef GET_EVAL_IMPL
28849bool EvalEmitter::emitGetTypeid( const Type * A0, const Type * A1, SourceInfo L) {
28850 if (!isActive()) return true;
28851 CurrentSource = L;
28852 return GetTypeid(S, A0, A1);
28853}
28854#endif
28855#ifdef GET_OPCODE_NAMES
28856OP_GetTypeidPtr,
28857#endif
28858#ifdef GET_INTERPFN_LIST
28859&Interp_GetTypeidPtr,
28860#endif
28861#ifdef GET_INTERPFN_DISPATCHERS
28862PRESERVE_NONE
28863static bool Interp_GetTypeidPtr(InterpState &S) {
28864 {
28865 CodePtr OpPC = S.PC;
28866 const auto V0 = ReadArg<const Type *>(S, S.PC);
28867 if (!GetTypeidPtr(S, OpPC, V0)) return false;
28868 }
28869#if USE_TAILCALLS
28870 MUSTTAIL return InterpNext(S);
28871#else
28872 return true;
28873#endif
28874}
28875#endif
28876#ifdef GET_DISASM
28877case OP_GetTypeidPtr:
28878 Text.Op = PrintName("GetTypeidPtr");
28879 Text.Args.push_back(printArg<const Type *>(PC));
28880 break;
28881#endif
28882#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28883bool emitGetTypeidPtr( const Type * , SourceInfo);
28884#endif
28885#ifdef GET_LINK_IMPL
28886bool ByteCodeEmitter::emitGetTypeidPtr( const Type * A0, SourceInfo L) {
28887 return emitOp<const Type *>(OP_GetTypeidPtr, A0, L);
28888}
28889#endif
28890#ifdef GET_EVAL_IMPL
28891bool EvalEmitter::emitGetTypeidPtr( const Type * A0, SourceInfo L) {
28892 if (!isActive()) return true;
28893 CurrentSource = L;
28894 return GetTypeidPtr(S, CodePtr(), A0);
28895}
28896#endif
28897#ifdef GET_OPCODE_NAMES
28898OP_IncSint8,
28899OP_IncUint8,
28900OP_IncSint16,
28901OP_IncUint16,
28902OP_IncSint32,
28903OP_IncUint32,
28904OP_IncSint64,
28905OP_IncUint64,
28906OP_IncIntAP,
28907OP_IncIntAPS,
28908OP_IncBool,
28909OP_IncFixedPoint,
28910#endif
28911#ifdef GET_INTERPFN_LIST
28912&Interp_IncSint8,
28913&Interp_IncUint8,
28914&Interp_IncSint16,
28915&Interp_IncUint16,
28916&Interp_IncSint32,
28917&Interp_IncUint32,
28918&Interp_IncSint64,
28919&Interp_IncUint64,
28920&Interp_IncIntAP,
28921&Interp_IncIntAPS,
28922&Interp_IncBool,
28923&Interp_IncFixedPoint,
28924#endif
28925#ifdef GET_INTERPFN_DISPATCHERS
28926PRESERVE_NONE
28927static bool Interp_IncSint8(InterpState &S) {
28928 {
28929 CodePtr OpPC = S.PC;
28930 const auto V0 = ReadArg<bool>(S, S.PC);
28931 if (!Inc<PT_Sint8>(S, OpPC, V0)) return false;
28932 }
28933#if USE_TAILCALLS
28934 MUSTTAIL return InterpNext(S);
28935#else
28936 return true;
28937#endif
28938}
28939PRESERVE_NONE
28940static bool Interp_IncUint8(InterpState &S) {
28941 {
28942 CodePtr OpPC = S.PC;
28943 const auto V0 = ReadArg<bool>(S, S.PC);
28944 if (!Inc<PT_Uint8>(S, OpPC, V0)) return false;
28945 }
28946#if USE_TAILCALLS
28947 MUSTTAIL return InterpNext(S);
28948#else
28949 return true;
28950#endif
28951}
28952PRESERVE_NONE
28953static bool Interp_IncSint16(InterpState &S) {
28954 {
28955 CodePtr OpPC = S.PC;
28956 const auto V0 = ReadArg<bool>(S, S.PC);
28957 if (!Inc<PT_Sint16>(S, OpPC, V0)) return false;
28958 }
28959#if USE_TAILCALLS
28960 MUSTTAIL return InterpNext(S);
28961#else
28962 return true;
28963#endif
28964}
28965PRESERVE_NONE
28966static bool Interp_IncUint16(InterpState &S) {
28967 {
28968 CodePtr OpPC = S.PC;
28969 const auto V0 = ReadArg<bool>(S, S.PC);
28970 if (!Inc<PT_Uint16>(S, OpPC, V0)) return false;
28971 }
28972#if USE_TAILCALLS
28973 MUSTTAIL return InterpNext(S);
28974#else
28975 return true;
28976#endif
28977}
28978PRESERVE_NONE
28979static bool Interp_IncSint32(InterpState &S) {
28980 {
28981 CodePtr OpPC = S.PC;
28982 const auto V0 = ReadArg<bool>(S, S.PC);
28983 if (!Inc<PT_Sint32>(S, OpPC, V0)) return false;
28984 }
28985#if USE_TAILCALLS
28986 MUSTTAIL return InterpNext(S);
28987#else
28988 return true;
28989#endif
28990}
28991PRESERVE_NONE
28992static bool Interp_IncUint32(InterpState &S) {
28993 {
28994 CodePtr OpPC = S.PC;
28995 const auto V0 = ReadArg<bool>(S, S.PC);
28996 if (!Inc<PT_Uint32>(S, OpPC, V0)) return false;
28997 }
28998#if USE_TAILCALLS
28999 MUSTTAIL return InterpNext(S);
29000#else
29001 return true;
29002#endif
29003}
29004PRESERVE_NONE
29005static bool Interp_IncSint64(InterpState &S) {
29006 {
29007 CodePtr OpPC = S.PC;
29008 const auto V0 = ReadArg<bool>(S, S.PC);
29009 if (!Inc<PT_Sint64>(S, OpPC, V0)) return false;
29010 }
29011#if USE_TAILCALLS
29012 MUSTTAIL return InterpNext(S);
29013#else
29014 return true;
29015#endif
29016}
29017PRESERVE_NONE
29018static bool Interp_IncUint64(InterpState &S) {
29019 {
29020 CodePtr OpPC = S.PC;
29021 const auto V0 = ReadArg<bool>(S, S.PC);
29022 if (!Inc<PT_Uint64>(S, OpPC, V0)) return false;
29023 }
29024#if USE_TAILCALLS
29025 MUSTTAIL return InterpNext(S);
29026#else
29027 return true;
29028#endif
29029}
29030PRESERVE_NONE
29031static bool Interp_IncIntAP(InterpState &S) {
29032 {
29033 CodePtr OpPC = S.PC;
29034 const auto V0 = ReadArg<bool>(S, S.PC);
29035 if (!Inc<PT_IntAP>(S, OpPC, V0)) return false;
29036 }
29037#if USE_TAILCALLS
29038 MUSTTAIL return InterpNext(S);
29039#else
29040 return true;
29041#endif
29042}
29043PRESERVE_NONE
29044static bool Interp_IncIntAPS(InterpState &S) {
29045 {
29046 CodePtr OpPC = S.PC;
29047 const auto V0 = ReadArg<bool>(S, S.PC);
29048 if (!Inc<PT_IntAPS>(S, OpPC, V0)) return false;
29049 }
29050#if USE_TAILCALLS
29051 MUSTTAIL return InterpNext(S);
29052#else
29053 return true;
29054#endif
29055}
29056PRESERVE_NONE
29057static bool Interp_IncBool(InterpState &S) {
29058 {
29059 CodePtr OpPC = S.PC;
29060 const auto V0 = ReadArg<bool>(S, S.PC);
29061 if (!Inc<PT_Bool>(S, OpPC, V0)) return false;
29062 }
29063#if USE_TAILCALLS
29064 MUSTTAIL return InterpNext(S);
29065#else
29066 return true;
29067#endif
29068}
29069PRESERVE_NONE
29070static bool Interp_IncFixedPoint(InterpState &S) {
29071 {
29072 CodePtr OpPC = S.PC;
29073 const auto V0 = ReadArg<bool>(S, S.PC);
29074 if (!Inc<PT_FixedPoint>(S, OpPC, V0)) return false;
29075 }
29076#if USE_TAILCALLS
29077 MUSTTAIL return InterpNext(S);
29078#else
29079 return true;
29080#endif
29081}
29082#endif
29083#ifdef GET_DISASM
29084case OP_IncSint8:
29085 Text.Op = PrintName("IncSint8");
29086 Text.Args.push_back(printArg<bool>(PC));
29087 break;
29088case OP_IncUint8:
29089 Text.Op = PrintName("IncUint8");
29090 Text.Args.push_back(printArg<bool>(PC));
29091 break;
29092case OP_IncSint16:
29093 Text.Op = PrintName("IncSint16");
29094 Text.Args.push_back(printArg<bool>(PC));
29095 break;
29096case OP_IncUint16:
29097 Text.Op = PrintName("IncUint16");
29098 Text.Args.push_back(printArg<bool>(PC));
29099 break;
29100case OP_IncSint32:
29101 Text.Op = PrintName("IncSint32");
29102 Text.Args.push_back(printArg<bool>(PC));
29103 break;
29104case OP_IncUint32:
29105 Text.Op = PrintName("IncUint32");
29106 Text.Args.push_back(printArg<bool>(PC));
29107 break;
29108case OP_IncSint64:
29109 Text.Op = PrintName("IncSint64");
29110 Text.Args.push_back(printArg<bool>(PC));
29111 break;
29112case OP_IncUint64:
29113 Text.Op = PrintName("IncUint64");
29114 Text.Args.push_back(printArg<bool>(PC));
29115 break;
29116case OP_IncIntAP:
29117 Text.Op = PrintName("IncIntAP");
29118 Text.Args.push_back(printArg<bool>(PC));
29119 break;
29120case OP_IncIntAPS:
29121 Text.Op = PrintName("IncIntAPS");
29122 Text.Args.push_back(printArg<bool>(PC));
29123 break;
29124case OP_IncBool:
29125 Text.Op = PrintName("IncBool");
29126 Text.Args.push_back(printArg<bool>(PC));
29127 break;
29128case OP_IncFixedPoint:
29129 Text.Op = PrintName("IncFixedPoint");
29130 Text.Args.push_back(printArg<bool>(PC));
29131 break;
29132#endif
29133#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29134bool emitIncSint8( bool , SourceInfo);
29135bool emitIncUint8( bool , SourceInfo);
29136bool emitIncSint16( bool , SourceInfo);
29137bool emitIncUint16( bool , SourceInfo);
29138bool emitIncSint32( bool , SourceInfo);
29139bool emitIncUint32( bool , SourceInfo);
29140bool emitIncSint64( bool , SourceInfo);
29141bool emitIncUint64( bool , SourceInfo);
29142bool emitIncIntAP( bool , SourceInfo);
29143bool emitIncIntAPS( bool , SourceInfo);
29144bool emitIncBool( bool , SourceInfo);
29145bool emitIncFixedPoint( bool , SourceInfo);
29146#endif
29147#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29148[[nodiscard]] bool emitInc(PrimType, bool, SourceInfo I);
29149#endif
29150#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
29151bool
29152#if defined(GET_EVAL_IMPL)
29153EvalEmitter
29154#else
29155ByteCodeEmitter
29156#endif
29157::emitInc(PrimType T0, bool A0, SourceInfo I) {
29158 switch (T0) {
29159 case PT_Sint8:
29160 return emitIncSint8(A0, I);
29161 case PT_Uint8:
29162 return emitIncUint8(A0, I);
29163 case PT_Sint16:
29164 return emitIncSint16(A0, I);
29165 case PT_Uint16:
29166 return emitIncUint16(A0, I);
29167 case PT_Sint32:
29168 return emitIncSint32(A0, I);
29169 case PT_Uint32:
29170 return emitIncUint32(A0, I);
29171 case PT_Sint64:
29172 return emitIncSint64(A0, I);
29173 case PT_Uint64:
29174 return emitIncUint64(A0, I);
29175 case PT_IntAP:
29176 return emitIncIntAP(A0, I);
29177 case PT_IntAPS:
29178 return emitIncIntAPS(A0, I);
29179 case PT_Bool:
29180 return emitIncBool(A0, I);
29181 case PT_FixedPoint:
29182 return emitIncFixedPoint(A0, I);
29183 default: llvm_unreachable("invalid type: emitInc");
29184 }
29185 llvm_unreachable("invalid enum value");
29186}
29187#endif
29188#ifdef GET_LINK_IMPL
29189bool ByteCodeEmitter::emitIncSint8( bool A0, SourceInfo L) {
29190 return emitOp<bool>(OP_IncSint8, A0, L);
29191}
29192bool ByteCodeEmitter::emitIncUint8( bool A0, SourceInfo L) {
29193 return emitOp<bool>(OP_IncUint8, A0, L);
29194}
29195bool ByteCodeEmitter::emitIncSint16( bool A0, SourceInfo L) {
29196 return emitOp<bool>(OP_IncSint16, A0, L);
29197}
29198bool ByteCodeEmitter::emitIncUint16( bool A0, SourceInfo L) {
29199 return emitOp<bool>(OP_IncUint16, A0, L);
29200}
29201bool ByteCodeEmitter::emitIncSint32( bool A0, SourceInfo L) {
29202 return emitOp<bool>(OP_IncSint32, A0, L);
29203}
29204bool ByteCodeEmitter::emitIncUint32( bool A0, SourceInfo L) {
29205 return emitOp<bool>(OP_IncUint32, A0, L);
29206}
29207bool ByteCodeEmitter::emitIncSint64( bool A0, SourceInfo L) {
29208 return emitOp<bool>(OP_IncSint64, A0, L);
29209}
29210bool ByteCodeEmitter::emitIncUint64( bool A0, SourceInfo L) {
29211 return emitOp<bool>(OP_IncUint64, A0, L);
29212}
29213bool ByteCodeEmitter::emitIncIntAP( bool A0, SourceInfo L) {
29214 return emitOp<bool>(OP_IncIntAP, A0, L);
29215}
29216bool ByteCodeEmitter::emitIncIntAPS( bool A0, SourceInfo L) {
29217 return emitOp<bool>(OP_IncIntAPS, A0, L);
29218}
29219bool ByteCodeEmitter::emitIncBool( bool A0, SourceInfo L) {
29220 return emitOp<bool>(OP_IncBool, A0, L);
29221}
29222bool ByteCodeEmitter::emitIncFixedPoint( bool A0, SourceInfo L) {
29223 return emitOp<bool>(OP_IncFixedPoint, A0, L);
29224}
29225#endif
29226#ifdef GET_EVAL_IMPL
29227bool EvalEmitter::emitIncSint8( bool A0, SourceInfo L) {
29228 if (!isActive()) return true;
29229 CurrentSource = L;
29230 return Inc<PT_Sint8>(S, CodePtr(), A0);
29231}
29232bool EvalEmitter::emitIncUint8( bool A0, SourceInfo L) {
29233 if (!isActive()) return true;
29234 CurrentSource = L;
29235 return Inc<PT_Uint8>(S, CodePtr(), A0);
29236}
29237bool EvalEmitter::emitIncSint16( bool A0, SourceInfo L) {
29238 if (!isActive()) return true;
29239 CurrentSource = L;
29240 return Inc<PT_Sint16>(S, CodePtr(), A0);
29241}
29242bool EvalEmitter::emitIncUint16( bool A0, SourceInfo L) {
29243 if (!isActive()) return true;
29244 CurrentSource = L;
29245 return Inc<PT_Uint16>(S, CodePtr(), A0);
29246}
29247bool EvalEmitter::emitIncSint32( bool A0, SourceInfo L) {
29248 if (!isActive()) return true;
29249 CurrentSource = L;
29250 return Inc<PT_Sint32>(S, CodePtr(), A0);
29251}
29252bool EvalEmitter::emitIncUint32( bool A0, SourceInfo L) {
29253 if (!isActive()) return true;
29254 CurrentSource = L;
29255 return Inc<PT_Uint32>(S, CodePtr(), A0);
29256}
29257bool EvalEmitter::emitIncSint64( bool A0, SourceInfo L) {
29258 if (!isActive()) return true;
29259 CurrentSource = L;
29260 return Inc<PT_Sint64>(S, CodePtr(), A0);
29261}
29262bool EvalEmitter::emitIncUint64( bool A0, SourceInfo L) {
29263 if (!isActive()) return true;
29264 CurrentSource = L;
29265 return Inc<PT_Uint64>(S, CodePtr(), A0);
29266}
29267bool EvalEmitter::emitIncIntAP( bool A0, SourceInfo L) {
29268 if (!isActive()) return true;
29269 CurrentSource = L;
29270 return Inc<PT_IntAP>(S, CodePtr(), A0);
29271}
29272bool EvalEmitter::emitIncIntAPS( bool A0, SourceInfo L) {
29273 if (!isActive()) return true;
29274 CurrentSource = L;
29275 return Inc<PT_IntAPS>(S, CodePtr(), A0);
29276}
29277bool EvalEmitter::emitIncBool( bool A0, SourceInfo L) {
29278 if (!isActive()) return true;
29279 CurrentSource = L;
29280 return Inc<PT_Bool>(S, CodePtr(), A0);
29281}
29282bool EvalEmitter::emitIncFixedPoint( bool A0, SourceInfo L) {
29283 if (!isActive()) return true;
29284 CurrentSource = L;
29285 return Inc<PT_FixedPoint>(S, CodePtr(), A0);
29286}
29287#endif
29288#ifdef GET_OPCODE_NAMES
29289OP_IncBitfieldSint8,
29290OP_IncBitfieldUint8,
29291OP_IncBitfieldSint16,
29292OP_IncBitfieldUint16,
29293OP_IncBitfieldSint32,
29294OP_IncBitfieldUint32,
29295OP_IncBitfieldSint64,
29296OP_IncBitfieldUint64,
29297OP_IncBitfieldIntAP,
29298OP_IncBitfieldIntAPS,
29299OP_IncBitfieldBool,
29300OP_IncBitfieldFixedPoint,
29301#endif
29302#ifdef GET_INTERPFN_LIST
29303&Interp_IncBitfieldSint8,
29304&Interp_IncBitfieldUint8,
29305&Interp_IncBitfieldSint16,
29306&Interp_IncBitfieldUint16,
29307&Interp_IncBitfieldSint32,
29308&Interp_IncBitfieldUint32,
29309&Interp_IncBitfieldSint64,
29310&Interp_IncBitfieldUint64,
29311&Interp_IncBitfieldIntAP,
29312&Interp_IncBitfieldIntAPS,
29313&Interp_IncBitfieldBool,
29314&Interp_IncBitfieldFixedPoint,
29315#endif
29316#ifdef GET_INTERPFN_DISPATCHERS
29317PRESERVE_NONE
29318static bool Interp_IncBitfieldSint8(InterpState &S) {
29319 {
29320 CodePtr OpPC = S.PC;
29321 const auto V0 = ReadArg<bool>(S, S.PC);
29322 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29323 if (!IncBitfield<PT_Sint8>(S, OpPC, V0, V1)) return false;
29324 }
29325#if USE_TAILCALLS
29326 MUSTTAIL return InterpNext(S);
29327#else
29328 return true;
29329#endif
29330}
29331PRESERVE_NONE
29332static bool Interp_IncBitfieldUint8(InterpState &S) {
29333 {
29334 CodePtr OpPC = S.PC;
29335 const auto V0 = ReadArg<bool>(S, S.PC);
29336 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29337 if (!IncBitfield<PT_Uint8>(S, OpPC, V0, V1)) return false;
29338 }
29339#if USE_TAILCALLS
29340 MUSTTAIL return InterpNext(S);
29341#else
29342 return true;
29343#endif
29344}
29345PRESERVE_NONE
29346static bool Interp_IncBitfieldSint16(InterpState &S) {
29347 {
29348 CodePtr OpPC = S.PC;
29349 const auto V0 = ReadArg<bool>(S, S.PC);
29350 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29351 if (!IncBitfield<PT_Sint16>(S, OpPC, V0, V1)) return false;
29352 }
29353#if USE_TAILCALLS
29354 MUSTTAIL return InterpNext(S);
29355#else
29356 return true;
29357#endif
29358}
29359PRESERVE_NONE
29360static bool Interp_IncBitfieldUint16(InterpState &S) {
29361 {
29362 CodePtr OpPC = S.PC;
29363 const auto V0 = ReadArg<bool>(S, S.PC);
29364 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29365 if (!IncBitfield<PT_Uint16>(S, OpPC, V0, V1)) return false;
29366 }
29367#if USE_TAILCALLS
29368 MUSTTAIL return InterpNext(S);
29369#else
29370 return true;
29371#endif
29372}
29373PRESERVE_NONE
29374static bool Interp_IncBitfieldSint32(InterpState &S) {
29375 {
29376 CodePtr OpPC = S.PC;
29377 const auto V0 = ReadArg<bool>(S, S.PC);
29378 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29379 if (!IncBitfield<PT_Sint32>(S, OpPC, V0, V1)) return false;
29380 }
29381#if USE_TAILCALLS
29382 MUSTTAIL return InterpNext(S);
29383#else
29384 return true;
29385#endif
29386}
29387PRESERVE_NONE
29388static bool Interp_IncBitfieldUint32(InterpState &S) {
29389 {
29390 CodePtr OpPC = S.PC;
29391 const auto V0 = ReadArg<bool>(S, S.PC);
29392 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29393 if (!IncBitfield<PT_Uint32>(S, OpPC, V0, V1)) return false;
29394 }
29395#if USE_TAILCALLS
29396 MUSTTAIL return InterpNext(S);
29397#else
29398 return true;
29399#endif
29400}
29401PRESERVE_NONE
29402static bool Interp_IncBitfieldSint64(InterpState &S) {
29403 {
29404 CodePtr OpPC = S.PC;
29405 const auto V0 = ReadArg<bool>(S, S.PC);
29406 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29407 if (!IncBitfield<PT_Sint64>(S, OpPC, V0, V1)) return false;
29408 }
29409#if USE_TAILCALLS
29410 MUSTTAIL return InterpNext(S);
29411#else
29412 return true;
29413#endif
29414}
29415PRESERVE_NONE
29416static bool Interp_IncBitfieldUint64(InterpState &S) {
29417 {
29418 CodePtr OpPC = S.PC;
29419 const auto V0 = ReadArg<bool>(S, S.PC);
29420 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29421 if (!IncBitfield<PT_Uint64>(S, OpPC, V0, V1)) return false;
29422 }
29423#if USE_TAILCALLS
29424 MUSTTAIL return InterpNext(S);
29425#else
29426 return true;
29427#endif
29428}
29429PRESERVE_NONE
29430static bool Interp_IncBitfieldIntAP(InterpState &S) {
29431 {
29432 CodePtr OpPC = S.PC;
29433 const auto V0 = ReadArg<bool>(S, S.PC);
29434 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29435 if (!IncBitfield<PT_IntAP>(S, OpPC, V0, V1)) return false;
29436 }
29437#if USE_TAILCALLS
29438 MUSTTAIL return InterpNext(S);
29439#else
29440 return true;
29441#endif
29442}
29443PRESERVE_NONE
29444static bool Interp_IncBitfieldIntAPS(InterpState &S) {
29445 {
29446 CodePtr OpPC = S.PC;
29447 const auto V0 = ReadArg<bool>(S, S.PC);
29448 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29449 if (!IncBitfield<PT_IntAPS>(S, OpPC, V0, V1)) return false;
29450 }
29451#if USE_TAILCALLS
29452 MUSTTAIL return InterpNext(S);
29453#else
29454 return true;
29455#endif
29456}
29457PRESERVE_NONE
29458static bool Interp_IncBitfieldBool(InterpState &S) {
29459 {
29460 CodePtr OpPC = S.PC;
29461 const auto V0 = ReadArg<bool>(S, S.PC);
29462 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29463 if (!IncBitfield<PT_Bool>(S, OpPC, V0, V1)) return false;
29464 }
29465#if USE_TAILCALLS
29466 MUSTTAIL return InterpNext(S);
29467#else
29468 return true;
29469#endif
29470}
29471PRESERVE_NONE
29472static bool Interp_IncBitfieldFixedPoint(InterpState &S) {
29473 {
29474 CodePtr OpPC = S.PC;
29475 const auto V0 = ReadArg<bool>(S, S.PC);
29476 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29477 if (!IncBitfield<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
29478 }
29479#if USE_TAILCALLS
29480 MUSTTAIL return InterpNext(S);
29481#else
29482 return true;
29483#endif
29484}
29485#endif
29486#ifdef GET_DISASM
29487case OP_IncBitfieldSint8:
29488 Text.Op = PrintName("IncBitfieldSint8");
29489 Text.Args.push_back(printArg<bool>(PC));
29490 Text.Args.push_back(printArg<uint32_t>(PC));
29491 break;
29492case OP_IncBitfieldUint8:
29493 Text.Op = PrintName("IncBitfieldUint8");
29494 Text.Args.push_back(printArg<bool>(PC));
29495 Text.Args.push_back(printArg<uint32_t>(PC));
29496 break;
29497case OP_IncBitfieldSint16:
29498 Text.Op = PrintName("IncBitfieldSint16");
29499 Text.Args.push_back(printArg<bool>(PC));
29500 Text.Args.push_back(printArg<uint32_t>(PC));
29501 break;
29502case OP_IncBitfieldUint16:
29503 Text.Op = PrintName("IncBitfieldUint16");
29504 Text.Args.push_back(printArg<bool>(PC));
29505 Text.Args.push_back(printArg<uint32_t>(PC));
29506 break;
29507case OP_IncBitfieldSint32:
29508 Text.Op = PrintName("IncBitfieldSint32");
29509 Text.Args.push_back(printArg<bool>(PC));
29510 Text.Args.push_back(printArg<uint32_t>(PC));
29511 break;
29512case OP_IncBitfieldUint32:
29513 Text.Op = PrintName("IncBitfieldUint32");
29514 Text.Args.push_back(printArg<bool>(PC));
29515 Text.Args.push_back(printArg<uint32_t>(PC));
29516 break;
29517case OP_IncBitfieldSint64:
29518 Text.Op = PrintName("IncBitfieldSint64");
29519 Text.Args.push_back(printArg<bool>(PC));
29520 Text.Args.push_back(printArg<uint32_t>(PC));
29521 break;
29522case OP_IncBitfieldUint64:
29523 Text.Op = PrintName("IncBitfieldUint64");
29524 Text.Args.push_back(printArg<bool>(PC));
29525 Text.Args.push_back(printArg<uint32_t>(PC));
29526 break;
29527case OP_IncBitfieldIntAP:
29528 Text.Op = PrintName("IncBitfieldIntAP");
29529 Text.Args.push_back(printArg<bool>(PC));
29530 Text.Args.push_back(printArg<uint32_t>(PC));
29531 break;
29532case OP_IncBitfieldIntAPS:
29533 Text.Op = PrintName("IncBitfieldIntAPS");
29534 Text.Args.push_back(printArg<bool>(PC));
29535 Text.Args.push_back(printArg<uint32_t>(PC));
29536 break;
29537case OP_IncBitfieldBool:
29538 Text.Op = PrintName("IncBitfieldBool");
29539 Text.Args.push_back(printArg<bool>(PC));
29540 Text.Args.push_back(printArg<uint32_t>(PC));
29541 break;
29542case OP_IncBitfieldFixedPoint:
29543 Text.Op = PrintName("IncBitfieldFixedPoint");
29544 Text.Args.push_back(printArg<bool>(PC));
29545 Text.Args.push_back(printArg<uint32_t>(PC));
29546 break;
29547#endif
29548#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29549bool emitIncBitfieldSint8( bool , uint32_t , SourceInfo);
29550bool emitIncBitfieldUint8( bool , uint32_t , SourceInfo);
29551bool emitIncBitfieldSint16( bool , uint32_t , SourceInfo);
29552bool emitIncBitfieldUint16( bool , uint32_t , SourceInfo);
29553bool emitIncBitfieldSint32( bool , uint32_t , SourceInfo);
29554bool emitIncBitfieldUint32( bool , uint32_t , SourceInfo);
29555bool emitIncBitfieldSint64( bool , uint32_t , SourceInfo);
29556bool emitIncBitfieldUint64( bool , uint32_t , SourceInfo);
29557bool emitIncBitfieldIntAP( bool , uint32_t , SourceInfo);
29558bool emitIncBitfieldIntAPS( bool , uint32_t , SourceInfo);
29559bool emitIncBitfieldBool( bool , uint32_t , SourceInfo);
29560bool emitIncBitfieldFixedPoint( bool , uint32_t , SourceInfo);
29561#endif
29562#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29563[[nodiscard]] bool emitIncBitfield(PrimType, bool, uint32_t, SourceInfo I);
29564#endif
29565#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
29566bool
29567#if defined(GET_EVAL_IMPL)
29568EvalEmitter
29569#else
29570ByteCodeEmitter
29571#endif
29572::emitIncBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
29573 switch (T0) {
29574 case PT_Sint8:
29575 return emitIncBitfieldSint8(A0, A1, I);
29576 case PT_Uint8:
29577 return emitIncBitfieldUint8(A0, A1, I);
29578 case PT_Sint16:
29579 return emitIncBitfieldSint16(A0, A1, I);
29580 case PT_Uint16:
29581 return emitIncBitfieldUint16(A0, A1, I);
29582 case PT_Sint32:
29583 return emitIncBitfieldSint32(A0, A1, I);
29584 case PT_Uint32:
29585 return emitIncBitfieldUint32(A0, A1, I);
29586 case PT_Sint64:
29587 return emitIncBitfieldSint64(A0, A1, I);
29588 case PT_Uint64:
29589 return emitIncBitfieldUint64(A0, A1, I);
29590 case PT_IntAP:
29591 return emitIncBitfieldIntAP(A0, A1, I);
29592 case PT_IntAPS:
29593 return emitIncBitfieldIntAPS(A0, A1, I);
29594 case PT_Bool:
29595 return emitIncBitfieldBool(A0, A1, I);
29596 case PT_FixedPoint:
29597 return emitIncBitfieldFixedPoint(A0, A1, I);
29598 default: llvm_unreachable("invalid type: emitIncBitfield");
29599 }
29600 llvm_unreachable("invalid enum value");
29601}
29602#endif
29603#ifdef GET_LINK_IMPL
29604bool ByteCodeEmitter::emitIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
29605 return emitOp<bool, uint32_t>(OP_IncBitfieldSint8, A0, A1, L);
29606}
29607bool ByteCodeEmitter::emitIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
29608 return emitOp<bool, uint32_t>(OP_IncBitfieldUint8, A0, A1, L);
29609}
29610bool ByteCodeEmitter::emitIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
29611 return emitOp<bool, uint32_t>(OP_IncBitfieldSint16, A0, A1, L);
29612}
29613bool ByteCodeEmitter::emitIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
29614 return emitOp<bool, uint32_t>(OP_IncBitfieldUint16, A0, A1, L);
29615}
29616bool ByteCodeEmitter::emitIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
29617 return emitOp<bool, uint32_t>(OP_IncBitfieldSint32, A0, A1, L);
29618}
29619bool ByteCodeEmitter::emitIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
29620 return emitOp<bool, uint32_t>(OP_IncBitfieldUint32, A0, A1, L);
29621}
29622bool ByteCodeEmitter::emitIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
29623 return emitOp<bool, uint32_t>(OP_IncBitfieldSint64, A0, A1, L);
29624}
29625bool ByteCodeEmitter::emitIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
29626 return emitOp<bool, uint32_t>(OP_IncBitfieldUint64, A0, A1, L);
29627}
29628bool ByteCodeEmitter::emitIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
29629 return emitOp<bool, uint32_t>(OP_IncBitfieldIntAP, A0, A1, L);
29630}
29631bool ByteCodeEmitter::emitIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
29632 return emitOp<bool, uint32_t>(OP_IncBitfieldIntAPS, A0, A1, L);
29633}
29634bool ByteCodeEmitter::emitIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
29635 return emitOp<bool, uint32_t>(OP_IncBitfieldBool, A0, A1, L);
29636}
29637bool ByteCodeEmitter::emitIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
29638 return emitOp<bool, uint32_t>(OP_IncBitfieldFixedPoint, A0, A1, L);
29639}
29640#endif
29641#ifdef GET_EVAL_IMPL
29642bool EvalEmitter::emitIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
29643 if (!isActive()) return true;
29644 CurrentSource = L;
29645 return IncBitfield<PT_Sint8>(S, CodePtr(), A0, A1);
29646}
29647bool EvalEmitter::emitIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
29648 if (!isActive()) return true;
29649 CurrentSource = L;
29650 return IncBitfield<PT_Uint8>(S, CodePtr(), A0, A1);
29651}
29652bool EvalEmitter::emitIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
29653 if (!isActive()) return true;
29654 CurrentSource = L;
29655 return IncBitfield<PT_Sint16>(S, CodePtr(), A0, A1);
29656}
29657bool EvalEmitter::emitIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
29658 if (!isActive()) return true;
29659 CurrentSource = L;
29660 return IncBitfield<PT_Uint16>(S, CodePtr(), A0, A1);
29661}
29662bool EvalEmitter::emitIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
29663 if (!isActive()) return true;
29664 CurrentSource = L;
29665 return IncBitfield<PT_Sint32>(S, CodePtr(), A0, A1);
29666}
29667bool EvalEmitter::emitIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
29668 if (!isActive()) return true;
29669 CurrentSource = L;
29670 return IncBitfield<PT_Uint32>(S, CodePtr(), A0, A1);
29671}
29672bool EvalEmitter::emitIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
29673 if (!isActive()) return true;
29674 CurrentSource = L;
29675 return IncBitfield<PT_Sint64>(S, CodePtr(), A0, A1);
29676}
29677bool EvalEmitter::emitIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
29678 if (!isActive()) return true;
29679 CurrentSource = L;
29680 return IncBitfield<PT_Uint64>(S, CodePtr(), A0, A1);
29681}
29682bool EvalEmitter::emitIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
29683 if (!isActive()) return true;
29684 CurrentSource = L;
29685 return IncBitfield<PT_IntAP>(S, CodePtr(), A0, A1);
29686}
29687bool EvalEmitter::emitIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
29688 if (!isActive()) return true;
29689 CurrentSource = L;
29690 return IncBitfield<PT_IntAPS>(S, CodePtr(), A0, A1);
29691}
29692bool EvalEmitter::emitIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
29693 if (!isActive()) return true;
29694 CurrentSource = L;
29695 return IncBitfield<PT_Bool>(S, CodePtr(), A0, A1);
29696}
29697bool EvalEmitter::emitIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
29698 if (!isActive()) return true;
29699 CurrentSource = L;
29700 return IncBitfield<PT_FixedPoint>(S, CodePtr(), A0, A1);
29701}
29702#endif
29703#ifdef GET_OPCODE_NAMES
29704OP_IncPopSint8,
29705OP_IncPopUint8,
29706OP_IncPopSint16,
29707OP_IncPopUint16,
29708OP_IncPopSint32,
29709OP_IncPopUint32,
29710OP_IncPopSint64,
29711OP_IncPopUint64,
29712OP_IncPopIntAP,
29713OP_IncPopIntAPS,
29714OP_IncPopBool,
29715OP_IncPopFixedPoint,
29716#endif
29717#ifdef GET_INTERPFN_LIST
29718&Interp_IncPopSint8,
29719&Interp_IncPopUint8,
29720&Interp_IncPopSint16,
29721&Interp_IncPopUint16,
29722&Interp_IncPopSint32,
29723&Interp_IncPopUint32,
29724&Interp_IncPopSint64,
29725&Interp_IncPopUint64,
29726&Interp_IncPopIntAP,
29727&Interp_IncPopIntAPS,
29728&Interp_IncPopBool,
29729&Interp_IncPopFixedPoint,
29730#endif
29731#ifdef GET_INTERPFN_DISPATCHERS
29732PRESERVE_NONE
29733static bool Interp_IncPopSint8(InterpState &S) {
29734 {
29735 CodePtr OpPC = S.PC;
29736 const auto V0 = ReadArg<bool>(S, S.PC);
29737 if (!IncPop<PT_Sint8>(S, OpPC, V0)) return false;
29738 }
29739#if USE_TAILCALLS
29740 MUSTTAIL return InterpNext(S);
29741#else
29742 return true;
29743#endif
29744}
29745PRESERVE_NONE
29746static bool Interp_IncPopUint8(InterpState &S) {
29747 {
29748 CodePtr OpPC = S.PC;
29749 const auto V0 = ReadArg<bool>(S, S.PC);
29750 if (!IncPop<PT_Uint8>(S, OpPC, V0)) return false;
29751 }
29752#if USE_TAILCALLS
29753 MUSTTAIL return InterpNext(S);
29754#else
29755 return true;
29756#endif
29757}
29758PRESERVE_NONE
29759static bool Interp_IncPopSint16(InterpState &S) {
29760 {
29761 CodePtr OpPC = S.PC;
29762 const auto V0 = ReadArg<bool>(S, S.PC);
29763 if (!IncPop<PT_Sint16>(S, OpPC, V0)) return false;
29764 }
29765#if USE_TAILCALLS
29766 MUSTTAIL return InterpNext(S);
29767#else
29768 return true;
29769#endif
29770}
29771PRESERVE_NONE
29772static bool Interp_IncPopUint16(InterpState &S) {
29773 {
29774 CodePtr OpPC = S.PC;
29775 const auto V0 = ReadArg<bool>(S, S.PC);
29776 if (!IncPop<PT_Uint16>(S, OpPC, V0)) return false;
29777 }
29778#if USE_TAILCALLS
29779 MUSTTAIL return InterpNext(S);
29780#else
29781 return true;
29782#endif
29783}
29784PRESERVE_NONE
29785static bool Interp_IncPopSint32(InterpState &S) {
29786 {
29787 CodePtr OpPC = S.PC;
29788 const auto V0 = ReadArg<bool>(S, S.PC);
29789 if (!IncPop<PT_Sint32>(S, OpPC, V0)) return false;
29790 }
29791#if USE_TAILCALLS
29792 MUSTTAIL return InterpNext(S);
29793#else
29794 return true;
29795#endif
29796}
29797PRESERVE_NONE
29798static bool Interp_IncPopUint32(InterpState &S) {
29799 {
29800 CodePtr OpPC = S.PC;
29801 const auto V0 = ReadArg<bool>(S, S.PC);
29802 if (!IncPop<PT_Uint32>(S, OpPC, V0)) return false;
29803 }
29804#if USE_TAILCALLS
29805 MUSTTAIL return InterpNext(S);
29806#else
29807 return true;
29808#endif
29809}
29810PRESERVE_NONE
29811static bool Interp_IncPopSint64(InterpState &S) {
29812 {
29813 CodePtr OpPC = S.PC;
29814 const auto V0 = ReadArg<bool>(S, S.PC);
29815 if (!IncPop<PT_Sint64>(S, OpPC, V0)) return false;
29816 }
29817#if USE_TAILCALLS
29818 MUSTTAIL return InterpNext(S);
29819#else
29820 return true;
29821#endif
29822}
29823PRESERVE_NONE
29824static bool Interp_IncPopUint64(InterpState &S) {
29825 {
29826 CodePtr OpPC = S.PC;
29827 const auto V0 = ReadArg<bool>(S, S.PC);
29828 if (!IncPop<PT_Uint64>(S, OpPC, V0)) return false;
29829 }
29830#if USE_TAILCALLS
29831 MUSTTAIL return InterpNext(S);
29832#else
29833 return true;
29834#endif
29835}
29836PRESERVE_NONE
29837static bool Interp_IncPopIntAP(InterpState &S) {
29838 {
29839 CodePtr OpPC = S.PC;
29840 const auto V0 = ReadArg<bool>(S, S.PC);
29841 if (!IncPop<PT_IntAP>(S, OpPC, V0)) return false;
29842 }
29843#if USE_TAILCALLS
29844 MUSTTAIL return InterpNext(S);
29845#else
29846 return true;
29847#endif
29848}
29849PRESERVE_NONE
29850static bool Interp_IncPopIntAPS(InterpState &S) {
29851 {
29852 CodePtr OpPC = S.PC;
29853 const auto V0 = ReadArg<bool>(S, S.PC);
29854 if (!IncPop<PT_IntAPS>(S, OpPC, V0)) return false;
29855 }
29856#if USE_TAILCALLS
29857 MUSTTAIL return InterpNext(S);
29858#else
29859 return true;
29860#endif
29861}
29862PRESERVE_NONE
29863static bool Interp_IncPopBool(InterpState &S) {
29864 {
29865 CodePtr OpPC = S.PC;
29866 const auto V0 = ReadArg<bool>(S, S.PC);
29867 if (!IncPop<PT_Bool>(S, OpPC, V0)) return false;
29868 }
29869#if USE_TAILCALLS
29870 MUSTTAIL return InterpNext(S);
29871#else
29872 return true;
29873#endif
29874}
29875PRESERVE_NONE
29876static bool Interp_IncPopFixedPoint(InterpState &S) {
29877 {
29878 CodePtr OpPC = S.PC;
29879 const auto V0 = ReadArg<bool>(S, S.PC);
29880 if (!IncPop<PT_FixedPoint>(S, OpPC, V0)) return false;
29881 }
29882#if USE_TAILCALLS
29883 MUSTTAIL return InterpNext(S);
29884#else
29885 return true;
29886#endif
29887}
29888#endif
29889#ifdef GET_DISASM
29890case OP_IncPopSint8:
29891 Text.Op = PrintName("IncPopSint8");
29892 Text.Args.push_back(printArg<bool>(PC));
29893 break;
29894case OP_IncPopUint8:
29895 Text.Op = PrintName("IncPopUint8");
29896 Text.Args.push_back(printArg<bool>(PC));
29897 break;
29898case OP_IncPopSint16:
29899 Text.Op = PrintName("IncPopSint16");
29900 Text.Args.push_back(printArg<bool>(PC));
29901 break;
29902case OP_IncPopUint16:
29903 Text.Op = PrintName("IncPopUint16");
29904 Text.Args.push_back(printArg<bool>(PC));
29905 break;
29906case OP_IncPopSint32:
29907 Text.Op = PrintName("IncPopSint32");
29908 Text.Args.push_back(printArg<bool>(PC));
29909 break;
29910case OP_IncPopUint32:
29911 Text.Op = PrintName("IncPopUint32");
29912 Text.Args.push_back(printArg<bool>(PC));
29913 break;
29914case OP_IncPopSint64:
29915 Text.Op = PrintName("IncPopSint64");
29916 Text.Args.push_back(printArg<bool>(PC));
29917 break;
29918case OP_IncPopUint64:
29919 Text.Op = PrintName("IncPopUint64");
29920 Text.Args.push_back(printArg<bool>(PC));
29921 break;
29922case OP_IncPopIntAP:
29923 Text.Op = PrintName("IncPopIntAP");
29924 Text.Args.push_back(printArg<bool>(PC));
29925 break;
29926case OP_IncPopIntAPS:
29927 Text.Op = PrintName("IncPopIntAPS");
29928 Text.Args.push_back(printArg<bool>(PC));
29929 break;
29930case OP_IncPopBool:
29931 Text.Op = PrintName("IncPopBool");
29932 Text.Args.push_back(printArg<bool>(PC));
29933 break;
29934case OP_IncPopFixedPoint:
29935 Text.Op = PrintName("IncPopFixedPoint");
29936 Text.Args.push_back(printArg<bool>(PC));
29937 break;
29938#endif
29939#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29940bool emitIncPopSint8( bool , SourceInfo);
29941bool emitIncPopUint8( bool , SourceInfo);
29942bool emitIncPopSint16( bool , SourceInfo);
29943bool emitIncPopUint16( bool , SourceInfo);
29944bool emitIncPopSint32( bool , SourceInfo);
29945bool emitIncPopUint32( bool , SourceInfo);
29946bool emitIncPopSint64( bool , SourceInfo);
29947bool emitIncPopUint64( bool , SourceInfo);
29948bool emitIncPopIntAP( bool , SourceInfo);
29949bool emitIncPopIntAPS( bool , SourceInfo);
29950bool emitIncPopBool( bool , SourceInfo);
29951bool emitIncPopFixedPoint( bool , SourceInfo);
29952#endif
29953#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29954[[nodiscard]] bool emitIncPop(PrimType, bool, SourceInfo I);
29955#endif
29956#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
29957bool
29958#if defined(GET_EVAL_IMPL)
29959EvalEmitter
29960#else
29961ByteCodeEmitter
29962#endif
29963::emitIncPop(PrimType T0, bool A0, SourceInfo I) {
29964 switch (T0) {
29965 case PT_Sint8:
29966 return emitIncPopSint8(A0, I);
29967 case PT_Uint8:
29968 return emitIncPopUint8(A0, I);
29969 case PT_Sint16:
29970 return emitIncPopSint16(A0, I);
29971 case PT_Uint16:
29972 return emitIncPopUint16(A0, I);
29973 case PT_Sint32:
29974 return emitIncPopSint32(A0, I);
29975 case PT_Uint32:
29976 return emitIncPopUint32(A0, I);
29977 case PT_Sint64:
29978 return emitIncPopSint64(A0, I);
29979 case PT_Uint64:
29980 return emitIncPopUint64(A0, I);
29981 case PT_IntAP:
29982 return emitIncPopIntAP(A0, I);
29983 case PT_IntAPS:
29984 return emitIncPopIntAPS(A0, I);
29985 case PT_Bool:
29986 return emitIncPopBool(A0, I);
29987 case PT_FixedPoint:
29988 return emitIncPopFixedPoint(A0, I);
29989 default: llvm_unreachable("invalid type: emitIncPop");
29990 }
29991 llvm_unreachable("invalid enum value");
29992}
29993#endif
29994#ifdef GET_LINK_IMPL
29995bool ByteCodeEmitter::emitIncPopSint8( bool A0, SourceInfo L) {
29996 return emitOp<bool>(OP_IncPopSint8, A0, L);
29997}
29998bool ByteCodeEmitter::emitIncPopUint8( bool A0, SourceInfo L) {
29999 return emitOp<bool>(OP_IncPopUint8, A0, L);
30000}
30001bool ByteCodeEmitter::emitIncPopSint16( bool A0, SourceInfo L) {
30002 return emitOp<bool>(OP_IncPopSint16, A0, L);
30003}
30004bool ByteCodeEmitter::emitIncPopUint16( bool A0, SourceInfo L) {
30005 return emitOp<bool>(OP_IncPopUint16, A0, L);
30006}
30007bool ByteCodeEmitter::emitIncPopSint32( bool A0, SourceInfo L) {
30008 return emitOp<bool>(OP_IncPopSint32, A0, L);
30009}
30010bool ByteCodeEmitter::emitIncPopUint32( bool A0, SourceInfo L) {
30011 return emitOp<bool>(OP_IncPopUint32, A0, L);
30012}
30013bool ByteCodeEmitter::emitIncPopSint64( bool A0, SourceInfo L) {
30014 return emitOp<bool>(OP_IncPopSint64, A0, L);
30015}
30016bool ByteCodeEmitter::emitIncPopUint64( bool A0, SourceInfo L) {
30017 return emitOp<bool>(OP_IncPopUint64, A0, L);
30018}
30019bool ByteCodeEmitter::emitIncPopIntAP( bool A0, SourceInfo L) {
30020 return emitOp<bool>(OP_IncPopIntAP, A0, L);
30021}
30022bool ByteCodeEmitter::emitIncPopIntAPS( bool A0, SourceInfo L) {
30023 return emitOp<bool>(OP_IncPopIntAPS, A0, L);
30024}
30025bool ByteCodeEmitter::emitIncPopBool( bool A0, SourceInfo L) {
30026 return emitOp<bool>(OP_IncPopBool, A0, L);
30027}
30028bool ByteCodeEmitter::emitIncPopFixedPoint( bool A0, SourceInfo L) {
30029 return emitOp<bool>(OP_IncPopFixedPoint, A0, L);
30030}
30031#endif
30032#ifdef GET_EVAL_IMPL
30033bool EvalEmitter::emitIncPopSint8( bool A0, SourceInfo L) {
30034 if (!isActive()) return true;
30035 CurrentSource = L;
30036 return IncPop<PT_Sint8>(S, CodePtr(), A0);
30037}
30038bool EvalEmitter::emitIncPopUint8( bool A0, SourceInfo L) {
30039 if (!isActive()) return true;
30040 CurrentSource = L;
30041 return IncPop<PT_Uint8>(S, CodePtr(), A0);
30042}
30043bool EvalEmitter::emitIncPopSint16( bool A0, SourceInfo L) {
30044 if (!isActive()) return true;
30045 CurrentSource = L;
30046 return IncPop<PT_Sint16>(S, CodePtr(), A0);
30047}
30048bool EvalEmitter::emitIncPopUint16( bool A0, SourceInfo L) {
30049 if (!isActive()) return true;
30050 CurrentSource = L;
30051 return IncPop<PT_Uint16>(S, CodePtr(), A0);
30052}
30053bool EvalEmitter::emitIncPopSint32( bool A0, SourceInfo L) {
30054 if (!isActive()) return true;
30055 CurrentSource = L;
30056 return IncPop<PT_Sint32>(S, CodePtr(), A0);
30057}
30058bool EvalEmitter::emitIncPopUint32( bool A0, SourceInfo L) {
30059 if (!isActive()) return true;
30060 CurrentSource = L;
30061 return IncPop<PT_Uint32>(S, CodePtr(), A0);
30062}
30063bool EvalEmitter::emitIncPopSint64( bool A0, SourceInfo L) {
30064 if (!isActive()) return true;
30065 CurrentSource = L;
30066 return IncPop<PT_Sint64>(S, CodePtr(), A0);
30067}
30068bool EvalEmitter::emitIncPopUint64( bool A0, SourceInfo L) {
30069 if (!isActive()) return true;
30070 CurrentSource = L;
30071 return IncPop<PT_Uint64>(S, CodePtr(), A0);
30072}
30073bool EvalEmitter::emitIncPopIntAP( bool A0, SourceInfo L) {
30074 if (!isActive()) return true;
30075 CurrentSource = L;
30076 return IncPop<PT_IntAP>(S, CodePtr(), A0);
30077}
30078bool EvalEmitter::emitIncPopIntAPS( bool A0, SourceInfo L) {
30079 if (!isActive()) return true;
30080 CurrentSource = L;
30081 return IncPop<PT_IntAPS>(S, CodePtr(), A0);
30082}
30083bool EvalEmitter::emitIncPopBool( bool A0, SourceInfo L) {
30084 if (!isActive()) return true;
30085 CurrentSource = L;
30086 return IncPop<PT_Bool>(S, CodePtr(), A0);
30087}
30088bool EvalEmitter::emitIncPopFixedPoint( bool A0, SourceInfo L) {
30089 if (!isActive()) return true;
30090 CurrentSource = L;
30091 return IncPop<PT_FixedPoint>(S, CodePtr(), A0);
30092}
30093#endif
30094#ifdef GET_OPCODE_NAMES
30095OP_IncPopBitfieldSint8,
30096OP_IncPopBitfieldUint8,
30097OP_IncPopBitfieldSint16,
30098OP_IncPopBitfieldUint16,
30099OP_IncPopBitfieldSint32,
30100OP_IncPopBitfieldUint32,
30101OP_IncPopBitfieldSint64,
30102OP_IncPopBitfieldUint64,
30103OP_IncPopBitfieldIntAP,
30104OP_IncPopBitfieldIntAPS,
30105OP_IncPopBitfieldBool,
30106OP_IncPopBitfieldFixedPoint,
30107#endif
30108#ifdef GET_INTERPFN_LIST
30109&Interp_IncPopBitfieldSint8,
30110&Interp_IncPopBitfieldUint8,
30111&Interp_IncPopBitfieldSint16,
30112&Interp_IncPopBitfieldUint16,
30113&Interp_IncPopBitfieldSint32,
30114&Interp_IncPopBitfieldUint32,
30115&Interp_IncPopBitfieldSint64,
30116&Interp_IncPopBitfieldUint64,
30117&Interp_IncPopBitfieldIntAP,
30118&Interp_IncPopBitfieldIntAPS,
30119&Interp_IncPopBitfieldBool,
30120&Interp_IncPopBitfieldFixedPoint,
30121#endif
30122#ifdef GET_INTERPFN_DISPATCHERS
30123PRESERVE_NONE
30124static bool Interp_IncPopBitfieldSint8(InterpState &S) {
30125 {
30126 CodePtr OpPC = S.PC;
30127 const auto V0 = ReadArg<bool>(S, S.PC);
30128 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30129 if (!IncPopBitfield<PT_Sint8>(S, OpPC, V0, V1)) return false;
30130 }
30131#if USE_TAILCALLS
30132 MUSTTAIL return InterpNext(S);
30133#else
30134 return true;
30135#endif
30136}
30137PRESERVE_NONE
30138static bool Interp_IncPopBitfieldUint8(InterpState &S) {
30139 {
30140 CodePtr OpPC = S.PC;
30141 const auto V0 = ReadArg<bool>(S, S.PC);
30142 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30143 if (!IncPopBitfield<PT_Uint8>(S, OpPC, V0, V1)) return false;
30144 }
30145#if USE_TAILCALLS
30146 MUSTTAIL return InterpNext(S);
30147#else
30148 return true;
30149#endif
30150}
30151PRESERVE_NONE
30152static bool Interp_IncPopBitfieldSint16(InterpState &S) {
30153 {
30154 CodePtr OpPC = S.PC;
30155 const auto V0 = ReadArg<bool>(S, S.PC);
30156 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30157 if (!IncPopBitfield<PT_Sint16>(S, OpPC, V0, V1)) return false;
30158 }
30159#if USE_TAILCALLS
30160 MUSTTAIL return InterpNext(S);
30161#else
30162 return true;
30163#endif
30164}
30165PRESERVE_NONE
30166static bool Interp_IncPopBitfieldUint16(InterpState &S) {
30167 {
30168 CodePtr OpPC = S.PC;
30169 const auto V0 = ReadArg<bool>(S, S.PC);
30170 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30171 if (!IncPopBitfield<PT_Uint16>(S, OpPC, V0, V1)) return false;
30172 }
30173#if USE_TAILCALLS
30174 MUSTTAIL return InterpNext(S);
30175#else
30176 return true;
30177#endif
30178}
30179PRESERVE_NONE
30180static bool Interp_IncPopBitfieldSint32(InterpState &S) {
30181 {
30182 CodePtr OpPC = S.PC;
30183 const auto V0 = ReadArg<bool>(S, S.PC);
30184 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30185 if (!IncPopBitfield<PT_Sint32>(S, OpPC, V0, V1)) return false;
30186 }
30187#if USE_TAILCALLS
30188 MUSTTAIL return InterpNext(S);
30189#else
30190 return true;
30191#endif
30192}
30193PRESERVE_NONE
30194static bool Interp_IncPopBitfieldUint32(InterpState &S) {
30195 {
30196 CodePtr OpPC = S.PC;
30197 const auto V0 = ReadArg<bool>(S, S.PC);
30198 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30199 if (!IncPopBitfield<PT_Uint32>(S, OpPC, V0, V1)) return false;
30200 }
30201#if USE_TAILCALLS
30202 MUSTTAIL return InterpNext(S);
30203#else
30204 return true;
30205#endif
30206}
30207PRESERVE_NONE
30208static bool Interp_IncPopBitfieldSint64(InterpState &S) {
30209 {
30210 CodePtr OpPC = S.PC;
30211 const auto V0 = ReadArg<bool>(S, S.PC);
30212 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30213 if (!IncPopBitfield<PT_Sint64>(S, OpPC, V0, V1)) return false;
30214 }
30215#if USE_TAILCALLS
30216 MUSTTAIL return InterpNext(S);
30217#else
30218 return true;
30219#endif
30220}
30221PRESERVE_NONE
30222static bool Interp_IncPopBitfieldUint64(InterpState &S) {
30223 {
30224 CodePtr OpPC = S.PC;
30225 const auto V0 = ReadArg<bool>(S, S.PC);
30226 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30227 if (!IncPopBitfield<PT_Uint64>(S, OpPC, V0, V1)) return false;
30228 }
30229#if USE_TAILCALLS
30230 MUSTTAIL return InterpNext(S);
30231#else
30232 return true;
30233#endif
30234}
30235PRESERVE_NONE
30236static bool Interp_IncPopBitfieldIntAP(InterpState &S) {
30237 {
30238 CodePtr OpPC = S.PC;
30239 const auto V0 = ReadArg<bool>(S, S.PC);
30240 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30241 if (!IncPopBitfield<PT_IntAP>(S, OpPC, V0, V1)) return false;
30242 }
30243#if USE_TAILCALLS
30244 MUSTTAIL return InterpNext(S);
30245#else
30246 return true;
30247#endif
30248}
30249PRESERVE_NONE
30250static bool Interp_IncPopBitfieldIntAPS(InterpState &S) {
30251 {
30252 CodePtr OpPC = S.PC;
30253 const auto V0 = ReadArg<bool>(S, S.PC);
30254 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30255 if (!IncPopBitfield<PT_IntAPS>(S, OpPC, V0, V1)) return false;
30256 }
30257#if USE_TAILCALLS
30258 MUSTTAIL return InterpNext(S);
30259#else
30260 return true;
30261#endif
30262}
30263PRESERVE_NONE
30264static bool Interp_IncPopBitfieldBool(InterpState &S) {
30265 {
30266 CodePtr OpPC = S.PC;
30267 const auto V0 = ReadArg<bool>(S, S.PC);
30268 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30269 if (!IncPopBitfield<PT_Bool>(S, OpPC, V0, V1)) return false;
30270 }
30271#if USE_TAILCALLS
30272 MUSTTAIL return InterpNext(S);
30273#else
30274 return true;
30275#endif
30276}
30277PRESERVE_NONE
30278static bool Interp_IncPopBitfieldFixedPoint(InterpState &S) {
30279 {
30280 CodePtr OpPC = S.PC;
30281 const auto V0 = ReadArg<bool>(S, S.PC);
30282 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30283 if (!IncPopBitfield<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
30284 }
30285#if USE_TAILCALLS
30286 MUSTTAIL return InterpNext(S);
30287#else
30288 return true;
30289#endif
30290}
30291#endif
30292#ifdef GET_DISASM
30293case OP_IncPopBitfieldSint8:
30294 Text.Op = PrintName("IncPopBitfieldSint8");
30295 Text.Args.push_back(printArg<bool>(PC));
30296 Text.Args.push_back(printArg<uint32_t>(PC));
30297 break;
30298case OP_IncPopBitfieldUint8:
30299 Text.Op = PrintName("IncPopBitfieldUint8");
30300 Text.Args.push_back(printArg<bool>(PC));
30301 Text.Args.push_back(printArg<uint32_t>(PC));
30302 break;
30303case OP_IncPopBitfieldSint16:
30304 Text.Op = PrintName("IncPopBitfieldSint16");
30305 Text.Args.push_back(printArg<bool>(PC));
30306 Text.Args.push_back(printArg<uint32_t>(PC));
30307 break;
30308case OP_IncPopBitfieldUint16:
30309 Text.Op = PrintName("IncPopBitfieldUint16");
30310 Text.Args.push_back(printArg<bool>(PC));
30311 Text.Args.push_back(printArg<uint32_t>(PC));
30312 break;
30313case OP_IncPopBitfieldSint32:
30314 Text.Op = PrintName("IncPopBitfieldSint32");
30315 Text.Args.push_back(printArg<bool>(PC));
30316 Text.Args.push_back(printArg<uint32_t>(PC));
30317 break;
30318case OP_IncPopBitfieldUint32:
30319 Text.Op = PrintName("IncPopBitfieldUint32");
30320 Text.Args.push_back(printArg<bool>(PC));
30321 Text.Args.push_back(printArg<uint32_t>(PC));
30322 break;
30323case OP_IncPopBitfieldSint64:
30324 Text.Op = PrintName("IncPopBitfieldSint64");
30325 Text.Args.push_back(printArg<bool>(PC));
30326 Text.Args.push_back(printArg<uint32_t>(PC));
30327 break;
30328case OP_IncPopBitfieldUint64:
30329 Text.Op = PrintName("IncPopBitfieldUint64");
30330 Text.Args.push_back(printArg<bool>(PC));
30331 Text.Args.push_back(printArg<uint32_t>(PC));
30332 break;
30333case OP_IncPopBitfieldIntAP:
30334 Text.Op = PrintName("IncPopBitfieldIntAP");
30335 Text.Args.push_back(printArg<bool>(PC));
30336 Text.Args.push_back(printArg<uint32_t>(PC));
30337 break;
30338case OP_IncPopBitfieldIntAPS:
30339 Text.Op = PrintName("IncPopBitfieldIntAPS");
30340 Text.Args.push_back(printArg<bool>(PC));
30341 Text.Args.push_back(printArg<uint32_t>(PC));
30342 break;
30343case OP_IncPopBitfieldBool:
30344 Text.Op = PrintName("IncPopBitfieldBool");
30345 Text.Args.push_back(printArg<bool>(PC));
30346 Text.Args.push_back(printArg<uint32_t>(PC));
30347 break;
30348case OP_IncPopBitfieldFixedPoint:
30349 Text.Op = PrintName("IncPopBitfieldFixedPoint");
30350 Text.Args.push_back(printArg<bool>(PC));
30351 Text.Args.push_back(printArg<uint32_t>(PC));
30352 break;
30353#endif
30354#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30355bool emitIncPopBitfieldSint8( bool , uint32_t , SourceInfo);
30356bool emitIncPopBitfieldUint8( bool , uint32_t , SourceInfo);
30357bool emitIncPopBitfieldSint16( bool , uint32_t , SourceInfo);
30358bool emitIncPopBitfieldUint16( bool , uint32_t , SourceInfo);
30359bool emitIncPopBitfieldSint32( bool , uint32_t , SourceInfo);
30360bool emitIncPopBitfieldUint32( bool , uint32_t , SourceInfo);
30361bool emitIncPopBitfieldSint64( bool , uint32_t , SourceInfo);
30362bool emitIncPopBitfieldUint64( bool , uint32_t , SourceInfo);
30363bool emitIncPopBitfieldIntAP( bool , uint32_t , SourceInfo);
30364bool emitIncPopBitfieldIntAPS( bool , uint32_t , SourceInfo);
30365bool emitIncPopBitfieldBool( bool , uint32_t , SourceInfo);
30366bool emitIncPopBitfieldFixedPoint( bool , uint32_t , SourceInfo);
30367#endif
30368#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30369[[nodiscard]] bool emitIncPopBitfield(PrimType, bool, uint32_t, SourceInfo I);
30370#endif
30371#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
30372bool
30373#if defined(GET_EVAL_IMPL)
30374EvalEmitter
30375#else
30376ByteCodeEmitter
30377#endif
30378::emitIncPopBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
30379 switch (T0) {
30380 case PT_Sint8:
30381 return emitIncPopBitfieldSint8(A0, A1, I);
30382 case PT_Uint8:
30383 return emitIncPopBitfieldUint8(A0, A1, I);
30384 case PT_Sint16:
30385 return emitIncPopBitfieldSint16(A0, A1, I);
30386 case PT_Uint16:
30387 return emitIncPopBitfieldUint16(A0, A1, I);
30388 case PT_Sint32:
30389 return emitIncPopBitfieldSint32(A0, A1, I);
30390 case PT_Uint32:
30391 return emitIncPopBitfieldUint32(A0, A1, I);
30392 case PT_Sint64:
30393 return emitIncPopBitfieldSint64(A0, A1, I);
30394 case PT_Uint64:
30395 return emitIncPopBitfieldUint64(A0, A1, I);
30396 case PT_IntAP:
30397 return emitIncPopBitfieldIntAP(A0, A1, I);
30398 case PT_IntAPS:
30399 return emitIncPopBitfieldIntAPS(A0, A1, I);
30400 case PT_Bool:
30401 return emitIncPopBitfieldBool(A0, A1, I);
30402 case PT_FixedPoint:
30403 return emitIncPopBitfieldFixedPoint(A0, A1, I);
30404 default: llvm_unreachable("invalid type: emitIncPopBitfield");
30405 }
30406 llvm_unreachable("invalid enum value");
30407}
30408#endif
30409#ifdef GET_LINK_IMPL
30410bool ByteCodeEmitter::emitIncPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
30411 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint8, A0, A1, L);
30412}
30413bool ByteCodeEmitter::emitIncPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
30414 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint8, A0, A1, L);
30415}
30416bool ByteCodeEmitter::emitIncPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
30417 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint16, A0, A1, L);
30418}
30419bool ByteCodeEmitter::emitIncPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
30420 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint16, A0, A1, L);
30421}
30422bool ByteCodeEmitter::emitIncPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
30423 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint32, A0, A1, L);
30424}
30425bool ByteCodeEmitter::emitIncPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
30426 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint32, A0, A1, L);
30427}
30428bool ByteCodeEmitter::emitIncPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
30429 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint64, A0, A1, L);
30430}
30431bool ByteCodeEmitter::emitIncPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
30432 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint64, A0, A1, L);
30433}
30434bool ByteCodeEmitter::emitIncPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
30435 return emitOp<bool, uint32_t>(OP_IncPopBitfieldIntAP, A0, A1, L);
30436}
30437bool ByteCodeEmitter::emitIncPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
30438 return emitOp<bool, uint32_t>(OP_IncPopBitfieldIntAPS, A0, A1, L);
30439}
30440bool ByteCodeEmitter::emitIncPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
30441 return emitOp<bool, uint32_t>(OP_IncPopBitfieldBool, A0, A1, L);
30442}
30443bool ByteCodeEmitter::emitIncPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
30444 return emitOp<bool, uint32_t>(OP_IncPopBitfieldFixedPoint, A0, A1, L);
30445}
30446#endif
30447#ifdef GET_EVAL_IMPL
30448bool EvalEmitter::emitIncPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
30449 if (!isActive()) return true;
30450 CurrentSource = L;
30451 return IncPopBitfield<PT_Sint8>(S, CodePtr(), A0, A1);
30452}
30453bool EvalEmitter::emitIncPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
30454 if (!isActive()) return true;
30455 CurrentSource = L;
30456 return IncPopBitfield<PT_Uint8>(S, CodePtr(), A0, A1);
30457}
30458bool EvalEmitter::emitIncPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
30459 if (!isActive()) return true;
30460 CurrentSource = L;
30461 return IncPopBitfield<PT_Sint16>(S, CodePtr(), A0, A1);
30462}
30463bool EvalEmitter::emitIncPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
30464 if (!isActive()) return true;
30465 CurrentSource = L;
30466 return IncPopBitfield<PT_Uint16>(S, CodePtr(), A0, A1);
30467}
30468bool EvalEmitter::emitIncPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
30469 if (!isActive()) return true;
30470 CurrentSource = L;
30471 return IncPopBitfield<PT_Sint32>(S, CodePtr(), A0, A1);
30472}
30473bool EvalEmitter::emitIncPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
30474 if (!isActive()) return true;
30475 CurrentSource = L;
30476 return IncPopBitfield<PT_Uint32>(S, CodePtr(), A0, A1);
30477}
30478bool EvalEmitter::emitIncPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
30479 if (!isActive()) return true;
30480 CurrentSource = L;
30481 return IncPopBitfield<PT_Sint64>(S, CodePtr(), A0, A1);
30482}
30483bool EvalEmitter::emitIncPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
30484 if (!isActive()) return true;
30485 CurrentSource = L;
30486 return IncPopBitfield<PT_Uint64>(S, CodePtr(), A0, A1);
30487}
30488bool EvalEmitter::emitIncPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
30489 if (!isActive()) return true;
30490 CurrentSource = L;
30491 return IncPopBitfield<PT_IntAP>(S, CodePtr(), A0, A1);
30492}
30493bool EvalEmitter::emitIncPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
30494 if (!isActive()) return true;
30495 CurrentSource = L;
30496 return IncPopBitfield<PT_IntAPS>(S, CodePtr(), A0, A1);
30497}
30498bool EvalEmitter::emitIncPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
30499 if (!isActive()) return true;
30500 CurrentSource = L;
30501 return IncPopBitfield<PT_Bool>(S, CodePtr(), A0, A1);
30502}
30503bool EvalEmitter::emitIncPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
30504 if (!isActive()) return true;
30505 CurrentSource = L;
30506 return IncPopBitfield<PT_FixedPoint>(S, CodePtr(), A0, A1);
30507}
30508#endif
30509#ifdef GET_OPCODE_NAMES
30510OP_IncPtr,
30511#endif
30512#ifdef GET_INTERPFN_LIST
30513&Interp_IncPtr,
30514#endif
30515#ifdef GET_INTERPFN_DISPATCHERS
30516PRESERVE_NONE
30517static bool Interp_IncPtr(InterpState &S) {
30518 if (!IncPtr(S, S.PC)) return false;
30519#if USE_TAILCALLS
30520 MUSTTAIL return InterpNext(S);
30521#else
30522 return true;
30523#endif
30524}
30525#endif
30526#ifdef GET_DISASM
30527case OP_IncPtr:
30528 Text.Op = PrintName("IncPtr");
30529 break;
30530#endif
30531#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30532bool emitIncPtr(SourceInfo);
30533#endif
30534#ifdef GET_LINK_IMPL
30535bool ByteCodeEmitter::emitIncPtr(SourceInfo L) {
30536 return emitOp<>(OP_IncPtr, L);
30537}
30538#endif
30539#ifdef GET_EVAL_IMPL
30540bool EvalEmitter::emitIncPtr(SourceInfo L) {
30541 if (!isActive()) return true;
30542 CurrentSource = L;
30543 return IncPtr(S, CodePtr());
30544}
30545#endif
30546#ifdef GET_OPCODE_NAMES
30547OP_Incf,
30548#endif
30549#ifdef GET_INTERPFN_LIST
30550&Interp_Incf,
30551#endif
30552#ifdef GET_INTERPFN_DISPATCHERS
30553PRESERVE_NONE
30554static bool Interp_Incf(InterpState &S) {
30555 {
30556 CodePtr OpPC = S.PC;
30557 const auto V0 = ReadArg<uint32_t>(S, S.PC);
30558 if (!Incf(S, OpPC, V0)) return false;
30559 }
30560#if USE_TAILCALLS
30561 MUSTTAIL return InterpNext(S);
30562#else
30563 return true;
30564#endif
30565}
30566#endif
30567#ifdef GET_DISASM
30568case OP_Incf:
30569 Text.Op = PrintName("Incf");
30570 Text.Args.push_back(printArg<uint32_t>(PC));
30571 break;
30572#endif
30573#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30574bool emitIncf( uint32_t , SourceInfo);
30575#endif
30576#ifdef GET_LINK_IMPL
30577bool ByteCodeEmitter::emitIncf( uint32_t A0, SourceInfo L) {
30578 return emitOp<uint32_t>(OP_Incf, A0, L);
30579}
30580#endif
30581#ifdef GET_EVAL_IMPL
30582bool EvalEmitter::emitIncf( uint32_t A0, SourceInfo L) {
30583 if (!isActive()) return true;
30584 CurrentSource = L;
30585 return Incf(S, CodePtr(), A0);
30586}
30587#endif
30588#ifdef GET_OPCODE_NAMES
30589OP_IncfPop,
30590#endif
30591#ifdef GET_INTERPFN_LIST
30592&Interp_IncfPop,
30593#endif
30594#ifdef GET_INTERPFN_DISPATCHERS
30595PRESERVE_NONE
30596static bool Interp_IncfPop(InterpState &S) {
30597 {
30598 CodePtr OpPC = S.PC;
30599 const auto V0 = ReadArg<uint32_t>(S, S.PC);
30600 if (!IncfPop(S, OpPC, V0)) return false;
30601 }
30602#if USE_TAILCALLS
30603 MUSTTAIL return InterpNext(S);
30604#else
30605 return true;
30606#endif
30607}
30608#endif
30609#ifdef GET_DISASM
30610case OP_IncfPop:
30611 Text.Op = PrintName("IncfPop");
30612 Text.Args.push_back(printArg<uint32_t>(PC));
30613 break;
30614#endif
30615#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30616bool emitIncfPop( uint32_t , SourceInfo);
30617#endif
30618#ifdef GET_LINK_IMPL
30619bool ByteCodeEmitter::emitIncfPop( uint32_t A0, SourceInfo L) {
30620 return emitOp<uint32_t>(OP_IncfPop, A0, L);
30621}
30622#endif
30623#ifdef GET_EVAL_IMPL
30624bool EvalEmitter::emitIncfPop( uint32_t A0, SourceInfo L) {
30625 if (!isActive()) return true;
30626 CurrentSource = L;
30627 return IncfPop(S, CodePtr(), A0);
30628}
30629#endif
30630#ifdef GET_OPCODE_NAMES
30631OP_InitSint8,
30632OP_InitUint8,
30633OP_InitSint16,
30634OP_InitUint16,
30635OP_InitSint32,
30636OP_InitUint32,
30637OP_InitSint64,
30638OP_InitUint64,
30639OP_InitIntAP,
30640OP_InitIntAPS,
30641OP_InitBool,
30642OP_InitFixedPoint,
30643OP_InitPtr,
30644OP_InitMemberPtr,
30645OP_InitFloat,
30646#endif
30647#ifdef GET_INTERPFN_LIST
30648&Interp_InitSint8,
30649&Interp_InitUint8,
30650&Interp_InitSint16,
30651&Interp_InitUint16,
30652&Interp_InitSint32,
30653&Interp_InitUint32,
30654&Interp_InitSint64,
30655&Interp_InitUint64,
30656&Interp_InitIntAP,
30657&Interp_InitIntAPS,
30658&Interp_InitBool,
30659&Interp_InitFixedPoint,
30660&Interp_InitPtr,
30661&Interp_InitMemberPtr,
30662&Interp_InitFloat,
30663#endif
30664#ifdef GET_INTERPFN_DISPATCHERS
30665PRESERVE_NONE
30666static bool Interp_InitSint8(InterpState &S) {
30667 if (!Init<PT_Sint8>(S, S.PC)) return false;
30668#if USE_TAILCALLS
30669 MUSTTAIL return InterpNext(S);
30670#else
30671 return true;
30672#endif
30673}
30674PRESERVE_NONE
30675static bool Interp_InitUint8(InterpState &S) {
30676 if (!Init<PT_Uint8>(S, S.PC)) return false;
30677#if USE_TAILCALLS
30678 MUSTTAIL return InterpNext(S);
30679#else
30680 return true;
30681#endif
30682}
30683PRESERVE_NONE
30684static bool Interp_InitSint16(InterpState &S) {
30685 if (!Init<PT_Sint16>(S, S.PC)) return false;
30686#if USE_TAILCALLS
30687 MUSTTAIL return InterpNext(S);
30688#else
30689 return true;
30690#endif
30691}
30692PRESERVE_NONE
30693static bool Interp_InitUint16(InterpState &S) {
30694 if (!Init<PT_Uint16>(S, S.PC)) return false;
30695#if USE_TAILCALLS
30696 MUSTTAIL return InterpNext(S);
30697#else
30698 return true;
30699#endif
30700}
30701PRESERVE_NONE
30702static bool Interp_InitSint32(InterpState &S) {
30703 if (!Init<PT_Sint32>(S, S.PC)) return false;
30704#if USE_TAILCALLS
30705 MUSTTAIL return InterpNext(S);
30706#else
30707 return true;
30708#endif
30709}
30710PRESERVE_NONE
30711static bool Interp_InitUint32(InterpState &S) {
30712 if (!Init<PT_Uint32>(S, S.PC)) return false;
30713#if USE_TAILCALLS
30714 MUSTTAIL return InterpNext(S);
30715#else
30716 return true;
30717#endif
30718}
30719PRESERVE_NONE
30720static bool Interp_InitSint64(InterpState &S) {
30721 if (!Init<PT_Sint64>(S, S.PC)) return false;
30722#if USE_TAILCALLS
30723 MUSTTAIL return InterpNext(S);
30724#else
30725 return true;
30726#endif
30727}
30728PRESERVE_NONE
30729static bool Interp_InitUint64(InterpState &S) {
30730 if (!Init<PT_Uint64>(S, S.PC)) return false;
30731#if USE_TAILCALLS
30732 MUSTTAIL return InterpNext(S);
30733#else
30734 return true;
30735#endif
30736}
30737PRESERVE_NONE
30738static bool Interp_InitIntAP(InterpState &S) {
30739 if (!Init<PT_IntAP>(S, S.PC)) return false;
30740#if USE_TAILCALLS
30741 MUSTTAIL return InterpNext(S);
30742#else
30743 return true;
30744#endif
30745}
30746PRESERVE_NONE
30747static bool Interp_InitIntAPS(InterpState &S) {
30748 if (!Init<PT_IntAPS>(S, S.PC)) return false;
30749#if USE_TAILCALLS
30750 MUSTTAIL return InterpNext(S);
30751#else
30752 return true;
30753#endif
30754}
30755PRESERVE_NONE
30756static bool Interp_InitBool(InterpState &S) {
30757 if (!Init<PT_Bool>(S, S.PC)) return false;
30758#if USE_TAILCALLS
30759 MUSTTAIL return InterpNext(S);
30760#else
30761 return true;
30762#endif
30763}
30764PRESERVE_NONE
30765static bool Interp_InitFixedPoint(InterpState &S) {
30766 if (!Init<PT_FixedPoint>(S, S.PC)) return false;
30767#if USE_TAILCALLS
30768 MUSTTAIL return InterpNext(S);
30769#else
30770 return true;
30771#endif
30772}
30773PRESERVE_NONE
30774static bool Interp_InitPtr(InterpState &S) {
30775 if (!Init<PT_Ptr>(S, S.PC)) return false;
30776#if USE_TAILCALLS
30777 MUSTTAIL return InterpNext(S);
30778#else
30779 return true;
30780#endif
30781}
30782PRESERVE_NONE
30783static bool Interp_InitMemberPtr(InterpState &S) {
30784 if (!Init<PT_MemberPtr>(S, S.PC)) return false;
30785#if USE_TAILCALLS
30786 MUSTTAIL return InterpNext(S);
30787#else
30788 return true;
30789#endif
30790}
30791PRESERVE_NONE
30792static bool Interp_InitFloat(InterpState &S) {
30793 if (!Init<PT_Float>(S, S.PC)) return false;
30794#if USE_TAILCALLS
30795 MUSTTAIL return InterpNext(S);
30796#else
30797 return true;
30798#endif
30799}
30800#endif
30801#ifdef GET_DISASM
30802case OP_InitSint8:
30803 Text.Op = PrintName("InitSint8");
30804 break;
30805case OP_InitUint8:
30806 Text.Op = PrintName("InitUint8");
30807 break;
30808case OP_InitSint16:
30809 Text.Op = PrintName("InitSint16");
30810 break;
30811case OP_InitUint16:
30812 Text.Op = PrintName("InitUint16");
30813 break;
30814case OP_InitSint32:
30815 Text.Op = PrintName("InitSint32");
30816 break;
30817case OP_InitUint32:
30818 Text.Op = PrintName("InitUint32");
30819 break;
30820case OP_InitSint64:
30821 Text.Op = PrintName("InitSint64");
30822 break;
30823case OP_InitUint64:
30824 Text.Op = PrintName("InitUint64");
30825 break;
30826case OP_InitIntAP:
30827 Text.Op = PrintName("InitIntAP");
30828 break;
30829case OP_InitIntAPS:
30830 Text.Op = PrintName("InitIntAPS");
30831 break;
30832case OP_InitBool:
30833 Text.Op = PrintName("InitBool");
30834 break;
30835case OP_InitFixedPoint:
30836 Text.Op = PrintName("InitFixedPoint");
30837 break;
30838case OP_InitPtr:
30839 Text.Op = PrintName("InitPtr");
30840 break;
30841case OP_InitMemberPtr:
30842 Text.Op = PrintName("InitMemberPtr");
30843 break;
30844case OP_InitFloat:
30845 Text.Op = PrintName("InitFloat");
30846 break;
30847#endif
30848#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30849bool emitInitSint8(SourceInfo);
30850bool emitInitUint8(SourceInfo);
30851bool emitInitSint16(SourceInfo);
30852bool emitInitUint16(SourceInfo);
30853bool emitInitSint32(SourceInfo);
30854bool emitInitUint32(SourceInfo);
30855bool emitInitSint64(SourceInfo);
30856bool emitInitUint64(SourceInfo);
30857bool emitInitIntAP(SourceInfo);
30858bool emitInitIntAPS(SourceInfo);
30859bool emitInitBool(SourceInfo);
30860bool emitInitFixedPoint(SourceInfo);
30861bool emitInitPtr(SourceInfo);
30862bool emitInitMemberPtr(SourceInfo);
30863bool emitInitFloat(SourceInfo);
30864#endif
30865#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30866[[nodiscard]] bool emitInit(PrimType, SourceInfo I);
30867#endif
30868#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
30869bool
30870#if defined(GET_EVAL_IMPL)
30871EvalEmitter
30872#else
30873ByteCodeEmitter
30874#endif
30875::emitInit(PrimType T0, SourceInfo I) {
30876 switch (T0) {
30877 case PT_Sint8:
30878 return emitInitSint8(I);
30879 case PT_Uint8:
30880 return emitInitUint8(I);
30881 case PT_Sint16:
30882 return emitInitSint16(I);
30883 case PT_Uint16:
30884 return emitInitUint16(I);
30885 case PT_Sint32:
30886 return emitInitSint32(I);
30887 case PT_Uint32:
30888 return emitInitUint32(I);
30889 case PT_Sint64:
30890 return emitInitSint64(I);
30891 case PT_Uint64:
30892 return emitInitUint64(I);
30893 case PT_IntAP:
30894 return emitInitIntAP(I);
30895 case PT_IntAPS:
30896 return emitInitIntAPS(I);
30897 case PT_Bool:
30898 return emitInitBool(I);
30899 case PT_FixedPoint:
30900 return emitInitFixedPoint(I);
30901 case PT_Ptr:
30902 return emitInitPtr(I);
30903 case PT_MemberPtr:
30904 return emitInitMemberPtr(I);
30905 case PT_Float:
30906 return emitInitFloat(I);
30907 }
30908 llvm_unreachable("invalid enum value");
30909}
30910#endif
30911#ifdef GET_LINK_IMPL
30912bool ByteCodeEmitter::emitInitSint8(SourceInfo L) {
30913 return emitOp<>(OP_InitSint8, L);
30914}
30915bool ByteCodeEmitter::emitInitUint8(SourceInfo L) {
30916 return emitOp<>(OP_InitUint8, L);
30917}
30918bool ByteCodeEmitter::emitInitSint16(SourceInfo L) {
30919 return emitOp<>(OP_InitSint16, L);
30920}
30921bool ByteCodeEmitter::emitInitUint16(SourceInfo L) {
30922 return emitOp<>(OP_InitUint16, L);
30923}
30924bool ByteCodeEmitter::emitInitSint32(SourceInfo L) {
30925 return emitOp<>(OP_InitSint32, L);
30926}
30927bool ByteCodeEmitter::emitInitUint32(SourceInfo L) {
30928 return emitOp<>(OP_InitUint32, L);
30929}
30930bool ByteCodeEmitter::emitInitSint64(SourceInfo L) {
30931 return emitOp<>(OP_InitSint64, L);
30932}
30933bool ByteCodeEmitter::emitInitUint64(SourceInfo L) {
30934 return emitOp<>(OP_InitUint64, L);
30935}
30936bool ByteCodeEmitter::emitInitIntAP(SourceInfo L) {
30937 return emitOp<>(OP_InitIntAP, L);
30938}
30939bool ByteCodeEmitter::emitInitIntAPS(SourceInfo L) {
30940 return emitOp<>(OP_InitIntAPS, L);
30941}
30942bool ByteCodeEmitter::emitInitBool(SourceInfo L) {
30943 return emitOp<>(OP_InitBool, L);
30944}
30945bool ByteCodeEmitter::emitInitFixedPoint(SourceInfo L) {
30946 return emitOp<>(OP_InitFixedPoint, L);
30947}
30948bool ByteCodeEmitter::emitInitPtr(SourceInfo L) {
30949 return emitOp<>(OP_InitPtr, L);
30950}
30951bool ByteCodeEmitter::emitInitMemberPtr(SourceInfo L) {
30952 return emitOp<>(OP_InitMemberPtr, L);
30953}
30954bool ByteCodeEmitter::emitInitFloat(SourceInfo L) {
30955 return emitOp<>(OP_InitFloat, L);
30956}
30957#endif
30958#ifdef GET_EVAL_IMPL
30959bool EvalEmitter::emitInitSint8(SourceInfo L) {
30960 if (!isActive()) return true;
30961 CurrentSource = L;
30962 return Init<PT_Sint8>(S, CodePtr());
30963}
30964bool EvalEmitter::emitInitUint8(SourceInfo L) {
30965 if (!isActive()) return true;
30966 CurrentSource = L;
30967 return Init<PT_Uint8>(S, CodePtr());
30968}
30969bool EvalEmitter::emitInitSint16(SourceInfo L) {
30970 if (!isActive()) return true;
30971 CurrentSource = L;
30972 return Init<PT_Sint16>(S, CodePtr());
30973}
30974bool EvalEmitter::emitInitUint16(SourceInfo L) {
30975 if (!isActive()) return true;
30976 CurrentSource = L;
30977 return Init<PT_Uint16>(S, CodePtr());
30978}
30979bool EvalEmitter::emitInitSint32(SourceInfo L) {
30980 if (!isActive()) return true;
30981 CurrentSource = L;
30982 return Init<PT_Sint32>(S, CodePtr());
30983}
30984bool EvalEmitter::emitInitUint32(SourceInfo L) {
30985 if (!isActive()) return true;
30986 CurrentSource = L;
30987 return Init<PT_Uint32>(S, CodePtr());
30988}
30989bool EvalEmitter::emitInitSint64(SourceInfo L) {
30990 if (!isActive()) return true;
30991 CurrentSource = L;
30992 return Init<PT_Sint64>(S, CodePtr());
30993}
30994bool EvalEmitter::emitInitUint64(SourceInfo L) {
30995 if (!isActive()) return true;
30996 CurrentSource = L;
30997 return Init<PT_Uint64>(S, CodePtr());
30998}
30999bool EvalEmitter::emitInitIntAP(SourceInfo L) {
31000 if (!isActive()) return true;
31001 CurrentSource = L;
31002 return Init<PT_IntAP>(S, CodePtr());
31003}
31004bool EvalEmitter::emitInitIntAPS(SourceInfo L) {
31005 if (!isActive()) return true;
31006 CurrentSource = L;
31007 return Init<PT_IntAPS>(S, CodePtr());
31008}
31009bool EvalEmitter::emitInitBool(SourceInfo L) {
31010 if (!isActive()) return true;
31011 CurrentSource = L;
31012 return Init<PT_Bool>(S, CodePtr());
31013}
31014bool EvalEmitter::emitInitFixedPoint(SourceInfo L) {
31015 if (!isActive()) return true;
31016 CurrentSource = L;
31017 return Init<PT_FixedPoint>(S, CodePtr());
31018}
31019bool EvalEmitter::emitInitPtr(SourceInfo L) {
31020 if (!isActive()) return true;
31021 CurrentSource = L;
31022 return Init<PT_Ptr>(S, CodePtr());
31023}
31024bool EvalEmitter::emitInitMemberPtr(SourceInfo L) {
31025 if (!isActive()) return true;
31026 CurrentSource = L;
31027 return Init<PT_MemberPtr>(S, CodePtr());
31028}
31029bool EvalEmitter::emitInitFloat(SourceInfo L) {
31030 if (!isActive()) return true;
31031 CurrentSource = L;
31032 return Init<PT_Float>(S, CodePtr());
31033}
31034#endif
31035#ifdef GET_OPCODE_NAMES
31036OP_InitBitFieldSint8,
31037OP_InitBitFieldUint8,
31038OP_InitBitFieldSint16,
31039OP_InitBitFieldUint16,
31040OP_InitBitFieldSint32,
31041OP_InitBitFieldUint32,
31042OP_InitBitFieldSint64,
31043OP_InitBitFieldUint64,
31044OP_InitBitFieldIntAP,
31045OP_InitBitFieldIntAPS,
31046OP_InitBitFieldBool,
31047#endif
31048#ifdef GET_INTERPFN_LIST
31049&Interp_InitBitFieldSint8,
31050&Interp_InitBitFieldUint8,
31051&Interp_InitBitFieldSint16,
31052&Interp_InitBitFieldUint16,
31053&Interp_InitBitFieldSint32,
31054&Interp_InitBitFieldUint32,
31055&Interp_InitBitFieldSint64,
31056&Interp_InitBitFieldUint64,
31057&Interp_InitBitFieldIntAP,
31058&Interp_InitBitFieldIntAPS,
31059&Interp_InitBitFieldBool,
31060#endif
31061#ifdef GET_INTERPFN_DISPATCHERS
31062PRESERVE_NONE
31063static bool Interp_InitBitFieldSint8(InterpState &S) {
31064 {
31065 CodePtr OpPC = S.PC;
31066 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31067 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31068 if (!InitBitField<PT_Sint8>(S, OpPC, V0, V1)) return false;
31069 }
31070#if USE_TAILCALLS
31071 MUSTTAIL return InterpNext(S);
31072#else
31073 return true;
31074#endif
31075}
31076PRESERVE_NONE
31077static bool Interp_InitBitFieldUint8(InterpState &S) {
31078 {
31079 CodePtr OpPC = S.PC;
31080 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31081 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31082 if (!InitBitField<PT_Uint8>(S, OpPC, V0, V1)) return false;
31083 }
31084#if USE_TAILCALLS
31085 MUSTTAIL return InterpNext(S);
31086#else
31087 return true;
31088#endif
31089}
31090PRESERVE_NONE
31091static bool Interp_InitBitFieldSint16(InterpState &S) {
31092 {
31093 CodePtr OpPC = S.PC;
31094 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31095 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31096 if (!InitBitField<PT_Sint16>(S, OpPC, V0, V1)) return false;
31097 }
31098#if USE_TAILCALLS
31099 MUSTTAIL return InterpNext(S);
31100#else
31101 return true;
31102#endif
31103}
31104PRESERVE_NONE
31105static bool Interp_InitBitFieldUint16(InterpState &S) {
31106 {
31107 CodePtr OpPC = S.PC;
31108 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31109 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31110 if (!InitBitField<PT_Uint16>(S, OpPC, V0, V1)) return false;
31111 }
31112#if USE_TAILCALLS
31113 MUSTTAIL return InterpNext(S);
31114#else
31115 return true;
31116#endif
31117}
31118PRESERVE_NONE
31119static bool Interp_InitBitFieldSint32(InterpState &S) {
31120 {
31121 CodePtr OpPC = S.PC;
31122 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31123 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31124 if (!InitBitField<PT_Sint32>(S, OpPC, V0, V1)) return false;
31125 }
31126#if USE_TAILCALLS
31127 MUSTTAIL return InterpNext(S);
31128#else
31129 return true;
31130#endif
31131}
31132PRESERVE_NONE
31133static bool Interp_InitBitFieldUint32(InterpState &S) {
31134 {
31135 CodePtr OpPC = S.PC;
31136 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31137 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31138 if (!InitBitField<PT_Uint32>(S, OpPC, V0, V1)) return false;
31139 }
31140#if USE_TAILCALLS
31141 MUSTTAIL return InterpNext(S);
31142#else
31143 return true;
31144#endif
31145}
31146PRESERVE_NONE
31147static bool Interp_InitBitFieldSint64(InterpState &S) {
31148 {
31149 CodePtr OpPC = S.PC;
31150 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31151 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31152 if (!InitBitField<PT_Sint64>(S, OpPC, V0, V1)) return false;
31153 }
31154#if USE_TAILCALLS
31155 MUSTTAIL return InterpNext(S);
31156#else
31157 return true;
31158#endif
31159}
31160PRESERVE_NONE
31161static bool Interp_InitBitFieldUint64(InterpState &S) {
31162 {
31163 CodePtr OpPC = S.PC;
31164 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31165 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31166 if (!InitBitField<PT_Uint64>(S, OpPC, V0, V1)) return false;
31167 }
31168#if USE_TAILCALLS
31169 MUSTTAIL return InterpNext(S);
31170#else
31171 return true;
31172#endif
31173}
31174PRESERVE_NONE
31175static bool Interp_InitBitFieldIntAP(InterpState &S) {
31176 {
31177 CodePtr OpPC = S.PC;
31178 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31179 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31180 if (!InitBitField<PT_IntAP>(S, OpPC, V0, V1)) return false;
31181 }
31182#if USE_TAILCALLS
31183 MUSTTAIL return InterpNext(S);
31184#else
31185 return true;
31186#endif
31187}
31188PRESERVE_NONE
31189static bool Interp_InitBitFieldIntAPS(InterpState &S) {
31190 {
31191 CodePtr OpPC = S.PC;
31192 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31193 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31194 if (!InitBitField<PT_IntAPS>(S, OpPC, V0, V1)) return false;
31195 }
31196#if USE_TAILCALLS
31197 MUSTTAIL return InterpNext(S);
31198#else
31199 return true;
31200#endif
31201}
31202PRESERVE_NONE
31203static bool Interp_InitBitFieldBool(InterpState &S) {
31204 {
31205 CodePtr OpPC = S.PC;
31206 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31207 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31208 if (!InitBitField<PT_Bool>(S, OpPC, V0, V1)) return false;
31209 }
31210#if USE_TAILCALLS
31211 MUSTTAIL return InterpNext(S);
31212#else
31213 return true;
31214#endif
31215}
31216#endif
31217#ifdef GET_DISASM
31218case OP_InitBitFieldSint8:
31219 Text.Op = PrintName("InitBitFieldSint8");
31220 Text.Args.push_back(printArg<uint32_t>(PC));
31221 Text.Args.push_back(printArg<uint32_t>(PC));
31222 break;
31223case OP_InitBitFieldUint8:
31224 Text.Op = PrintName("InitBitFieldUint8");
31225 Text.Args.push_back(printArg<uint32_t>(PC));
31226 Text.Args.push_back(printArg<uint32_t>(PC));
31227 break;
31228case OP_InitBitFieldSint16:
31229 Text.Op = PrintName("InitBitFieldSint16");
31230 Text.Args.push_back(printArg<uint32_t>(PC));
31231 Text.Args.push_back(printArg<uint32_t>(PC));
31232 break;
31233case OP_InitBitFieldUint16:
31234 Text.Op = PrintName("InitBitFieldUint16");
31235 Text.Args.push_back(printArg<uint32_t>(PC));
31236 Text.Args.push_back(printArg<uint32_t>(PC));
31237 break;
31238case OP_InitBitFieldSint32:
31239 Text.Op = PrintName("InitBitFieldSint32");
31240 Text.Args.push_back(printArg<uint32_t>(PC));
31241 Text.Args.push_back(printArg<uint32_t>(PC));
31242 break;
31243case OP_InitBitFieldUint32:
31244 Text.Op = PrintName("InitBitFieldUint32");
31245 Text.Args.push_back(printArg<uint32_t>(PC));
31246 Text.Args.push_back(printArg<uint32_t>(PC));
31247 break;
31248case OP_InitBitFieldSint64:
31249 Text.Op = PrintName("InitBitFieldSint64");
31250 Text.Args.push_back(printArg<uint32_t>(PC));
31251 Text.Args.push_back(printArg<uint32_t>(PC));
31252 break;
31253case OP_InitBitFieldUint64:
31254 Text.Op = PrintName("InitBitFieldUint64");
31255 Text.Args.push_back(printArg<uint32_t>(PC));
31256 Text.Args.push_back(printArg<uint32_t>(PC));
31257 break;
31258case OP_InitBitFieldIntAP:
31259 Text.Op = PrintName("InitBitFieldIntAP");
31260 Text.Args.push_back(printArg<uint32_t>(PC));
31261 Text.Args.push_back(printArg<uint32_t>(PC));
31262 break;
31263case OP_InitBitFieldIntAPS:
31264 Text.Op = PrintName("InitBitFieldIntAPS");
31265 Text.Args.push_back(printArg<uint32_t>(PC));
31266 Text.Args.push_back(printArg<uint32_t>(PC));
31267 break;
31268case OP_InitBitFieldBool:
31269 Text.Op = PrintName("InitBitFieldBool");
31270 Text.Args.push_back(printArg<uint32_t>(PC));
31271 Text.Args.push_back(printArg<uint32_t>(PC));
31272 break;
31273#endif
31274#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31275bool emitInitBitFieldSint8( uint32_t , uint32_t , SourceInfo);
31276bool emitInitBitFieldUint8( uint32_t , uint32_t , SourceInfo);
31277bool emitInitBitFieldSint16( uint32_t , uint32_t , SourceInfo);
31278bool emitInitBitFieldUint16( uint32_t , uint32_t , SourceInfo);
31279bool emitInitBitFieldSint32( uint32_t , uint32_t , SourceInfo);
31280bool emitInitBitFieldUint32( uint32_t , uint32_t , SourceInfo);
31281bool emitInitBitFieldSint64( uint32_t , uint32_t , SourceInfo);
31282bool emitInitBitFieldUint64( uint32_t , uint32_t , SourceInfo);
31283bool emitInitBitFieldIntAP( uint32_t , uint32_t , SourceInfo);
31284bool emitInitBitFieldIntAPS( uint32_t , uint32_t , SourceInfo);
31285bool emitInitBitFieldBool( uint32_t , uint32_t , SourceInfo);
31286#endif
31287#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31288[[nodiscard]] bool emitInitBitField(PrimType, uint32_t, uint32_t, SourceInfo I);
31289#endif
31290#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
31291bool
31292#if defined(GET_EVAL_IMPL)
31293EvalEmitter
31294#else
31295ByteCodeEmitter
31296#endif
31297::emitInitBitField(PrimType T0, uint32_t A0, uint32_t A1, SourceInfo I) {
31298 switch (T0) {
31299 case PT_Sint8:
31300 return emitInitBitFieldSint8(A0, A1, I);
31301 case PT_Uint8:
31302 return emitInitBitFieldUint8(A0, A1, I);
31303 case PT_Sint16:
31304 return emitInitBitFieldSint16(A0, A1, I);
31305 case PT_Uint16:
31306 return emitInitBitFieldUint16(A0, A1, I);
31307 case PT_Sint32:
31308 return emitInitBitFieldSint32(A0, A1, I);
31309 case PT_Uint32:
31310 return emitInitBitFieldUint32(A0, A1, I);
31311 case PT_Sint64:
31312 return emitInitBitFieldSint64(A0, A1, I);
31313 case PT_Uint64:
31314 return emitInitBitFieldUint64(A0, A1, I);
31315 case PT_IntAP:
31316 return emitInitBitFieldIntAP(A0, A1, I);
31317 case PT_IntAPS:
31318 return emitInitBitFieldIntAPS(A0, A1, I);
31319 case PT_Bool:
31320 return emitInitBitFieldBool(A0, A1, I);
31321 default: llvm_unreachable("invalid type: emitInitBitField");
31322 }
31323 llvm_unreachable("invalid enum value");
31324}
31325#endif
31326#ifdef GET_LINK_IMPL
31327bool ByteCodeEmitter::emitInitBitFieldSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31328 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldSint8, A0, A1, L);
31329}
31330bool ByteCodeEmitter::emitInitBitFieldUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31331 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldUint8, A0, A1, L);
31332}
31333bool ByteCodeEmitter::emitInitBitFieldSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31334 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldSint16, A0, A1, L);
31335}
31336bool ByteCodeEmitter::emitInitBitFieldUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31337 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldUint16, A0, A1, L);
31338}
31339bool ByteCodeEmitter::emitInitBitFieldSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31340 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldSint32, A0, A1, L);
31341}
31342bool ByteCodeEmitter::emitInitBitFieldUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31343 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldUint32, A0, A1, L);
31344}
31345bool ByteCodeEmitter::emitInitBitFieldSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31346 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldSint64, A0, A1, L);
31347}
31348bool ByteCodeEmitter::emitInitBitFieldUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31349 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldUint64, A0, A1, L);
31350}
31351bool ByteCodeEmitter::emitInitBitFieldIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
31352 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldIntAP, A0, A1, L);
31353}
31354bool ByteCodeEmitter::emitInitBitFieldIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
31355 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldIntAPS, A0, A1, L);
31356}
31357bool ByteCodeEmitter::emitInitBitFieldBool( uint32_t A0, uint32_t A1, SourceInfo L) {
31358 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldBool, A0, A1, L);
31359}
31360#endif
31361#ifdef GET_EVAL_IMPL
31362bool EvalEmitter::emitInitBitFieldSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31363 if (!isActive()) return true;
31364 CurrentSource = L;
31365 return InitBitField<PT_Sint8>(S, CodePtr(), A0, A1);
31366}
31367bool EvalEmitter::emitInitBitFieldUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31368 if (!isActive()) return true;
31369 CurrentSource = L;
31370 return InitBitField<PT_Uint8>(S, CodePtr(), A0, A1);
31371}
31372bool EvalEmitter::emitInitBitFieldSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31373 if (!isActive()) return true;
31374 CurrentSource = L;
31375 return InitBitField<PT_Sint16>(S, CodePtr(), A0, A1);
31376}
31377bool EvalEmitter::emitInitBitFieldUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31378 if (!isActive()) return true;
31379 CurrentSource = L;
31380 return InitBitField<PT_Uint16>(S, CodePtr(), A0, A1);
31381}
31382bool EvalEmitter::emitInitBitFieldSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31383 if (!isActive()) return true;
31384 CurrentSource = L;
31385 return InitBitField<PT_Sint32>(S, CodePtr(), A0, A1);
31386}
31387bool EvalEmitter::emitInitBitFieldUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31388 if (!isActive()) return true;
31389 CurrentSource = L;
31390 return InitBitField<PT_Uint32>(S, CodePtr(), A0, A1);
31391}
31392bool EvalEmitter::emitInitBitFieldSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31393 if (!isActive()) return true;
31394 CurrentSource = L;
31395 return InitBitField<PT_Sint64>(S, CodePtr(), A0, A1);
31396}
31397bool EvalEmitter::emitInitBitFieldUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31398 if (!isActive()) return true;
31399 CurrentSource = L;
31400 return InitBitField<PT_Uint64>(S, CodePtr(), A0, A1);
31401}
31402bool EvalEmitter::emitInitBitFieldIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
31403 if (!isActive()) return true;
31404 CurrentSource = L;
31405 return InitBitField<PT_IntAP>(S, CodePtr(), A0, A1);
31406}
31407bool EvalEmitter::emitInitBitFieldIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
31408 if (!isActive()) return true;
31409 CurrentSource = L;
31410 return InitBitField<PT_IntAPS>(S, CodePtr(), A0, A1);
31411}
31412bool EvalEmitter::emitInitBitFieldBool( uint32_t A0, uint32_t A1, SourceInfo L) {
31413 if (!isActive()) return true;
31414 CurrentSource = L;
31415 return InitBitField<PT_Bool>(S, CodePtr(), A0, A1);
31416}
31417#endif
31418#ifdef GET_OPCODE_NAMES
31419OP_InitBitFieldActivateSint8,
31420OP_InitBitFieldActivateUint8,
31421OP_InitBitFieldActivateSint16,
31422OP_InitBitFieldActivateUint16,
31423OP_InitBitFieldActivateSint32,
31424OP_InitBitFieldActivateUint32,
31425OP_InitBitFieldActivateSint64,
31426OP_InitBitFieldActivateUint64,
31427OP_InitBitFieldActivateIntAP,
31428OP_InitBitFieldActivateIntAPS,
31429OP_InitBitFieldActivateBool,
31430#endif
31431#ifdef GET_INTERPFN_LIST
31432&Interp_InitBitFieldActivateSint8,
31433&Interp_InitBitFieldActivateUint8,
31434&Interp_InitBitFieldActivateSint16,
31435&Interp_InitBitFieldActivateUint16,
31436&Interp_InitBitFieldActivateSint32,
31437&Interp_InitBitFieldActivateUint32,
31438&Interp_InitBitFieldActivateSint64,
31439&Interp_InitBitFieldActivateUint64,
31440&Interp_InitBitFieldActivateIntAP,
31441&Interp_InitBitFieldActivateIntAPS,
31442&Interp_InitBitFieldActivateBool,
31443#endif
31444#ifdef GET_INTERPFN_DISPATCHERS
31445PRESERVE_NONE
31446static bool Interp_InitBitFieldActivateSint8(InterpState &S) {
31447 {
31448 CodePtr OpPC = S.PC;
31449 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31450 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31451 if (!InitBitFieldActivate<PT_Sint8>(S, OpPC, V0, V1)) return false;
31452 }
31453#if USE_TAILCALLS
31454 MUSTTAIL return InterpNext(S);
31455#else
31456 return true;
31457#endif
31458}
31459PRESERVE_NONE
31460static bool Interp_InitBitFieldActivateUint8(InterpState &S) {
31461 {
31462 CodePtr OpPC = S.PC;
31463 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31464 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31465 if (!InitBitFieldActivate<PT_Uint8>(S, OpPC, V0, V1)) return false;
31466 }
31467#if USE_TAILCALLS
31468 MUSTTAIL return InterpNext(S);
31469#else
31470 return true;
31471#endif
31472}
31473PRESERVE_NONE
31474static bool Interp_InitBitFieldActivateSint16(InterpState &S) {
31475 {
31476 CodePtr OpPC = S.PC;
31477 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31478 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31479 if (!InitBitFieldActivate<PT_Sint16>(S, OpPC, V0, V1)) return false;
31480 }
31481#if USE_TAILCALLS
31482 MUSTTAIL return InterpNext(S);
31483#else
31484 return true;
31485#endif
31486}
31487PRESERVE_NONE
31488static bool Interp_InitBitFieldActivateUint16(InterpState &S) {
31489 {
31490 CodePtr OpPC = S.PC;
31491 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31492 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31493 if (!InitBitFieldActivate<PT_Uint16>(S, OpPC, V0, V1)) return false;
31494 }
31495#if USE_TAILCALLS
31496 MUSTTAIL return InterpNext(S);
31497#else
31498 return true;
31499#endif
31500}
31501PRESERVE_NONE
31502static bool Interp_InitBitFieldActivateSint32(InterpState &S) {
31503 {
31504 CodePtr OpPC = S.PC;
31505 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31506 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31507 if (!InitBitFieldActivate<PT_Sint32>(S, OpPC, V0, V1)) return false;
31508 }
31509#if USE_TAILCALLS
31510 MUSTTAIL return InterpNext(S);
31511#else
31512 return true;
31513#endif
31514}
31515PRESERVE_NONE
31516static bool Interp_InitBitFieldActivateUint32(InterpState &S) {
31517 {
31518 CodePtr OpPC = S.PC;
31519 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31520 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31521 if (!InitBitFieldActivate<PT_Uint32>(S, OpPC, V0, V1)) return false;
31522 }
31523#if USE_TAILCALLS
31524 MUSTTAIL return InterpNext(S);
31525#else
31526 return true;
31527#endif
31528}
31529PRESERVE_NONE
31530static bool Interp_InitBitFieldActivateSint64(InterpState &S) {
31531 {
31532 CodePtr OpPC = S.PC;
31533 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31534 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31535 if (!InitBitFieldActivate<PT_Sint64>(S, OpPC, V0, V1)) return false;
31536 }
31537#if USE_TAILCALLS
31538 MUSTTAIL return InterpNext(S);
31539#else
31540 return true;
31541#endif
31542}
31543PRESERVE_NONE
31544static bool Interp_InitBitFieldActivateUint64(InterpState &S) {
31545 {
31546 CodePtr OpPC = S.PC;
31547 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31548 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31549 if (!InitBitFieldActivate<PT_Uint64>(S, OpPC, V0, V1)) return false;
31550 }
31551#if USE_TAILCALLS
31552 MUSTTAIL return InterpNext(S);
31553#else
31554 return true;
31555#endif
31556}
31557PRESERVE_NONE
31558static bool Interp_InitBitFieldActivateIntAP(InterpState &S) {
31559 {
31560 CodePtr OpPC = S.PC;
31561 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31562 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31563 if (!InitBitFieldActivate<PT_IntAP>(S, OpPC, V0, V1)) return false;
31564 }
31565#if USE_TAILCALLS
31566 MUSTTAIL return InterpNext(S);
31567#else
31568 return true;
31569#endif
31570}
31571PRESERVE_NONE
31572static bool Interp_InitBitFieldActivateIntAPS(InterpState &S) {
31573 {
31574 CodePtr OpPC = S.PC;
31575 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31576 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31577 if (!InitBitFieldActivate<PT_IntAPS>(S, OpPC, V0, V1)) return false;
31578 }
31579#if USE_TAILCALLS
31580 MUSTTAIL return InterpNext(S);
31581#else
31582 return true;
31583#endif
31584}
31585PRESERVE_NONE
31586static bool Interp_InitBitFieldActivateBool(InterpState &S) {
31587 {
31588 CodePtr OpPC = S.PC;
31589 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31590 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31591 if (!InitBitFieldActivate<PT_Bool>(S, OpPC, V0, V1)) return false;
31592 }
31593#if USE_TAILCALLS
31594 MUSTTAIL return InterpNext(S);
31595#else
31596 return true;
31597#endif
31598}
31599#endif
31600#ifdef GET_DISASM
31601case OP_InitBitFieldActivateSint8:
31602 Text.Op = PrintName("InitBitFieldActivateSint8");
31603 Text.Args.push_back(printArg<uint32_t>(PC));
31604 Text.Args.push_back(printArg<uint32_t>(PC));
31605 break;
31606case OP_InitBitFieldActivateUint8:
31607 Text.Op = PrintName("InitBitFieldActivateUint8");
31608 Text.Args.push_back(printArg<uint32_t>(PC));
31609 Text.Args.push_back(printArg<uint32_t>(PC));
31610 break;
31611case OP_InitBitFieldActivateSint16:
31612 Text.Op = PrintName("InitBitFieldActivateSint16");
31613 Text.Args.push_back(printArg<uint32_t>(PC));
31614 Text.Args.push_back(printArg<uint32_t>(PC));
31615 break;
31616case OP_InitBitFieldActivateUint16:
31617 Text.Op = PrintName("InitBitFieldActivateUint16");
31618 Text.Args.push_back(printArg<uint32_t>(PC));
31619 Text.Args.push_back(printArg<uint32_t>(PC));
31620 break;
31621case OP_InitBitFieldActivateSint32:
31622 Text.Op = PrintName("InitBitFieldActivateSint32");
31623 Text.Args.push_back(printArg<uint32_t>(PC));
31624 Text.Args.push_back(printArg<uint32_t>(PC));
31625 break;
31626case OP_InitBitFieldActivateUint32:
31627 Text.Op = PrintName("InitBitFieldActivateUint32");
31628 Text.Args.push_back(printArg<uint32_t>(PC));
31629 Text.Args.push_back(printArg<uint32_t>(PC));
31630 break;
31631case OP_InitBitFieldActivateSint64:
31632 Text.Op = PrintName("InitBitFieldActivateSint64");
31633 Text.Args.push_back(printArg<uint32_t>(PC));
31634 Text.Args.push_back(printArg<uint32_t>(PC));
31635 break;
31636case OP_InitBitFieldActivateUint64:
31637 Text.Op = PrintName("InitBitFieldActivateUint64");
31638 Text.Args.push_back(printArg<uint32_t>(PC));
31639 Text.Args.push_back(printArg<uint32_t>(PC));
31640 break;
31641case OP_InitBitFieldActivateIntAP:
31642 Text.Op = PrintName("InitBitFieldActivateIntAP");
31643 Text.Args.push_back(printArg<uint32_t>(PC));
31644 Text.Args.push_back(printArg<uint32_t>(PC));
31645 break;
31646case OP_InitBitFieldActivateIntAPS:
31647 Text.Op = PrintName("InitBitFieldActivateIntAPS");
31648 Text.Args.push_back(printArg<uint32_t>(PC));
31649 Text.Args.push_back(printArg<uint32_t>(PC));
31650 break;
31651case OP_InitBitFieldActivateBool:
31652 Text.Op = PrintName("InitBitFieldActivateBool");
31653 Text.Args.push_back(printArg<uint32_t>(PC));
31654 Text.Args.push_back(printArg<uint32_t>(PC));
31655 break;
31656#endif
31657#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31658bool emitInitBitFieldActivateSint8( uint32_t , uint32_t , SourceInfo);
31659bool emitInitBitFieldActivateUint8( uint32_t , uint32_t , SourceInfo);
31660bool emitInitBitFieldActivateSint16( uint32_t , uint32_t , SourceInfo);
31661bool emitInitBitFieldActivateUint16( uint32_t , uint32_t , SourceInfo);
31662bool emitInitBitFieldActivateSint32( uint32_t , uint32_t , SourceInfo);
31663bool emitInitBitFieldActivateUint32( uint32_t , uint32_t , SourceInfo);
31664bool emitInitBitFieldActivateSint64( uint32_t , uint32_t , SourceInfo);
31665bool emitInitBitFieldActivateUint64( uint32_t , uint32_t , SourceInfo);
31666bool emitInitBitFieldActivateIntAP( uint32_t , uint32_t , SourceInfo);
31667bool emitInitBitFieldActivateIntAPS( uint32_t , uint32_t , SourceInfo);
31668bool emitInitBitFieldActivateBool( uint32_t , uint32_t , SourceInfo);
31669#endif
31670#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31671[[nodiscard]] bool emitInitBitFieldActivate(PrimType, uint32_t, uint32_t, SourceInfo I);
31672#endif
31673#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
31674bool
31675#if defined(GET_EVAL_IMPL)
31676EvalEmitter
31677#else
31678ByteCodeEmitter
31679#endif
31680::emitInitBitFieldActivate(PrimType T0, uint32_t A0, uint32_t A1, SourceInfo I) {
31681 switch (T0) {
31682 case PT_Sint8:
31683 return emitInitBitFieldActivateSint8(A0, A1, I);
31684 case PT_Uint8:
31685 return emitInitBitFieldActivateUint8(A0, A1, I);
31686 case PT_Sint16:
31687 return emitInitBitFieldActivateSint16(A0, A1, I);
31688 case PT_Uint16:
31689 return emitInitBitFieldActivateUint16(A0, A1, I);
31690 case PT_Sint32:
31691 return emitInitBitFieldActivateSint32(A0, A1, I);
31692 case PT_Uint32:
31693 return emitInitBitFieldActivateUint32(A0, A1, I);
31694 case PT_Sint64:
31695 return emitInitBitFieldActivateSint64(A0, A1, I);
31696 case PT_Uint64:
31697 return emitInitBitFieldActivateUint64(A0, A1, I);
31698 case PT_IntAP:
31699 return emitInitBitFieldActivateIntAP(A0, A1, I);
31700 case PT_IntAPS:
31701 return emitInitBitFieldActivateIntAPS(A0, A1, I);
31702 case PT_Bool:
31703 return emitInitBitFieldActivateBool(A0, A1, I);
31704 default: llvm_unreachable("invalid type: emitInitBitFieldActivate");
31705 }
31706 llvm_unreachable("invalid enum value");
31707}
31708#endif
31709#ifdef GET_LINK_IMPL
31710bool ByteCodeEmitter::emitInitBitFieldActivateSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31711 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateSint8, A0, A1, L);
31712}
31713bool ByteCodeEmitter::emitInitBitFieldActivateUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31714 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateUint8, A0, A1, L);
31715}
31716bool ByteCodeEmitter::emitInitBitFieldActivateSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31717 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateSint16, A0, A1, L);
31718}
31719bool ByteCodeEmitter::emitInitBitFieldActivateUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31720 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateUint16, A0, A1, L);
31721}
31722bool ByteCodeEmitter::emitInitBitFieldActivateSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31723 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateSint32, A0, A1, L);
31724}
31725bool ByteCodeEmitter::emitInitBitFieldActivateUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31726 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateUint32, A0, A1, L);
31727}
31728bool ByteCodeEmitter::emitInitBitFieldActivateSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31729 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateSint64, A0, A1, L);
31730}
31731bool ByteCodeEmitter::emitInitBitFieldActivateUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31732 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateUint64, A0, A1, L);
31733}
31734bool ByteCodeEmitter::emitInitBitFieldActivateIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
31735 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateIntAP, A0, A1, L);
31736}
31737bool ByteCodeEmitter::emitInitBitFieldActivateIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
31738 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateIntAPS, A0, A1, L);
31739}
31740bool ByteCodeEmitter::emitInitBitFieldActivateBool( uint32_t A0, uint32_t A1, SourceInfo L) {
31741 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateBool, A0, A1, L);
31742}
31743#endif
31744#ifdef GET_EVAL_IMPL
31745bool EvalEmitter::emitInitBitFieldActivateSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31746 if (!isActive()) return true;
31747 CurrentSource = L;
31748 return InitBitFieldActivate<PT_Sint8>(S, CodePtr(), A0, A1);
31749}
31750bool EvalEmitter::emitInitBitFieldActivateUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31751 if (!isActive()) return true;
31752 CurrentSource = L;
31753 return InitBitFieldActivate<PT_Uint8>(S, CodePtr(), A0, A1);
31754}
31755bool EvalEmitter::emitInitBitFieldActivateSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31756 if (!isActive()) return true;
31757 CurrentSource = L;
31758 return InitBitFieldActivate<PT_Sint16>(S, CodePtr(), A0, A1);
31759}
31760bool EvalEmitter::emitInitBitFieldActivateUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31761 if (!isActive()) return true;
31762 CurrentSource = L;
31763 return InitBitFieldActivate<PT_Uint16>(S, CodePtr(), A0, A1);
31764}
31765bool EvalEmitter::emitInitBitFieldActivateSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31766 if (!isActive()) return true;
31767 CurrentSource = L;
31768 return InitBitFieldActivate<PT_Sint32>(S, CodePtr(), A0, A1);
31769}
31770bool EvalEmitter::emitInitBitFieldActivateUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31771 if (!isActive()) return true;
31772 CurrentSource = L;
31773 return InitBitFieldActivate<PT_Uint32>(S, CodePtr(), A0, A1);
31774}
31775bool EvalEmitter::emitInitBitFieldActivateSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31776 if (!isActive()) return true;
31777 CurrentSource = L;
31778 return InitBitFieldActivate<PT_Sint64>(S, CodePtr(), A0, A1);
31779}
31780bool EvalEmitter::emitInitBitFieldActivateUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31781 if (!isActive()) return true;
31782 CurrentSource = L;
31783 return InitBitFieldActivate<PT_Uint64>(S, CodePtr(), A0, A1);
31784}
31785bool EvalEmitter::emitInitBitFieldActivateIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
31786 if (!isActive()) return true;
31787 CurrentSource = L;
31788 return InitBitFieldActivate<PT_IntAP>(S, CodePtr(), A0, A1);
31789}
31790bool EvalEmitter::emitInitBitFieldActivateIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
31791 if (!isActive()) return true;
31792 CurrentSource = L;
31793 return InitBitFieldActivate<PT_IntAPS>(S, CodePtr(), A0, A1);
31794}
31795bool EvalEmitter::emitInitBitFieldActivateBool( uint32_t A0, uint32_t A1, SourceInfo L) {
31796 if (!isActive()) return true;
31797 CurrentSource = L;
31798 return InitBitFieldActivate<PT_Bool>(S, CodePtr(), A0, A1);
31799}
31800#endif
31801#ifdef GET_OPCODE_NAMES
31802OP_InitElemSint8,
31803OP_InitElemUint8,
31804OP_InitElemSint16,
31805OP_InitElemUint16,
31806OP_InitElemSint32,
31807OP_InitElemUint32,
31808OP_InitElemSint64,
31809OP_InitElemUint64,
31810OP_InitElemIntAP,
31811OP_InitElemIntAPS,
31812OP_InitElemBool,
31813OP_InitElemFixedPoint,
31814OP_InitElemPtr,
31815OP_InitElemMemberPtr,
31816OP_InitElemFloat,
31817#endif
31818#ifdef GET_INTERPFN_LIST
31819&Interp_InitElemSint8,
31820&Interp_InitElemUint8,
31821&Interp_InitElemSint16,
31822&Interp_InitElemUint16,
31823&Interp_InitElemSint32,
31824&Interp_InitElemUint32,
31825&Interp_InitElemSint64,
31826&Interp_InitElemUint64,
31827&Interp_InitElemIntAP,
31828&Interp_InitElemIntAPS,
31829&Interp_InitElemBool,
31830&Interp_InitElemFixedPoint,
31831&Interp_InitElemPtr,
31832&Interp_InitElemMemberPtr,
31833&Interp_InitElemFloat,
31834#endif
31835#ifdef GET_INTERPFN_DISPATCHERS
31836PRESERVE_NONE
31837static bool Interp_InitElemSint8(InterpState &S) {
31838 {
31839 CodePtr OpPC = S.PC;
31840 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31841 if (!InitElem<PT_Sint8>(S, OpPC, V0)) return false;
31842 }
31843#if USE_TAILCALLS
31844 MUSTTAIL return InterpNext(S);
31845#else
31846 return true;
31847#endif
31848}
31849PRESERVE_NONE
31850static bool Interp_InitElemUint8(InterpState &S) {
31851 {
31852 CodePtr OpPC = S.PC;
31853 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31854 if (!InitElem<PT_Uint8>(S, OpPC, V0)) return false;
31855 }
31856#if USE_TAILCALLS
31857 MUSTTAIL return InterpNext(S);
31858#else
31859 return true;
31860#endif
31861}
31862PRESERVE_NONE
31863static bool Interp_InitElemSint16(InterpState &S) {
31864 {
31865 CodePtr OpPC = S.PC;
31866 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31867 if (!InitElem<PT_Sint16>(S, OpPC, V0)) return false;
31868 }
31869#if USE_TAILCALLS
31870 MUSTTAIL return InterpNext(S);
31871#else
31872 return true;
31873#endif
31874}
31875PRESERVE_NONE
31876static bool Interp_InitElemUint16(InterpState &S) {
31877 {
31878 CodePtr OpPC = S.PC;
31879 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31880 if (!InitElem<PT_Uint16>(S, OpPC, V0)) return false;
31881 }
31882#if USE_TAILCALLS
31883 MUSTTAIL return InterpNext(S);
31884#else
31885 return true;
31886#endif
31887}
31888PRESERVE_NONE
31889static bool Interp_InitElemSint32(InterpState &S) {
31890 {
31891 CodePtr OpPC = S.PC;
31892 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31893 if (!InitElem<PT_Sint32>(S, OpPC, V0)) return false;
31894 }
31895#if USE_TAILCALLS
31896 MUSTTAIL return InterpNext(S);
31897#else
31898 return true;
31899#endif
31900}
31901PRESERVE_NONE
31902static bool Interp_InitElemUint32(InterpState &S) {
31903 {
31904 CodePtr OpPC = S.PC;
31905 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31906 if (!InitElem<PT_Uint32>(S, OpPC, V0)) return false;
31907 }
31908#if USE_TAILCALLS
31909 MUSTTAIL return InterpNext(S);
31910#else
31911 return true;
31912#endif
31913}
31914PRESERVE_NONE
31915static bool Interp_InitElemSint64(InterpState &S) {
31916 {
31917 CodePtr OpPC = S.PC;
31918 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31919 if (!InitElem<PT_Sint64>(S, OpPC, V0)) return false;
31920 }
31921#if USE_TAILCALLS
31922 MUSTTAIL return InterpNext(S);
31923#else
31924 return true;
31925#endif
31926}
31927PRESERVE_NONE
31928static bool Interp_InitElemUint64(InterpState &S) {
31929 {
31930 CodePtr OpPC = S.PC;
31931 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31932 if (!InitElem<PT_Uint64>(S, OpPC, V0)) return false;
31933 }
31934#if USE_TAILCALLS
31935 MUSTTAIL return InterpNext(S);
31936#else
31937 return true;
31938#endif
31939}
31940PRESERVE_NONE
31941static bool Interp_InitElemIntAP(InterpState &S) {
31942 {
31943 CodePtr OpPC = S.PC;
31944 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31945 if (!InitElem<PT_IntAP>(S, OpPC, V0)) return false;
31946 }
31947#if USE_TAILCALLS
31948 MUSTTAIL return InterpNext(S);
31949#else
31950 return true;
31951#endif
31952}
31953PRESERVE_NONE
31954static bool Interp_InitElemIntAPS(InterpState &S) {
31955 {
31956 CodePtr OpPC = S.PC;
31957 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31958 if (!InitElem<PT_IntAPS>(S, OpPC, V0)) return false;
31959 }
31960#if USE_TAILCALLS
31961 MUSTTAIL return InterpNext(S);
31962#else
31963 return true;
31964#endif
31965}
31966PRESERVE_NONE
31967static bool Interp_InitElemBool(InterpState &S) {
31968 {
31969 CodePtr OpPC = S.PC;
31970 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31971 if (!InitElem<PT_Bool>(S, OpPC, V0)) return false;
31972 }
31973#if USE_TAILCALLS
31974 MUSTTAIL return InterpNext(S);
31975#else
31976 return true;
31977#endif
31978}
31979PRESERVE_NONE
31980static bool Interp_InitElemFixedPoint(InterpState &S) {
31981 {
31982 CodePtr OpPC = S.PC;
31983 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31984 if (!InitElem<PT_FixedPoint>(S, OpPC, V0)) return false;
31985 }
31986#if USE_TAILCALLS
31987 MUSTTAIL return InterpNext(S);
31988#else
31989 return true;
31990#endif
31991}
31992PRESERVE_NONE
31993static bool Interp_InitElemPtr(InterpState &S) {
31994 {
31995 CodePtr OpPC = S.PC;
31996 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31997 if (!InitElem<PT_Ptr>(S, OpPC, V0)) return false;
31998 }
31999#if USE_TAILCALLS
32000 MUSTTAIL return InterpNext(S);
32001#else
32002 return true;
32003#endif
32004}
32005PRESERVE_NONE
32006static bool Interp_InitElemMemberPtr(InterpState &S) {
32007 {
32008 CodePtr OpPC = S.PC;
32009 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32010 if (!InitElem<PT_MemberPtr>(S, OpPC, V0)) return false;
32011 }
32012#if USE_TAILCALLS
32013 MUSTTAIL return InterpNext(S);
32014#else
32015 return true;
32016#endif
32017}
32018PRESERVE_NONE
32019static bool Interp_InitElemFloat(InterpState &S) {
32020 {
32021 CodePtr OpPC = S.PC;
32022 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32023 if (!InitElem<PT_Float>(S, OpPC, V0)) return false;
32024 }
32025#if USE_TAILCALLS
32026 MUSTTAIL return InterpNext(S);
32027#else
32028 return true;
32029#endif
32030}
32031#endif
32032#ifdef GET_DISASM
32033case OP_InitElemSint8:
32034 Text.Op = PrintName("InitElemSint8");
32035 Text.Args.push_back(printArg<uint32_t>(PC));
32036 break;
32037case OP_InitElemUint8:
32038 Text.Op = PrintName("InitElemUint8");
32039 Text.Args.push_back(printArg<uint32_t>(PC));
32040 break;
32041case OP_InitElemSint16:
32042 Text.Op = PrintName("InitElemSint16");
32043 Text.Args.push_back(printArg<uint32_t>(PC));
32044 break;
32045case OP_InitElemUint16:
32046 Text.Op = PrintName("InitElemUint16");
32047 Text.Args.push_back(printArg<uint32_t>(PC));
32048 break;
32049case OP_InitElemSint32:
32050 Text.Op = PrintName("InitElemSint32");
32051 Text.Args.push_back(printArg<uint32_t>(PC));
32052 break;
32053case OP_InitElemUint32:
32054 Text.Op = PrintName("InitElemUint32");
32055 Text.Args.push_back(printArg<uint32_t>(PC));
32056 break;
32057case OP_InitElemSint64:
32058 Text.Op = PrintName("InitElemSint64");
32059 Text.Args.push_back(printArg<uint32_t>(PC));
32060 break;
32061case OP_InitElemUint64:
32062 Text.Op = PrintName("InitElemUint64");
32063 Text.Args.push_back(printArg<uint32_t>(PC));
32064 break;
32065case OP_InitElemIntAP:
32066 Text.Op = PrintName("InitElemIntAP");
32067 Text.Args.push_back(printArg<uint32_t>(PC));
32068 break;
32069case OP_InitElemIntAPS:
32070 Text.Op = PrintName("InitElemIntAPS");
32071 Text.Args.push_back(printArg<uint32_t>(PC));
32072 break;
32073case OP_InitElemBool:
32074 Text.Op = PrintName("InitElemBool");
32075 Text.Args.push_back(printArg<uint32_t>(PC));
32076 break;
32077case OP_InitElemFixedPoint:
32078 Text.Op = PrintName("InitElemFixedPoint");
32079 Text.Args.push_back(printArg<uint32_t>(PC));
32080 break;
32081case OP_InitElemPtr:
32082 Text.Op = PrintName("InitElemPtr");
32083 Text.Args.push_back(printArg<uint32_t>(PC));
32084 break;
32085case OP_InitElemMemberPtr:
32086 Text.Op = PrintName("InitElemMemberPtr");
32087 Text.Args.push_back(printArg<uint32_t>(PC));
32088 break;
32089case OP_InitElemFloat:
32090 Text.Op = PrintName("InitElemFloat");
32091 Text.Args.push_back(printArg<uint32_t>(PC));
32092 break;
32093#endif
32094#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32095bool emitInitElemSint8( uint32_t , SourceInfo);
32096bool emitInitElemUint8( uint32_t , SourceInfo);
32097bool emitInitElemSint16( uint32_t , SourceInfo);
32098bool emitInitElemUint16( uint32_t , SourceInfo);
32099bool emitInitElemSint32( uint32_t , SourceInfo);
32100bool emitInitElemUint32( uint32_t , SourceInfo);
32101bool emitInitElemSint64( uint32_t , SourceInfo);
32102bool emitInitElemUint64( uint32_t , SourceInfo);
32103bool emitInitElemIntAP( uint32_t , SourceInfo);
32104bool emitInitElemIntAPS( uint32_t , SourceInfo);
32105bool emitInitElemBool( uint32_t , SourceInfo);
32106bool emitInitElemFixedPoint( uint32_t , SourceInfo);
32107bool emitInitElemPtr( uint32_t , SourceInfo);
32108bool emitInitElemMemberPtr( uint32_t , SourceInfo);
32109bool emitInitElemFloat( uint32_t , SourceInfo);
32110#endif
32111#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32112[[nodiscard]] bool emitInitElem(PrimType, uint32_t, SourceInfo I);
32113#endif
32114#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
32115bool
32116#if defined(GET_EVAL_IMPL)
32117EvalEmitter
32118#else
32119ByteCodeEmitter
32120#endif
32121::emitInitElem(PrimType T0, uint32_t A0, SourceInfo I) {
32122 switch (T0) {
32123 case PT_Sint8:
32124 return emitInitElemSint8(A0, I);
32125 case PT_Uint8:
32126 return emitInitElemUint8(A0, I);
32127 case PT_Sint16:
32128 return emitInitElemSint16(A0, I);
32129 case PT_Uint16:
32130 return emitInitElemUint16(A0, I);
32131 case PT_Sint32:
32132 return emitInitElemSint32(A0, I);
32133 case PT_Uint32:
32134 return emitInitElemUint32(A0, I);
32135 case PT_Sint64:
32136 return emitInitElemSint64(A0, I);
32137 case PT_Uint64:
32138 return emitInitElemUint64(A0, I);
32139 case PT_IntAP:
32140 return emitInitElemIntAP(A0, I);
32141 case PT_IntAPS:
32142 return emitInitElemIntAPS(A0, I);
32143 case PT_Bool:
32144 return emitInitElemBool(A0, I);
32145 case PT_FixedPoint:
32146 return emitInitElemFixedPoint(A0, I);
32147 case PT_Ptr:
32148 return emitInitElemPtr(A0, I);
32149 case PT_MemberPtr:
32150 return emitInitElemMemberPtr(A0, I);
32151 case PT_Float:
32152 return emitInitElemFloat(A0, I);
32153 }
32154 llvm_unreachable("invalid enum value");
32155}
32156#endif
32157#ifdef GET_LINK_IMPL
32158bool ByteCodeEmitter::emitInitElemSint8( uint32_t A0, SourceInfo L) {
32159 return emitOp<uint32_t>(OP_InitElemSint8, A0, L);
32160}
32161bool ByteCodeEmitter::emitInitElemUint8( uint32_t A0, SourceInfo L) {
32162 return emitOp<uint32_t>(OP_InitElemUint8, A0, L);
32163}
32164bool ByteCodeEmitter::emitInitElemSint16( uint32_t A0, SourceInfo L) {
32165 return emitOp<uint32_t>(OP_InitElemSint16, A0, L);
32166}
32167bool ByteCodeEmitter::emitInitElemUint16( uint32_t A0, SourceInfo L) {
32168 return emitOp<uint32_t>(OP_InitElemUint16, A0, L);
32169}
32170bool ByteCodeEmitter::emitInitElemSint32( uint32_t A0, SourceInfo L) {
32171 return emitOp<uint32_t>(OP_InitElemSint32, A0, L);
32172}
32173bool ByteCodeEmitter::emitInitElemUint32( uint32_t A0, SourceInfo L) {
32174 return emitOp<uint32_t>(OP_InitElemUint32, A0, L);
32175}
32176bool ByteCodeEmitter::emitInitElemSint64( uint32_t A0, SourceInfo L) {
32177 return emitOp<uint32_t>(OP_InitElemSint64, A0, L);
32178}
32179bool ByteCodeEmitter::emitInitElemUint64( uint32_t A0, SourceInfo L) {
32180 return emitOp<uint32_t>(OP_InitElemUint64, A0, L);
32181}
32182bool ByteCodeEmitter::emitInitElemIntAP( uint32_t A0, SourceInfo L) {
32183 return emitOp<uint32_t>(OP_InitElemIntAP, A0, L);
32184}
32185bool ByteCodeEmitter::emitInitElemIntAPS( uint32_t A0, SourceInfo L) {
32186 return emitOp<uint32_t>(OP_InitElemIntAPS, A0, L);
32187}
32188bool ByteCodeEmitter::emitInitElemBool( uint32_t A0, SourceInfo L) {
32189 return emitOp<uint32_t>(OP_InitElemBool, A0, L);
32190}
32191bool ByteCodeEmitter::emitInitElemFixedPoint( uint32_t A0, SourceInfo L) {
32192 return emitOp<uint32_t>(OP_InitElemFixedPoint, A0, L);
32193}
32194bool ByteCodeEmitter::emitInitElemPtr( uint32_t A0, SourceInfo L) {
32195 return emitOp<uint32_t>(OP_InitElemPtr, A0, L);
32196}
32197bool ByteCodeEmitter::emitInitElemMemberPtr( uint32_t A0, SourceInfo L) {
32198 return emitOp<uint32_t>(OP_InitElemMemberPtr, A0, L);
32199}
32200bool ByteCodeEmitter::emitInitElemFloat( uint32_t A0, SourceInfo L) {
32201 return emitOp<uint32_t>(OP_InitElemFloat, A0, L);
32202}
32203#endif
32204#ifdef GET_EVAL_IMPL
32205bool EvalEmitter::emitInitElemSint8( uint32_t A0, SourceInfo L) {
32206 if (!isActive()) return true;
32207 CurrentSource = L;
32208 return InitElem<PT_Sint8>(S, CodePtr(), A0);
32209}
32210bool EvalEmitter::emitInitElemUint8( uint32_t A0, SourceInfo L) {
32211 if (!isActive()) return true;
32212 CurrentSource = L;
32213 return InitElem<PT_Uint8>(S, CodePtr(), A0);
32214}
32215bool EvalEmitter::emitInitElemSint16( uint32_t A0, SourceInfo L) {
32216 if (!isActive()) return true;
32217 CurrentSource = L;
32218 return InitElem<PT_Sint16>(S, CodePtr(), A0);
32219}
32220bool EvalEmitter::emitInitElemUint16( uint32_t A0, SourceInfo L) {
32221 if (!isActive()) return true;
32222 CurrentSource = L;
32223 return InitElem<PT_Uint16>(S, CodePtr(), A0);
32224}
32225bool EvalEmitter::emitInitElemSint32( uint32_t A0, SourceInfo L) {
32226 if (!isActive()) return true;
32227 CurrentSource = L;
32228 return InitElem<PT_Sint32>(S, CodePtr(), A0);
32229}
32230bool EvalEmitter::emitInitElemUint32( uint32_t A0, SourceInfo L) {
32231 if (!isActive()) return true;
32232 CurrentSource = L;
32233 return InitElem<PT_Uint32>(S, CodePtr(), A0);
32234}
32235bool EvalEmitter::emitInitElemSint64( uint32_t A0, SourceInfo L) {
32236 if (!isActive()) return true;
32237 CurrentSource = L;
32238 return InitElem<PT_Sint64>(S, CodePtr(), A0);
32239}
32240bool EvalEmitter::emitInitElemUint64( uint32_t A0, SourceInfo L) {
32241 if (!isActive()) return true;
32242 CurrentSource = L;
32243 return InitElem<PT_Uint64>(S, CodePtr(), A0);
32244}
32245bool EvalEmitter::emitInitElemIntAP( uint32_t A0, SourceInfo L) {
32246 if (!isActive()) return true;
32247 CurrentSource = L;
32248 return InitElem<PT_IntAP>(S, CodePtr(), A0);
32249}
32250bool EvalEmitter::emitInitElemIntAPS( uint32_t A0, SourceInfo L) {
32251 if (!isActive()) return true;
32252 CurrentSource = L;
32253 return InitElem<PT_IntAPS>(S, CodePtr(), A0);
32254}
32255bool EvalEmitter::emitInitElemBool( uint32_t A0, SourceInfo L) {
32256 if (!isActive()) return true;
32257 CurrentSource = L;
32258 return InitElem<PT_Bool>(S, CodePtr(), A0);
32259}
32260bool EvalEmitter::emitInitElemFixedPoint( uint32_t A0, SourceInfo L) {
32261 if (!isActive()) return true;
32262 CurrentSource = L;
32263 return InitElem<PT_FixedPoint>(S, CodePtr(), A0);
32264}
32265bool EvalEmitter::emitInitElemPtr( uint32_t A0, SourceInfo L) {
32266 if (!isActive()) return true;
32267 CurrentSource = L;
32268 return InitElem<PT_Ptr>(S, CodePtr(), A0);
32269}
32270bool EvalEmitter::emitInitElemMemberPtr( uint32_t A0, SourceInfo L) {
32271 if (!isActive()) return true;
32272 CurrentSource = L;
32273 return InitElem<PT_MemberPtr>(S, CodePtr(), A0);
32274}
32275bool EvalEmitter::emitInitElemFloat( uint32_t A0, SourceInfo L) {
32276 if (!isActive()) return true;
32277 CurrentSource = L;
32278 return InitElem<PT_Float>(S, CodePtr(), A0);
32279}
32280#endif
32281#ifdef GET_OPCODE_NAMES
32282OP_InitElemPopSint8,
32283OP_InitElemPopUint8,
32284OP_InitElemPopSint16,
32285OP_InitElemPopUint16,
32286OP_InitElemPopSint32,
32287OP_InitElemPopUint32,
32288OP_InitElemPopSint64,
32289OP_InitElemPopUint64,
32290OP_InitElemPopIntAP,
32291OP_InitElemPopIntAPS,
32292OP_InitElemPopBool,
32293OP_InitElemPopFixedPoint,
32294OP_InitElemPopPtr,
32295OP_InitElemPopMemberPtr,
32296OP_InitElemPopFloat,
32297#endif
32298#ifdef GET_INTERPFN_LIST
32299&Interp_InitElemPopSint8,
32300&Interp_InitElemPopUint8,
32301&Interp_InitElemPopSint16,
32302&Interp_InitElemPopUint16,
32303&Interp_InitElemPopSint32,
32304&Interp_InitElemPopUint32,
32305&Interp_InitElemPopSint64,
32306&Interp_InitElemPopUint64,
32307&Interp_InitElemPopIntAP,
32308&Interp_InitElemPopIntAPS,
32309&Interp_InitElemPopBool,
32310&Interp_InitElemPopFixedPoint,
32311&Interp_InitElemPopPtr,
32312&Interp_InitElemPopMemberPtr,
32313&Interp_InitElemPopFloat,
32314#endif
32315#ifdef GET_INTERPFN_DISPATCHERS
32316PRESERVE_NONE
32317static bool Interp_InitElemPopSint8(InterpState &S) {
32318 {
32319 CodePtr OpPC = S.PC;
32320 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32321 if (!InitElemPop<PT_Sint8>(S, OpPC, V0)) return false;
32322 }
32323#if USE_TAILCALLS
32324 MUSTTAIL return InterpNext(S);
32325#else
32326 return true;
32327#endif
32328}
32329PRESERVE_NONE
32330static bool Interp_InitElemPopUint8(InterpState &S) {
32331 {
32332 CodePtr OpPC = S.PC;
32333 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32334 if (!InitElemPop<PT_Uint8>(S, OpPC, V0)) return false;
32335 }
32336#if USE_TAILCALLS
32337 MUSTTAIL return InterpNext(S);
32338#else
32339 return true;
32340#endif
32341}
32342PRESERVE_NONE
32343static bool Interp_InitElemPopSint16(InterpState &S) {
32344 {
32345 CodePtr OpPC = S.PC;
32346 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32347 if (!InitElemPop<PT_Sint16>(S, OpPC, V0)) return false;
32348 }
32349#if USE_TAILCALLS
32350 MUSTTAIL return InterpNext(S);
32351#else
32352 return true;
32353#endif
32354}
32355PRESERVE_NONE
32356static bool Interp_InitElemPopUint16(InterpState &S) {
32357 {
32358 CodePtr OpPC = S.PC;
32359 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32360 if (!InitElemPop<PT_Uint16>(S, OpPC, V0)) return false;
32361 }
32362#if USE_TAILCALLS
32363 MUSTTAIL return InterpNext(S);
32364#else
32365 return true;
32366#endif
32367}
32368PRESERVE_NONE
32369static bool Interp_InitElemPopSint32(InterpState &S) {
32370 {
32371 CodePtr OpPC = S.PC;
32372 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32373 if (!InitElemPop<PT_Sint32>(S, OpPC, V0)) return false;
32374 }
32375#if USE_TAILCALLS
32376 MUSTTAIL return InterpNext(S);
32377#else
32378 return true;
32379#endif
32380}
32381PRESERVE_NONE
32382static bool Interp_InitElemPopUint32(InterpState &S) {
32383 {
32384 CodePtr OpPC = S.PC;
32385 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32386 if (!InitElemPop<PT_Uint32>(S, OpPC, V0)) return false;
32387 }
32388#if USE_TAILCALLS
32389 MUSTTAIL return InterpNext(S);
32390#else
32391 return true;
32392#endif
32393}
32394PRESERVE_NONE
32395static bool Interp_InitElemPopSint64(InterpState &S) {
32396 {
32397 CodePtr OpPC = S.PC;
32398 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32399 if (!InitElemPop<PT_Sint64>(S, OpPC, V0)) return false;
32400 }
32401#if USE_TAILCALLS
32402 MUSTTAIL return InterpNext(S);
32403#else
32404 return true;
32405#endif
32406}
32407PRESERVE_NONE
32408static bool Interp_InitElemPopUint64(InterpState &S) {
32409 {
32410 CodePtr OpPC = S.PC;
32411 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32412 if (!InitElemPop<PT_Uint64>(S, OpPC, V0)) return false;
32413 }
32414#if USE_TAILCALLS
32415 MUSTTAIL return InterpNext(S);
32416#else
32417 return true;
32418#endif
32419}
32420PRESERVE_NONE
32421static bool Interp_InitElemPopIntAP(InterpState &S) {
32422 {
32423 CodePtr OpPC = S.PC;
32424 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32425 if (!InitElemPop<PT_IntAP>(S, OpPC, V0)) return false;
32426 }
32427#if USE_TAILCALLS
32428 MUSTTAIL return InterpNext(S);
32429#else
32430 return true;
32431#endif
32432}
32433PRESERVE_NONE
32434static bool Interp_InitElemPopIntAPS(InterpState &S) {
32435 {
32436 CodePtr OpPC = S.PC;
32437 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32438 if (!InitElemPop<PT_IntAPS>(S, OpPC, V0)) return false;
32439 }
32440#if USE_TAILCALLS
32441 MUSTTAIL return InterpNext(S);
32442#else
32443 return true;
32444#endif
32445}
32446PRESERVE_NONE
32447static bool Interp_InitElemPopBool(InterpState &S) {
32448 {
32449 CodePtr OpPC = S.PC;
32450 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32451 if (!InitElemPop<PT_Bool>(S, OpPC, V0)) return false;
32452 }
32453#if USE_TAILCALLS
32454 MUSTTAIL return InterpNext(S);
32455#else
32456 return true;
32457#endif
32458}
32459PRESERVE_NONE
32460static bool Interp_InitElemPopFixedPoint(InterpState &S) {
32461 {
32462 CodePtr OpPC = S.PC;
32463 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32464 if (!InitElemPop<PT_FixedPoint>(S, OpPC, V0)) return false;
32465 }
32466#if USE_TAILCALLS
32467 MUSTTAIL return InterpNext(S);
32468#else
32469 return true;
32470#endif
32471}
32472PRESERVE_NONE
32473static bool Interp_InitElemPopPtr(InterpState &S) {
32474 {
32475 CodePtr OpPC = S.PC;
32476 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32477 if (!InitElemPop<PT_Ptr>(S, OpPC, V0)) return false;
32478 }
32479#if USE_TAILCALLS
32480 MUSTTAIL return InterpNext(S);
32481#else
32482 return true;
32483#endif
32484}
32485PRESERVE_NONE
32486static bool Interp_InitElemPopMemberPtr(InterpState &S) {
32487 {
32488 CodePtr OpPC = S.PC;
32489 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32490 if (!InitElemPop<PT_MemberPtr>(S, OpPC, V0)) return false;
32491 }
32492#if USE_TAILCALLS
32493 MUSTTAIL return InterpNext(S);
32494#else
32495 return true;
32496#endif
32497}
32498PRESERVE_NONE
32499static bool Interp_InitElemPopFloat(InterpState &S) {
32500 {
32501 CodePtr OpPC = S.PC;
32502 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32503 if (!InitElemPop<PT_Float>(S, OpPC, V0)) return false;
32504 }
32505#if USE_TAILCALLS
32506 MUSTTAIL return InterpNext(S);
32507#else
32508 return true;
32509#endif
32510}
32511#endif
32512#ifdef GET_DISASM
32513case OP_InitElemPopSint8:
32514 Text.Op = PrintName("InitElemPopSint8");
32515 Text.Args.push_back(printArg<uint32_t>(PC));
32516 break;
32517case OP_InitElemPopUint8:
32518 Text.Op = PrintName("InitElemPopUint8");
32519 Text.Args.push_back(printArg<uint32_t>(PC));
32520 break;
32521case OP_InitElemPopSint16:
32522 Text.Op = PrintName("InitElemPopSint16");
32523 Text.Args.push_back(printArg<uint32_t>(PC));
32524 break;
32525case OP_InitElemPopUint16:
32526 Text.Op = PrintName("InitElemPopUint16");
32527 Text.Args.push_back(printArg<uint32_t>(PC));
32528 break;
32529case OP_InitElemPopSint32:
32530 Text.Op = PrintName("InitElemPopSint32");
32531 Text.Args.push_back(printArg<uint32_t>(PC));
32532 break;
32533case OP_InitElemPopUint32:
32534 Text.Op = PrintName("InitElemPopUint32");
32535 Text.Args.push_back(printArg<uint32_t>(PC));
32536 break;
32537case OP_InitElemPopSint64:
32538 Text.Op = PrintName("InitElemPopSint64");
32539 Text.Args.push_back(printArg<uint32_t>(PC));
32540 break;
32541case OP_InitElemPopUint64:
32542 Text.Op = PrintName("InitElemPopUint64");
32543 Text.Args.push_back(printArg<uint32_t>(PC));
32544 break;
32545case OP_InitElemPopIntAP:
32546 Text.Op = PrintName("InitElemPopIntAP");
32547 Text.Args.push_back(printArg<uint32_t>(PC));
32548 break;
32549case OP_InitElemPopIntAPS:
32550 Text.Op = PrintName("InitElemPopIntAPS");
32551 Text.Args.push_back(printArg<uint32_t>(PC));
32552 break;
32553case OP_InitElemPopBool:
32554 Text.Op = PrintName("InitElemPopBool");
32555 Text.Args.push_back(printArg<uint32_t>(PC));
32556 break;
32557case OP_InitElemPopFixedPoint:
32558 Text.Op = PrintName("InitElemPopFixedPoint");
32559 Text.Args.push_back(printArg<uint32_t>(PC));
32560 break;
32561case OP_InitElemPopPtr:
32562 Text.Op = PrintName("InitElemPopPtr");
32563 Text.Args.push_back(printArg<uint32_t>(PC));
32564 break;
32565case OP_InitElemPopMemberPtr:
32566 Text.Op = PrintName("InitElemPopMemberPtr");
32567 Text.Args.push_back(printArg<uint32_t>(PC));
32568 break;
32569case OP_InitElemPopFloat:
32570 Text.Op = PrintName("InitElemPopFloat");
32571 Text.Args.push_back(printArg<uint32_t>(PC));
32572 break;
32573#endif
32574#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32575bool emitInitElemPopSint8( uint32_t , SourceInfo);
32576bool emitInitElemPopUint8( uint32_t , SourceInfo);
32577bool emitInitElemPopSint16( uint32_t , SourceInfo);
32578bool emitInitElemPopUint16( uint32_t , SourceInfo);
32579bool emitInitElemPopSint32( uint32_t , SourceInfo);
32580bool emitInitElemPopUint32( uint32_t , SourceInfo);
32581bool emitInitElemPopSint64( uint32_t , SourceInfo);
32582bool emitInitElemPopUint64( uint32_t , SourceInfo);
32583bool emitInitElemPopIntAP( uint32_t , SourceInfo);
32584bool emitInitElemPopIntAPS( uint32_t , SourceInfo);
32585bool emitInitElemPopBool( uint32_t , SourceInfo);
32586bool emitInitElemPopFixedPoint( uint32_t , SourceInfo);
32587bool emitInitElemPopPtr( uint32_t , SourceInfo);
32588bool emitInitElemPopMemberPtr( uint32_t , SourceInfo);
32589bool emitInitElemPopFloat( uint32_t , SourceInfo);
32590#endif
32591#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32592[[nodiscard]] bool emitInitElemPop(PrimType, uint32_t, SourceInfo I);
32593#endif
32594#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
32595bool
32596#if defined(GET_EVAL_IMPL)
32597EvalEmitter
32598#else
32599ByteCodeEmitter
32600#endif
32601::emitInitElemPop(PrimType T0, uint32_t A0, SourceInfo I) {
32602 switch (T0) {
32603 case PT_Sint8:
32604 return emitInitElemPopSint8(A0, I);
32605 case PT_Uint8:
32606 return emitInitElemPopUint8(A0, I);
32607 case PT_Sint16:
32608 return emitInitElemPopSint16(A0, I);
32609 case PT_Uint16:
32610 return emitInitElemPopUint16(A0, I);
32611 case PT_Sint32:
32612 return emitInitElemPopSint32(A0, I);
32613 case PT_Uint32:
32614 return emitInitElemPopUint32(A0, I);
32615 case PT_Sint64:
32616 return emitInitElemPopSint64(A0, I);
32617 case PT_Uint64:
32618 return emitInitElemPopUint64(A0, I);
32619 case PT_IntAP:
32620 return emitInitElemPopIntAP(A0, I);
32621 case PT_IntAPS:
32622 return emitInitElemPopIntAPS(A0, I);
32623 case PT_Bool:
32624 return emitInitElemPopBool(A0, I);
32625 case PT_FixedPoint:
32626 return emitInitElemPopFixedPoint(A0, I);
32627 case PT_Ptr:
32628 return emitInitElemPopPtr(A0, I);
32629 case PT_MemberPtr:
32630 return emitInitElemPopMemberPtr(A0, I);
32631 case PT_Float:
32632 return emitInitElemPopFloat(A0, I);
32633 }
32634 llvm_unreachable("invalid enum value");
32635}
32636#endif
32637#ifdef GET_LINK_IMPL
32638bool ByteCodeEmitter::emitInitElemPopSint8( uint32_t A0, SourceInfo L) {
32639 return emitOp<uint32_t>(OP_InitElemPopSint8, A0, L);
32640}
32641bool ByteCodeEmitter::emitInitElemPopUint8( uint32_t A0, SourceInfo L) {
32642 return emitOp<uint32_t>(OP_InitElemPopUint8, A0, L);
32643}
32644bool ByteCodeEmitter::emitInitElemPopSint16( uint32_t A0, SourceInfo L) {
32645 return emitOp<uint32_t>(OP_InitElemPopSint16, A0, L);
32646}
32647bool ByteCodeEmitter::emitInitElemPopUint16( uint32_t A0, SourceInfo L) {
32648 return emitOp<uint32_t>(OP_InitElemPopUint16, A0, L);
32649}
32650bool ByteCodeEmitter::emitInitElemPopSint32( uint32_t A0, SourceInfo L) {
32651 return emitOp<uint32_t>(OP_InitElemPopSint32, A0, L);
32652}
32653bool ByteCodeEmitter::emitInitElemPopUint32( uint32_t A0, SourceInfo L) {
32654 return emitOp<uint32_t>(OP_InitElemPopUint32, A0, L);
32655}
32656bool ByteCodeEmitter::emitInitElemPopSint64( uint32_t A0, SourceInfo L) {
32657 return emitOp<uint32_t>(OP_InitElemPopSint64, A0, L);
32658}
32659bool ByteCodeEmitter::emitInitElemPopUint64( uint32_t A0, SourceInfo L) {
32660 return emitOp<uint32_t>(OP_InitElemPopUint64, A0, L);
32661}
32662bool ByteCodeEmitter::emitInitElemPopIntAP( uint32_t A0, SourceInfo L) {
32663 return emitOp<uint32_t>(OP_InitElemPopIntAP, A0, L);
32664}
32665bool ByteCodeEmitter::emitInitElemPopIntAPS( uint32_t A0, SourceInfo L) {
32666 return emitOp<uint32_t>(OP_InitElemPopIntAPS, A0, L);
32667}
32668bool ByteCodeEmitter::emitInitElemPopBool( uint32_t A0, SourceInfo L) {
32669 return emitOp<uint32_t>(OP_InitElemPopBool, A0, L);
32670}
32671bool ByteCodeEmitter::emitInitElemPopFixedPoint( uint32_t A0, SourceInfo L) {
32672 return emitOp<uint32_t>(OP_InitElemPopFixedPoint, A0, L);
32673}
32674bool ByteCodeEmitter::emitInitElemPopPtr( uint32_t A0, SourceInfo L) {
32675 return emitOp<uint32_t>(OP_InitElemPopPtr, A0, L);
32676}
32677bool ByteCodeEmitter::emitInitElemPopMemberPtr( uint32_t A0, SourceInfo L) {
32678 return emitOp<uint32_t>(OP_InitElemPopMemberPtr, A0, L);
32679}
32680bool ByteCodeEmitter::emitInitElemPopFloat( uint32_t A0, SourceInfo L) {
32681 return emitOp<uint32_t>(OP_InitElemPopFloat, A0, L);
32682}
32683#endif
32684#ifdef GET_EVAL_IMPL
32685bool EvalEmitter::emitInitElemPopSint8( uint32_t A0, SourceInfo L) {
32686 if (!isActive()) return true;
32687 CurrentSource = L;
32688 return InitElemPop<PT_Sint8>(S, CodePtr(), A0);
32689}
32690bool EvalEmitter::emitInitElemPopUint8( uint32_t A0, SourceInfo L) {
32691 if (!isActive()) return true;
32692 CurrentSource = L;
32693 return InitElemPop<PT_Uint8>(S, CodePtr(), A0);
32694}
32695bool EvalEmitter::emitInitElemPopSint16( uint32_t A0, SourceInfo L) {
32696 if (!isActive()) return true;
32697 CurrentSource = L;
32698 return InitElemPop<PT_Sint16>(S, CodePtr(), A0);
32699}
32700bool EvalEmitter::emitInitElemPopUint16( uint32_t A0, SourceInfo L) {
32701 if (!isActive()) return true;
32702 CurrentSource = L;
32703 return InitElemPop<PT_Uint16>(S, CodePtr(), A0);
32704}
32705bool EvalEmitter::emitInitElemPopSint32( uint32_t A0, SourceInfo L) {
32706 if (!isActive()) return true;
32707 CurrentSource = L;
32708 return InitElemPop<PT_Sint32>(S, CodePtr(), A0);
32709}
32710bool EvalEmitter::emitInitElemPopUint32( uint32_t A0, SourceInfo L) {
32711 if (!isActive()) return true;
32712 CurrentSource = L;
32713 return InitElemPop<PT_Uint32>(S, CodePtr(), A0);
32714}
32715bool EvalEmitter::emitInitElemPopSint64( uint32_t A0, SourceInfo L) {
32716 if (!isActive()) return true;
32717 CurrentSource = L;
32718 return InitElemPop<PT_Sint64>(S, CodePtr(), A0);
32719}
32720bool EvalEmitter::emitInitElemPopUint64( uint32_t A0, SourceInfo L) {
32721 if (!isActive()) return true;
32722 CurrentSource = L;
32723 return InitElemPop<PT_Uint64>(S, CodePtr(), A0);
32724}
32725bool EvalEmitter::emitInitElemPopIntAP( uint32_t A0, SourceInfo L) {
32726 if (!isActive()) return true;
32727 CurrentSource = L;
32728 return InitElemPop<PT_IntAP>(S, CodePtr(), A0);
32729}
32730bool EvalEmitter::emitInitElemPopIntAPS( uint32_t A0, SourceInfo L) {
32731 if (!isActive()) return true;
32732 CurrentSource = L;
32733 return InitElemPop<PT_IntAPS>(S, CodePtr(), A0);
32734}
32735bool EvalEmitter::emitInitElemPopBool( uint32_t A0, SourceInfo L) {
32736 if (!isActive()) return true;
32737 CurrentSource = L;
32738 return InitElemPop<PT_Bool>(S, CodePtr(), A0);
32739}
32740bool EvalEmitter::emitInitElemPopFixedPoint( uint32_t A0, SourceInfo L) {
32741 if (!isActive()) return true;
32742 CurrentSource = L;
32743 return InitElemPop<PT_FixedPoint>(S, CodePtr(), A0);
32744}
32745bool EvalEmitter::emitInitElemPopPtr( uint32_t A0, SourceInfo L) {
32746 if (!isActive()) return true;
32747 CurrentSource = L;
32748 return InitElemPop<PT_Ptr>(S, CodePtr(), A0);
32749}
32750bool EvalEmitter::emitInitElemPopMemberPtr( uint32_t A0, SourceInfo L) {
32751 if (!isActive()) return true;
32752 CurrentSource = L;
32753 return InitElemPop<PT_MemberPtr>(S, CodePtr(), A0);
32754}
32755bool EvalEmitter::emitInitElemPopFloat( uint32_t A0, SourceInfo L) {
32756 if (!isActive()) return true;
32757 CurrentSource = L;
32758 return InitElemPop<PT_Float>(S, CodePtr(), A0);
32759}
32760#endif
32761#ifdef GET_OPCODE_NAMES
32762OP_InitFieldSint8,
32763OP_InitFieldUint8,
32764OP_InitFieldSint16,
32765OP_InitFieldUint16,
32766OP_InitFieldSint32,
32767OP_InitFieldUint32,
32768OP_InitFieldSint64,
32769OP_InitFieldUint64,
32770OP_InitFieldIntAP,
32771OP_InitFieldIntAPS,
32772OP_InitFieldBool,
32773OP_InitFieldFixedPoint,
32774OP_InitFieldPtr,
32775OP_InitFieldMemberPtr,
32776OP_InitFieldFloat,
32777#endif
32778#ifdef GET_INTERPFN_LIST
32779&Interp_InitFieldSint8,
32780&Interp_InitFieldUint8,
32781&Interp_InitFieldSint16,
32782&Interp_InitFieldUint16,
32783&Interp_InitFieldSint32,
32784&Interp_InitFieldUint32,
32785&Interp_InitFieldSint64,
32786&Interp_InitFieldUint64,
32787&Interp_InitFieldIntAP,
32788&Interp_InitFieldIntAPS,
32789&Interp_InitFieldBool,
32790&Interp_InitFieldFixedPoint,
32791&Interp_InitFieldPtr,
32792&Interp_InitFieldMemberPtr,
32793&Interp_InitFieldFloat,
32794#endif
32795#ifdef GET_INTERPFN_DISPATCHERS
32796PRESERVE_NONE
32797static bool Interp_InitFieldSint8(InterpState &S) {
32798 {
32799 CodePtr OpPC = S.PC;
32800 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32801 if (!InitField<PT_Sint8>(S, OpPC, V0)) return false;
32802 }
32803#if USE_TAILCALLS
32804 MUSTTAIL return InterpNext(S);
32805#else
32806 return true;
32807#endif
32808}
32809PRESERVE_NONE
32810static bool Interp_InitFieldUint8(InterpState &S) {
32811 {
32812 CodePtr OpPC = S.PC;
32813 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32814 if (!InitField<PT_Uint8>(S, OpPC, V0)) return false;
32815 }
32816#if USE_TAILCALLS
32817 MUSTTAIL return InterpNext(S);
32818#else
32819 return true;
32820#endif
32821}
32822PRESERVE_NONE
32823static bool Interp_InitFieldSint16(InterpState &S) {
32824 {
32825 CodePtr OpPC = S.PC;
32826 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32827 if (!InitField<PT_Sint16>(S, OpPC, V0)) return false;
32828 }
32829#if USE_TAILCALLS
32830 MUSTTAIL return InterpNext(S);
32831#else
32832 return true;
32833#endif
32834}
32835PRESERVE_NONE
32836static bool Interp_InitFieldUint16(InterpState &S) {
32837 {
32838 CodePtr OpPC = S.PC;
32839 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32840 if (!InitField<PT_Uint16>(S, OpPC, V0)) return false;
32841 }
32842#if USE_TAILCALLS
32843 MUSTTAIL return InterpNext(S);
32844#else
32845 return true;
32846#endif
32847}
32848PRESERVE_NONE
32849static bool Interp_InitFieldSint32(InterpState &S) {
32850 {
32851 CodePtr OpPC = S.PC;
32852 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32853 if (!InitField<PT_Sint32>(S, OpPC, V0)) return false;
32854 }
32855#if USE_TAILCALLS
32856 MUSTTAIL return InterpNext(S);
32857#else
32858 return true;
32859#endif
32860}
32861PRESERVE_NONE
32862static bool Interp_InitFieldUint32(InterpState &S) {
32863 {
32864 CodePtr OpPC = S.PC;
32865 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32866 if (!InitField<PT_Uint32>(S, OpPC, V0)) return false;
32867 }
32868#if USE_TAILCALLS
32869 MUSTTAIL return InterpNext(S);
32870#else
32871 return true;
32872#endif
32873}
32874PRESERVE_NONE
32875static bool Interp_InitFieldSint64(InterpState &S) {
32876 {
32877 CodePtr OpPC = S.PC;
32878 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32879 if (!InitField<PT_Sint64>(S, OpPC, V0)) return false;
32880 }
32881#if USE_TAILCALLS
32882 MUSTTAIL return InterpNext(S);
32883#else
32884 return true;
32885#endif
32886}
32887PRESERVE_NONE
32888static bool Interp_InitFieldUint64(InterpState &S) {
32889 {
32890 CodePtr OpPC = S.PC;
32891 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32892 if (!InitField<PT_Uint64>(S, OpPC, V0)) return false;
32893 }
32894#if USE_TAILCALLS
32895 MUSTTAIL return InterpNext(S);
32896#else
32897 return true;
32898#endif
32899}
32900PRESERVE_NONE
32901static bool Interp_InitFieldIntAP(InterpState &S) {
32902 {
32903 CodePtr OpPC = S.PC;
32904 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32905 if (!InitField<PT_IntAP>(S, OpPC, V0)) return false;
32906 }
32907#if USE_TAILCALLS
32908 MUSTTAIL return InterpNext(S);
32909#else
32910 return true;
32911#endif
32912}
32913PRESERVE_NONE
32914static bool Interp_InitFieldIntAPS(InterpState &S) {
32915 {
32916 CodePtr OpPC = S.PC;
32917 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32918 if (!InitField<PT_IntAPS>(S, OpPC, V0)) return false;
32919 }
32920#if USE_TAILCALLS
32921 MUSTTAIL return InterpNext(S);
32922#else
32923 return true;
32924#endif
32925}
32926PRESERVE_NONE
32927static bool Interp_InitFieldBool(InterpState &S) {
32928 {
32929 CodePtr OpPC = S.PC;
32930 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32931 if (!InitField<PT_Bool>(S, OpPC, V0)) return false;
32932 }
32933#if USE_TAILCALLS
32934 MUSTTAIL return InterpNext(S);
32935#else
32936 return true;
32937#endif
32938}
32939PRESERVE_NONE
32940static bool Interp_InitFieldFixedPoint(InterpState &S) {
32941 {
32942 CodePtr OpPC = S.PC;
32943 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32944 if (!InitField<PT_FixedPoint>(S, OpPC, V0)) return false;
32945 }
32946#if USE_TAILCALLS
32947 MUSTTAIL return InterpNext(S);
32948#else
32949 return true;
32950#endif
32951}
32952PRESERVE_NONE
32953static bool Interp_InitFieldPtr(InterpState &S) {
32954 {
32955 CodePtr OpPC = S.PC;
32956 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32957 if (!InitField<PT_Ptr>(S, OpPC, V0)) return false;
32958 }
32959#if USE_TAILCALLS
32960 MUSTTAIL return InterpNext(S);
32961#else
32962 return true;
32963#endif
32964}
32965PRESERVE_NONE
32966static bool Interp_InitFieldMemberPtr(InterpState &S) {
32967 {
32968 CodePtr OpPC = S.PC;
32969 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32970 if (!InitField<PT_MemberPtr>(S, OpPC, V0)) return false;
32971 }
32972#if USE_TAILCALLS
32973 MUSTTAIL return InterpNext(S);
32974#else
32975 return true;
32976#endif
32977}
32978PRESERVE_NONE
32979static bool Interp_InitFieldFloat(InterpState &S) {
32980 {
32981 CodePtr OpPC = S.PC;
32982 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32983 if (!InitField<PT_Float>(S, OpPC, V0)) return false;
32984 }
32985#if USE_TAILCALLS
32986 MUSTTAIL return InterpNext(S);
32987#else
32988 return true;
32989#endif
32990}
32991#endif
32992#ifdef GET_DISASM
32993case OP_InitFieldSint8:
32994 Text.Op = PrintName("InitFieldSint8");
32995 Text.Args.push_back(printArg<uint32_t>(PC));
32996 break;
32997case OP_InitFieldUint8:
32998 Text.Op = PrintName("InitFieldUint8");
32999 Text.Args.push_back(printArg<uint32_t>(PC));
33000 break;
33001case OP_InitFieldSint16:
33002 Text.Op = PrintName("InitFieldSint16");
33003 Text.Args.push_back(printArg<uint32_t>(PC));
33004 break;
33005case OP_InitFieldUint16:
33006 Text.Op = PrintName("InitFieldUint16");
33007 Text.Args.push_back(printArg<uint32_t>(PC));
33008 break;
33009case OP_InitFieldSint32:
33010 Text.Op = PrintName("InitFieldSint32");
33011 Text.Args.push_back(printArg<uint32_t>(PC));
33012 break;
33013case OP_InitFieldUint32:
33014 Text.Op = PrintName("InitFieldUint32");
33015 Text.Args.push_back(printArg<uint32_t>(PC));
33016 break;
33017case OP_InitFieldSint64:
33018 Text.Op = PrintName("InitFieldSint64");
33019 Text.Args.push_back(printArg<uint32_t>(PC));
33020 break;
33021case OP_InitFieldUint64:
33022 Text.Op = PrintName("InitFieldUint64");
33023 Text.Args.push_back(printArg<uint32_t>(PC));
33024 break;
33025case OP_InitFieldIntAP:
33026 Text.Op = PrintName("InitFieldIntAP");
33027 Text.Args.push_back(printArg<uint32_t>(PC));
33028 break;
33029case OP_InitFieldIntAPS:
33030 Text.Op = PrintName("InitFieldIntAPS");
33031 Text.Args.push_back(printArg<uint32_t>(PC));
33032 break;
33033case OP_InitFieldBool:
33034 Text.Op = PrintName("InitFieldBool");
33035 Text.Args.push_back(printArg<uint32_t>(PC));
33036 break;
33037case OP_InitFieldFixedPoint:
33038 Text.Op = PrintName("InitFieldFixedPoint");
33039 Text.Args.push_back(printArg<uint32_t>(PC));
33040 break;
33041case OP_InitFieldPtr:
33042 Text.Op = PrintName("InitFieldPtr");
33043 Text.Args.push_back(printArg<uint32_t>(PC));
33044 break;
33045case OP_InitFieldMemberPtr:
33046 Text.Op = PrintName("InitFieldMemberPtr");
33047 Text.Args.push_back(printArg<uint32_t>(PC));
33048 break;
33049case OP_InitFieldFloat:
33050 Text.Op = PrintName("InitFieldFloat");
33051 Text.Args.push_back(printArg<uint32_t>(PC));
33052 break;
33053#endif
33054#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33055bool emitInitFieldSint8( uint32_t , SourceInfo);
33056bool emitInitFieldUint8( uint32_t , SourceInfo);
33057bool emitInitFieldSint16( uint32_t , SourceInfo);
33058bool emitInitFieldUint16( uint32_t , SourceInfo);
33059bool emitInitFieldSint32( uint32_t , SourceInfo);
33060bool emitInitFieldUint32( uint32_t , SourceInfo);
33061bool emitInitFieldSint64( uint32_t , SourceInfo);
33062bool emitInitFieldUint64( uint32_t , SourceInfo);
33063bool emitInitFieldIntAP( uint32_t , SourceInfo);
33064bool emitInitFieldIntAPS( uint32_t , SourceInfo);
33065bool emitInitFieldBool( uint32_t , SourceInfo);
33066bool emitInitFieldFixedPoint( uint32_t , SourceInfo);
33067bool emitInitFieldPtr( uint32_t , SourceInfo);
33068bool emitInitFieldMemberPtr( uint32_t , SourceInfo);
33069bool emitInitFieldFloat( uint32_t , SourceInfo);
33070#endif
33071#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33072[[nodiscard]] bool emitInitField(PrimType, uint32_t, SourceInfo I);
33073#endif
33074#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
33075bool
33076#if defined(GET_EVAL_IMPL)
33077EvalEmitter
33078#else
33079ByteCodeEmitter
33080#endif
33081::emitInitField(PrimType T0, uint32_t A0, SourceInfo I) {
33082 switch (T0) {
33083 case PT_Sint8:
33084 return emitInitFieldSint8(A0, I);
33085 case PT_Uint8:
33086 return emitInitFieldUint8(A0, I);
33087 case PT_Sint16:
33088 return emitInitFieldSint16(A0, I);
33089 case PT_Uint16:
33090 return emitInitFieldUint16(A0, I);
33091 case PT_Sint32:
33092 return emitInitFieldSint32(A0, I);
33093 case PT_Uint32:
33094 return emitInitFieldUint32(A0, I);
33095 case PT_Sint64:
33096 return emitInitFieldSint64(A0, I);
33097 case PT_Uint64:
33098 return emitInitFieldUint64(A0, I);
33099 case PT_IntAP:
33100 return emitInitFieldIntAP(A0, I);
33101 case PT_IntAPS:
33102 return emitInitFieldIntAPS(A0, I);
33103 case PT_Bool:
33104 return emitInitFieldBool(A0, I);
33105 case PT_FixedPoint:
33106 return emitInitFieldFixedPoint(A0, I);
33107 case PT_Ptr:
33108 return emitInitFieldPtr(A0, I);
33109 case PT_MemberPtr:
33110 return emitInitFieldMemberPtr(A0, I);
33111 case PT_Float:
33112 return emitInitFieldFloat(A0, I);
33113 }
33114 llvm_unreachable("invalid enum value");
33115}
33116#endif
33117#ifdef GET_LINK_IMPL
33118bool ByteCodeEmitter::emitInitFieldSint8( uint32_t A0, SourceInfo L) {
33119 return emitOp<uint32_t>(OP_InitFieldSint8, A0, L);
33120}
33121bool ByteCodeEmitter::emitInitFieldUint8( uint32_t A0, SourceInfo L) {
33122 return emitOp<uint32_t>(OP_InitFieldUint8, A0, L);
33123}
33124bool ByteCodeEmitter::emitInitFieldSint16( uint32_t A0, SourceInfo L) {
33125 return emitOp<uint32_t>(OP_InitFieldSint16, A0, L);
33126}
33127bool ByteCodeEmitter::emitInitFieldUint16( uint32_t A0, SourceInfo L) {
33128 return emitOp<uint32_t>(OP_InitFieldUint16, A0, L);
33129}
33130bool ByteCodeEmitter::emitInitFieldSint32( uint32_t A0, SourceInfo L) {
33131 return emitOp<uint32_t>(OP_InitFieldSint32, A0, L);
33132}
33133bool ByteCodeEmitter::emitInitFieldUint32( uint32_t A0, SourceInfo L) {
33134 return emitOp<uint32_t>(OP_InitFieldUint32, A0, L);
33135}
33136bool ByteCodeEmitter::emitInitFieldSint64( uint32_t A0, SourceInfo L) {
33137 return emitOp<uint32_t>(OP_InitFieldSint64, A0, L);
33138}
33139bool ByteCodeEmitter::emitInitFieldUint64( uint32_t A0, SourceInfo L) {
33140 return emitOp<uint32_t>(OP_InitFieldUint64, A0, L);
33141}
33142bool ByteCodeEmitter::emitInitFieldIntAP( uint32_t A0, SourceInfo L) {
33143 return emitOp<uint32_t>(OP_InitFieldIntAP, A0, L);
33144}
33145bool ByteCodeEmitter::emitInitFieldIntAPS( uint32_t A0, SourceInfo L) {
33146 return emitOp<uint32_t>(OP_InitFieldIntAPS, A0, L);
33147}
33148bool ByteCodeEmitter::emitInitFieldBool( uint32_t A0, SourceInfo L) {
33149 return emitOp<uint32_t>(OP_InitFieldBool, A0, L);
33150}
33151bool ByteCodeEmitter::emitInitFieldFixedPoint( uint32_t A0, SourceInfo L) {
33152 return emitOp<uint32_t>(OP_InitFieldFixedPoint, A0, L);
33153}
33154bool ByteCodeEmitter::emitInitFieldPtr( uint32_t A0, SourceInfo L) {
33155 return emitOp<uint32_t>(OP_InitFieldPtr, A0, L);
33156}
33157bool ByteCodeEmitter::emitInitFieldMemberPtr( uint32_t A0, SourceInfo L) {
33158 return emitOp<uint32_t>(OP_InitFieldMemberPtr, A0, L);
33159}
33160bool ByteCodeEmitter::emitInitFieldFloat( uint32_t A0, SourceInfo L) {
33161 return emitOp<uint32_t>(OP_InitFieldFloat, A0, L);
33162}
33163#endif
33164#ifdef GET_EVAL_IMPL
33165bool EvalEmitter::emitInitFieldSint8( uint32_t A0, SourceInfo L) {
33166 if (!isActive()) return true;
33167 CurrentSource = L;
33168 return InitField<PT_Sint8>(S, CodePtr(), A0);
33169}
33170bool EvalEmitter::emitInitFieldUint8( uint32_t A0, SourceInfo L) {
33171 if (!isActive()) return true;
33172 CurrentSource = L;
33173 return InitField<PT_Uint8>(S, CodePtr(), A0);
33174}
33175bool EvalEmitter::emitInitFieldSint16( uint32_t A0, SourceInfo L) {
33176 if (!isActive()) return true;
33177 CurrentSource = L;
33178 return InitField<PT_Sint16>(S, CodePtr(), A0);
33179}
33180bool EvalEmitter::emitInitFieldUint16( uint32_t A0, SourceInfo L) {
33181 if (!isActive()) return true;
33182 CurrentSource = L;
33183 return InitField<PT_Uint16>(S, CodePtr(), A0);
33184}
33185bool EvalEmitter::emitInitFieldSint32( uint32_t A0, SourceInfo L) {
33186 if (!isActive()) return true;
33187 CurrentSource = L;
33188 return InitField<PT_Sint32>(S, CodePtr(), A0);
33189}
33190bool EvalEmitter::emitInitFieldUint32( uint32_t A0, SourceInfo L) {
33191 if (!isActive()) return true;
33192 CurrentSource = L;
33193 return InitField<PT_Uint32>(S, CodePtr(), A0);
33194}
33195bool EvalEmitter::emitInitFieldSint64( uint32_t A0, SourceInfo L) {
33196 if (!isActive()) return true;
33197 CurrentSource = L;
33198 return InitField<PT_Sint64>(S, CodePtr(), A0);
33199}
33200bool EvalEmitter::emitInitFieldUint64( uint32_t A0, SourceInfo L) {
33201 if (!isActive()) return true;
33202 CurrentSource = L;
33203 return InitField<PT_Uint64>(S, CodePtr(), A0);
33204}
33205bool EvalEmitter::emitInitFieldIntAP( uint32_t A0, SourceInfo L) {
33206 if (!isActive()) return true;
33207 CurrentSource = L;
33208 return InitField<PT_IntAP>(S, CodePtr(), A0);
33209}
33210bool EvalEmitter::emitInitFieldIntAPS( uint32_t A0, SourceInfo L) {
33211 if (!isActive()) return true;
33212 CurrentSource = L;
33213 return InitField<PT_IntAPS>(S, CodePtr(), A0);
33214}
33215bool EvalEmitter::emitInitFieldBool( uint32_t A0, SourceInfo L) {
33216 if (!isActive()) return true;
33217 CurrentSource = L;
33218 return InitField<PT_Bool>(S, CodePtr(), A0);
33219}
33220bool EvalEmitter::emitInitFieldFixedPoint( uint32_t A0, SourceInfo L) {
33221 if (!isActive()) return true;
33222 CurrentSource = L;
33223 return InitField<PT_FixedPoint>(S, CodePtr(), A0);
33224}
33225bool EvalEmitter::emitInitFieldPtr( uint32_t A0, SourceInfo L) {
33226 if (!isActive()) return true;
33227 CurrentSource = L;
33228 return InitField<PT_Ptr>(S, CodePtr(), A0);
33229}
33230bool EvalEmitter::emitInitFieldMemberPtr( uint32_t A0, SourceInfo L) {
33231 if (!isActive()) return true;
33232 CurrentSource = L;
33233 return InitField<PT_MemberPtr>(S, CodePtr(), A0);
33234}
33235bool EvalEmitter::emitInitFieldFloat( uint32_t A0, SourceInfo L) {
33236 if (!isActive()) return true;
33237 CurrentSource = L;
33238 return InitField<PT_Float>(S, CodePtr(), A0);
33239}
33240#endif
33241#ifdef GET_OPCODE_NAMES
33242OP_InitFieldActivateSint8,
33243OP_InitFieldActivateUint8,
33244OP_InitFieldActivateSint16,
33245OP_InitFieldActivateUint16,
33246OP_InitFieldActivateSint32,
33247OP_InitFieldActivateUint32,
33248OP_InitFieldActivateSint64,
33249OP_InitFieldActivateUint64,
33250OP_InitFieldActivateIntAP,
33251OP_InitFieldActivateIntAPS,
33252OP_InitFieldActivateBool,
33253OP_InitFieldActivateFixedPoint,
33254OP_InitFieldActivatePtr,
33255OP_InitFieldActivateMemberPtr,
33256OP_InitFieldActivateFloat,
33257#endif
33258#ifdef GET_INTERPFN_LIST
33259&Interp_InitFieldActivateSint8,
33260&Interp_InitFieldActivateUint8,
33261&Interp_InitFieldActivateSint16,
33262&Interp_InitFieldActivateUint16,
33263&Interp_InitFieldActivateSint32,
33264&Interp_InitFieldActivateUint32,
33265&Interp_InitFieldActivateSint64,
33266&Interp_InitFieldActivateUint64,
33267&Interp_InitFieldActivateIntAP,
33268&Interp_InitFieldActivateIntAPS,
33269&Interp_InitFieldActivateBool,
33270&Interp_InitFieldActivateFixedPoint,
33271&Interp_InitFieldActivatePtr,
33272&Interp_InitFieldActivateMemberPtr,
33273&Interp_InitFieldActivateFloat,
33274#endif
33275#ifdef GET_INTERPFN_DISPATCHERS
33276PRESERVE_NONE
33277static bool Interp_InitFieldActivateSint8(InterpState &S) {
33278 {
33279 CodePtr OpPC = S.PC;
33280 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33281 if (!InitFieldActivate<PT_Sint8>(S, OpPC, V0)) return false;
33282 }
33283#if USE_TAILCALLS
33284 MUSTTAIL return InterpNext(S);
33285#else
33286 return true;
33287#endif
33288}
33289PRESERVE_NONE
33290static bool Interp_InitFieldActivateUint8(InterpState &S) {
33291 {
33292 CodePtr OpPC = S.PC;
33293 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33294 if (!InitFieldActivate<PT_Uint8>(S, OpPC, V0)) return false;
33295 }
33296#if USE_TAILCALLS
33297 MUSTTAIL return InterpNext(S);
33298#else
33299 return true;
33300#endif
33301}
33302PRESERVE_NONE
33303static bool Interp_InitFieldActivateSint16(InterpState &S) {
33304 {
33305 CodePtr OpPC = S.PC;
33306 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33307 if (!InitFieldActivate<PT_Sint16>(S, OpPC, V0)) return false;
33308 }
33309#if USE_TAILCALLS
33310 MUSTTAIL return InterpNext(S);
33311#else
33312 return true;
33313#endif
33314}
33315PRESERVE_NONE
33316static bool Interp_InitFieldActivateUint16(InterpState &S) {
33317 {
33318 CodePtr OpPC = S.PC;
33319 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33320 if (!InitFieldActivate<PT_Uint16>(S, OpPC, V0)) return false;
33321 }
33322#if USE_TAILCALLS
33323 MUSTTAIL return InterpNext(S);
33324#else
33325 return true;
33326#endif
33327}
33328PRESERVE_NONE
33329static bool Interp_InitFieldActivateSint32(InterpState &S) {
33330 {
33331 CodePtr OpPC = S.PC;
33332 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33333 if (!InitFieldActivate<PT_Sint32>(S, OpPC, V0)) return false;
33334 }
33335#if USE_TAILCALLS
33336 MUSTTAIL return InterpNext(S);
33337#else
33338 return true;
33339#endif
33340}
33341PRESERVE_NONE
33342static bool Interp_InitFieldActivateUint32(InterpState &S) {
33343 {
33344 CodePtr OpPC = S.PC;
33345 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33346 if (!InitFieldActivate<PT_Uint32>(S, OpPC, V0)) return false;
33347 }
33348#if USE_TAILCALLS
33349 MUSTTAIL return InterpNext(S);
33350#else
33351 return true;
33352#endif
33353}
33354PRESERVE_NONE
33355static bool Interp_InitFieldActivateSint64(InterpState &S) {
33356 {
33357 CodePtr OpPC = S.PC;
33358 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33359 if (!InitFieldActivate<PT_Sint64>(S, OpPC, V0)) return false;
33360 }
33361#if USE_TAILCALLS
33362 MUSTTAIL return InterpNext(S);
33363#else
33364 return true;
33365#endif
33366}
33367PRESERVE_NONE
33368static bool Interp_InitFieldActivateUint64(InterpState &S) {
33369 {
33370 CodePtr OpPC = S.PC;
33371 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33372 if (!InitFieldActivate<PT_Uint64>(S, OpPC, V0)) return false;
33373 }
33374#if USE_TAILCALLS
33375 MUSTTAIL return InterpNext(S);
33376#else
33377 return true;
33378#endif
33379}
33380PRESERVE_NONE
33381static bool Interp_InitFieldActivateIntAP(InterpState &S) {
33382 {
33383 CodePtr OpPC = S.PC;
33384 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33385 if (!InitFieldActivate<PT_IntAP>(S, OpPC, V0)) return false;
33386 }
33387#if USE_TAILCALLS
33388 MUSTTAIL return InterpNext(S);
33389#else
33390 return true;
33391#endif
33392}
33393PRESERVE_NONE
33394static bool Interp_InitFieldActivateIntAPS(InterpState &S) {
33395 {
33396 CodePtr OpPC = S.PC;
33397 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33398 if (!InitFieldActivate<PT_IntAPS>(S, OpPC, V0)) return false;
33399 }
33400#if USE_TAILCALLS
33401 MUSTTAIL return InterpNext(S);
33402#else
33403 return true;
33404#endif
33405}
33406PRESERVE_NONE
33407static bool Interp_InitFieldActivateBool(InterpState &S) {
33408 {
33409 CodePtr OpPC = S.PC;
33410 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33411 if (!InitFieldActivate<PT_Bool>(S, OpPC, V0)) return false;
33412 }
33413#if USE_TAILCALLS
33414 MUSTTAIL return InterpNext(S);
33415#else
33416 return true;
33417#endif
33418}
33419PRESERVE_NONE
33420static bool Interp_InitFieldActivateFixedPoint(InterpState &S) {
33421 {
33422 CodePtr OpPC = S.PC;
33423 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33424 if (!InitFieldActivate<PT_FixedPoint>(S, OpPC, V0)) return false;
33425 }
33426#if USE_TAILCALLS
33427 MUSTTAIL return InterpNext(S);
33428#else
33429 return true;
33430#endif
33431}
33432PRESERVE_NONE
33433static bool Interp_InitFieldActivatePtr(InterpState &S) {
33434 {
33435 CodePtr OpPC = S.PC;
33436 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33437 if (!InitFieldActivate<PT_Ptr>(S, OpPC, V0)) return false;
33438 }
33439#if USE_TAILCALLS
33440 MUSTTAIL return InterpNext(S);
33441#else
33442 return true;
33443#endif
33444}
33445PRESERVE_NONE
33446static bool Interp_InitFieldActivateMemberPtr(InterpState &S) {
33447 {
33448 CodePtr OpPC = S.PC;
33449 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33450 if (!InitFieldActivate<PT_MemberPtr>(S, OpPC, V0)) return false;
33451 }
33452#if USE_TAILCALLS
33453 MUSTTAIL return InterpNext(S);
33454#else
33455 return true;
33456#endif
33457}
33458PRESERVE_NONE
33459static bool Interp_InitFieldActivateFloat(InterpState &S) {
33460 {
33461 CodePtr OpPC = S.PC;
33462 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33463 if (!InitFieldActivate<PT_Float>(S, OpPC, V0)) return false;
33464 }
33465#if USE_TAILCALLS
33466 MUSTTAIL return InterpNext(S);
33467#else
33468 return true;
33469#endif
33470}
33471#endif
33472#ifdef GET_DISASM
33473case OP_InitFieldActivateSint8:
33474 Text.Op = PrintName("InitFieldActivateSint8");
33475 Text.Args.push_back(printArg<uint32_t>(PC));
33476 break;
33477case OP_InitFieldActivateUint8:
33478 Text.Op = PrintName("InitFieldActivateUint8");
33479 Text.Args.push_back(printArg<uint32_t>(PC));
33480 break;
33481case OP_InitFieldActivateSint16:
33482 Text.Op = PrintName("InitFieldActivateSint16");
33483 Text.Args.push_back(printArg<uint32_t>(PC));
33484 break;
33485case OP_InitFieldActivateUint16:
33486 Text.Op = PrintName("InitFieldActivateUint16");
33487 Text.Args.push_back(printArg<uint32_t>(PC));
33488 break;
33489case OP_InitFieldActivateSint32:
33490 Text.Op = PrintName("InitFieldActivateSint32");
33491 Text.Args.push_back(printArg<uint32_t>(PC));
33492 break;
33493case OP_InitFieldActivateUint32:
33494 Text.Op = PrintName("InitFieldActivateUint32");
33495 Text.Args.push_back(printArg<uint32_t>(PC));
33496 break;
33497case OP_InitFieldActivateSint64:
33498 Text.Op = PrintName("InitFieldActivateSint64");
33499 Text.Args.push_back(printArg<uint32_t>(PC));
33500 break;
33501case OP_InitFieldActivateUint64:
33502 Text.Op = PrintName("InitFieldActivateUint64");
33503 Text.Args.push_back(printArg<uint32_t>(PC));
33504 break;
33505case OP_InitFieldActivateIntAP:
33506 Text.Op = PrintName("InitFieldActivateIntAP");
33507 Text.Args.push_back(printArg<uint32_t>(PC));
33508 break;
33509case OP_InitFieldActivateIntAPS:
33510 Text.Op = PrintName("InitFieldActivateIntAPS");
33511 Text.Args.push_back(printArg<uint32_t>(PC));
33512 break;
33513case OP_InitFieldActivateBool:
33514 Text.Op = PrintName("InitFieldActivateBool");
33515 Text.Args.push_back(printArg<uint32_t>(PC));
33516 break;
33517case OP_InitFieldActivateFixedPoint:
33518 Text.Op = PrintName("InitFieldActivateFixedPoint");
33519 Text.Args.push_back(printArg<uint32_t>(PC));
33520 break;
33521case OP_InitFieldActivatePtr:
33522 Text.Op = PrintName("InitFieldActivatePtr");
33523 Text.Args.push_back(printArg<uint32_t>(PC));
33524 break;
33525case OP_InitFieldActivateMemberPtr:
33526 Text.Op = PrintName("InitFieldActivateMemberPtr");
33527 Text.Args.push_back(printArg<uint32_t>(PC));
33528 break;
33529case OP_InitFieldActivateFloat:
33530 Text.Op = PrintName("InitFieldActivateFloat");
33531 Text.Args.push_back(printArg<uint32_t>(PC));
33532 break;
33533#endif
33534#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33535bool emitInitFieldActivateSint8( uint32_t , SourceInfo);
33536bool emitInitFieldActivateUint8( uint32_t , SourceInfo);
33537bool emitInitFieldActivateSint16( uint32_t , SourceInfo);
33538bool emitInitFieldActivateUint16( uint32_t , SourceInfo);
33539bool emitInitFieldActivateSint32( uint32_t , SourceInfo);
33540bool emitInitFieldActivateUint32( uint32_t , SourceInfo);
33541bool emitInitFieldActivateSint64( uint32_t , SourceInfo);
33542bool emitInitFieldActivateUint64( uint32_t , SourceInfo);
33543bool emitInitFieldActivateIntAP( uint32_t , SourceInfo);
33544bool emitInitFieldActivateIntAPS( uint32_t , SourceInfo);
33545bool emitInitFieldActivateBool( uint32_t , SourceInfo);
33546bool emitInitFieldActivateFixedPoint( uint32_t , SourceInfo);
33547bool emitInitFieldActivatePtr( uint32_t , SourceInfo);
33548bool emitInitFieldActivateMemberPtr( uint32_t , SourceInfo);
33549bool emitInitFieldActivateFloat( uint32_t , SourceInfo);
33550#endif
33551#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33552[[nodiscard]] bool emitInitFieldActivate(PrimType, uint32_t, SourceInfo I);
33553#endif
33554#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
33555bool
33556#if defined(GET_EVAL_IMPL)
33557EvalEmitter
33558#else
33559ByteCodeEmitter
33560#endif
33561::emitInitFieldActivate(PrimType T0, uint32_t A0, SourceInfo I) {
33562 switch (T0) {
33563 case PT_Sint8:
33564 return emitInitFieldActivateSint8(A0, I);
33565 case PT_Uint8:
33566 return emitInitFieldActivateUint8(A0, I);
33567 case PT_Sint16:
33568 return emitInitFieldActivateSint16(A0, I);
33569 case PT_Uint16:
33570 return emitInitFieldActivateUint16(A0, I);
33571 case PT_Sint32:
33572 return emitInitFieldActivateSint32(A0, I);
33573 case PT_Uint32:
33574 return emitInitFieldActivateUint32(A0, I);
33575 case PT_Sint64:
33576 return emitInitFieldActivateSint64(A0, I);
33577 case PT_Uint64:
33578 return emitInitFieldActivateUint64(A0, I);
33579 case PT_IntAP:
33580 return emitInitFieldActivateIntAP(A0, I);
33581 case PT_IntAPS:
33582 return emitInitFieldActivateIntAPS(A0, I);
33583 case PT_Bool:
33584 return emitInitFieldActivateBool(A0, I);
33585 case PT_FixedPoint:
33586 return emitInitFieldActivateFixedPoint(A0, I);
33587 case PT_Ptr:
33588 return emitInitFieldActivatePtr(A0, I);
33589 case PT_MemberPtr:
33590 return emitInitFieldActivateMemberPtr(A0, I);
33591 case PT_Float:
33592 return emitInitFieldActivateFloat(A0, I);
33593 }
33594 llvm_unreachable("invalid enum value");
33595}
33596#endif
33597#ifdef GET_LINK_IMPL
33598bool ByteCodeEmitter::emitInitFieldActivateSint8( uint32_t A0, SourceInfo L) {
33599 return emitOp<uint32_t>(OP_InitFieldActivateSint8, A0, L);
33600}
33601bool ByteCodeEmitter::emitInitFieldActivateUint8( uint32_t A0, SourceInfo L) {
33602 return emitOp<uint32_t>(OP_InitFieldActivateUint8, A0, L);
33603}
33604bool ByteCodeEmitter::emitInitFieldActivateSint16( uint32_t A0, SourceInfo L) {
33605 return emitOp<uint32_t>(OP_InitFieldActivateSint16, A0, L);
33606}
33607bool ByteCodeEmitter::emitInitFieldActivateUint16( uint32_t A0, SourceInfo L) {
33608 return emitOp<uint32_t>(OP_InitFieldActivateUint16, A0, L);
33609}
33610bool ByteCodeEmitter::emitInitFieldActivateSint32( uint32_t A0, SourceInfo L) {
33611 return emitOp<uint32_t>(OP_InitFieldActivateSint32, A0, L);
33612}
33613bool ByteCodeEmitter::emitInitFieldActivateUint32( uint32_t A0, SourceInfo L) {
33614 return emitOp<uint32_t>(OP_InitFieldActivateUint32, A0, L);
33615}
33616bool ByteCodeEmitter::emitInitFieldActivateSint64( uint32_t A0, SourceInfo L) {
33617 return emitOp<uint32_t>(OP_InitFieldActivateSint64, A0, L);
33618}
33619bool ByteCodeEmitter::emitInitFieldActivateUint64( uint32_t A0, SourceInfo L) {
33620 return emitOp<uint32_t>(OP_InitFieldActivateUint64, A0, L);
33621}
33622bool ByteCodeEmitter::emitInitFieldActivateIntAP( uint32_t A0, SourceInfo L) {
33623 return emitOp<uint32_t>(OP_InitFieldActivateIntAP, A0, L);
33624}
33625bool ByteCodeEmitter::emitInitFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
33626 return emitOp<uint32_t>(OP_InitFieldActivateIntAPS, A0, L);
33627}
33628bool ByteCodeEmitter::emitInitFieldActivateBool( uint32_t A0, SourceInfo L) {
33629 return emitOp<uint32_t>(OP_InitFieldActivateBool, A0, L);
33630}
33631bool ByteCodeEmitter::emitInitFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
33632 return emitOp<uint32_t>(OP_InitFieldActivateFixedPoint, A0, L);
33633}
33634bool ByteCodeEmitter::emitInitFieldActivatePtr( uint32_t A0, SourceInfo L) {
33635 return emitOp<uint32_t>(OP_InitFieldActivatePtr, A0, L);
33636}
33637bool ByteCodeEmitter::emitInitFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
33638 return emitOp<uint32_t>(OP_InitFieldActivateMemberPtr, A0, L);
33639}
33640bool ByteCodeEmitter::emitInitFieldActivateFloat( uint32_t A0, SourceInfo L) {
33641 return emitOp<uint32_t>(OP_InitFieldActivateFloat, A0, L);
33642}
33643#endif
33644#ifdef GET_EVAL_IMPL
33645bool EvalEmitter::emitInitFieldActivateSint8( uint32_t A0, SourceInfo L) {
33646 if (!isActive()) return true;
33647 CurrentSource = L;
33648 return InitFieldActivate<PT_Sint8>(S, CodePtr(), A0);
33649}
33650bool EvalEmitter::emitInitFieldActivateUint8( uint32_t A0, SourceInfo L) {
33651 if (!isActive()) return true;
33652 CurrentSource = L;
33653 return InitFieldActivate<PT_Uint8>(S, CodePtr(), A0);
33654}
33655bool EvalEmitter::emitInitFieldActivateSint16( uint32_t A0, SourceInfo L) {
33656 if (!isActive()) return true;
33657 CurrentSource = L;
33658 return InitFieldActivate<PT_Sint16>(S, CodePtr(), A0);
33659}
33660bool EvalEmitter::emitInitFieldActivateUint16( uint32_t A0, SourceInfo L) {
33661 if (!isActive()) return true;
33662 CurrentSource = L;
33663 return InitFieldActivate<PT_Uint16>(S, CodePtr(), A0);
33664}
33665bool EvalEmitter::emitInitFieldActivateSint32( uint32_t A0, SourceInfo L) {
33666 if (!isActive()) return true;
33667 CurrentSource = L;
33668 return InitFieldActivate<PT_Sint32>(S, CodePtr(), A0);
33669}
33670bool EvalEmitter::emitInitFieldActivateUint32( uint32_t A0, SourceInfo L) {
33671 if (!isActive()) return true;
33672 CurrentSource = L;
33673 return InitFieldActivate<PT_Uint32>(S, CodePtr(), A0);
33674}
33675bool EvalEmitter::emitInitFieldActivateSint64( uint32_t A0, SourceInfo L) {
33676 if (!isActive()) return true;
33677 CurrentSource = L;
33678 return InitFieldActivate<PT_Sint64>(S, CodePtr(), A0);
33679}
33680bool EvalEmitter::emitInitFieldActivateUint64( uint32_t A0, SourceInfo L) {
33681 if (!isActive()) return true;
33682 CurrentSource = L;
33683 return InitFieldActivate<PT_Uint64>(S, CodePtr(), A0);
33684}
33685bool EvalEmitter::emitInitFieldActivateIntAP( uint32_t A0, SourceInfo L) {
33686 if (!isActive()) return true;
33687 CurrentSource = L;
33688 return InitFieldActivate<PT_IntAP>(S, CodePtr(), A0);
33689}
33690bool EvalEmitter::emitInitFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
33691 if (!isActive()) return true;
33692 CurrentSource = L;
33693 return InitFieldActivate<PT_IntAPS>(S, CodePtr(), A0);
33694}
33695bool EvalEmitter::emitInitFieldActivateBool( uint32_t A0, SourceInfo L) {
33696 if (!isActive()) return true;
33697 CurrentSource = L;
33698 return InitFieldActivate<PT_Bool>(S, CodePtr(), A0);
33699}
33700bool EvalEmitter::emitInitFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
33701 if (!isActive()) return true;
33702 CurrentSource = L;
33703 return InitFieldActivate<PT_FixedPoint>(S, CodePtr(), A0);
33704}
33705bool EvalEmitter::emitInitFieldActivatePtr( uint32_t A0, SourceInfo L) {
33706 if (!isActive()) return true;
33707 CurrentSource = L;
33708 return InitFieldActivate<PT_Ptr>(S, CodePtr(), A0);
33709}
33710bool EvalEmitter::emitInitFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
33711 if (!isActive()) return true;
33712 CurrentSource = L;
33713 return InitFieldActivate<PT_MemberPtr>(S, CodePtr(), A0);
33714}
33715bool EvalEmitter::emitInitFieldActivateFloat( uint32_t A0, SourceInfo L) {
33716 if (!isActive()) return true;
33717 CurrentSource = L;
33718 return InitFieldActivate<PT_Float>(S, CodePtr(), A0);
33719}
33720#endif
33721#ifdef GET_OPCODE_NAMES
33722OP_InitGlobalSint8,
33723OP_InitGlobalUint8,
33724OP_InitGlobalSint16,
33725OP_InitGlobalUint16,
33726OP_InitGlobalSint32,
33727OP_InitGlobalUint32,
33728OP_InitGlobalSint64,
33729OP_InitGlobalUint64,
33730OP_InitGlobalIntAP,
33731OP_InitGlobalIntAPS,
33732OP_InitGlobalBool,
33733OP_InitGlobalFixedPoint,
33734OP_InitGlobalPtr,
33735OP_InitGlobalMemberPtr,
33736OP_InitGlobalFloat,
33737#endif
33738#ifdef GET_INTERPFN_LIST
33739&Interp_InitGlobalSint8,
33740&Interp_InitGlobalUint8,
33741&Interp_InitGlobalSint16,
33742&Interp_InitGlobalUint16,
33743&Interp_InitGlobalSint32,
33744&Interp_InitGlobalUint32,
33745&Interp_InitGlobalSint64,
33746&Interp_InitGlobalUint64,
33747&Interp_InitGlobalIntAP,
33748&Interp_InitGlobalIntAPS,
33749&Interp_InitGlobalBool,
33750&Interp_InitGlobalFixedPoint,
33751&Interp_InitGlobalPtr,
33752&Interp_InitGlobalMemberPtr,
33753&Interp_InitGlobalFloat,
33754#endif
33755#ifdef GET_INTERPFN_DISPATCHERS
33756PRESERVE_NONE
33757static bool Interp_InitGlobalSint8(InterpState &S) {
33758 {
33759 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33760 InitGlobal<PT_Sint8>(S, V0);
33761 }
33762#if USE_TAILCALLS
33763 MUSTTAIL return InterpNext(S);
33764#else
33765 return true;
33766#endif
33767}
33768PRESERVE_NONE
33769static bool Interp_InitGlobalUint8(InterpState &S) {
33770 {
33771 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33772 InitGlobal<PT_Uint8>(S, V0);
33773 }
33774#if USE_TAILCALLS
33775 MUSTTAIL return InterpNext(S);
33776#else
33777 return true;
33778#endif
33779}
33780PRESERVE_NONE
33781static bool Interp_InitGlobalSint16(InterpState &S) {
33782 {
33783 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33784 InitGlobal<PT_Sint16>(S, V0);
33785 }
33786#if USE_TAILCALLS
33787 MUSTTAIL return InterpNext(S);
33788#else
33789 return true;
33790#endif
33791}
33792PRESERVE_NONE
33793static bool Interp_InitGlobalUint16(InterpState &S) {
33794 {
33795 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33796 InitGlobal<PT_Uint16>(S, V0);
33797 }
33798#if USE_TAILCALLS
33799 MUSTTAIL return InterpNext(S);
33800#else
33801 return true;
33802#endif
33803}
33804PRESERVE_NONE
33805static bool Interp_InitGlobalSint32(InterpState &S) {
33806 {
33807 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33808 InitGlobal<PT_Sint32>(S, V0);
33809 }
33810#if USE_TAILCALLS
33811 MUSTTAIL return InterpNext(S);
33812#else
33813 return true;
33814#endif
33815}
33816PRESERVE_NONE
33817static bool Interp_InitGlobalUint32(InterpState &S) {
33818 {
33819 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33820 InitGlobal<PT_Uint32>(S, V0);
33821 }
33822#if USE_TAILCALLS
33823 MUSTTAIL return InterpNext(S);
33824#else
33825 return true;
33826#endif
33827}
33828PRESERVE_NONE
33829static bool Interp_InitGlobalSint64(InterpState &S) {
33830 {
33831 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33832 InitGlobal<PT_Sint64>(S, V0);
33833 }
33834#if USE_TAILCALLS
33835 MUSTTAIL return InterpNext(S);
33836#else
33837 return true;
33838#endif
33839}
33840PRESERVE_NONE
33841static bool Interp_InitGlobalUint64(InterpState &S) {
33842 {
33843 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33844 InitGlobal<PT_Uint64>(S, V0);
33845 }
33846#if USE_TAILCALLS
33847 MUSTTAIL return InterpNext(S);
33848#else
33849 return true;
33850#endif
33851}
33852PRESERVE_NONE
33853static bool Interp_InitGlobalIntAP(InterpState &S) {
33854 {
33855 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33856 InitGlobal<PT_IntAP>(S, V0);
33857 }
33858#if USE_TAILCALLS
33859 MUSTTAIL return InterpNext(S);
33860#else
33861 return true;
33862#endif
33863}
33864PRESERVE_NONE
33865static bool Interp_InitGlobalIntAPS(InterpState &S) {
33866 {
33867 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33868 InitGlobal<PT_IntAPS>(S, V0);
33869 }
33870#if USE_TAILCALLS
33871 MUSTTAIL return InterpNext(S);
33872#else
33873 return true;
33874#endif
33875}
33876PRESERVE_NONE
33877static bool Interp_InitGlobalBool(InterpState &S) {
33878 {
33879 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33880 InitGlobal<PT_Bool>(S, V0);
33881 }
33882#if USE_TAILCALLS
33883 MUSTTAIL return InterpNext(S);
33884#else
33885 return true;
33886#endif
33887}
33888PRESERVE_NONE
33889static bool Interp_InitGlobalFixedPoint(InterpState &S) {
33890 {
33891 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33892 InitGlobal<PT_FixedPoint>(S, V0);
33893 }
33894#if USE_TAILCALLS
33895 MUSTTAIL return InterpNext(S);
33896#else
33897 return true;
33898#endif
33899}
33900PRESERVE_NONE
33901static bool Interp_InitGlobalPtr(InterpState &S) {
33902 {
33903 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33904 InitGlobal<PT_Ptr>(S, V0);
33905 }
33906#if USE_TAILCALLS
33907 MUSTTAIL return InterpNext(S);
33908#else
33909 return true;
33910#endif
33911}
33912PRESERVE_NONE
33913static bool Interp_InitGlobalMemberPtr(InterpState &S) {
33914 {
33915 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33916 InitGlobal<PT_MemberPtr>(S, V0);
33917 }
33918#if USE_TAILCALLS
33919 MUSTTAIL return InterpNext(S);
33920#else
33921 return true;
33922#endif
33923}
33924PRESERVE_NONE
33925static bool Interp_InitGlobalFloat(InterpState &S) {
33926 {
33927 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33928 InitGlobal<PT_Float>(S, V0);
33929 }
33930#if USE_TAILCALLS
33931 MUSTTAIL return InterpNext(S);
33932#else
33933 return true;
33934#endif
33935}
33936#endif
33937#ifdef GET_DISASM
33938case OP_InitGlobalSint8:
33939 Text.Op = PrintName("InitGlobalSint8");
33940 Text.Args.push_back(printArg<uint32_t>(PC));
33941 break;
33942case OP_InitGlobalUint8:
33943 Text.Op = PrintName("InitGlobalUint8");
33944 Text.Args.push_back(printArg<uint32_t>(PC));
33945 break;
33946case OP_InitGlobalSint16:
33947 Text.Op = PrintName("InitGlobalSint16");
33948 Text.Args.push_back(printArg<uint32_t>(PC));
33949 break;
33950case OP_InitGlobalUint16:
33951 Text.Op = PrintName("InitGlobalUint16");
33952 Text.Args.push_back(printArg<uint32_t>(PC));
33953 break;
33954case OP_InitGlobalSint32:
33955 Text.Op = PrintName("InitGlobalSint32");
33956 Text.Args.push_back(printArg<uint32_t>(PC));
33957 break;
33958case OP_InitGlobalUint32:
33959 Text.Op = PrintName("InitGlobalUint32");
33960 Text.Args.push_back(printArg<uint32_t>(PC));
33961 break;
33962case OP_InitGlobalSint64:
33963 Text.Op = PrintName("InitGlobalSint64");
33964 Text.Args.push_back(printArg<uint32_t>(PC));
33965 break;
33966case OP_InitGlobalUint64:
33967 Text.Op = PrintName("InitGlobalUint64");
33968 Text.Args.push_back(printArg<uint32_t>(PC));
33969 break;
33970case OP_InitGlobalIntAP:
33971 Text.Op = PrintName("InitGlobalIntAP");
33972 Text.Args.push_back(printArg<uint32_t>(PC));
33973 break;
33974case OP_InitGlobalIntAPS:
33975 Text.Op = PrintName("InitGlobalIntAPS");
33976 Text.Args.push_back(printArg<uint32_t>(PC));
33977 break;
33978case OP_InitGlobalBool:
33979 Text.Op = PrintName("InitGlobalBool");
33980 Text.Args.push_back(printArg<uint32_t>(PC));
33981 break;
33982case OP_InitGlobalFixedPoint:
33983 Text.Op = PrintName("InitGlobalFixedPoint");
33984 Text.Args.push_back(printArg<uint32_t>(PC));
33985 break;
33986case OP_InitGlobalPtr:
33987 Text.Op = PrintName("InitGlobalPtr");
33988 Text.Args.push_back(printArg<uint32_t>(PC));
33989 break;
33990case OP_InitGlobalMemberPtr:
33991 Text.Op = PrintName("InitGlobalMemberPtr");
33992 Text.Args.push_back(printArg<uint32_t>(PC));
33993 break;
33994case OP_InitGlobalFloat:
33995 Text.Op = PrintName("InitGlobalFloat");
33996 Text.Args.push_back(printArg<uint32_t>(PC));
33997 break;
33998#endif
33999#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34000bool emitInitGlobalSint8( uint32_t , SourceInfo);
34001bool emitInitGlobalUint8( uint32_t , SourceInfo);
34002bool emitInitGlobalSint16( uint32_t , SourceInfo);
34003bool emitInitGlobalUint16( uint32_t , SourceInfo);
34004bool emitInitGlobalSint32( uint32_t , SourceInfo);
34005bool emitInitGlobalUint32( uint32_t , SourceInfo);
34006bool emitInitGlobalSint64( uint32_t , SourceInfo);
34007bool emitInitGlobalUint64( uint32_t , SourceInfo);
34008bool emitInitGlobalIntAP( uint32_t , SourceInfo);
34009bool emitInitGlobalIntAPS( uint32_t , SourceInfo);
34010bool emitInitGlobalBool( uint32_t , SourceInfo);
34011bool emitInitGlobalFixedPoint( uint32_t , SourceInfo);
34012bool emitInitGlobalPtr( uint32_t , SourceInfo);
34013bool emitInitGlobalMemberPtr( uint32_t , SourceInfo);
34014bool emitInitGlobalFloat( uint32_t , SourceInfo);
34015#endif
34016#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34017[[nodiscard]] bool emitInitGlobal(PrimType, uint32_t, SourceInfo I);
34018#endif
34019#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
34020bool
34021#if defined(GET_EVAL_IMPL)
34022EvalEmitter
34023#else
34024ByteCodeEmitter
34025#endif
34026::emitInitGlobal(PrimType T0, uint32_t A0, SourceInfo I) {
34027 switch (T0) {
34028 case PT_Sint8:
34029 return emitInitGlobalSint8(A0, I);
34030 case PT_Uint8:
34031 return emitInitGlobalUint8(A0, I);
34032 case PT_Sint16:
34033 return emitInitGlobalSint16(A0, I);
34034 case PT_Uint16:
34035 return emitInitGlobalUint16(A0, I);
34036 case PT_Sint32:
34037 return emitInitGlobalSint32(A0, I);
34038 case PT_Uint32:
34039 return emitInitGlobalUint32(A0, I);
34040 case PT_Sint64:
34041 return emitInitGlobalSint64(A0, I);
34042 case PT_Uint64:
34043 return emitInitGlobalUint64(A0, I);
34044 case PT_IntAP:
34045 return emitInitGlobalIntAP(A0, I);
34046 case PT_IntAPS:
34047 return emitInitGlobalIntAPS(A0, I);
34048 case PT_Bool:
34049 return emitInitGlobalBool(A0, I);
34050 case PT_FixedPoint:
34051 return emitInitGlobalFixedPoint(A0, I);
34052 case PT_Ptr:
34053 return emitInitGlobalPtr(A0, I);
34054 case PT_MemberPtr:
34055 return emitInitGlobalMemberPtr(A0, I);
34056 case PT_Float:
34057 return emitInitGlobalFloat(A0, I);
34058 }
34059 llvm_unreachable("invalid enum value");
34060}
34061#endif
34062#ifdef GET_LINK_IMPL
34063bool ByteCodeEmitter::emitInitGlobalSint8( uint32_t A0, SourceInfo L) {
34064 return emitOp<uint32_t>(OP_InitGlobalSint8, A0, L);
34065}
34066bool ByteCodeEmitter::emitInitGlobalUint8( uint32_t A0, SourceInfo L) {
34067 return emitOp<uint32_t>(OP_InitGlobalUint8, A0, L);
34068}
34069bool ByteCodeEmitter::emitInitGlobalSint16( uint32_t A0, SourceInfo L) {
34070 return emitOp<uint32_t>(OP_InitGlobalSint16, A0, L);
34071}
34072bool ByteCodeEmitter::emitInitGlobalUint16( uint32_t A0, SourceInfo L) {
34073 return emitOp<uint32_t>(OP_InitGlobalUint16, A0, L);
34074}
34075bool ByteCodeEmitter::emitInitGlobalSint32( uint32_t A0, SourceInfo L) {
34076 return emitOp<uint32_t>(OP_InitGlobalSint32, A0, L);
34077}
34078bool ByteCodeEmitter::emitInitGlobalUint32( uint32_t A0, SourceInfo L) {
34079 return emitOp<uint32_t>(OP_InitGlobalUint32, A0, L);
34080}
34081bool ByteCodeEmitter::emitInitGlobalSint64( uint32_t A0, SourceInfo L) {
34082 return emitOp<uint32_t>(OP_InitGlobalSint64, A0, L);
34083}
34084bool ByteCodeEmitter::emitInitGlobalUint64( uint32_t A0, SourceInfo L) {
34085 return emitOp<uint32_t>(OP_InitGlobalUint64, A0, L);
34086}
34087bool ByteCodeEmitter::emitInitGlobalIntAP( uint32_t A0, SourceInfo L) {
34088 return emitOp<uint32_t>(OP_InitGlobalIntAP, A0, L);
34089}
34090bool ByteCodeEmitter::emitInitGlobalIntAPS( uint32_t A0, SourceInfo L) {
34091 return emitOp<uint32_t>(OP_InitGlobalIntAPS, A0, L);
34092}
34093bool ByteCodeEmitter::emitInitGlobalBool( uint32_t A0, SourceInfo L) {
34094 return emitOp<uint32_t>(OP_InitGlobalBool, A0, L);
34095}
34096bool ByteCodeEmitter::emitInitGlobalFixedPoint( uint32_t A0, SourceInfo L) {
34097 return emitOp<uint32_t>(OP_InitGlobalFixedPoint, A0, L);
34098}
34099bool ByteCodeEmitter::emitInitGlobalPtr( uint32_t A0, SourceInfo L) {
34100 return emitOp<uint32_t>(OP_InitGlobalPtr, A0, L);
34101}
34102bool ByteCodeEmitter::emitInitGlobalMemberPtr( uint32_t A0, SourceInfo L) {
34103 return emitOp<uint32_t>(OP_InitGlobalMemberPtr, A0, L);
34104}
34105bool ByteCodeEmitter::emitInitGlobalFloat( uint32_t A0, SourceInfo L) {
34106 return emitOp<uint32_t>(OP_InitGlobalFloat, A0, L);
34107}
34108#endif
34109#ifdef GET_EVAL_IMPL
34110bool EvalEmitter::emitInitGlobalSint8( uint32_t A0, SourceInfo L) {
34111 if (!isActive()) return true;
34112 CurrentSource = L;
34113 return InitGlobal<PT_Sint8>(S, A0);
34114}
34115bool EvalEmitter::emitInitGlobalUint8( uint32_t A0, SourceInfo L) {
34116 if (!isActive()) return true;
34117 CurrentSource = L;
34118 return InitGlobal<PT_Uint8>(S, A0);
34119}
34120bool EvalEmitter::emitInitGlobalSint16( uint32_t A0, SourceInfo L) {
34121 if (!isActive()) return true;
34122 CurrentSource = L;
34123 return InitGlobal<PT_Sint16>(S, A0);
34124}
34125bool EvalEmitter::emitInitGlobalUint16( uint32_t A0, SourceInfo L) {
34126 if (!isActive()) return true;
34127 CurrentSource = L;
34128 return InitGlobal<PT_Uint16>(S, A0);
34129}
34130bool EvalEmitter::emitInitGlobalSint32( uint32_t A0, SourceInfo L) {
34131 if (!isActive()) return true;
34132 CurrentSource = L;
34133 return InitGlobal<PT_Sint32>(S, A0);
34134}
34135bool EvalEmitter::emitInitGlobalUint32( uint32_t A0, SourceInfo L) {
34136 if (!isActive()) return true;
34137 CurrentSource = L;
34138 return InitGlobal<PT_Uint32>(S, A0);
34139}
34140bool EvalEmitter::emitInitGlobalSint64( uint32_t A0, SourceInfo L) {
34141 if (!isActive()) return true;
34142 CurrentSource = L;
34143 return InitGlobal<PT_Sint64>(S, A0);
34144}
34145bool EvalEmitter::emitInitGlobalUint64( uint32_t A0, SourceInfo L) {
34146 if (!isActive()) return true;
34147 CurrentSource = L;
34148 return InitGlobal<PT_Uint64>(S, A0);
34149}
34150bool EvalEmitter::emitInitGlobalIntAP( uint32_t A0, SourceInfo L) {
34151 if (!isActive()) return true;
34152 CurrentSource = L;
34153 return InitGlobal<PT_IntAP>(S, A0);
34154}
34155bool EvalEmitter::emitInitGlobalIntAPS( uint32_t A0, SourceInfo L) {
34156 if (!isActive()) return true;
34157 CurrentSource = L;
34158 return InitGlobal<PT_IntAPS>(S, A0);
34159}
34160bool EvalEmitter::emitInitGlobalBool( uint32_t A0, SourceInfo L) {
34161 if (!isActive()) return true;
34162 CurrentSource = L;
34163 return InitGlobal<PT_Bool>(S, A0);
34164}
34165bool EvalEmitter::emitInitGlobalFixedPoint( uint32_t A0, SourceInfo L) {
34166 if (!isActive()) return true;
34167 CurrentSource = L;
34168 return InitGlobal<PT_FixedPoint>(S, A0);
34169}
34170bool EvalEmitter::emitInitGlobalPtr( uint32_t A0, SourceInfo L) {
34171 if (!isActive()) return true;
34172 CurrentSource = L;
34173 return InitGlobal<PT_Ptr>(S, A0);
34174}
34175bool EvalEmitter::emitInitGlobalMemberPtr( uint32_t A0, SourceInfo L) {
34176 if (!isActive()) return true;
34177 CurrentSource = L;
34178 return InitGlobal<PT_MemberPtr>(S, A0);
34179}
34180bool EvalEmitter::emitInitGlobalFloat( uint32_t A0, SourceInfo L) {
34181 if (!isActive()) return true;
34182 CurrentSource = L;
34183 return InitGlobal<PT_Float>(S, A0);
34184}
34185#endif
34186#ifdef GET_OPCODE_NAMES
34187OP_InitGlobalTempSint8,
34188OP_InitGlobalTempUint8,
34189OP_InitGlobalTempSint16,
34190OP_InitGlobalTempUint16,
34191OP_InitGlobalTempSint32,
34192OP_InitGlobalTempUint32,
34193OP_InitGlobalTempSint64,
34194OP_InitGlobalTempUint64,
34195OP_InitGlobalTempIntAP,
34196OP_InitGlobalTempIntAPS,
34197OP_InitGlobalTempBool,
34198OP_InitGlobalTempFixedPoint,
34199OP_InitGlobalTempPtr,
34200OP_InitGlobalTempMemberPtr,
34201OP_InitGlobalTempFloat,
34202#endif
34203#ifdef GET_INTERPFN_LIST
34204&Interp_InitGlobalTempSint8,
34205&Interp_InitGlobalTempUint8,
34206&Interp_InitGlobalTempSint16,
34207&Interp_InitGlobalTempUint16,
34208&Interp_InitGlobalTempSint32,
34209&Interp_InitGlobalTempUint32,
34210&Interp_InitGlobalTempSint64,
34211&Interp_InitGlobalTempUint64,
34212&Interp_InitGlobalTempIntAP,
34213&Interp_InitGlobalTempIntAPS,
34214&Interp_InitGlobalTempBool,
34215&Interp_InitGlobalTempFixedPoint,
34216&Interp_InitGlobalTempPtr,
34217&Interp_InitGlobalTempMemberPtr,
34218&Interp_InitGlobalTempFloat,
34219#endif
34220#ifdef GET_INTERPFN_DISPATCHERS
34221PRESERVE_NONE
34222static bool Interp_InitGlobalTempSint8(InterpState &S) {
34223 {
34224 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34225 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34226 if (!InitGlobalTemp<PT_Sint8>(S, V0, V1)) return false;
34227 }
34228#if USE_TAILCALLS
34229 MUSTTAIL return InterpNext(S);
34230#else
34231 return true;
34232#endif
34233}
34234PRESERVE_NONE
34235static bool Interp_InitGlobalTempUint8(InterpState &S) {
34236 {
34237 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34238 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34239 if (!InitGlobalTemp<PT_Uint8>(S, V0, V1)) return false;
34240 }
34241#if USE_TAILCALLS
34242 MUSTTAIL return InterpNext(S);
34243#else
34244 return true;
34245#endif
34246}
34247PRESERVE_NONE
34248static bool Interp_InitGlobalTempSint16(InterpState &S) {
34249 {
34250 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34251 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34252 if (!InitGlobalTemp<PT_Sint16>(S, V0, V1)) return false;
34253 }
34254#if USE_TAILCALLS
34255 MUSTTAIL return InterpNext(S);
34256#else
34257 return true;
34258#endif
34259}
34260PRESERVE_NONE
34261static bool Interp_InitGlobalTempUint16(InterpState &S) {
34262 {
34263 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34264 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34265 if (!InitGlobalTemp<PT_Uint16>(S, V0, V1)) return false;
34266 }
34267#if USE_TAILCALLS
34268 MUSTTAIL return InterpNext(S);
34269#else
34270 return true;
34271#endif
34272}
34273PRESERVE_NONE
34274static bool Interp_InitGlobalTempSint32(InterpState &S) {
34275 {
34276 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34277 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34278 if (!InitGlobalTemp<PT_Sint32>(S, V0, V1)) return false;
34279 }
34280#if USE_TAILCALLS
34281 MUSTTAIL return InterpNext(S);
34282#else
34283 return true;
34284#endif
34285}
34286PRESERVE_NONE
34287static bool Interp_InitGlobalTempUint32(InterpState &S) {
34288 {
34289 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34290 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34291 if (!InitGlobalTemp<PT_Uint32>(S, V0, V1)) return false;
34292 }
34293#if USE_TAILCALLS
34294 MUSTTAIL return InterpNext(S);
34295#else
34296 return true;
34297#endif
34298}
34299PRESERVE_NONE
34300static bool Interp_InitGlobalTempSint64(InterpState &S) {
34301 {
34302 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34303 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34304 if (!InitGlobalTemp<PT_Sint64>(S, V0, V1)) return false;
34305 }
34306#if USE_TAILCALLS
34307 MUSTTAIL return InterpNext(S);
34308#else
34309 return true;
34310#endif
34311}
34312PRESERVE_NONE
34313static bool Interp_InitGlobalTempUint64(InterpState &S) {
34314 {
34315 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34316 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34317 if (!InitGlobalTemp<PT_Uint64>(S, V0, V1)) return false;
34318 }
34319#if USE_TAILCALLS
34320 MUSTTAIL return InterpNext(S);
34321#else
34322 return true;
34323#endif
34324}
34325PRESERVE_NONE
34326static bool Interp_InitGlobalTempIntAP(InterpState &S) {
34327 {
34328 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34329 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34330 if (!InitGlobalTemp<PT_IntAP>(S, V0, V1)) return false;
34331 }
34332#if USE_TAILCALLS
34333 MUSTTAIL return InterpNext(S);
34334#else
34335 return true;
34336#endif
34337}
34338PRESERVE_NONE
34339static bool Interp_InitGlobalTempIntAPS(InterpState &S) {
34340 {
34341 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34342 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34343 if (!InitGlobalTemp<PT_IntAPS>(S, V0, V1)) return false;
34344 }
34345#if USE_TAILCALLS
34346 MUSTTAIL return InterpNext(S);
34347#else
34348 return true;
34349#endif
34350}
34351PRESERVE_NONE
34352static bool Interp_InitGlobalTempBool(InterpState &S) {
34353 {
34354 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34355 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34356 if (!InitGlobalTemp<PT_Bool>(S, V0, V1)) return false;
34357 }
34358#if USE_TAILCALLS
34359 MUSTTAIL return InterpNext(S);
34360#else
34361 return true;
34362#endif
34363}
34364PRESERVE_NONE
34365static bool Interp_InitGlobalTempFixedPoint(InterpState &S) {
34366 {
34367 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34368 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34369 if (!InitGlobalTemp<PT_FixedPoint>(S, V0, V1)) return false;
34370 }
34371#if USE_TAILCALLS
34372 MUSTTAIL return InterpNext(S);
34373#else
34374 return true;
34375#endif
34376}
34377PRESERVE_NONE
34378static bool Interp_InitGlobalTempPtr(InterpState &S) {
34379 {
34380 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34381 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34382 if (!InitGlobalTemp<PT_Ptr>(S, V0, V1)) return false;
34383 }
34384#if USE_TAILCALLS
34385 MUSTTAIL return InterpNext(S);
34386#else
34387 return true;
34388#endif
34389}
34390PRESERVE_NONE
34391static bool Interp_InitGlobalTempMemberPtr(InterpState &S) {
34392 {
34393 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34394 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34395 if (!InitGlobalTemp<PT_MemberPtr>(S, V0, V1)) return false;
34396 }
34397#if USE_TAILCALLS
34398 MUSTTAIL return InterpNext(S);
34399#else
34400 return true;
34401#endif
34402}
34403PRESERVE_NONE
34404static bool Interp_InitGlobalTempFloat(InterpState &S) {
34405 {
34406 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34407 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34408 if (!InitGlobalTemp<PT_Float>(S, V0, V1)) return false;
34409 }
34410#if USE_TAILCALLS
34411 MUSTTAIL return InterpNext(S);
34412#else
34413 return true;
34414#endif
34415}
34416#endif
34417#ifdef GET_DISASM
34418case OP_InitGlobalTempSint8:
34419 Text.Op = PrintName("InitGlobalTempSint8");
34420 Text.Args.push_back(printArg<uint32_t>(PC));
34421 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34422 break;
34423case OP_InitGlobalTempUint8:
34424 Text.Op = PrintName("InitGlobalTempUint8");
34425 Text.Args.push_back(printArg<uint32_t>(PC));
34426 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34427 break;
34428case OP_InitGlobalTempSint16:
34429 Text.Op = PrintName("InitGlobalTempSint16");
34430 Text.Args.push_back(printArg<uint32_t>(PC));
34431 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34432 break;
34433case OP_InitGlobalTempUint16:
34434 Text.Op = PrintName("InitGlobalTempUint16");
34435 Text.Args.push_back(printArg<uint32_t>(PC));
34436 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34437 break;
34438case OP_InitGlobalTempSint32:
34439 Text.Op = PrintName("InitGlobalTempSint32");
34440 Text.Args.push_back(printArg<uint32_t>(PC));
34441 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34442 break;
34443case OP_InitGlobalTempUint32:
34444 Text.Op = PrintName("InitGlobalTempUint32");
34445 Text.Args.push_back(printArg<uint32_t>(PC));
34446 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34447 break;
34448case OP_InitGlobalTempSint64:
34449 Text.Op = PrintName("InitGlobalTempSint64");
34450 Text.Args.push_back(printArg<uint32_t>(PC));
34451 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34452 break;
34453case OP_InitGlobalTempUint64:
34454 Text.Op = PrintName("InitGlobalTempUint64");
34455 Text.Args.push_back(printArg<uint32_t>(PC));
34456 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34457 break;
34458case OP_InitGlobalTempIntAP:
34459 Text.Op = PrintName("InitGlobalTempIntAP");
34460 Text.Args.push_back(printArg<uint32_t>(PC));
34461 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34462 break;
34463case OP_InitGlobalTempIntAPS:
34464 Text.Op = PrintName("InitGlobalTempIntAPS");
34465 Text.Args.push_back(printArg<uint32_t>(PC));
34466 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34467 break;
34468case OP_InitGlobalTempBool:
34469 Text.Op = PrintName("InitGlobalTempBool");
34470 Text.Args.push_back(printArg<uint32_t>(PC));
34471 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34472 break;
34473case OP_InitGlobalTempFixedPoint:
34474 Text.Op = PrintName("InitGlobalTempFixedPoint");
34475 Text.Args.push_back(printArg<uint32_t>(PC));
34476 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34477 break;
34478case OP_InitGlobalTempPtr:
34479 Text.Op = PrintName("InitGlobalTempPtr");
34480 Text.Args.push_back(printArg<uint32_t>(PC));
34481 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34482 break;
34483case OP_InitGlobalTempMemberPtr:
34484 Text.Op = PrintName("InitGlobalTempMemberPtr");
34485 Text.Args.push_back(printArg<uint32_t>(PC));
34486 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34487 break;
34488case OP_InitGlobalTempFloat:
34489 Text.Op = PrintName("InitGlobalTempFloat");
34490 Text.Args.push_back(printArg<uint32_t>(PC));
34491 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34492 break;
34493#endif
34494#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34495bool emitInitGlobalTempSint8( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34496bool emitInitGlobalTempUint8( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34497bool emitInitGlobalTempSint16( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34498bool emitInitGlobalTempUint16( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34499bool emitInitGlobalTempSint32( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34500bool emitInitGlobalTempUint32( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34501bool emitInitGlobalTempSint64( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34502bool emitInitGlobalTempUint64( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34503bool emitInitGlobalTempIntAP( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34504bool emitInitGlobalTempIntAPS( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34505bool emitInitGlobalTempBool( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34506bool emitInitGlobalTempFixedPoint( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34507bool emitInitGlobalTempPtr( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34508bool emitInitGlobalTempMemberPtr( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34509bool emitInitGlobalTempFloat( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34510#endif
34511#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34512[[nodiscard]] bool emitInitGlobalTemp(PrimType, uint32_t, const LifetimeExtendedTemporaryDecl *, SourceInfo I);
34513#endif
34514#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
34515bool
34516#if defined(GET_EVAL_IMPL)
34517EvalEmitter
34518#else
34519ByteCodeEmitter
34520#endif
34521::emitInitGlobalTemp(PrimType T0, uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo I) {
34522 switch (T0) {
34523 case PT_Sint8:
34524 return emitInitGlobalTempSint8(A0, A1, I);
34525 case PT_Uint8:
34526 return emitInitGlobalTempUint8(A0, A1, I);
34527 case PT_Sint16:
34528 return emitInitGlobalTempSint16(A0, A1, I);
34529 case PT_Uint16:
34530 return emitInitGlobalTempUint16(A0, A1, I);
34531 case PT_Sint32:
34532 return emitInitGlobalTempSint32(A0, A1, I);
34533 case PT_Uint32:
34534 return emitInitGlobalTempUint32(A0, A1, I);
34535 case PT_Sint64:
34536 return emitInitGlobalTempSint64(A0, A1, I);
34537 case PT_Uint64:
34538 return emitInitGlobalTempUint64(A0, A1, I);
34539 case PT_IntAP:
34540 return emitInitGlobalTempIntAP(A0, A1, I);
34541 case PT_IntAPS:
34542 return emitInitGlobalTempIntAPS(A0, A1, I);
34543 case PT_Bool:
34544 return emitInitGlobalTempBool(A0, A1, I);
34545 case PT_FixedPoint:
34546 return emitInitGlobalTempFixedPoint(A0, A1, I);
34547 case PT_Ptr:
34548 return emitInitGlobalTempPtr(A0, A1, I);
34549 case PT_MemberPtr:
34550 return emitInitGlobalTempMemberPtr(A0, A1, I);
34551 case PT_Float:
34552 return emitInitGlobalTempFloat(A0, A1, I);
34553 }
34554 llvm_unreachable("invalid enum value");
34555}
34556#endif
34557#ifdef GET_LINK_IMPL
34558bool ByteCodeEmitter::emitInitGlobalTempSint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34559 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint8, A0, A1, L);
34560}
34561bool ByteCodeEmitter::emitInitGlobalTempUint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34562 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint8, A0, A1, L);
34563}
34564bool ByteCodeEmitter::emitInitGlobalTempSint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34565 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint16, A0, A1, L);
34566}
34567bool ByteCodeEmitter::emitInitGlobalTempUint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34568 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint16, A0, A1, L);
34569}
34570bool ByteCodeEmitter::emitInitGlobalTempSint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34571 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint32, A0, A1, L);
34572}
34573bool ByteCodeEmitter::emitInitGlobalTempUint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34574 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint32, A0, A1, L);
34575}
34576bool ByteCodeEmitter::emitInitGlobalTempSint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34577 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint64, A0, A1, L);
34578}
34579bool ByteCodeEmitter::emitInitGlobalTempUint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34580 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint64, A0, A1, L);
34581}
34582bool ByteCodeEmitter::emitInitGlobalTempIntAP( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34583 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempIntAP, A0, A1, L);
34584}
34585bool ByteCodeEmitter::emitInitGlobalTempIntAPS( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34586 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempIntAPS, A0, A1, L);
34587}
34588bool ByteCodeEmitter::emitInitGlobalTempBool( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34589 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempBool, A0, A1, L);
34590}
34591bool ByteCodeEmitter::emitInitGlobalTempFixedPoint( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34592 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempFixedPoint, A0, A1, L);
34593}
34594bool ByteCodeEmitter::emitInitGlobalTempPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34595 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempPtr, A0, A1, L);
34596}
34597bool ByteCodeEmitter::emitInitGlobalTempMemberPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34598 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempMemberPtr, A0, A1, L);
34599}
34600bool ByteCodeEmitter::emitInitGlobalTempFloat( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34601 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempFloat, A0, A1, L);
34602}
34603#endif
34604#ifdef GET_EVAL_IMPL
34605bool EvalEmitter::emitInitGlobalTempSint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34606 if (!isActive()) return true;
34607 CurrentSource = L;
34608 return InitGlobalTemp<PT_Sint8>(S, A0, A1);
34609}
34610bool EvalEmitter::emitInitGlobalTempUint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34611 if (!isActive()) return true;
34612 CurrentSource = L;
34613 return InitGlobalTemp<PT_Uint8>(S, A0, A1);
34614}
34615bool EvalEmitter::emitInitGlobalTempSint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34616 if (!isActive()) return true;
34617 CurrentSource = L;
34618 return InitGlobalTemp<PT_Sint16>(S, A0, A1);
34619}
34620bool EvalEmitter::emitInitGlobalTempUint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34621 if (!isActive()) return true;
34622 CurrentSource = L;
34623 return InitGlobalTemp<PT_Uint16>(S, A0, A1);
34624}
34625bool EvalEmitter::emitInitGlobalTempSint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34626 if (!isActive()) return true;
34627 CurrentSource = L;
34628 return InitGlobalTemp<PT_Sint32>(S, A0, A1);
34629}
34630bool EvalEmitter::emitInitGlobalTempUint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34631 if (!isActive()) return true;
34632 CurrentSource = L;
34633 return InitGlobalTemp<PT_Uint32>(S, A0, A1);
34634}
34635bool EvalEmitter::emitInitGlobalTempSint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34636 if (!isActive()) return true;
34637 CurrentSource = L;
34638 return InitGlobalTemp<PT_Sint64>(S, A0, A1);
34639}
34640bool EvalEmitter::emitInitGlobalTempUint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34641 if (!isActive()) return true;
34642 CurrentSource = L;
34643 return InitGlobalTemp<PT_Uint64>(S, A0, A1);
34644}
34645bool EvalEmitter::emitInitGlobalTempIntAP( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34646 if (!isActive()) return true;
34647 CurrentSource = L;
34648 return InitGlobalTemp<PT_IntAP>(S, A0, A1);
34649}
34650bool EvalEmitter::emitInitGlobalTempIntAPS( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34651 if (!isActive()) return true;
34652 CurrentSource = L;
34653 return InitGlobalTemp<PT_IntAPS>(S, A0, A1);
34654}
34655bool EvalEmitter::emitInitGlobalTempBool( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34656 if (!isActive()) return true;
34657 CurrentSource = L;
34658 return InitGlobalTemp<PT_Bool>(S, A0, A1);
34659}
34660bool EvalEmitter::emitInitGlobalTempFixedPoint( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34661 if (!isActive()) return true;
34662 CurrentSource = L;
34663 return InitGlobalTemp<PT_FixedPoint>(S, A0, A1);
34664}
34665bool EvalEmitter::emitInitGlobalTempPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34666 if (!isActive()) return true;
34667 CurrentSource = L;
34668 return InitGlobalTemp<PT_Ptr>(S, A0, A1);
34669}
34670bool EvalEmitter::emitInitGlobalTempMemberPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34671 if (!isActive()) return true;
34672 CurrentSource = L;
34673 return InitGlobalTemp<PT_MemberPtr>(S, A0, A1);
34674}
34675bool EvalEmitter::emitInitGlobalTempFloat( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34676 if (!isActive()) return true;
34677 CurrentSource = L;
34678 return InitGlobalTemp<PT_Float>(S, A0, A1);
34679}
34680#endif
34681#ifdef GET_OPCODE_NAMES
34682OP_InitGlobalTempComp,
34683#endif
34684#ifdef GET_INTERPFN_LIST
34685&Interp_InitGlobalTempComp,
34686#endif
34687#ifdef GET_INTERPFN_DISPATCHERS
34688PRESERVE_NONE
34689static bool Interp_InitGlobalTempComp(InterpState &S) {
34690 {
34691 const auto V0 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34692 if (!InitGlobalTempComp(S, V0)) return false;
34693 }
34694#if USE_TAILCALLS
34695 MUSTTAIL return InterpNext(S);
34696#else
34697 return true;
34698#endif
34699}
34700#endif
34701#ifdef GET_DISASM
34702case OP_InitGlobalTempComp:
34703 Text.Op = PrintName("InitGlobalTempComp");
34704 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34705 break;
34706#endif
34707#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34708bool emitInitGlobalTempComp( const LifetimeExtendedTemporaryDecl * , SourceInfo);
34709#endif
34710#ifdef GET_LINK_IMPL
34711bool ByteCodeEmitter::emitInitGlobalTempComp( const LifetimeExtendedTemporaryDecl * A0, SourceInfo L) {
34712 return emitOp<const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempComp, A0, L);
34713}
34714#endif
34715#ifdef GET_EVAL_IMPL
34716bool EvalEmitter::emitInitGlobalTempComp( const LifetimeExtendedTemporaryDecl * A0, SourceInfo L) {
34717 if (!isActive()) return true;
34718 CurrentSource = L;
34719 return InitGlobalTempComp(S, A0);
34720}
34721#endif
34722#ifdef GET_OPCODE_NAMES
34723OP_InitPopSint8,
34724OP_InitPopUint8,
34725OP_InitPopSint16,
34726OP_InitPopUint16,
34727OP_InitPopSint32,
34728OP_InitPopUint32,
34729OP_InitPopSint64,
34730OP_InitPopUint64,
34731OP_InitPopIntAP,
34732OP_InitPopIntAPS,
34733OP_InitPopBool,
34734OP_InitPopFixedPoint,
34735OP_InitPopPtr,
34736OP_InitPopMemberPtr,
34737OP_InitPopFloat,
34738#endif
34739#ifdef GET_INTERPFN_LIST
34740&Interp_InitPopSint8,
34741&Interp_InitPopUint8,
34742&Interp_InitPopSint16,
34743&Interp_InitPopUint16,
34744&Interp_InitPopSint32,
34745&Interp_InitPopUint32,
34746&Interp_InitPopSint64,
34747&Interp_InitPopUint64,
34748&Interp_InitPopIntAP,
34749&Interp_InitPopIntAPS,
34750&Interp_InitPopBool,
34751&Interp_InitPopFixedPoint,
34752&Interp_InitPopPtr,
34753&Interp_InitPopMemberPtr,
34754&Interp_InitPopFloat,
34755#endif
34756#ifdef GET_INTERPFN_DISPATCHERS
34757PRESERVE_NONE
34758static bool Interp_InitPopSint8(InterpState &S) {
34759 if (!InitPop<PT_Sint8>(S, S.PC)) return false;
34760#if USE_TAILCALLS
34761 MUSTTAIL return InterpNext(S);
34762#else
34763 return true;
34764#endif
34765}
34766PRESERVE_NONE
34767static bool Interp_InitPopUint8(InterpState &S) {
34768 if (!InitPop<PT_Uint8>(S, S.PC)) return false;
34769#if USE_TAILCALLS
34770 MUSTTAIL return InterpNext(S);
34771#else
34772 return true;
34773#endif
34774}
34775PRESERVE_NONE
34776static bool Interp_InitPopSint16(InterpState &S) {
34777 if (!InitPop<PT_Sint16>(S, S.PC)) return false;
34778#if USE_TAILCALLS
34779 MUSTTAIL return InterpNext(S);
34780#else
34781 return true;
34782#endif
34783}
34784PRESERVE_NONE
34785static bool Interp_InitPopUint16(InterpState &S) {
34786 if (!InitPop<PT_Uint16>(S, S.PC)) return false;
34787#if USE_TAILCALLS
34788 MUSTTAIL return InterpNext(S);
34789#else
34790 return true;
34791#endif
34792}
34793PRESERVE_NONE
34794static bool Interp_InitPopSint32(InterpState &S) {
34795 if (!InitPop<PT_Sint32>(S, S.PC)) return false;
34796#if USE_TAILCALLS
34797 MUSTTAIL return InterpNext(S);
34798#else
34799 return true;
34800#endif
34801}
34802PRESERVE_NONE
34803static bool Interp_InitPopUint32(InterpState &S) {
34804 if (!InitPop<PT_Uint32>(S, S.PC)) return false;
34805#if USE_TAILCALLS
34806 MUSTTAIL return InterpNext(S);
34807#else
34808 return true;
34809#endif
34810}
34811PRESERVE_NONE
34812static bool Interp_InitPopSint64(InterpState &S) {
34813 if (!InitPop<PT_Sint64>(S, S.PC)) return false;
34814#if USE_TAILCALLS
34815 MUSTTAIL return InterpNext(S);
34816#else
34817 return true;
34818#endif
34819}
34820PRESERVE_NONE
34821static bool Interp_InitPopUint64(InterpState &S) {
34822 if (!InitPop<PT_Uint64>(S, S.PC)) return false;
34823#if USE_TAILCALLS
34824 MUSTTAIL return InterpNext(S);
34825#else
34826 return true;
34827#endif
34828}
34829PRESERVE_NONE
34830static bool Interp_InitPopIntAP(InterpState &S) {
34831 if (!InitPop<PT_IntAP>(S, S.PC)) return false;
34832#if USE_TAILCALLS
34833 MUSTTAIL return InterpNext(S);
34834#else
34835 return true;
34836#endif
34837}
34838PRESERVE_NONE
34839static bool Interp_InitPopIntAPS(InterpState &S) {
34840 if (!InitPop<PT_IntAPS>(S, S.PC)) return false;
34841#if USE_TAILCALLS
34842 MUSTTAIL return InterpNext(S);
34843#else
34844 return true;
34845#endif
34846}
34847PRESERVE_NONE
34848static bool Interp_InitPopBool(InterpState &S) {
34849 if (!InitPop<PT_Bool>(S, S.PC)) return false;
34850#if USE_TAILCALLS
34851 MUSTTAIL return InterpNext(S);
34852#else
34853 return true;
34854#endif
34855}
34856PRESERVE_NONE
34857static bool Interp_InitPopFixedPoint(InterpState &S) {
34858 if (!InitPop<PT_FixedPoint>(S, S.PC)) return false;
34859#if USE_TAILCALLS
34860 MUSTTAIL return InterpNext(S);
34861#else
34862 return true;
34863#endif
34864}
34865PRESERVE_NONE
34866static bool Interp_InitPopPtr(InterpState &S) {
34867 if (!InitPop<PT_Ptr>(S, S.PC)) return false;
34868#if USE_TAILCALLS
34869 MUSTTAIL return InterpNext(S);
34870#else
34871 return true;
34872#endif
34873}
34874PRESERVE_NONE
34875static bool Interp_InitPopMemberPtr(InterpState &S) {
34876 if (!InitPop<PT_MemberPtr>(S, S.PC)) return false;
34877#if USE_TAILCALLS
34878 MUSTTAIL return InterpNext(S);
34879#else
34880 return true;
34881#endif
34882}
34883PRESERVE_NONE
34884static bool Interp_InitPopFloat(InterpState &S) {
34885 if (!InitPop<PT_Float>(S, S.PC)) return false;
34886#if USE_TAILCALLS
34887 MUSTTAIL return InterpNext(S);
34888#else
34889 return true;
34890#endif
34891}
34892#endif
34893#ifdef GET_DISASM
34894case OP_InitPopSint8:
34895 Text.Op = PrintName("InitPopSint8");
34896 break;
34897case OP_InitPopUint8:
34898 Text.Op = PrintName("InitPopUint8");
34899 break;
34900case OP_InitPopSint16:
34901 Text.Op = PrintName("InitPopSint16");
34902 break;
34903case OP_InitPopUint16:
34904 Text.Op = PrintName("InitPopUint16");
34905 break;
34906case OP_InitPopSint32:
34907 Text.Op = PrintName("InitPopSint32");
34908 break;
34909case OP_InitPopUint32:
34910 Text.Op = PrintName("InitPopUint32");
34911 break;
34912case OP_InitPopSint64:
34913 Text.Op = PrintName("InitPopSint64");
34914 break;
34915case OP_InitPopUint64:
34916 Text.Op = PrintName("InitPopUint64");
34917 break;
34918case OP_InitPopIntAP:
34919 Text.Op = PrintName("InitPopIntAP");
34920 break;
34921case OP_InitPopIntAPS:
34922 Text.Op = PrintName("InitPopIntAPS");
34923 break;
34924case OP_InitPopBool:
34925 Text.Op = PrintName("InitPopBool");
34926 break;
34927case OP_InitPopFixedPoint:
34928 Text.Op = PrintName("InitPopFixedPoint");
34929 break;
34930case OP_InitPopPtr:
34931 Text.Op = PrintName("InitPopPtr");
34932 break;
34933case OP_InitPopMemberPtr:
34934 Text.Op = PrintName("InitPopMemberPtr");
34935 break;
34936case OP_InitPopFloat:
34937 Text.Op = PrintName("InitPopFloat");
34938 break;
34939#endif
34940#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34941bool emitInitPopSint8(SourceInfo);
34942bool emitInitPopUint8(SourceInfo);
34943bool emitInitPopSint16(SourceInfo);
34944bool emitInitPopUint16(SourceInfo);
34945bool emitInitPopSint32(SourceInfo);
34946bool emitInitPopUint32(SourceInfo);
34947bool emitInitPopSint64(SourceInfo);
34948bool emitInitPopUint64(SourceInfo);
34949bool emitInitPopIntAP(SourceInfo);
34950bool emitInitPopIntAPS(SourceInfo);
34951bool emitInitPopBool(SourceInfo);
34952bool emitInitPopFixedPoint(SourceInfo);
34953bool emitInitPopPtr(SourceInfo);
34954bool emitInitPopMemberPtr(SourceInfo);
34955bool emitInitPopFloat(SourceInfo);
34956#endif
34957#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34958[[nodiscard]] bool emitInitPop(PrimType, SourceInfo I);
34959#endif
34960#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
34961bool
34962#if defined(GET_EVAL_IMPL)
34963EvalEmitter
34964#else
34965ByteCodeEmitter
34966#endif
34967::emitInitPop(PrimType T0, SourceInfo I) {
34968 switch (T0) {
34969 case PT_Sint8:
34970 return emitInitPopSint8(I);
34971 case PT_Uint8:
34972 return emitInitPopUint8(I);
34973 case PT_Sint16:
34974 return emitInitPopSint16(I);
34975 case PT_Uint16:
34976 return emitInitPopUint16(I);
34977 case PT_Sint32:
34978 return emitInitPopSint32(I);
34979 case PT_Uint32:
34980 return emitInitPopUint32(I);
34981 case PT_Sint64:
34982 return emitInitPopSint64(I);
34983 case PT_Uint64:
34984 return emitInitPopUint64(I);
34985 case PT_IntAP:
34986 return emitInitPopIntAP(I);
34987 case PT_IntAPS:
34988 return emitInitPopIntAPS(I);
34989 case PT_Bool:
34990 return emitInitPopBool(I);
34991 case PT_FixedPoint:
34992 return emitInitPopFixedPoint(I);
34993 case PT_Ptr:
34994 return emitInitPopPtr(I);
34995 case PT_MemberPtr:
34996 return emitInitPopMemberPtr(I);
34997 case PT_Float:
34998 return emitInitPopFloat(I);
34999 }
35000 llvm_unreachable("invalid enum value");
35001}
35002#endif
35003#ifdef GET_LINK_IMPL
35004bool ByteCodeEmitter::emitInitPopSint8(SourceInfo L) {
35005 return emitOp<>(OP_InitPopSint8, L);
35006}
35007bool ByteCodeEmitter::emitInitPopUint8(SourceInfo L) {
35008 return emitOp<>(OP_InitPopUint8, L);
35009}
35010bool ByteCodeEmitter::emitInitPopSint16(SourceInfo L) {
35011 return emitOp<>(OP_InitPopSint16, L);
35012}
35013bool ByteCodeEmitter::emitInitPopUint16(SourceInfo L) {
35014 return emitOp<>(OP_InitPopUint16, L);
35015}
35016bool ByteCodeEmitter::emitInitPopSint32(SourceInfo L) {
35017 return emitOp<>(OP_InitPopSint32, L);
35018}
35019bool ByteCodeEmitter::emitInitPopUint32(SourceInfo L) {
35020 return emitOp<>(OP_InitPopUint32, L);
35021}
35022bool ByteCodeEmitter::emitInitPopSint64(SourceInfo L) {
35023 return emitOp<>(OP_InitPopSint64, L);
35024}
35025bool ByteCodeEmitter::emitInitPopUint64(SourceInfo L) {
35026 return emitOp<>(OP_InitPopUint64, L);
35027}
35028bool ByteCodeEmitter::emitInitPopIntAP(SourceInfo L) {
35029 return emitOp<>(OP_InitPopIntAP, L);
35030}
35031bool ByteCodeEmitter::emitInitPopIntAPS(SourceInfo L) {
35032 return emitOp<>(OP_InitPopIntAPS, L);
35033}
35034bool ByteCodeEmitter::emitInitPopBool(SourceInfo L) {
35035 return emitOp<>(OP_InitPopBool, L);
35036}
35037bool ByteCodeEmitter::emitInitPopFixedPoint(SourceInfo L) {
35038 return emitOp<>(OP_InitPopFixedPoint, L);
35039}
35040bool ByteCodeEmitter::emitInitPopPtr(SourceInfo L) {
35041 return emitOp<>(OP_InitPopPtr, L);
35042}
35043bool ByteCodeEmitter::emitInitPopMemberPtr(SourceInfo L) {
35044 return emitOp<>(OP_InitPopMemberPtr, L);
35045}
35046bool ByteCodeEmitter::emitInitPopFloat(SourceInfo L) {
35047 return emitOp<>(OP_InitPopFloat, L);
35048}
35049#endif
35050#ifdef GET_EVAL_IMPL
35051bool EvalEmitter::emitInitPopSint8(SourceInfo L) {
35052 if (!isActive()) return true;
35053 CurrentSource = L;
35054 return InitPop<PT_Sint8>(S, CodePtr());
35055}
35056bool EvalEmitter::emitInitPopUint8(SourceInfo L) {
35057 if (!isActive()) return true;
35058 CurrentSource = L;
35059 return InitPop<PT_Uint8>(S, CodePtr());
35060}
35061bool EvalEmitter::emitInitPopSint16(SourceInfo L) {
35062 if (!isActive()) return true;
35063 CurrentSource = L;
35064 return InitPop<PT_Sint16>(S, CodePtr());
35065}
35066bool EvalEmitter::emitInitPopUint16(SourceInfo L) {
35067 if (!isActive()) return true;
35068 CurrentSource = L;
35069 return InitPop<PT_Uint16>(S, CodePtr());
35070}
35071bool EvalEmitter::emitInitPopSint32(SourceInfo L) {
35072 if (!isActive()) return true;
35073 CurrentSource = L;
35074 return InitPop<PT_Sint32>(S, CodePtr());
35075}
35076bool EvalEmitter::emitInitPopUint32(SourceInfo L) {
35077 if (!isActive()) return true;
35078 CurrentSource = L;
35079 return InitPop<PT_Uint32>(S, CodePtr());
35080}
35081bool EvalEmitter::emitInitPopSint64(SourceInfo L) {
35082 if (!isActive()) return true;
35083 CurrentSource = L;
35084 return InitPop<PT_Sint64>(S, CodePtr());
35085}
35086bool EvalEmitter::emitInitPopUint64(SourceInfo L) {
35087 if (!isActive()) return true;
35088 CurrentSource = L;
35089 return InitPop<PT_Uint64>(S, CodePtr());
35090}
35091bool EvalEmitter::emitInitPopIntAP(SourceInfo L) {
35092 if (!isActive()) return true;
35093 CurrentSource = L;
35094 return InitPop<PT_IntAP>(S, CodePtr());
35095}
35096bool EvalEmitter::emitInitPopIntAPS(SourceInfo L) {
35097 if (!isActive()) return true;
35098 CurrentSource = L;
35099 return InitPop<PT_IntAPS>(S, CodePtr());
35100}
35101bool EvalEmitter::emitInitPopBool(SourceInfo L) {
35102 if (!isActive()) return true;
35103 CurrentSource = L;
35104 return InitPop<PT_Bool>(S, CodePtr());
35105}
35106bool EvalEmitter::emitInitPopFixedPoint(SourceInfo L) {
35107 if (!isActive()) return true;
35108 CurrentSource = L;
35109 return InitPop<PT_FixedPoint>(S, CodePtr());
35110}
35111bool EvalEmitter::emitInitPopPtr(SourceInfo L) {
35112 if (!isActive()) return true;
35113 CurrentSource = L;
35114 return InitPop<PT_Ptr>(S, CodePtr());
35115}
35116bool EvalEmitter::emitInitPopMemberPtr(SourceInfo L) {
35117 if (!isActive()) return true;
35118 CurrentSource = L;
35119 return InitPop<PT_MemberPtr>(S, CodePtr());
35120}
35121bool EvalEmitter::emitInitPopFloat(SourceInfo L) {
35122 if (!isActive()) return true;
35123 CurrentSource = L;
35124 return InitPop<PT_Float>(S, CodePtr());
35125}
35126#endif
35127#ifdef GET_OPCODE_NAMES
35128OP_InitScope,
35129#endif
35130#ifdef GET_INTERPFN_LIST
35131&Interp_InitScope,
35132#endif
35133#ifdef GET_INTERPFN_DISPATCHERS
35134PRESERVE_NONE
35135static bool Interp_InitScope(InterpState &S) {
35136 {
35137 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35138 InitScope(S, V0);
35139 }
35140#if USE_TAILCALLS
35141 MUSTTAIL return InterpNext(S);
35142#else
35143 return true;
35144#endif
35145}
35146#endif
35147#ifdef GET_DISASM
35148case OP_InitScope:
35149 Text.Op = PrintName("InitScope");
35150 Text.Args.push_back(printArg<uint32_t>(PC));
35151 break;
35152#endif
35153#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35154bool emitInitScope( uint32_t , SourceInfo);
35155#endif
35156#ifdef GET_LINK_IMPL
35157bool ByteCodeEmitter::emitInitScope( uint32_t A0, SourceInfo L) {
35158 return emitOp<uint32_t>(OP_InitScope, A0, L);
35159}
35160#endif
35161#ifdef GET_EVAL_IMPL
35162bool EvalEmitter::emitInitScope( uint32_t A0, SourceInfo L) {
35163 if (!isActive()) return true;
35164 CurrentSource = L;
35165 return InitScope(S, A0);
35166}
35167#endif
35168#ifdef GET_OPCODE_NAMES
35169OP_InitThisBitFieldSint8,
35170OP_InitThisBitFieldUint8,
35171OP_InitThisBitFieldSint16,
35172OP_InitThisBitFieldUint16,
35173OP_InitThisBitFieldSint32,
35174OP_InitThisBitFieldUint32,
35175OP_InitThisBitFieldSint64,
35176OP_InitThisBitFieldUint64,
35177OP_InitThisBitFieldIntAP,
35178OP_InitThisBitFieldIntAPS,
35179OP_InitThisBitFieldBool,
35180#endif
35181#ifdef GET_INTERPFN_LIST
35182&Interp_InitThisBitFieldSint8,
35183&Interp_InitThisBitFieldUint8,
35184&Interp_InitThisBitFieldSint16,
35185&Interp_InitThisBitFieldUint16,
35186&Interp_InitThisBitFieldSint32,
35187&Interp_InitThisBitFieldUint32,
35188&Interp_InitThisBitFieldSint64,
35189&Interp_InitThisBitFieldUint64,
35190&Interp_InitThisBitFieldIntAP,
35191&Interp_InitThisBitFieldIntAPS,
35192&Interp_InitThisBitFieldBool,
35193#endif
35194#ifdef GET_INTERPFN_DISPATCHERS
35195PRESERVE_NONE
35196static bool Interp_InitThisBitFieldSint8(InterpState &S) {
35197 {
35198 CodePtr OpPC = S.PC;
35199 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35200 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35201 if (!InitThisBitField<PT_Sint8>(S, OpPC, V0, V1)) return false;
35202 }
35203#if USE_TAILCALLS
35204 MUSTTAIL return InterpNext(S);
35205#else
35206 return true;
35207#endif
35208}
35209PRESERVE_NONE
35210static bool Interp_InitThisBitFieldUint8(InterpState &S) {
35211 {
35212 CodePtr OpPC = S.PC;
35213 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35214 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35215 if (!InitThisBitField<PT_Uint8>(S, OpPC, V0, V1)) return false;
35216 }
35217#if USE_TAILCALLS
35218 MUSTTAIL return InterpNext(S);
35219#else
35220 return true;
35221#endif
35222}
35223PRESERVE_NONE
35224static bool Interp_InitThisBitFieldSint16(InterpState &S) {
35225 {
35226 CodePtr OpPC = S.PC;
35227 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35228 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35229 if (!InitThisBitField<PT_Sint16>(S, OpPC, V0, V1)) return false;
35230 }
35231#if USE_TAILCALLS
35232 MUSTTAIL return InterpNext(S);
35233#else
35234 return true;
35235#endif
35236}
35237PRESERVE_NONE
35238static bool Interp_InitThisBitFieldUint16(InterpState &S) {
35239 {
35240 CodePtr OpPC = S.PC;
35241 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35242 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35243 if (!InitThisBitField<PT_Uint16>(S, OpPC, V0, V1)) return false;
35244 }
35245#if USE_TAILCALLS
35246 MUSTTAIL return InterpNext(S);
35247#else
35248 return true;
35249#endif
35250}
35251PRESERVE_NONE
35252static bool Interp_InitThisBitFieldSint32(InterpState &S) {
35253 {
35254 CodePtr OpPC = S.PC;
35255 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35256 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35257 if (!InitThisBitField<PT_Sint32>(S, OpPC, V0, V1)) return false;
35258 }
35259#if USE_TAILCALLS
35260 MUSTTAIL return InterpNext(S);
35261#else
35262 return true;
35263#endif
35264}
35265PRESERVE_NONE
35266static bool Interp_InitThisBitFieldUint32(InterpState &S) {
35267 {
35268 CodePtr OpPC = S.PC;
35269 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35270 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35271 if (!InitThisBitField<PT_Uint32>(S, OpPC, V0, V1)) return false;
35272 }
35273#if USE_TAILCALLS
35274 MUSTTAIL return InterpNext(S);
35275#else
35276 return true;
35277#endif
35278}
35279PRESERVE_NONE
35280static bool Interp_InitThisBitFieldSint64(InterpState &S) {
35281 {
35282 CodePtr OpPC = S.PC;
35283 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35284 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35285 if (!InitThisBitField<PT_Sint64>(S, OpPC, V0, V1)) return false;
35286 }
35287#if USE_TAILCALLS
35288 MUSTTAIL return InterpNext(S);
35289#else
35290 return true;
35291#endif
35292}
35293PRESERVE_NONE
35294static bool Interp_InitThisBitFieldUint64(InterpState &S) {
35295 {
35296 CodePtr OpPC = S.PC;
35297 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35298 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35299 if (!InitThisBitField<PT_Uint64>(S, OpPC, V0, V1)) return false;
35300 }
35301#if USE_TAILCALLS
35302 MUSTTAIL return InterpNext(S);
35303#else
35304 return true;
35305#endif
35306}
35307PRESERVE_NONE
35308static bool Interp_InitThisBitFieldIntAP(InterpState &S) {
35309 {
35310 CodePtr OpPC = S.PC;
35311 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35312 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35313 if (!InitThisBitField<PT_IntAP>(S, OpPC, V0, V1)) return false;
35314 }
35315#if USE_TAILCALLS
35316 MUSTTAIL return InterpNext(S);
35317#else
35318 return true;
35319#endif
35320}
35321PRESERVE_NONE
35322static bool Interp_InitThisBitFieldIntAPS(InterpState &S) {
35323 {
35324 CodePtr OpPC = S.PC;
35325 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35326 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35327 if (!InitThisBitField<PT_IntAPS>(S, OpPC, V0, V1)) return false;
35328 }
35329#if USE_TAILCALLS
35330 MUSTTAIL return InterpNext(S);
35331#else
35332 return true;
35333#endif
35334}
35335PRESERVE_NONE
35336static bool Interp_InitThisBitFieldBool(InterpState &S) {
35337 {
35338 CodePtr OpPC = S.PC;
35339 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35340 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35341 if (!InitThisBitField<PT_Bool>(S, OpPC, V0, V1)) return false;
35342 }
35343#if USE_TAILCALLS
35344 MUSTTAIL return InterpNext(S);
35345#else
35346 return true;
35347#endif
35348}
35349#endif
35350#ifdef GET_DISASM
35351case OP_InitThisBitFieldSint8:
35352 Text.Op = PrintName("InitThisBitFieldSint8");
35353 Text.Args.push_back(printArg<uint32_t>(PC));
35354 Text.Args.push_back(printArg<uint32_t>(PC));
35355 break;
35356case OP_InitThisBitFieldUint8:
35357 Text.Op = PrintName("InitThisBitFieldUint8");
35358 Text.Args.push_back(printArg<uint32_t>(PC));
35359 Text.Args.push_back(printArg<uint32_t>(PC));
35360 break;
35361case OP_InitThisBitFieldSint16:
35362 Text.Op = PrintName("InitThisBitFieldSint16");
35363 Text.Args.push_back(printArg<uint32_t>(PC));
35364 Text.Args.push_back(printArg<uint32_t>(PC));
35365 break;
35366case OP_InitThisBitFieldUint16:
35367 Text.Op = PrintName("InitThisBitFieldUint16");
35368 Text.Args.push_back(printArg<uint32_t>(PC));
35369 Text.Args.push_back(printArg<uint32_t>(PC));
35370 break;
35371case OP_InitThisBitFieldSint32:
35372 Text.Op = PrintName("InitThisBitFieldSint32");
35373 Text.Args.push_back(printArg<uint32_t>(PC));
35374 Text.Args.push_back(printArg<uint32_t>(PC));
35375 break;
35376case OP_InitThisBitFieldUint32:
35377 Text.Op = PrintName("InitThisBitFieldUint32");
35378 Text.Args.push_back(printArg<uint32_t>(PC));
35379 Text.Args.push_back(printArg<uint32_t>(PC));
35380 break;
35381case OP_InitThisBitFieldSint64:
35382 Text.Op = PrintName("InitThisBitFieldSint64");
35383 Text.Args.push_back(printArg<uint32_t>(PC));
35384 Text.Args.push_back(printArg<uint32_t>(PC));
35385 break;
35386case OP_InitThisBitFieldUint64:
35387 Text.Op = PrintName("InitThisBitFieldUint64");
35388 Text.Args.push_back(printArg<uint32_t>(PC));
35389 Text.Args.push_back(printArg<uint32_t>(PC));
35390 break;
35391case OP_InitThisBitFieldIntAP:
35392 Text.Op = PrintName("InitThisBitFieldIntAP");
35393 Text.Args.push_back(printArg<uint32_t>(PC));
35394 Text.Args.push_back(printArg<uint32_t>(PC));
35395 break;
35396case OP_InitThisBitFieldIntAPS:
35397 Text.Op = PrintName("InitThisBitFieldIntAPS");
35398 Text.Args.push_back(printArg<uint32_t>(PC));
35399 Text.Args.push_back(printArg<uint32_t>(PC));
35400 break;
35401case OP_InitThisBitFieldBool:
35402 Text.Op = PrintName("InitThisBitFieldBool");
35403 Text.Args.push_back(printArg<uint32_t>(PC));
35404 Text.Args.push_back(printArg<uint32_t>(PC));
35405 break;
35406#endif
35407#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35408bool emitInitThisBitFieldSint8( uint32_t , uint32_t , SourceInfo);
35409bool emitInitThisBitFieldUint8( uint32_t , uint32_t , SourceInfo);
35410bool emitInitThisBitFieldSint16( uint32_t , uint32_t , SourceInfo);
35411bool emitInitThisBitFieldUint16( uint32_t , uint32_t , SourceInfo);
35412bool emitInitThisBitFieldSint32( uint32_t , uint32_t , SourceInfo);
35413bool emitInitThisBitFieldUint32( uint32_t , uint32_t , SourceInfo);
35414bool emitInitThisBitFieldSint64( uint32_t , uint32_t , SourceInfo);
35415bool emitInitThisBitFieldUint64( uint32_t , uint32_t , SourceInfo);
35416bool emitInitThisBitFieldIntAP( uint32_t , uint32_t , SourceInfo);
35417bool emitInitThisBitFieldIntAPS( uint32_t , uint32_t , SourceInfo);
35418bool emitInitThisBitFieldBool( uint32_t , uint32_t , SourceInfo);
35419#endif
35420#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35421[[nodiscard]] bool emitInitThisBitField(PrimType, uint32_t, uint32_t, SourceInfo I);
35422#endif
35423#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
35424bool
35425#if defined(GET_EVAL_IMPL)
35426EvalEmitter
35427#else
35428ByteCodeEmitter
35429#endif
35430::emitInitThisBitField(PrimType T0, uint32_t A0, uint32_t A1, SourceInfo I) {
35431 switch (T0) {
35432 case PT_Sint8:
35433 return emitInitThisBitFieldSint8(A0, A1, I);
35434 case PT_Uint8:
35435 return emitInitThisBitFieldUint8(A0, A1, I);
35436 case PT_Sint16:
35437 return emitInitThisBitFieldSint16(A0, A1, I);
35438 case PT_Uint16:
35439 return emitInitThisBitFieldUint16(A0, A1, I);
35440 case PT_Sint32:
35441 return emitInitThisBitFieldSint32(A0, A1, I);
35442 case PT_Uint32:
35443 return emitInitThisBitFieldUint32(A0, A1, I);
35444 case PT_Sint64:
35445 return emitInitThisBitFieldSint64(A0, A1, I);
35446 case PT_Uint64:
35447 return emitInitThisBitFieldUint64(A0, A1, I);
35448 case PT_IntAP:
35449 return emitInitThisBitFieldIntAP(A0, A1, I);
35450 case PT_IntAPS:
35451 return emitInitThisBitFieldIntAPS(A0, A1, I);
35452 case PT_Bool:
35453 return emitInitThisBitFieldBool(A0, A1, I);
35454 default: llvm_unreachable("invalid type: emitInitThisBitField");
35455 }
35456 llvm_unreachable("invalid enum value");
35457}
35458#endif
35459#ifdef GET_LINK_IMPL
35460bool ByteCodeEmitter::emitInitThisBitFieldSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
35461 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldSint8, A0, A1, L);
35462}
35463bool ByteCodeEmitter::emitInitThisBitFieldUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
35464 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldUint8, A0, A1, L);
35465}
35466bool ByteCodeEmitter::emitInitThisBitFieldSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
35467 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldSint16, A0, A1, L);
35468}
35469bool ByteCodeEmitter::emitInitThisBitFieldUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
35470 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldUint16, A0, A1, L);
35471}
35472bool ByteCodeEmitter::emitInitThisBitFieldSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
35473 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldSint32, A0, A1, L);
35474}
35475bool ByteCodeEmitter::emitInitThisBitFieldUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
35476 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldUint32, A0, A1, L);
35477}
35478bool ByteCodeEmitter::emitInitThisBitFieldSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
35479 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldSint64, A0, A1, L);
35480}
35481bool ByteCodeEmitter::emitInitThisBitFieldUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
35482 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldUint64, A0, A1, L);
35483}
35484bool ByteCodeEmitter::emitInitThisBitFieldIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
35485 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldIntAP, A0, A1, L);
35486}
35487bool ByteCodeEmitter::emitInitThisBitFieldIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
35488 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldIntAPS, A0, A1, L);
35489}
35490bool ByteCodeEmitter::emitInitThisBitFieldBool( uint32_t A0, uint32_t A1, SourceInfo L) {
35491 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldBool, A0, A1, L);
35492}
35493#endif
35494#ifdef GET_EVAL_IMPL
35495bool EvalEmitter::emitInitThisBitFieldSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
35496 if (!isActive()) return true;
35497 CurrentSource = L;
35498 return InitThisBitField<PT_Sint8>(S, CodePtr(), A0, A1);
35499}
35500bool EvalEmitter::emitInitThisBitFieldUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
35501 if (!isActive()) return true;
35502 CurrentSource = L;
35503 return InitThisBitField<PT_Uint8>(S, CodePtr(), A0, A1);
35504}
35505bool EvalEmitter::emitInitThisBitFieldSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
35506 if (!isActive()) return true;
35507 CurrentSource = L;
35508 return InitThisBitField<PT_Sint16>(S, CodePtr(), A0, A1);
35509}
35510bool EvalEmitter::emitInitThisBitFieldUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
35511 if (!isActive()) return true;
35512 CurrentSource = L;
35513 return InitThisBitField<PT_Uint16>(S, CodePtr(), A0, A1);
35514}
35515bool EvalEmitter::emitInitThisBitFieldSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
35516 if (!isActive()) return true;
35517 CurrentSource = L;
35518 return InitThisBitField<PT_Sint32>(S, CodePtr(), A0, A1);
35519}
35520bool EvalEmitter::emitInitThisBitFieldUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
35521 if (!isActive()) return true;
35522 CurrentSource = L;
35523 return InitThisBitField<PT_Uint32>(S, CodePtr(), A0, A1);
35524}
35525bool EvalEmitter::emitInitThisBitFieldSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
35526 if (!isActive()) return true;
35527 CurrentSource = L;
35528 return InitThisBitField<PT_Sint64>(S, CodePtr(), A0, A1);
35529}
35530bool EvalEmitter::emitInitThisBitFieldUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
35531 if (!isActive()) return true;
35532 CurrentSource = L;
35533 return InitThisBitField<PT_Uint64>(S, CodePtr(), A0, A1);
35534}
35535bool EvalEmitter::emitInitThisBitFieldIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
35536 if (!isActive()) return true;
35537 CurrentSource = L;
35538 return InitThisBitField<PT_IntAP>(S, CodePtr(), A0, A1);
35539}
35540bool EvalEmitter::emitInitThisBitFieldIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
35541 if (!isActive()) return true;
35542 CurrentSource = L;
35543 return InitThisBitField<PT_IntAPS>(S, CodePtr(), A0, A1);
35544}
35545bool EvalEmitter::emitInitThisBitFieldBool( uint32_t A0, uint32_t A1, SourceInfo L) {
35546 if (!isActive()) return true;
35547 CurrentSource = L;
35548 return InitThisBitField<PT_Bool>(S, CodePtr(), A0, A1);
35549}
35550#endif
35551#ifdef GET_OPCODE_NAMES
35552OP_InitThisFieldSint8,
35553OP_InitThisFieldUint8,
35554OP_InitThisFieldSint16,
35555OP_InitThisFieldUint16,
35556OP_InitThisFieldSint32,
35557OP_InitThisFieldUint32,
35558OP_InitThisFieldSint64,
35559OP_InitThisFieldUint64,
35560OP_InitThisFieldIntAP,
35561OP_InitThisFieldIntAPS,
35562OP_InitThisFieldBool,
35563OP_InitThisFieldFixedPoint,
35564OP_InitThisFieldPtr,
35565OP_InitThisFieldMemberPtr,
35566OP_InitThisFieldFloat,
35567#endif
35568#ifdef GET_INTERPFN_LIST
35569&Interp_InitThisFieldSint8,
35570&Interp_InitThisFieldUint8,
35571&Interp_InitThisFieldSint16,
35572&Interp_InitThisFieldUint16,
35573&Interp_InitThisFieldSint32,
35574&Interp_InitThisFieldUint32,
35575&Interp_InitThisFieldSint64,
35576&Interp_InitThisFieldUint64,
35577&Interp_InitThisFieldIntAP,
35578&Interp_InitThisFieldIntAPS,
35579&Interp_InitThisFieldBool,
35580&Interp_InitThisFieldFixedPoint,
35581&Interp_InitThisFieldPtr,
35582&Interp_InitThisFieldMemberPtr,
35583&Interp_InitThisFieldFloat,
35584#endif
35585#ifdef GET_INTERPFN_DISPATCHERS
35586PRESERVE_NONE
35587static bool Interp_InitThisFieldSint8(InterpState &S) {
35588 {
35589 CodePtr OpPC = S.PC;
35590 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35591 if (!InitThisField<PT_Sint8>(S, OpPC, V0)) return false;
35592 }
35593#if USE_TAILCALLS
35594 MUSTTAIL return InterpNext(S);
35595#else
35596 return true;
35597#endif
35598}
35599PRESERVE_NONE
35600static bool Interp_InitThisFieldUint8(InterpState &S) {
35601 {
35602 CodePtr OpPC = S.PC;
35603 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35604 if (!InitThisField<PT_Uint8>(S, OpPC, V0)) return false;
35605 }
35606#if USE_TAILCALLS
35607 MUSTTAIL return InterpNext(S);
35608#else
35609 return true;
35610#endif
35611}
35612PRESERVE_NONE
35613static bool Interp_InitThisFieldSint16(InterpState &S) {
35614 {
35615 CodePtr OpPC = S.PC;
35616 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35617 if (!InitThisField<PT_Sint16>(S, OpPC, V0)) return false;
35618 }
35619#if USE_TAILCALLS
35620 MUSTTAIL return InterpNext(S);
35621#else
35622 return true;
35623#endif
35624}
35625PRESERVE_NONE
35626static bool Interp_InitThisFieldUint16(InterpState &S) {
35627 {
35628 CodePtr OpPC = S.PC;
35629 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35630 if (!InitThisField<PT_Uint16>(S, OpPC, V0)) return false;
35631 }
35632#if USE_TAILCALLS
35633 MUSTTAIL return InterpNext(S);
35634#else
35635 return true;
35636#endif
35637}
35638PRESERVE_NONE
35639static bool Interp_InitThisFieldSint32(InterpState &S) {
35640 {
35641 CodePtr OpPC = S.PC;
35642 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35643 if (!InitThisField<PT_Sint32>(S, OpPC, V0)) return false;
35644 }
35645#if USE_TAILCALLS
35646 MUSTTAIL return InterpNext(S);
35647#else
35648 return true;
35649#endif
35650}
35651PRESERVE_NONE
35652static bool Interp_InitThisFieldUint32(InterpState &S) {
35653 {
35654 CodePtr OpPC = S.PC;
35655 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35656 if (!InitThisField<PT_Uint32>(S, OpPC, V0)) return false;
35657 }
35658#if USE_TAILCALLS
35659 MUSTTAIL return InterpNext(S);
35660#else
35661 return true;
35662#endif
35663}
35664PRESERVE_NONE
35665static bool Interp_InitThisFieldSint64(InterpState &S) {
35666 {
35667 CodePtr OpPC = S.PC;
35668 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35669 if (!InitThisField<PT_Sint64>(S, OpPC, V0)) return false;
35670 }
35671#if USE_TAILCALLS
35672 MUSTTAIL return InterpNext(S);
35673#else
35674 return true;
35675#endif
35676}
35677PRESERVE_NONE
35678static bool Interp_InitThisFieldUint64(InterpState &S) {
35679 {
35680 CodePtr OpPC = S.PC;
35681 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35682 if (!InitThisField<PT_Uint64>(S, OpPC, V0)) return false;
35683 }
35684#if USE_TAILCALLS
35685 MUSTTAIL return InterpNext(S);
35686#else
35687 return true;
35688#endif
35689}
35690PRESERVE_NONE
35691static bool Interp_InitThisFieldIntAP(InterpState &S) {
35692 {
35693 CodePtr OpPC = S.PC;
35694 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35695 if (!InitThisField<PT_IntAP>(S, OpPC, V0)) return false;
35696 }
35697#if USE_TAILCALLS
35698 MUSTTAIL return InterpNext(S);
35699#else
35700 return true;
35701#endif
35702}
35703PRESERVE_NONE
35704static bool Interp_InitThisFieldIntAPS(InterpState &S) {
35705 {
35706 CodePtr OpPC = S.PC;
35707 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35708 if (!InitThisField<PT_IntAPS>(S, OpPC, V0)) return false;
35709 }
35710#if USE_TAILCALLS
35711 MUSTTAIL return InterpNext(S);
35712#else
35713 return true;
35714#endif
35715}
35716PRESERVE_NONE
35717static bool Interp_InitThisFieldBool(InterpState &S) {
35718 {
35719 CodePtr OpPC = S.PC;
35720 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35721 if (!InitThisField<PT_Bool>(S, OpPC, V0)) return false;
35722 }
35723#if USE_TAILCALLS
35724 MUSTTAIL return InterpNext(S);
35725#else
35726 return true;
35727#endif
35728}
35729PRESERVE_NONE
35730static bool Interp_InitThisFieldFixedPoint(InterpState &S) {
35731 {
35732 CodePtr OpPC = S.PC;
35733 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35734 if (!InitThisField<PT_FixedPoint>(S, OpPC, V0)) return false;
35735 }
35736#if USE_TAILCALLS
35737 MUSTTAIL return InterpNext(S);
35738#else
35739 return true;
35740#endif
35741}
35742PRESERVE_NONE
35743static bool Interp_InitThisFieldPtr(InterpState &S) {
35744 {
35745 CodePtr OpPC = S.PC;
35746 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35747 if (!InitThisField<PT_Ptr>(S, OpPC, V0)) return false;
35748 }
35749#if USE_TAILCALLS
35750 MUSTTAIL return InterpNext(S);
35751#else
35752 return true;
35753#endif
35754}
35755PRESERVE_NONE
35756static bool Interp_InitThisFieldMemberPtr(InterpState &S) {
35757 {
35758 CodePtr OpPC = S.PC;
35759 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35760 if (!InitThisField<PT_MemberPtr>(S, OpPC, V0)) return false;
35761 }
35762#if USE_TAILCALLS
35763 MUSTTAIL return InterpNext(S);
35764#else
35765 return true;
35766#endif
35767}
35768PRESERVE_NONE
35769static bool Interp_InitThisFieldFloat(InterpState &S) {
35770 {
35771 CodePtr OpPC = S.PC;
35772 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35773 if (!InitThisField<PT_Float>(S, OpPC, V0)) return false;
35774 }
35775#if USE_TAILCALLS
35776 MUSTTAIL return InterpNext(S);
35777#else
35778 return true;
35779#endif
35780}
35781#endif
35782#ifdef GET_DISASM
35783case OP_InitThisFieldSint8:
35784 Text.Op = PrintName("InitThisFieldSint8");
35785 Text.Args.push_back(printArg<uint32_t>(PC));
35786 break;
35787case OP_InitThisFieldUint8:
35788 Text.Op = PrintName("InitThisFieldUint8");
35789 Text.Args.push_back(printArg<uint32_t>(PC));
35790 break;
35791case OP_InitThisFieldSint16:
35792 Text.Op = PrintName("InitThisFieldSint16");
35793 Text.Args.push_back(printArg<uint32_t>(PC));
35794 break;
35795case OP_InitThisFieldUint16:
35796 Text.Op = PrintName("InitThisFieldUint16");
35797 Text.Args.push_back(printArg<uint32_t>(PC));
35798 break;
35799case OP_InitThisFieldSint32:
35800 Text.Op = PrintName("InitThisFieldSint32");
35801 Text.Args.push_back(printArg<uint32_t>(PC));
35802 break;
35803case OP_InitThisFieldUint32:
35804 Text.Op = PrintName("InitThisFieldUint32");
35805 Text.Args.push_back(printArg<uint32_t>(PC));
35806 break;
35807case OP_InitThisFieldSint64:
35808 Text.Op = PrintName("InitThisFieldSint64");
35809 Text.Args.push_back(printArg<uint32_t>(PC));
35810 break;
35811case OP_InitThisFieldUint64:
35812 Text.Op = PrintName("InitThisFieldUint64");
35813 Text.Args.push_back(printArg<uint32_t>(PC));
35814 break;
35815case OP_InitThisFieldIntAP:
35816 Text.Op = PrintName("InitThisFieldIntAP");
35817 Text.Args.push_back(printArg<uint32_t>(PC));
35818 break;
35819case OP_InitThisFieldIntAPS:
35820 Text.Op = PrintName("InitThisFieldIntAPS");
35821 Text.Args.push_back(printArg<uint32_t>(PC));
35822 break;
35823case OP_InitThisFieldBool:
35824 Text.Op = PrintName("InitThisFieldBool");
35825 Text.Args.push_back(printArg<uint32_t>(PC));
35826 break;
35827case OP_InitThisFieldFixedPoint:
35828 Text.Op = PrintName("InitThisFieldFixedPoint");
35829 Text.Args.push_back(printArg<uint32_t>(PC));
35830 break;
35831case OP_InitThisFieldPtr:
35832 Text.Op = PrintName("InitThisFieldPtr");
35833 Text.Args.push_back(printArg<uint32_t>(PC));
35834 break;
35835case OP_InitThisFieldMemberPtr:
35836 Text.Op = PrintName("InitThisFieldMemberPtr");
35837 Text.Args.push_back(printArg<uint32_t>(PC));
35838 break;
35839case OP_InitThisFieldFloat:
35840 Text.Op = PrintName("InitThisFieldFloat");
35841 Text.Args.push_back(printArg<uint32_t>(PC));
35842 break;
35843#endif
35844#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35845bool emitInitThisFieldSint8( uint32_t , SourceInfo);
35846bool emitInitThisFieldUint8( uint32_t , SourceInfo);
35847bool emitInitThisFieldSint16( uint32_t , SourceInfo);
35848bool emitInitThisFieldUint16( uint32_t , SourceInfo);
35849bool emitInitThisFieldSint32( uint32_t , SourceInfo);
35850bool emitInitThisFieldUint32( uint32_t , SourceInfo);
35851bool emitInitThisFieldSint64( uint32_t , SourceInfo);
35852bool emitInitThisFieldUint64( uint32_t , SourceInfo);
35853bool emitInitThisFieldIntAP( uint32_t , SourceInfo);
35854bool emitInitThisFieldIntAPS( uint32_t , SourceInfo);
35855bool emitInitThisFieldBool( uint32_t , SourceInfo);
35856bool emitInitThisFieldFixedPoint( uint32_t , SourceInfo);
35857bool emitInitThisFieldPtr( uint32_t , SourceInfo);
35858bool emitInitThisFieldMemberPtr( uint32_t , SourceInfo);
35859bool emitInitThisFieldFloat( uint32_t , SourceInfo);
35860#endif
35861#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35862[[nodiscard]] bool emitInitThisField(PrimType, uint32_t, SourceInfo I);
35863#endif
35864#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
35865bool
35866#if defined(GET_EVAL_IMPL)
35867EvalEmitter
35868#else
35869ByteCodeEmitter
35870#endif
35871::emitInitThisField(PrimType T0, uint32_t A0, SourceInfo I) {
35872 switch (T0) {
35873 case PT_Sint8:
35874 return emitInitThisFieldSint8(A0, I);
35875 case PT_Uint8:
35876 return emitInitThisFieldUint8(A0, I);
35877 case PT_Sint16:
35878 return emitInitThisFieldSint16(A0, I);
35879 case PT_Uint16:
35880 return emitInitThisFieldUint16(A0, I);
35881 case PT_Sint32:
35882 return emitInitThisFieldSint32(A0, I);
35883 case PT_Uint32:
35884 return emitInitThisFieldUint32(A0, I);
35885 case PT_Sint64:
35886 return emitInitThisFieldSint64(A0, I);
35887 case PT_Uint64:
35888 return emitInitThisFieldUint64(A0, I);
35889 case PT_IntAP:
35890 return emitInitThisFieldIntAP(A0, I);
35891 case PT_IntAPS:
35892 return emitInitThisFieldIntAPS(A0, I);
35893 case PT_Bool:
35894 return emitInitThisFieldBool(A0, I);
35895 case PT_FixedPoint:
35896 return emitInitThisFieldFixedPoint(A0, I);
35897 case PT_Ptr:
35898 return emitInitThisFieldPtr(A0, I);
35899 case PT_MemberPtr:
35900 return emitInitThisFieldMemberPtr(A0, I);
35901 case PT_Float:
35902 return emitInitThisFieldFloat(A0, I);
35903 }
35904 llvm_unreachable("invalid enum value");
35905}
35906#endif
35907#ifdef GET_LINK_IMPL
35908bool ByteCodeEmitter::emitInitThisFieldSint8( uint32_t A0, SourceInfo L) {
35909 return emitOp<uint32_t>(OP_InitThisFieldSint8, A0, L);
35910}
35911bool ByteCodeEmitter::emitInitThisFieldUint8( uint32_t A0, SourceInfo L) {
35912 return emitOp<uint32_t>(OP_InitThisFieldUint8, A0, L);
35913}
35914bool ByteCodeEmitter::emitInitThisFieldSint16( uint32_t A0, SourceInfo L) {
35915 return emitOp<uint32_t>(OP_InitThisFieldSint16, A0, L);
35916}
35917bool ByteCodeEmitter::emitInitThisFieldUint16( uint32_t A0, SourceInfo L) {
35918 return emitOp<uint32_t>(OP_InitThisFieldUint16, A0, L);
35919}
35920bool ByteCodeEmitter::emitInitThisFieldSint32( uint32_t A0, SourceInfo L) {
35921 return emitOp<uint32_t>(OP_InitThisFieldSint32, A0, L);
35922}
35923bool ByteCodeEmitter::emitInitThisFieldUint32( uint32_t A0, SourceInfo L) {
35924 return emitOp<uint32_t>(OP_InitThisFieldUint32, A0, L);
35925}
35926bool ByteCodeEmitter::emitInitThisFieldSint64( uint32_t A0, SourceInfo L) {
35927 return emitOp<uint32_t>(OP_InitThisFieldSint64, A0, L);
35928}
35929bool ByteCodeEmitter::emitInitThisFieldUint64( uint32_t A0, SourceInfo L) {
35930 return emitOp<uint32_t>(OP_InitThisFieldUint64, A0, L);
35931}
35932bool ByteCodeEmitter::emitInitThisFieldIntAP( uint32_t A0, SourceInfo L) {
35933 return emitOp<uint32_t>(OP_InitThisFieldIntAP, A0, L);
35934}
35935bool ByteCodeEmitter::emitInitThisFieldIntAPS( uint32_t A0, SourceInfo L) {
35936 return emitOp<uint32_t>(OP_InitThisFieldIntAPS, A0, L);
35937}
35938bool ByteCodeEmitter::emitInitThisFieldBool( uint32_t A0, SourceInfo L) {
35939 return emitOp<uint32_t>(OP_InitThisFieldBool, A0, L);
35940}
35941bool ByteCodeEmitter::emitInitThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
35942 return emitOp<uint32_t>(OP_InitThisFieldFixedPoint, A0, L);
35943}
35944bool ByteCodeEmitter::emitInitThisFieldPtr( uint32_t A0, SourceInfo L) {
35945 return emitOp<uint32_t>(OP_InitThisFieldPtr, A0, L);
35946}
35947bool ByteCodeEmitter::emitInitThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
35948 return emitOp<uint32_t>(OP_InitThisFieldMemberPtr, A0, L);
35949}
35950bool ByteCodeEmitter::emitInitThisFieldFloat( uint32_t A0, SourceInfo L) {
35951 return emitOp<uint32_t>(OP_InitThisFieldFloat, A0, L);
35952}
35953#endif
35954#ifdef GET_EVAL_IMPL
35955bool EvalEmitter::emitInitThisFieldSint8( uint32_t A0, SourceInfo L) {
35956 if (!isActive()) return true;
35957 CurrentSource = L;
35958 return InitThisField<PT_Sint8>(S, CodePtr(), A0);
35959}
35960bool EvalEmitter::emitInitThisFieldUint8( uint32_t A0, SourceInfo L) {
35961 if (!isActive()) return true;
35962 CurrentSource = L;
35963 return InitThisField<PT_Uint8>(S, CodePtr(), A0);
35964}
35965bool EvalEmitter::emitInitThisFieldSint16( uint32_t A0, SourceInfo L) {
35966 if (!isActive()) return true;
35967 CurrentSource = L;
35968 return InitThisField<PT_Sint16>(S, CodePtr(), A0);
35969}
35970bool EvalEmitter::emitInitThisFieldUint16( uint32_t A0, SourceInfo L) {
35971 if (!isActive()) return true;
35972 CurrentSource = L;
35973 return InitThisField<PT_Uint16>(S, CodePtr(), A0);
35974}
35975bool EvalEmitter::emitInitThisFieldSint32( uint32_t A0, SourceInfo L) {
35976 if (!isActive()) return true;
35977 CurrentSource = L;
35978 return InitThisField<PT_Sint32>(S, CodePtr(), A0);
35979}
35980bool EvalEmitter::emitInitThisFieldUint32( uint32_t A0, SourceInfo L) {
35981 if (!isActive()) return true;
35982 CurrentSource = L;
35983 return InitThisField<PT_Uint32>(S, CodePtr(), A0);
35984}
35985bool EvalEmitter::emitInitThisFieldSint64( uint32_t A0, SourceInfo L) {
35986 if (!isActive()) return true;
35987 CurrentSource = L;
35988 return InitThisField<PT_Sint64>(S, CodePtr(), A0);
35989}
35990bool EvalEmitter::emitInitThisFieldUint64( uint32_t A0, SourceInfo L) {
35991 if (!isActive()) return true;
35992 CurrentSource = L;
35993 return InitThisField<PT_Uint64>(S, CodePtr(), A0);
35994}
35995bool EvalEmitter::emitInitThisFieldIntAP( uint32_t A0, SourceInfo L) {
35996 if (!isActive()) return true;
35997 CurrentSource = L;
35998 return InitThisField<PT_IntAP>(S, CodePtr(), A0);
35999}
36000bool EvalEmitter::emitInitThisFieldIntAPS( uint32_t A0, SourceInfo L) {
36001 if (!isActive()) return true;
36002 CurrentSource = L;
36003 return InitThisField<PT_IntAPS>(S, CodePtr(), A0);
36004}
36005bool EvalEmitter::emitInitThisFieldBool( uint32_t A0, SourceInfo L) {
36006 if (!isActive()) return true;
36007 CurrentSource = L;
36008 return InitThisField<PT_Bool>(S, CodePtr(), A0);
36009}
36010bool EvalEmitter::emitInitThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
36011 if (!isActive()) return true;
36012 CurrentSource = L;
36013 return InitThisField<PT_FixedPoint>(S, CodePtr(), A0);
36014}
36015bool EvalEmitter::emitInitThisFieldPtr( uint32_t A0, SourceInfo L) {
36016 if (!isActive()) return true;
36017 CurrentSource = L;
36018 return InitThisField<PT_Ptr>(S, CodePtr(), A0);
36019}
36020bool EvalEmitter::emitInitThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
36021 if (!isActive()) return true;
36022 CurrentSource = L;
36023 return InitThisField<PT_MemberPtr>(S, CodePtr(), A0);
36024}
36025bool EvalEmitter::emitInitThisFieldFloat( uint32_t A0, SourceInfo L) {
36026 if (!isActive()) return true;
36027 CurrentSource = L;
36028 return InitThisField<PT_Float>(S, CodePtr(), A0);
36029}
36030#endif
36031#ifdef GET_OPCODE_NAMES
36032OP_InitThisFieldActivateSint8,
36033OP_InitThisFieldActivateUint8,
36034OP_InitThisFieldActivateSint16,
36035OP_InitThisFieldActivateUint16,
36036OP_InitThisFieldActivateSint32,
36037OP_InitThisFieldActivateUint32,
36038OP_InitThisFieldActivateSint64,
36039OP_InitThisFieldActivateUint64,
36040OP_InitThisFieldActivateIntAP,
36041OP_InitThisFieldActivateIntAPS,
36042OP_InitThisFieldActivateBool,
36043OP_InitThisFieldActivateFixedPoint,
36044OP_InitThisFieldActivatePtr,
36045OP_InitThisFieldActivateMemberPtr,
36046OP_InitThisFieldActivateFloat,
36047#endif
36048#ifdef GET_INTERPFN_LIST
36049&Interp_InitThisFieldActivateSint8,
36050&Interp_InitThisFieldActivateUint8,
36051&Interp_InitThisFieldActivateSint16,
36052&Interp_InitThisFieldActivateUint16,
36053&Interp_InitThisFieldActivateSint32,
36054&Interp_InitThisFieldActivateUint32,
36055&Interp_InitThisFieldActivateSint64,
36056&Interp_InitThisFieldActivateUint64,
36057&Interp_InitThisFieldActivateIntAP,
36058&Interp_InitThisFieldActivateIntAPS,
36059&Interp_InitThisFieldActivateBool,
36060&Interp_InitThisFieldActivateFixedPoint,
36061&Interp_InitThisFieldActivatePtr,
36062&Interp_InitThisFieldActivateMemberPtr,
36063&Interp_InitThisFieldActivateFloat,
36064#endif
36065#ifdef GET_INTERPFN_DISPATCHERS
36066PRESERVE_NONE
36067static bool Interp_InitThisFieldActivateSint8(InterpState &S) {
36068 {
36069 CodePtr OpPC = S.PC;
36070 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36071 if (!InitThisFieldActivate<PT_Sint8>(S, OpPC, V0)) return false;
36072 }
36073#if USE_TAILCALLS
36074 MUSTTAIL return InterpNext(S);
36075#else
36076 return true;
36077#endif
36078}
36079PRESERVE_NONE
36080static bool Interp_InitThisFieldActivateUint8(InterpState &S) {
36081 {
36082 CodePtr OpPC = S.PC;
36083 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36084 if (!InitThisFieldActivate<PT_Uint8>(S, OpPC, V0)) return false;
36085 }
36086#if USE_TAILCALLS
36087 MUSTTAIL return InterpNext(S);
36088#else
36089 return true;
36090#endif
36091}
36092PRESERVE_NONE
36093static bool Interp_InitThisFieldActivateSint16(InterpState &S) {
36094 {
36095 CodePtr OpPC = S.PC;
36096 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36097 if (!InitThisFieldActivate<PT_Sint16>(S, OpPC, V0)) return false;
36098 }
36099#if USE_TAILCALLS
36100 MUSTTAIL return InterpNext(S);
36101#else
36102 return true;
36103#endif
36104}
36105PRESERVE_NONE
36106static bool Interp_InitThisFieldActivateUint16(InterpState &S) {
36107 {
36108 CodePtr OpPC = S.PC;
36109 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36110 if (!InitThisFieldActivate<PT_Uint16>(S, OpPC, V0)) return false;
36111 }
36112#if USE_TAILCALLS
36113 MUSTTAIL return InterpNext(S);
36114#else
36115 return true;
36116#endif
36117}
36118PRESERVE_NONE
36119static bool Interp_InitThisFieldActivateSint32(InterpState &S) {
36120 {
36121 CodePtr OpPC = S.PC;
36122 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36123 if (!InitThisFieldActivate<PT_Sint32>(S, OpPC, V0)) return false;
36124 }
36125#if USE_TAILCALLS
36126 MUSTTAIL return InterpNext(S);
36127#else
36128 return true;
36129#endif
36130}
36131PRESERVE_NONE
36132static bool Interp_InitThisFieldActivateUint32(InterpState &S) {
36133 {
36134 CodePtr OpPC = S.PC;
36135 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36136 if (!InitThisFieldActivate<PT_Uint32>(S, OpPC, V0)) return false;
36137 }
36138#if USE_TAILCALLS
36139 MUSTTAIL return InterpNext(S);
36140#else
36141 return true;
36142#endif
36143}
36144PRESERVE_NONE
36145static bool Interp_InitThisFieldActivateSint64(InterpState &S) {
36146 {
36147 CodePtr OpPC = S.PC;
36148 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36149 if (!InitThisFieldActivate<PT_Sint64>(S, OpPC, V0)) return false;
36150 }
36151#if USE_TAILCALLS
36152 MUSTTAIL return InterpNext(S);
36153#else
36154 return true;
36155#endif
36156}
36157PRESERVE_NONE
36158static bool Interp_InitThisFieldActivateUint64(InterpState &S) {
36159 {
36160 CodePtr OpPC = S.PC;
36161 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36162 if (!InitThisFieldActivate<PT_Uint64>(S, OpPC, V0)) return false;
36163 }
36164#if USE_TAILCALLS
36165 MUSTTAIL return InterpNext(S);
36166#else
36167 return true;
36168#endif
36169}
36170PRESERVE_NONE
36171static bool Interp_InitThisFieldActivateIntAP(InterpState &S) {
36172 {
36173 CodePtr OpPC = S.PC;
36174 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36175 if (!InitThisFieldActivate<PT_IntAP>(S, OpPC, V0)) return false;
36176 }
36177#if USE_TAILCALLS
36178 MUSTTAIL return InterpNext(S);
36179#else
36180 return true;
36181#endif
36182}
36183PRESERVE_NONE
36184static bool Interp_InitThisFieldActivateIntAPS(InterpState &S) {
36185 {
36186 CodePtr OpPC = S.PC;
36187 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36188 if (!InitThisFieldActivate<PT_IntAPS>(S, OpPC, V0)) return false;
36189 }
36190#if USE_TAILCALLS
36191 MUSTTAIL return InterpNext(S);
36192#else
36193 return true;
36194#endif
36195}
36196PRESERVE_NONE
36197static bool Interp_InitThisFieldActivateBool(InterpState &S) {
36198 {
36199 CodePtr OpPC = S.PC;
36200 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36201 if (!InitThisFieldActivate<PT_Bool>(S, OpPC, V0)) return false;
36202 }
36203#if USE_TAILCALLS
36204 MUSTTAIL return InterpNext(S);
36205#else
36206 return true;
36207#endif
36208}
36209PRESERVE_NONE
36210static bool Interp_InitThisFieldActivateFixedPoint(InterpState &S) {
36211 {
36212 CodePtr OpPC = S.PC;
36213 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36214 if (!InitThisFieldActivate<PT_FixedPoint>(S, OpPC, V0)) return false;
36215 }
36216#if USE_TAILCALLS
36217 MUSTTAIL return InterpNext(S);
36218#else
36219 return true;
36220#endif
36221}
36222PRESERVE_NONE
36223static bool Interp_InitThisFieldActivatePtr(InterpState &S) {
36224 {
36225 CodePtr OpPC = S.PC;
36226 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36227 if (!InitThisFieldActivate<PT_Ptr>(S, OpPC, V0)) return false;
36228 }
36229#if USE_TAILCALLS
36230 MUSTTAIL return InterpNext(S);
36231#else
36232 return true;
36233#endif
36234}
36235PRESERVE_NONE
36236static bool Interp_InitThisFieldActivateMemberPtr(InterpState &S) {
36237 {
36238 CodePtr OpPC = S.PC;
36239 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36240 if (!InitThisFieldActivate<PT_MemberPtr>(S, OpPC, V0)) return false;
36241 }
36242#if USE_TAILCALLS
36243 MUSTTAIL return InterpNext(S);
36244#else
36245 return true;
36246#endif
36247}
36248PRESERVE_NONE
36249static bool Interp_InitThisFieldActivateFloat(InterpState &S) {
36250 {
36251 CodePtr OpPC = S.PC;
36252 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36253 if (!InitThisFieldActivate<PT_Float>(S, OpPC, V0)) return false;
36254 }
36255#if USE_TAILCALLS
36256 MUSTTAIL return InterpNext(S);
36257#else
36258 return true;
36259#endif
36260}
36261#endif
36262#ifdef GET_DISASM
36263case OP_InitThisFieldActivateSint8:
36264 Text.Op = PrintName("InitThisFieldActivateSint8");
36265 Text.Args.push_back(printArg<uint32_t>(PC));
36266 break;
36267case OP_InitThisFieldActivateUint8:
36268 Text.Op = PrintName("InitThisFieldActivateUint8");
36269 Text.Args.push_back(printArg<uint32_t>(PC));
36270 break;
36271case OP_InitThisFieldActivateSint16:
36272 Text.Op = PrintName("InitThisFieldActivateSint16");
36273 Text.Args.push_back(printArg<uint32_t>(PC));
36274 break;
36275case OP_InitThisFieldActivateUint16:
36276 Text.Op = PrintName("InitThisFieldActivateUint16");
36277 Text.Args.push_back(printArg<uint32_t>(PC));
36278 break;
36279case OP_InitThisFieldActivateSint32:
36280 Text.Op = PrintName("InitThisFieldActivateSint32");
36281 Text.Args.push_back(printArg<uint32_t>(PC));
36282 break;
36283case OP_InitThisFieldActivateUint32:
36284 Text.Op = PrintName("InitThisFieldActivateUint32");
36285 Text.Args.push_back(printArg<uint32_t>(PC));
36286 break;
36287case OP_InitThisFieldActivateSint64:
36288 Text.Op = PrintName("InitThisFieldActivateSint64");
36289 Text.Args.push_back(printArg<uint32_t>(PC));
36290 break;
36291case OP_InitThisFieldActivateUint64:
36292 Text.Op = PrintName("InitThisFieldActivateUint64");
36293 Text.Args.push_back(printArg<uint32_t>(PC));
36294 break;
36295case OP_InitThisFieldActivateIntAP:
36296 Text.Op = PrintName("InitThisFieldActivateIntAP");
36297 Text.Args.push_back(printArg<uint32_t>(PC));
36298 break;
36299case OP_InitThisFieldActivateIntAPS:
36300 Text.Op = PrintName("InitThisFieldActivateIntAPS");
36301 Text.Args.push_back(printArg<uint32_t>(PC));
36302 break;
36303case OP_InitThisFieldActivateBool:
36304 Text.Op = PrintName("InitThisFieldActivateBool");
36305 Text.Args.push_back(printArg<uint32_t>(PC));
36306 break;
36307case OP_InitThisFieldActivateFixedPoint:
36308 Text.Op = PrintName("InitThisFieldActivateFixedPoint");
36309 Text.Args.push_back(printArg<uint32_t>(PC));
36310 break;
36311case OP_InitThisFieldActivatePtr:
36312 Text.Op = PrintName("InitThisFieldActivatePtr");
36313 Text.Args.push_back(printArg<uint32_t>(PC));
36314 break;
36315case OP_InitThisFieldActivateMemberPtr:
36316 Text.Op = PrintName("InitThisFieldActivateMemberPtr");
36317 Text.Args.push_back(printArg<uint32_t>(PC));
36318 break;
36319case OP_InitThisFieldActivateFloat:
36320 Text.Op = PrintName("InitThisFieldActivateFloat");
36321 Text.Args.push_back(printArg<uint32_t>(PC));
36322 break;
36323#endif
36324#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36325bool emitInitThisFieldActivateSint8( uint32_t , SourceInfo);
36326bool emitInitThisFieldActivateUint8( uint32_t , SourceInfo);
36327bool emitInitThisFieldActivateSint16( uint32_t , SourceInfo);
36328bool emitInitThisFieldActivateUint16( uint32_t , SourceInfo);
36329bool emitInitThisFieldActivateSint32( uint32_t , SourceInfo);
36330bool emitInitThisFieldActivateUint32( uint32_t , SourceInfo);
36331bool emitInitThisFieldActivateSint64( uint32_t , SourceInfo);
36332bool emitInitThisFieldActivateUint64( uint32_t , SourceInfo);
36333bool emitInitThisFieldActivateIntAP( uint32_t , SourceInfo);
36334bool emitInitThisFieldActivateIntAPS( uint32_t , SourceInfo);
36335bool emitInitThisFieldActivateBool( uint32_t , SourceInfo);
36336bool emitInitThisFieldActivateFixedPoint( uint32_t , SourceInfo);
36337bool emitInitThisFieldActivatePtr( uint32_t , SourceInfo);
36338bool emitInitThisFieldActivateMemberPtr( uint32_t , SourceInfo);
36339bool emitInitThisFieldActivateFloat( uint32_t , SourceInfo);
36340#endif
36341#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36342[[nodiscard]] bool emitInitThisFieldActivate(PrimType, uint32_t, SourceInfo I);
36343#endif
36344#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
36345bool
36346#if defined(GET_EVAL_IMPL)
36347EvalEmitter
36348#else
36349ByteCodeEmitter
36350#endif
36351::emitInitThisFieldActivate(PrimType T0, uint32_t A0, SourceInfo I) {
36352 switch (T0) {
36353 case PT_Sint8:
36354 return emitInitThisFieldActivateSint8(A0, I);
36355 case PT_Uint8:
36356 return emitInitThisFieldActivateUint8(A0, I);
36357 case PT_Sint16:
36358 return emitInitThisFieldActivateSint16(A0, I);
36359 case PT_Uint16:
36360 return emitInitThisFieldActivateUint16(A0, I);
36361 case PT_Sint32:
36362 return emitInitThisFieldActivateSint32(A0, I);
36363 case PT_Uint32:
36364 return emitInitThisFieldActivateUint32(A0, I);
36365 case PT_Sint64:
36366 return emitInitThisFieldActivateSint64(A0, I);
36367 case PT_Uint64:
36368 return emitInitThisFieldActivateUint64(A0, I);
36369 case PT_IntAP:
36370 return emitInitThisFieldActivateIntAP(A0, I);
36371 case PT_IntAPS:
36372 return emitInitThisFieldActivateIntAPS(A0, I);
36373 case PT_Bool:
36374 return emitInitThisFieldActivateBool(A0, I);
36375 case PT_FixedPoint:
36376 return emitInitThisFieldActivateFixedPoint(A0, I);
36377 case PT_Ptr:
36378 return emitInitThisFieldActivatePtr(A0, I);
36379 case PT_MemberPtr:
36380 return emitInitThisFieldActivateMemberPtr(A0, I);
36381 case PT_Float:
36382 return emitInitThisFieldActivateFloat(A0, I);
36383 }
36384 llvm_unreachable("invalid enum value");
36385}
36386#endif
36387#ifdef GET_LINK_IMPL
36388bool ByteCodeEmitter::emitInitThisFieldActivateSint8( uint32_t A0, SourceInfo L) {
36389 return emitOp<uint32_t>(OP_InitThisFieldActivateSint8, A0, L);
36390}
36391bool ByteCodeEmitter::emitInitThisFieldActivateUint8( uint32_t A0, SourceInfo L) {
36392 return emitOp<uint32_t>(OP_InitThisFieldActivateUint8, A0, L);
36393}
36394bool ByteCodeEmitter::emitInitThisFieldActivateSint16( uint32_t A0, SourceInfo L) {
36395 return emitOp<uint32_t>(OP_InitThisFieldActivateSint16, A0, L);
36396}
36397bool ByteCodeEmitter::emitInitThisFieldActivateUint16( uint32_t A0, SourceInfo L) {
36398 return emitOp<uint32_t>(OP_InitThisFieldActivateUint16, A0, L);
36399}
36400bool ByteCodeEmitter::emitInitThisFieldActivateSint32( uint32_t A0, SourceInfo L) {
36401 return emitOp<uint32_t>(OP_InitThisFieldActivateSint32, A0, L);
36402}
36403bool ByteCodeEmitter::emitInitThisFieldActivateUint32( uint32_t A0, SourceInfo L) {
36404 return emitOp<uint32_t>(OP_InitThisFieldActivateUint32, A0, L);
36405}
36406bool ByteCodeEmitter::emitInitThisFieldActivateSint64( uint32_t A0, SourceInfo L) {
36407 return emitOp<uint32_t>(OP_InitThisFieldActivateSint64, A0, L);
36408}
36409bool ByteCodeEmitter::emitInitThisFieldActivateUint64( uint32_t A0, SourceInfo L) {
36410 return emitOp<uint32_t>(OP_InitThisFieldActivateUint64, A0, L);
36411}
36412bool ByteCodeEmitter::emitInitThisFieldActivateIntAP( uint32_t A0, SourceInfo L) {
36413 return emitOp<uint32_t>(OP_InitThisFieldActivateIntAP, A0, L);
36414}
36415bool ByteCodeEmitter::emitInitThisFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
36416 return emitOp<uint32_t>(OP_InitThisFieldActivateIntAPS, A0, L);
36417}
36418bool ByteCodeEmitter::emitInitThisFieldActivateBool( uint32_t A0, SourceInfo L) {
36419 return emitOp<uint32_t>(OP_InitThisFieldActivateBool, A0, L);
36420}
36421bool ByteCodeEmitter::emitInitThisFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
36422 return emitOp<uint32_t>(OP_InitThisFieldActivateFixedPoint, A0, L);
36423}
36424bool ByteCodeEmitter::emitInitThisFieldActivatePtr( uint32_t A0, SourceInfo L) {
36425 return emitOp<uint32_t>(OP_InitThisFieldActivatePtr, A0, L);
36426}
36427bool ByteCodeEmitter::emitInitThisFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
36428 return emitOp<uint32_t>(OP_InitThisFieldActivateMemberPtr, A0, L);
36429}
36430bool ByteCodeEmitter::emitInitThisFieldActivateFloat( uint32_t A0, SourceInfo L) {
36431 return emitOp<uint32_t>(OP_InitThisFieldActivateFloat, A0, L);
36432}
36433#endif
36434#ifdef GET_EVAL_IMPL
36435bool EvalEmitter::emitInitThisFieldActivateSint8( uint32_t A0, SourceInfo L) {
36436 if (!isActive()) return true;
36437 CurrentSource = L;
36438 return InitThisFieldActivate<PT_Sint8>(S, CodePtr(), A0);
36439}
36440bool EvalEmitter::emitInitThisFieldActivateUint8( uint32_t A0, SourceInfo L) {
36441 if (!isActive()) return true;
36442 CurrentSource = L;
36443 return InitThisFieldActivate<PT_Uint8>(S, CodePtr(), A0);
36444}
36445bool EvalEmitter::emitInitThisFieldActivateSint16( uint32_t A0, SourceInfo L) {
36446 if (!isActive()) return true;
36447 CurrentSource = L;
36448 return InitThisFieldActivate<PT_Sint16>(S, CodePtr(), A0);
36449}
36450bool EvalEmitter::emitInitThisFieldActivateUint16( uint32_t A0, SourceInfo L) {
36451 if (!isActive()) return true;
36452 CurrentSource = L;
36453 return InitThisFieldActivate<PT_Uint16>(S, CodePtr(), A0);
36454}
36455bool EvalEmitter::emitInitThisFieldActivateSint32( uint32_t A0, SourceInfo L) {
36456 if (!isActive()) return true;
36457 CurrentSource = L;
36458 return InitThisFieldActivate<PT_Sint32>(S, CodePtr(), A0);
36459}
36460bool EvalEmitter::emitInitThisFieldActivateUint32( uint32_t A0, SourceInfo L) {
36461 if (!isActive()) return true;
36462 CurrentSource = L;
36463 return InitThisFieldActivate<PT_Uint32>(S, CodePtr(), A0);
36464}
36465bool EvalEmitter::emitInitThisFieldActivateSint64( uint32_t A0, SourceInfo L) {
36466 if (!isActive()) return true;
36467 CurrentSource = L;
36468 return InitThisFieldActivate<PT_Sint64>(S, CodePtr(), A0);
36469}
36470bool EvalEmitter::emitInitThisFieldActivateUint64( uint32_t A0, SourceInfo L) {
36471 if (!isActive()) return true;
36472 CurrentSource = L;
36473 return InitThisFieldActivate<PT_Uint64>(S, CodePtr(), A0);
36474}
36475bool EvalEmitter::emitInitThisFieldActivateIntAP( uint32_t A0, SourceInfo L) {
36476 if (!isActive()) return true;
36477 CurrentSource = L;
36478 return InitThisFieldActivate<PT_IntAP>(S, CodePtr(), A0);
36479}
36480bool EvalEmitter::emitInitThisFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
36481 if (!isActive()) return true;
36482 CurrentSource = L;
36483 return InitThisFieldActivate<PT_IntAPS>(S, CodePtr(), A0);
36484}
36485bool EvalEmitter::emitInitThisFieldActivateBool( uint32_t A0, SourceInfo L) {
36486 if (!isActive()) return true;
36487 CurrentSource = L;
36488 return InitThisFieldActivate<PT_Bool>(S, CodePtr(), A0);
36489}
36490bool EvalEmitter::emitInitThisFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
36491 if (!isActive()) return true;
36492 CurrentSource = L;
36493 return InitThisFieldActivate<PT_FixedPoint>(S, CodePtr(), A0);
36494}
36495bool EvalEmitter::emitInitThisFieldActivatePtr( uint32_t A0, SourceInfo L) {
36496 if (!isActive()) return true;
36497 CurrentSource = L;
36498 return InitThisFieldActivate<PT_Ptr>(S, CodePtr(), A0);
36499}
36500bool EvalEmitter::emitInitThisFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
36501 if (!isActive()) return true;
36502 CurrentSource = L;
36503 return InitThisFieldActivate<PT_MemberPtr>(S, CodePtr(), A0);
36504}
36505bool EvalEmitter::emitInitThisFieldActivateFloat( uint32_t A0, SourceInfo L) {
36506 if (!isActive()) return true;
36507 CurrentSource = L;
36508 return InitThisFieldActivate<PT_Float>(S, CodePtr(), A0);
36509}
36510#endif
36511#ifdef GET_OPCODE_NAMES
36512OP_Inv,
36513#endif
36514#ifdef GET_INTERPFN_LIST
36515&Interp_Inv,
36516#endif
36517#ifdef GET_INTERPFN_DISPATCHERS
36518PRESERVE_NONE
36519static bool Interp_Inv(InterpState &S) {
36520 Inv(S);
36521#if USE_TAILCALLS
36522 MUSTTAIL return InterpNext(S);
36523#else
36524 return true;
36525#endif
36526}
36527#endif
36528#ifdef GET_DISASM
36529case OP_Inv:
36530 Text.Op = PrintName("Inv");
36531 break;
36532#endif
36533#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36534bool emitInv(SourceInfo);
36535#endif
36536#ifdef GET_LINK_IMPL
36537bool ByteCodeEmitter::emitInv(SourceInfo L) {
36538 return emitOp<>(OP_Inv, L);
36539}
36540#endif
36541#ifdef GET_EVAL_IMPL
36542bool EvalEmitter::emitInv(SourceInfo L) {
36543 if (!isActive()) return true;
36544 CurrentSource = L;
36545 return Inv(S);
36546}
36547#endif
36548#ifdef GET_OPCODE_NAMES
36549OP_Invalid,
36550#endif
36551#ifdef GET_INTERPFN_LIST
36552&Interp_Invalid,
36553#endif
36554#ifdef GET_INTERPFN_DISPATCHERS
36555PRESERVE_NONE
36556static bool Interp_Invalid(InterpState &S) {
36557 if (!Invalid(S, S.PC)) return false;
36558#if USE_TAILCALLS
36559 MUSTTAIL return InterpNext(S);
36560#else
36561 return true;
36562#endif
36563}
36564#endif
36565#ifdef GET_DISASM
36566case OP_Invalid:
36567 Text.Op = PrintName("Invalid");
36568 break;
36569#endif
36570#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36571bool emitInvalid(SourceInfo);
36572#endif
36573#ifdef GET_LINK_IMPL
36574bool ByteCodeEmitter::emitInvalid(SourceInfo L) {
36575 return emitOp<>(OP_Invalid, L);
36576}
36577#endif
36578#ifdef GET_EVAL_IMPL
36579bool EvalEmitter::emitInvalid(SourceInfo L) {
36580 if (!isActive()) return true;
36581 CurrentSource = L;
36582 return Invalid(S, CodePtr());
36583}
36584#endif
36585#ifdef GET_OPCODE_NAMES
36586OP_InvalidCast,
36587#endif
36588#ifdef GET_INTERPFN_LIST
36589&Interp_InvalidCast,
36590#endif
36591#ifdef GET_INTERPFN_DISPATCHERS
36592PRESERVE_NONE
36593static bool Interp_InvalidCast(InterpState &S) {
36594 {
36595 CodePtr OpPC = S.PC;
36596 const auto V0 = ReadArg<interp::CastKind>(S, S.PC);
36597 const auto V1 = ReadArg<bool>(S, S.PC);
36598 if (!InvalidCast(S, OpPC, V0, V1)) return false;
36599 }
36600#if USE_TAILCALLS
36601 MUSTTAIL return InterpNext(S);
36602#else
36603 return true;
36604#endif
36605}
36606#endif
36607#ifdef GET_DISASM
36608case OP_InvalidCast:
36609 Text.Op = PrintName("InvalidCast");
36610 Text.Args.push_back(printArg<interp::CastKind>(PC));
36611 Text.Args.push_back(printArg<bool>(PC));
36612 break;
36613#endif
36614#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36615bool emitInvalidCast( interp::CastKind , bool , SourceInfo);
36616#endif
36617#ifdef GET_LINK_IMPL
36618bool ByteCodeEmitter::emitInvalidCast( interp::CastKind A0, bool A1, SourceInfo L) {
36619 return emitOp<interp::CastKind, bool>(OP_InvalidCast, A0, A1, L);
36620}
36621#endif
36622#ifdef GET_EVAL_IMPL
36623bool EvalEmitter::emitInvalidCast( interp::CastKind A0, bool A1, SourceInfo L) {
36624 if (!isActive()) return true;
36625 CurrentSource = L;
36626 return InvalidCast(S, CodePtr(), A0, A1);
36627}
36628#endif
36629#ifdef GET_OPCODE_NAMES
36630OP_InvalidDeclRef,
36631#endif
36632#ifdef GET_INTERPFN_LIST
36633&Interp_InvalidDeclRef,
36634#endif
36635#ifdef GET_INTERPFN_DISPATCHERS
36636PRESERVE_NONE
36637static bool Interp_InvalidDeclRef(InterpState &S) {
36638 {
36639 CodePtr OpPC = S.PC;
36640 const auto V0 = ReadArg<const DeclRefExpr *>(S, S.PC);
36641 const auto V1 = ReadArg<bool>(S, S.PC);
36642 if (!InvalidDeclRef(S, OpPC, V0, V1)) return false;
36643 }
36644#if USE_TAILCALLS
36645 MUSTTAIL return InterpNext(S);
36646#else
36647 return true;
36648#endif
36649}
36650#endif
36651#ifdef GET_DISASM
36652case OP_InvalidDeclRef:
36653 Text.Op = PrintName("InvalidDeclRef");
36654 Text.Args.push_back(printArg<const DeclRefExpr *>(PC));
36655 Text.Args.push_back(printArg<bool>(PC));
36656 break;
36657#endif
36658#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36659bool emitInvalidDeclRef( const DeclRefExpr * , bool , SourceInfo);
36660#endif
36661#ifdef GET_LINK_IMPL
36662bool ByteCodeEmitter::emitInvalidDeclRef( const DeclRefExpr * A0, bool A1, SourceInfo L) {
36663 return emitOp<const DeclRefExpr *, bool>(OP_InvalidDeclRef, A0, A1, L);
36664}
36665#endif
36666#ifdef GET_EVAL_IMPL
36667bool EvalEmitter::emitInvalidDeclRef( const DeclRefExpr * A0, bool A1, SourceInfo L) {
36668 if (!isActive()) return true;
36669 CurrentSource = L;
36670 return InvalidDeclRef(S, CodePtr(), A0, A1);
36671}
36672#endif
36673#ifdef GET_OPCODE_NAMES
36674OP_InvalidNewDeleteExpr,
36675#endif
36676#ifdef GET_INTERPFN_LIST
36677&Interp_InvalidNewDeleteExpr,
36678#endif
36679#ifdef GET_INTERPFN_DISPATCHERS
36680PRESERVE_NONE
36681static bool Interp_InvalidNewDeleteExpr(InterpState &S) {
36682 {
36683 CodePtr OpPC = S.PC;
36684 const auto V0 = ReadArg<const Expr *>(S, S.PC);
36685 if (!InvalidNewDeleteExpr(S, OpPC, V0)) return false;
36686 }
36687#if USE_TAILCALLS
36688 MUSTTAIL return InterpNext(S);
36689#else
36690 return true;
36691#endif
36692}
36693#endif
36694#ifdef GET_DISASM
36695case OP_InvalidNewDeleteExpr:
36696 Text.Op = PrintName("InvalidNewDeleteExpr");
36697 Text.Args.push_back(printArg<const Expr *>(PC));
36698 break;
36699#endif
36700#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36701bool emitInvalidNewDeleteExpr( const Expr * , SourceInfo);
36702#endif
36703#ifdef GET_LINK_IMPL
36704bool ByteCodeEmitter::emitInvalidNewDeleteExpr( const Expr * A0, SourceInfo L) {
36705 return emitOp<const Expr *>(OP_InvalidNewDeleteExpr, A0, L);
36706}
36707#endif
36708#ifdef GET_EVAL_IMPL
36709bool EvalEmitter::emitInvalidNewDeleteExpr( const Expr * A0, SourceInfo L) {
36710 if (!isActive()) return true;
36711 CurrentSource = L;
36712 return InvalidNewDeleteExpr(S, CodePtr(), A0);
36713}
36714#endif
36715#ifdef GET_OPCODE_NAMES
36716OP_InvalidShuffleVectorIndex,
36717#endif
36718#ifdef GET_INTERPFN_LIST
36719&Interp_InvalidShuffleVectorIndex,
36720#endif
36721#ifdef GET_INTERPFN_DISPATCHERS
36722PRESERVE_NONE
36723static bool Interp_InvalidShuffleVectorIndex(InterpState &S) {
36724 {
36725 CodePtr OpPC = S.PC;
36726 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36727 if (!InvalidShuffleVectorIndex(S, OpPC, V0)) return false;
36728 }
36729#if USE_TAILCALLS
36730 MUSTTAIL return InterpNext(S);
36731#else
36732 return true;
36733#endif
36734}
36735#endif
36736#ifdef GET_DISASM
36737case OP_InvalidShuffleVectorIndex:
36738 Text.Op = PrintName("InvalidShuffleVectorIndex");
36739 Text.Args.push_back(printArg<uint32_t>(PC));
36740 break;
36741#endif
36742#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36743bool emitInvalidShuffleVectorIndex( uint32_t , SourceInfo);
36744#endif
36745#ifdef GET_LINK_IMPL
36746bool ByteCodeEmitter::emitInvalidShuffleVectorIndex( uint32_t A0, SourceInfo L) {
36747 return emitOp<uint32_t>(OP_InvalidShuffleVectorIndex, A0, L);
36748}
36749#endif
36750#ifdef GET_EVAL_IMPL
36751bool EvalEmitter::emitInvalidShuffleVectorIndex( uint32_t A0, SourceInfo L) {
36752 if (!isActive()) return true;
36753 CurrentSource = L;
36754 return InvalidShuffleVectorIndex(S, CodePtr(), A0);
36755}
36756#endif
36757#ifdef GET_OPCODE_NAMES
36758OP_InvalidStore,
36759#endif
36760#ifdef GET_INTERPFN_LIST
36761&Interp_InvalidStore,
36762#endif
36763#ifdef GET_INTERPFN_DISPATCHERS
36764PRESERVE_NONE
36765static bool Interp_InvalidStore(InterpState &S) {
36766 {
36767 CodePtr OpPC = S.PC;
36768 const auto V0 = ReadArg<const Type *>(S, S.PC);
36769 if (!InvalidStore(S, OpPC, V0)) return false;
36770 }
36771#if USE_TAILCALLS
36772 MUSTTAIL return InterpNext(S);
36773#else
36774 return true;
36775#endif
36776}
36777#endif
36778#ifdef GET_DISASM
36779case OP_InvalidStore:
36780 Text.Op = PrintName("InvalidStore");
36781 Text.Args.push_back(printArg<const Type *>(PC));
36782 break;
36783#endif
36784#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36785bool emitInvalidStore( const Type * , SourceInfo);
36786#endif
36787#ifdef GET_LINK_IMPL
36788bool ByteCodeEmitter::emitInvalidStore( const Type * A0, SourceInfo L) {
36789 return emitOp<const Type *>(OP_InvalidStore, A0, L);
36790}
36791#endif
36792#ifdef GET_EVAL_IMPL
36793bool EvalEmitter::emitInvalidStore( const Type * A0, SourceInfo L) {
36794 if (!isActive()) return true;
36795 CurrentSource = L;
36796 return InvalidStore(S, CodePtr(), A0);
36797}
36798#endif
36799#ifdef GET_OPCODE_NAMES
36800OP_IsBaseClass,
36801#endif
36802#ifdef GET_INTERPFN_LIST
36803&Interp_IsBaseClass,
36804#endif
36805#ifdef GET_INTERPFN_DISPATCHERS
36806PRESERVE_NONE
36807static bool Interp_IsBaseClass(InterpState &S) {
36808 IsBaseClass(S);
36809#if USE_TAILCALLS
36810 MUSTTAIL return InterpNext(S);
36811#else
36812 return true;
36813#endif
36814}
36815#endif
36816#ifdef GET_DISASM
36817case OP_IsBaseClass:
36818 Text.Op = PrintName("IsBaseClass");
36819 break;
36820#endif
36821#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36822bool emitIsBaseClass(SourceInfo);
36823#endif
36824#ifdef GET_LINK_IMPL
36825bool ByteCodeEmitter::emitIsBaseClass(SourceInfo L) {
36826 return emitOp<>(OP_IsBaseClass, L);
36827}
36828#endif
36829#ifdef GET_EVAL_IMPL
36830bool EvalEmitter::emitIsBaseClass(SourceInfo L) {
36831 if (!isActive()) return true;
36832 CurrentSource = L;
36833 return IsBaseClass(S);
36834}
36835#endif
36836#ifdef GET_OPCODE_NAMES
36837OP_IsConstantContext,
36838#endif
36839#ifdef GET_INTERPFN_LIST
36840&Interp_IsConstantContext,
36841#endif
36842#ifdef GET_INTERPFN_DISPATCHERS
36843PRESERVE_NONE
36844static bool Interp_IsConstantContext(InterpState &S) {
36845 IsConstantContext(S);
36846#if USE_TAILCALLS
36847 MUSTTAIL return InterpNext(S);
36848#else
36849 return true;
36850#endif
36851}
36852#endif
36853#ifdef GET_DISASM
36854case OP_IsConstantContext:
36855 Text.Op = PrintName("IsConstantContext");
36856 break;
36857#endif
36858#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36859bool emitIsConstantContext(SourceInfo);
36860#endif
36861#ifdef GET_LINK_IMPL
36862bool ByteCodeEmitter::emitIsConstantContext(SourceInfo L) {
36863 return emitOp<>(OP_IsConstantContext, L);
36864}
36865#endif
36866#ifdef GET_EVAL_IMPL
36867bool EvalEmitter::emitIsConstantContext(SourceInfo L) {
36868 if (!isActive()) return true;
36869 CurrentSource = L;
36870 return IsConstantContext(S);
36871}
36872#endif
36873#ifdef GET_OPCODE_NAMES
36874OP_IsNonNullPtr,
36875OP_IsNonNullMemberPtr,
36876#endif
36877#ifdef GET_INTERPFN_LIST
36878&Interp_IsNonNullPtr,
36879&Interp_IsNonNullMemberPtr,
36880#endif
36881#ifdef GET_INTERPFN_DISPATCHERS
36882PRESERVE_NONE
36883static bool Interp_IsNonNullPtr(InterpState &S) {
36884 if (!IsNonNull<PT_Ptr>(S)) return false;
36885#if USE_TAILCALLS
36886 MUSTTAIL return InterpNext(S);
36887#else
36888 return true;
36889#endif
36890}
36891PRESERVE_NONE
36892static bool Interp_IsNonNullMemberPtr(InterpState &S) {
36893 if (!IsNonNull<PT_MemberPtr>(S)) return false;
36894#if USE_TAILCALLS
36895 MUSTTAIL return InterpNext(S);
36896#else
36897 return true;
36898#endif
36899}
36900#endif
36901#ifdef GET_DISASM
36902case OP_IsNonNullPtr:
36903 Text.Op = PrintName("IsNonNullPtr");
36904 break;
36905case OP_IsNonNullMemberPtr:
36906 Text.Op = PrintName("IsNonNullMemberPtr");
36907 break;
36908#endif
36909#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36910bool emitIsNonNullPtr(SourceInfo);
36911bool emitIsNonNullMemberPtr(SourceInfo);
36912#endif
36913#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36914[[nodiscard]] bool emitIsNonNull(PrimType, SourceInfo I);
36915#endif
36916#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
36917bool
36918#if defined(GET_EVAL_IMPL)
36919EvalEmitter
36920#else
36921ByteCodeEmitter
36922#endif
36923::emitIsNonNull(PrimType T0, SourceInfo I) {
36924 switch (T0) {
36925 case PT_Ptr:
36926 return emitIsNonNullPtr(I);
36927 case PT_MemberPtr:
36928 return emitIsNonNullMemberPtr(I);
36929 default: llvm_unreachable("invalid type: emitIsNonNull");
36930 }
36931 llvm_unreachable("invalid enum value");
36932}
36933#endif
36934#ifdef GET_LINK_IMPL
36935bool ByteCodeEmitter::emitIsNonNullPtr(SourceInfo L) {
36936 return emitOp<>(OP_IsNonNullPtr, L);
36937}
36938bool ByteCodeEmitter::emitIsNonNullMemberPtr(SourceInfo L) {
36939 return emitOp<>(OP_IsNonNullMemberPtr, L);
36940}
36941#endif
36942#ifdef GET_EVAL_IMPL
36943bool EvalEmitter::emitIsNonNullPtr(SourceInfo L) {
36944 if (!isActive()) return true;
36945 CurrentSource = L;
36946 return IsNonNull<PT_Ptr>(S);
36947}
36948bool EvalEmitter::emitIsNonNullMemberPtr(SourceInfo L) {
36949 if (!isActive()) return true;
36950 CurrentSource = L;
36951 return IsNonNull<PT_MemberPtr>(S);
36952}
36953#endif
36954#ifdef GET_OPCODE_NAMES
36955OP_Jf,
36956#endif
36957#ifdef GET_INTERPFN_LIST
36958&Interp_Jf,
36959#endif
36960#ifdef GET_INTERPFN_DISPATCHERS
36961PRESERVE_NONE
36962static bool Interp_Jf(InterpState &S) {
36963 {
36964 CodePtr OpPC = S.PC;
36965 const auto V0 = ReadArg<int32_t>(S, S.PC);
36966 if (!Jf(S, OpPC, V0)) return false;
36967 }
36968#if USE_TAILCALLS
36969 MUSTTAIL return InterpNext(S);
36970#else
36971 return true;
36972#endif
36973}
36974#endif
36975#ifdef GET_DISASM
36976case OP_Jf:
36977 Text.Op = PrintName("Jf");
36978 Text.Args.push_back(printArg<int32_t>(PC));
36979 break;
36980#endif
36981#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36982bool emitJf( int32_t , SourceInfo);
36983#endif
36984#ifdef GET_LINK_IMPL
36985bool ByteCodeEmitter::emitJf( int32_t A0, SourceInfo L) {
36986 return emitOp<int32_t>(OP_Jf, A0, L);
36987}
36988#endif
36989#ifdef GET_OPCODE_NAMES
36990OP_Jmp,
36991#endif
36992#ifdef GET_INTERPFN_LIST
36993&Interp_Jmp,
36994#endif
36995#ifdef GET_INTERPFN_DISPATCHERS
36996PRESERVE_NONE
36997static bool Interp_Jmp(InterpState &S) {
36998 {
36999 CodePtr OpPC = S.PC;
37000 const auto V0 = ReadArg<int32_t>(S, S.PC);
37001 if (!Jmp(S, OpPC, V0)) return false;
37002 }
37003#if USE_TAILCALLS
37004 MUSTTAIL return InterpNext(S);
37005#else
37006 return true;
37007#endif
37008}
37009#endif
37010#ifdef GET_DISASM
37011case OP_Jmp:
37012 Text.Op = PrintName("Jmp");
37013 Text.Args.push_back(printArg<int32_t>(PC));
37014 break;
37015#endif
37016#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37017bool emitJmp( int32_t , SourceInfo);
37018#endif
37019#ifdef GET_LINK_IMPL
37020bool ByteCodeEmitter::emitJmp( int32_t A0, SourceInfo L) {
37021 return emitOp<int32_t>(OP_Jmp, A0, L);
37022}
37023#endif
37024#ifdef GET_OPCODE_NAMES
37025OP_Jt,
37026#endif
37027#ifdef GET_INTERPFN_LIST
37028&Interp_Jt,
37029#endif
37030#ifdef GET_INTERPFN_DISPATCHERS
37031PRESERVE_NONE
37032static bool Interp_Jt(InterpState &S) {
37033 {
37034 CodePtr OpPC = S.PC;
37035 const auto V0 = ReadArg<int32_t>(S, S.PC);
37036 if (!Jt(S, OpPC, V0)) return false;
37037 }
37038#if USE_TAILCALLS
37039 MUSTTAIL return InterpNext(S);
37040#else
37041 return true;
37042#endif
37043}
37044#endif
37045#ifdef GET_DISASM
37046case OP_Jt:
37047 Text.Op = PrintName("Jt");
37048 Text.Args.push_back(printArg<int32_t>(PC));
37049 break;
37050#endif
37051#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37052bool emitJt( int32_t , SourceInfo);
37053#endif
37054#ifdef GET_LINK_IMPL
37055bool ByteCodeEmitter::emitJt( int32_t A0, SourceInfo L) {
37056 return emitOp<int32_t>(OP_Jt, A0, L);
37057}
37058#endif
37059#ifdef GET_OPCODE_NAMES
37060OP_LESint8,
37061OP_LEUint8,
37062OP_LESint16,
37063OP_LEUint16,
37064OP_LESint32,
37065OP_LEUint32,
37066OP_LESint64,
37067OP_LEUint64,
37068OP_LEIntAP,
37069OP_LEIntAPS,
37070OP_LEBool,
37071OP_LEFixedPoint,
37072OP_LEPtr,
37073OP_LEFloat,
37074#endif
37075#ifdef GET_INTERPFN_LIST
37076&Interp_LESint8,
37077&Interp_LEUint8,
37078&Interp_LESint16,
37079&Interp_LEUint16,
37080&Interp_LESint32,
37081&Interp_LEUint32,
37082&Interp_LESint64,
37083&Interp_LEUint64,
37084&Interp_LEIntAP,
37085&Interp_LEIntAPS,
37086&Interp_LEBool,
37087&Interp_LEFixedPoint,
37088&Interp_LEPtr,
37089&Interp_LEFloat,
37090#endif
37091#ifdef GET_INTERPFN_DISPATCHERS
37092PRESERVE_NONE
37093static bool Interp_LESint8(InterpState &S) {
37094 if (!LE<PT_Sint8>(S, S.PC)) return false;
37095#if USE_TAILCALLS
37096 MUSTTAIL return InterpNext(S);
37097#else
37098 return true;
37099#endif
37100}
37101PRESERVE_NONE
37102static bool Interp_LEUint8(InterpState &S) {
37103 if (!LE<PT_Uint8>(S, S.PC)) return false;
37104#if USE_TAILCALLS
37105 MUSTTAIL return InterpNext(S);
37106#else
37107 return true;
37108#endif
37109}
37110PRESERVE_NONE
37111static bool Interp_LESint16(InterpState &S) {
37112 if (!LE<PT_Sint16>(S, S.PC)) return false;
37113#if USE_TAILCALLS
37114 MUSTTAIL return InterpNext(S);
37115#else
37116 return true;
37117#endif
37118}
37119PRESERVE_NONE
37120static bool Interp_LEUint16(InterpState &S) {
37121 if (!LE<PT_Uint16>(S, S.PC)) return false;
37122#if USE_TAILCALLS
37123 MUSTTAIL return InterpNext(S);
37124#else
37125 return true;
37126#endif
37127}
37128PRESERVE_NONE
37129static bool Interp_LESint32(InterpState &S) {
37130 if (!LE<PT_Sint32>(S, S.PC)) return false;
37131#if USE_TAILCALLS
37132 MUSTTAIL return InterpNext(S);
37133#else
37134 return true;
37135#endif
37136}
37137PRESERVE_NONE
37138static bool Interp_LEUint32(InterpState &S) {
37139 if (!LE<PT_Uint32>(S, S.PC)) return false;
37140#if USE_TAILCALLS
37141 MUSTTAIL return InterpNext(S);
37142#else
37143 return true;
37144#endif
37145}
37146PRESERVE_NONE
37147static bool Interp_LESint64(InterpState &S) {
37148 if (!LE<PT_Sint64>(S, S.PC)) return false;
37149#if USE_TAILCALLS
37150 MUSTTAIL return InterpNext(S);
37151#else
37152 return true;
37153#endif
37154}
37155PRESERVE_NONE
37156static bool Interp_LEUint64(InterpState &S) {
37157 if (!LE<PT_Uint64>(S, S.PC)) return false;
37158#if USE_TAILCALLS
37159 MUSTTAIL return InterpNext(S);
37160#else
37161 return true;
37162#endif
37163}
37164PRESERVE_NONE
37165static bool Interp_LEIntAP(InterpState &S) {
37166 if (!LE<PT_IntAP>(S, S.PC)) return false;
37167#if USE_TAILCALLS
37168 MUSTTAIL return InterpNext(S);
37169#else
37170 return true;
37171#endif
37172}
37173PRESERVE_NONE
37174static bool Interp_LEIntAPS(InterpState &S) {
37175 if (!LE<PT_IntAPS>(S, S.PC)) return false;
37176#if USE_TAILCALLS
37177 MUSTTAIL return InterpNext(S);
37178#else
37179 return true;
37180#endif
37181}
37182PRESERVE_NONE
37183static bool Interp_LEBool(InterpState &S) {
37184 if (!LE<PT_Bool>(S, S.PC)) return false;
37185#if USE_TAILCALLS
37186 MUSTTAIL return InterpNext(S);
37187#else
37188 return true;
37189#endif
37190}
37191PRESERVE_NONE
37192static bool Interp_LEFixedPoint(InterpState &S) {
37193 if (!LE<PT_FixedPoint>(S, S.PC)) return false;
37194#if USE_TAILCALLS
37195 MUSTTAIL return InterpNext(S);
37196#else
37197 return true;
37198#endif
37199}
37200PRESERVE_NONE
37201static bool Interp_LEPtr(InterpState &S) {
37202 if (!LE<PT_Ptr>(S, S.PC)) return false;
37203#if USE_TAILCALLS
37204 MUSTTAIL return InterpNext(S);
37205#else
37206 return true;
37207#endif
37208}
37209PRESERVE_NONE
37210static bool Interp_LEFloat(InterpState &S) {
37211 if (!LE<PT_Float>(S, S.PC)) return false;
37212#if USE_TAILCALLS
37213 MUSTTAIL return InterpNext(S);
37214#else
37215 return true;
37216#endif
37217}
37218#endif
37219#ifdef GET_DISASM
37220case OP_LESint8:
37221 Text.Op = PrintName("LESint8");
37222 break;
37223case OP_LEUint8:
37224 Text.Op = PrintName("LEUint8");
37225 break;
37226case OP_LESint16:
37227 Text.Op = PrintName("LESint16");
37228 break;
37229case OP_LEUint16:
37230 Text.Op = PrintName("LEUint16");
37231 break;
37232case OP_LESint32:
37233 Text.Op = PrintName("LESint32");
37234 break;
37235case OP_LEUint32:
37236 Text.Op = PrintName("LEUint32");
37237 break;
37238case OP_LESint64:
37239 Text.Op = PrintName("LESint64");
37240 break;
37241case OP_LEUint64:
37242 Text.Op = PrintName("LEUint64");
37243 break;
37244case OP_LEIntAP:
37245 Text.Op = PrintName("LEIntAP");
37246 break;
37247case OP_LEIntAPS:
37248 Text.Op = PrintName("LEIntAPS");
37249 break;
37250case OP_LEBool:
37251 Text.Op = PrintName("LEBool");
37252 break;
37253case OP_LEFixedPoint:
37254 Text.Op = PrintName("LEFixedPoint");
37255 break;
37256case OP_LEPtr:
37257 Text.Op = PrintName("LEPtr");
37258 break;
37259case OP_LEFloat:
37260 Text.Op = PrintName("LEFloat");
37261 break;
37262#endif
37263#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37264bool emitLESint8(SourceInfo);
37265bool emitLEUint8(SourceInfo);
37266bool emitLESint16(SourceInfo);
37267bool emitLEUint16(SourceInfo);
37268bool emitLESint32(SourceInfo);
37269bool emitLEUint32(SourceInfo);
37270bool emitLESint64(SourceInfo);
37271bool emitLEUint64(SourceInfo);
37272bool emitLEIntAP(SourceInfo);
37273bool emitLEIntAPS(SourceInfo);
37274bool emitLEBool(SourceInfo);
37275bool emitLEFixedPoint(SourceInfo);
37276bool emitLEPtr(SourceInfo);
37277bool emitLEFloat(SourceInfo);
37278#endif
37279#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37280[[nodiscard]] bool emitLE(PrimType, SourceInfo I);
37281#endif
37282#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
37283bool
37284#if defined(GET_EVAL_IMPL)
37285EvalEmitter
37286#else
37287ByteCodeEmitter
37288#endif
37289::emitLE(PrimType T0, SourceInfo I) {
37290 switch (T0) {
37291 case PT_Sint8:
37292 return emitLESint8(I);
37293 case PT_Uint8:
37294 return emitLEUint8(I);
37295 case PT_Sint16:
37296 return emitLESint16(I);
37297 case PT_Uint16:
37298 return emitLEUint16(I);
37299 case PT_Sint32:
37300 return emitLESint32(I);
37301 case PT_Uint32:
37302 return emitLEUint32(I);
37303 case PT_Sint64:
37304 return emitLESint64(I);
37305 case PT_Uint64:
37306 return emitLEUint64(I);
37307 case PT_IntAP:
37308 return emitLEIntAP(I);
37309 case PT_IntAPS:
37310 return emitLEIntAPS(I);
37311 case PT_Bool:
37312 return emitLEBool(I);
37313 case PT_FixedPoint:
37314 return emitLEFixedPoint(I);
37315 case PT_Ptr:
37316 return emitLEPtr(I);
37317 case PT_Float:
37318 return emitLEFloat(I);
37319 default: llvm_unreachable("invalid type: emitLE");
37320 }
37321 llvm_unreachable("invalid enum value");
37322}
37323#endif
37324#ifdef GET_LINK_IMPL
37325bool ByteCodeEmitter::emitLESint8(SourceInfo L) {
37326 return emitOp<>(OP_LESint8, L);
37327}
37328bool ByteCodeEmitter::emitLEUint8(SourceInfo L) {
37329 return emitOp<>(OP_LEUint8, L);
37330}
37331bool ByteCodeEmitter::emitLESint16(SourceInfo L) {
37332 return emitOp<>(OP_LESint16, L);
37333}
37334bool ByteCodeEmitter::emitLEUint16(SourceInfo L) {
37335 return emitOp<>(OP_LEUint16, L);
37336}
37337bool ByteCodeEmitter::emitLESint32(SourceInfo L) {
37338 return emitOp<>(OP_LESint32, L);
37339}
37340bool ByteCodeEmitter::emitLEUint32(SourceInfo L) {
37341 return emitOp<>(OP_LEUint32, L);
37342}
37343bool ByteCodeEmitter::emitLESint64(SourceInfo L) {
37344 return emitOp<>(OP_LESint64, L);
37345}
37346bool ByteCodeEmitter::emitLEUint64(SourceInfo L) {
37347 return emitOp<>(OP_LEUint64, L);
37348}
37349bool ByteCodeEmitter::emitLEIntAP(SourceInfo L) {
37350 return emitOp<>(OP_LEIntAP, L);
37351}
37352bool ByteCodeEmitter::emitLEIntAPS(SourceInfo L) {
37353 return emitOp<>(OP_LEIntAPS, L);
37354}
37355bool ByteCodeEmitter::emitLEBool(SourceInfo L) {
37356 return emitOp<>(OP_LEBool, L);
37357}
37358bool ByteCodeEmitter::emitLEFixedPoint(SourceInfo L) {
37359 return emitOp<>(OP_LEFixedPoint, L);
37360}
37361bool ByteCodeEmitter::emitLEPtr(SourceInfo L) {
37362 return emitOp<>(OP_LEPtr, L);
37363}
37364bool ByteCodeEmitter::emitLEFloat(SourceInfo L) {
37365 return emitOp<>(OP_LEFloat, L);
37366}
37367#endif
37368#ifdef GET_EVAL_IMPL
37369bool EvalEmitter::emitLESint8(SourceInfo L) {
37370 if (!isActive()) return true;
37371 CurrentSource = L;
37372 return LE<PT_Sint8>(S, CodePtr());
37373}
37374bool EvalEmitter::emitLEUint8(SourceInfo L) {
37375 if (!isActive()) return true;
37376 CurrentSource = L;
37377 return LE<PT_Uint8>(S, CodePtr());
37378}
37379bool EvalEmitter::emitLESint16(SourceInfo L) {
37380 if (!isActive()) return true;
37381 CurrentSource = L;
37382 return LE<PT_Sint16>(S, CodePtr());
37383}
37384bool EvalEmitter::emitLEUint16(SourceInfo L) {
37385 if (!isActive()) return true;
37386 CurrentSource = L;
37387 return LE<PT_Uint16>(S, CodePtr());
37388}
37389bool EvalEmitter::emitLESint32(SourceInfo L) {
37390 if (!isActive()) return true;
37391 CurrentSource = L;
37392 return LE<PT_Sint32>(S, CodePtr());
37393}
37394bool EvalEmitter::emitLEUint32(SourceInfo L) {
37395 if (!isActive()) return true;
37396 CurrentSource = L;
37397 return LE<PT_Uint32>(S, CodePtr());
37398}
37399bool EvalEmitter::emitLESint64(SourceInfo L) {
37400 if (!isActive()) return true;
37401 CurrentSource = L;
37402 return LE<PT_Sint64>(S, CodePtr());
37403}
37404bool EvalEmitter::emitLEUint64(SourceInfo L) {
37405 if (!isActive()) return true;
37406 CurrentSource = L;
37407 return LE<PT_Uint64>(S, CodePtr());
37408}
37409bool EvalEmitter::emitLEIntAP(SourceInfo L) {
37410 if (!isActive()) return true;
37411 CurrentSource = L;
37412 return LE<PT_IntAP>(S, CodePtr());
37413}
37414bool EvalEmitter::emitLEIntAPS(SourceInfo L) {
37415 if (!isActive()) return true;
37416 CurrentSource = L;
37417 return LE<PT_IntAPS>(S, CodePtr());
37418}
37419bool EvalEmitter::emitLEBool(SourceInfo L) {
37420 if (!isActive()) return true;
37421 CurrentSource = L;
37422 return LE<PT_Bool>(S, CodePtr());
37423}
37424bool EvalEmitter::emitLEFixedPoint(SourceInfo L) {
37425 if (!isActive()) return true;
37426 CurrentSource = L;
37427 return LE<PT_FixedPoint>(S, CodePtr());
37428}
37429bool EvalEmitter::emitLEPtr(SourceInfo L) {
37430 if (!isActive()) return true;
37431 CurrentSource = L;
37432 return LE<PT_Ptr>(S, CodePtr());
37433}
37434bool EvalEmitter::emitLEFloat(SourceInfo L) {
37435 if (!isActive()) return true;
37436 CurrentSource = L;
37437 return LE<PT_Float>(S, CodePtr());
37438}
37439#endif
37440#ifdef GET_OPCODE_NAMES
37441OP_LTSint8,
37442OP_LTUint8,
37443OP_LTSint16,
37444OP_LTUint16,
37445OP_LTSint32,
37446OP_LTUint32,
37447OP_LTSint64,
37448OP_LTUint64,
37449OP_LTIntAP,
37450OP_LTIntAPS,
37451OP_LTBool,
37452OP_LTFixedPoint,
37453OP_LTPtr,
37454OP_LTFloat,
37455#endif
37456#ifdef GET_INTERPFN_LIST
37457&Interp_LTSint8,
37458&Interp_LTUint8,
37459&Interp_LTSint16,
37460&Interp_LTUint16,
37461&Interp_LTSint32,
37462&Interp_LTUint32,
37463&Interp_LTSint64,
37464&Interp_LTUint64,
37465&Interp_LTIntAP,
37466&Interp_LTIntAPS,
37467&Interp_LTBool,
37468&Interp_LTFixedPoint,
37469&Interp_LTPtr,
37470&Interp_LTFloat,
37471#endif
37472#ifdef GET_INTERPFN_DISPATCHERS
37473PRESERVE_NONE
37474static bool Interp_LTSint8(InterpState &S) {
37475 if (!LT<PT_Sint8>(S, S.PC)) return false;
37476#if USE_TAILCALLS
37477 MUSTTAIL return InterpNext(S);
37478#else
37479 return true;
37480#endif
37481}
37482PRESERVE_NONE
37483static bool Interp_LTUint8(InterpState &S) {
37484 if (!LT<PT_Uint8>(S, S.PC)) return false;
37485#if USE_TAILCALLS
37486 MUSTTAIL return InterpNext(S);
37487#else
37488 return true;
37489#endif
37490}
37491PRESERVE_NONE
37492static bool Interp_LTSint16(InterpState &S) {
37493 if (!LT<PT_Sint16>(S, S.PC)) return false;
37494#if USE_TAILCALLS
37495 MUSTTAIL return InterpNext(S);
37496#else
37497 return true;
37498#endif
37499}
37500PRESERVE_NONE
37501static bool Interp_LTUint16(InterpState &S) {
37502 if (!LT<PT_Uint16>(S, S.PC)) return false;
37503#if USE_TAILCALLS
37504 MUSTTAIL return InterpNext(S);
37505#else
37506 return true;
37507#endif
37508}
37509PRESERVE_NONE
37510static bool Interp_LTSint32(InterpState &S) {
37511 if (!LT<PT_Sint32>(S, S.PC)) return false;
37512#if USE_TAILCALLS
37513 MUSTTAIL return InterpNext(S);
37514#else
37515 return true;
37516#endif
37517}
37518PRESERVE_NONE
37519static bool Interp_LTUint32(InterpState &S) {
37520 if (!LT<PT_Uint32>(S, S.PC)) return false;
37521#if USE_TAILCALLS
37522 MUSTTAIL return InterpNext(S);
37523#else
37524 return true;
37525#endif
37526}
37527PRESERVE_NONE
37528static bool Interp_LTSint64(InterpState &S) {
37529 if (!LT<PT_Sint64>(S, S.PC)) return false;
37530#if USE_TAILCALLS
37531 MUSTTAIL return InterpNext(S);
37532#else
37533 return true;
37534#endif
37535}
37536PRESERVE_NONE
37537static bool Interp_LTUint64(InterpState &S) {
37538 if (!LT<PT_Uint64>(S, S.PC)) return false;
37539#if USE_TAILCALLS
37540 MUSTTAIL return InterpNext(S);
37541#else
37542 return true;
37543#endif
37544}
37545PRESERVE_NONE
37546static bool Interp_LTIntAP(InterpState &S) {
37547 if (!LT<PT_IntAP>(S, S.PC)) return false;
37548#if USE_TAILCALLS
37549 MUSTTAIL return InterpNext(S);
37550#else
37551 return true;
37552#endif
37553}
37554PRESERVE_NONE
37555static bool Interp_LTIntAPS(InterpState &S) {
37556 if (!LT<PT_IntAPS>(S, S.PC)) return false;
37557#if USE_TAILCALLS
37558 MUSTTAIL return InterpNext(S);
37559#else
37560 return true;
37561#endif
37562}
37563PRESERVE_NONE
37564static bool Interp_LTBool(InterpState &S) {
37565 if (!LT<PT_Bool>(S, S.PC)) return false;
37566#if USE_TAILCALLS
37567 MUSTTAIL return InterpNext(S);
37568#else
37569 return true;
37570#endif
37571}
37572PRESERVE_NONE
37573static bool Interp_LTFixedPoint(InterpState &S) {
37574 if (!LT<PT_FixedPoint>(S, S.PC)) return false;
37575#if USE_TAILCALLS
37576 MUSTTAIL return InterpNext(S);
37577#else
37578 return true;
37579#endif
37580}
37581PRESERVE_NONE
37582static bool Interp_LTPtr(InterpState &S) {
37583 if (!LT<PT_Ptr>(S, S.PC)) return false;
37584#if USE_TAILCALLS
37585 MUSTTAIL return InterpNext(S);
37586#else
37587 return true;
37588#endif
37589}
37590PRESERVE_NONE
37591static bool Interp_LTFloat(InterpState &S) {
37592 if (!LT<PT_Float>(S, S.PC)) return false;
37593#if USE_TAILCALLS
37594 MUSTTAIL return InterpNext(S);
37595#else
37596 return true;
37597#endif
37598}
37599#endif
37600#ifdef GET_DISASM
37601case OP_LTSint8:
37602 Text.Op = PrintName("LTSint8");
37603 break;
37604case OP_LTUint8:
37605 Text.Op = PrintName("LTUint8");
37606 break;
37607case OP_LTSint16:
37608 Text.Op = PrintName("LTSint16");
37609 break;
37610case OP_LTUint16:
37611 Text.Op = PrintName("LTUint16");
37612 break;
37613case OP_LTSint32:
37614 Text.Op = PrintName("LTSint32");
37615 break;
37616case OP_LTUint32:
37617 Text.Op = PrintName("LTUint32");
37618 break;
37619case OP_LTSint64:
37620 Text.Op = PrintName("LTSint64");
37621 break;
37622case OP_LTUint64:
37623 Text.Op = PrintName("LTUint64");
37624 break;
37625case OP_LTIntAP:
37626 Text.Op = PrintName("LTIntAP");
37627 break;
37628case OP_LTIntAPS:
37629 Text.Op = PrintName("LTIntAPS");
37630 break;
37631case OP_LTBool:
37632 Text.Op = PrintName("LTBool");
37633 break;
37634case OP_LTFixedPoint:
37635 Text.Op = PrintName("LTFixedPoint");
37636 break;
37637case OP_LTPtr:
37638 Text.Op = PrintName("LTPtr");
37639 break;
37640case OP_LTFloat:
37641 Text.Op = PrintName("LTFloat");
37642 break;
37643#endif
37644#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37645bool emitLTSint8(SourceInfo);
37646bool emitLTUint8(SourceInfo);
37647bool emitLTSint16(SourceInfo);
37648bool emitLTUint16(SourceInfo);
37649bool emitLTSint32(SourceInfo);
37650bool emitLTUint32(SourceInfo);
37651bool emitLTSint64(SourceInfo);
37652bool emitLTUint64(SourceInfo);
37653bool emitLTIntAP(SourceInfo);
37654bool emitLTIntAPS(SourceInfo);
37655bool emitLTBool(SourceInfo);
37656bool emitLTFixedPoint(SourceInfo);
37657bool emitLTPtr(SourceInfo);
37658bool emitLTFloat(SourceInfo);
37659#endif
37660#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37661[[nodiscard]] bool emitLT(PrimType, SourceInfo I);
37662#endif
37663#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
37664bool
37665#if defined(GET_EVAL_IMPL)
37666EvalEmitter
37667#else
37668ByteCodeEmitter
37669#endif
37670::emitLT(PrimType T0, SourceInfo I) {
37671 switch (T0) {
37672 case PT_Sint8:
37673 return emitLTSint8(I);
37674 case PT_Uint8:
37675 return emitLTUint8(I);
37676 case PT_Sint16:
37677 return emitLTSint16(I);
37678 case PT_Uint16:
37679 return emitLTUint16(I);
37680 case PT_Sint32:
37681 return emitLTSint32(I);
37682 case PT_Uint32:
37683 return emitLTUint32(I);
37684 case PT_Sint64:
37685 return emitLTSint64(I);
37686 case PT_Uint64:
37687 return emitLTUint64(I);
37688 case PT_IntAP:
37689 return emitLTIntAP(I);
37690 case PT_IntAPS:
37691 return emitLTIntAPS(I);
37692 case PT_Bool:
37693 return emitLTBool(I);
37694 case PT_FixedPoint:
37695 return emitLTFixedPoint(I);
37696 case PT_Ptr:
37697 return emitLTPtr(I);
37698 case PT_Float:
37699 return emitLTFloat(I);
37700 default: llvm_unreachable("invalid type: emitLT");
37701 }
37702 llvm_unreachable("invalid enum value");
37703}
37704#endif
37705#ifdef GET_LINK_IMPL
37706bool ByteCodeEmitter::emitLTSint8(SourceInfo L) {
37707 return emitOp<>(OP_LTSint8, L);
37708}
37709bool ByteCodeEmitter::emitLTUint8(SourceInfo L) {
37710 return emitOp<>(OP_LTUint8, L);
37711}
37712bool ByteCodeEmitter::emitLTSint16(SourceInfo L) {
37713 return emitOp<>(OP_LTSint16, L);
37714}
37715bool ByteCodeEmitter::emitLTUint16(SourceInfo L) {
37716 return emitOp<>(OP_LTUint16, L);
37717}
37718bool ByteCodeEmitter::emitLTSint32(SourceInfo L) {
37719 return emitOp<>(OP_LTSint32, L);
37720}
37721bool ByteCodeEmitter::emitLTUint32(SourceInfo L) {
37722 return emitOp<>(OP_LTUint32, L);
37723}
37724bool ByteCodeEmitter::emitLTSint64(SourceInfo L) {
37725 return emitOp<>(OP_LTSint64, L);
37726}
37727bool ByteCodeEmitter::emitLTUint64(SourceInfo L) {
37728 return emitOp<>(OP_LTUint64, L);
37729}
37730bool ByteCodeEmitter::emitLTIntAP(SourceInfo L) {
37731 return emitOp<>(OP_LTIntAP, L);
37732}
37733bool ByteCodeEmitter::emitLTIntAPS(SourceInfo L) {
37734 return emitOp<>(OP_LTIntAPS, L);
37735}
37736bool ByteCodeEmitter::emitLTBool(SourceInfo L) {
37737 return emitOp<>(OP_LTBool, L);
37738}
37739bool ByteCodeEmitter::emitLTFixedPoint(SourceInfo L) {
37740 return emitOp<>(OP_LTFixedPoint, L);
37741}
37742bool ByteCodeEmitter::emitLTPtr(SourceInfo L) {
37743 return emitOp<>(OP_LTPtr, L);
37744}
37745bool ByteCodeEmitter::emitLTFloat(SourceInfo L) {
37746 return emitOp<>(OP_LTFloat, L);
37747}
37748#endif
37749#ifdef GET_EVAL_IMPL
37750bool EvalEmitter::emitLTSint8(SourceInfo L) {
37751 if (!isActive()) return true;
37752 CurrentSource = L;
37753 return LT<PT_Sint8>(S, CodePtr());
37754}
37755bool EvalEmitter::emitLTUint8(SourceInfo L) {
37756 if (!isActive()) return true;
37757 CurrentSource = L;
37758 return LT<PT_Uint8>(S, CodePtr());
37759}
37760bool EvalEmitter::emitLTSint16(SourceInfo L) {
37761 if (!isActive()) return true;
37762 CurrentSource = L;
37763 return LT<PT_Sint16>(S, CodePtr());
37764}
37765bool EvalEmitter::emitLTUint16(SourceInfo L) {
37766 if (!isActive()) return true;
37767 CurrentSource = L;
37768 return LT<PT_Uint16>(S, CodePtr());
37769}
37770bool EvalEmitter::emitLTSint32(SourceInfo L) {
37771 if (!isActive()) return true;
37772 CurrentSource = L;
37773 return LT<PT_Sint32>(S, CodePtr());
37774}
37775bool EvalEmitter::emitLTUint32(SourceInfo L) {
37776 if (!isActive()) return true;
37777 CurrentSource = L;
37778 return LT<PT_Uint32>(S, CodePtr());
37779}
37780bool EvalEmitter::emitLTSint64(SourceInfo L) {
37781 if (!isActive()) return true;
37782 CurrentSource = L;
37783 return LT<PT_Sint64>(S, CodePtr());
37784}
37785bool EvalEmitter::emitLTUint64(SourceInfo L) {
37786 if (!isActive()) return true;
37787 CurrentSource = L;
37788 return LT<PT_Uint64>(S, CodePtr());
37789}
37790bool EvalEmitter::emitLTIntAP(SourceInfo L) {
37791 if (!isActive()) return true;
37792 CurrentSource = L;
37793 return LT<PT_IntAP>(S, CodePtr());
37794}
37795bool EvalEmitter::emitLTIntAPS(SourceInfo L) {
37796 if (!isActive()) return true;
37797 CurrentSource = L;
37798 return LT<PT_IntAPS>(S, CodePtr());
37799}
37800bool EvalEmitter::emitLTBool(SourceInfo L) {
37801 if (!isActive()) return true;
37802 CurrentSource = L;
37803 return LT<PT_Bool>(S, CodePtr());
37804}
37805bool EvalEmitter::emitLTFixedPoint(SourceInfo L) {
37806 if (!isActive()) return true;
37807 CurrentSource = L;
37808 return LT<PT_FixedPoint>(S, CodePtr());
37809}
37810bool EvalEmitter::emitLTPtr(SourceInfo L) {
37811 if (!isActive()) return true;
37812 CurrentSource = L;
37813 return LT<PT_Ptr>(S, CodePtr());
37814}
37815bool EvalEmitter::emitLTFloat(SourceInfo L) {
37816 if (!isActive()) return true;
37817 CurrentSource = L;
37818 return LT<PT_Float>(S, CodePtr());
37819}
37820#endif
37821#ifdef GET_OPCODE_NAMES
37822OP_LoadSint8,
37823OP_LoadUint8,
37824OP_LoadSint16,
37825OP_LoadUint16,
37826OP_LoadSint32,
37827OP_LoadUint32,
37828OP_LoadSint64,
37829OP_LoadUint64,
37830OP_LoadIntAP,
37831OP_LoadIntAPS,
37832OP_LoadBool,
37833OP_LoadFixedPoint,
37834OP_LoadPtr,
37835OP_LoadMemberPtr,
37836OP_LoadFloat,
37837#endif
37838#ifdef GET_INTERPFN_LIST
37839&Interp_LoadSint8,
37840&Interp_LoadUint8,
37841&Interp_LoadSint16,
37842&Interp_LoadUint16,
37843&Interp_LoadSint32,
37844&Interp_LoadUint32,
37845&Interp_LoadSint64,
37846&Interp_LoadUint64,
37847&Interp_LoadIntAP,
37848&Interp_LoadIntAPS,
37849&Interp_LoadBool,
37850&Interp_LoadFixedPoint,
37851&Interp_LoadPtr,
37852&Interp_LoadMemberPtr,
37853&Interp_LoadFloat,
37854#endif
37855#ifdef GET_INTERPFN_DISPATCHERS
37856PRESERVE_NONE
37857static bool Interp_LoadSint8(InterpState &S) {
37858 if (!Load<PT_Sint8>(S, S.PC)) return false;
37859#if USE_TAILCALLS
37860 MUSTTAIL return InterpNext(S);
37861#else
37862 return true;
37863#endif
37864}
37865PRESERVE_NONE
37866static bool Interp_LoadUint8(InterpState &S) {
37867 if (!Load<PT_Uint8>(S, S.PC)) return false;
37868#if USE_TAILCALLS
37869 MUSTTAIL return InterpNext(S);
37870#else
37871 return true;
37872#endif
37873}
37874PRESERVE_NONE
37875static bool Interp_LoadSint16(InterpState &S) {
37876 if (!Load<PT_Sint16>(S, S.PC)) return false;
37877#if USE_TAILCALLS
37878 MUSTTAIL return InterpNext(S);
37879#else
37880 return true;
37881#endif
37882}
37883PRESERVE_NONE
37884static bool Interp_LoadUint16(InterpState &S) {
37885 if (!Load<PT_Uint16>(S, S.PC)) return false;
37886#if USE_TAILCALLS
37887 MUSTTAIL return InterpNext(S);
37888#else
37889 return true;
37890#endif
37891}
37892PRESERVE_NONE
37893static bool Interp_LoadSint32(InterpState &S) {
37894 if (!Load<PT_Sint32>(S, S.PC)) return false;
37895#if USE_TAILCALLS
37896 MUSTTAIL return InterpNext(S);
37897#else
37898 return true;
37899#endif
37900}
37901PRESERVE_NONE
37902static bool Interp_LoadUint32(InterpState &S) {
37903 if (!Load<PT_Uint32>(S, S.PC)) return false;
37904#if USE_TAILCALLS
37905 MUSTTAIL return InterpNext(S);
37906#else
37907 return true;
37908#endif
37909}
37910PRESERVE_NONE
37911static bool Interp_LoadSint64(InterpState &S) {
37912 if (!Load<PT_Sint64>(S, S.PC)) return false;
37913#if USE_TAILCALLS
37914 MUSTTAIL return InterpNext(S);
37915#else
37916 return true;
37917#endif
37918}
37919PRESERVE_NONE
37920static bool Interp_LoadUint64(InterpState &S) {
37921 if (!Load<PT_Uint64>(S, S.PC)) return false;
37922#if USE_TAILCALLS
37923 MUSTTAIL return InterpNext(S);
37924#else
37925 return true;
37926#endif
37927}
37928PRESERVE_NONE
37929static bool Interp_LoadIntAP(InterpState &S) {
37930 if (!Load<PT_IntAP>(S, S.PC)) return false;
37931#if USE_TAILCALLS
37932 MUSTTAIL return InterpNext(S);
37933#else
37934 return true;
37935#endif
37936}
37937PRESERVE_NONE
37938static bool Interp_LoadIntAPS(InterpState &S) {
37939 if (!Load<PT_IntAPS>(S, S.PC)) return false;
37940#if USE_TAILCALLS
37941 MUSTTAIL return InterpNext(S);
37942#else
37943 return true;
37944#endif
37945}
37946PRESERVE_NONE
37947static bool Interp_LoadBool(InterpState &S) {
37948 if (!Load<PT_Bool>(S, S.PC)) return false;
37949#if USE_TAILCALLS
37950 MUSTTAIL return InterpNext(S);
37951#else
37952 return true;
37953#endif
37954}
37955PRESERVE_NONE
37956static bool Interp_LoadFixedPoint(InterpState &S) {
37957 if (!Load<PT_FixedPoint>(S, S.PC)) return false;
37958#if USE_TAILCALLS
37959 MUSTTAIL return InterpNext(S);
37960#else
37961 return true;
37962#endif
37963}
37964PRESERVE_NONE
37965static bool Interp_LoadPtr(InterpState &S) {
37966 if (!Load<PT_Ptr>(S, S.PC)) return false;
37967#if USE_TAILCALLS
37968 MUSTTAIL return InterpNext(S);
37969#else
37970 return true;
37971#endif
37972}
37973PRESERVE_NONE
37974static bool Interp_LoadMemberPtr(InterpState &S) {
37975 if (!Load<PT_MemberPtr>(S, S.PC)) return false;
37976#if USE_TAILCALLS
37977 MUSTTAIL return InterpNext(S);
37978#else
37979 return true;
37980#endif
37981}
37982PRESERVE_NONE
37983static bool Interp_LoadFloat(InterpState &S) {
37984 if (!Load<PT_Float>(S, S.PC)) return false;
37985#if USE_TAILCALLS
37986 MUSTTAIL return InterpNext(S);
37987#else
37988 return true;
37989#endif
37990}
37991#endif
37992#ifdef GET_DISASM
37993case OP_LoadSint8:
37994 Text.Op = PrintName("LoadSint8");
37995 break;
37996case OP_LoadUint8:
37997 Text.Op = PrintName("LoadUint8");
37998 break;
37999case OP_LoadSint16:
38000 Text.Op = PrintName("LoadSint16");
38001 break;
38002case OP_LoadUint16:
38003 Text.Op = PrintName("LoadUint16");
38004 break;
38005case OP_LoadSint32:
38006 Text.Op = PrintName("LoadSint32");
38007 break;
38008case OP_LoadUint32:
38009 Text.Op = PrintName("LoadUint32");
38010 break;
38011case OP_LoadSint64:
38012 Text.Op = PrintName("LoadSint64");
38013 break;
38014case OP_LoadUint64:
38015 Text.Op = PrintName("LoadUint64");
38016 break;
38017case OP_LoadIntAP:
38018 Text.Op = PrintName("LoadIntAP");
38019 break;
38020case OP_LoadIntAPS:
38021 Text.Op = PrintName("LoadIntAPS");
38022 break;
38023case OP_LoadBool:
38024 Text.Op = PrintName("LoadBool");
38025 break;
38026case OP_LoadFixedPoint:
38027 Text.Op = PrintName("LoadFixedPoint");
38028 break;
38029case OP_LoadPtr:
38030 Text.Op = PrintName("LoadPtr");
38031 break;
38032case OP_LoadMemberPtr:
38033 Text.Op = PrintName("LoadMemberPtr");
38034 break;
38035case OP_LoadFloat:
38036 Text.Op = PrintName("LoadFloat");
38037 break;
38038#endif
38039#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38040bool emitLoadSint8(SourceInfo);
38041bool emitLoadUint8(SourceInfo);
38042bool emitLoadSint16(SourceInfo);
38043bool emitLoadUint16(SourceInfo);
38044bool emitLoadSint32(SourceInfo);
38045bool emitLoadUint32(SourceInfo);
38046bool emitLoadSint64(SourceInfo);
38047bool emitLoadUint64(SourceInfo);
38048bool emitLoadIntAP(SourceInfo);
38049bool emitLoadIntAPS(SourceInfo);
38050bool emitLoadBool(SourceInfo);
38051bool emitLoadFixedPoint(SourceInfo);
38052bool emitLoadPtr(SourceInfo);
38053bool emitLoadMemberPtr(SourceInfo);
38054bool emitLoadFloat(SourceInfo);
38055#endif
38056#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38057[[nodiscard]] bool emitLoad(PrimType, SourceInfo I);
38058#endif
38059#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
38060bool
38061#if defined(GET_EVAL_IMPL)
38062EvalEmitter
38063#else
38064ByteCodeEmitter
38065#endif
38066::emitLoad(PrimType T0, SourceInfo I) {
38067 switch (T0) {
38068 case PT_Sint8:
38069 return emitLoadSint8(I);
38070 case PT_Uint8:
38071 return emitLoadUint8(I);
38072 case PT_Sint16:
38073 return emitLoadSint16(I);
38074 case PT_Uint16:
38075 return emitLoadUint16(I);
38076 case PT_Sint32:
38077 return emitLoadSint32(I);
38078 case PT_Uint32:
38079 return emitLoadUint32(I);
38080 case PT_Sint64:
38081 return emitLoadSint64(I);
38082 case PT_Uint64:
38083 return emitLoadUint64(I);
38084 case PT_IntAP:
38085 return emitLoadIntAP(I);
38086 case PT_IntAPS:
38087 return emitLoadIntAPS(I);
38088 case PT_Bool:
38089 return emitLoadBool(I);
38090 case PT_FixedPoint:
38091 return emitLoadFixedPoint(I);
38092 case PT_Ptr:
38093 return emitLoadPtr(I);
38094 case PT_MemberPtr:
38095 return emitLoadMemberPtr(I);
38096 case PT_Float:
38097 return emitLoadFloat(I);
38098 }
38099 llvm_unreachable("invalid enum value");
38100}
38101#endif
38102#ifdef GET_LINK_IMPL
38103bool ByteCodeEmitter::emitLoadSint8(SourceInfo L) {
38104 return emitOp<>(OP_LoadSint8, L);
38105}
38106bool ByteCodeEmitter::emitLoadUint8(SourceInfo L) {
38107 return emitOp<>(OP_LoadUint8, L);
38108}
38109bool ByteCodeEmitter::emitLoadSint16(SourceInfo L) {
38110 return emitOp<>(OP_LoadSint16, L);
38111}
38112bool ByteCodeEmitter::emitLoadUint16(SourceInfo L) {
38113 return emitOp<>(OP_LoadUint16, L);
38114}
38115bool ByteCodeEmitter::emitLoadSint32(SourceInfo L) {
38116 return emitOp<>(OP_LoadSint32, L);
38117}
38118bool ByteCodeEmitter::emitLoadUint32(SourceInfo L) {
38119 return emitOp<>(OP_LoadUint32, L);
38120}
38121bool ByteCodeEmitter::emitLoadSint64(SourceInfo L) {
38122 return emitOp<>(OP_LoadSint64, L);
38123}
38124bool ByteCodeEmitter::emitLoadUint64(SourceInfo L) {
38125 return emitOp<>(OP_LoadUint64, L);
38126}
38127bool ByteCodeEmitter::emitLoadIntAP(SourceInfo L) {
38128 return emitOp<>(OP_LoadIntAP, L);
38129}
38130bool ByteCodeEmitter::emitLoadIntAPS(SourceInfo L) {
38131 return emitOp<>(OP_LoadIntAPS, L);
38132}
38133bool ByteCodeEmitter::emitLoadBool(SourceInfo L) {
38134 return emitOp<>(OP_LoadBool, L);
38135}
38136bool ByteCodeEmitter::emitLoadFixedPoint(SourceInfo L) {
38137 return emitOp<>(OP_LoadFixedPoint, L);
38138}
38139bool ByteCodeEmitter::emitLoadPtr(SourceInfo L) {
38140 return emitOp<>(OP_LoadPtr, L);
38141}
38142bool ByteCodeEmitter::emitLoadMemberPtr(SourceInfo L) {
38143 return emitOp<>(OP_LoadMemberPtr, L);
38144}
38145bool ByteCodeEmitter::emitLoadFloat(SourceInfo L) {
38146 return emitOp<>(OP_LoadFloat, L);
38147}
38148#endif
38149#ifdef GET_EVAL_IMPL
38150bool EvalEmitter::emitLoadSint8(SourceInfo L) {
38151 if (!isActive()) return true;
38152 CurrentSource = L;
38153 return Load<PT_Sint8>(S, CodePtr());
38154}
38155bool EvalEmitter::emitLoadUint8(SourceInfo L) {
38156 if (!isActive()) return true;
38157 CurrentSource = L;
38158 return Load<PT_Uint8>(S, CodePtr());
38159}
38160bool EvalEmitter::emitLoadSint16(SourceInfo L) {
38161 if (!isActive()) return true;
38162 CurrentSource = L;
38163 return Load<PT_Sint16>(S, CodePtr());
38164}
38165bool EvalEmitter::emitLoadUint16(SourceInfo L) {
38166 if (!isActive()) return true;
38167 CurrentSource = L;
38168 return Load<PT_Uint16>(S, CodePtr());
38169}
38170bool EvalEmitter::emitLoadSint32(SourceInfo L) {
38171 if (!isActive()) return true;
38172 CurrentSource = L;
38173 return Load<PT_Sint32>(S, CodePtr());
38174}
38175bool EvalEmitter::emitLoadUint32(SourceInfo L) {
38176 if (!isActive()) return true;
38177 CurrentSource = L;
38178 return Load<PT_Uint32>(S, CodePtr());
38179}
38180bool EvalEmitter::emitLoadSint64(SourceInfo L) {
38181 if (!isActive()) return true;
38182 CurrentSource = L;
38183 return Load<PT_Sint64>(S, CodePtr());
38184}
38185bool EvalEmitter::emitLoadUint64(SourceInfo L) {
38186 if (!isActive()) return true;
38187 CurrentSource = L;
38188 return Load<PT_Uint64>(S, CodePtr());
38189}
38190bool EvalEmitter::emitLoadIntAP(SourceInfo L) {
38191 if (!isActive()) return true;
38192 CurrentSource = L;
38193 return Load<PT_IntAP>(S, CodePtr());
38194}
38195bool EvalEmitter::emitLoadIntAPS(SourceInfo L) {
38196 if (!isActive()) return true;
38197 CurrentSource = L;
38198 return Load<PT_IntAPS>(S, CodePtr());
38199}
38200bool EvalEmitter::emitLoadBool(SourceInfo L) {
38201 if (!isActive()) return true;
38202 CurrentSource = L;
38203 return Load<PT_Bool>(S, CodePtr());
38204}
38205bool EvalEmitter::emitLoadFixedPoint(SourceInfo L) {
38206 if (!isActive()) return true;
38207 CurrentSource = L;
38208 return Load<PT_FixedPoint>(S, CodePtr());
38209}
38210bool EvalEmitter::emitLoadPtr(SourceInfo L) {
38211 if (!isActive()) return true;
38212 CurrentSource = L;
38213 return Load<PT_Ptr>(S, CodePtr());
38214}
38215bool EvalEmitter::emitLoadMemberPtr(SourceInfo L) {
38216 if (!isActive()) return true;
38217 CurrentSource = L;
38218 return Load<PT_MemberPtr>(S, CodePtr());
38219}
38220bool EvalEmitter::emitLoadFloat(SourceInfo L) {
38221 if (!isActive()) return true;
38222 CurrentSource = L;
38223 return Load<PT_Float>(S, CodePtr());
38224}
38225#endif
38226#ifdef GET_OPCODE_NAMES
38227OP_LoadPopSint8,
38228OP_LoadPopUint8,
38229OP_LoadPopSint16,
38230OP_LoadPopUint16,
38231OP_LoadPopSint32,
38232OP_LoadPopUint32,
38233OP_LoadPopSint64,
38234OP_LoadPopUint64,
38235OP_LoadPopIntAP,
38236OP_LoadPopIntAPS,
38237OP_LoadPopBool,
38238OP_LoadPopFixedPoint,
38239OP_LoadPopPtr,
38240OP_LoadPopMemberPtr,
38241OP_LoadPopFloat,
38242#endif
38243#ifdef GET_INTERPFN_LIST
38244&Interp_LoadPopSint8,
38245&Interp_LoadPopUint8,
38246&Interp_LoadPopSint16,
38247&Interp_LoadPopUint16,
38248&Interp_LoadPopSint32,
38249&Interp_LoadPopUint32,
38250&Interp_LoadPopSint64,
38251&Interp_LoadPopUint64,
38252&Interp_LoadPopIntAP,
38253&Interp_LoadPopIntAPS,
38254&Interp_LoadPopBool,
38255&Interp_LoadPopFixedPoint,
38256&Interp_LoadPopPtr,
38257&Interp_LoadPopMemberPtr,
38258&Interp_LoadPopFloat,
38259#endif
38260#ifdef GET_INTERPFN_DISPATCHERS
38261PRESERVE_NONE
38262static bool Interp_LoadPopSint8(InterpState &S) {
38263 if (!LoadPop<PT_Sint8>(S, S.PC)) return false;
38264#if USE_TAILCALLS
38265 MUSTTAIL return InterpNext(S);
38266#else
38267 return true;
38268#endif
38269}
38270PRESERVE_NONE
38271static bool Interp_LoadPopUint8(InterpState &S) {
38272 if (!LoadPop<PT_Uint8>(S, S.PC)) return false;
38273#if USE_TAILCALLS
38274 MUSTTAIL return InterpNext(S);
38275#else
38276 return true;
38277#endif
38278}
38279PRESERVE_NONE
38280static bool Interp_LoadPopSint16(InterpState &S) {
38281 if (!LoadPop<PT_Sint16>(S, S.PC)) return false;
38282#if USE_TAILCALLS
38283 MUSTTAIL return InterpNext(S);
38284#else
38285 return true;
38286#endif
38287}
38288PRESERVE_NONE
38289static bool Interp_LoadPopUint16(InterpState &S) {
38290 if (!LoadPop<PT_Uint16>(S, S.PC)) return false;
38291#if USE_TAILCALLS
38292 MUSTTAIL return InterpNext(S);
38293#else
38294 return true;
38295#endif
38296}
38297PRESERVE_NONE
38298static bool Interp_LoadPopSint32(InterpState &S) {
38299 if (!LoadPop<PT_Sint32>(S, S.PC)) return false;
38300#if USE_TAILCALLS
38301 MUSTTAIL return InterpNext(S);
38302#else
38303 return true;
38304#endif
38305}
38306PRESERVE_NONE
38307static bool Interp_LoadPopUint32(InterpState &S) {
38308 if (!LoadPop<PT_Uint32>(S, S.PC)) return false;
38309#if USE_TAILCALLS
38310 MUSTTAIL return InterpNext(S);
38311#else
38312 return true;
38313#endif
38314}
38315PRESERVE_NONE
38316static bool Interp_LoadPopSint64(InterpState &S) {
38317 if (!LoadPop<PT_Sint64>(S, S.PC)) return false;
38318#if USE_TAILCALLS
38319 MUSTTAIL return InterpNext(S);
38320#else
38321 return true;
38322#endif
38323}
38324PRESERVE_NONE
38325static bool Interp_LoadPopUint64(InterpState &S) {
38326 if (!LoadPop<PT_Uint64>(S, S.PC)) return false;
38327#if USE_TAILCALLS
38328 MUSTTAIL return InterpNext(S);
38329#else
38330 return true;
38331#endif
38332}
38333PRESERVE_NONE
38334static bool Interp_LoadPopIntAP(InterpState &S) {
38335 if (!LoadPop<PT_IntAP>(S, S.PC)) return false;
38336#if USE_TAILCALLS
38337 MUSTTAIL return InterpNext(S);
38338#else
38339 return true;
38340#endif
38341}
38342PRESERVE_NONE
38343static bool Interp_LoadPopIntAPS(InterpState &S) {
38344 if (!LoadPop<PT_IntAPS>(S, S.PC)) return false;
38345#if USE_TAILCALLS
38346 MUSTTAIL return InterpNext(S);
38347#else
38348 return true;
38349#endif
38350}
38351PRESERVE_NONE
38352static bool Interp_LoadPopBool(InterpState &S) {
38353 if (!LoadPop<PT_Bool>(S, S.PC)) return false;
38354#if USE_TAILCALLS
38355 MUSTTAIL return InterpNext(S);
38356#else
38357 return true;
38358#endif
38359}
38360PRESERVE_NONE
38361static bool Interp_LoadPopFixedPoint(InterpState &S) {
38362 if (!LoadPop<PT_FixedPoint>(S, S.PC)) return false;
38363#if USE_TAILCALLS
38364 MUSTTAIL return InterpNext(S);
38365#else
38366 return true;
38367#endif
38368}
38369PRESERVE_NONE
38370static bool Interp_LoadPopPtr(InterpState &S) {
38371 if (!LoadPop<PT_Ptr>(S, S.PC)) return false;
38372#if USE_TAILCALLS
38373 MUSTTAIL return InterpNext(S);
38374#else
38375 return true;
38376#endif
38377}
38378PRESERVE_NONE
38379static bool Interp_LoadPopMemberPtr(InterpState &S) {
38380 if (!LoadPop<PT_MemberPtr>(S, S.PC)) return false;
38381#if USE_TAILCALLS
38382 MUSTTAIL return InterpNext(S);
38383#else
38384 return true;
38385#endif
38386}
38387PRESERVE_NONE
38388static bool Interp_LoadPopFloat(InterpState &S) {
38389 if (!LoadPop<PT_Float>(S, S.PC)) return false;
38390#if USE_TAILCALLS
38391 MUSTTAIL return InterpNext(S);
38392#else
38393 return true;
38394#endif
38395}
38396#endif
38397#ifdef GET_DISASM
38398case OP_LoadPopSint8:
38399 Text.Op = PrintName("LoadPopSint8");
38400 break;
38401case OP_LoadPopUint8:
38402 Text.Op = PrintName("LoadPopUint8");
38403 break;
38404case OP_LoadPopSint16:
38405 Text.Op = PrintName("LoadPopSint16");
38406 break;
38407case OP_LoadPopUint16:
38408 Text.Op = PrintName("LoadPopUint16");
38409 break;
38410case OP_LoadPopSint32:
38411 Text.Op = PrintName("LoadPopSint32");
38412 break;
38413case OP_LoadPopUint32:
38414 Text.Op = PrintName("LoadPopUint32");
38415 break;
38416case OP_LoadPopSint64:
38417 Text.Op = PrintName("LoadPopSint64");
38418 break;
38419case OP_LoadPopUint64:
38420 Text.Op = PrintName("LoadPopUint64");
38421 break;
38422case OP_LoadPopIntAP:
38423 Text.Op = PrintName("LoadPopIntAP");
38424 break;
38425case OP_LoadPopIntAPS:
38426 Text.Op = PrintName("LoadPopIntAPS");
38427 break;
38428case OP_LoadPopBool:
38429 Text.Op = PrintName("LoadPopBool");
38430 break;
38431case OP_LoadPopFixedPoint:
38432 Text.Op = PrintName("LoadPopFixedPoint");
38433 break;
38434case OP_LoadPopPtr:
38435 Text.Op = PrintName("LoadPopPtr");
38436 break;
38437case OP_LoadPopMemberPtr:
38438 Text.Op = PrintName("LoadPopMemberPtr");
38439 break;
38440case OP_LoadPopFloat:
38441 Text.Op = PrintName("LoadPopFloat");
38442 break;
38443#endif
38444#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38445bool emitLoadPopSint8(SourceInfo);
38446bool emitLoadPopUint8(SourceInfo);
38447bool emitLoadPopSint16(SourceInfo);
38448bool emitLoadPopUint16(SourceInfo);
38449bool emitLoadPopSint32(SourceInfo);
38450bool emitLoadPopUint32(SourceInfo);
38451bool emitLoadPopSint64(SourceInfo);
38452bool emitLoadPopUint64(SourceInfo);
38453bool emitLoadPopIntAP(SourceInfo);
38454bool emitLoadPopIntAPS(SourceInfo);
38455bool emitLoadPopBool(SourceInfo);
38456bool emitLoadPopFixedPoint(SourceInfo);
38457bool emitLoadPopPtr(SourceInfo);
38458bool emitLoadPopMemberPtr(SourceInfo);
38459bool emitLoadPopFloat(SourceInfo);
38460#endif
38461#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38462[[nodiscard]] bool emitLoadPop(PrimType, SourceInfo I);
38463#endif
38464#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
38465bool
38466#if defined(GET_EVAL_IMPL)
38467EvalEmitter
38468#else
38469ByteCodeEmitter
38470#endif
38471::emitLoadPop(PrimType T0, SourceInfo I) {
38472 switch (T0) {
38473 case PT_Sint8:
38474 return emitLoadPopSint8(I);
38475 case PT_Uint8:
38476 return emitLoadPopUint8(I);
38477 case PT_Sint16:
38478 return emitLoadPopSint16(I);
38479 case PT_Uint16:
38480 return emitLoadPopUint16(I);
38481 case PT_Sint32:
38482 return emitLoadPopSint32(I);
38483 case PT_Uint32:
38484 return emitLoadPopUint32(I);
38485 case PT_Sint64:
38486 return emitLoadPopSint64(I);
38487 case PT_Uint64:
38488 return emitLoadPopUint64(I);
38489 case PT_IntAP:
38490 return emitLoadPopIntAP(I);
38491 case PT_IntAPS:
38492 return emitLoadPopIntAPS(I);
38493 case PT_Bool:
38494 return emitLoadPopBool(I);
38495 case PT_FixedPoint:
38496 return emitLoadPopFixedPoint(I);
38497 case PT_Ptr:
38498 return emitLoadPopPtr(I);
38499 case PT_MemberPtr:
38500 return emitLoadPopMemberPtr(I);
38501 case PT_Float:
38502 return emitLoadPopFloat(I);
38503 }
38504 llvm_unreachable("invalid enum value");
38505}
38506#endif
38507#ifdef GET_LINK_IMPL
38508bool ByteCodeEmitter::emitLoadPopSint8(SourceInfo L) {
38509 return emitOp<>(OP_LoadPopSint8, L);
38510}
38511bool ByteCodeEmitter::emitLoadPopUint8(SourceInfo L) {
38512 return emitOp<>(OP_LoadPopUint8, L);
38513}
38514bool ByteCodeEmitter::emitLoadPopSint16(SourceInfo L) {
38515 return emitOp<>(OP_LoadPopSint16, L);
38516}
38517bool ByteCodeEmitter::emitLoadPopUint16(SourceInfo L) {
38518 return emitOp<>(OP_LoadPopUint16, L);
38519}
38520bool ByteCodeEmitter::emitLoadPopSint32(SourceInfo L) {
38521 return emitOp<>(OP_LoadPopSint32, L);
38522}
38523bool ByteCodeEmitter::emitLoadPopUint32(SourceInfo L) {
38524 return emitOp<>(OP_LoadPopUint32, L);
38525}
38526bool ByteCodeEmitter::emitLoadPopSint64(SourceInfo L) {
38527 return emitOp<>(OP_LoadPopSint64, L);
38528}
38529bool ByteCodeEmitter::emitLoadPopUint64(SourceInfo L) {
38530 return emitOp<>(OP_LoadPopUint64, L);
38531}
38532bool ByteCodeEmitter::emitLoadPopIntAP(SourceInfo L) {
38533 return emitOp<>(OP_LoadPopIntAP, L);
38534}
38535bool ByteCodeEmitter::emitLoadPopIntAPS(SourceInfo L) {
38536 return emitOp<>(OP_LoadPopIntAPS, L);
38537}
38538bool ByteCodeEmitter::emitLoadPopBool(SourceInfo L) {
38539 return emitOp<>(OP_LoadPopBool, L);
38540}
38541bool ByteCodeEmitter::emitLoadPopFixedPoint(SourceInfo L) {
38542 return emitOp<>(OP_LoadPopFixedPoint, L);
38543}
38544bool ByteCodeEmitter::emitLoadPopPtr(SourceInfo L) {
38545 return emitOp<>(OP_LoadPopPtr, L);
38546}
38547bool ByteCodeEmitter::emitLoadPopMemberPtr(SourceInfo L) {
38548 return emitOp<>(OP_LoadPopMemberPtr, L);
38549}
38550bool ByteCodeEmitter::emitLoadPopFloat(SourceInfo L) {
38551 return emitOp<>(OP_LoadPopFloat, L);
38552}
38553#endif
38554#ifdef GET_EVAL_IMPL
38555bool EvalEmitter::emitLoadPopSint8(SourceInfo L) {
38556 if (!isActive()) return true;
38557 CurrentSource = L;
38558 return LoadPop<PT_Sint8>(S, CodePtr());
38559}
38560bool EvalEmitter::emitLoadPopUint8(SourceInfo L) {
38561 if (!isActive()) return true;
38562 CurrentSource = L;
38563 return LoadPop<PT_Uint8>(S, CodePtr());
38564}
38565bool EvalEmitter::emitLoadPopSint16(SourceInfo L) {
38566 if (!isActive()) return true;
38567 CurrentSource = L;
38568 return LoadPop<PT_Sint16>(S, CodePtr());
38569}
38570bool EvalEmitter::emitLoadPopUint16(SourceInfo L) {
38571 if (!isActive()) return true;
38572 CurrentSource = L;
38573 return LoadPop<PT_Uint16>(S, CodePtr());
38574}
38575bool EvalEmitter::emitLoadPopSint32(SourceInfo L) {
38576 if (!isActive()) return true;
38577 CurrentSource = L;
38578 return LoadPop<PT_Sint32>(S, CodePtr());
38579}
38580bool EvalEmitter::emitLoadPopUint32(SourceInfo L) {
38581 if (!isActive()) return true;
38582 CurrentSource = L;
38583 return LoadPop<PT_Uint32>(S, CodePtr());
38584}
38585bool EvalEmitter::emitLoadPopSint64(SourceInfo L) {
38586 if (!isActive()) return true;
38587 CurrentSource = L;
38588 return LoadPop<PT_Sint64>(S, CodePtr());
38589}
38590bool EvalEmitter::emitLoadPopUint64(SourceInfo L) {
38591 if (!isActive()) return true;
38592 CurrentSource = L;
38593 return LoadPop<PT_Uint64>(S, CodePtr());
38594}
38595bool EvalEmitter::emitLoadPopIntAP(SourceInfo L) {
38596 if (!isActive()) return true;
38597 CurrentSource = L;
38598 return LoadPop<PT_IntAP>(S, CodePtr());
38599}
38600bool EvalEmitter::emitLoadPopIntAPS(SourceInfo L) {
38601 if (!isActive()) return true;
38602 CurrentSource = L;
38603 return LoadPop<PT_IntAPS>(S, CodePtr());
38604}
38605bool EvalEmitter::emitLoadPopBool(SourceInfo L) {
38606 if (!isActive()) return true;
38607 CurrentSource = L;
38608 return LoadPop<PT_Bool>(S, CodePtr());
38609}
38610bool EvalEmitter::emitLoadPopFixedPoint(SourceInfo L) {
38611 if (!isActive()) return true;
38612 CurrentSource = L;
38613 return LoadPop<PT_FixedPoint>(S, CodePtr());
38614}
38615bool EvalEmitter::emitLoadPopPtr(SourceInfo L) {
38616 if (!isActive()) return true;
38617 CurrentSource = L;
38618 return LoadPop<PT_Ptr>(S, CodePtr());
38619}
38620bool EvalEmitter::emitLoadPopMemberPtr(SourceInfo L) {
38621 if (!isActive()) return true;
38622 CurrentSource = L;
38623 return LoadPop<PT_MemberPtr>(S, CodePtr());
38624}
38625bool EvalEmitter::emitLoadPopFloat(SourceInfo L) {
38626 if (!isActive()) return true;
38627 CurrentSource = L;
38628 return LoadPop<PT_Float>(S, CodePtr());
38629}
38630#endif
38631#ifdef GET_OPCODE_NAMES
38632OP_MarkDestroyed,
38633#endif
38634#ifdef GET_INTERPFN_LIST
38635&Interp_MarkDestroyed,
38636#endif
38637#ifdef GET_INTERPFN_DISPATCHERS
38638PRESERVE_NONE
38639static bool Interp_MarkDestroyed(InterpState &S) {
38640 if (!MarkDestroyed(S, S.PC)) return false;
38641#if USE_TAILCALLS
38642 MUSTTAIL return InterpNext(S);
38643#else
38644 return true;
38645#endif
38646}
38647#endif
38648#ifdef GET_DISASM
38649case OP_MarkDestroyed:
38650 Text.Op = PrintName("MarkDestroyed");
38651 break;
38652#endif
38653#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38654bool emitMarkDestroyed(SourceInfo);
38655#endif
38656#ifdef GET_LINK_IMPL
38657bool ByteCodeEmitter::emitMarkDestroyed(SourceInfo L) {
38658 return emitOp<>(OP_MarkDestroyed, L);
38659}
38660#endif
38661#ifdef GET_EVAL_IMPL
38662bool EvalEmitter::emitMarkDestroyed(SourceInfo L) {
38663 if (!isActive()) return true;
38664 CurrentSource = L;
38665 return MarkDestroyed(S, CodePtr());
38666}
38667#endif
38668#ifdef GET_OPCODE_NAMES
38669OP_Memcpy,
38670#endif
38671#ifdef GET_INTERPFN_LIST
38672&Interp_Memcpy,
38673#endif
38674#ifdef GET_INTERPFN_DISPATCHERS
38675PRESERVE_NONE
38676static bool Interp_Memcpy(InterpState &S) {
38677 if (!Memcpy(S, S.PC)) return false;
38678#if USE_TAILCALLS
38679 MUSTTAIL return InterpNext(S);
38680#else
38681 return true;
38682#endif
38683}
38684#endif
38685#ifdef GET_DISASM
38686case OP_Memcpy:
38687 Text.Op = PrintName("Memcpy");
38688 break;
38689#endif
38690#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38691bool emitMemcpy(SourceInfo);
38692#endif
38693#ifdef GET_LINK_IMPL
38694bool ByteCodeEmitter::emitMemcpy(SourceInfo L) {
38695 return emitOp<>(OP_Memcpy, L);
38696}
38697#endif
38698#ifdef GET_EVAL_IMPL
38699bool EvalEmitter::emitMemcpy(SourceInfo L) {
38700 if (!isActive()) return true;
38701 CurrentSource = L;
38702 return Memcpy(S, CodePtr());
38703}
38704#endif
38705#ifdef GET_OPCODE_NAMES
38706OP_MulSint8,
38707OP_MulUint8,
38708OP_MulSint16,
38709OP_MulUint16,
38710OP_MulSint32,
38711OP_MulUint32,
38712OP_MulSint64,
38713OP_MulUint64,
38714OP_MulIntAP,
38715OP_MulIntAPS,
38716OP_MulBool,
38717OP_MulFixedPoint,
38718#endif
38719#ifdef GET_INTERPFN_LIST
38720&Interp_MulSint8,
38721&Interp_MulUint8,
38722&Interp_MulSint16,
38723&Interp_MulUint16,
38724&Interp_MulSint32,
38725&Interp_MulUint32,
38726&Interp_MulSint64,
38727&Interp_MulUint64,
38728&Interp_MulIntAP,
38729&Interp_MulIntAPS,
38730&Interp_MulBool,
38731&Interp_MulFixedPoint,
38732#endif
38733#ifdef GET_INTERPFN_DISPATCHERS
38734PRESERVE_NONE
38735static bool Interp_MulSint8(InterpState &S) {
38736 if (!Mul<PT_Sint8>(S, S.PC)) return false;
38737#if USE_TAILCALLS
38738 MUSTTAIL return InterpNext(S);
38739#else
38740 return true;
38741#endif
38742}
38743PRESERVE_NONE
38744static bool Interp_MulUint8(InterpState &S) {
38745 if (!Mul<PT_Uint8>(S, S.PC)) return false;
38746#if USE_TAILCALLS
38747 MUSTTAIL return InterpNext(S);
38748#else
38749 return true;
38750#endif
38751}
38752PRESERVE_NONE
38753static bool Interp_MulSint16(InterpState &S) {
38754 if (!Mul<PT_Sint16>(S, S.PC)) return false;
38755#if USE_TAILCALLS
38756 MUSTTAIL return InterpNext(S);
38757#else
38758 return true;
38759#endif
38760}
38761PRESERVE_NONE
38762static bool Interp_MulUint16(InterpState &S) {
38763 if (!Mul<PT_Uint16>(S, S.PC)) return false;
38764#if USE_TAILCALLS
38765 MUSTTAIL return InterpNext(S);
38766#else
38767 return true;
38768#endif
38769}
38770PRESERVE_NONE
38771static bool Interp_MulSint32(InterpState &S) {
38772 if (!Mul<PT_Sint32>(S, S.PC)) return false;
38773#if USE_TAILCALLS
38774 MUSTTAIL return InterpNext(S);
38775#else
38776 return true;
38777#endif
38778}
38779PRESERVE_NONE
38780static bool Interp_MulUint32(InterpState &S) {
38781 if (!Mul<PT_Uint32>(S, S.PC)) return false;
38782#if USE_TAILCALLS
38783 MUSTTAIL return InterpNext(S);
38784#else
38785 return true;
38786#endif
38787}
38788PRESERVE_NONE
38789static bool Interp_MulSint64(InterpState &S) {
38790 if (!Mul<PT_Sint64>(S, S.PC)) return false;
38791#if USE_TAILCALLS
38792 MUSTTAIL return InterpNext(S);
38793#else
38794 return true;
38795#endif
38796}
38797PRESERVE_NONE
38798static bool Interp_MulUint64(InterpState &S) {
38799 if (!Mul<PT_Uint64>(S, S.PC)) return false;
38800#if USE_TAILCALLS
38801 MUSTTAIL return InterpNext(S);
38802#else
38803 return true;
38804#endif
38805}
38806PRESERVE_NONE
38807static bool Interp_MulIntAP(InterpState &S) {
38808 if (!Mul<PT_IntAP>(S, S.PC)) return false;
38809#if USE_TAILCALLS
38810 MUSTTAIL return InterpNext(S);
38811#else
38812 return true;
38813#endif
38814}
38815PRESERVE_NONE
38816static bool Interp_MulIntAPS(InterpState &S) {
38817 if (!Mul<PT_IntAPS>(S, S.PC)) return false;
38818#if USE_TAILCALLS
38819 MUSTTAIL return InterpNext(S);
38820#else
38821 return true;
38822#endif
38823}
38824PRESERVE_NONE
38825static bool Interp_MulBool(InterpState &S) {
38826 if (!Mul<PT_Bool>(S, S.PC)) return false;
38827#if USE_TAILCALLS
38828 MUSTTAIL return InterpNext(S);
38829#else
38830 return true;
38831#endif
38832}
38833PRESERVE_NONE
38834static bool Interp_MulFixedPoint(InterpState &S) {
38835 if (!Mul<PT_FixedPoint>(S, S.PC)) return false;
38836#if USE_TAILCALLS
38837 MUSTTAIL return InterpNext(S);
38838#else
38839 return true;
38840#endif
38841}
38842#endif
38843#ifdef GET_DISASM
38844case OP_MulSint8:
38845 Text.Op = PrintName("MulSint8");
38846 break;
38847case OP_MulUint8:
38848 Text.Op = PrintName("MulUint8");
38849 break;
38850case OP_MulSint16:
38851 Text.Op = PrintName("MulSint16");
38852 break;
38853case OP_MulUint16:
38854 Text.Op = PrintName("MulUint16");
38855 break;
38856case OP_MulSint32:
38857 Text.Op = PrintName("MulSint32");
38858 break;
38859case OP_MulUint32:
38860 Text.Op = PrintName("MulUint32");
38861 break;
38862case OP_MulSint64:
38863 Text.Op = PrintName("MulSint64");
38864 break;
38865case OP_MulUint64:
38866 Text.Op = PrintName("MulUint64");
38867 break;
38868case OP_MulIntAP:
38869 Text.Op = PrintName("MulIntAP");
38870 break;
38871case OP_MulIntAPS:
38872 Text.Op = PrintName("MulIntAPS");
38873 break;
38874case OP_MulBool:
38875 Text.Op = PrintName("MulBool");
38876 break;
38877case OP_MulFixedPoint:
38878 Text.Op = PrintName("MulFixedPoint");
38879 break;
38880#endif
38881#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38882bool emitMulSint8(SourceInfo);
38883bool emitMulUint8(SourceInfo);
38884bool emitMulSint16(SourceInfo);
38885bool emitMulUint16(SourceInfo);
38886bool emitMulSint32(SourceInfo);
38887bool emitMulUint32(SourceInfo);
38888bool emitMulSint64(SourceInfo);
38889bool emitMulUint64(SourceInfo);
38890bool emitMulIntAP(SourceInfo);
38891bool emitMulIntAPS(SourceInfo);
38892bool emitMulBool(SourceInfo);
38893bool emitMulFixedPoint(SourceInfo);
38894#endif
38895#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38896[[nodiscard]] bool emitMul(PrimType, SourceInfo I);
38897#endif
38898#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
38899bool
38900#if defined(GET_EVAL_IMPL)
38901EvalEmitter
38902#else
38903ByteCodeEmitter
38904#endif
38905::emitMul(PrimType T0, SourceInfo I) {
38906 switch (T0) {
38907 case PT_Sint8:
38908 return emitMulSint8(I);
38909 case PT_Uint8:
38910 return emitMulUint8(I);
38911 case PT_Sint16:
38912 return emitMulSint16(I);
38913 case PT_Uint16:
38914 return emitMulUint16(I);
38915 case PT_Sint32:
38916 return emitMulSint32(I);
38917 case PT_Uint32:
38918 return emitMulUint32(I);
38919 case PT_Sint64:
38920 return emitMulSint64(I);
38921 case PT_Uint64:
38922 return emitMulUint64(I);
38923 case PT_IntAP:
38924 return emitMulIntAP(I);
38925 case PT_IntAPS:
38926 return emitMulIntAPS(I);
38927 case PT_Bool:
38928 return emitMulBool(I);
38929 case PT_FixedPoint:
38930 return emitMulFixedPoint(I);
38931 default: llvm_unreachable("invalid type: emitMul");
38932 }
38933 llvm_unreachable("invalid enum value");
38934}
38935#endif
38936#ifdef GET_LINK_IMPL
38937bool ByteCodeEmitter::emitMulSint8(SourceInfo L) {
38938 return emitOp<>(OP_MulSint8, L);
38939}
38940bool ByteCodeEmitter::emitMulUint8(SourceInfo L) {
38941 return emitOp<>(OP_MulUint8, L);
38942}
38943bool ByteCodeEmitter::emitMulSint16(SourceInfo L) {
38944 return emitOp<>(OP_MulSint16, L);
38945}
38946bool ByteCodeEmitter::emitMulUint16(SourceInfo L) {
38947 return emitOp<>(OP_MulUint16, L);
38948}
38949bool ByteCodeEmitter::emitMulSint32(SourceInfo L) {
38950 return emitOp<>(OP_MulSint32, L);
38951}
38952bool ByteCodeEmitter::emitMulUint32(SourceInfo L) {
38953 return emitOp<>(OP_MulUint32, L);
38954}
38955bool ByteCodeEmitter::emitMulSint64(SourceInfo L) {
38956 return emitOp<>(OP_MulSint64, L);
38957}
38958bool ByteCodeEmitter::emitMulUint64(SourceInfo L) {
38959 return emitOp<>(OP_MulUint64, L);
38960}
38961bool ByteCodeEmitter::emitMulIntAP(SourceInfo L) {
38962 return emitOp<>(OP_MulIntAP, L);
38963}
38964bool ByteCodeEmitter::emitMulIntAPS(SourceInfo L) {
38965 return emitOp<>(OP_MulIntAPS, L);
38966}
38967bool ByteCodeEmitter::emitMulBool(SourceInfo L) {
38968 return emitOp<>(OP_MulBool, L);
38969}
38970bool ByteCodeEmitter::emitMulFixedPoint(SourceInfo L) {
38971 return emitOp<>(OP_MulFixedPoint, L);
38972}
38973#endif
38974#ifdef GET_EVAL_IMPL
38975bool EvalEmitter::emitMulSint8(SourceInfo L) {
38976 if (!isActive()) return true;
38977 CurrentSource = L;
38978 return Mul<PT_Sint8>(S, CodePtr());
38979}
38980bool EvalEmitter::emitMulUint8(SourceInfo L) {
38981 if (!isActive()) return true;
38982 CurrentSource = L;
38983 return Mul<PT_Uint8>(S, CodePtr());
38984}
38985bool EvalEmitter::emitMulSint16(SourceInfo L) {
38986 if (!isActive()) return true;
38987 CurrentSource = L;
38988 return Mul<PT_Sint16>(S, CodePtr());
38989}
38990bool EvalEmitter::emitMulUint16(SourceInfo L) {
38991 if (!isActive()) return true;
38992 CurrentSource = L;
38993 return Mul<PT_Uint16>(S, CodePtr());
38994}
38995bool EvalEmitter::emitMulSint32(SourceInfo L) {
38996 if (!isActive()) return true;
38997 CurrentSource = L;
38998 return Mul<PT_Sint32>(S, CodePtr());
38999}
39000bool EvalEmitter::emitMulUint32(SourceInfo L) {
39001 if (!isActive()) return true;
39002 CurrentSource = L;
39003 return Mul<PT_Uint32>(S, CodePtr());
39004}
39005bool EvalEmitter::emitMulSint64(SourceInfo L) {
39006 if (!isActive()) return true;
39007 CurrentSource = L;
39008 return Mul<PT_Sint64>(S, CodePtr());
39009}
39010bool EvalEmitter::emitMulUint64(SourceInfo L) {
39011 if (!isActive()) return true;
39012 CurrentSource = L;
39013 return Mul<PT_Uint64>(S, CodePtr());
39014}
39015bool EvalEmitter::emitMulIntAP(SourceInfo L) {
39016 if (!isActive()) return true;
39017 CurrentSource = L;
39018 return Mul<PT_IntAP>(S, CodePtr());
39019}
39020bool EvalEmitter::emitMulIntAPS(SourceInfo L) {
39021 if (!isActive()) return true;
39022 CurrentSource = L;
39023 return Mul<PT_IntAPS>(S, CodePtr());
39024}
39025bool EvalEmitter::emitMulBool(SourceInfo L) {
39026 if (!isActive()) return true;
39027 CurrentSource = L;
39028 return Mul<PT_Bool>(S, CodePtr());
39029}
39030bool EvalEmitter::emitMulFixedPoint(SourceInfo L) {
39031 if (!isActive()) return true;
39032 CurrentSource = L;
39033 return Mul<PT_FixedPoint>(S, CodePtr());
39034}
39035#endif
39036#ifdef GET_OPCODE_NAMES
39037OP_MulcSint8,
39038OP_MulcUint8,
39039OP_MulcSint16,
39040OP_MulcUint16,
39041OP_MulcSint32,
39042OP_MulcUint32,
39043OP_MulcSint64,
39044OP_MulcUint64,
39045OP_MulcIntAP,
39046OP_MulcIntAPS,
39047OP_MulcFloat,
39048#endif
39049#ifdef GET_INTERPFN_LIST
39050&Interp_MulcSint8,
39051&Interp_MulcUint8,
39052&Interp_MulcSint16,
39053&Interp_MulcUint16,
39054&Interp_MulcSint32,
39055&Interp_MulcUint32,
39056&Interp_MulcSint64,
39057&Interp_MulcUint64,
39058&Interp_MulcIntAP,
39059&Interp_MulcIntAPS,
39060&Interp_MulcFloat,
39061#endif
39062#ifdef GET_INTERPFN_DISPATCHERS
39063PRESERVE_NONE
39064static bool Interp_MulcSint8(InterpState &S) {
39065 if (!Mulc<PT_Sint8>(S)) return false;
39066#if USE_TAILCALLS
39067 MUSTTAIL return InterpNext(S);
39068#else
39069 return true;
39070#endif
39071}
39072PRESERVE_NONE
39073static bool Interp_MulcUint8(InterpState &S) {
39074 if (!Mulc<PT_Uint8>(S)) return false;
39075#if USE_TAILCALLS
39076 MUSTTAIL return InterpNext(S);
39077#else
39078 return true;
39079#endif
39080}
39081PRESERVE_NONE
39082static bool Interp_MulcSint16(InterpState &S) {
39083 if (!Mulc<PT_Sint16>(S)) return false;
39084#if USE_TAILCALLS
39085 MUSTTAIL return InterpNext(S);
39086#else
39087 return true;
39088#endif
39089}
39090PRESERVE_NONE
39091static bool Interp_MulcUint16(InterpState &S) {
39092 if (!Mulc<PT_Uint16>(S)) return false;
39093#if USE_TAILCALLS
39094 MUSTTAIL return InterpNext(S);
39095#else
39096 return true;
39097#endif
39098}
39099PRESERVE_NONE
39100static bool Interp_MulcSint32(InterpState &S) {
39101 if (!Mulc<PT_Sint32>(S)) return false;
39102#if USE_TAILCALLS
39103 MUSTTAIL return InterpNext(S);
39104#else
39105 return true;
39106#endif
39107}
39108PRESERVE_NONE
39109static bool Interp_MulcUint32(InterpState &S) {
39110 if (!Mulc<PT_Uint32>(S)) return false;
39111#if USE_TAILCALLS
39112 MUSTTAIL return InterpNext(S);
39113#else
39114 return true;
39115#endif
39116}
39117PRESERVE_NONE
39118static bool Interp_MulcSint64(InterpState &S) {
39119 if (!Mulc<PT_Sint64>(S)) return false;
39120#if USE_TAILCALLS
39121 MUSTTAIL return InterpNext(S);
39122#else
39123 return true;
39124#endif
39125}
39126PRESERVE_NONE
39127static bool Interp_MulcUint64(InterpState &S) {
39128 if (!Mulc<PT_Uint64>(S)) return false;
39129#if USE_TAILCALLS
39130 MUSTTAIL return InterpNext(S);
39131#else
39132 return true;
39133#endif
39134}
39135PRESERVE_NONE
39136static bool Interp_MulcIntAP(InterpState &S) {
39137 if (!Mulc<PT_IntAP>(S)) return false;
39138#if USE_TAILCALLS
39139 MUSTTAIL return InterpNext(S);
39140#else
39141 return true;
39142#endif
39143}
39144PRESERVE_NONE
39145static bool Interp_MulcIntAPS(InterpState &S) {
39146 if (!Mulc<PT_IntAPS>(S)) return false;
39147#if USE_TAILCALLS
39148 MUSTTAIL return InterpNext(S);
39149#else
39150 return true;
39151#endif
39152}
39153PRESERVE_NONE
39154static bool Interp_MulcFloat(InterpState &S) {
39155 if (!Mulc<PT_Float>(S)) return false;
39156#if USE_TAILCALLS
39157 MUSTTAIL return InterpNext(S);
39158#else
39159 return true;
39160#endif
39161}
39162#endif
39163#ifdef GET_DISASM
39164case OP_MulcSint8:
39165 Text.Op = PrintName("MulcSint8");
39166 break;
39167case OP_MulcUint8:
39168 Text.Op = PrintName("MulcUint8");
39169 break;
39170case OP_MulcSint16:
39171 Text.Op = PrintName("MulcSint16");
39172 break;
39173case OP_MulcUint16:
39174 Text.Op = PrintName("MulcUint16");
39175 break;
39176case OP_MulcSint32:
39177 Text.Op = PrintName("MulcSint32");
39178 break;
39179case OP_MulcUint32:
39180 Text.Op = PrintName("MulcUint32");
39181 break;
39182case OP_MulcSint64:
39183 Text.Op = PrintName("MulcSint64");
39184 break;
39185case OP_MulcUint64:
39186 Text.Op = PrintName("MulcUint64");
39187 break;
39188case OP_MulcIntAP:
39189 Text.Op = PrintName("MulcIntAP");
39190 break;
39191case OP_MulcIntAPS:
39192 Text.Op = PrintName("MulcIntAPS");
39193 break;
39194case OP_MulcFloat:
39195 Text.Op = PrintName("MulcFloat");
39196 break;
39197#endif
39198#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39199bool emitMulcSint8(SourceInfo);
39200bool emitMulcUint8(SourceInfo);
39201bool emitMulcSint16(SourceInfo);
39202bool emitMulcUint16(SourceInfo);
39203bool emitMulcSint32(SourceInfo);
39204bool emitMulcUint32(SourceInfo);
39205bool emitMulcSint64(SourceInfo);
39206bool emitMulcUint64(SourceInfo);
39207bool emitMulcIntAP(SourceInfo);
39208bool emitMulcIntAPS(SourceInfo);
39209bool emitMulcFloat(SourceInfo);
39210#endif
39211#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39212[[nodiscard]] bool emitMulc(PrimType, SourceInfo I);
39213#endif
39214#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
39215bool
39216#if defined(GET_EVAL_IMPL)
39217EvalEmitter
39218#else
39219ByteCodeEmitter
39220#endif
39221::emitMulc(PrimType T0, SourceInfo I) {
39222 switch (T0) {
39223 case PT_Sint8:
39224 return emitMulcSint8(I);
39225 case PT_Uint8:
39226 return emitMulcUint8(I);
39227 case PT_Sint16:
39228 return emitMulcSint16(I);
39229 case PT_Uint16:
39230 return emitMulcUint16(I);
39231 case PT_Sint32:
39232 return emitMulcSint32(I);
39233 case PT_Uint32:
39234 return emitMulcUint32(I);
39235 case PT_Sint64:
39236 return emitMulcSint64(I);
39237 case PT_Uint64:
39238 return emitMulcUint64(I);
39239 case PT_IntAP:
39240 return emitMulcIntAP(I);
39241 case PT_IntAPS:
39242 return emitMulcIntAPS(I);
39243 case PT_Float:
39244 return emitMulcFloat(I);
39245 default: llvm_unreachable("invalid type: emitMulc");
39246 }
39247 llvm_unreachable("invalid enum value");
39248}
39249#endif
39250#ifdef GET_LINK_IMPL
39251bool ByteCodeEmitter::emitMulcSint8(SourceInfo L) {
39252 return emitOp<>(OP_MulcSint8, L);
39253}
39254bool ByteCodeEmitter::emitMulcUint8(SourceInfo L) {
39255 return emitOp<>(OP_MulcUint8, L);
39256}
39257bool ByteCodeEmitter::emitMulcSint16(SourceInfo L) {
39258 return emitOp<>(OP_MulcSint16, L);
39259}
39260bool ByteCodeEmitter::emitMulcUint16(SourceInfo L) {
39261 return emitOp<>(OP_MulcUint16, L);
39262}
39263bool ByteCodeEmitter::emitMulcSint32(SourceInfo L) {
39264 return emitOp<>(OP_MulcSint32, L);
39265}
39266bool ByteCodeEmitter::emitMulcUint32(SourceInfo L) {
39267 return emitOp<>(OP_MulcUint32, L);
39268}
39269bool ByteCodeEmitter::emitMulcSint64(SourceInfo L) {
39270 return emitOp<>(OP_MulcSint64, L);
39271}
39272bool ByteCodeEmitter::emitMulcUint64(SourceInfo L) {
39273 return emitOp<>(OP_MulcUint64, L);
39274}
39275bool ByteCodeEmitter::emitMulcIntAP(SourceInfo L) {
39276 return emitOp<>(OP_MulcIntAP, L);
39277}
39278bool ByteCodeEmitter::emitMulcIntAPS(SourceInfo L) {
39279 return emitOp<>(OP_MulcIntAPS, L);
39280}
39281bool ByteCodeEmitter::emitMulcFloat(SourceInfo L) {
39282 return emitOp<>(OP_MulcFloat, L);
39283}
39284#endif
39285#ifdef GET_EVAL_IMPL
39286bool EvalEmitter::emitMulcSint8(SourceInfo L) {
39287 if (!isActive()) return true;
39288 CurrentSource = L;
39289 return Mulc<PT_Sint8>(S);
39290}
39291bool EvalEmitter::emitMulcUint8(SourceInfo L) {
39292 if (!isActive()) return true;
39293 CurrentSource = L;
39294 return Mulc<PT_Uint8>(S);
39295}
39296bool EvalEmitter::emitMulcSint16(SourceInfo L) {
39297 if (!isActive()) return true;
39298 CurrentSource = L;
39299 return Mulc<PT_Sint16>(S);
39300}
39301bool EvalEmitter::emitMulcUint16(SourceInfo L) {
39302 if (!isActive()) return true;
39303 CurrentSource = L;
39304 return Mulc<PT_Uint16>(S);
39305}
39306bool EvalEmitter::emitMulcSint32(SourceInfo L) {
39307 if (!isActive()) return true;
39308 CurrentSource = L;
39309 return Mulc<PT_Sint32>(S);
39310}
39311bool EvalEmitter::emitMulcUint32(SourceInfo L) {
39312 if (!isActive()) return true;
39313 CurrentSource = L;
39314 return Mulc<PT_Uint32>(S);
39315}
39316bool EvalEmitter::emitMulcSint64(SourceInfo L) {
39317 if (!isActive()) return true;
39318 CurrentSource = L;
39319 return Mulc<PT_Sint64>(S);
39320}
39321bool EvalEmitter::emitMulcUint64(SourceInfo L) {
39322 if (!isActive()) return true;
39323 CurrentSource = L;
39324 return Mulc<PT_Uint64>(S);
39325}
39326bool EvalEmitter::emitMulcIntAP(SourceInfo L) {
39327 if (!isActive()) return true;
39328 CurrentSource = L;
39329 return Mulc<PT_IntAP>(S);
39330}
39331bool EvalEmitter::emitMulcIntAPS(SourceInfo L) {
39332 if (!isActive()) return true;
39333 CurrentSource = L;
39334 return Mulc<PT_IntAPS>(S);
39335}
39336bool EvalEmitter::emitMulcFloat(SourceInfo L) {
39337 if (!isActive()) return true;
39338 CurrentSource = L;
39339 return Mulc<PT_Float>(S);
39340}
39341#endif
39342#ifdef GET_OPCODE_NAMES
39343OP_Mulf,
39344#endif
39345#ifdef GET_INTERPFN_LIST
39346&Interp_Mulf,
39347#endif
39348#ifdef GET_INTERPFN_DISPATCHERS
39349PRESERVE_NONE
39350static bool Interp_Mulf(InterpState &S) {
39351 {
39352 CodePtr OpPC = S.PC;
39353 const auto V0 = ReadArg<uint32_t>(S, S.PC);
39354 if (!Mulf(S, OpPC, V0)) return false;
39355 }
39356#if USE_TAILCALLS
39357 MUSTTAIL return InterpNext(S);
39358#else
39359 return true;
39360#endif
39361}
39362#endif
39363#ifdef GET_DISASM
39364case OP_Mulf:
39365 Text.Op = PrintName("Mulf");
39366 Text.Args.push_back(printArg<uint32_t>(PC));
39367 break;
39368#endif
39369#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39370bool emitMulf( uint32_t , SourceInfo);
39371#endif
39372#ifdef GET_LINK_IMPL
39373bool ByteCodeEmitter::emitMulf( uint32_t A0, SourceInfo L) {
39374 return emitOp<uint32_t>(OP_Mulf, A0, L);
39375}
39376#endif
39377#ifdef GET_EVAL_IMPL
39378bool EvalEmitter::emitMulf( uint32_t A0, SourceInfo L) {
39379 if (!isActive()) return true;
39380 CurrentSource = L;
39381 return Mulf(S, CodePtr(), A0);
39382}
39383#endif
39384#ifdef GET_OPCODE_NAMES
39385OP_NESint8,
39386OP_NEUint8,
39387OP_NESint16,
39388OP_NEUint16,
39389OP_NESint32,
39390OP_NEUint32,
39391OP_NESint64,
39392OP_NEUint64,
39393OP_NEIntAP,
39394OP_NEIntAPS,
39395OP_NEBool,
39396OP_NEFixedPoint,
39397OP_NEPtr,
39398OP_NEMemberPtr,
39399OP_NEFloat,
39400#endif
39401#ifdef GET_INTERPFN_LIST
39402&Interp_NESint8,
39403&Interp_NEUint8,
39404&Interp_NESint16,
39405&Interp_NEUint16,
39406&Interp_NESint32,
39407&Interp_NEUint32,
39408&Interp_NESint64,
39409&Interp_NEUint64,
39410&Interp_NEIntAP,
39411&Interp_NEIntAPS,
39412&Interp_NEBool,
39413&Interp_NEFixedPoint,
39414&Interp_NEPtr,
39415&Interp_NEMemberPtr,
39416&Interp_NEFloat,
39417#endif
39418#ifdef GET_INTERPFN_DISPATCHERS
39419PRESERVE_NONE
39420static bool Interp_NESint8(InterpState &S) {
39421 if (!NE<PT_Sint8>(S, S.PC)) return false;
39422#if USE_TAILCALLS
39423 MUSTTAIL return InterpNext(S);
39424#else
39425 return true;
39426#endif
39427}
39428PRESERVE_NONE
39429static bool Interp_NEUint8(InterpState &S) {
39430 if (!NE<PT_Uint8>(S, S.PC)) return false;
39431#if USE_TAILCALLS
39432 MUSTTAIL return InterpNext(S);
39433#else
39434 return true;
39435#endif
39436}
39437PRESERVE_NONE
39438static bool Interp_NESint16(InterpState &S) {
39439 if (!NE<PT_Sint16>(S, S.PC)) return false;
39440#if USE_TAILCALLS
39441 MUSTTAIL return InterpNext(S);
39442#else
39443 return true;
39444#endif
39445}
39446PRESERVE_NONE
39447static bool Interp_NEUint16(InterpState &S) {
39448 if (!NE<PT_Uint16>(S, S.PC)) return false;
39449#if USE_TAILCALLS
39450 MUSTTAIL return InterpNext(S);
39451#else
39452 return true;
39453#endif
39454}
39455PRESERVE_NONE
39456static bool Interp_NESint32(InterpState &S) {
39457 if (!NE<PT_Sint32>(S, S.PC)) return false;
39458#if USE_TAILCALLS
39459 MUSTTAIL return InterpNext(S);
39460#else
39461 return true;
39462#endif
39463}
39464PRESERVE_NONE
39465static bool Interp_NEUint32(InterpState &S) {
39466 if (!NE<PT_Uint32>(S, S.PC)) return false;
39467#if USE_TAILCALLS
39468 MUSTTAIL return InterpNext(S);
39469#else
39470 return true;
39471#endif
39472}
39473PRESERVE_NONE
39474static bool Interp_NESint64(InterpState &S) {
39475 if (!NE<PT_Sint64>(S, S.PC)) return false;
39476#if USE_TAILCALLS
39477 MUSTTAIL return InterpNext(S);
39478#else
39479 return true;
39480#endif
39481}
39482PRESERVE_NONE
39483static bool Interp_NEUint64(InterpState &S) {
39484 if (!NE<PT_Uint64>(S, S.PC)) return false;
39485#if USE_TAILCALLS
39486 MUSTTAIL return InterpNext(S);
39487#else
39488 return true;
39489#endif
39490}
39491PRESERVE_NONE
39492static bool Interp_NEIntAP(InterpState &S) {
39493 if (!NE<PT_IntAP>(S, S.PC)) return false;
39494#if USE_TAILCALLS
39495 MUSTTAIL return InterpNext(S);
39496#else
39497 return true;
39498#endif
39499}
39500PRESERVE_NONE
39501static bool Interp_NEIntAPS(InterpState &S) {
39502 if (!NE<PT_IntAPS>(S, S.PC)) return false;
39503#if USE_TAILCALLS
39504 MUSTTAIL return InterpNext(S);
39505#else
39506 return true;
39507#endif
39508}
39509PRESERVE_NONE
39510static bool Interp_NEBool(InterpState &S) {
39511 if (!NE<PT_Bool>(S, S.PC)) return false;
39512#if USE_TAILCALLS
39513 MUSTTAIL return InterpNext(S);
39514#else
39515 return true;
39516#endif
39517}
39518PRESERVE_NONE
39519static bool Interp_NEFixedPoint(InterpState &S) {
39520 if (!NE<PT_FixedPoint>(S, S.PC)) return false;
39521#if USE_TAILCALLS
39522 MUSTTAIL return InterpNext(S);
39523#else
39524 return true;
39525#endif
39526}
39527PRESERVE_NONE
39528static bool Interp_NEPtr(InterpState &S) {
39529 if (!NE<PT_Ptr>(S, S.PC)) return false;
39530#if USE_TAILCALLS
39531 MUSTTAIL return InterpNext(S);
39532#else
39533 return true;
39534#endif
39535}
39536PRESERVE_NONE
39537static bool Interp_NEMemberPtr(InterpState &S) {
39538 if (!NE<PT_MemberPtr>(S, S.PC)) return false;
39539#if USE_TAILCALLS
39540 MUSTTAIL return InterpNext(S);
39541#else
39542 return true;
39543#endif
39544}
39545PRESERVE_NONE
39546static bool Interp_NEFloat(InterpState &S) {
39547 if (!NE<PT_Float>(S, S.PC)) return false;
39548#if USE_TAILCALLS
39549 MUSTTAIL return InterpNext(S);
39550#else
39551 return true;
39552#endif
39553}
39554#endif
39555#ifdef GET_DISASM
39556case OP_NESint8:
39557 Text.Op = PrintName("NESint8");
39558 break;
39559case OP_NEUint8:
39560 Text.Op = PrintName("NEUint8");
39561 break;
39562case OP_NESint16:
39563 Text.Op = PrintName("NESint16");
39564 break;
39565case OP_NEUint16:
39566 Text.Op = PrintName("NEUint16");
39567 break;
39568case OP_NESint32:
39569 Text.Op = PrintName("NESint32");
39570 break;
39571case OP_NEUint32:
39572 Text.Op = PrintName("NEUint32");
39573 break;
39574case OP_NESint64:
39575 Text.Op = PrintName("NESint64");
39576 break;
39577case OP_NEUint64:
39578 Text.Op = PrintName("NEUint64");
39579 break;
39580case OP_NEIntAP:
39581 Text.Op = PrintName("NEIntAP");
39582 break;
39583case OP_NEIntAPS:
39584 Text.Op = PrintName("NEIntAPS");
39585 break;
39586case OP_NEBool:
39587 Text.Op = PrintName("NEBool");
39588 break;
39589case OP_NEFixedPoint:
39590 Text.Op = PrintName("NEFixedPoint");
39591 break;
39592case OP_NEPtr:
39593 Text.Op = PrintName("NEPtr");
39594 break;
39595case OP_NEMemberPtr:
39596 Text.Op = PrintName("NEMemberPtr");
39597 break;
39598case OP_NEFloat:
39599 Text.Op = PrintName("NEFloat");
39600 break;
39601#endif
39602#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39603bool emitNESint8(SourceInfo);
39604bool emitNEUint8(SourceInfo);
39605bool emitNESint16(SourceInfo);
39606bool emitNEUint16(SourceInfo);
39607bool emitNESint32(SourceInfo);
39608bool emitNEUint32(SourceInfo);
39609bool emitNESint64(SourceInfo);
39610bool emitNEUint64(SourceInfo);
39611bool emitNEIntAP(SourceInfo);
39612bool emitNEIntAPS(SourceInfo);
39613bool emitNEBool(SourceInfo);
39614bool emitNEFixedPoint(SourceInfo);
39615bool emitNEPtr(SourceInfo);
39616bool emitNEMemberPtr(SourceInfo);
39617bool emitNEFloat(SourceInfo);
39618#endif
39619#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39620[[nodiscard]] bool emitNE(PrimType, SourceInfo I);
39621#endif
39622#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
39623bool
39624#if defined(GET_EVAL_IMPL)
39625EvalEmitter
39626#else
39627ByteCodeEmitter
39628#endif
39629::emitNE(PrimType T0, SourceInfo I) {
39630 switch (T0) {
39631 case PT_Sint8:
39632 return emitNESint8(I);
39633 case PT_Uint8:
39634 return emitNEUint8(I);
39635 case PT_Sint16:
39636 return emitNESint16(I);
39637 case PT_Uint16:
39638 return emitNEUint16(I);
39639 case PT_Sint32:
39640 return emitNESint32(I);
39641 case PT_Uint32:
39642 return emitNEUint32(I);
39643 case PT_Sint64:
39644 return emitNESint64(I);
39645 case PT_Uint64:
39646 return emitNEUint64(I);
39647 case PT_IntAP:
39648 return emitNEIntAP(I);
39649 case PT_IntAPS:
39650 return emitNEIntAPS(I);
39651 case PT_Bool:
39652 return emitNEBool(I);
39653 case PT_FixedPoint:
39654 return emitNEFixedPoint(I);
39655 case PT_Ptr:
39656 return emitNEPtr(I);
39657 case PT_MemberPtr:
39658 return emitNEMemberPtr(I);
39659 case PT_Float:
39660 return emitNEFloat(I);
39661 }
39662 llvm_unreachable("invalid enum value");
39663}
39664#endif
39665#ifdef GET_LINK_IMPL
39666bool ByteCodeEmitter::emitNESint8(SourceInfo L) {
39667 return emitOp<>(OP_NESint8, L);
39668}
39669bool ByteCodeEmitter::emitNEUint8(SourceInfo L) {
39670 return emitOp<>(OP_NEUint8, L);
39671}
39672bool ByteCodeEmitter::emitNESint16(SourceInfo L) {
39673 return emitOp<>(OP_NESint16, L);
39674}
39675bool ByteCodeEmitter::emitNEUint16(SourceInfo L) {
39676 return emitOp<>(OP_NEUint16, L);
39677}
39678bool ByteCodeEmitter::emitNESint32(SourceInfo L) {
39679 return emitOp<>(OP_NESint32, L);
39680}
39681bool ByteCodeEmitter::emitNEUint32(SourceInfo L) {
39682 return emitOp<>(OP_NEUint32, L);
39683}
39684bool ByteCodeEmitter::emitNESint64(SourceInfo L) {
39685 return emitOp<>(OP_NESint64, L);
39686}
39687bool ByteCodeEmitter::emitNEUint64(SourceInfo L) {
39688 return emitOp<>(OP_NEUint64, L);
39689}
39690bool ByteCodeEmitter::emitNEIntAP(SourceInfo L) {
39691 return emitOp<>(OP_NEIntAP, L);
39692}
39693bool ByteCodeEmitter::emitNEIntAPS(SourceInfo L) {
39694 return emitOp<>(OP_NEIntAPS, L);
39695}
39696bool ByteCodeEmitter::emitNEBool(SourceInfo L) {
39697 return emitOp<>(OP_NEBool, L);
39698}
39699bool ByteCodeEmitter::emitNEFixedPoint(SourceInfo L) {
39700 return emitOp<>(OP_NEFixedPoint, L);
39701}
39702bool ByteCodeEmitter::emitNEPtr(SourceInfo L) {
39703 return emitOp<>(OP_NEPtr, L);
39704}
39705bool ByteCodeEmitter::emitNEMemberPtr(SourceInfo L) {
39706 return emitOp<>(OP_NEMemberPtr, L);
39707}
39708bool ByteCodeEmitter::emitNEFloat(SourceInfo L) {
39709 return emitOp<>(OP_NEFloat, L);
39710}
39711#endif
39712#ifdef GET_EVAL_IMPL
39713bool EvalEmitter::emitNESint8(SourceInfo L) {
39714 if (!isActive()) return true;
39715 CurrentSource = L;
39716 return NE<PT_Sint8>(S, CodePtr());
39717}
39718bool EvalEmitter::emitNEUint8(SourceInfo L) {
39719 if (!isActive()) return true;
39720 CurrentSource = L;
39721 return NE<PT_Uint8>(S, CodePtr());
39722}
39723bool EvalEmitter::emitNESint16(SourceInfo L) {
39724 if (!isActive()) return true;
39725 CurrentSource = L;
39726 return NE<PT_Sint16>(S, CodePtr());
39727}
39728bool EvalEmitter::emitNEUint16(SourceInfo L) {
39729 if (!isActive()) return true;
39730 CurrentSource = L;
39731 return NE<PT_Uint16>(S, CodePtr());
39732}
39733bool EvalEmitter::emitNESint32(SourceInfo L) {
39734 if (!isActive()) return true;
39735 CurrentSource = L;
39736 return NE<PT_Sint32>(S, CodePtr());
39737}
39738bool EvalEmitter::emitNEUint32(SourceInfo L) {
39739 if (!isActive()) return true;
39740 CurrentSource = L;
39741 return NE<PT_Uint32>(S, CodePtr());
39742}
39743bool EvalEmitter::emitNESint64(SourceInfo L) {
39744 if (!isActive()) return true;
39745 CurrentSource = L;
39746 return NE<PT_Sint64>(S, CodePtr());
39747}
39748bool EvalEmitter::emitNEUint64(SourceInfo L) {
39749 if (!isActive()) return true;
39750 CurrentSource = L;
39751 return NE<PT_Uint64>(S, CodePtr());
39752}
39753bool EvalEmitter::emitNEIntAP(SourceInfo L) {
39754 if (!isActive()) return true;
39755 CurrentSource = L;
39756 return NE<PT_IntAP>(S, CodePtr());
39757}
39758bool EvalEmitter::emitNEIntAPS(SourceInfo L) {
39759 if (!isActive()) return true;
39760 CurrentSource = L;
39761 return NE<PT_IntAPS>(S, CodePtr());
39762}
39763bool EvalEmitter::emitNEBool(SourceInfo L) {
39764 if (!isActive()) return true;
39765 CurrentSource = L;
39766 return NE<PT_Bool>(S, CodePtr());
39767}
39768bool EvalEmitter::emitNEFixedPoint(SourceInfo L) {
39769 if (!isActive()) return true;
39770 CurrentSource = L;
39771 return NE<PT_FixedPoint>(S, CodePtr());
39772}
39773bool EvalEmitter::emitNEPtr(SourceInfo L) {
39774 if (!isActive()) return true;
39775 CurrentSource = L;
39776 return NE<PT_Ptr>(S, CodePtr());
39777}
39778bool EvalEmitter::emitNEMemberPtr(SourceInfo L) {
39779 if (!isActive()) return true;
39780 CurrentSource = L;
39781 return NE<PT_MemberPtr>(S, CodePtr());
39782}
39783bool EvalEmitter::emitNEFloat(SourceInfo L) {
39784 if (!isActive()) return true;
39785 CurrentSource = L;
39786 return NE<PT_Float>(S, CodePtr());
39787}
39788#endif
39789#ifdef GET_OPCODE_NAMES
39790OP_NarrowPtr,
39791#endif
39792#ifdef GET_INTERPFN_LIST
39793&Interp_NarrowPtr,
39794#endif
39795#ifdef GET_INTERPFN_DISPATCHERS
39796PRESERVE_NONE
39797static bool Interp_NarrowPtr(InterpState &S) {
39798 NarrowPtr(S);
39799#if USE_TAILCALLS
39800 MUSTTAIL return InterpNext(S);
39801#else
39802 return true;
39803#endif
39804}
39805#endif
39806#ifdef GET_DISASM
39807case OP_NarrowPtr:
39808 Text.Op = PrintName("NarrowPtr");
39809 break;
39810#endif
39811#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39812bool emitNarrowPtr(SourceInfo);
39813#endif
39814#ifdef GET_LINK_IMPL
39815bool ByteCodeEmitter::emitNarrowPtr(SourceInfo L) {
39816 return emitOp<>(OP_NarrowPtr, L);
39817}
39818#endif
39819#ifdef GET_EVAL_IMPL
39820bool EvalEmitter::emitNarrowPtr(SourceInfo L) {
39821 if (!isActive()) return true;
39822 CurrentSource = L;
39823 return NarrowPtr(S);
39824}
39825#endif
39826#ifdef GET_OPCODE_NAMES
39827OP_NegSint8,
39828OP_NegUint8,
39829OP_NegSint16,
39830OP_NegUint16,
39831OP_NegSint32,
39832OP_NegUint32,
39833OP_NegSint64,
39834OP_NegUint64,
39835OP_NegIntAP,
39836OP_NegIntAPS,
39837OP_NegBool,
39838OP_NegFloat,
39839OP_NegFixedPoint,
39840#endif
39841#ifdef GET_INTERPFN_LIST
39842&Interp_NegSint8,
39843&Interp_NegUint8,
39844&Interp_NegSint16,
39845&Interp_NegUint16,
39846&Interp_NegSint32,
39847&Interp_NegUint32,
39848&Interp_NegSint64,
39849&Interp_NegUint64,
39850&Interp_NegIntAP,
39851&Interp_NegIntAPS,
39852&Interp_NegBool,
39853&Interp_NegFloat,
39854&Interp_NegFixedPoint,
39855#endif
39856#ifdef GET_INTERPFN_DISPATCHERS
39857PRESERVE_NONE
39858static bool Interp_NegSint8(InterpState &S) {
39859 if (!Neg<PT_Sint8>(S, S.PC)) return false;
39860#if USE_TAILCALLS
39861 MUSTTAIL return InterpNext(S);
39862#else
39863 return true;
39864#endif
39865}
39866PRESERVE_NONE
39867static bool Interp_NegUint8(InterpState &S) {
39868 if (!Neg<PT_Uint8>(S, S.PC)) return false;
39869#if USE_TAILCALLS
39870 MUSTTAIL return InterpNext(S);
39871#else
39872 return true;
39873#endif
39874}
39875PRESERVE_NONE
39876static bool Interp_NegSint16(InterpState &S) {
39877 if (!Neg<PT_Sint16>(S, S.PC)) return false;
39878#if USE_TAILCALLS
39879 MUSTTAIL return InterpNext(S);
39880#else
39881 return true;
39882#endif
39883}
39884PRESERVE_NONE
39885static bool Interp_NegUint16(InterpState &S) {
39886 if (!Neg<PT_Uint16>(S, S.PC)) return false;
39887#if USE_TAILCALLS
39888 MUSTTAIL return InterpNext(S);
39889#else
39890 return true;
39891#endif
39892}
39893PRESERVE_NONE
39894static bool Interp_NegSint32(InterpState &S) {
39895 if (!Neg<PT_Sint32>(S, S.PC)) return false;
39896#if USE_TAILCALLS
39897 MUSTTAIL return InterpNext(S);
39898#else
39899 return true;
39900#endif
39901}
39902PRESERVE_NONE
39903static bool Interp_NegUint32(InterpState &S) {
39904 if (!Neg<PT_Uint32>(S, S.PC)) return false;
39905#if USE_TAILCALLS
39906 MUSTTAIL return InterpNext(S);
39907#else
39908 return true;
39909#endif
39910}
39911PRESERVE_NONE
39912static bool Interp_NegSint64(InterpState &S) {
39913 if (!Neg<PT_Sint64>(S, S.PC)) return false;
39914#if USE_TAILCALLS
39915 MUSTTAIL return InterpNext(S);
39916#else
39917 return true;
39918#endif
39919}
39920PRESERVE_NONE
39921static bool Interp_NegUint64(InterpState &S) {
39922 if (!Neg<PT_Uint64>(S, S.PC)) return false;
39923#if USE_TAILCALLS
39924 MUSTTAIL return InterpNext(S);
39925#else
39926 return true;
39927#endif
39928}
39929PRESERVE_NONE
39930static bool Interp_NegIntAP(InterpState &S) {
39931 if (!Neg<PT_IntAP>(S, S.PC)) return false;
39932#if USE_TAILCALLS
39933 MUSTTAIL return InterpNext(S);
39934#else
39935 return true;
39936#endif
39937}
39938PRESERVE_NONE
39939static bool Interp_NegIntAPS(InterpState &S) {
39940 if (!Neg<PT_IntAPS>(S, S.PC)) return false;
39941#if USE_TAILCALLS
39942 MUSTTAIL return InterpNext(S);
39943#else
39944 return true;
39945#endif
39946}
39947PRESERVE_NONE
39948static bool Interp_NegBool(InterpState &S) {
39949 if (!Neg<PT_Bool>(S, S.PC)) return false;
39950#if USE_TAILCALLS
39951 MUSTTAIL return InterpNext(S);
39952#else
39953 return true;
39954#endif
39955}
39956PRESERVE_NONE
39957static bool Interp_NegFloat(InterpState &S) {
39958 if (!Neg<PT_Float>(S, S.PC)) return false;
39959#if USE_TAILCALLS
39960 MUSTTAIL return InterpNext(S);
39961#else
39962 return true;
39963#endif
39964}
39965PRESERVE_NONE
39966static bool Interp_NegFixedPoint(InterpState &S) {
39967 if (!Neg<PT_FixedPoint>(S, S.PC)) return false;
39968#if USE_TAILCALLS
39969 MUSTTAIL return InterpNext(S);
39970#else
39971 return true;
39972#endif
39973}
39974#endif
39975#ifdef GET_DISASM
39976case OP_NegSint8:
39977 Text.Op = PrintName("NegSint8");
39978 break;
39979case OP_NegUint8:
39980 Text.Op = PrintName("NegUint8");
39981 break;
39982case OP_NegSint16:
39983 Text.Op = PrintName("NegSint16");
39984 break;
39985case OP_NegUint16:
39986 Text.Op = PrintName("NegUint16");
39987 break;
39988case OP_NegSint32:
39989 Text.Op = PrintName("NegSint32");
39990 break;
39991case OP_NegUint32:
39992 Text.Op = PrintName("NegUint32");
39993 break;
39994case OP_NegSint64:
39995 Text.Op = PrintName("NegSint64");
39996 break;
39997case OP_NegUint64:
39998 Text.Op = PrintName("NegUint64");
39999 break;
40000case OP_NegIntAP:
40001 Text.Op = PrintName("NegIntAP");
40002 break;
40003case OP_NegIntAPS:
40004 Text.Op = PrintName("NegIntAPS");
40005 break;
40006case OP_NegBool:
40007 Text.Op = PrintName("NegBool");
40008 break;
40009case OP_NegFloat:
40010 Text.Op = PrintName("NegFloat");
40011 break;
40012case OP_NegFixedPoint:
40013 Text.Op = PrintName("NegFixedPoint");
40014 break;
40015#endif
40016#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40017bool emitNegSint8(SourceInfo);
40018bool emitNegUint8(SourceInfo);
40019bool emitNegSint16(SourceInfo);
40020bool emitNegUint16(SourceInfo);
40021bool emitNegSint32(SourceInfo);
40022bool emitNegUint32(SourceInfo);
40023bool emitNegSint64(SourceInfo);
40024bool emitNegUint64(SourceInfo);
40025bool emitNegIntAP(SourceInfo);
40026bool emitNegIntAPS(SourceInfo);
40027bool emitNegBool(SourceInfo);
40028bool emitNegFloat(SourceInfo);
40029bool emitNegFixedPoint(SourceInfo);
40030#endif
40031#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40032[[nodiscard]] bool emitNeg(PrimType, SourceInfo I);
40033#endif
40034#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40035bool
40036#if defined(GET_EVAL_IMPL)
40037EvalEmitter
40038#else
40039ByteCodeEmitter
40040#endif
40041::emitNeg(PrimType T0, SourceInfo I) {
40042 switch (T0) {
40043 case PT_Sint8:
40044 return emitNegSint8(I);
40045 case PT_Uint8:
40046 return emitNegUint8(I);
40047 case PT_Sint16:
40048 return emitNegSint16(I);
40049 case PT_Uint16:
40050 return emitNegUint16(I);
40051 case PT_Sint32:
40052 return emitNegSint32(I);
40053 case PT_Uint32:
40054 return emitNegUint32(I);
40055 case PT_Sint64:
40056 return emitNegSint64(I);
40057 case PT_Uint64:
40058 return emitNegUint64(I);
40059 case PT_IntAP:
40060 return emitNegIntAP(I);
40061 case PT_IntAPS:
40062 return emitNegIntAPS(I);
40063 case PT_Bool:
40064 return emitNegBool(I);
40065 case PT_Float:
40066 return emitNegFloat(I);
40067 case PT_FixedPoint:
40068 return emitNegFixedPoint(I);
40069 default: llvm_unreachable("invalid type: emitNeg");
40070 }
40071 llvm_unreachable("invalid enum value");
40072}
40073#endif
40074#ifdef GET_LINK_IMPL
40075bool ByteCodeEmitter::emitNegSint8(SourceInfo L) {
40076 return emitOp<>(OP_NegSint8, L);
40077}
40078bool ByteCodeEmitter::emitNegUint8(SourceInfo L) {
40079 return emitOp<>(OP_NegUint8, L);
40080}
40081bool ByteCodeEmitter::emitNegSint16(SourceInfo L) {
40082 return emitOp<>(OP_NegSint16, L);
40083}
40084bool ByteCodeEmitter::emitNegUint16(SourceInfo L) {
40085 return emitOp<>(OP_NegUint16, L);
40086}
40087bool ByteCodeEmitter::emitNegSint32(SourceInfo L) {
40088 return emitOp<>(OP_NegSint32, L);
40089}
40090bool ByteCodeEmitter::emitNegUint32(SourceInfo L) {
40091 return emitOp<>(OP_NegUint32, L);
40092}
40093bool ByteCodeEmitter::emitNegSint64(SourceInfo L) {
40094 return emitOp<>(OP_NegSint64, L);
40095}
40096bool ByteCodeEmitter::emitNegUint64(SourceInfo L) {
40097 return emitOp<>(OP_NegUint64, L);
40098}
40099bool ByteCodeEmitter::emitNegIntAP(SourceInfo L) {
40100 return emitOp<>(OP_NegIntAP, L);
40101}
40102bool ByteCodeEmitter::emitNegIntAPS(SourceInfo L) {
40103 return emitOp<>(OP_NegIntAPS, L);
40104}
40105bool ByteCodeEmitter::emitNegBool(SourceInfo L) {
40106 return emitOp<>(OP_NegBool, L);
40107}
40108bool ByteCodeEmitter::emitNegFloat(SourceInfo L) {
40109 return emitOp<>(OP_NegFloat, L);
40110}
40111bool ByteCodeEmitter::emitNegFixedPoint(SourceInfo L) {
40112 return emitOp<>(OP_NegFixedPoint, L);
40113}
40114#endif
40115#ifdef GET_EVAL_IMPL
40116bool EvalEmitter::emitNegSint8(SourceInfo L) {
40117 if (!isActive()) return true;
40118 CurrentSource = L;
40119 return Neg<PT_Sint8>(S, CodePtr());
40120}
40121bool EvalEmitter::emitNegUint8(SourceInfo L) {
40122 if (!isActive()) return true;
40123 CurrentSource = L;
40124 return Neg<PT_Uint8>(S, CodePtr());
40125}
40126bool EvalEmitter::emitNegSint16(SourceInfo L) {
40127 if (!isActive()) return true;
40128 CurrentSource = L;
40129 return Neg<PT_Sint16>(S, CodePtr());
40130}
40131bool EvalEmitter::emitNegUint16(SourceInfo L) {
40132 if (!isActive()) return true;
40133 CurrentSource = L;
40134 return Neg<PT_Uint16>(S, CodePtr());
40135}
40136bool EvalEmitter::emitNegSint32(SourceInfo L) {
40137 if (!isActive()) return true;
40138 CurrentSource = L;
40139 return Neg<PT_Sint32>(S, CodePtr());
40140}
40141bool EvalEmitter::emitNegUint32(SourceInfo L) {
40142 if (!isActive()) return true;
40143 CurrentSource = L;
40144 return Neg<PT_Uint32>(S, CodePtr());
40145}
40146bool EvalEmitter::emitNegSint64(SourceInfo L) {
40147 if (!isActive()) return true;
40148 CurrentSource = L;
40149 return Neg<PT_Sint64>(S, CodePtr());
40150}
40151bool EvalEmitter::emitNegUint64(SourceInfo L) {
40152 if (!isActive()) return true;
40153 CurrentSource = L;
40154 return Neg<PT_Uint64>(S, CodePtr());
40155}
40156bool EvalEmitter::emitNegIntAP(SourceInfo L) {
40157 if (!isActive()) return true;
40158 CurrentSource = L;
40159 return Neg<PT_IntAP>(S, CodePtr());
40160}
40161bool EvalEmitter::emitNegIntAPS(SourceInfo L) {
40162 if (!isActive()) return true;
40163 CurrentSource = L;
40164 return Neg<PT_IntAPS>(S, CodePtr());
40165}
40166bool EvalEmitter::emitNegBool(SourceInfo L) {
40167 if (!isActive()) return true;
40168 CurrentSource = L;
40169 return Neg<PT_Bool>(S, CodePtr());
40170}
40171bool EvalEmitter::emitNegFloat(SourceInfo L) {
40172 if (!isActive()) return true;
40173 CurrentSource = L;
40174 return Neg<PT_Float>(S, CodePtr());
40175}
40176bool EvalEmitter::emitNegFixedPoint(SourceInfo L) {
40177 if (!isActive()) return true;
40178 CurrentSource = L;
40179 return Neg<PT_FixedPoint>(S, CodePtr());
40180}
40181#endif
40182#ifdef GET_OPCODE_NAMES
40183OP_NoRet,
40184#endif
40185#ifdef GET_INTERPFN_LIST
40186&Interp_NoRet,
40187#endif
40188#ifdef GET_INTERPFN_DISPATCHERS
40189PRESERVE_NONE
40190static bool Interp_NoRet(InterpState &S) {
40191 if (!NoRet(S)) return false;
40192#if USE_TAILCALLS
40193 MUSTTAIL return InterpNext(S);
40194#else
40195 return true;
40196#endif
40197}
40198#endif
40199#ifdef GET_DISASM
40200case OP_NoRet:
40201 Text.Op = PrintName("NoRet");
40202 break;
40203#endif
40204#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40205bool emitNoRet(SourceInfo);
40206#endif
40207#ifdef GET_LINK_IMPL
40208bool ByteCodeEmitter::emitNoRet(SourceInfo L) {
40209 return emitOp<>(OP_NoRet, L);
40210}
40211#endif
40212#ifdef GET_EVAL_IMPL
40213bool EvalEmitter::emitNoRet(SourceInfo L) {
40214 if (!isActive()) return true;
40215 CurrentSource = L;
40216 return NoRet(S);
40217}
40218#endif
40219#ifdef GET_OPCODE_NAMES
40220OP_NullPtr,
40221OP_NullMemberPtr,
40222#endif
40223#ifdef GET_INTERPFN_LIST
40224&Interp_NullPtr,
40225&Interp_NullMemberPtr,
40226#endif
40227#ifdef GET_INTERPFN_DISPATCHERS
40228PRESERVE_NONE
40229static bool Interp_NullPtr(InterpState &S) {
40230 {
40231 const auto V0 = ReadArg<uint64_t>(S, S.PC);
40232 const auto V1 = ReadArg<const Type *>(S, S.PC);
40233 Null<PT_Ptr>(S, V0, V1);
40234 }
40235#if USE_TAILCALLS
40236 MUSTTAIL return InterpNext(S);
40237#else
40238 return true;
40239#endif
40240}
40241PRESERVE_NONE
40242static bool Interp_NullMemberPtr(InterpState &S) {
40243 {
40244 const auto V0 = ReadArg<uint64_t>(S, S.PC);
40245 const auto V1 = ReadArg<const Type *>(S, S.PC);
40246 Null<PT_MemberPtr>(S, V0, V1);
40247 }
40248#if USE_TAILCALLS
40249 MUSTTAIL return InterpNext(S);
40250#else
40251 return true;
40252#endif
40253}
40254#endif
40255#ifdef GET_DISASM
40256case OP_NullPtr:
40257 Text.Op = PrintName("NullPtr");
40258 Text.Args.push_back(printArg<uint64_t>(PC));
40259 Text.Args.push_back(printArg<const Type *>(PC));
40260 break;
40261case OP_NullMemberPtr:
40262 Text.Op = PrintName("NullMemberPtr");
40263 Text.Args.push_back(printArg<uint64_t>(PC));
40264 Text.Args.push_back(printArg<const Type *>(PC));
40265 break;
40266#endif
40267#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40268bool emitNullPtr( uint64_t , const Type * , SourceInfo);
40269bool emitNullMemberPtr( uint64_t , const Type * , SourceInfo);
40270#endif
40271#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40272[[nodiscard]] bool emitNull(PrimType, uint64_t, const Type *, SourceInfo I);
40273#endif
40274#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40275bool
40276#if defined(GET_EVAL_IMPL)
40277EvalEmitter
40278#else
40279ByteCodeEmitter
40280#endif
40281::emitNull(PrimType T0, uint64_t A0, const Type * A1, SourceInfo I) {
40282 switch (T0) {
40283 case PT_Ptr:
40284 return emitNullPtr(A0, A1, I);
40285 case PT_MemberPtr:
40286 return emitNullMemberPtr(A0, A1, I);
40287 default: llvm_unreachable("invalid type: emitNull");
40288 }
40289 llvm_unreachable("invalid enum value");
40290}
40291#endif
40292#ifdef GET_LINK_IMPL
40293bool ByteCodeEmitter::emitNullPtr( uint64_t A0, const Type * A1, SourceInfo L) {
40294 return emitOp<uint64_t, const Type *>(OP_NullPtr, A0, A1, L);
40295}
40296bool ByteCodeEmitter::emitNullMemberPtr( uint64_t A0, const Type * A1, SourceInfo L) {
40297 return emitOp<uint64_t, const Type *>(OP_NullMemberPtr, A0, A1, L);
40298}
40299#endif
40300#ifdef GET_EVAL_IMPL
40301bool EvalEmitter::emitNullPtr( uint64_t A0, const Type * A1, SourceInfo L) {
40302 if (!isActive()) return true;
40303 CurrentSource = L;
40304 return Null<PT_Ptr>(S, A0, A1);
40305}
40306bool EvalEmitter::emitNullMemberPtr( uint64_t A0, const Type * A1, SourceInfo L) {
40307 if (!isActive()) return true;
40308 CurrentSource = L;
40309 return Null<PT_MemberPtr>(S, A0, A1);
40310}
40311#endif
40312#ifdef GET_OPCODE_NAMES
40313OP_OffsetOfSint8,
40314OP_OffsetOfUint8,
40315OP_OffsetOfSint16,
40316OP_OffsetOfUint16,
40317OP_OffsetOfSint32,
40318OP_OffsetOfUint32,
40319OP_OffsetOfSint64,
40320OP_OffsetOfUint64,
40321OP_OffsetOfIntAP,
40322OP_OffsetOfIntAPS,
40323#endif
40324#ifdef GET_INTERPFN_LIST
40325&Interp_OffsetOfSint8,
40326&Interp_OffsetOfUint8,
40327&Interp_OffsetOfSint16,
40328&Interp_OffsetOfUint16,
40329&Interp_OffsetOfSint32,
40330&Interp_OffsetOfUint32,
40331&Interp_OffsetOfSint64,
40332&Interp_OffsetOfUint64,
40333&Interp_OffsetOfIntAP,
40334&Interp_OffsetOfIntAPS,
40335#endif
40336#ifdef GET_INTERPFN_DISPATCHERS
40337PRESERVE_NONE
40338static bool Interp_OffsetOfSint8(InterpState &S) {
40339 {
40340 CodePtr OpPC = S.PC;
40341 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40342 if (!OffsetOf<PT_Sint8>(S, OpPC, V0)) return false;
40343 }
40344#if USE_TAILCALLS
40345 MUSTTAIL return InterpNext(S);
40346#else
40347 return true;
40348#endif
40349}
40350PRESERVE_NONE
40351static bool Interp_OffsetOfUint8(InterpState &S) {
40352 {
40353 CodePtr OpPC = S.PC;
40354 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40355 if (!OffsetOf<PT_Uint8>(S, OpPC, V0)) return false;
40356 }
40357#if USE_TAILCALLS
40358 MUSTTAIL return InterpNext(S);
40359#else
40360 return true;
40361#endif
40362}
40363PRESERVE_NONE
40364static bool Interp_OffsetOfSint16(InterpState &S) {
40365 {
40366 CodePtr OpPC = S.PC;
40367 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40368 if (!OffsetOf<PT_Sint16>(S, OpPC, V0)) return false;
40369 }
40370#if USE_TAILCALLS
40371 MUSTTAIL return InterpNext(S);
40372#else
40373 return true;
40374#endif
40375}
40376PRESERVE_NONE
40377static bool Interp_OffsetOfUint16(InterpState &S) {
40378 {
40379 CodePtr OpPC = S.PC;
40380 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40381 if (!OffsetOf<PT_Uint16>(S, OpPC, V0)) return false;
40382 }
40383#if USE_TAILCALLS
40384 MUSTTAIL return InterpNext(S);
40385#else
40386 return true;
40387#endif
40388}
40389PRESERVE_NONE
40390static bool Interp_OffsetOfSint32(InterpState &S) {
40391 {
40392 CodePtr OpPC = S.PC;
40393 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40394 if (!OffsetOf<PT_Sint32>(S, OpPC, V0)) return false;
40395 }
40396#if USE_TAILCALLS
40397 MUSTTAIL return InterpNext(S);
40398#else
40399 return true;
40400#endif
40401}
40402PRESERVE_NONE
40403static bool Interp_OffsetOfUint32(InterpState &S) {
40404 {
40405 CodePtr OpPC = S.PC;
40406 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40407 if (!OffsetOf<PT_Uint32>(S, OpPC, V0)) return false;
40408 }
40409#if USE_TAILCALLS
40410 MUSTTAIL return InterpNext(S);
40411#else
40412 return true;
40413#endif
40414}
40415PRESERVE_NONE
40416static bool Interp_OffsetOfSint64(InterpState &S) {
40417 {
40418 CodePtr OpPC = S.PC;
40419 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40420 if (!OffsetOf<PT_Sint64>(S, OpPC, V0)) return false;
40421 }
40422#if USE_TAILCALLS
40423 MUSTTAIL return InterpNext(S);
40424#else
40425 return true;
40426#endif
40427}
40428PRESERVE_NONE
40429static bool Interp_OffsetOfUint64(InterpState &S) {
40430 {
40431 CodePtr OpPC = S.PC;
40432 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40433 if (!OffsetOf<PT_Uint64>(S, OpPC, V0)) return false;
40434 }
40435#if USE_TAILCALLS
40436 MUSTTAIL return InterpNext(S);
40437#else
40438 return true;
40439#endif
40440}
40441PRESERVE_NONE
40442static bool Interp_OffsetOfIntAP(InterpState &S) {
40443 {
40444 CodePtr OpPC = S.PC;
40445 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40446 if (!OffsetOf<PT_IntAP>(S, OpPC, V0)) return false;
40447 }
40448#if USE_TAILCALLS
40449 MUSTTAIL return InterpNext(S);
40450#else
40451 return true;
40452#endif
40453}
40454PRESERVE_NONE
40455static bool Interp_OffsetOfIntAPS(InterpState &S) {
40456 {
40457 CodePtr OpPC = S.PC;
40458 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40459 if (!OffsetOf<PT_IntAPS>(S, OpPC, V0)) return false;
40460 }
40461#if USE_TAILCALLS
40462 MUSTTAIL return InterpNext(S);
40463#else
40464 return true;
40465#endif
40466}
40467#endif
40468#ifdef GET_DISASM
40469case OP_OffsetOfSint8:
40470 Text.Op = PrintName("OffsetOfSint8");
40471 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40472 break;
40473case OP_OffsetOfUint8:
40474 Text.Op = PrintName("OffsetOfUint8");
40475 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40476 break;
40477case OP_OffsetOfSint16:
40478 Text.Op = PrintName("OffsetOfSint16");
40479 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40480 break;
40481case OP_OffsetOfUint16:
40482 Text.Op = PrintName("OffsetOfUint16");
40483 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40484 break;
40485case OP_OffsetOfSint32:
40486 Text.Op = PrintName("OffsetOfSint32");
40487 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40488 break;
40489case OP_OffsetOfUint32:
40490 Text.Op = PrintName("OffsetOfUint32");
40491 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40492 break;
40493case OP_OffsetOfSint64:
40494 Text.Op = PrintName("OffsetOfSint64");
40495 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40496 break;
40497case OP_OffsetOfUint64:
40498 Text.Op = PrintName("OffsetOfUint64");
40499 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40500 break;
40501case OP_OffsetOfIntAP:
40502 Text.Op = PrintName("OffsetOfIntAP");
40503 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40504 break;
40505case OP_OffsetOfIntAPS:
40506 Text.Op = PrintName("OffsetOfIntAPS");
40507 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40508 break;
40509#endif
40510#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40511bool emitOffsetOfSint8( const OffsetOfExpr * , SourceInfo);
40512bool emitOffsetOfUint8( const OffsetOfExpr * , SourceInfo);
40513bool emitOffsetOfSint16( const OffsetOfExpr * , SourceInfo);
40514bool emitOffsetOfUint16( const OffsetOfExpr * , SourceInfo);
40515bool emitOffsetOfSint32( const OffsetOfExpr * , SourceInfo);
40516bool emitOffsetOfUint32( const OffsetOfExpr * , SourceInfo);
40517bool emitOffsetOfSint64( const OffsetOfExpr * , SourceInfo);
40518bool emitOffsetOfUint64( const OffsetOfExpr * , SourceInfo);
40519bool emitOffsetOfIntAP( const OffsetOfExpr * , SourceInfo);
40520bool emitOffsetOfIntAPS( const OffsetOfExpr * , SourceInfo);
40521#endif
40522#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40523[[nodiscard]] bool emitOffsetOf(PrimType, const OffsetOfExpr *, SourceInfo I);
40524#endif
40525#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40526bool
40527#if defined(GET_EVAL_IMPL)
40528EvalEmitter
40529#else
40530ByteCodeEmitter
40531#endif
40532::emitOffsetOf(PrimType T0, const OffsetOfExpr * A0, SourceInfo I) {
40533 switch (T0) {
40534 case PT_Sint8:
40535 return emitOffsetOfSint8(A0, I);
40536 case PT_Uint8:
40537 return emitOffsetOfUint8(A0, I);
40538 case PT_Sint16:
40539 return emitOffsetOfSint16(A0, I);
40540 case PT_Uint16:
40541 return emitOffsetOfUint16(A0, I);
40542 case PT_Sint32:
40543 return emitOffsetOfSint32(A0, I);
40544 case PT_Uint32:
40545 return emitOffsetOfUint32(A0, I);
40546 case PT_Sint64:
40547 return emitOffsetOfSint64(A0, I);
40548 case PT_Uint64:
40549 return emitOffsetOfUint64(A0, I);
40550 case PT_IntAP:
40551 return emitOffsetOfIntAP(A0, I);
40552 case PT_IntAPS:
40553 return emitOffsetOfIntAPS(A0, I);
40554 default: llvm_unreachable("invalid type: emitOffsetOf");
40555 }
40556 llvm_unreachable("invalid enum value");
40557}
40558#endif
40559#ifdef GET_LINK_IMPL
40560bool ByteCodeEmitter::emitOffsetOfSint8( const OffsetOfExpr * A0, SourceInfo L) {
40561 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint8, A0, L);
40562}
40563bool ByteCodeEmitter::emitOffsetOfUint8( const OffsetOfExpr * A0, SourceInfo L) {
40564 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint8, A0, L);
40565}
40566bool ByteCodeEmitter::emitOffsetOfSint16( const OffsetOfExpr * A0, SourceInfo L) {
40567 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint16, A0, L);
40568}
40569bool ByteCodeEmitter::emitOffsetOfUint16( const OffsetOfExpr * A0, SourceInfo L) {
40570 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint16, A0, L);
40571}
40572bool ByteCodeEmitter::emitOffsetOfSint32( const OffsetOfExpr * A0, SourceInfo L) {
40573 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint32, A0, L);
40574}
40575bool ByteCodeEmitter::emitOffsetOfUint32( const OffsetOfExpr * A0, SourceInfo L) {
40576 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint32, A0, L);
40577}
40578bool ByteCodeEmitter::emitOffsetOfSint64( const OffsetOfExpr * A0, SourceInfo L) {
40579 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint64, A0, L);
40580}
40581bool ByteCodeEmitter::emitOffsetOfUint64( const OffsetOfExpr * A0, SourceInfo L) {
40582 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint64, A0, L);
40583}
40584bool ByteCodeEmitter::emitOffsetOfIntAP( const OffsetOfExpr * A0, SourceInfo L) {
40585 return emitOp<const OffsetOfExpr *>(OP_OffsetOfIntAP, A0, L);
40586}
40587bool ByteCodeEmitter::emitOffsetOfIntAPS( const OffsetOfExpr * A0, SourceInfo L) {
40588 return emitOp<const OffsetOfExpr *>(OP_OffsetOfIntAPS, A0, L);
40589}
40590#endif
40591#ifdef GET_EVAL_IMPL
40592bool EvalEmitter::emitOffsetOfSint8( const OffsetOfExpr * A0, SourceInfo L) {
40593 if (!isActive()) return true;
40594 CurrentSource = L;
40595 return OffsetOf<PT_Sint8>(S, CodePtr(), A0);
40596}
40597bool EvalEmitter::emitOffsetOfUint8( const OffsetOfExpr * A0, SourceInfo L) {
40598 if (!isActive()) return true;
40599 CurrentSource = L;
40600 return OffsetOf<PT_Uint8>(S, CodePtr(), A0);
40601}
40602bool EvalEmitter::emitOffsetOfSint16( const OffsetOfExpr * A0, SourceInfo L) {
40603 if (!isActive()) return true;
40604 CurrentSource = L;
40605 return OffsetOf<PT_Sint16>(S, CodePtr(), A0);
40606}
40607bool EvalEmitter::emitOffsetOfUint16( const OffsetOfExpr * A0, SourceInfo L) {
40608 if (!isActive()) return true;
40609 CurrentSource = L;
40610 return OffsetOf<PT_Uint16>(S, CodePtr(), A0);
40611}
40612bool EvalEmitter::emitOffsetOfSint32( const OffsetOfExpr * A0, SourceInfo L) {
40613 if (!isActive()) return true;
40614 CurrentSource = L;
40615 return OffsetOf<PT_Sint32>(S, CodePtr(), A0);
40616}
40617bool EvalEmitter::emitOffsetOfUint32( const OffsetOfExpr * A0, SourceInfo L) {
40618 if (!isActive()) return true;
40619 CurrentSource = L;
40620 return OffsetOf<PT_Uint32>(S, CodePtr(), A0);
40621}
40622bool EvalEmitter::emitOffsetOfSint64( const OffsetOfExpr * A0, SourceInfo L) {
40623 if (!isActive()) return true;
40624 CurrentSource = L;
40625 return OffsetOf<PT_Sint64>(S, CodePtr(), A0);
40626}
40627bool EvalEmitter::emitOffsetOfUint64( const OffsetOfExpr * A0, SourceInfo L) {
40628 if (!isActive()) return true;
40629 CurrentSource = L;
40630 return OffsetOf<PT_Uint64>(S, CodePtr(), A0);
40631}
40632bool EvalEmitter::emitOffsetOfIntAP( const OffsetOfExpr * A0, SourceInfo L) {
40633 if (!isActive()) return true;
40634 CurrentSource = L;
40635 return OffsetOf<PT_IntAP>(S, CodePtr(), A0);
40636}
40637bool EvalEmitter::emitOffsetOfIntAPS( const OffsetOfExpr * A0, SourceInfo L) {
40638 if (!isActive()) return true;
40639 CurrentSource = L;
40640 return OffsetOf<PT_IntAPS>(S, CodePtr(), A0);
40641}
40642#endif
40643#ifdef GET_OPCODE_NAMES
40644OP_PopSint8,
40645OP_PopUint8,
40646OP_PopSint16,
40647OP_PopUint16,
40648OP_PopSint32,
40649OP_PopUint32,
40650OP_PopSint64,
40651OP_PopUint64,
40652OP_PopIntAP,
40653OP_PopIntAPS,
40654OP_PopBool,
40655OP_PopFixedPoint,
40656OP_PopPtr,
40657OP_PopMemberPtr,
40658OP_PopFloat,
40659#endif
40660#ifdef GET_INTERPFN_LIST
40661&Interp_PopSint8,
40662&Interp_PopUint8,
40663&Interp_PopSint16,
40664&Interp_PopUint16,
40665&Interp_PopSint32,
40666&Interp_PopUint32,
40667&Interp_PopSint64,
40668&Interp_PopUint64,
40669&Interp_PopIntAP,
40670&Interp_PopIntAPS,
40671&Interp_PopBool,
40672&Interp_PopFixedPoint,
40673&Interp_PopPtr,
40674&Interp_PopMemberPtr,
40675&Interp_PopFloat,
40676#endif
40677#ifdef GET_INTERPFN_DISPATCHERS
40678PRESERVE_NONE
40679static bool Interp_PopSint8(InterpState &S) {
40680 Pop<PT_Sint8>(S);
40681#if USE_TAILCALLS
40682 MUSTTAIL return InterpNext(S);
40683#else
40684 return true;
40685#endif
40686}
40687PRESERVE_NONE
40688static bool Interp_PopUint8(InterpState &S) {
40689 Pop<PT_Uint8>(S);
40690#if USE_TAILCALLS
40691 MUSTTAIL return InterpNext(S);
40692#else
40693 return true;
40694#endif
40695}
40696PRESERVE_NONE
40697static bool Interp_PopSint16(InterpState &S) {
40698 Pop<PT_Sint16>(S);
40699#if USE_TAILCALLS
40700 MUSTTAIL return InterpNext(S);
40701#else
40702 return true;
40703#endif
40704}
40705PRESERVE_NONE
40706static bool Interp_PopUint16(InterpState &S) {
40707 Pop<PT_Uint16>(S);
40708#if USE_TAILCALLS
40709 MUSTTAIL return InterpNext(S);
40710#else
40711 return true;
40712#endif
40713}
40714PRESERVE_NONE
40715static bool Interp_PopSint32(InterpState &S) {
40716 Pop<PT_Sint32>(S);
40717#if USE_TAILCALLS
40718 MUSTTAIL return InterpNext(S);
40719#else
40720 return true;
40721#endif
40722}
40723PRESERVE_NONE
40724static bool Interp_PopUint32(InterpState &S) {
40725 Pop<PT_Uint32>(S);
40726#if USE_TAILCALLS
40727 MUSTTAIL return InterpNext(S);
40728#else
40729 return true;
40730#endif
40731}
40732PRESERVE_NONE
40733static bool Interp_PopSint64(InterpState &S) {
40734 Pop<PT_Sint64>(S);
40735#if USE_TAILCALLS
40736 MUSTTAIL return InterpNext(S);
40737#else
40738 return true;
40739#endif
40740}
40741PRESERVE_NONE
40742static bool Interp_PopUint64(InterpState &S) {
40743 Pop<PT_Uint64>(S);
40744#if USE_TAILCALLS
40745 MUSTTAIL return InterpNext(S);
40746#else
40747 return true;
40748#endif
40749}
40750PRESERVE_NONE
40751static bool Interp_PopIntAP(InterpState &S) {
40752 Pop<PT_IntAP>(S);
40753#if USE_TAILCALLS
40754 MUSTTAIL return InterpNext(S);
40755#else
40756 return true;
40757#endif
40758}
40759PRESERVE_NONE
40760static bool Interp_PopIntAPS(InterpState &S) {
40761 Pop<PT_IntAPS>(S);
40762#if USE_TAILCALLS
40763 MUSTTAIL return InterpNext(S);
40764#else
40765 return true;
40766#endif
40767}
40768PRESERVE_NONE
40769static bool Interp_PopBool(InterpState &S) {
40770 Pop<PT_Bool>(S);
40771#if USE_TAILCALLS
40772 MUSTTAIL return InterpNext(S);
40773#else
40774 return true;
40775#endif
40776}
40777PRESERVE_NONE
40778static bool Interp_PopFixedPoint(InterpState &S) {
40779 Pop<PT_FixedPoint>(S);
40780#if USE_TAILCALLS
40781 MUSTTAIL return InterpNext(S);
40782#else
40783 return true;
40784#endif
40785}
40786PRESERVE_NONE
40787static bool Interp_PopPtr(InterpState &S) {
40788 Pop<PT_Ptr>(S);
40789#if USE_TAILCALLS
40790 MUSTTAIL return InterpNext(S);
40791#else
40792 return true;
40793#endif
40794}
40795PRESERVE_NONE
40796static bool Interp_PopMemberPtr(InterpState &S) {
40797 Pop<PT_MemberPtr>(S);
40798#if USE_TAILCALLS
40799 MUSTTAIL return InterpNext(S);
40800#else
40801 return true;
40802#endif
40803}
40804PRESERVE_NONE
40805static bool Interp_PopFloat(InterpState &S) {
40806 Pop<PT_Float>(S);
40807#if USE_TAILCALLS
40808 MUSTTAIL return InterpNext(S);
40809#else
40810 return true;
40811#endif
40812}
40813#endif
40814#ifdef GET_DISASM
40815case OP_PopSint8:
40816 Text.Op = PrintName("PopSint8");
40817 break;
40818case OP_PopUint8:
40819 Text.Op = PrintName("PopUint8");
40820 break;
40821case OP_PopSint16:
40822 Text.Op = PrintName("PopSint16");
40823 break;
40824case OP_PopUint16:
40825 Text.Op = PrintName("PopUint16");
40826 break;
40827case OP_PopSint32:
40828 Text.Op = PrintName("PopSint32");
40829 break;
40830case OP_PopUint32:
40831 Text.Op = PrintName("PopUint32");
40832 break;
40833case OP_PopSint64:
40834 Text.Op = PrintName("PopSint64");
40835 break;
40836case OP_PopUint64:
40837 Text.Op = PrintName("PopUint64");
40838 break;
40839case OP_PopIntAP:
40840 Text.Op = PrintName("PopIntAP");
40841 break;
40842case OP_PopIntAPS:
40843 Text.Op = PrintName("PopIntAPS");
40844 break;
40845case OP_PopBool:
40846 Text.Op = PrintName("PopBool");
40847 break;
40848case OP_PopFixedPoint:
40849 Text.Op = PrintName("PopFixedPoint");
40850 break;
40851case OP_PopPtr:
40852 Text.Op = PrintName("PopPtr");
40853 break;
40854case OP_PopMemberPtr:
40855 Text.Op = PrintName("PopMemberPtr");
40856 break;
40857case OP_PopFloat:
40858 Text.Op = PrintName("PopFloat");
40859 break;
40860#endif
40861#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40862bool emitPopSint8(SourceInfo);
40863bool emitPopUint8(SourceInfo);
40864bool emitPopSint16(SourceInfo);
40865bool emitPopUint16(SourceInfo);
40866bool emitPopSint32(SourceInfo);
40867bool emitPopUint32(SourceInfo);
40868bool emitPopSint64(SourceInfo);
40869bool emitPopUint64(SourceInfo);
40870bool emitPopIntAP(SourceInfo);
40871bool emitPopIntAPS(SourceInfo);
40872bool emitPopBool(SourceInfo);
40873bool emitPopFixedPoint(SourceInfo);
40874bool emitPopPtr(SourceInfo);
40875bool emitPopMemberPtr(SourceInfo);
40876bool emitPopFloat(SourceInfo);
40877#endif
40878#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40879[[nodiscard]] bool emitPop(PrimType, SourceInfo I);
40880#endif
40881#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40882bool
40883#if defined(GET_EVAL_IMPL)
40884EvalEmitter
40885#else
40886ByteCodeEmitter
40887#endif
40888::emitPop(PrimType T0, SourceInfo I) {
40889 switch (T0) {
40890 case PT_Sint8:
40891 return emitPopSint8(I);
40892 case PT_Uint8:
40893 return emitPopUint8(I);
40894 case PT_Sint16:
40895 return emitPopSint16(I);
40896 case PT_Uint16:
40897 return emitPopUint16(I);
40898 case PT_Sint32:
40899 return emitPopSint32(I);
40900 case PT_Uint32:
40901 return emitPopUint32(I);
40902 case PT_Sint64:
40903 return emitPopSint64(I);
40904 case PT_Uint64:
40905 return emitPopUint64(I);
40906 case PT_IntAP:
40907 return emitPopIntAP(I);
40908 case PT_IntAPS:
40909 return emitPopIntAPS(I);
40910 case PT_Bool:
40911 return emitPopBool(I);
40912 case PT_FixedPoint:
40913 return emitPopFixedPoint(I);
40914 case PT_Ptr:
40915 return emitPopPtr(I);
40916 case PT_MemberPtr:
40917 return emitPopMemberPtr(I);
40918 case PT_Float:
40919 return emitPopFloat(I);
40920 }
40921 llvm_unreachable("invalid enum value");
40922}
40923#endif
40924#ifdef GET_LINK_IMPL
40925bool ByteCodeEmitter::emitPopSint8(SourceInfo L) {
40926 return emitOp<>(OP_PopSint8, L);
40927}
40928bool ByteCodeEmitter::emitPopUint8(SourceInfo L) {
40929 return emitOp<>(OP_PopUint8, L);
40930}
40931bool ByteCodeEmitter::emitPopSint16(SourceInfo L) {
40932 return emitOp<>(OP_PopSint16, L);
40933}
40934bool ByteCodeEmitter::emitPopUint16(SourceInfo L) {
40935 return emitOp<>(OP_PopUint16, L);
40936}
40937bool ByteCodeEmitter::emitPopSint32(SourceInfo L) {
40938 return emitOp<>(OP_PopSint32, L);
40939}
40940bool ByteCodeEmitter::emitPopUint32(SourceInfo L) {
40941 return emitOp<>(OP_PopUint32, L);
40942}
40943bool ByteCodeEmitter::emitPopSint64(SourceInfo L) {
40944 return emitOp<>(OP_PopSint64, L);
40945}
40946bool ByteCodeEmitter::emitPopUint64(SourceInfo L) {
40947 return emitOp<>(OP_PopUint64, L);
40948}
40949bool ByteCodeEmitter::emitPopIntAP(SourceInfo L) {
40950 return emitOp<>(OP_PopIntAP, L);
40951}
40952bool ByteCodeEmitter::emitPopIntAPS(SourceInfo L) {
40953 return emitOp<>(OP_PopIntAPS, L);
40954}
40955bool ByteCodeEmitter::emitPopBool(SourceInfo L) {
40956 return emitOp<>(OP_PopBool, L);
40957}
40958bool ByteCodeEmitter::emitPopFixedPoint(SourceInfo L) {
40959 return emitOp<>(OP_PopFixedPoint, L);
40960}
40961bool ByteCodeEmitter::emitPopPtr(SourceInfo L) {
40962 return emitOp<>(OP_PopPtr, L);
40963}
40964bool ByteCodeEmitter::emitPopMemberPtr(SourceInfo L) {
40965 return emitOp<>(OP_PopMemberPtr, L);
40966}
40967bool ByteCodeEmitter::emitPopFloat(SourceInfo L) {
40968 return emitOp<>(OP_PopFloat, L);
40969}
40970#endif
40971#ifdef GET_EVAL_IMPL
40972bool EvalEmitter::emitPopSint8(SourceInfo L) {
40973 if (!isActive()) return true;
40974 CurrentSource = L;
40975 return Pop<PT_Sint8>(S);
40976}
40977bool EvalEmitter::emitPopUint8(SourceInfo L) {
40978 if (!isActive()) return true;
40979 CurrentSource = L;
40980 return Pop<PT_Uint8>(S);
40981}
40982bool EvalEmitter::emitPopSint16(SourceInfo L) {
40983 if (!isActive()) return true;
40984 CurrentSource = L;
40985 return Pop<PT_Sint16>(S);
40986}
40987bool EvalEmitter::emitPopUint16(SourceInfo L) {
40988 if (!isActive()) return true;
40989 CurrentSource = L;
40990 return Pop<PT_Uint16>(S);
40991}
40992bool EvalEmitter::emitPopSint32(SourceInfo L) {
40993 if (!isActive()) return true;
40994 CurrentSource = L;
40995 return Pop<PT_Sint32>(S);
40996}
40997bool EvalEmitter::emitPopUint32(SourceInfo L) {
40998 if (!isActive()) return true;
40999 CurrentSource = L;
41000 return Pop<PT_Uint32>(S);
41001}
41002bool EvalEmitter::emitPopSint64(SourceInfo L) {
41003 if (!isActive()) return true;
41004 CurrentSource = L;
41005 return Pop<PT_Sint64>(S);
41006}
41007bool EvalEmitter::emitPopUint64(SourceInfo L) {
41008 if (!isActive()) return true;
41009 CurrentSource = L;
41010 return Pop<PT_Uint64>(S);
41011}
41012bool EvalEmitter::emitPopIntAP(SourceInfo L) {
41013 if (!isActive()) return true;
41014 CurrentSource = L;
41015 return Pop<PT_IntAP>(S);
41016}
41017bool EvalEmitter::emitPopIntAPS(SourceInfo L) {
41018 if (!isActive()) return true;
41019 CurrentSource = L;
41020 return Pop<PT_IntAPS>(S);
41021}
41022bool EvalEmitter::emitPopBool(SourceInfo L) {
41023 if (!isActive()) return true;
41024 CurrentSource = L;
41025 return Pop<PT_Bool>(S);
41026}
41027bool EvalEmitter::emitPopFixedPoint(SourceInfo L) {
41028 if (!isActive()) return true;
41029 CurrentSource = L;
41030 return Pop<PT_FixedPoint>(S);
41031}
41032bool EvalEmitter::emitPopPtr(SourceInfo L) {
41033 if (!isActive()) return true;
41034 CurrentSource = L;
41035 return Pop<PT_Ptr>(S);
41036}
41037bool EvalEmitter::emitPopMemberPtr(SourceInfo L) {
41038 if (!isActive()) return true;
41039 CurrentSource = L;
41040 return Pop<PT_MemberPtr>(S);
41041}
41042bool EvalEmitter::emitPopFloat(SourceInfo L) {
41043 if (!isActive()) return true;
41044 CurrentSource = L;
41045 return Pop<PT_Float>(S);
41046}
41047#endif
41048#ifdef GET_OPCODE_NAMES
41049OP_PopCC,
41050#endif
41051#ifdef GET_INTERPFN_LIST
41052&Interp_PopCC,
41053#endif
41054#ifdef GET_INTERPFN_DISPATCHERS
41055PRESERVE_NONE
41056static bool Interp_PopCC(InterpState &S) {
41057 PopCC(S);
41058#if USE_TAILCALLS
41059 MUSTTAIL return InterpNext(S);
41060#else
41061 return true;
41062#endif
41063}
41064#endif
41065#ifdef GET_DISASM
41066case OP_PopCC:
41067 Text.Op = PrintName("PopCC");
41068 break;
41069#endif
41070#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41071bool emitPopCC(SourceInfo);
41072#endif
41073#ifdef GET_LINK_IMPL
41074bool ByteCodeEmitter::emitPopCC(SourceInfo L) {
41075 return emitOp<>(OP_PopCC, L);
41076}
41077#endif
41078#ifdef GET_EVAL_IMPL
41079bool EvalEmitter::emitPopCC(SourceInfo L) {
41080 if (!isActive()) return true;
41081 CurrentSource = L;
41082 return PopCC(S);
41083}
41084#endif
41085#ifdef GET_OPCODE_NAMES
41086OP_PopIgnoreDiags,
41087#endif
41088#ifdef GET_INTERPFN_LIST
41089&Interp_PopIgnoreDiags,
41090#endif
41091#ifdef GET_INTERPFN_DISPATCHERS
41092PRESERVE_NONE
41093static bool Interp_PopIgnoreDiags(InterpState &S) {
41094 PopIgnoreDiags(S);
41095#if USE_TAILCALLS
41096 MUSTTAIL return InterpNext(S);
41097#else
41098 return true;
41099#endif
41100}
41101#endif
41102#ifdef GET_DISASM
41103case OP_PopIgnoreDiags:
41104 Text.Op = PrintName("PopIgnoreDiags");
41105 break;
41106#endif
41107#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41108bool emitPopIgnoreDiags(SourceInfo);
41109#endif
41110#ifdef GET_LINK_IMPL
41111bool ByteCodeEmitter::emitPopIgnoreDiags(SourceInfo L) {
41112 return emitOp<>(OP_PopIgnoreDiags, L);
41113}
41114#endif
41115#ifdef GET_EVAL_IMPL
41116bool EvalEmitter::emitPopIgnoreDiags(SourceInfo L) {
41117 if (!isActive()) return true;
41118 CurrentSource = L;
41119 return PopIgnoreDiags(S);
41120}
41121#endif
41122#ifdef GET_OPCODE_NAMES
41123OP_PopMSVCCE,
41124#endif
41125#ifdef GET_INTERPFN_LIST
41126&Interp_PopMSVCCE,
41127#endif
41128#ifdef GET_INTERPFN_DISPATCHERS
41129PRESERVE_NONE
41130static bool Interp_PopMSVCCE(InterpState &S) {
41131 PopMSVCCE(S);
41132#if USE_TAILCALLS
41133 MUSTTAIL return InterpNext(S);
41134#else
41135 return true;
41136#endif
41137}
41138#endif
41139#ifdef GET_DISASM
41140case OP_PopMSVCCE:
41141 Text.Op = PrintName("PopMSVCCE");
41142 break;
41143#endif
41144#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41145bool emitPopMSVCCE(SourceInfo);
41146#endif
41147#ifdef GET_LINK_IMPL
41148bool ByteCodeEmitter::emitPopMSVCCE(SourceInfo L) {
41149 return emitOp<>(OP_PopMSVCCE, L);
41150}
41151#endif
41152#ifdef GET_EVAL_IMPL
41153bool EvalEmitter::emitPopMSVCCE(SourceInfo L) {
41154 if (!isActive()) return true;
41155 CurrentSource = L;
41156 return PopMSVCCE(S);
41157}
41158#endif
41159#ifdef GET_OPCODE_NAMES
41160OP_PreDecSint8,
41161OP_PreDecUint8,
41162OP_PreDecSint16,
41163OP_PreDecUint16,
41164OP_PreDecSint32,
41165OP_PreDecUint32,
41166OP_PreDecSint64,
41167OP_PreDecUint64,
41168OP_PreDecIntAP,
41169OP_PreDecIntAPS,
41170OP_PreDecBool,
41171OP_PreDecFixedPoint,
41172#endif
41173#ifdef GET_INTERPFN_LIST
41174&Interp_PreDecSint8,
41175&Interp_PreDecUint8,
41176&Interp_PreDecSint16,
41177&Interp_PreDecUint16,
41178&Interp_PreDecSint32,
41179&Interp_PreDecUint32,
41180&Interp_PreDecSint64,
41181&Interp_PreDecUint64,
41182&Interp_PreDecIntAP,
41183&Interp_PreDecIntAPS,
41184&Interp_PreDecBool,
41185&Interp_PreDecFixedPoint,
41186#endif
41187#ifdef GET_INTERPFN_DISPATCHERS
41188PRESERVE_NONE
41189static bool Interp_PreDecSint8(InterpState &S) {
41190 {
41191 CodePtr OpPC = S.PC;
41192 const auto V0 = ReadArg<bool>(S, S.PC);
41193 if (!PreDec<PT_Sint8>(S, OpPC, V0)) return false;
41194 }
41195#if USE_TAILCALLS
41196 MUSTTAIL return InterpNext(S);
41197#else
41198 return true;
41199#endif
41200}
41201PRESERVE_NONE
41202static bool Interp_PreDecUint8(InterpState &S) {
41203 {
41204 CodePtr OpPC = S.PC;
41205 const auto V0 = ReadArg<bool>(S, S.PC);
41206 if (!PreDec<PT_Uint8>(S, OpPC, V0)) return false;
41207 }
41208#if USE_TAILCALLS
41209 MUSTTAIL return InterpNext(S);
41210#else
41211 return true;
41212#endif
41213}
41214PRESERVE_NONE
41215static bool Interp_PreDecSint16(InterpState &S) {
41216 {
41217 CodePtr OpPC = S.PC;
41218 const auto V0 = ReadArg<bool>(S, S.PC);
41219 if (!PreDec<PT_Sint16>(S, OpPC, V0)) return false;
41220 }
41221#if USE_TAILCALLS
41222 MUSTTAIL return InterpNext(S);
41223#else
41224 return true;
41225#endif
41226}
41227PRESERVE_NONE
41228static bool Interp_PreDecUint16(InterpState &S) {
41229 {
41230 CodePtr OpPC = S.PC;
41231 const auto V0 = ReadArg<bool>(S, S.PC);
41232 if (!PreDec<PT_Uint16>(S, OpPC, V0)) return false;
41233 }
41234#if USE_TAILCALLS
41235 MUSTTAIL return InterpNext(S);
41236#else
41237 return true;
41238#endif
41239}
41240PRESERVE_NONE
41241static bool Interp_PreDecSint32(InterpState &S) {
41242 {
41243 CodePtr OpPC = S.PC;
41244 const auto V0 = ReadArg<bool>(S, S.PC);
41245 if (!PreDec<PT_Sint32>(S, OpPC, V0)) return false;
41246 }
41247#if USE_TAILCALLS
41248 MUSTTAIL return InterpNext(S);
41249#else
41250 return true;
41251#endif
41252}
41253PRESERVE_NONE
41254static bool Interp_PreDecUint32(InterpState &S) {
41255 {
41256 CodePtr OpPC = S.PC;
41257 const auto V0 = ReadArg<bool>(S, S.PC);
41258 if (!PreDec<PT_Uint32>(S, OpPC, V0)) return false;
41259 }
41260#if USE_TAILCALLS
41261 MUSTTAIL return InterpNext(S);
41262#else
41263 return true;
41264#endif
41265}
41266PRESERVE_NONE
41267static bool Interp_PreDecSint64(InterpState &S) {
41268 {
41269 CodePtr OpPC = S.PC;
41270 const auto V0 = ReadArg<bool>(S, S.PC);
41271 if (!PreDec<PT_Sint64>(S, OpPC, V0)) return false;
41272 }
41273#if USE_TAILCALLS
41274 MUSTTAIL return InterpNext(S);
41275#else
41276 return true;
41277#endif
41278}
41279PRESERVE_NONE
41280static bool Interp_PreDecUint64(InterpState &S) {
41281 {
41282 CodePtr OpPC = S.PC;
41283 const auto V0 = ReadArg<bool>(S, S.PC);
41284 if (!PreDec<PT_Uint64>(S, OpPC, V0)) return false;
41285 }
41286#if USE_TAILCALLS
41287 MUSTTAIL return InterpNext(S);
41288#else
41289 return true;
41290#endif
41291}
41292PRESERVE_NONE
41293static bool Interp_PreDecIntAP(InterpState &S) {
41294 {
41295 CodePtr OpPC = S.PC;
41296 const auto V0 = ReadArg<bool>(S, S.PC);
41297 if (!PreDec<PT_IntAP>(S, OpPC, V0)) return false;
41298 }
41299#if USE_TAILCALLS
41300 MUSTTAIL return InterpNext(S);
41301#else
41302 return true;
41303#endif
41304}
41305PRESERVE_NONE
41306static bool Interp_PreDecIntAPS(InterpState &S) {
41307 {
41308 CodePtr OpPC = S.PC;
41309 const auto V0 = ReadArg<bool>(S, S.PC);
41310 if (!PreDec<PT_IntAPS>(S, OpPC, V0)) return false;
41311 }
41312#if USE_TAILCALLS
41313 MUSTTAIL return InterpNext(S);
41314#else
41315 return true;
41316#endif
41317}
41318PRESERVE_NONE
41319static bool Interp_PreDecBool(InterpState &S) {
41320 {
41321 CodePtr OpPC = S.PC;
41322 const auto V0 = ReadArg<bool>(S, S.PC);
41323 if (!PreDec<PT_Bool>(S, OpPC, V0)) return false;
41324 }
41325#if USE_TAILCALLS
41326 MUSTTAIL return InterpNext(S);
41327#else
41328 return true;
41329#endif
41330}
41331PRESERVE_NONE
41332static bool Interp_PreDecFixedPoint(InterpState &S) {
41333 {
41334 CodePtr OpPC = S.PC;
41335 const auto V0 = ReadArg<bool>(S, S.PC);
41336 if (!PreDec<PT_FixedPoint>(S, OpPC, V0)) return false;
41337 }
41338#if USE_TAILCALLS
41339 MUSTTAIL return InterpNext(S);
41340#else
41341 return true;
41342#endif
41343}
41344#endif
41345#ifdef GET_DISASM
41346case OP_PreDecSint8:
41347 Text.Op = PrintName("PreDecSint8");
41348 Text.Args.push_back(printArg<bool>(PC));
41349 break;
41350case OP_PreDecUint8:
41351 Text.Op = PrintName("PreDecUint8");
41352 Text.Args.push_back(printArg<bool>(PC));
41353 break;
41354case OP_PreDecSint16:
41355 Text.Op = PrintName("PreDecSint16");
41356 Text.Args.push_back(printArg<bool>(PC));
41357 break;
41358case OP_PreDecUint16:
41359 Text.Op = PrintName("PreDecUint16");
41360 Text.Args.push_back(printArg<bool>(PC));
41361 break;
41362case OP_PreDecSint32:
41363 Text.Op = PrintName("PreDecSint32");
41364 Text.Args.push_back(printArg<bool>(PC));
41365 break;
41366case OP_PreDecUint32:
41367 Text.Op = PrintName("PreDecUint32");
41368 Text.Args.push_back(printArg<bool>(PC));
41369 break;
41370case OP_PreDecSint64:
41371 Text.Op = PrintName("PreDecSint64");
41372 Text.Args.push_back(printArg<bool>(PC));
41373 break;
41374case OP_PreDecUint64:
41375 Text.Op = PrintName("PreDecUint64");
41376 Text.Args.push_back(printArg<bool>(PC));
41377 break;
41378case OP_PreDecIntAP:
41379 Text.Op = PrintName("PreDecIntAP");
41380 Text.Args.push_back(printArg<bool>(PC));
41381 break;
41382case OP_PreDecIntAPS:
41383 Text.Op = PrintName("PreDecIntAPS");
41384 Text.Args.push_back(printArg<bool>(PC));
41385 break;
41386case OP_PreDecBool:
41387 Text.Op = PrintName("PreDecBool");
41388 Text.Args.push_back(printArg<bool>(PC));
41389 break;
41390case OP_PreDecFixedPoint:
41391 Text.Op = PrintName("PreDecFixedPoint");
41392 Text.Args.push_back(printArg<bool>(PC));
41393 break;
41394#endif
41395#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41396bool emitPreDecSint8( bool , SourceInfo);
41397bool emitPreDecUint8( bool , SourceInfo);
41398bool emitPreDecSint16( bool , SourceInfo);
41399bool emitPreDecUint16( bool , SourceInfo);
41400bool emitPreDecSint32( bool , SourceInfo);
41401bool emitPreDecUint32( bool , SourceInfo);
41402bool emitPreDecSint64( bool , SourceInfo);
41403bool emitPreDecUint64( bool , SourceInfo);
41404bool emitPreDecIntAP( bool , SourceInfo);
41405bool emitPreDecIntAPS( bool , SourceInfo);
41406bool emitPreDecBool( bool , SourceInfo);
41407bool emitPreDecFixedPoint( bool , SourceInfo);
41408#endif
41409#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41410[[nodiscard]] bool emitPreDec(PrimType, bool, SourceInfo I);
41411#endif
41412#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
41413bool
41414#if defined(GET_EVAL_IMPL)
41415EvalEmitter
41416#else
41417ByteCodeEmitter
41418#endif
41419::emitPreDec(PrimType T0, bool A0, SourceInfo I) {
41420 switch (T0) {
41421 case PT_Sint8:
41422 return emitPreDecSint8(A0, I);
41423 case PT_Uint8:
41424 return emitPreDecUint8(A0, I);
41425 case PT_Sint16:
41426 return emitPreDecSint16(A0, I);
41427 case PT_Uint16:
41428 return emitPreDecUint16(A0, I);
41429 case PT_Sint32:
41430 return emitPreDecSint32(A0, I);
41431 case PT_Uint32:
41432 return emitPreDecUint32(A0, I);
41433 case PT_Sint64:
41434 return emitPreDecSint64(A0, I);
41435 case PT_Uint64:
41436 return emitPreDecUint64(A0, I);
41437 case PT_IntAP:
41438 return emitPreDecIntAP(A0, I);
41439 case PT_IntAPS:
41440 return emitPreDecIntAPS(A0, I);
41441 case PT_Bool:
41442 return emitPreDecBool(A0, I);
41443 case PT_FixedPoint:
41444 return emitPreDecFixedPoint(A0, I);
41445 default: llvm_unreachable("invalid type: emitPreDec");
41446 }
41447 llvm_unreachable("invalid enum value");
41448}
41449#endif
41450#ifdef GET_LINK_IMPL
41451bool ByteCodeEmitter::emitPreDecSint8( bool A0, SourceInfo L) {
41452 return emitOp<bool>(OP_PreDecSint8, A0, L);
41453}
41454bool ByteCodeEmitter::emitPreDecUint8( bool A0, SourceInfo L) {
41455 return emitOp<bool>(OP_PreDecUint8, A0, L);
41456}
41457bool ByteCodeEmitter::emitPreDecSint16( bool A0, SourceInfo L) {
41458 return emitOp<bool>(OP_PreDecSint16, A0, L);
41459}
41460bool ByteCodeEmitter::emitPreDecUint16( bool A0, SourceInfo L) {
41461 return emitOp<bool>(OP_PreDecUint16, A0, L);
41462}
41463bool ByteCodeEmitter::emitPreDecSint32( bool A0, SourceInfo L) {
41464 return emitOp<bool>(OP_PreDecSint32, A0, L);
41465}
41466bool ByteCodeEmitter::emitPreDecUint32( bool A0, SourceInfo L) {
41467 return emitOp<bool>(OP_PreDecUint32, A0, L);
41468}
41469bool ByteCodeEmitter::emitPreDecSint64( bool A0, SourceInfo L) {
41470 return emitOp<bool>(OP_PreDecSint64, A0, L);
41471}
41472bool ByteCodeEmitter::emitPreDecUint64( bool A0, SourceInfo L) {
41473 return emitOp<bool>(OP_PreDecUint64, A0, L);
41474}
41475bool ByteCodeEmitter::emitPreDecIntAP( bool A0, SourceInfo L) {
41476 return emitOp<bool>(OP_PreDecIntAP, A0, L);
41477}
41478bool ByteCodeEmitter::emitPreDecIntAPS( bool A0, SourceInfo L) {
41479 return emitOp<bool>(OP_PreDecIntAPS, A0, L);
41480}
41481bool ByteCodeEmitter::emitPreDecBool( bool A0, SourceInfo L) {
41482 return emitOp<bool>(OP_PreDecBool, A0, L);
41483}
41484bool ByteCodeEmitter::emitPreDecFixedPoint( bool A0, SourceInfo L) {
41485 return emitOp<bool>(OP_PreDecFixedPoint, A0, L);
41486}
41487#endif
41488#ifdef GET_EVAL_IMPL
41489bool EvalEmitter::emitPreDecSint8( bool A0, SourceInfo L) {
41490 if (!isActive()) return true;
41491 CurrentSource = L;
41492 return PreDec<PT_Sint8>(S, CodePtr(), A0);
41493}
41494bool EvalEmitter::emitPreDecUint8( bool A0, SourceInfo L) {
41495 if (!isActive()) return true;
41496 CurrentSource = L;
41497 return PreDec<PT_Uint8>(S, CodePtr(), A0);
41498}
41499bool EvalEmitter::emitPreDecSint16( bool A0, SourceInfo L) {
41500 if (!isActive()) return true;
41501 CurrentSource = L;
41502 return PreDec<PT_Sint16>(S, CodePtr(), A0);
41503}
41504bool EvalEmitter::emitPreDecUint16( bool A0, SourceInfo L) {
41505 if (!isActive()) return true;
41506 CurrentSource = L;
41507 return PreDec<PT_Uint16>(S, CodePtr(), A0);
41508}
41509bool EvalEmitter::emitPreDecSint32( bool A0, SourceInfo L) {
41510 if (!isActive()) return true;
41511 CurrentSource = L;
41512 return PreDec<PT_Sint32>(S, CodePtr(), A0);
41513}
41514bool EvalEmitter::emitPreDecUint32( bool A0, SourceInfo L) {
41515 if (!isActive()) return true;
41516 CurrentSource = L;
41517 return PreDec<PT_Uint32>(S, CodePtr(), A0);
41518}
41519bool EvalEmitter::emitPreDecSint64( bool A0, SourceInfo L) {
41520 if (!isActive()) return true;
41521 CurrentSource = L;
41522 return PreDec<PT_Sint64>(S, CodePtr(), A0);
41523}
41524bool EvalEmitter::emitPreDecUint64( bool A0, SourceInfo L) {
41525 if (!isActive()) return true;
41526 CurrentSource = L;
41527 return PreDec<PT_Uint64>(S, CodePtr(), A0);
41528}
41529bool EvalEmitter::emitPreDecIntAP( bool A0, SourceInfo L) {
41530 if (!isActive()) return true;
41531 CurrentSource = L;
41532 return PreDec<PT_IntAP>(S, CodePtr(), A0);
41533}
41534bool EvalEmitter::emitPreDecIntAPS( bool A0, SourceInfo L) {
41535 if (!isActive()) return true;
41536 CurrentSource = L;
41537 return PreDec<PT_IntAPS>(S, CodePtr(), A0);
41538}
41539bool EvalEmitter::emitPreDecBool( bool A0, SourceInfo L) {
41540 if (!isActive()) return true;
41541 CurrentSource = L;
41542 return PreDec<PT_Bool>(S, CodePtr(), A0);
41543}
41544bool EvalEmitter::emitPreDecFixedPoint( bool A0, SourceInfo L) {
41545 if (!isActive()) return true;
41546 CurrentSource = L;
41547 return PreDec<PT_FixedPoint>(S, CodePtr(), A0);
41548}
41549#endif
41550#ifdef GET_OPCODE_NAMES
41551OP_PreDecBitfieldSint8,
41552OP_PreDecBitfieldUint8,
41553OP_PreDecBitfieldSint16,
41554OP_PreDecBitfieldUint16,
41555OP_PreDecBitfieldSint32,
41556OP_PreDecBitfieldUint32,
41557OP_PreDecBitfieldSint64,
41558OP_PreDecBitfieldUint64,
41559OP_PreDecBitfieldIntAP,
41560OP_PreDecBitfieldIntAPS,
41561OP_PreDecBitfieldBool,
41562OP_PreDecBitfieldFixedPoint,
41563#endif
41564#ifdef GET_INTERPFN_LIST
41565&Interp_PreDecBitfieldSint8,
41566&Interp_PreDecBitfieldUint8,
41567&Interp_PreDecBitfieldSint16,
41568&Interp_PreDecBitfieldUint16,
41569&Interp_PreDecBitfieldSint32,
41570&Interp_PreDecBitfieldUint32,
41571&Interp_PreDecBitfieldSint64,
41572&Interp_PreDecBitfieldUint64,
41573&Interp_PreDecBitfieldIntAP,
41574&Interp_PreDecBitfieldIntAPS,
41575&Interp_PreDecBitfieldBool,
41576&Interp_PreDecBitfieldFixedPoint,
41577#endif
41578#ifdef GET_INTERPFN_DISPATCHERS
41579PRESERVE_NONE
41580static bool Interp_PreDecBitfieldSint8(InterpState &S) {
41581 {
41582 CodePtr OpPC = S.PC;
41583 const auto V0 = ReadArg<bool>(S, S.PC);
41584 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41585 if (!PreDecBitfield<PT_Sint8>(S, OpPC, V0, V1)) return false;
41586 }
41587#if USE_TAILCALLS
41588 MUSTTAIL return InterpNext(S);
41589#else
41590 return true;
41591#endif
41592}
41593PRESERVE_NONE
41594static bool Interp_PreDecBitfieldUint8(InterpState &S) {
41595 {
41596 CodePtr OpPC = S.PC;
41597 const auto V0 = ReadArg<bool>(S, S.PC);
41598 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41599 if (!PreDecBitfield<PT_Uint8>(S, OpPC, V0, V1)) return false;
41600 }
41601#if USE_TAILCALLS
41602 MUSTTAIL return InterpNext(S);
41603#else
41604 return true;
41605#endif
41606}
41607PRESERVE_NONE
41608static bool Interp_PreDecBitfieldSint16(InterpState &S) {
41609 {
41610 CodePtr OpPC = S.PC;
41611 const auto V0 = ReadArg<bool>(S, S.PC);
41612 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41613 if (!PreDecBitfield<PT_Sint16>(S, OpPC, V0, V1)) return false;
41614 }
41615#if USE_TAILCALLS
41616 MUSTTAIL return InterpNext(S);
41617#else
41618 return true;
41619#endif
41620}
41621PRESERVE_NONE
41622static bool Interp_PreDecBitfieldUint16(InterpState &S) {
41623 {
41624 CodePtr OpPC = S.PC;
41625 const auto V0 = ReadArg<bool>(S, S.PC);
41626 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41627 if (!PreDecBitfield<PT_Uint16>(S, OpPC, V0, V1)) return false;
41628 }
41629#if USE_TAILCALLS
41630 MUSTTAIL return InterpNext(S);
41631#else
41632 return true;
41633#endif
41634}
41635PRESERVE_NONE
41636static bool Interp_PreDecBitfieldSint32(InterpState &S) {
41637 {
41638 CodePtr OpPC = S.PC;
41639 const auto V0 = ReadArg<bool>(S, S.PC);
41640 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41641 if (!PreDecBitfield<PT_Sint32>(S, OpPC, V0, V1)) return false;
41642 }
41643#if USE_TAILCALLS
41644 MUSTTAIL return InterpNext(S);
41645#else
41646 return true;
41647#endif
41648}
41649PRESERVE_NONE
41650static bool Interp_PreDecBitfieldUint32(InterpState &S) {
41651 {
41652 CodePtr OpPC = S.PC;
41653 const auto V0 = ReadArg<bool>(S, S.PC);
41654 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41655 if (!PreDecBitfield<PT_Uint32>(S, OpPC, V0, V1)) return false;
41656 }
41657#if USE_TAILCALLS
41658 MUSTTAIL return InterpNext(S);
41659#else
41660 return true;
41661#endif
41662}
41663PRESERVE_NONE
41664static bool Interp_PreDecBitfieldSint64(InterpState &S) {
41665 {
41666 CodePtr OpPC = S.PC;
41667 const auto V0 = ReadArg<bool>(S, S.PC);
41668 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41669 if (!PreDecBitfield<PT_Sint64>(S, OpPC, V0, V1)) return false;
41670 }
41671#if USE_TAILCALLS
41672 MUSTTAIL return InterpNext(S);
41673#else
41674 return true;
41675#endif
41676}
41677PRESERVE_NONE
41678static bool Interp_PreDecBitfieldUint64(InterpState &S) {
41679 {
41680 CodePtr OpPC = S.PC;
41681 const auto V0 = ReadArg<bool>(S, S.PC);
41682 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41683 if (!PreDecBitfield<PT_Uint64>(S, OpPC, V0, V1)) return false;
41684 }
41685#if USE_TAILCALLS
41686 MUSTTAIL return InterpNext(S);
41687#else
41688 return true;
41689#endif
41690}
41691PRESERVE_NONE
41692static bool Interp_PreDecBitfieldIntAP(InterpState &S) {
41693 {
41694 CodePtr OpPC = S.PC;
41695 const auto V0 = ReadArg<bool>(S, S.PC);
41696 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41697 if (!PreDecBitfield<PT_IntAP>(S, OpPC, V0, V1)) return false;
41698 }
41699#if USE_TAILCALLS
41700 MUSTTAIL return InterpNext(S);
41701#else
41702 return true;
41703#endif
41704}
41705PRESERVE_NONE
41706static bool Interp_PreDecBitfieldIntAPS(InterpState &S) {
41707 {
41708 CodePtr OpPC = S.PC;
41709 const auto V0 = ReadArg<bool>(S, S.PC);
41710 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41711 if (!PreDecBitfield<PT_IntAPS>(S, OpPC, V0, V1)) return false;
41712 }
41713#if USE_TAILCALLS
41714 MUSTTAIL return InterpNext(S);
41715#else
41716 return true;
41717#endif
41718}
41719PRESERVE_NONE
41720static bool Interp_PreDecBitfieldBool(InterpState &S) {
41721 {
41722 CodePtr OpPC = S.PC;
41723 const auto V0 = ReadArg<bool>(S, S.PC);
41724 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41725 if (!PreDecBitfield<PT_Bool>(S, OpPC, V0, V1)) return false;
41726 }
41727#if USE_TAILCALLS
41728 MUSTTAIL return InterpNext(S);
41729#else
41730 return true;
41731#endif
41732}
41733PRESERVE_NONE
41734static bool Interp_PreDecBitfieldFixedPoint(InterpState &S) {
41735 {
41736 CodePtr OpPC = S.PC;
41737 const auto V0 = ReadArg<bool>(S, S.PC);
41738 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41739 if (!PreDecBitfield<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
41740 }
41741#if USE_TAILCALLS
41742 MUSTTAIL return InterpNext(S);
41743#else
41744 return true;
41745#endif
41746}
41747#endif
41748#ifdef GET_DISASM
41749case OP_PreDecBitfieldSint8:
41750 Text.Op = PrintName("PreDecBitfieldSint8");
41751 Text.Args.push_back(printArg<bool>(PC));
41752 Text.Args.push_back(printArg<uint32_t>(PC));
41753 break;
41754case OP_PreDecBitfieldUint8:
41755 Text.Op = PrintName("PreDecBitfieldUint8");
41756 Text.Args.push_back(printArg<bool>(PC));
41757 Text.Args.push_back(printArg<uint32_t>(PC));
41758 break;
41759case OP_PreDecBitfieldSint16:
41760 Text.Op = PrintName("PreDecBitfieldSint16");
41761 Text.Args.push_back(printArg<bool>(PC));
41762 Text.Args.push_back(printArg<uint32_t>(PC));
41763 break;
41764case OP_PreDecBitfieldUint16:
41765 Text.Op = PrintName("PreDecBitfieldUint16");
41766 Text.Args.push_back(printArg<bool>(PC));
41767 Text.Args.push_back(printArg<uint32_t>(PC));
41768 break;
41769case OP_PreDecBitfieldSint32:
41770 Text.Op = PrintName("PreDecBitfieldSint32");
41771 Text.Args.push_back(printArg<bool>(PC));
41772 Text.Args.push_back(printArg<uint32_t>(PC));
41773 break;
41774case OP_PreDecBitfieldUint32:
41775 Text.Op = PrintName("PreDecBitfieldUint32");
41776 Text.Args.push_back(printArg<bool>(PC));
41777 Text.Args.push_back(printArg<uint32_t>(PC));
41778 break;
41779case OP_PreDecBitfieldSint64:
41780 Text.Op = PrintName("PreDecBitfieldSint64");
41781 Text.Args.push_back(printArg<bool>(PC));
41782 Text.Args.push_back(printArg<uint32_t>(PC));
41783 break;
41784case OP_PreDecBitfieldUint64:
41785 Text.Op = PrintName("PreDecBitfieldUint64");
41786 Text.Args.push_back(printArg<bool>(PC));
41787 Text.Args.push_back(printArg<uint32_t>(PC));
41788 break;
41789case OP_PreDecBitfieldIntAP:
41790 Text.Op = PrintName("PreDecBitfieldIntAP");
41791 Text.Args.push_back(printArg<bool>(PC));
41792 Text.Args.push_back(printArg<uint32_t>(PC));
41793 break;
41794case OP_PreDecBitfieldIntAPS:
41795 Text.Op = PrintName("PreDecBitfieldIntAPS");
41796 Text.Args.push_back(printArg<bool>(PC));
41797 Text.Args.push_back(printArg<uint32_t>(PC));
41798 break;
41799case OP_PreDecBitfieldBool:
41800 Text.Op = PrintName("PreDecBitfieldBool");
41801 Text.Args.push_back(printArg<bool>(PC));
41802 Text.Args.push_back(printArg<uint32_t>(PC));
41803 break;
41804case OP_PreDecBitfieldFixedPoint:
41805 Text.Op = PrintName("PreDecBitfieldFixedPoint");
41806 Text.Args.push_back(printArg<bool>(PC));
41807 Text.Args.push_back(printArg<uint32_t>(PC));
41808 break;
41809#endif
41810#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41811bool emitPreDecBitfieldSint8( bool , uint32_t , SourceInfo);
41812bool emitPreDecBitfieldUint8( bool , uint32_t , SourceInfo);
41813bool emitPreDecBitfieldSint16( bool , uint32_t , SourceInfo);
41814bool emitPreDecBitfieldUint16( bool , uint32_t , SourceInfo);
41815bool emitPreDecBitfieldSint32( bool , uint32_t , SourceInfo);
41816bool emitPreDecBitfieldUint32( bool , uint32_t , SourceInfo);
41817bool emitPreDecBitfieldSint64( bool , uint32_t , SourceInfo);
41818bool emitPreDecBitfieldUint64( bool , uint32_t , SourceInfo);
41819bool emitPreDecBitfieldIntAP( bool , uint32_t , SourceInfo);
41820bool emitPreDecBitfieldIntAPS( bool , uint32_t , SourceInfo);
41821bool emitPreDecBitfieldBool( bool , uint32_t , SourceInfo);
41822bool emitPreDecBitfieldFixedPoint( bool , uint32_t , SourceInfo);
41823#endif
41824#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41825[[nodiscard]] bool emitPreDecBitfield(PrimType, bool, uint32_t, SourceInfo I);
41826#endif
41827#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
41828bool
41829#if defined(GET_EVAL_IMPL)
41830EvalEmitter
41831#else
41832ByteCodeEmitter
41833#endif
41834::emitPreDecBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
41835 switch (T0) {
41836 case PT_Sint8:
41837 return emitPreDecBitfieldSint8(A0, A1, I);
41838 case PT_Uint8:
41839 return emitPreDecBitfieldUint8(A0, A1, I);
41840 case PT_Sint16:
41841 return emitPreDecBitfieldSint16(A0, A1, I);
41842 case PT_Uint16:
41843 return emitPreDecBitfieldUint16(A0, A1, I);
41844 case PT_Sint32:
41845 return emitPreDecBitfieldSint32(A0, A1, I);
41846 case PT_Uint32:
41847 return emitPreDecBitfieldUint32(A0, A1, I);
41848 case PT_Sint64:
41849 return emitPreDecBitfieldSint64(A0, A1, I);
41850 case PT_Uint64:
41851 return emitPreDecBitfieldUint64(A0, A1, I);
41852 case PT_IntAP:
41853 return emitPreDecBitfieldIntAP(A0, A1, I);
41854 case PT_IntAPS:
41855 return emitPreDecBitfieldIntAPS(A0, A1, I);
41856 case PT_Bool:
41857 return emitPreDecBitfieldBool(A0, A1, I);
41858 case PT_FixedPoint:
41859 return emitPreDecBitfieldFixedPoint(A0, A1, I);
41860 default: llvm_unreachable("invalid type: emitPreDecBitfield");
41861 }
41862 llvm_unreachable("invalid enum value");
41863}
41864#endif
41865#ifdef GET_LINK_IMPL
41866bool ByteCodeEmitter::emitPreDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
41867 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint8, A0, A1, L);
41868}
41869bool ByteCodeEmitter::emitPreDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
41870 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint8, A0, A1, L);
41871}
41872bool ByteCodeEmitter::emitPreDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
41873 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint16, A0, A1, L);
41874}
41875bool ByteCodeEmitter::emitPreDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
41876 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint16, A0, A1, L);
41877}
41878bool ByteCodeEmitter::emitPreDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
41879 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint32, A0, A1, L);
41880}
41881bool ByteCodeEmitter::emitPreDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
41882 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint32, A0, A1, L);
41883}
41884bool ByteCodeEmitter::emitPreDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
41885 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint64, A0, A1, L);
41886}
41887bool ByteCodeEmitter::emitPreDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
41888 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint64, A0, A1, L);
41889}
41890bool ByteCodeEmitter::emitPreDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
41891 return emitOp<bool, uint32_t>(OP_PreDecBitfieldIntAP, A0, A1, L);
41892}
41893bool ByteCodeEmitter::emitPreDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
41894 return emitOp<bool, uint32_t>(OP_PreDecBitfieldIntAPS, A0, A1, L);
41895}
41896bool ByteCodeEmitter::emitPreDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
41897 return emitOp<bool, uint32_t>(OP_PreDecBitfieldBool, A0, A1, L);
41898}
41899bool ByteCodeEmitter::emitPreDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
41900 return emitOp<bool, uint32_t>(OP_PreDecBitfieldFixedPoint, A0, A1, L);
41901}
41902#endif
41903#ifdef GET_EVAL_IMPL
41904bool EvalEmitter::emitPreDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
41905 if (!isActive()) return true;
41906 CurrentSource = L;
41907 return PreDecBitfield<PT_Sint8>(S, CodePtr(), A0, A1);
41908}
41909bool EvalEmitter::emitPreDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
41910 if (!isActive()) return true;
41911 CurrentSource = L;
41912 return PreDecBitfield<PT_Uint8>(S, CodePtr(), A0, A1);
41913}
41914bool EvalEmitter::emitPreDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
41915 if (!isActive()) return true;
41916 CurrentSource = L;
41917 return PreDecBitfield<PT_Sint16>(S, CodePtr(), A0, A1);
41918}
41919bool EvalEmitter::emitPreDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
41920 if (!isActive()) return true;
41921 CurrentSource = L;
41922 return PreDecBitfield<PT_Uint16>(S, CodePtr(), A0, A1);
41923}
41924bool EvalEmitter::emitPreDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
41925 if (!isActive()) return true;
41926 CurrentSource = L;
41927 return PreDecBitfield<PT_Sint32>(S, CodePtr(), A0, A1);
41928}
41929bool EvalEmitter::emitPreDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
41930 if (!isActive()) return true;
41931 CurrentSource = L;
41932 return PreDecBitfield<PT_Uint32>(S, CodePtr(), A0, A1);
41933}
41934bool EvalEmitter::emitPreDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
41935 if (!isActive()) return true;
41936 CurrentSource = L;
41937 return PreDecBitfield<PT_Sint64>(S, CodePtr(), A0, A1);
41938}
41939bool EvalEmitter::emitPreDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
41940 if (!isActive()) return true;
41941 CurrentSource = L;
41942 return PreDecBitfield<PT_Uint64>(S, CodePtr(), A0, A1);
41943}
41944bool EvalEmitter::emitPreDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
41945 if (!isActive()) return true;
41946 CurrentSource = L;
41947 return PreDecBitfield<PT_IntAP>(S, CodePtr(), A0, A1);
41948}
41949bool EvalEmitter::emitPreDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
41950 if (!isActive()) return true;
41951 CurrentSource = L;
41952 return PreDecBitfield<PT_IntAPS>(S, CodePtr(), A0, A1);
41953}
41954bool EvalEmitter::emitPreDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
41955 if (!isActive()) return true;
41956 CurrentSource = L;
41957 return PreDecBitfield<PT_Bool>(S, CodePtr(), A0, A1);
41958}
41959bool EvalEmitter::emitPreDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
41960 if (!isActive()) return true;
41961 CurrentSource = L;
41962 return PreDecBitfield<PT_FixedPoint>(S, CodePtr(), A0, A1);
41963}
41964#endif
41965#ifdef GET_OPCODE_NAMES
41966OP_PreIncSint8,
41967OP_PreIncUint8,
41968OP_PreIncSint16,
41969OP_PreIncUint16,
41970OP_PreIncSint32,
41971OP_PreIncUint32,
41972OP_PreIncSint64,
41973OP_PreIncUint64,
41974OP_PreIncIntAP,
41975OP_PreIncIntAPS,
41976OP_PreIncBool,
41977OP_PreIncFixedPoint,
41978#endif
41979#ifdef GET_INTERPFN_LIST
41980&Interp_PreIncSint8,
41981&Interp_PreIncUint8,
41982&Interp_PreIncSint16,
41983&Interp_PreIncUint16,
41984&Interp_PreIncSint32,
41985&Interp_PreIncUint32,
41986&Interp_PreIncSint64,
41987&Interp_PreIncUint64,
41988&Interp_PreIncIntAP,
41989&Interp_PreIncIntAPS,
41990&Interp_PreIncBool,
41991&Interp_PreIncFixedPoint,
41992#endif
41993#ifdef GET_INTERPFN_DISPATCHERS
41994PRESERVE_NONE
41995static bool Interp_PreIncSint8(InterpState &S) {
41996 {
41997 CodePtr OpPC = S.PC;
41998 const auto V0 = ReadArg<bool>(S, S.PC);
41999 if (!PreInc<PT_Sint8>(S, OpPC, V0)) return false;
42000 }
42001#if USE_TAILCALLS
42002 MUSTTAIL return InterpNext(S);
42003#else
42004 return true;
42005#endif
42006}
42007PRESERVE_NONE
42008static bool Interp_PreIncUint8(InterpState &S) {
42009 {
42010 CodePtr OpPC = S.PC;
42011 const auto V0 = ReadArg<bool>(S, S.PC);
42012 if (!PreInc<PT_Uint8>(S, OpPC, V0)) return false;
42013 }
42014#if USE_TAILCALLS
42015 MUSTTAIL return InterpNext(S);
42016#else
42017 return true;
42018#endif
42019}
42020PRESERVE_NONE
42021static bool Interp_PreIncSint16(InterpState &S) {
42022 {
42023 CodePtr OpPC = S.PC;
42024 const auto V0 = ReadArg<bool>(S, S.PC);
42025 if (!PreInc<PT_Sint16>(S, OpPC, V0)) return false;
42026 }
42027#if USE_TAILCALLS
42028 MUSTTAIL return InterpNext(S);
42029#else
42030 return true;
42031#endif
42032}
42033PRESERVE_NONE
42034static bool Interp_PreIncUint16(InterpState &S) {
42035 {
42036 CodePtr OpPC = S.PC;
42037 const auto V0 = ReadArg<bool>(S, S.PC);
42038 if (!PreInc<PT_Uint16>(S, OpPC, V0)) return false;
42039 }
42040#if USE_TAILCALLS
42041 MUSTTAIL return InterpNext(S);
42042#else
42043 return true;
42044#endif
42045}
42046PRESERVE_NONE
42047static bool Interp_PreIncSint32(InterpState &S) {
42048 {
42049 CodePtr OpPC = S.PC;
42050 const auto V0 = ReadArg<bool>(S, S.PC);
42051 if (!PreInc<PT_Sint32>(S, OpPC, V0)) return false;
42052 }
42053#if USE_TAILCALLS
42054 MUSTTAIL return InterpNext(S);
42055#else
42056 return true;
42057#endif
42058}
42059PRESERVE_NONE
42060static bool Interp_PreIncUint32(InterpState &S) {
42061 {
42062 CodePtr OpPC = S.PC;
42063 const auto V0 = ReadArg<bool>(S, S.PC);
42064 if (!PreInc<PT_Uint32>(S, OpPC, V0)) return false;
42065 }
42066#if USE_TAILCALLS
42067 MUSTTAIL return InterpNext(S);
42068#else
42069 return true;
42070#endif
42071}
42072PRESERVE_NONE
42073static bool Interp_PreIncSint64(InterpState &S) {
42074 {
42075 CodePtr OpPC = S.PC;
42076 const auto V0 = ReadArg<bool>(S, S.PC);
42077 if (!PreInc<PT_Sint64>(S, OpPC, V0)) return false;
42078 }
42079#if USE_TAILCALLS
42080 MUSTTAIL return InterpNext(S);
42081#else
42082 return true;
42083#endif
42084}
42085PRESERVE_NONE
42086static bool Interp_PreIncUint64(InterpState &S) {
42087 {
42088 CodePtr OpPC = S.PC;
42089 const auto V0 = ReadArg<bool>(S, S.PC);
42090 if (!PreInc<PT_Uint64>(S, OpPC, V0)) return false;
42091 }
42092#if USE_TAILCALLS
42093 MUSTTAIL return InterpNext(S);
42094#else
42095 return true;
42096#endif
42097}
42098PRESERVE_NONE
42099static bool Interp_PreIncIntAP(InterpState &S) {
42100 {
42101 CodePtr OpPC = S.PC;
42102 const auto V0 = ReadArg<bool>(S, S.PC);
42103 if (!PreInc<PT_IntAP>(S, OpPC, V0)) return false;
42104 }
42105#if USE_TAILCALLS
42106 MUSTTAIL return InterpNext(S);
42107#else
42108 return true;
42109#endif
42110}
42111PRESERVE_NONE
42112static bool Interp_PreIncIntAPS(InterpState &S) {
42113 {
42114 CodePtr OpPC = S.PC;
42115 const auto V0 = ReadArg<bool>(S, S.PC);
42116 if (!PreInc<PT_IntAPS>(S, OpPC, V0)) return false;
42117 }
42118#if USE_TAILCALLS
42119 MUSTTAIL return InterpNext(S);
42120#else
42121 return true;
42122#endif
42123}
42124PRESERVE_NONE
42125static bool Interp_PreIncBool(InterpState &S) {
42126 {
42127 CodePtr OpPC = S.PC;
42128 const auto V0 = ReadArg<bool>(S, S.PC);
42129 if (!PreInc<PT_Bool>(S, OpPC, V0)) return false;
42130 }
42131#if USE_TAILCALLS
42132 MUSTTAIL return InterpNext(S);
42133#else
42134 return true;
42135#endif
42136}
42137PRESERVE_NONE
42138static bool Interp_PreIncFixedPoint(InterpState &S) {
42139 {
42140 CodePtr OpPC = S.PC;
42141 const auto V0 = ReadArg<bool>(S, S.PC);
42142 if (!PreInc<PT_FixedPoint>(S, OpPC, V0)) return false;
42143 }
42144#if USE_TAILCALLS
42145 MUSTTAIL return InterpNext(S);
42146#else
42147 return true;
42148#endif
42149}
42150#endif
42151#ifdef GET_DISASM
42152case OP_PreIncSint8:
42153 Text.Op = PrintName("PreIncSint8");
42154 Text.Args.push_back(printArg<bool>(PC));
42155 break;
42156case OP_PreIncUint8:
42157 Text.Op = PrintName("PreIncUint8");
42158 Text.Args.push_back(printArg<bool>(PC));
42159 break;
42160case OP_PreIncSint16:
42161 Text.Op = PrintName("PreIncSint16");
42162 Text.Args.push_back(printArg<bool>(PC));
42163 break;
42164case OP_PreIncUint16:
42165 Text.Op = PrintName("PreIncUint16");
42166 Text.Args.push_back(printArg<bool>(PC));
42167 break;
42168case OP_PreIncSint32:
42169 Text.Op = PrintName("PreIncSint32");
42170 Text.Args.push_back(printArg<bool>(PC));
42171 break;
42172case OP_PreIncUint32:
42173 Text.Op = PrintName("PreIncUint32");
42174 Text.Args.push_back(printArg<bool>(PC));
42175 break;
42176case OP_PreIncSint64:
42177 Text.Op = PrintName("PreIncSint64");
42178 Text.Args.push_back(printArg<bool>(PC));
42179 break;
42180case OP_PreIncUint64:
42181 Text.Op = PrintName("PreIncUint64");
42182 Text.Args.push_back(printArg<bool>(PC));
42183 break;
42184case OP_PreIncIntAP:
42185 Text.Op = PrintName("PreIncIntAP");
42186 Text.Args.push_back(printArg<bool>(PC));
42187 break;
42188case OP_PreIncIntAPS:
42189 Text.Op = PrintName("PreIncIntAPS");
42190 Text.Args.push_back(printArg<bool>(PC));
42191 break;
42192case OP_PreIncBool:
42193 Text.Op = PrintName("PreIncBool");
42194 Text.Args.push_back(printArg<bool>(PC));
42195 break;
42196case OP_PreIncFixedPoint:
42197 Text.Op = PrintName("PreIncFixedPoint");
42198 Text.Args.push_back(printArg<bool>(PC));
42199 break;
42200#endif
42201#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42202bool emitPreIncSint8( bool , SourceInfo);
42203bool emitPreIncUint8( bool , SourceInfo);
42204bool emitPreIncSint16( bool , SourceInfo);
42205bool emitPreIncUint16( bool , SourceInfo);
42206bool emitPreIncSint32( bool , SourceInfo);
42207bool emitPreIncUint32( bool , SourceInfo);
42208bool emitPreIncSint64( bool , SourceInfo);
42209bool emitPreIncUint64( bool , SourceInfo);
42210bool emitPreIncIntAP( bool , SourceInfo);
42211bool emitPreIncIntAPS( bool , SourceInfo);
42212bool emitPreIncBool( bool , SourceInfo);
42213bool emitPreIncFixedPoint( bool , SourceInfo);
42214#endif
42215#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42216[[nodiscard]] bool emitPreInc(PrimType, bool, SourceInfo I);
42217#endif
42218#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
42219bool
42220#if defined(GET_EVAL_IMPL)
42221EvalEmitter
42222#else
42223ByteCodeEmitter
42224#endif
42225::emitPreInc(PrimType T0, bool A0, SourceInfo I) {
42226 switch (T0) {
42227 case PT_Sint8:
42228 return emitPreIncSint8(A0, I);
42229 case PT_Uint8:
42230 return emitPreIncUint8(A0, I);
42231 case PT_Sint16:
42232 return emitPreIncSint16(A0, I);
42233 case PT_Uint16:
42234 return emitPreIncUint16(A0, I);
42235 case PT_Sint32:
42236 return emitPreIncSint32(A0, I);
42237 case PT_Uint32:
42238 return emitPreIncUint32(A0, I);
42239 case PT_Sint64:
42240 return emitPreIncSint64(A0, I);
42241 case PT_Uint64:
42242 return emitPreIncUint64(A0, I);
42243 case PT_IntAP:
42244 return emitPreIncIntAP(A0, I);
42245 case PT_IntAPS:
42246 return emitPreIncIntAPS(A0, I);
42247 case PT_Bool:
42248 return emitPreIncBool(A0, I);
42249 case PT_FixedPoint:
42250 return emitPreIncFixedPoint(A0, I);
42251 default: llvm_unreachable("invalid type: emitPreInc");
42252 }
42253 llvm_unreachable("invalid enum value");
42254}
42255#endif
42256#ifdef GET_LINK_IMPL
42257bool ByteCodeEmitter::emitPreIncSint8( bool A0, SourceInfo L) {
42258 return emitOp<bool>(OP_PreIncSint8, A0, L);
42259}
42260bool ByteCodeEmitter::emitPreIncUint8( bool A0, SourceInfo L) {
42261 return emitOp<bool>(OP_PreIncUint8, A0, L);
42262}
42263bool ByteCodeEmitter::emitPreIncSint16( bool A0, SourceInfo L) {
42264 return emitOp<bool>(OP_PreIncSint16, A0, L);
42265}
42266bool ByteCodeEmitter::emitPreIncUint16( bool A0, SourceInfo L) {
42267 return emitOp<bool>(OP_PreIncUint16, A0, L);
42268}
42269bool ByteCodeEmitter::emitPreIncSint32( bool A0, SourceInfo L) {
42270 return emitOp<bool>(OP_PreIncSint32, A0, L);
42271}
42272bool ByteCodeEmitter::emitPreIncUint32( bool A0, SourceInfo L) {
42273 return emitOp<bool>(OP_PreIncUint32, A0, L);
42274}
42275bool ByteCodeEmitter::emitPreIncSint64( bool A0, SourceInfo L) {
42276 return emitOp<bool>(OP_PreIncSint64, A0, L);
42277}
42278bool ByteCodeEmitter::emitPreIncUint64( bool A0, SourceInfo L) {
42279 return emitOp<bool>(OP_PreIncUint64, A0, L);
42280}
42281bool ByteCodeEmitter::emitPreIncIntAP( bool A0, SourceInfo L) {
42282 return emitOp<bool>(OP_PreIncIntAP, A0, L);
42283}
42284bool ByteCodeEmitter::emitPreIncIntAPS( bool A0, SourceInfo L) {
42285 return emitOp<bool>(OP_PreIncIntAPS, A0, L);
42286}
42287bool ByteCodeEmitter::emitPreIncBool( bool A0, SourceInfo L) {
42288 return emitOp<bool>(OP_PreIncBool, A0, L);
42289}
42290bool ByteCodeEmitter::emitPreIncFixedPoint( bool A0, SourceInfo L) {
42291 return emitOp<bool>(OP_PreIncFixedPoint, A0, L);
42292}
42293#endif
42294#ifdef GET_EVAL_IMPL
42295bool EvalEmitter::emitPreIncSint8( bool A0, SourceInfo L) {
42296 if (!isActive()) return true;
42297 CurrentSource = L;
42298 return PreInc<PT_Sint8>(S, CodePtr(), A0);
42299}
42300bool EvalEmitter::emitPreIncUint8( bool A0, SourceInfo L) {
42301 if (!isActive()) return true;
42302 CurrentSource = L;
42303 return PreInc<PT_Uint8>(S, CodePtr(), A0);
42304}
42305bool EvalEmitter::emitPreIncSint16( bool A0, SourceInfo L) {
42306 if (!isActive()) return true;
42307 CurrentSource = L;
42308 return PreInc<PT_Sint16>(S, CodePtr(), A0);
42309}
42310bool EvalEmitter::emitPreIncUint16( bool A0, SourceInfo L) {
42311 if (!isActive()) return true;
42312 CurrentSource = L;
42313 return PreInc<PT_Uint16>(S, CodePtr(), A0);
42314}
42315bool EvalEmitter::emitPreIncSint32( bool A0, SourceInfo L) {
42316 if (!isActive()) return true;
42317 CurrentSource = L;
42318 return PreInc<PT_Sint32>(S, CodePtr(), A0);
42319}
42320bool EvalEmitter::emitPreIncUint32( bool A0, SourceInfo L) {
42321 if (!isActive()) return true;
42322 CurrentSource = L;
42323 return PreInc<PT_Uint32>(S, CodePtr(), A0);
42324}
42325bool EvalEmitter::emitPreIncSint64( bool A0, SourceInfo L) {
42326 if (!isActive()) return true;
42327 CurrentSource = L;
42328 return PreInc<PT_Sint64>(S, CodePtr(), A0);
42329}
42330bool EvalEmitter::emitPreIncUint64( bool A0, SourceInfo L) {
42331 if (!isActive()) return true;
42332 CurrentSource = L;
42333 return PreInc<PT_Uint64>(S, CodePtr(), A0);
42334}
42335bool EvalEmitter::emitPreIncIntAP( bool A0, SourceInfo L) {
42336 if (!isActive()) return true;
42337 CurrentSource = L;
42338 return PreInc<PT_IntAP>(S, CodePtr(), A0);
42339}
42340bool EvalEmitter::emitPreIncIntAPS( bool A0, SourceInfo L) {
42341 if (!isActive()) return true;
42342 CurrentSource = L;
42343 return PreInc<PT_IntAPS>(S, CodePtr(), A0);
42344}
42345bool EvalEmitter::emitPreIncBool( bool A0, SourceInfo L) {
42346 if (!isActive()) return true;
42347 CurrentSource = L;
42348 return PreInc<PT_Bool>(S, CodePtr(), A0);
42349}
42350bool EvalEmitter::emitPreIncFixedPoint( bool A0, SourceInfo L) {
42351 if (!isActive()) return true;
42352 CurrentSource = L;
42353 return PreInc<PT_FixedPoint>(S, CodePtr(), A0);
42354}
42355#endif
42356#ifdef GET_OPCODE_NAMES
42357OP_PreIncBitfieldSint8,
42358OP_PreIncBitfieldUint8,
42359OP_PreIncBitfieldSint16,
42360OP_PreIncBitfieldUint16,
42361OP_PreIncBitfieldSint32,
42362OP_PreIncBitfieldUint32,
42363OP_PreIncBitfieldSint64,
42364OP_PreIncBitfieldUint64,
42365OP_PreIncBitfieldIntAP,
42366OP_PreIncBitfieldIntAPS,
42367OP_PreIncBitfieldBool,
42368OP_PreIncBitfieldFixedPoint,
42369#endif
42370#ifdef GET_INTERPFN_LIST
42371&Interp_PreIncBitfieldSint8,
42372&Interp_PreIncBitfieldUint8,
42373&Interp_PreIncBitfieldSint16,
42374&Interp_PreIncBitfieldUint16,
42375&Interp_PreIncBitfieldSint32,
42376&Interp_PreIncBitfieldUint32,
42377&Interp_PreIncBitfieldSint64,
42378&Interp_PreIncBitfieldUint64,
42379&Interp_PreIncBitfieldIntAP,
42380&Interp_PreIncBitfieldIntAPS,
42381&Interp_PreIncBitfieldBool,
42382&Interp_PreIncBitfieldFixedPoint,
42383#endif
42384#ifdef GET_INTERPFN_DISPATCHERS
42385PRESERVE_NONE
42386static bool Interp_PreIncBitfieldSint8(InterpState &S) {
42387 {
42388 CodePtr OpPC = S.PC;
42389 const auto V0 = ReadArg<bool>(S, S.PC);
42390 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42391 if (!PreIncBitfield<PT_Sint8>(S, OpPC, V0, V1)) return false;
42392 }
42393#if USE_TAILCALLS
42394 MUSTTAIL return InterpNext(S);
42395#else
42396 return true;
42397#endif
42398}
42399PRESERVE_NONE
42400static bool Interp_PreIncBitfieldUint8(InterpState &S) {
42401 {
42402 CodePtr OpPC = S.PC;
42403 const auto V0 = ReadArg<bool>(S, S.PC);
42404 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42405 if (!PreIncBitfield<PT_Uint8>(S, OpPC, V0, V1)) return false;
42406 }
42407#if USE_TAILCALLS
42408 MUSTTAIL return InterpNext(S);
42409#else
42410 return true;
42411#endif
42412}
42413PRESERVE_NONE
42414static bool Interp_PreIncBitfieldSint16(InterpState &S) {
42415 {
42416 CodePtr OpPC = S.PC;
42417 const auto V0 = ReadArg<bool>(S, S.PC);
42418 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42419 if (!PreIncBitfield<PT_Sint16>(S, OpPC, V0, V1)) return false;
42420 }
42421#if USE_TAILCALLS
42422 MUSTTAIL return InterpNext(S);
42423#else
42424 return true;
42425#endif
42426}
42427PRESERVE_NONE
42428static bool Interp_PreIncBitfieldUint16(InterpState &S) {
42429 {
42430 CodePtr OpPC = S.PC;
42431 const auto V0 = ReadArg<bool>(S, S.PC);
42432 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42433 if (!PreIncBitfield<PT_Uint16>(S, OpPC, V0, V1)) return false;
42434 }
42435#if USE_TAILCALLS
42436 MUSTTAIL return InterpNext(S);
42437#else
42438 return true;
42439#endif
42440}
42441PRESERVE_NONE
42442static bool Interp_PreIncBitfieldSint32(InterpState &S) {
42443 {
42444 CodePtr OpPC = S.PC;
42445 const auto V0 = ReadArg<bool>(S, S.PC);
42446 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42447 if (!PreIncBitfield<PT_Sint32>(S, OpPC, V0, V1)) return false;
42448 }
42449#if USE_TAILCALLS
42450 MUSTTAIL return InterpNext(S);
42451#else
42452 return true;
42453#endif
42454}
42455PRESERVE_NONE
42456static bool Interp_PreIncBitfieldUint32(InterpState &S) {
42457 {
42458 CodePtr OpPC = S.PC;
42459 const auto V0 = ReadArg<bool>(S, S.PC);
42460 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42461 if (!PreIncBitfield<PT_Uint32>(S, OpPC, V0, V1)) return false;
42462 }
42463#if USE_TAILCALLS
42464 MUSTTAIL return InterpNext(S);
42465#else
42466 return true;
42467#endif
42468}
42469PRESERVE_NONE
42470static bool Interp_PreIncBitfieldSint64(InterpState &S) {
42471 {
42472 CodePtr OpPC = S.PC;
42473 const auto V0 = ReadArg<bool>(S, S.PC);
42474 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42475 if (!PreIncBitfield<PT_Sint64>(S, OpPC, V0, V1)) return false;
42476 }
42477#if USE_TAILCALLS
42478 MUSTTAIL return InterpNext(S);
42479#else
42480 return true;
42481#endif
42482}
42483PRESERVE_NONE
42484static bool Interp_PreIncBitfieldUint64(InterpState &S) {
42485 {
42486 CodePtr OpPC = S.PC;
42487 const auto V0 = ReadArg<bool>(S, S.PC);
42488 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42489 if (!PreIncBitfield<PT_Uint64>(S, OpPC, V0, V1)) return false;
42490 }
42491#if USE_TAILCALLS
42492 MUSTTAIL return InterpNext(S);
42493#else
42494 return true;
42495#endif
42496}
42497PRESERVE_NONE
42498static bool Interp_PreIncBitfieldIntAP(InterpState &S) {
42499 {
42500 CodePtr OpPC = S.PC;
42501 const auto V0 = ReadArg<bool>(S, S.PC);
42502 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42503 if (!PreIncBitfield<PT_IntAP>(S, OpPC, V0, V1)) return false;
42504 }
42505#if USE_TAILCALLS
42506 MUSTTAIL return InterpNext(S);
42507#else
42508 return true;
42509#endif
42510}
42511PRESERVE_NONE
42512static bool Interp_PreIncBitfieldIntAPS(InterpState &S) {
42513 {
42514 CodePtr OpPC = S.PC;
42515 const auto V0 = ReadArg<bool>(S, S.PC);
42516 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42517 if (!PreIncBitfield<PT_IntAPS>(S, OpPC, V0, V1)) return false;
42518 }
42519#if USE_TAILCALLS
42520 MUSTTAIL return InterpNext(S);
42521#else
42522 return true;
42523#endif
42524}
42525PRESERVE_NONE
42526static bool Interp_PreIncBitfieldBool(InterpState &S) {
42527 {
42528 CodePtr OpPC = S.PC;
42529 const auto V0 = ReadArg<bool>(S, S.PC);
42530 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42531 if (!PreIncBitfield<PT_Bool>(S, OpPC, V0, V1)) return false;
42532 }
42533#if USE_TAILCALLS
42534 MUSTTAIL return InterpNext(S);
42535#else
42536 return true;
42537#endif
42538}
42539PRESERVE_NONE
42540static bool Interp_PreIncBitfieldFixedPoint(InterpState &S) {
42541 {
42542 CodePtr OpPC = S.PC;
42543 const auto V0 = ReadArg<bool>(S, S.PC);
42544 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42545 if (!PreIncBitfield<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
42546 }
42547#if USE_TAILCALLS
42548 MUSTTAIL return InterpNext(S);
42549#else
42550 return true;
42551#endif
42552}
42553#endif
42554#ifdef GET_DISASM
42555case OP_PreIncBitfieldSint8:
42556 Text.Op = PrintName("PreIncBitfieldSint8");
42557 Text.Args.push_back(printArg<bool>(PC));
42558 Text.Args.push_back(printArg<uint32_t>(PC));
42559 break;
42560case OP_PreIncBitfieldUint8:
42561 Text.Op = PrintName("PreIncBitfieldUint8");
42562 Text.Args.push_back(printArg<bool>(PC));
42563 Text.Args.push_back(printArg<uint32_t>(PC));
42564 break;
42565case OP_PreIncBitfieldSint16:
42566 Text.Op = PrintName("PreIncBitfieldSint16");
42567 Text.Args.push_back(printArg<bool>(PC));
42568 Text.Args.push_back(printArg<uint32_t>(PC));
42569 break;
42570case OP_PreIncBitfieldUint16:
42571 Text.Op = PrintName("PreIncBitfieldUint16");
42572 Text.Args.push_back(printArg<bool>(PC));
42573 Text.Args.push_back(printArg<uint32_t>(PC));
42574 break;
42575case OP_PreIncBitfieldSint32:
42576 Text.Op = PrintName("PreIncBitfieldSint32");
42577 Text.Args.push_back(printArg<bool>(PC));
42578 Text.Args.push_back(printArg<uint32_t>(PC));
42579 break;
42580case OP_PreIncBitfieldUint32:
42581 Text.Op = PrintName("PreIncBitfieldUint32");
42582 Text.Args.push_back(printArg<bool>(PC));
42583 Text.Args.push_back(printArg<uint32_t>(PC));
42584 break;
42585case OP_PreIncBitfieldSint64:
42586 Text.Op = PrintName("PreIncBitfieldSint64");
42587 Text.Args.push_back(printArg<bool>(PC));
42588 Text.Args.push_back(printArg<uint32_t>(PC));
42589 break;
42590case OP_PreIncBitfieldUint64:
42591 Text.Op = PrintName("PreIncBitfieldUint64");
42592 Text.Args.push_back(printArg<bool>(PC));
42593 Text.Args.push_back(printArg<uint32_t>(PC));
42594 break;
42595case OP_PreIncBitfieldIntAP:
42596 Text.Op = PrintName("PreIncBitfieldIntAP");
42597 Text.Args.push_back(printArg<bool>(PC));
42598 Text.Args.push_back(printArg<uint32_t>(PC));
42599 break;
42600case OP_PreIncBitfieldIntAPS:
42601 Text.Op = PrintName("PreIncBitfieldIntAPS");
42602 Text.Args.push_back(printArg<bool>(PC));
42603 Text.Args.push_back(printArg<uint32_t>(PC));
42604 break;
42605case OP_PreIncBitfieldBool:
42606 Text.Op = PrintName("PreIncBitfieldBool");
42607 Text.Args.push_back(printArg<bool>(PC));
42608 Text.Args.push_back(printArg<uint32_t>(PC));
42609 break;
42610case OP_PreIncBitfieldFixedPoint:
42611 Text.Op = PrintName("PreIncBitfieldFixedPoint");
42612 Text.Args.push_back(printArg<bool>(PC));
42613 Text.Args.push_back(printArg<uint32_t>(PC));
42614 break;
42615#endif
42616#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42617bool emitPreIncBitfieldSint8( bool , uint32_t , SourceInfo);
42618bool emitPreIncBitfieldUint8( bool , uint32_t , SourceInfo);
42619bool emitPreIncBitfieldSint16( bool , uint32_t , SourceInfo);
42620bool emitPreIncBitfieldUint16( bool , uint32_t , SourceInfo);
42621bool emitPreIncBitfieldSint32( bool , uint32_t , SourceInfo);
42622bool emitPreIncBitfieldUint32( bool , uint32_t , SourceInfo);
42623bool emitPreIncBitfieldSint64( bool , uint32_t , SourceInfo);
42624bool emitPreIncBitfieldUint64( bool , uint32_t , SourceInfo);
42625bool emitPreIncBitfieldIntAP( bool , uint32_t , SourceInfo);
42626bool emitPreIncBitfieldIntAPS( bool , uint32_t , SourceInfo);
42627bool emitPreIncBitfieldBool( bool , uint32_t , SourceInfo);
42628bool emitPreIncBitfieldFixedPoint( bool , uint32_t , SourceInfo);
42629#endif
42630#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42631[[nodiscard]] bool emitPreIncBitfield(PrimType, bool, uint32_t, SourceInfo I);
42632#endif
42633#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
42634bool
42635#if defined(GET_EVAL_IMPL)
42636EvalEmitter
42637#else
42638ByteCodeEmitter
42639#endif
42640::emitPreIncBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
42641 switch (T0) {
42642 case PT_Sint8:
42643 return emitPreIncBitfieldSint8(A0, A1, I);
42644 case PT_Uint8:
42645 return emitPreIncBitfieldUint8(A0, A1, I);
42646 case PT_Sint16:
42647 return emitPreIncBitfieldSint16(A0, A1, I);
42648 case PT_Uint16:
42649 return emitPreIncBitfieldUint16(A0, A1, I);
42650 case PT_Sint32:
42651 return emitPreIncBitfieldSint32(A0, A1, I);
42652 case PT_Uint32:
42653 return emitPreIncBitfieldUint32(A0, A1, I);
42654 case PT_Sint64:
42655 return emitPreIncBitfieldSint64(A0, A1, I);
42656 case PT_Uint64:
42657 return emitPreIncBitfieldUint64(A0, A1, I);
42658 case PT_IntAP:
42659 return emitPreIncBitfieldIntAP(A0, A1, I);
42660 case PT_IntAPS:
42661 return emitPreIncBitfieldIntAPS(A0, A1, I);
42662 case PT_Bool:
42663 return emitPreIncBitfieldBool(A0, A1, I);
42664 case PT_FixedPoint:
42665 return emitPreIncBitfieldFixedPoint(A0, A1, I);
42666 default: llvm_unreachable("invalid type: emitPreIncBitfield");
42667 }
42668 llvm_unreachable("invalid enum value");
42669}
42670#endif
42671#ifdef GET_LINK_IMPL
42672bool ByteCodeEmitter::emitPreIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
42673 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint8, A0, A1, L);
42674}
42675bool ByteCodeEmitter::emitPreIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
42676 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint8, A0, A1, L);
42677}
42678bool ByteCodeEmitter::emitPreIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
42679 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint16, A0, A1, L);
42680}
42681bool ByteCodeEmitter::emitPreIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
42682 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint16, A0, A1, L);
42683}
42684bool ByteCodeEmitter::emitPreIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
42685 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint32, A0, A1, L);
42686}
42687bool ByteCodeEmitter::emitPreIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
42688 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint32, A0, A1, L);
42689}
42690bool ByteCodeEmitter::emitPreIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
42691 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint64, A0, A1, L);
42692}
42693bool ByteCodeEmitter::emitPreIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
42694 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint64, A0, A1, L);
42695}
42696bool ByteCodeEmitter::emitPreIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
42697 return emitOp<bool, uint32_t>(OP_PreIncBitfieldIntAP, A0, A1, L);
42698}
42699bool ByteCodeEmitter::emitPreIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
42700 return emitOp<bool, uint32_t>(OP_PreIncBitfieldIntAPS, A0, A1, L);
42701}
42702bool ByteCodeEmitter::emitPreIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
42703 return emitOp<bool, uint32_t>(OP_PreIncBitfieldBool, A0, A1, L);
42704}
42705bool ByteCodeEmitter::emitPreIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
42706 return emitOp<bool, uint32_t>(OP_PreIncBitfieldFixedPoint, A0, A1, L);
42707}
42708#endif
42709#ifdef GET_EVAL_IMPL
42710bool EvalEmitter::emitPreIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
42711 if (!isActive()) return true;
42712 CurrentSource = L;
42713 return PreIncBitfield<PT_Sint8>(S, CodePtr(), A0, A1);
42714}
42715bool EvalEmitter::emitPreIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
42716 if (!isActive()) return true;
42717 CurrentSource = L;
42718 return PreIncBitfield<PT_Uint8>(S, CodePtr(), A0, A1);
42719}
42720bool EvalEmitter::emitPreIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
42721 if (!isActive()) return true;
42722 CurrentSource = L;
42723 return PreIncBitfield<PT_Sint16>(S, CodePtr(), A0, A1);
42724}
42725bool EvalEmitter::emitPreIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
42726 if (!isActive()) return true;
42727 CurrentSource = L;
42728 return PreIncBitfield<PT_Uint16>(S, CodePtr(), A0, A1);
42729}
42730bool EvalEmitter::emitPreIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
42731 if (!isActive()) return true;
42732 CurrentSource = L;
42733 return PreIncBitfield<PT_Sint32>(S, CodePtr(), A0, A1);
42734}
42735bool EvalEmitter::emitPreIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
42736 if (!isActive()) return true;
42737 CurrentSource = L;
42738 return PreIncBitfield<PT_Uint32>(S, CodePtr(), A0, A1);
42739}
42740bool EvalEmitter::emitPreIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
42741 if (!isActive()) return true;
42742 CurrentSource = L;
42743 return PreIncBitfield<PT_Sint64>(S, CodePtr(), A0, A1);
42744}
42745bool EvalEmitter::emitPreIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
42746 if (!isActive()) return true;
42747 CurrentSource = L;
42748 return PreIncBitfield<PT_Uint64>(S, CodePtr(), A0, A1);
42749}
42750bool EvalEmitter::emitPreIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
42751 if (!isActive()) return true;
42752 CurrentSource = L;
42753 return PreIncBitfield<PT_IntAP>(S, CodePtr(), A0, A1);
42754}
42755bool EvalEmitter::emitPreIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
42756 if (!isActive()) return true;
42757 CurrentSource = L;
42758 return PreIncBitfield<PT_IntAPS>(S, CodePtr(), A0, A1);
42759}
42760bool EvalEmitter::emitPreIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
42761 if (!isActive()) return true;
42762 CurrentSource = L;
42763 return PreIncBitfield<PT_Bool>(S, CodePtr(), A0, A1);
42764}
42765bool EvalEmitter::emitPreIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
42766 if (!isActive()) return true;
42767 CurrentSource = L;
42768 return PreIncBitfield<PT_FixedPoint>(S, CodePtr(), A0, A1);
42769}
42770#endif
42771#ifdef GET_OPCODE_NAMES
42772OP_PseudoDtor,
42773#endif
42774#ifdef GET_INTERPFN_LIST
42775&Interp_PseudoDtor,
42776#endif
42777#ifdef GET_INTERPFN_DISPATCHERS
42778PRESERVE_NONE
42779static bool Interp_PseudoDtor(InterpState &S) {
42780 if (!PseudoDtor(S, S.PC)) return false;
42781#if USE_TAILCALLS
42782 MUSTTAIL return InterpNext(S);
42783#else
42784 return true;
42785#endif
42786}
42787#endif
42788#ifdef GET_DISASM
42789case OP_PseudoDtor:
42790 Text.Op = PrintName("PseudoDtor");
42791 break;
42792#endif
42793#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42794bool emitPseudoDtor(SourceInfo);
42795#endif
42796#ifdef GET_LINK_IMPL
42797bool ByteCodeEmitter::emitPseudoDtor(SourceInfo L) {
42798 return emitOp<>(OP_PseudoDtor, L);
42799}
42800#endif
42801#ifdef GET_EVAL_IMPL
42802bool EvalEmitter::emitPseudoDtor(SourceInfo L) {
42803 if (!isActive()) return true;
42804 CurrentSource = L;
42805 return PseudoDtor(S, CodePtr());
42806}
42807#endif
42808#ifdef GET_OPCODE_NAMES
42809OP_PtrPtrCast,
42810#endif
42811#ifdef GET_INTERPFN_LIST
42812&Interp_PtrPtrCast,
42813#endif
42814#ifdef GET_INTERPFN_DISPATCHERS
42815PRESERVE_NONE
42816static bool Interp_PtrPtrCast(InterpState &S) {
42817 {
42818 CodePtr OpPC = S.PC;
42819 const auto V0 = ReadArg<bool>(S, S.PC);
42820 if (!PtrPtrCast(S, OpPC, V0)) return false;
42821 }
42822#if USE_TAILCALLS
42823 MUSTTAIL return InterpNext(S);
42824#else
42825 return true;
42826#endif
42827}
42828#endif
42829#ifdef GET_DISASM
42830case OP_PtrPtrCast:
42831 Text.Op = PrintName("PtrPtrCast");
42832 Text.Args.push_back(printArg<bool>(PC));
42833 break;
42834#endif
42835#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42836bool emitPtrPtrCast( bool , SourceInfo);
42837#endif
42838#ifdef GET_LINK_IMPL
42839bool ByteCodeEmitter::emitPtrPtrCast( bool A0, SourceInfo L) {
42840 return emitOp<bool>(OP_PtrPtrCast, A0, L);
42841}
42842#endif
42843#ifdef GET_EVAL_IMPL
42844bool EvalEmitter::emitPtrPtrCast( bool A0, SourceInfo L) {
42845 if (!isActive()) return true;
42846 CurrentSource = L;
42847 return PtrPtrCast(S, CodePtr(), A0);
42848}
42849#endif
42850#ifdef GET_OPCODE_NAMES
42851OP_PushCC,
42852#endif
42853#ifdef GET_INTERPFN_LIST
42854&Interp_PushCC,
42855#endif
42856#ifdef GET_INTERPFN_DISPATCHERS
42857PRESERVE_NONE
42858static bool Interp_PushCC(InterpState &S) {
42859 {
42860 const auto V0 = ReadArg<bool>(S, S.PC);
42861 PushCC(S, V0);
42862 }
42863#if USE_TAILCALLS
42864 MUSTTAIL return InterpNext(S);
42865#else
42866 return true;
42867#endif
42868}
42869#endif
42870#ifdef GET_DISASM
42871case OP_PushCC:
42872 Text.Op = PrintName("PushCC");
42873 Text.Args.push_back(printArg<bool>(PC));
42874 break;
42875#endif
42876#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42877bool emitPushCC( bool , SourceInfo);
42878#endif
42879#ifdef GET_LINK_IMPL
42880bool ByteCodeEmitter::emitPushCC( bool A0, SourceInfo L) {
42881 return emitOp<bool>(OP_PushCC, A0, L);
42882}
42883#endif
42884#ifdef GET_EVAL_IMPL
42885bool EvalEmitter::emitPushCC( bool A0, SourceInfo L) {
42886 if (!isActive()) return true;
42887 CurrentSource = L;
42888 return PushCC(S, A0);
42889}
42890#endif
42891#ifdef GET_OPCODE_NAMES
42892OP_PushIgnoreDiags,
42893#endif
42894#ifdef GET_INTERPFN_LIST
42895&Interp_PushIgnoreDiags,
42896#endif
42897#ifdef GET_INTERPFN_DISPATCHERS
42898PRESERVE_NONE
42899static bool Interp_PushIgnoreDiags(InterpState &S) {
42900 PushIgnoreDiags(S);
42901#if USE_TAILCALLS
42902 MUSTTAIL return InterpNext(S);
42903#else
42904 return true;
42905#endif
42906}
42907#endif
42908#ifdef GET_DISASM
42909case OP_PushIgnoreDiags:
42910 Text.Op = PrintName("PushIgnoreDiags");
42911 break;
42912#endif
42913#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42914bool emitPushIgnoreDiags(SourceInfo);
42915#endif
42916#ifdef GET_LINK_IMPL
42917bool ByteCodeEmitter::emitPushIgnoreDiags(SourceInfo L) {
42918 return emitOp<>(OP_PushIgnoreDiags, L);
42919}
42920#endif
42921#ifdef GET_EVAL_IMPL
42922bool EvalEmitter::emitPushIgnoreDiags(SourceInfo L) {
42923 if (!isActive()) return true;
42924 CurrentSource = L;
42925 return PushIgnoreDiags(S);
42926}
42927#endif
42928#ifdef GET_OPCODE_NAMES
42929OP_PushMSVCCE,
42930#endif
42931#ifdef GET_INTERPFN_LIST
42932&Interp_PushMSVCCE,
42933#endif
42934#ifdef GET_INTERPFN_DISPATCHERS
42935PRESERVE_NONE
42936static bool Interp_PushMSVCCE(InterpState &S) {
42937 PushMSVCCE(S);
42938#if USE_TAILCALLS
42939 MUSTTAIL return InterpNext(S);
42940#else
42941 return true;
42942#endif
42943}
42944#endif
42945#ifdef GET_DISASM
42946case OP_PushMSVCCE:
42947 Text.Op = PrintName("PushMSVCCE");
42948 break;
42949#endif
42950#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42951bool emitPushMSVCCE(SourceInfo);
42952#endif
42953#ifdef GET_LINK_IMPL
42954bool ByteCodeEmitter::emitPushMSVCCE(SourceInfo L) {
42955 return emitOp<>(OP_PushMSVCCE, L);
42956}
42957#endif
42958#ifdef GET_EVAL_IMPL
42959bool EvalEmitter::emitPushMSVCCE(SourceInfo L) {
42960 if (!isActive()) return true;
42961 CurrentSource = L;
42962 return PushMSVCCE(S);
42963}
42964#endif
42965#ifdef GET_OPCODE_NAMES
42966OP_RVOPtr,
42967#endif
42968#ifdef GET_INTERPFN_LIST
42969&Interp_RVOPtr,
42970#endif
42971#ifdef GET_INTERPFN_DISPATCHERS
42972PRESERVE_NONE
42973static bool Interp_RVOPtr(InterpState &S) {
42974 if (!RVOPtr(S)) return false;
42975#if USE_TAILCALLS
42976 MUSTTAIL return InterpNext(S);
42977#else
42978 return true;
42979#endif
42980}
42981#endif
42982#ifdef GET_DISASM
42983case OP_RVOPtr:
42984 Text.Op = PrintName("RVOPtr");
42985 break;
42986#endif
42987#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42988bool emitRVOPtr(SourceInfo);
42989#endif
42990#ifdef GET_LINK_IMPL
42991bool ByteCodeEmitter::emitRVOPtr(SourceInfo L) {
42992 return emitOp<>(OP_RVOPtr, L);
42993}
42994#endif
42995#ifdef GET_EVAL_IMPL
42996bool EvalEmitter::emitRVOPtr(SourceInfo L) {
42997 if (!isActive()) return true;
42998 CurrentSource = L;
42999 return RVOPtr(S);
43000}
43001#endif
43002#ifdef GET_OPCODE_NAMES
43003OP_RemSint8,
43004OP_RemUint8,
43005OP_RemSint16,
43006OP_RemUint16,
43007OP_RemSint32,
43008OP_RemUint32,
43009OP_RemSint64,
43010OP_RemUint64,
43011OP_RemIntAP,
43012OP_RemIntAPS,
43013OP_RemFixedPoint,
43014#endif
43015#ifdef GET_INTERPFN_LIST
43016&Interp_RemSint8,
43017&Interp_RemUint8,
43018&Interp_RemSint16,
43019&Interp_RemUint16,
43020&Interp_RemSint32,
43021&Interp_RemUint32,
43022&Interp_RemSint64,
43023&Interp_RemUint64,
43024&Interp_RemIntAP,
43025&Interp_RemIntAPS,
43026&Interp_RemFixedPoint,
43027#endif
43028#ifdef GET_INTERPFN_DISPATCHERS
43029PRESERVE_NONE
43030static bool Interp_RemSint8(InterpState &S) {
43031 if (!Rem<PT_Sint8>(S, S.PC)) return false;
43032#if USE_TAILCALLS
43033 MUSTTAIL return InterpNext(S);
43034#else
43035 return true;
43036#endif
43037}
43038PRESERVE_NONE
43039static bool Interp_RemUint8(InterpState &S) {
43040 if (!Rem<PT_Uint8>(S, S.PC)) return false;
43041#if USE_TAILCALLS
43042 MUSTTAIL return InterpNext(S);
43043#else
43044 return true;
43045#endif
43046}
43047PRESERVE_NONE
43048static bool Interp_RemSint16(InterpState &S) {
43049 if (!Rem<PT_Sint16>(S, S.PC)) return false;
43050#if USE_TAILCALLS
43051 MUSTTAIL return InterpNext(S);
43052#else
43053 return true;
43054#endif
43055}
43056PRESERVE_NONE
43057static bool Interp_RemUint16(InterpState &S) {
43058 if (!Rem<PT_Uint16>(S, S.PC)) return false;
43059#if USE_TAILCALLS
43060 MUSTTAIL return InterpNext(S);
43061#else
43062 return true;
43063#endif
43064}
43065PRESERVE_NONE
43066static bool Interp_RemSint32(InterpState &S) {
43067 if (!Rem<PT_Sint32>(S, S.PC)) return false;
43068#if USE_TAILCALLS
43069 MUSTTAIL return InterpNext(S);
43070#else
43071 return true;
43072#endif
43073}
43074PRESERVE_NONE
43075static bool Interp_RemUint32(InterpState &S) {
43076 if (!Rem<PT_Uint32>(S, S.PC)) return false;
43077#if USE_TAILCALLS
43078 MUSTTAIL return InterpNext(S);
43079#else
43080 return true;
43081#endif
43082}
43083PRESERVE_NONE
43084static bool Interp_RemSint64(InterpState &S) {
43085 if (!Rem<PT_Sint64>(S, S.PC)) return false;
43086#if USE_TAILCALLS
43087 MUSTTAIL return InterpNext(S);
43088#else
43089 return true;
43090#endif
43091}
43092PRESERVE_NONE
43093static bool Interp_RemUint64(InterpState &S) {
43094 if (!Rem<PT_Uint64>(S, S.PC)) return false;
43095#if USE_TAILCALLS
43096 MUSTTAIL return InterpNext(S);
43097#else
43098 return true;
43099#endif
43100}
43101PRESERVE_NONE
43102static bool Interp_RemIntAP(InterpState &S) {
43103 if (!Rem<PT_IntAP>(S, S.PC)) return false;
43104#if USE_TAILCALLS
43105 MUSTTAIL return InterpNext(S);
43106#else
43107 return true;
43108#endif
43109}
43110PRESERVE_NONE
43111static bool Interp_RemIntAPS(InterpState &S) {
43112 if (!Rem<PT_IntAPS>(S, S.PC)) return false;
43113#if USE_TAILCALLS
43114 MUSTTAIL return InterpNext(S);
43115#else
43116 return true;
43117#endif
43118}
43119PRESERVE_NONE
43120static bool Interp_RemFixedPoint(InterpState &S) {
43121 if (!Rem<PT_FixedPoint>(S, S.PC)) return false;
43122#if USE_TAILCALLS
43123 MUSTTAIL return InterpNext(S);
43124#else
43125 return true;
43126#endif
43127}
43128#endif
43129#ifdef GET_DISASM
43130case OP_RemSint8:
43131 Text.Op = PrintName("RemSint8");
43132 break;
43133case OP_RemUint8:
43134 Text.Op = PrintName("RemUint8");
43135 break;
43136case OP_RemSint16:
43137 Text.Op = PrintName("RemSint16");
43138 break;
43139case OP_RemUint16:
43140 Text.Op = PrintName("RemUint16");
43141 break;
43142case OP_RemSint32:
43143 Text.Op = PrintName("RemSint32");
43144 break;
43145case OP_RemUint32:
43146 Text.Op = PrintName("RemUint32");
43147 break;
43148case OP_RemSint64:
43149 Text.Op = PrintName("RemSint64");
43150 break;
43151case OP_RemUint64:
43152 Text.Op = PrintName("RemUint64");
43153 break;
43154case OP_RemIntAP:
43155 Text.Op = PrintName("RemIntAP");
43156 break;
43157case OP_RemIntAPS:
43158 Text.Op = PrintName("RemIntAPS");
43159 break;
43160case OP_RemFixedPoint:
43161 Text.Op = PrintName("RemFixedPoint");
43162 break;
43163#endif
43164#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43165bool emitRemSint8(SourceInfo);
43166bool emitRemUint8(SourceInfo);
43167bool emitRemSint16(SourceInfo);
43168bool emitRemUint16(SourceInfo);
43169bool emitRemSint32(SourceInfo);
43170bool emitRemUint32(SourceInfo);
43171bool emitRemSint64(SourceInfo);
43172bool emitRemUint64(SourceInfo);
43173bool emitRemIntAP(SourceInfo);
43174bool emitRemIntAPS(SourceInfo);
43175bool emitRemFixedPoint(SourceInfo);
43176#endif
43177#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43178[[nodiscard]] bool emitRem(PrimType, SourceInfo I);
43179#endif
43180#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
43181bool
43182#if defined(GET_EVAL_IMPL)
43183EvalEmitter
43184#else
43185ByteCodeEmitter
43186#endif
43187::emitRem(PrimType T0, SourceInfo I) {
43188 switch (T0) {
43189 case PT_Sint8:
43190 return emitRemSint8(I);
43191 case PT_Uint8:
43192 return emitRemUint8(I);
43193 case PT_Sint16:
43194 return emitRemSint16(I);
43195 case PT_Uint16:
43196 return emitRemUint16(I);
43197 case PT_Sint32:
43198 return emitRemSint32(I);
43199 case PT_Uint32:
43200 return emitRemUint32(I);
43201 case PT_Sint64:
43202 return emitRemSint64(I);
43203 case PT_Uint64:
43204 return emitRemUint64(I);
43205 case PT_IntAP:
43206 return emitRemIntAP(I);
43207 case PT_IntAPS:
43208 return emitRemIntAPS(I);
43209 case PT_FixedPoint:
43210 return emitRemFixedPoint(I);
43211 default: llvm_unreachable("invalid type: emitRem");
43212 }
43213 llvm_unreachable("invalid enum value");
43214}
43215#endif
43216#ifdef GET_LINK_IMPL
43217bool ByteCodeEmitter::emitRemSint8(SourceInfo L) {
43218 return emitOp<>(OP_RemSint8, L);
43219}
43220bool ByteCodeEmitter::emitRemUint8(SourceInfo L) {
43221 return emitOp<>(OP_RemUint8, L);
43222}
43223bool ByteCodeEmitter::emitRemSint16(SourceInfo L) {
43224 return emitOp<>(OP_RemSint16, L);
43225}
43226bool ByteCodeEmitter::emitRemUint16(SourceInfo L) {
43227 return emitOp<>(OP_RemUint16, L);
43228}
43229bool ByteCodeEmitter::emitRemSint32(SourceInfo L) {
43230 return emitOp<>(OP_RemSint32, L);
43231}
43232bool ByteCodeEmitter::emitRemUint32(SourceInfo L) {
43233 return emitOp<>(OP_RemUint32, L);
43234}
43235bool ByteCodeEmitter::emitRemSint64(SourceInfo L) {
43236 return emitOp<>(OP_RemSint64, L);
43237}
43238bool ByteCodeEmitter::emitRemUint64(SourceInfo L) {
43239 return emitOp<>(OP_RemUint64, L);
43240}
43241bool ByteCodeEmitter::emitRemIntAP(SourceInfo L) {
43242 return emitOp<>(OP_RemIntAP, L);
43243}
43244bool ByteCodeEmitter::emitRemIntAPS(SourceInfo L) {
43245 return emitOp<>(OP_RemIntAPS, L);
43246}
43247bool ByteCodeEmitter::emitRemFixedPoint(SourceInfo L) {
43248 return emitOp<>(OP_RemFixedPoint, L);
43249}
43250#endif
43251#ifdef GET_EVAL_IMPL
43252bool EvalEmitter::emitRemSint8(SourceInfo L) {
43253 if (!isActive()) return true;
43254 CurrentSource = L;
43255 return Rem<PT_Sint8>(S, CodePtr());
43256}
43257bool EvalEmitter::emitRemUint8(SourceInfo L) {
43258 if (!isActive()) return true;
43259 CurrentSource = L;
43260 return Rem<PT_Uint8>(S, CodePtr());
43261}
43262bool EvalEmitter::emitRemSint16(SourceInfo L) {
43263 if (!isActive()) return true;
43264 CurrentSource = L;
43265 return Rem<PT_Sint16>(S, CodePtr());
43266}
43267bool EvalEmitter::emitRemUint16(SourceInfo L) {
43268 if (!isActive()) return true;
43269 CurrentSource = L;
43270 return Rem<PT_Uint16>(S, CodePtr());
43271}
43272bool EvalEmitter::emitRemSint32(SourceInfo L) {
43273 if (!isActive()) return true;
43274 CurrentSource = L;
43275 return Rem<PT_Sint32>(S, CodePtr());
43276}
43277bool EvalEmitter::emitRemUint32(SourceInfo L) {
43278 if (!isActive()) return true;
43279 CurrentSource = L;
43280 return Rem<PT_Uint32>(S, CodePtr());
43281}
43282bool EvalEmitter::emitRemSint64(SourceInfo L) {
43283 if (!isActive()) return true;
43284 CurrentSource = L;
43285 return Rem<PT_Sint64>(S, CodePtr());
43286}
43287bool EvalEmitter::emitRemUint64(SourceInfo L) {
43288 if (!isActive()) return true;
43289 CurrentSource = L;
43290 return Rem<PT_Uint64>(S, CodePtr());
43291}
43292bool EvalEmitter::emitRemIntAP(SourceInfo L) {
43293 if (!isActive()) return true;
43294 CurrentSource = L;
43295 return Rem<PT_IntAP>(S, CodePtr());
43296}
43297bool EvalEmitter::emitRemIntAPS(SourceInfo L) {
43298 if (!isActive()) return true;
43299 CurrentSource = L;
43300 return Rem<PT_IntAPS>(S, CodePtr());
43301}
43302bool EvalEmitter::emitRemFixedPoint(SourceInfo L) {
43303 if (!isActive()) return true;
43304 CurrentSource = L;
43305 return Rem<PT_FixedPoint>(S, CodePtr());
43306}
43307#endif
43308#ifdef GET_OPCODE_NAMES
43309OP_RetSint8,
43310OP_RetUint8,
43311OP_RetSint16,
43312OP_RetUint16,
43313OP_RetSint32,
43314OP_RetUint32,
43315OP_RetSint64,
43316OP_RetUint64,
43317OP_RetIntAP,
43318OP_RetIntAPS,
43319OP_RetBool,
43320OP_RetFixedPoint,
43321OP_RetPtr,
43322OP_RetMemberPtr,
43323OP_RetFloat,
43324#endif
43325#ifdef GET_INTERPFN_LIST
43326&Interp_RetSint8,
43327&Interp_RetUint8,
43328&Interp_RetSint16,
43329&Interp_RetUint16,
43330&Interp_RetSint32,
43331&Interp_RetUint32,
43332&Interp_RetSint64,
43333&Interp_RetUint64,
43334&Interp_RetIntAP,
43335&Interp_RetIntAPS,
43336&Interp_RetBool,
43337&Interp_RetFixedPoint,
43338&Interp_RetPtr,
43339&Interp_RetMemberPtr,
43340&Interp_RetFloat,
43341#endif
43342#ifdef GET_INTERPFN_DISPATCHERS
43343PRESERVE_NONE
43344static bool Interp_RetSint8(InterpState &S) {
43345 MUSTTAIL return Ret<PT_Sint8>(S);
43346}
43347PRESERVE_NONE
43348static bool Interp_RetUint8(InterpState &S) {
43349 MUSTTAIL return Ret<PT_Uint8>(S);
43350}
43351PRESERVE_NONE
43352static bool Interp_RetSint16(InterpState &S) {
43353 MUSTTAIL return Ret<PT_Sint16>(S);
43354}
43355PRESERVE_NONE
43356static bool Interp_RetUint16(InterpState &S) {
43357 MUSTTAIL return Ret<PT_Uint16>(S);
43358}
43359PRESERVE_NONE
43360static bool Interp_RetSint32(InterpState &S) {
43361 MUSTTAIL return Ret<PT_Sint32>(S);
43362}
43363PRESERVE_NONE
43364static bool Interp_RetUint32(InterpState &S) {
43365 MUSTTAIL return Ret<PT_Uint32>(S);
43366}
43367PRESERVE_NONE
43368static bool Interp_RetSint64(InterpState &S) {
43369 MUSTTAIL return Ret<PT_Sint64>(S);
43370}
43371PRESERVE_NONE
43372static bool Interp_RetUint64(InterpState &S) {
43373 MUSTTAIL return Ret<PT_Uint64>(S);
43374}
43375PRESERVE_NONE
43376static bool Interp_RetIntAP(InterpState &S) {
43377 MUSTTAIL return Ret<PT_IntAP>(S);
43378}
43379PRESERVE_NONE
43380static bool Interp_RetIntAPS(InterpState &S) {
43381 MUSTTAIL return Ret<PT_IntAPS>(S);
43382}
43383PRESERVE_NONE
43384static bool Interp_RetBool(InterpState &S) {
43385 MUSTTAIL return Ret<PT_Bool>(S);
43386}
43387PRESERVE_NONE
43388static bool Interp_RetFixedPoint(InterpState &S) {
43389 MUSTTAIL return Ret<PT_FixedPoint>(S);
43390}
43391PRESERVE_NONE
43392static bool Interp_RetPtr(InterpState &S) {
43393 MUSTTAIL return Ret<PT_Ptr>(S);
43394}
43395PRESERVE_NONE
43396static bool Interp_RetMemberPtr(InterpState &S) {
43397 MUSTTAIL return Ret<PT_MemberPtr>(S);
43398}
43399PRESERVE_NONE
43400static bool Interp_RetFloat(InterpState &S) {
43401 MUSTTAIL return Ret<PT_Float>(S);
43402}
43403#endif
43404#ifdef GET_DISASM
43405case OP_RetSint8:
43406 Text.Op = PrintName("RetSint8");
43407 break;
43408case OP_RetUint8:
43409 Text.Op = PrintName("RetUint8");
43410 break;
43411case OP_RetSint16:
43412 Text.Op = PrintName("RetSint16");
43413 break;
43414case OP_RetUint16:
43415 Text.Op = PrintName("RetUint16");
43416 break;
43417case OP_RetSint32:
43418 Text.Op = PrintName("RetSint32");
43419 break;
43420case OP_RetUint32:
43421 Text.Op = PrintName("RetUint32");
43422 break;
43423case OP_RetSint64:
43424 Text.Op = PrintName("RetSint64");
43425 break;
43426case OP_RetUint64:
43427 Text.Op = PrintName("RetUint64");
43428 break;
43429case OP_RetIntAP:
43430 Text.Op = PrintName("RetIntAP");
43431 break;
43432case OP_RetIntAPS:
43433 Text.Op = PrintName("RetIntAPS");
43434 break;
43435case OP_RetBool:
43436 Text.Op = PrintName("RetBool");
43437 break;
43438case OP_RetFixedPoint:
43439 Text.Op = PrintName("RetFixedPoint");
43440 break;
43441case OP_RetPtr:
43442 Text.Op = PrintName("RetPtr");
43443 break;
43444case OP_RetMemberPtr:
43445 Text.Op = PrintName("RetMemberPtr");
43446 break;
43447case OP_RetFloat:
43448 Text.Op = PrintName("RetFloat");
43449 break;
43450#endif
43451#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43452bool emitRetSint8(SourceInfo);
43453bool emitRetUint8(SourceInfo);
43454bool emitRetSint16(SourceInfo);
43455bool emitRetUint16(SourceInfo);
43456bool emitRetSint32(SourceInfo);
43457bool emitRetUint32(SourceInfo);
43458bool emitRetSint64(SourceInfo);
43459bool emitRetUint64(SourceInfo);
43460bool emitRetIntAP(SourceInfo);
43461bool emitRetIntAPS(SourceInfo);
43462bool emitRetBool(SourceInfo);
43463bool emitRetFixedPoint(SourceInfo);
43464bool emitRetPtr(SourceInfo);
43465bool emitRetMemberPtr(SourceInfo);
43466bool emitRetFloat(SourceInfo);
43467#if defined(GET_EVAL_PROTO)
43468template<PrimType>
43469bool emitRet(SourceInfo);
43470#endif
43471#endif
43472#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43473[[nodiscard]] bool emitRet(PrimType, SourceInfo I);
43474#endif
43475#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
43476bool
43477#if defined(GET_EVAL_IMPL)
43478EvalEmitter
43479#else
43480ByteCodeEmitter
43481#endif
43482::emitRet(PrimType T0, SourceInfo I) {
43483 switch (T0) {
43484 case PT_Sint8:
43485#ifdef GET_LINK_IMPL
43486 return emitRetSint8
43487#else
43488 return emitRet<PT_Sint8>
43489#endif
43490 (I);
43491 case PT_Uint8:
43492#ifdef GET_LINK_IMPL
43493 return emitRetUint8
43494#else
43495 return emitRet<PT_Uint8>
43496#endif
43497 (I);
43498 case PT_Sint16:
43499#ifdef GET_LINK_IMPL
43500 return emitRetSint16
43501#else
43502 return emitRet<PT_Sint16>
43503#endif
43504 (I);
43505 case PT_Uint16:
43506#ifdef GET_LINK_IMPL
43507 return emitRetUint16
43508#else
43509 return emitRet<PT_Uint16>
43510#endif
43511 (I);
43512 case PT_Sint32:
43513#ifdef GET_LINK_IMPL
43514 return emitRetSint32
43515#else
43516 return emitRet<PT_Sint32>
43517#endif
43518 (I);
43519 case PT_Uint32:
43520#ifdef GET_LINK_IMPL
43521 return emitRetUint32
43522#else
43523 return emitRet<PT_Uint32>
43524#endif
43525 (I);
43526 case PT_Sint64:
43527#ifdef GET_LINK_IMPL
43528 return emitRetSint64
43529#else
43530 return emitRet<PT_Sint64>
43531#endif
43532 (I);
43533 case PT_Uint64:
43534#ifdef GET_LINK_IMPL
43535 return emitRetUint64
43536#else
43537 return emitRet<PT_Uint64>
43538#endif
43539 (I);
43540 case PT_IntAP:
43541#ifdef GET_LINK_IMPL
43542 return emitRetIntAP
43543#else
43544 return emitRet<PT_IntAP>
43545#endif
43546 (I);
43547 case PT_IntAPS:
43548#ifdef GET_LINK_IMPL
43549 return emitRetIntAPS
43550#else
43551 return emitRet<PT_IntAPS>
43552#endif
43553 (I);
43554 case PT_Bool:
43555#ifdef GET_LINK_IMPL
43556 return emitRetBool
43557#else
43558 return emitRet<PT_Bool>
43559#endif
43560 (I);
43561 case PT_FixedPoint:
43562#ifdef GET_LINK_IMPL
43563 return emitRetFixedPoint
43564#else
43565 return emitRet<PT_FixedPoint>
43566#endif
43567 (I);
43568 case PT_Ptr:
43569#ifdef GET_LINK_IMPL
43570 return emitRetPtr
43571#else
43572 return emitRet<PT_Ptr>
43573#endif
43574 (I);
43575 case PT_MemberPtr:
43576#ifdef GET_LINK_IMPL
43577 return emitRetMemberPtr
43578#else
43579 return emitRet<PT_MemberPtr>
43580#endif
43581 (I);
43582 case PT_Float:
43583#ifdef GET_LINK_IMPL
43584 return emitRetFloat
43585#else
43586 return emitRet<PT_Float>
43587#endif
43588 (I);
43589 }
43590 llvm_unreachable("invalid enum value");
43591}
43592#endif
43593#ifdef GET_LINK_IMPL
43594bool ByteCodeEmitter::emitRetSint8(SourceInfo L) {
43595 return emitOp<>(OP_RetSint8, L);
43596}
43597bool ByteCodeEmitter::emitRetUint8(SourceInfo L) {
43598 return emitOp<>(OP_RetUint8, L);
43599}
43600bool ByteCodeEmitter::emitRetSint16(SourceInfo L) {
43601 return emitOp<>(OP_RetSint16, L);
43602}
43603bool ByteCodeEmitter::emitRetUint16(SourceInfo L) {
43604 return emitOp<>(OP_RetUint16, L);
43605}
43606bool ByteCodeEmitter::emitRetSint32(SourceInfo L) {
43607 return emitOp<>(OP_RetSint32, L);
43608}
43609bool ByteCodeEmitter::emitRetUint32(SourceInfo L) {
43610 return emitOp<>(OP_RetUint32, L);
43611}
43612bool ByteCodeEmitter::emitRetSint64(SourceInfo L) {
43613 return emitOp<>(OP_RetSint64, L);
43614}
43615bool ByteCodeEmitter::emitRetUint64(SourceInfo L) {
43616 return emitOp<>(OP_RetUint64, L);
43617}
43618bool ByteCodeEmitter::emitRetIntAP(SourceInfo L) {
43619 return emitOp<>(OP_RetIntAP, L);
43620}
43621bool ByteCodeEmitter::emitRetIntAPS(SourceInfo L) {
43622 return emitOp<>(OP_RetIntAPS, L);
43623}
43624bool ByteCodeEmitter::emitRetBool(SourceInfo L) {
43625 return emitOp<>(OP_RetBool, L);
43626}
43627bool ByteCodeEmitter::emitRetFixedPoint(SourceInfo L) {
43628 return emitOp<>(OP_RetFixedPoint, L);
43629}
43630bool ByteCodeEmitter::emitRetPtr(SourceInfo L) {
43631 return emitOp<>(OP_RetPtr, L);
43632}
43633bool ByteCodeEmitter::emitRetMemberPtr(SourceInfo L) {
43634 return emitOp<>(OP_RetMemberPtr, L);
43635}
43636bool ByteCodeEmitter::emitRetFloat(SourceInfo L) {
43637 return emitOp<>(OP_RetFloat, L);
43638}
43639#endif
43640#ifdef GET_OPCODE_NAMES
43641OP_RetValue,
43642#endif
43643#ifdef GET_INTERPFN_LIST
43644&Interp_RetValue,
43645#endif
43646#ifdef GET_INTERPFN_DISPATCHERS
43647PRESERVE_NONE
43648static bool Interp_RetValue(InterpState &S) {
43649 MUSTTAIL return RetValue(S);
43650}
43651#endif
43652#ifdef GET_DISASM
43653case OP_RetValue:
43654 Text.Op = PrintName("RetValue");
43655 break;
43656#endif
43657#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43658bool emitRetValue(SourceInfo);
43659#endif
43660#ifdef GET_LINK_IMPL
43661bool ByteCodeEmitter::emitRetValue(SourceInfo L) {
43662 return emitOp<>(OP_RetValue, L);
43663}
43664#endif
43665#ifdef GET_OPCODE_NAMES
43666OP_RetVoid,
43667#endif
43668#ifdef GET_INTERPFN_LIST
43669&Interp_RetVoid,
43670#endif
43671#ifdef GET_INTERPFN_DISPATCHERS
43672PRESERVE_NONE
43673static bool Interp_RetVoid(InterpState &S) {
43674 MUSTTAIL return RetVoid(S);
43675}
43676#endif
43677#ifdef GET_DISASM
43678case OP_RetVoid:
43679 Text.Op = PrintName("RetVoid");
43680 break;
43681#endif
43682#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43683bool emitRetVoid(SourceInfo);
43684#endif
43685#ifdef GET_LINK_IMPL
43686bool ByteCodeEmitter::emitRetVoid(SourceInfo L) {
43687 return emitOp<>(OP_RetVoid, L);
43688}
43689#endif
43690#ifdef GET_OPCODE_NAMES
43691OP_SetGlobalSint8,
43692OP_SetGlobalUint8,
43693OP_SetGlobalSint16,
43694OP_SetGlobalUint16,
43695OP_SetGlobalSint32,
43696OP_SetGlobalUint32,
43697OP_SetGlobalSint64,
43698OP_SetGlobalUint64,
43699OP_SetGlobalIntAP,
43700OP_SetGlobalIntAPS,
43701OP_SetGlobalBool,
43702OP_SetGlobalFixedPoint,
43703OP_SetGlobalPtr,
43704OP_SetGlobalMemberPtr,
43705OP_SetGlobalFloat,
43706#endif
43707#ifdef GET_INTERPFN_LIST
43708&Interp_SetGlobalSint8,
43709&Interp_SetGlobalUint8,
43710&Interp_SetGlobalSint16,
43711&Interp_SetGlobalUint16,
43712&Interp_SetGlobalSint32,
43713&Interp_SetGlobalUint32,
43714&Interp_SetGlobalSint64,
43715&Interp_SetGlobalUint64,
43716&Interp_SetGlobalIntAP,
43717&Interp_SetGlobalIntAPS,
43718&Interp_SetGlobalBool,
43719&Interp_SetGlobalFixedPoint,
43720&Interp_SetGlobalPtr,
43721&Interp_SetGlobalMemberPtr,
43722&Interp_SetGlobalFloat,
43723#endif
43724#ifdef GET_INTERPFN_DISPATCHERS
43725PRESERVE_NONE
43726static bool Interp_SetGlobalSint8(InterpState &S) {
43727 {
43728 CodePtr OpPC = S.PC;
43729 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43730 if (!SetGlobal<PT_Sint8>(S, OpPC, V0)) return false;
43731 }
43732#if USE_TAILCALLS
43733 MUSTTAIL return InterpNext(S);
43734#else
43735 return true;
43736#endif
43737}
43738PRESERVE_NONE
43739static bool Interp_SetGlobalUint8(InterpState &S) {
43740 {
43741 CodePtr OpPC = S.PC;
43742 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43743 if (!SetGlobal<PT_Uint8>(S, OpPC, V0)) return false;
43744 }
43745#if USE_TAILCALLS
43746 MUSTTAIL return InterpNext(S);
43747#else
43748 return true;
43749#endif
43750}
43751PRESERVE_NONE
43752static bool Interp_SetGlobalSint16(InterpState &S) {
43753 {
43754 CodePtr OpPC = S.PC;
43755 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43756 if (!SetGlobal<PT_Sint16>(S, OpPC, V0)) return false;
43757 }
43758#if USE_TAILCALLS
43759 MUSTTAIL return InterpNext(S);
43760#else
43761 return true;
43762#endif
43763}
43764PRESERVE_NONE
43765static bool Interp_SetGlobalUint16(InterpState &S) {
43766 {
43767 CodePtr OpPC = S.PC;
43768 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43769 if (!SetGlobal<PT_Uint16>(S, OpPC, V0)) return false;
43770 }
43771#if USE_TAILCALLS
43772 MUSTTAIL return InterpNext(S);
43773#else
43774 return true;
43775#endif
43776}
43777PRESERVE_NONE
43778static bool Interp_SetGlobalSint32(InterpState &S) {
43779 {
43780 CodePtr OpPC = S.PC;
43781 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43782 if (!SetGlobal<PT_Sint32>(S, OpPC, V0)) return false;
43783 }
43784#if USE_TAILCALLS
43785 MUSTTAIL return InterpNext(S);
43786#else
43787 return true;
43788#endif
43789}
43790PRESERVE_NONE
43791static bool Interp_SetGlobalUint32(InterpState &S) {
43792 {
43793 CodePtr OpPC = S.PC;
43794 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43795 if (!SetGlobal<PT_Uint32>(S, OpPC, V0)) return false;
43796 }
43797#if USE_TAILCALLS
43798 MUSTTAIL return InterpNext(S);
43799#else
43800 return true;
43801#endif
43802}
43803PRESERVE_NONE
43804static bool Interp_SetGlobalSint64(InterpState &S) {
43805 {
43806 CodePtr OpPC = S.PC;
43807 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43808 if (!SetGlobal<PT_Sint64>(S, OpPC, V0)) return false;
43809 }
43810#if USE_TAILCALLS
43811 MUSTTAIL return InterpNext(S);
43812#else
43813 return true;
43814#endif
43815}
43816PRESERVE_NONE
43817static bool Interp_SetGlobalUint64(InterpState &S) {
43818 {
43819 CodePtr OpPC = S.PC;
43820 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43821 if (!SetGlobal<PT_Uint64>(S, OpPC, V0)) return false;
43822 }
43823#if USE_TAILCALLS
43824 MUSTTAIL return InterpNext(S);
43825#else
43826 return true;
43827#endif
43828}
43829PRESERVE_NONE
43830static bool Interp_SetGlobalIntAP(InterpState &S) {
43831 {
43832 CodePtr OpPC = S.PC;
43833 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43834 if (!SetGlobal<PT_IntAP>(S, OpPC, V0)) return false;
43835 }
43836#if USE_TAILCALLS
43837 MUSTTAIL return InterpNext(S);
43838#else
43839 return true;
43840#endif
43841}
43842PRESERVE_NONE
43843static bool Interp_SetGlobalIntAPS(InterpState &S) {
43844 {
43845 CodePtr OpPC = S.PC;
43846 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43847 if (!SetGlobal<PT_IntAPS>(S, OpPC, V0)) return false;
43848 }
43849#if USE_TAILCALLS
43850 MUSTTAIL return InterpNext(S);
43851#else
43852 return true;
43853#endif
43854}
43855PRESERVE_NONE
43856static bool Interp_SetGlobalBool(InterpState &S) {
43857 {
43858 CodePtr OpPC = S.PC;
43859 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43860 if (!SetGlobal<PT_Bool>(S, OpPC, V0)) return false;
43861 }
43862#if USE_TAILCALLS
43863 MUSTTAIL return InterpNext(S);
43864#else
43865 return true;
43866#endif
43867}
43868PRESERVE_NONE
43869static bool Interp_SetGlobalFixedPoint(InterpState &S) {
43870 {
43871 CodePtr OpPC = S.PC;
43872 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43873 if (!SetGlobal<PT_FixedPoint>(S, OpPC, V0)) return false;
43874 }
43875#if USE_TAILCALLS
43876 MUSTTAIL return InterpNext(S);
43877#else
43878 return true;
43879#endif
43880}
43881PRESERVE_NONE
43882static bool Interp_SetGlobalPtr(InterpState &S) {
43883 {
43884 CodePtr OpPC = S.PC;
43885 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43886 if (!SetGlobal<PT_Ptr>(S, OpPC, V0)) return false;
43887 }
43888#if USE_TAILCALLS
43889 MUSTTAIL return InterpNext(S);
43890#else
43891 return true;
43892#endif
43893}
43894PRESERVE_NONE
43895static bool Interp_SetGlobalMemberPtr(InterpState &S) {
43896 {
43897 CodePtr OpPC = S.PC;
43898 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43899 if (!SetGlobal<PT_MemberPtr>(S, OpPC, V0)) return false;
43900 }
43901#if USE_TAILCALLS
43902 MUSTTAIL return InterpNext(S);
43903#else
43904 return true;
43905#endif
43906}
43907PRESERVE_NONE
43908static bool Interp_SetGlobalFloat(InterpState &S) {
43909 {
43910 CodePtr OpPC = S.PC;
43911 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43912 if (!SetGlobal<PT_Float>(S, OpPC, V0)) return false;
43913 }
43914#if USE_TAILCALLS
43915 MUSTTAIL return InterpNext(S);
43916#else
43917 return true;
43918#endif
43919}
43920#endif
43921#ifdef GET_DISASM
43922case OP_SetGlobalSint8:
43923 Text.Op = PrintName("SetGlobalSint8");
43924 Text.Args.push_back(printArg<uint32_t>(PC));
43925 break;
43926case OP_SetGlobalUint8:
43927 Text.Op = PrintName("SetGlobalUint8");
43928 Text.Args.push_back(printArg<uint32_t>(PC));
43929 break;
43930case OP_SetGlobalSint16:
43931 Text.Op = PrintName("SetGlobalSint16");
43932 Text.Args.push_back(printArg<uint32_t>(PC));
43933 break;
43934case OP_SetGlobalUint16:
43935 Text.Op = PrintName("SetGlobalUint16");
43936 Text.Args.push_back(printArg<uint32_t>(PC));
43937 break;
43938case OP_SetGlobalSint32:
43939 Text.Op = PrintName("SetGlobalSint32");
43940 Text.Args.push_back(printArg<uint32_t>(PC));
43941 break;
43942case OP_SetGlobalUint32:
43943 Text.Op = PrintName("SetGlobalUint32");
43944 Text.Args.push_back(printArg<uint32_t>(PC));
43945 break;
43946case OP_SetGlobalSint64:
43947 Text.Op = PrintName("SetGlobalSint64");
43948 Text.Args.push_back(printArg<uint32_t>(PC));
43949 break;
43950case OP_SetGlobalUint64:
43951 Text.Op = PrintName("SetGlobalUint64");
43952 Text.Args.push_back(printArg<uint32_t>(PC));
43953 break;
43954case OP_SetGlobalIntAP:
43955 Text.Op = PrintName("SetGlobalIntAP");
43956 Text.Args.push_back(printArg<uint32_t>(PC));
43957 break;
43958case OP_SetGlobalIntAPS:
43959 Text.Op = PrintName("SetGlobalIntAPS");
43960 Text.Args.push_back(printArg<uint32_t>(PC));
43961 break;
43962case OP_SetGlobalBool:
43963 Text.Op = PrintName("SetGlobalBool");
43964 Text.Args.push_back(printArg<uint32_t>(PC));
43965 break;
43966case OP_SetGlobalFixedPoint:
43967 Text.Op = PrintName("SetGlobalFixedPoint");
43968 Text.Args.push_back(printArg<uint32_t>(PC));
43969 break;
43970case OP_SetGlobalPtr:
43971 Text.Op = PrintName("SetGlobalPtr");
43972 Text.Args.push_back(printArg<uint32_t>(PC));
43973 break;
43974case OP_SetGlobalMemberPtr:
43975 Text.Op = PrintName("SetGlobalMemberPtr");
43976 Text.Args.push_back(printArg<uint32_t>(PC));
43977 break;
43978case OP_SetGlobalFloat:
43979 Text.Op = PrintName("SetGlobalFloat");
43980 Text.Args.push_back(printArg<uint32_t>(PC));
43981 break;
43982#endif
43983#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43984bool emitSetGlobalSint8( uint32_t , SourceInfo);
43985bool emitSetGlobalUint8( uint32_t , SourceInfo);
43986bool emitSetGlobalSint16( uint32_t , SourceInfo);
43987bool emitSetGlobalUint16( uint32_t , SourceInfo);
43988bool emitSetGlobalSint32( uint32_t , SourceInfo);
43989bool emitSetGlobalUint32( uint32_t , SourceInfo);
43990bool emitSetGlobalSint64( uint32_t , SourceInfo);
43991bool emitSetGlobalUint64( uint32_t , SourceInfo);
43992bool emitSetGlobalIntAP( uint32_t , SourceInfo);
43993bool emitSetGlobalIntAPS( uint32_t , SourceInfo);
43994bool emitSetGlobalBool( uint32_t , SourceInfo);
43995bool emitSetGlobalFixedPoint( uint32_t , SourceInfo);
43996bool emitSetGlobalPtr( uint32_t , SourceInfo);
43997bool emitSetGlobalMemberPtr( uint32_t , SourceInfo);
43998bool emitSetGlobalFloat( uint32_t , SourceInfo);
43999#endif
44000#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44001[[nodiscard]] bool emitSetGlobal(PrimType, uint32_t, SourceInfo I);
44002#endif
44003#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
44004bool
44005#if defined(GET_EVAL_IMPL)
44006EvalEmitter
44007#else
44008ByteCodeEmitter
44009#endif
44010::emitSetGlobal(PrimType T0, uint32_t A0, SourceInfo I) {
44011 switch (T0) {
44012 case PT_Sint8:
44013 return emitSetGlobalSint8(A0, I);
44014 case PT_Uint8:
44015 return emitSetGlobalUint8(A0, I);
44016 case PT_Sint16:
44017 return emitSetGlobalSint16(A0, I);
44018 case PT_Uint16:
44019 return emitSetGlobalUint16(A0, I);
44020 case PT_Sint32:
44021 return emitSetGlobalSint32(A0, I);
44022 case PT_Uint32:
44023 return emitSetGlobalUint32(A0, I);
44024 case PT_Sint64:
44025 return emitSetGlobalSint64(A0, I);
44026 case PT_Uint64:
44027 return emitSetGlobalUint64(A0, I);
44028 case PT_IntAP:
44029 return emitSetGlobalIntAP(A0, I);
44030 case PT_IntAPS:
44031 return emitSetGlobalIntAPS(A0, I);
44032 case PT_Bool:
44033 return emitSetGlobalBool(A0, I);
44034 case PT_FixedPoint:
44035 return emitSetGlobalFixedPoint(A0, I);
44036 case PT_Ptr:
44037 return emitSetGlobalPtr(A0, I);
44038 case PT_MemberPtr:
44039 return emitSetGlobalMemberPtr(A0, I);
44040 case PT_Float:
44041 return emitSetGlobalFloat(A0, I);
44042 }
44043 llvm_unreachable("invalid enum value");
44044}
44045#endif
44046#ifdef GET_LINK_IMPL
44047bool ByteCodeEmitter::emitSetGlobalSint8( uint32_t A0, SourceInfo L) {
44048 return emitOp<uint32_t>(OP_SetGlobalSint8, A0, L);
44049}
44050bool ByteCodeEmitter::emitSetGlobalUint8( uint32_t A0, SourceInfo L) {
44051 return emitOp<uint32_t>(OP_SetGlobalUint8, A0, L);
44052}
44053bool ByteCodeEmitter::emitSetGlobalSint16( uint32_t A0, SourceInfo L) {
44054 return emitOp<uint32_t>(OP_SetGlobalSint16, A0, L);
44055}
44056bool ByteCodeEmitter::emitSetGlobalUint16( uint32_t A0, SourceInfo L) {
44057 return emitOp<uint32_t>(OP_SetGlobalUint16, A0, L);
44058}
44059bool ByteCodeEmitter::emitSetGlobalSint32( uint32_t A0, SourceInfo L) {
44060 return emitOp<uint32_t>(OP_SetGlobalSint32, A0, L);
44061}
44062bool ByteCodeEmitter::emitSetGlobalUint32( uint32_t A0, SourceInfo L) {
44063 return emitOp<uint32_t>(OP_SetGlobalUint32, A0, L);
44064}
44065bool ByteCodeEmitter::emitSetGlobalSint64( uint32_t A0, SourceInfo L) {
44066 return emitOp<uint32_t>(OP_SetGlobalSint64, A0, L);
44067}
44068bool ByteCodeEmitter::emitSetGlobalUint64( uint32_t A0, SourceInfo L) {
44069 return emitOp<uint32_t>(OP_SetGlobalUint64, A0, L);
44070}
44071bool ByteCodeEmitter::emitSetGlobalIntAP( uint32_t A0, SourceInfo L) {
44072 return emitOp<uint32_t>(OP_SetGlobalIntAP, A0, L);
44073}
44074bool ByteCodeEmitter::emitSetGlobalIntAPS( uint32_t A0, SourceInfo L) {
44075 return emitOp<uint32_t>(OP_SetGlobalIntAPS, A0, L);
44076}
44077bool ByteCodeEmitter::emitSetGlobalBool( uint32_t A0, SourceInfo L) {
44078 return emitOp<uint32_t>(OP_SetGlobalBool, A0, L);
44079}
44080bool ByteCodeEmitter::emitSetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
44081 return emitOp<uint32_t>(OP_SetGlobalFixedPoint, A0, L);
44082}
44083bool ByteCodeEmitter::emitSetGlobalPtr( uint32_t A0, SourceInfo L) {
44084 return emitOp<uint32_t>(OP_SetGlobalPtr, A0, L);
44085}
44086bool ByteCodeEmitter::emitSetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
44087 return emitOp<uint32_t>(OP_SetGlobalMemberPtr, A0, L);
44088}
44089bool ByteCodeEmitter::emitSetGlobalFloat( uint32_t A0, SourceInfo L) {
44090 return emitOp<uint32_t>(OP_SetGlobalFloat, A0, L);
44091}
44092#endif
44093#ifdef GET_EVAL_IMPL
44094bool EvalEmitter::emitSetGlobalSint8( uint32_t A0, SourceInfo L) {
44095 if (!isActive()) return true;
44096 CurrentSource = L;
44097 return SetGlobal<PT_Sint8>(S, CodePtr(), A0);
44098}
44099bool EvalEmitter::emitSetGlobalUint8( uint32_t A0, SourceInfo L) {
44100 if (!isActive()) return true;
44101 CurrentSource = L;
44102 return SetGlobal<PT_Uint8>(S, CodePtr(), A0);
44103}
44104bool EvalEmitter::emitSetGlobalSint16( uint32_t A0, SourceInfo L) {
44105 if (!isActive()) return true;
44106 CurrentSource = L;
44107 return SetGlobal<PT_Sint16>(S, CodePtr(), A0);
44108}
44109bool EvalEmitter::emitSetGlobalUint16( uint32_t A0, SourceInfo L) {
44110 if (!isActive()) return true;
44111 CurrentSource = L;
44112 return SetGlobal<PT_Uint16>(S, CodePtr(), A0);
44113}
44114bool EvalEmitter::emitSetGlobalSint32( uint32_t A0, SourceInfo L) {
44115 if (!isActive()) return true;
44116 CurrentSource = L;
44117 return SetGlobal<PT_Sint32>(S, CodePtr(), A0);
44118}
44119bool EvalEmitter::emitSetGlobalUint32( uint32_t A0, SourceInfo L) {
44120 if (!isActive()) return true;
44121 CurrentSource = L;
44122 return SetGlobal<PT_Uint32>(S, CodePtr(), A0);
44123}
44124bool EvalEmitter::emitSetGlobalSint64( uint32_t A0, SourceInfo L) {
44125 if (!isActive()) return true;
44126 CurrentSource = L;
44127 return SetGlobal<PT_Sint64>(S, CodePtr(), A0);
44128}
44129bool EvalEmitter::emitSetGlobalUint64( uint32_t A0, SourceInfo L) {
44130 if (!isActive()) return true;
44131 CurrentSource = L;
44132 return SetGlobal<PT_Uint64>(S, CodePtr(), A0);
44133}
44134bool EvalEmitter::emitSetGlobalIntAP( uint32_t A0, SourceInfo L) {
44135 if (!isActive()) return true;
44136 CurrentSource = L;
44137 return SetGlobal<PT_IntAP>(S, CodePtr(), A0);
44138}
44139bool EvalEmitter::emitSetGlobalIntAPS( uint32_t A0, SourceInfo L) {
44140 if (!isActive()) return true;
44141 CurrentSource = L;
44142 return SetGlobal<PT_IntAPS>(S, CodePtr(), A0);
44143}
44144bool EvalEmitter::emitSetGlobalBool( uint32_t A0, SourceInfo L) {
44145 if (!isActive()) return true;
44146 CurrentSource = L;
44147 return SetGlobal<PT_Bool>(S, CodePtr(), A0);
44148}
44149bool EvalEmitter::emitSetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
44150 if (!isActive()) return true;
44151 CurrentSource = L;
44152 return SetGlobal<PT_FixedPoint>(S, CodePtr(), A0);
44153}
44154bool EvalEmitter::emitSetGlobalPtr( uint32_t A0, SourceInfo L) {
44155 if (!isActive()) return true;
44156 CurrentSource = L;
44157 return SetGlobal<PT_Ptr>(S, CodePtr(), A0);
44158}
44159bool EvalEmitter::emitSetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
44160 if (!isActive()) return true;
44161 CurrentSource = L;
44162 return SetGlobal<PT_MemberPtr>(S, CodePtr(), A0);
44163}
44164bool EvalEmitter::emitSetGlobalFloat( uint32_t A0, SourceInfo L) {
44165 if (!isActive()) return true;
44166 CurrentSource = L;
44167 return SetGlobal<PT_Float>(S, CodePtr(), A0);
44168}
44169#endif
44170#ifdef GET_OPCODE_NAMES
44171OP_SetLocalSint8,
44172OP_SetLocalUint8,
44173OP_SetLocalSint16,
44174OP_SetLocalUint16,
44175OP_SetLocalSint32,
44176OP_SetLocalUint32,
44177OP_SetLocalSint64,
44178OP_SetLocalUint64,
44179OP_SetLocalIntAP,
44180OP_SetLocalIntAPS,
44181OP_SetLocalBool,
44182OP_SetLocalFixedPoint,
44183OP_SetLocalPtr,
44184OP_SetLocalMemberPtr,
44185OP_SetLocalFloat,
44186#endif
44187#ifdef GET_INTERPFN_LIST
44188&Interp_SetLocalSint8,
44189&Interp_SetLocalUint8,
44190&Interp_SetLocalSint16,
44191&Interp_SetLocalUint16,
44192&Interp_SetLocalSint32,
44193&Interp_SetLocalUint32,
44194&Interp_SetLocalSint64,
44195&Interp_SetLocalUint64,
44196&Interp_SetLocalIntAP,
44197&Interp_SetLocalIntAPS,
44198&Interp_SetLocalBool,
44199&Interp_SetLocalFixedPoint,
44200&Interp_SetLocalPtr,
44201&Interp_SetLocalMemberPtr,
44202&Interp_SetLocalFloat,
44203#endif
44204#ifdef GET_INTERPFN_DISPATCHERS
44205PRESERVE_NONE
44206static bool Interp_SetLocalSint8(InterpState &S) {
44207 {
44208 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44209 SetLocal<PT_Sint8>(S, V0);
44210 }
44211#if USE_TAILCALLS
44212 MUSTTAIL return InterpNext(S);
44213#else
44214 return true;
44215#endif
44216}
44217PRESERVE_NONE
44218static bool Interp_SetLocalUint8(InterpState &S) {
44219 {
44220 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44221 SetLocal<PT_Uint8>(S, V0);
44222 }
44223#if USE_TAILCALLS
44224 MUSTTAIL return InterpNext(S);
44225#else
44226 return true;
44227#endif
44228}
44229PRESERVE_NONE
44230static bool Interp_SetLocalSint16(InterpState &S) {
44231 {
44232 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44233 SetLocal<PT_Sint16>(S, V0);
44234 }
44235#if USE_TAILCALLS
44236 MUSTTAIL return InterpNext(S);
44237#else
44238 return true;
44239#endif
44240}
44241PRESERVE_NONE
44242static bool Interp_SetLocalUint16(InterpState &S) {
44243 {
44244 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44245 SetLocal<PT_Uint16>(S, V0);
44246 }
44247#if USE_TAILCALLS
44248 MUSTTAIL return InterpNext(S);
44249#else
44250 return true;
44251#endif
44252}
44253PRESERVE_NONE
44254static bool Interp_SetLocalSint32(InterpState &S) {
44255 {
44256 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44257 SetLocal<PT_Sint32>(S, V0);
44258 }
44259#if USE_TAILCALLS
44260 MUSTTAIL return InterpNext(S);
44261#else
44262 return true;
44263#endif
44264}
44265PRESERVE_NONE
44266static bool Interp_SetLocalUint32(InterpState &S) {
44267 {
44268 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44269 SetLocal<PT_Uint32>(S, V0);
44270 }
44271#if USE_TAILCALLS
44272 MUSTTAIL return InterpNext(S);
44273#else
44274 return true;
44275#endif
44276}
44277PRESERVE_NONE
44278static bool Interp_SetLocalSint64(InterpState &S) {
44279 {
44280 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44281 SetLocal<PT_Sint64>(S, V0);
44282 }
44283#if USE_TAILCALLS
44284 MUSTTAIL return InterpNext(S);
44285#else
44286 return true;
44287#endif
44288}
44289PRESERVE_NONE
44290static bool Interp_SetLocalUint64(InterpState &S) {
44291 {
44292 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44293 SetLocal<PT_Uint64>(S, V0);
44294 }
44295#if USE_TAILCALLS
44296 MUSTTAIL return InterpNext(S);
44297#else
44298 return true;
44299#endif
44300}
44301PRESERVE_NONE
44302static bool Interp_SetLocalIntAP(InterpState &S) {
44303 {
44304 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44305 SetLocal<PT_IntAP>(S, V0);
44306 }
44307#if USE_TAILCALLS
44308 MUSTTAIL return InterpNext(S);
44309#else
44310 return true;
44311#endif
44312}
44313PRESERVE_NONE
44314static bool Interp_SetLocalIntAPS(InterpState &S) {
44315 {
44316 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44317 SetLocal<PT_IntAPS>(S, V0);
44318 }
44319#if USE_TAILCALLS
44320 MUSTTAIL return InterpNext(S);
44321#else
44322 return true;
44323#endif
44324}
44325PRESERVE_NONE
44326static bool Interp_SetLocalBool(InterpState &S) {
44327 {
44328 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44329 SetLocal<PT_Bool>(S, V0);
44330 }
44331#if USE_TAILCALLS
44332 MUSTTAIL return InterpNext(S);
44333#else
44334 return true;
44335#endif
44336}
44337PRESERVE_NONE
44338static bool Interp_SetLocalFixedPoint(InterpState &S) {
44339 {
44340 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44341 SetLocal<PT_FixedPoint>(S, V0);
44342 }
44343#if USE_TAILCALLS
44344 MUSTTAIL return InterpNext(S);
44345#else
44346 return true;
44347#endif
44348}
44349PRESERVE_NONE
44350static bool Interp_SetLocalPtr(InterpState &S) {
44351 {
44352 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44353 SetLocal<PT_Ptr>(S, V0);
44354 }
44355#if USE_TAILCALLS
44356 MUSTTAIL return InterpNext(S);
44357#else
44358 return true;
44359#endif
44360}
44361PRESERVE_NONE
44362static bool Interp_SetLocalMemberPtr(InterpState &S) {
44363 {
44364 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44365 SetLocal<PT_MemberPtr>(S, V0);
44366 }
44367#if USE_TAILCALLS
44368 MUSTTAIL return InterpNext(S);
44369#else
44370 return true;
44371#endif
44372}
44373PRESERVE_NONE
44374static bool Interp_SetLocalFloat(InterpState &S) {
44375 {
44376 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44377 SetLocal<PT_Float>(S, V0);
44378 }
44379#if USE_TAILCALLS
44380 MUSTTAIL return InterpNext(S);
44381#else
44382 return true;
44383#endif
44384}
44385#endif
44386#ifdef GET_DISASM
44387case OP_SetLocalSint8:
44388 Text.Op = PrintName("SetLocalSint8");
44389 Text.Args.push_back(printArg<uint32_t>(PC));
44390 break;
44391case OP_SetLocalUint8:
44392 Text.Op = PrintName("SetLocalUint8");
44393 Text.Args.push_back(printArg<uint32_t>(PC));
44394 break;
44395case OP_SetLocalSint16:
44396 Text.Op = PrintName("SetLocalSint16");
44397 Text.Args.push_back(printArg<uint32_t>(PC));
44398 break;
44399case OP_SetLocalUint16:
44400 Text.Op = PrintName("SetLocalUint16");
44401 Text.Args.push_back(printArg<uint32_t>(PC));
44402 break;
44403case OP_SetLocalSint32:
44404 Text.Op = PrintName("SetLocalSint32");
44405 Text.Args.push_back(printArg<uint32_t>(PC));
44406 break;
44407case OP_SetLocalUint32:
44408 Text.Op = PrintName("SetLocalUint32");
44409 Text.Args.push_back(printArg<uint32_t>(PC));
44410 break;
44411case OP_SetLocalSint64:
44412 Text.Op = PrintName("SetLocalSint64");
44413 Text.Args.push_back(printArg<uint32_t>(PC));
44414 break;
44415case OP_SetLocalUint64:
44416 Text.Op = PrintName("SetLocalUint64");
44417 Text.Args.push_back(printArg<uint32_t>(PC));
44418 break;
44419case OP_SetLocalIntAP:
44420 Text.Op = PrintName("SetLocalIntAP");
44421 Text.Args.push_back(printArg<uint32_t>(PC));
44422 break;
44423case OP_SetLocalIntAPS:
44424 Text.Op = PrintName("SetLocalIntAPS");
44425 Text.Args.push_back(printArg<uint32_t>(PC));
44426 break;
44427case OP_SetLocalBool:
44428 Text.Op = PrintName("SetLocalBool");
44429 Text.Args.push_back(printArg<uint32_t>(PC));
44430 break;
44431case OP_SetLocalFixedPoint:
44432 Text.Op = PrintName("SetLocalFixedPoint");
44433 Text.Args.push_back(printArg<uint32_t>(PC));
44434 break;
44435case OP_SetLocalPtr:
44436 Text.Op = PrintName("SetLocalPtr");
44437 Text.Args.push_back(printArg<uint32_t>(PC));
44438 break;
44439case OP_SetLocalMemberPtr:
44440 Text.Op = PrintName("SetLocalMemberPtr");
44441 Text.Args.push_back(printArg<uint32_t>(PC));
44442 break;
44443case OP_SetLocalFloat:
44444 Text.Op = PrintName("SetLocalFloat");
44445 Text.Args.push_back(printArg<uint32_t>(PC));
44446 break;
44447#endif
44448#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44449bool emitSetLocalSint8( uint32_t , SourceInfo);
44450bool emitSetLocalUint8( uint32_t , SourceInfo);
44451bool emitSetLocalSint16( uint32_t , SourceInfo);
44452bool emitSetLocalUint16( uint32_t , SourceInfo);
44453bool emitSetLocalSint32( uint32_t , SourceInfo);
44454bool emitSetLocalUint32( uint32_t , SourceInfo);
44455bool emitSetLocalSint64( uint32_t , SourceInfo);
44456bool emitSetLocalUint64( uint32_t , SourceInfo);
44457bool emitSetLocalIntAP( uint32_t , SourceInfo);
44458bool emitSetLocalIntAPS( uint32_t , SourceInfo);
44459bool emitSetLocalBool( uint32_t , SourceInfo);
44460bool emitSetLocalFixedPoint( uint32_t , SourceInfo);
44461bool emitSetLocalPtr( uint32_t , SourceInfo);
44462bool emitSetLocalMemberPtr( uint32_t , SourceInfo);
44463bool emitSetLocalFloat( uint32_t , SourceInfo);
44464#if defined(GET_EVAL_PROTO)
44465template<PrimType>
44466bool emitSetLocal(uint32_t, SourceInfo);
44467#endif
44468#endif
44469#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44470[[nodiscard]] bool emitSetLocal(PrimType, uint32_t, SourceInfo I);
44471#endif
44472#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
44473bool
44474#if defined(GET_EVAL_IMPL)
44475EvalEmitter
44476#else
44477ByteCodeEmitter
44478#endif
44479::emitSetLocal(PrimType T0, uint32_t A0, SourceInfo I) {
44480 switch (T0) {
44481 case PT_Sint8:
44482#ifdef GET_LINK_IMPL
44483 return emitSetLocalSint8
44484#else
44485 return emitSetLocal<PT_Sint8>
44486#endif
44487 (A0, I);
44488 case PT_Uint8:
44489#ifdef GET_LINK_IMPL
44490 return emitSetLocalUint8
44491#else
44492 return emitSetLocal<PT_Uint8>
44493#endif
44494 (A0, I);
44495 case PT_Sint16:
44496#ifdef GET_LINK_IMPL
44497 return emitSetLocalSint16
44498#else
44499 return emitSetLocal<PT_Sint16>
44500#endif
44501 (A0, I);
44502 case PT_Uint16:
44503#ifdef GET_LINK_IMPL
44504 return emitSetLocalUint16
44505#else
44506 return emitSetLocal<PT_Uint16>
44507#endif
44508 (A0, I);
44509 case PT_Sint32:
44510#ifdef GET_LINK_IMPL
44511 return emitSetLocalSint32
44512#else
44513 return emitSetLocal<PT_Sint32>
44514#endif
44515 (A0, I);
44516 case PT_Uint32:
44517#ifdef GET_LINK_IMPL
44518 return emitSetLocalUint32
44519#else
44520 return emitSetLocal<PT_Uint32>
44521#endif
44522 (A0, I);
44523 case PT_Sint64:
44524#ifdef GET_LINK_IMPL
44525 return emitSetLocalSint64
44526#else
44527 return emitSetLocal<PT_Sint64>
44528#endif
44529 (A0, I);
44530 case PT_Uint64:
44531#ifdef GET_LINK_IMPL
44532 return emitSetLocalUint64
44533#else
44534 return emitSetLocal<PT_Uint64>
44535#endif
44536 (A0, I);
44537 case PT_IntAP:
44538#ifdef GET_LINK_IMPL
44539 return emitSetLocalIntAP
44540#else
44541 return emitSetLocal<PT_IntAP>
44542#endif
44543 (A0, I);
44544 case PT_IntAPS:
44545#ifdef GET_LINK_IMPL
44546 return emitSetLocalIntAPS
44547#else
44548 return emitSetLocal<PT_IntAPS>
44549#endif
44550 (A0, I);
44551 case PT_Bool:
44552#ifdef GET_LINK_IMPL
44553 return emitSetLocalBool
44554#else
44555 return emitSetLocal<PT_Bool>
44556#endif
44557 (A0, I);
44558 case PT_FixedPoint:
44559#ifdef GET_LINK_IMPL
44560 return emitSetLocalFixedPoint
44561#else
44562 return emitSetLocal<PT_FixedPoint>
44563#endif
44564 (A0, I);
44565 case PT_Ptr:
44566#ifdef GET_LINK_IMPL
44567 return emitSetLocalPtr
44568#else
44569 return emitSetLocal<PT_Ptr>
44570#endif
44571 (A0, I);
44572 case PT_MemberPtr:
44573#ifdef GET_LINK_IMPL
44574 return emitSetLocalMemberPtr
44575#else
44576 return emitSetLocal<PT_MemberPtr>
44577#endif
44578 (A0, I);
44579 case PT_Float:
44580#ifdef GET_LINK_IMPL
44581 return emitSetLocalFloat
44582#else
44583 return emitSetLocal<PT_Float>
44584#endif
44585 (A0, I);
44586 }
44587 llvm_unreachable("invalid enum value");
44588}
44589#endif
44590#ifdef GET_LINK_IMPL
44591bool ByteCodeEmitter::emitSetLocalSint8( uint32_t A0, SourceInfo L) {
44592 return emitOp<uint32_t>(OP_SetLocalSint8, A0, L);
44593}
44594bool ByteCodeEmitter::emitSetLocalUint8( uint32_t A0, SourceInfo L) {
44595 return emitOp<uint32_t>(OP_SetLocalUint8, A0, L);
44596}
44597bool ByteCodeEmitter::emitSetLocalSint16( uint32_t A0, SourceInfo L) {
44598 return emitOp<uint32_t>(OP_SetLocalSint16, A0, L);
44599}
44600bool ByteCodeEmitter::emitSetLocalUint16( uint32_t A0, SourceInfo L) {
44601 return emitOp<uint32_t>(OP_SetLocalUint16, A0, L);
44602}
44603bool ByteCodeEmitter::emitSetLocalSint32( uint32_t A0, SourceInfo L) {
44604 return emitOp<uint32_t>(OP_SetLocalSint32, A0, L);
44605}
44606bool ByteCodeEmitter::emitSetLocalUint32( uint32_t A0, SourceInfo L) {
44607 return emitOp<uint32_t>(OP_SetLocalUint32, A0, L);
44608}
44609bool ByteCodeEmitter::emitSetLocalSint64( uint32_t A0, SourceInfo L) {
44610 return emitOp<uint32_t>(OP_SetLocalSint64, A0, L);
44611}
44612bool ByteCodeEmitter::emitSetLocalUint64( uint32_t A0, SourceInfo L) {
44613 return emitOp<uint32_t>(OP_SetLocalUint64, A0, L);
44614}
44615bool ByteCodeEmitter::emitSetLocalIntAP( uint32_t A0, SourceInfo L) {
44616 return emitOp<uint32_t>(OP_SetLocalIntAP, A0, L);
44617}
44618bool ByteCodeEmitter::emitSetLocalIntAPS( uint32_t A0, SourceInfo L) {
44619 return emitOp<uint32_t>(OP_SetLocalIntAPS, A0, L);
44620}
44621bool ByteCodeEmitter::emitSetLocalBool( uint32_t A0, SourceInfo L) {
44622 return emitOp<uint32_t>(OP_SetLocalBool, A0, L);
44623}
44624bool ByteCodeEmitter::emitSetLocalFixedPoint( uint32_t A0, SourceInfo L) {
44625 return emitOp<uint32_t>(OP_SetLocalFixedPoint, A0, L);
44626}
44627bool ByteCodeEmitter::emitSetLocalPtr( uint32_t A0, SourceInfo L) {
44628 return emitOp<uint32_t>(OP_SetLocalPtr, A0, L);
44629}
44630bool ByteCodeEmitter::emitSetLocalMemberPtr( uint32_t A0, SourceInfo L) {
44631 return emitOp<uint32_t>(OP_SetLocalMemberPtr, A0, L);
44632}
44633bool ByteCodeEmitter::emitSetLocalFloat( uint32_t A0, SourceInfo L) {
44634 return emitOp<uint32_t>(OP_SetLocalFloat, A0, L);
44635}
44636#endif
44637#ifdef GET_OPCODE_NAMES
44638OP_SetParamSint8,
44639OP_SetParamUint8,
44640OP_SetParamSint16,
44641OP_SetParamUint16,
44642OP_SetParamSint32,
44643OP_SetParamUint32,
44644OP_SetParamSint64,
44645OP_SetParamUint64,
44646OP_SetParamIntAP,
44647OP_SetParamIntAPS,
44648OP_SetParamBool,
44649OP_SetParamFixedPoint,
44650OP_SetParamPtr,
44651OP_SetParamMemberPtr,
44652OP_SetParamFloat,
44653#endif
44654#ifdef GET_INTERPFN_LIST
44655&Interp_SetParamSint8,
44656&Interp_SetParamUint8,
44657&Interp_SetParamSint16,
44658&Interp_SetParamUint16,
44659&Interp_SetParamSint32,
44660&Interp_SetParamUint32,
44661&Interp_SetParamSint64,
44662&Interp_SetParamUint64,
44663&Interp_SetParamIntAP,
44664&Interp_SetParamIntAPS,
44665&Interp_SetParamBool,
44666&Interp_SetParamFixedPoint,
44667&Interp_SetParamPtr,
44668&Interp_SetParamMemberPtr,
44669&Interp_SetParamFloat,
44670#endif
44671#ifdef GET_INTERPFN_DISPATCHERS
44672PRESERVE_NONE
44673static bool Interp_SetParamSint8(InterpState &S) {
44674 {
44675 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44676 SetParam<PT_Sint8>(S, V0);
44677 }
44678#if USE_TAILCALLS
44679 MUSTTAIL return InterpNext(S);
44680#else
44681 return true;
44682#endif
44683}
44684PRESERVE_NONE
44685static bool Interp_SetParamUint8(InterpState &S) {
44686 {
44687 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44688 SetParam<PT_Uint8>(S, V0);
44689 }
44690#if USE_TAILCALLS
44691 MUSTTAIL return InterpNext(S);
44692#else
44693 return true;
44694#endif
44695}
44696PRESERVE_NONE
44697static bool Interp_SetParamSint16(InterpState &S) {
44698 {
44699 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44700 SetParam<PT_Sint16>(S, V0);
44701 }
44702#if USE_TAILCALLS
44703 MUSTTAIL return InterpNext(S);
44704#else
44705 return true;
44706#endif
44707}
44708PRESERVE_NONE
44709static bool Interp_SetParamUint16(InterpState &S) {
44710 {
44711 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44712 SetParam<PT_Uint16>(S, V0);
44713 }
44714#if USE_TAILCALLS
44715 MUSTTAIL return InterpNext(S);
44716#else
44717 return true;
44718#endif
44719}
44720PRESERVE_NONE
44721static bool Interp_SetParamSint32(InterpState &S) {
44722 {
44723 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44724 SetParam<PT_Sint32>(S, V0);
44725 }
44726#if USE_TAILCALLS
44727 MUSTTAIL return InterpNext(S);
44728#else
44729 return true;
44730#endif
44731}
44732PRESERVE_NONE
44733static bool Interp_SetParamUint32(InterpState &S) {
44734 {
44735 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44736 SetParam<PT_Uint32>(S, V0);
44737 }
44738#if USE_TAILCALLS
44739 MUSTTAIL return InterpNext(S);
44740#else
44741 return true;
44742#endif
44743}
44744PRESERVE_NONE
44745static bool Interp_SetParamSint64(InterpState &S) {
44746 {
44747 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44748 SetParam<PT_Sint64>(S, V0);
44749 }
44750#if USE_TAILCALLS
44751 MUSTTAIL return InterpNext(S);
44752#else
44753 return true;
44754#endif
44755}
44756PRESERVE_NONE
44757static bool Interp_SetParamUint64(InterpState &S) {
44758 {
44759 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44760 SetParam<PT_Uint64>(S, V0);
44761 }
44762#if USE_TAILCALLS
44763 MUSTTAIL return InterpNext(S);
44764#else
44765 return true;
44766#endif
44767}
44768PRESERVE_NONE
44769static bool Interp_SetParamIntAP(InterpState &S) {
44770 {
44771 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44772 SetParam<PT_IntAP>(S, V0);
44773 }
44774#if USE_TAILCALLS
44775 MUSTTAIL return InterpNext(S);
44776#else
44777 return true;
44778#endif
44779}
44780PRESERVE_NONE
44781static bool Interp_SetParamIntAPS(InterpState &S) {
44782 {
44783 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44784 SetParam<PT_IntAPS>(S, V0);
44785 }
44786#if USE_TAILCALLS
44787 MUSTTAIL return InterpNext(S);
44788#else
44789 return true;
44790#endif
44791}
44792PRESERVE_NONE
44793static bool Interp_SetParamBool(InterpState &S) {
44794 {
44795 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44796 SetParam<PT_Bool>(S, V0);
44797 }
44798#if USE_TAILCALLS
44799 MUSTTAIL return InterpNext(S);
44800#else
44801 return true;
44802#endif
44803}
44804PRESERVE_NONE
44805static bool Interp_SetParamFixedPoint(InterpState &S) {
44806 {
44807 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44808 SetParam<PT_FixedPoint>(S, V0);
44809 }
44810#if USE_TAILCALLS
44811 MUSTTAIL return InterpNext(S);
44812#else
44813 return true;
44814#endif
44815}
44816PRESERVE_NONE
44817static bool Interp_SetParamPtr(InterpState &S) {
44818 {
44819 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44820 SetParam<PT_Ptr>(S, V0);
44821 }
44822#if USE_TAILCALLS
44823 MUSTTAIL return InterpNext(S);
44824#else
44825 return true;
44826#endif
44827}
44828PRESERVE_NONE
44829static bool Interp_SetParamMemberPtr(InterpState &S) {
44830 {
44831 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44832 SetParam<PT_MemberPtr>(S, V0);
44833 }
44834#if USE_TAILCALLS
44835 MUSTTAIL return InterpNext(S);
44836#else
44837 return true;
44838#endif
44839}
44840PRESERVE_NONE
44841static bool Interp_SetParamFloat(InterpState &S) {
44842 {
44843 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44844 SetParam<PT_Float>(S, V0);
44845 }
44846#if USE_TAILCALLS
44847 MUSTTAIL return InterpNext(S);
44848#else
44849 return true;
44850#endif
44851}
44852#endif
44853#ifdef GET_DISASM
44854case OP_SetParamSint8:
44855 Text.Op = PrintName("SetParamSint8");
44856 Text.Args.push_back(printArg<uint32_t>(PC));
44857 break;
44858case OP_SetParamUint8:
44859 Text.Op = PrintName("SetParamUint8");
44860 Text.Args.push_back(printArg<uint32_t>(PC));
44861 break;
44862case OP_SetParamSint16:
44863 Text.Op = PrintName("SetParamSint16");
44864 Text.Args.push_back(printArg<uint32_t>(PC));
44865 break;
44866case OP_SetParamUint16:
44867 Text.Op = PrintName("SetParamUint16");
44868 Text.Args.push_back(printArg<uint32_t>(PC));
44869 break;
44870case OP_SetParamSint32:
44871 Text.Op = PrintName("SetParamSint32");
44872 Text.Args.push_back(printArg<uint32_t>(PC));
44873 break;
44874case OP_SetParamUint32:
44875 Text.Op = PrintName("SetParamUint32");
44876 Text.Args.push_back(printArg<uint32_t>(PC));
44877 break;
44878case OP_SetParamSint64:
44879 Text.Op = PrintName("SetParamSint64");
44880 Text.Args.push_back(printArg<uint32_t>(PC));
44881 break;
44882case OP_SetParamUint64:
44883 Text.Op = PrintName("SetParamUint64");
44884 Text.Args.push_back(printArg<uint32_t>(PC));
44885 break;
44886case OP_SetParamIntAP:
44887 Text.Op = PrintName("SetParamIntAP");
44888 Text.Args.push_back(printArg<uint32_t>(PC));
44889 break;
44890case OP_SetParamIntAPS:
44891 Text.Op = PrintName("SetParamIntAPS");
44892 Text.Args.push_back(printArg<uint32_t>(PC));
44893 break;
44894case OP_SetParamBool:
44895 Text.Op = PrintName("SetParamBool");
44896 Text.Args.push_back(printArg<uint32_t>(PC));
44897 break;
44898case OP_SetParamFixedPoint:
44899 Text.Op = PrintName("SetParamFixedPoint");
44900 Text.Args.push_back(printArg<uint32_t>(PC));
44901 break;
44902case OP_SetParamPtr:
44903 Text.Op = PrintName("SetParamPtr");
44904 Text.Args.push_back(printArg<uint32_t>(PC));
44905 break;
44906case OP_SetParamMemberPtr:
44907 Text.Op = PrintName("SetParamMemberPtr");
44908 Text.Args.push_back(printArg<uint32_t>(PC));
44909 break;
44910case OP_SetParamFloat:
44911 Text.Op = PrintName("SetParamFloat");
44912 Text.Args.push_back(printArg<uint32_t>(PC));
44913 break;
44914#endif
44915#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44916bool emitSetParamSint8( uint32_t , SourceInfo);
44917bool emitSetParamUint8( uint32_t , SourceInfo);
44918bool emitSetParamSint16( uint32_t , SourceInfo);
44919bool emitSetParamUint16( uint32_t , SourceInfo);
44920bool emitSetParamSint32( uint32_t , SourceInfo);
44921bool emitSetParamUint32( uint32_t , SourceInfo);
44922bool emitSetParamSint64( uint32_t , SourceInfo);
44923bool emitSetParamUint64( uint32_t , SourceInfo);
44924bool emitSetParamIntAP( uint32_t , SourceInfo);
44925bool emitSetParamIntAPS( uint32_t , SourceInfo);
44926bool emitSetParamBool( uint32_t , SourceInfo);
44927bool emitSetParamFixedPoint( uint32_t , SourceInfo);
44928bool emitSetParamPtr( uint32_t , SourceInfo);
44929bool emitSetParamMemberPtr( uint32_t , SourceInfo);
44930bool emitSetParamFloat( uint32_t , SourceInfo);
44931#endif
44932#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44933[[nodiscard]] bool emitSetParam(PrimType, uint32_t, SourceInfo I);
44934#endif
44935#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
44936bool
44937#if defined(GET_EVAL_IMPL)
44938EvalEmitter
44939#else
44940ByteCodeEmitter
44941#endif
44942::emitSetParam(PrimType T0, uint32_t A0, SourceInfo I) {
44943 switch (T0) {
44944 case PT_Sint8:
44945 return emitSetParamSint8(A0, I);
44946 case PT_Uint8:
44947 return emitSetParamUint8(A0, I);
44948 case PT_Sint16:
44949 return emitSetParamSint16(A0, I);
44950 case PT_Uint16:
44951 return emitSetParamUint16(A0, I);
44952 case PT_Sint32:
44953 return emitSetParamSint32(A0, I);
44954 case PT_Uint32:
44955 return emitSetParamUint32(A0, I);
44956 case PT_Sint64:
44957 return emitSetParamSint64(A0, I);
44958 case PT_Uint64:
44959 return emitSetParamUint64(A0, I);
44960 case PT_IntAP:
44961 return emitSetParamIntAP(A0, I);
44962 case PT_IntAPS:
44963 return emitSetParamIntAPS(A0, I);
44964 case PT_Bool:
44965 return emitSetParamBool(A0, I);
44966 case PT_FixedPoint:
44967 return emitSetParamFixedPoint(A0, I);
44968 case PT_Ptr:
44969 return emitSetParamPtr(A0, I);
44970 case PT_MemberPtr:
44971 return emitSetParamMemberPtr(A0, I);
44972 case PT_Float:
44973 return emitSetParamFloat(A0, I);
44974 }
44975 llvm_unreachable("invalid enum value");
44976}
44977#endif
44978#ifdef GET_LINK_IMPL
44979bool ByteCodeEmitter::emitSetParamSint8( uint32_t A0, SourceInfo L) {
44980 return emitOp<uint32_t>(OP_SetParamSint8, A0, L);
44981}
44982bool ByteCodeEmitter::emitSetParamUint8( uint32_t A0, SourceInfo L) {
44983 return emitOp<uint32_t>(OP_SetParamUint8, A0, L);
44984}
44985bool ByteCodeEmitter::emitSetParamSint16( uint32_t A0, SourceInfo L) {
44986 return emitOp<uint32_t>(OP_SetParamSint16, A0, L);
44987}
44988bool ByteCodeEmitter::emitSetParamUint16( uint32_t A0, SourceInfo L) {
44989 return emitOp<uint32_t>(OP_SetParamUint16, A0, L);
44990}
44991bool ByteCodeEmitter::emitSetParamSint32( uint32_t A0, SourceInfo L) {
44992 return emitOp<uint32_t>(OP_SetParamSint32, A0, L);
44993}
44994bool ByteCodeEmitter::emitSetParamUint32( uint32_t A0, SourceInfo L) {
44995 return emitOp<uint32_t>(OP_SetParamUint32, A0, L);
44996}
44997bool ByteCodeEmitter::emitSetParamSint64( uint32_t A0, SourceInfo L) {
44998 return emitOp<uint32_t>(OP_SetParamSint64, A0, L);
44999}
45000bool ByteCodeEmitter::emitSetParamUint64( uint32_t A0, SourceInfo L) {
45001 return emitOp<uint32_t>(OP_SetParamUint64, A0, L);
45002}
45003bool ByteCodeEmitter::emitSetParamIntAP( uint32_t A0, SourceInfo L) {
45004 return emitOp<uint32_t>(OP_SetParamIntAP, A0, L);
45005}
45006bool ByteCodeEmitter::emitSetParamIntAPS( uint32_t A0, SourceInfo L) {
45007 return emitOp<uint32_t>(OP_SetParamIntAPS, A0, L);
45008}
45009bool ByteCodeEmitter::emitSetParamBool( uint32_t A0, SourceInfo L) {
45010 return emitOp<uint32_t>(OP_SetParamBool, A0, L);
45011}
45012bool ByteCodeEmitter::emitSetParamFixedPoint( uint32_t A0, SourceInfo L) {
45013 return emitOp<uint32_t>(OP_SetParamFixedPoint, A0, L);
45014}
45015bool ByteCodeEmitter::emitSetParamPtr( uint32_t A0, SourceInfo L) {
45016 return emitOp<uint32_t>(OP_SetParamPtr, A0, L);
45017}
45018bool ByteCodeEmitter::emitSetParamMemberPtr( uint32_t A0, SourceInfo L) {
45019 return emitOp<uint32_t>(OP_SetParamMemberPtr, A0, L);
45020}
45021bool ByteCodeEmitter::emitSetParamFloat( uint32_t A0, SourceInfo L) {
45022 return emitOp<uint32_t>(OP_SetParamFloat, A0, L);
45023}
45024#endif
45025#ifdef GET_EVAL_IMPL
45026bool EvalEmitter::emitSetParamSint8( uint32_t A0, SourceInfo L) {
45027 if (!isActive()) return true;
45028 CurrentSource = L;
45029 return SetParam<PT_Sint8>(S, A0);
45030}
45031bool EvalEmitter::emitSetParamUint8( uint32_t A0, SourceInfo L) {
45032 if (!isActive()) return true;
45033 CurrentSource = L;
45034 return SetParam<PT_Uint8>(S, A0);
45035}
45036bool EvalEmitter::emitSetParamSint16( uint32_t A0, SourceInfo L) {
45037 if (!isActive()) return true;
45038 CurrentSource = L;
45039 return SetParam<PT_Sint16>(S, A0);
45040}
45041bool EvalEmitter::emitSetParamUint16( uint32_t A0, SourceInfo L) {
45042 if (!isActive()) return true;
45043 CurrentSource = L;
45044 return SetParam<PT_Uint16>(S, A0);
45045}
45046bool EvalEmitter::emitSetParamSint32( uint32_t A0, SourceInfo L) {
45047 if (!isActive()) return true;
45048 CurrentSource = L;
45049 return SetParam<PT_Sint32>(S, A0);
45050}
45051bool EvalEmitter::emitSetParamUint32( uint32_t A0, SourceInfo L) {
45052 if (!isActive()) return true;
45053 CurrentSource = L;
45054 return SetParam<PT_Uint32>(S, A0);
45055}
45056bool EvalEmitter::emitSetParamSint64( uint32_t A0, SourceInfo L) {
45057 if (!isActive()) return true;
45058 CurrentSource = L;
45059 return SetParam<PT_Sint64>(S, A0);
45060}
45061bool EvalEmitter::emitSetParamUint64( uint32_t A0, SourceInfo L) {
45062 if (!isActive()) return true;
45063 CurrentSource = L;
45064 return SetParam<PT_Uint64>(S, A0);
45065}
45066bool EvalEmitter::emitSetParamIntAP( uint32_t A0, SourceInfo L) {
45067 if (!isActive()) return true;
45068 CurrentSource = L;
45069 return SetParam<PT_IntAP>(S, A0);
45070}
45071bool EvalEmitter::emitSetParamIntAPS( uint32_t A0, SourceInfo L) {
45072 if (!isActive()) return true;
45073 CurrentSource = L;
45074 return SetParam<PT_IntAPS>(S, A0);
45075}
45076bool EvalEmitter::emitSetParamBool( uint32_t A0, SourceInfo L) {
45077 if (!isActive()) return true;
45078 CurrentSource = L;
45079 return SetParam<PT_Bool>(S, A0);
45080}
45081bool EvalEmitter::emitSetParamFixedPoint( uint32_t A0, SourceInfo L) {
45082 if (!isActive()) return true;
45083 CurrentSource = L;
45084 return SetParam<PT_FixedPoint>(S, A0);
45085}
45086bool EvalEmitter::emitSetParamPtr( uint32_t A0, SourceInfo L) {
45087 if (!isActive()) return true;
45088 CurrentSource = L;
45089 return SetParam<PT_Ptr>(S, A0);
45090}
45091bool EvalEmitter::emitSetParamMemberPtr( uint32_t A0, SourceInfo L) {
45092 if (!isActive()) return true;
45093 CurrentSource = L;
45094 return SetParam<PT_MemberPtr>(S, A0);
45095}
45096bool EvalEmitter::emitSetParamFloat( uint32_t A0, SourceInfo L) {
45097 if (!isActive()) return true;
45098 CurrentSource = L;
45099 return SetParam<PT_Float>(S, A0);
45100}
45101#endif
45102#ifdef GET_OPCODE_NAMES
45103OP_ShiftFixedPoint,
45104#endif
45105#ifdef GET_INTERPFN_LIST
45106&Interp_ShiftFixedPoint,
45107#endif
45108#ifdef GET_INTERPFN_DISPATCHERS
45109PRESERVE_NONE
45110static bool Interp_ShiftFixedPoint(InterpState &S) {
45111 {
45112 CodePtr OpPC = S.PC;
45113 const auto V0 = ReadArg<bool>(S, S.PC);
45114 if (!ShiftFixedPoint(S, OpPC, V0)) return false;
45115 }
45116#if USE_TAILCALLS
45117 MUSTTAIL return InterpNext(S);
45118#else
45119 return true;
45120#endif
45121}
45122#endif
45123#ifdef GET_DISASM
45124case OP_ShiftFixedPoint:
45125 Text.Op = PrintName("ShiftFixedPoint");
45126 Text.Args.push_back(printArg<bool>(PC));
45127 break;
45128#endif
45129#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
45130bool emitShiftFixedPoint( bool , SourceInfo);
45131#endif
45132#ifdef GET_LINK_IMPL
45133bool ByteCodeEmitter::emitShiftFixedPoint( bool A0, SourceInfo L) {
45134 return emitOp<bool>(OP_ShiftFixedPoint, A0, L);
45135}
45136#endif
45137#ifdef GET_EVAL_IMPL
45138bool EvalEmitter::emitShiftFixedPoint( bool A0, SourceInfo L) {
45139 if (!isActive()) return true;
45140 CurrentSource = L;
45141 return ShiftFixedPoint(S, CodePtr(), A0);
45142}
45143#endif
45144#ifdef GET_OPCODE_NAMES
45145OP_ShlSint8Sint8,
45146OP_ShlSint8Uint8,
45147OP_ShlSint8Sint16,
45148OP_ShlSint8Uint16,
45149OP_ShlSint8Sint32,
45150OP_ShlSint8Uint32,
45151OP_ShlSint8Sint64,
45152OP_ShlSint8Uint64,
45153OP_ShlSint8IntAP,
45154OP_ShlSint8IntAPS,
45155OP_ShlUint8Sint8,
45156OP_ShlUint8Uint8,
45157OP_ShlUint8Sint16,
45158OP_ShlUint8Uint16,
45159OP_ShlUint8Sint32,
45160OP_ShlUint8Uint32,
45161OP_ShlUint8Sint64,
45162OP_ShlUint8Uint64,
45163OP_ShlUint8IntAP,
45164OP_ShlUint8IntAPS,
45165OP_ShlSint16Sint8,
45166OP_ShlSint16Uint8,
45167OP_ShlSint16Sint16,
45168OP_ShlSint16Uint16,
45169OP_ShlSint16Sint32,
45170OP_ShlSint16Uint32,
45171OP_ShlSint16Sint64,
45172OP_ShlSint16Uint64,
45173OP_ShlSint16IntAP,
45174OP_ShlSint16IntAPS,
45175OP_ShlUint16Sint8,
45176OP_ShlUint16Uint8,
45177OP_ShlUint16Sint16,
45178OP_ShlUint16Uint16,
45179OP_ShlUint16Sint32,
45180OP_ShlUint16Uint32,
45181OP_ShlUint16Sint64,
45182OP_ShlUint16Uint64,
45183OP_ShlUint16IntAP,
45184OP_ShlUint16IntAPS,
45185OP_ShlSint32Sint8,
45186OP_ShlSint32Uint8,
45187OP_ShlSint32Sint16,
45188OP_ShlSint32Uint16,
45189OP_ShlSint32Sint32,
45190OP_ShlSint32Uint32,
45191OP_ShlSint32Sint64,
45192OP_ShlSint32Uint64,
45193OP_ShlSint32IntAP,
45194OP_ShlSint32IntAPS,
45195OP_ShlUint32Sint8,
45196OP_ShlUint32Uint8,
45197OP_ShlUint32Sint16,
45198OP_ShlUint32Uint16,
45199OP_ShlUint32Sint32,
45200OP_ShlUint32Uint32,
45201OP_ShlUint32Sint64,
45202OP_ShlUint32Uint64,
45203OP_ShlUint32IntAP,
45204OP_ShlUint32IntAPS,
45205OP_ShlSint64Sint8,
45206OP_ShlSint64Uint8,
45207OP_ShlSint64Sint16,
45208OP_ShlSint64Uint16,
45209OP_ShlSint64Sint32,
45210OP_ShlSint64Uint32,
45211OP_ShlSint64Sint64,
45212OP_ShlSint64Uint64,
45213OP_ShlSint64IntAP,
45214OP_ShlSint64IntAPS,
45215OP_ShlUint64Sint8,
45216OP_ShlUint64Uint8,
45217OP_ShlUint64Sint16,
45218OP_ShlUint64Uint16,
45219OP_ShlUint64Sint32,
45220OP_ShlUint64Uint32,
45221OP_ShlUint64Sint64,
45222OP_ShlUint64Uint64,
45223OP_ShlUint64IntAP,
45224OP_ShlUint64IntAPS,
45225OP_ShlIntAPSint8,
45226OP_ShlIntAPUint8,
45227OP_ShlIntAPSint16,
45228OP_ShlIntAPUint16,
45229OP_ShlIntAPSint32,
45230OP_ShlIntAPUint32,
45231OP_ShlIntAPSint64,
45232OP_ShlIntAPUint64,
45233OP_ShlIntAPIntAP,
45234OP_ShlIntAPIntAPS,
45235OP_ShlIntAPSSint8,
45236OP_ShlIntAPSUint8,
45237OP_ShlIntAPSSint16,
45238OP_ShlIntAPSUint16,
45239OP_ShlIntAPSSint32,
45240OP_ShlIntAPSUint32,
45241OP_ShlIntAPSSint64,
45242OP_ShlIntAPSUint64,
45243OP_ShlIntAPSIntAP,
45244OP_ShlIntAPSIntAPS,
45245#endif
45246#ifdef GET_INTERPFN_LIST
45247&Interp_ShlSint8Sint8,
45248&Interp_ShlSint8Uint8,
45249&Interp_ShlSint8Sint16,
45250&Interp_ShlSint8Uint16,
45251&Interp_ShlSint8Sint32,
45252&Interp_ShlSint8Uint32,
45253&Interp_ShlSint8Sint64,
45254&Interp_ShlSint8Uint64,
45255&Interp_ShlSint8IntAP,
45256&Interp_ShlSint8IntAPS,
45257&Interp_ShlUint8Sint8,
45258&Interp_ShlUint8Uint8,
45259&Interp_ShlUint8Sint16,
45260&Interp_ShlUint8Uint16,
45261&Interp_ShlUint8Sint32,
45262&Interp_ShlUint8Uint32,
45263&Interp_ShlUint8Sint64,
45264&Interp_ShlUint8Uint64,
45265&Interp_ShlUint8IntAP,
45266&Interp_ShlUint8IntAPS,
45267&Interp_ShlSint16Sint8,
45268&Interp_ShlSint16Uint8,
45269&Interp_ShlSint16Sint16,
45270&Interp_ShlSint16Uint16,
45271&Interp_ShlSint16Sint32,
45272&Interp_ShlSint16Uint32,
45273&Interp_ShlSint16Sint64,
45274&Interp_ShlSint16Uint64,
45275&Interp_ShlSint16IntAP,
45276&Interp_ShlSint16IntAPS,
45277&Interp_ShlUint16Sint8,
45278&Interp_ShlUint16Uint8,
45279&Interp_ShlUint16Sint16,
45280&Interp_ShlUint16Uint16,
45281&Interp_ShlUint16Sint32,
45282&Interp_ShlUint16Uint32,
45283&Interp_ShlUint16Sint64,
45284&Interp_ShlUint16Uint64,
45285&Interp_ShlUint16IntAP,
45286&Interp_ShlUint16IntAPS,
45287&Interp_ShlSint32Sint8,
45288&Interp_ShlSint32Uint8,
45289&Interp_ShlSint32Sint16,
45290&Interp_ShlSint32Uint16,
45291&Interp_ShlSint32Sint32,
45292&Interp_ShlSint32Uint32,
45293&Interp_ShlSint32Sint64,
45294&Interp_ShlSint32Uint64,
45295&Interp_ShlSint32IntAP,
45296&Interp_ShlSint32IntAPS,
45297&Interp_ShlUint32Sint8,
45298&Interp_ShlUint32Uint8,
45299&Interp_ShlUint32Sint16,
45300&Interp_ShlUint32Uint16,
45301&Interp_ShlUint32Sint32,
45302&Interp_ShlUint32Uint32,
45303&Interp_ShlUint32Sint64,
45304&Interp_ShlUint32Uint64,
45305&Interp_ShlUint32IntAP,
45306&Interp_ShlUint32IntAPS,
45307&Interp_ShlSint64Sint8,
45308&Interp_ShlSint64Uint8,
45309&Interp_ShlSint64Sint16,
45310&Interp_ShlSint64Uint16,
45311&Interp_ShlSint64Sint32,
45312&Interp_ShlSint64Uint32,
45313&Interp_ShlSint64Sint64,
45314&Interp_ShlSint64Uint64,
45315&Interp_ShlSint64IntAP,
45316&Interp_ShlSint64IntAPS,
45317&Interp_ShlUint64Sint8,
45318&Interp_ShlUint64Uint8,
45319&Interp_ShlUint64Sint16,
45320&Interp_ShlUint64Uint16,
45321&Interp_ShlUint64Sint32,
45322&Interp_ShlUint64Uint32,
45323&Interp_ShlUint64Sint64,
45324&Interp_ShlUint64Uint64,
45325&Interp_ShlUint64IntAP,
45326&Interp_ShlUint64IntAPS,
45327&Interp_ShlIntAPSint8,
45328&Interp_ShlIntAPUint8,
45329&Interp_ShlIntAPSint16,
45330&Interp_ShlIntAPUint16,
45331&Interp_ShlIntAPSint32,
45332&Interp_ShlIntAPUint32,
45333&Interp_ShlIntAPSint64,
45334&Interp_ShlIntAPUint64,
45335&Interp_ShlIntAPIntAP,
45336&Interp_ShlIntAPIntAPS,
45337&Interp_ShlIntAPSSint8,
45338&Interp_ShlIntAPSUint8,
45339&Interp_ShlIntAPSSint16,
45340&Interp_ShlIntAPSUint16,
45341&Interp_ShlIntAPSSint32,
45342&Interp_ShlIntAPSUint32,
45343&Interp_ShlIntAPSSint64,
45344&Interp_ShlIntAPSUint64,
45345&Interp_ShlIntAPSIntAP,
45346&Interp_ShlIntAPSIntAPS,
45347#endif
45348#ifdef GET_INTERPFN_DISPATCHERS
45349PRESERVE_NONE
45350static bool Interp_ShlSint8Sint8(InterpState &S) {
45351 if (!Shl<PT_Sint8, PT_Sint8>(S, S.PC)) return false;
45352#if USE_TAILCALLS
45353 MUSTTAIL return InterpNext(S);
45354#else
45355 return true;
45356#endif
45357}
45358PRESERVE_NONE
45359static bool Interp_ShlSint8Uint8(InterpState &S) {
45360 if (!Shl<PT_Sint8, PT_Uint8>(S, S.PC)) return false;
45361#if USE_TAILCALLS
45362 MUSTTAIL return InterpNext(S);
45363#else
45364 return true;
45365#endif
45366}
45367PRESERVE_NONE
45368static bool Interp_ShlSint8Sint16(InterpState &S) {
45369 if (!Shl<PT_Sint8, PT_Sint16>(S, S.PC)) return false;
45370#if USE_TAILCALLS
45371 MUSTTAIL return InterpNext(S);
45372#else
45373 return true;
45374#endif
45375}
45376PRESERVE_NONE
45377static bool Interp_ShlSint8Uint16(InterpState &S) {
45378 if (!Shl<PT_Sint8, PT_Uint16>(S, S.PC)) return false;
45379#if USE_TAILCALLS
45380 MUSTTAIL return InterpNext(S);
45381#else
45382 return true;
45383#endif
45384}
45385PRESERVE_NONE
45386static bool Interp_ShlSint8Sint32(InterpState &S) {
45387 if (!Shl<PT_Sint8, PT_Sint32>(S, S.PC)) return false;
45388#if USE_TAILCALLS
45389 MUSTTAIL return InterpNext(S);
45390#else
45391 return true;
45392#endif
45393}
45394PRESERVE_NONE
45395static bool Interp_ShlSint8Uint32(InterpState &S) {
45396 if (!Shl<PT_Sint8, PT_Uint32>(S, S.PC)) return false;
45397#if USE_TAILCALLS
45398 MUSTTAIL return InterpNext(S);
45399#else
45400 return true;
45401#endif
45402}
45403PRESERVE_NONE
45404static bool Interp_ShlSint8Sint64(InterpState &S) {
45405 if (!Shl<PT_Sint8, PT_Sint64>(S, S.PC)) return false;
45406#if USE_TAILCALLS
45407 MUSTTAIL return InterpNext(S);
45408#else
45409 return true;
45410#endif
45411}
45412PRESERVE_NONE
45413static bool Interp_ShlSint8Uint64(InterpState &S) {
45414 if (!Shl<PT_Sint8, PT_Uint64>(S, S.PC)) return false;
45415#if USE_TAILCALLS
45416 MUSTTAIL return InterpNext(S);
45417#else
45418 return true;
45419#endif
45420}
45421PRESERVE_NONE
45422static bool Interp_ShlSint8IntAP(InterpState &S) {
45423 if (!Shl<PT_Sint8, PT_IntAP>(S, S.PC)) return false;
45424#if USE_TAILCALLS
45425 MUSTTAIL return InterpNext(S);
45426#else
45427 return true;
45428#endif
45429}
45430PRESERVE_NONE
45431static bool Interp_ShlSint8IntAPS(InterpState &S) {
45432 if (!Shl<PT_Sint8, PT_IntAPS>(S, S.PC)) return false;
45433#if USE_TAILCALLS
45434 MUSTTAIL return InterpNext(S);
45435#else
45436 return true;
45437#endif
45438}
45439PRESERVE_NONE
45440static bool Interp_ShlUint8Sint8(InterpState &S) {
45441 if (!Shl<PT_Uint8, PT_Sint8>(S, S.PC)) return false;
45442#if USE_TAILCALLS
45443 MUSTTAIL return InterpNext(S);
45444#else
45445 return true;
45446#endif
45447}
45448PRESERVE_NONE
45449static bool Interp_ShlUint8Uint8(InterpState &S) {
45450 if (!Shl<PT_Uint8, PT_Uint8>(S, S.PC)) return false;
45451#if USE_TAILCALLS
45452 MUSTTAIL return InterpNext(S);
45453#else
45454 return true;
45455#endif
45456}
45457PRESERVE_NONE
45458static bool Interp_ShlUint8Sint16(InterpState &S) {
45459 if (!Shl<PT_Uint8, PT_Sint16>(S, S.PC)) return false;
45460#if USE_TAILCALLS
45461 MUSTTAIL return InterpNext(S);
45462#else
45463 return true;
45464#endif
45465}
45466PRESERVE_NONE
45467static bool Interp_ShlUint8Uint16(InterpState &S) {
45468 if (!Shl<PT_Uint8, PT_Uint16>(S, S.PC)) return false;
45469#if USE_TAILCALLS
45470 MUSTTAIL return InterpNext(S);
45471#else
45472 return true;
45473#endif
45474}
45475PRESERVE_NONE
45476static bool Interp_ShlUint8Sint32(InterpState &S) {
45477 if (!Shl<PT_Uint8, PT_Sint32>(S, S.PC)) return false;
45478#if USE_TAILCALLS
45479 MUSTTAIL return InterpNext(S);
45480#else
45481 return true;
45482#endif
45483}
45484PRESERVE_NONE
45485static bool Interp_ShlUint8Uint32(InterpState &S) {
45486 if (!Shl<PT_Uint8, PT_Uint32>(S, S.PC)) return false;
45487#if USE_TAILCALLS
45488 MUSTTAIL return InterpNext(S);
45489#else
45490 return true;
45491#endif
45492}
45493PRESERVE_NONE
45494static bool Interp_ShlUint8Sint64(InterpState &S) {
45495 if (!Shl<PT_Uint8, PT_Sint64>(S, S.PC)) return false;
45496#if USE_TAILCALLS
45497 MUSTTAIL return InterpNext(S);
45498#else
45499 return true;
45500#endif
45501}
45502PRESERVE_NONE
45503static bool Interp_ShlUint8Uint64(InterpState &S) {
45504 if (!Shl<PT_Uint8, PT_Uint64>(S, S.PC)) return false;
45505#if USE_TAILCALLS
45506 MUSTTAIL return InterpNext(S);
45507#else
45508 return true;
45509#endif
45510}
45511PRESERVE_NONE
45512static bool Interp_ShlUint8IntAP(InterpState &S) {
45513 if (!Shl<PT_Uint8, PT_IntAP>(S, S.PC)) return false;
45514#if USE_TAILCALLS
45515 MUSTTAIL return InterpNext(S);
45516#else
45517 return true;
45518#endif
45519}
45520PRESERVE_NONE
45521static bool Interp_ShlUint8IntAPS(InterpState &S) {
45522 if (!Shl<PT_Uint8, PT_IntAPS>(S, S.PC)) return false;
45523#if USE_TAILCALLS
45524 MUSTTAIL return InterpNext(S);
45525#else
45526 return true;
45527#endif
45528}
45529PRESERVE_NONE
45530static bool Interp_ShlSint16Sint8(InterpState &S) {
45531 if (!Shl<PT_Sint16, PT_Sint8>(S, S.PC)) return false;
45532#if USE_TAILCALLS
45533 MUSTTAIL return InterpNext(S);
45534#else
45535 return true;
45536#endif
45537}
45538PRESERVE_NONE
45539static bool Interp_ShlSint16Uint8(InterpState &S) {
45540 if (!Shl<PT_Sint16, PT_Uint8>(S, S.PC)) return false;
45541#if USE_TAILCALLS
45542 MUSTTAIL return InterpNext(S);
45543#else
45544 return true;
45545#endif
45546}
45547PRESERVE_NONE
45548static bool Interp_ShlSint16Sint16(InterpState &S) {
45549 if (!Shl<PT_Sint16, PT_Sint16>(S, S.PC)) return false;
45550#if USE_TAILCALLS
45551 MUSTTAIL return InterpNext(S);
45552#else
45553 return true;
45554#endif
45555}
45556PRESERVE_NONE
45557static bool Interp_ShlSint16Uint16(InterpState &S) {
45558 if (!Shl<PT_Sint16, PT_Uint16>(S, S.PC)) return false;
45559#if USE_TAILCALLS
45560 MUSTTAIL return InterpNext(S);
45561#else
45562 return true;
45563#endif
45564}
45565PRESERVE_NONE
45566static bool Interp_ShlSint16Sint32(InterpState &S) {
45567 if (!Shl<PT_Sint16, PT_Sint32>(S, S.PC)) return false;
45568#if USE_TAILCALLS
45569 MUSTTAIL return InterpNext(S);
45570#else
45571 return true;
45572#endif
45573}
45574PRESERVE_NONE
45575static bool Interp_ShlSint16Uint32(InterpState &S) {
45576 if (!Shl<PT_Sint16, PT_Uint32>(S, S.PC)) return false;
45577#if USE_TAILCALLS
45578 MUSTTAIL return InterpNext(S);
45579#else
45580 return true;
45581#endif
45582}
45583PRESERVE_NONE
45584static bool Interp_ShlSint16Sint64(InterpState &S) {
45585 if (!Shl<PT_Sint16, PT_Sint64>(S, S.PC)) return false;
45586#if USE_TAILCALLS
45587 MUSTTAIL return InterpNext(S);
45588#else
45589 return true;
45590#endif
45591}
45592PRESERVE_NONE
45593static bool Interp_ShlSint16Uint64(InterpState &S) {
45594 if (!Shl<PT_Sint16, PT_Uint64>(S, S.PC)) return false;
45595#if USE_TAILCALLS
45596 MUSTTAIL return InterpNext(S);
45597#else
45598 return true;
45599#endif
45600}
45601PRESERVE_NONE
45602static bool Interp_ShlSint16IntAP(InterpState &S) {
45603 if (!Shl<PT_Sint16, PT_IntAP>(S, S.PC)) return false;
45604#if USE_TAILCALLS
45605 MUSTTAIL return InterpNext(S);
45606#else
45607 return true;
45608#endif
45609}
45610PRESERVE_NONE
45611static bool Interp_ShlSint16IntAPS(InterpState &S) {
45612 if (!Shl<PT_Sint16, PT_IntAPS>(S, S.PC)) return false;
45613#if USE_TAILCALLS
45614 MUSTTAIL return InterpNext(S);
45615#else
45616 return true;
45617#endif
45618}
45619PRESERVE_NONE
45620static bool Interp_ShlUint16Sint8(InterpState &S) {
45621 if (!Shl<PT_Uint16, PT_Sint8>(S, S.PC)) return false;
45622#if USE_TAILCALLS
45623 MUSTTAIL return InterpNext(S);
45624#else
45625 return true;
45626#endif
45627}
45628PRESERVE_NONE
45629static bool Interp_ShlUint16Uint8(InterpState &S) {
45630 if (!Shl<PT_Uint16, PT_Uint8>(S, S.PC)) return false;
45631#if USE_TAILCALLS
45632 MUSTTAIL return InterpNext(S);
45633#else
45634 return true;
45635#endif
45636}
45637PRESERVE_NONE
45638static bool Interp_ShlUint16Sint16(InterpState &S) {
45639 if (!Shl<PT_Uint16, PT_Sint16>(S, S.PC)) return false;
45640#if USE_TAILCALLS
45641 MUSTTAIL return InterpNext(S);
45642#else
45643 return true;
45644#endif
45645}
45646PRESERVE_NONE
45647static bool Interp_ShlUint16Uint16(InterpState &S) {
45648 if (!Shl<PT_Uint16, PT_Uint16>(S, S.PC)) return false;
45649#if USE_TAILCALLS
45650 MUSTTAIL return InterpNext(S);
45651#else
45652 return true;
45653#endif
45654}
45655PRESERVE_NONE
45656static bool Interp_ShlUint16Sint32(InterpState &S) {
45657 if (!Shl<PT_Uint16, PT_Sint32>(S, S.PC)) return false;
45658#if USE_TAILCALLS
45659 MUSTTAIL return InterpNext(S);
45660#else
45661 return true;
45662#endif
45663}
45664PRESERVE_NONE
45665static bool Interp_ShlUint16Uint32(InterpState &S) {
45666 if (!Shl<PT_Uint16, PT_Uint32>(S, S.PC)) return false;
45667#if USE_TAILCALLS
45668 MUSTTAIL return InterpNext(S);
45669#else
45670 return true;
45671#endif
45672}
45673PRESERVE_NONE
45674static bool Interp_ShlUint16Sint64(InterpState &S) {
45675 if (!Shl<PT_Uint16, PT_Sint64>(S, S.PC)) return false;
45676#if USE_TAILCALLS
45677 MUSTTAIL return InterpNext(S);
45678#else
45679 return true;
45680#endif
45681}
45682PRESERVE_NONE
45683static bool Interp_ShlUint16Uint64(InterpState &S) {
45684 if (!Shl<PT_Uint16, PT_Uint64>(S, S.PC)) return false;
45685#if USE_TAILCALLS
45686 MUSTTAIL return InterpNext(S);
45687#else
45688 return true;
45689#endif
45690}
45691PRESERVE_NONE
45692static bool Interp_ShlUint16IntAP(InterpState &S) {
45693 if (!Shl<PT_Uint16, PT_IntAP>(S, S.PC)) return false;
45694#if USE_TAILCALLS
45695 MUSTTAIL return InterpNext(S);
45696#else
45697 return true;
45698#endif
45699}
45700PRESERVE_NONE
45701static bool Interp_ShlUint16IntAPS(InterpState &S) {
45702 if (!Shl<PT_Uint16, PT_IntAPS>(S, S.PC)) return false;
45703#if USE_TAILCALLS
45704 MUSTTAIL return InterpNext(S);
45705#else
45706 return true;
45707#endif
45708}
45709PRESERVE_NONE
45710static bool Interp_ShlSint32Sint8(InterpState &S) {
45711 if (!Shl<PT_Sint32, PT_Sint8>(S, S.PC)) return false;
45712#if USE_TAILCALLS
45713 MUSTTAIL return InterpNext(S);
45714#else
45715 return true;
45716#endif
45717}
45718PRESERVE_NONE
45719static bool Interp_ShlSint32Uint8(InterpState &S) {
45720 if (!Shl<PT_Sint32, PT_Uint8>(S, S.PC)) return false;
45721#if USE_TAILCALLS
45722 MUSTTAIL return InterpNext(S);
45723#else
45724 return true;
45725#endif
45726}
45727PRESERVE_NONE
45728static bool Interp_ShlSint32Sint16(InterpState &S) {
45729 if (!Shl<PT_Sint32, PT_Sint16>(S, S.PC)) return false;
45730#if USE_TAILCALLS
45731 MUSTTAIL return InterpNext(S);
45732#else
45733 return true;
45734#endif
45735}
45736PRESERVE_NONE
45737static bool Interp_ShlSint32Uint16(InterpState &S) {
45738 if (!Shl<PT_Sint32, PT_Uint16>(S, S.PC)) return false;
45739#if USE_TAILCALLS
45740 MUSTTAIL return InterpNext(S);
45741#else
45742 return true;
45743#endif
45744}
45745PRESERVE_NONE
45746static bool Interp_ShlSint32Sint32(InterpState &S) {
45747 if (!Shl<PT_Sint32, PT_Sint32>(S, S.PC)) return false;
45748#if USE_TAILCALLS
45749 MUSTTAIL return InterpNext(S);
45750#else
45751 return true;
45752#endif
45753}
45754PRESERVE_NONE
45755static bool Interp_ShlSint32Uint32(InterpState &S) {
45756 if (!Shl<PT_Sint32, PT_Uint32>(S, S.PC)) return false;
45757#if USE_TAILCALLS
45758 MUSTTAIL return InterpNext(S);
45759#else
45760 return true;
45761#endif
45762}
45763PRESERVE_NONE
45764static bool Interp_ShlSint32Sint64(InterpState &S) {
45765 if (!Shl<PT_Sint32, PT_Sint64>(S, S.PC)) return false;
45766#if USE_TAILCALLS
45767 MUSTTAIL return InterpNext(S);
45768#else
45769 return true;
45770#endif
45771}
45772PRESERVE_NONE
45773static bool Interp_ShlSint32Uint64(InterpState &S) {
45774 if (!Shl<PT_Sint32, PT_Uint64>(S, S.PC)) return false;
45775#if USE_TAILCALLS
45776 MUSTTAIL return InterpNext(S);
45777#else
45778 return true;
45779#endif
45780}
45781PRESERVE_NONE
45782static bool Interp_ShlSint32IntAP(InterpState &S) {
45783 if (!Shl<PT_Sint32, PT_IntAP>(S, S.PC)) return false;
45784#if USE_TAILCALLS
45785 MUSTTAIL return InterpNext(S);
45786#else
45787 return true;
45788#endif
45789}
45790PRESERVE_NONE
45791static bool Interp_ShlSint32IntAPS(InterpState &S) {
45792 if (!Shl<PT_Sint32, PT_IntAPS>(S, S.PC)) return false;
45793#if USE_TAILCALLS
45794 MUSTTAIL return InterpNext(S);
45795#else
45796 return true;
45797#endif
45798}
45799PRESERVE_NONE
45800static bool Interp_ShlUint32Sint8(InterpState &S) {
45801 if (!Shl<PT_Uint32, PT_Sint8>(S, S.PC)) return false;
45802#if USE_TAILCALLS
45803 MUSTTAIL return InterpNext(S);
45804#else
45805 return true;
45806#endif
45807}
45808PRESERVE_NONE
45809static bool Interp_ShlUint32Uint8(InterpState &S) {
45810 if (!Shl<PT_Uint32, PT_Uint8>(S, S.PC)) return false;
45811#if USE_TAILCALLS
45812 MUSTTAIL return InterpNext(S);
45813#else
45814 return true;
45815#endif
45816}
45817PRESERVE_NONE
45818static bool Interp_ShlUint32Sint16(InterpState &S) {
45819 if (!Shl<PT_Uint32, PT_Sint16>(S, S.PC)) return false;
45820#if USE_TAILCALLS
45821 MUSTTAIL return InterpNext(S);
45822#else
45823 return true;
45824#endif
45825}
45826PRESERVE_NONE
45827static bool Interp_ShlUint32Uint16(InterpState &S) {
45828 if (!Shl<PT_Uint32, PT_Uint16>(S, S.PC)) return false;
45829#if USE_TAILCALLS
45830 MUSTTAIL return InterpNext(S);
45831#else
45832 return true;
45833#endif
45834}
45835PRESERVE_NONE
45836static bool Interp_ShlUint32Sint32(InterpState &S) {
45837 if (!Shl<PT_Uint32, PT_Sint32>(S, S.PC)) return false;
45838#if USE_TAILCALLS
45839 MUSTTAIL return InterpNext(S);
45840#else
45841 return true;
45842#endif
45843}
45844PRESERVE_NONE
45845static bool Interp_ShlUint32Uint32(InterpState &S) {
45846 if (!Shl<PT_Uint32, PT_Uint32>(S, S.PC)) return false;
45847#if USE_TAILCALLS
45848 MUSTTAIL return InterpNext(S);
45849#else
45850 return true;
45851#endif
45852}
45853PRESERVE_NONE
45854static bool Interp_ShlUint32Sint64(InterpState &S) {
45855 if (!Shl<PT_Uint32, PT_Sint64>(S, S.PC)) return false;
45856#if USE_TAILCALLS
45857 MUSTTAIL return InterpNext(S);
45858#else
45859 return true;
45860#endif
45861}
45862PRESERVE_NONE
45863static bool Interp_ShlUint32Uint64(InterpState &S) {
45864 if (!Shl<PT_Uint32, PT_Uint64>(S, S.PC)) return false;
45865#if USE_TAILCALLS
45866 MUSTTAIL return InterpNext(S);
45867#else
45868 return true;
45869#endif
45870}
45871PRESERVE_NONE
45872static bool Interp_ShlUint32IntAP(InterpState &S) {
45873 if (!Shl<PT_Uint32, PT_IntAP>(S, S.PC)) return false;
45874#if USE_TAILCALLS
45875 MUSTTAIL return InterpNext(S);
45876#else
45877 return true;
45878#endif
45879}
45880PRESERVE_NONE
45881static bool Interp_ShlUint32IntAPS(InterpState &S) {
45882 if (!Shl<PT_Uint32, PT_IntAPS>(S, S.PC)) return false;
45883#if USE_TAILCALLS
45884 MUSTTAIL return InterpNext(S);
45885#else
45886 return true;
45887#endif
45888}
45889PRESERVE_NONE
45890static bool Interp_ShlSint64Sint8(InterpState &S) {
45891 if (!Shl<PT_Sint64, PT_Sint8>(S, S.PC)) return false;
45892#if USE_TAILCALLS
45893 MUSTTAIL return InterpNext(S);
45894#else
45895 return true;
45896#endif
45897}
45898PRESERVE_NONE
45899static bool Interp_ShlSint64Uint8(InterpState &S) {
45900 if (!Shl<PT_Sint64, PT_Uint8>(S, S.PC)) return false;
45901#if USE_TAILCALLS
45902 MUSTTAIL return InterpNext(S);
45903#else
45904 return true;
45905#endif
45906}
45907PRESERVE_NONE
45908static bool Interp_ShlSint64Sint16(InterpState &S) {
45909 if (!Shl<PT_Sint64, PT_Sint16>(S, S.PC)) return false;
45910#if USE_TAILCALLS
45911 MUSTTAIL return InterpNext(S);
45912#else
45913 return true;
45914#endif
45915}
45916PRESERVE_NONE
45917static bool Interp_ShlSint64Uint16(InterpState &S) {
45918 if (!Shl<PT_Sint64, PT_Uint16>(S, S.PC)) return false;
45919#if USE_TAILCALLS
45920 MUSTTAIL return InterpNext(S);
45921#else
45922 return true;
45923#endif
45924}
45925PRESERVE_NONE
45926static bool Interp_ShlSint64Sint32(InterpState &S) {
45927 if (!Shl<PT_Sint64, PT_Sint32>(S, S.PC)) return false;
45928#if USE_TAILCALLS
45929 MUSTTAIL return InterpNext(S);
45930#else
45931 return true;
45932#endif
45933}
45934PRESERVE_NONE
45935static bool Interp_ShlSint64Uint32(InterpState &S) {
45936 if (!Shl<PT_Sint64, PT_Uint32>(S, S.PC)) return false;
45937#if USE_TAILCALLS
45938 MUSTTAIL return InterpNext(S);
45939#else
45940 return true;
45941#endif
45942}
45943PRESERVE_NONE
45944static bool Interp_ShlSint64Sint64(InterpState &S) {
45945 if (!Shl<PT_Sint64, PT_Sint64>(S, S.PC)) return false;
45946#if USE_TAILCALLS
45947 MUSTTAIL return InterpNext(S);
45948#else
45949 return true;
45950#endif
45951}
45952PRESERVE_NONE
45953static bool Interp_ShlSint64Uint64(InterpState &S) {
45954 if (!Shl<PT_Sint64, PT_Uint64>(S, S.PC)) return false;
45955#if USE_TAILCALLS
45956 MUSTTAIL return InterpNext(S);
45957#else
45958 return true;
45959#endif
45960}
45961PRESERVE_NONE
45962static bool Interp_ShlSint64IntAP(InterpState &S) {
45963 if (!Shl<PT_Sint64, PT_IntAP>(S, S.PC)) return false;
45964#if USE_TAILCALLS
45965 MUSTTAIL return InterpNext(S);
45966#else
45967 return true;
45968#endif
45969}
45970PRESERVE_NONE
45971static bool Interp_ShlSint64IntAPS(InterpState &S) {
45972 if (!Shl<PT_Sint64, PT_IntAPS>(S, S.PC)) return false;
45973#if USE_TAILCALLS
45974 MUSTTAIL return InterpNext(S);
45975#else
45976 return true;
45977#endif
45978}
45979PRESERVE_NONE
45980static bool Interp_ShlUint64Sint8(InterpState &S) {
45981 if (!Shl<PT_Uint64, PT_Sint8>(S, S.PC)) return false;
45982#if USE_TAILCALLS
45983 MUSTTAIL return InterpNext(S);
45984#else
45985 return true;
45986#endif
45987}
45988PRESERVE_NONE
45989static bool Interp_ShlUint64Uint8(InterpState &S) {
45990 if (!Shl<PT_Uint64, PT_Uint8>(S, S.PC)) return false;
45991#if USE_TAILCALLS
45992 MUSTTAIL return InterpNext(S);
45993#else
45994 return true;
45995#endif
45996}
45997PRESERVE_NONE
45998static bool Interp_ShlUint64Sint16(InterpState &S) {
45999 if (!Shl<PT_Uint64, PT_Sint16>(S, S.PC)) return false;
46000#if USE_TAILCALLS
46001 MUSTTAIL return InterpNext(S);
46002#else
46003 return true;
46004#endif
46005}
46006PRESERVE_NONE
46007static bool Interp_ShlUint64Uint16(InterpState &S) {
46008 if (!Shl<PT_Uint64, PT_Uint16>(S, S.PC)) return false;
46009#if USE_TAILCALLS
46010 MUSTTAIL return InterpNext(S);
46011#else
46012 return true;
46013#endif
46014}
46015PRESERVE_NONE
46016static bool Interp_ShlUint64Sint32(InterpState &S) {
46017 if (!Shl<PT_Uint64, PT_Sint32>(S, S.PC)) return false;
46018#if USE_TAILCALLS
46019 MUSTTAIL return InterpNext(S);
46020#else
46021 return true;
46022#endif
46023}
46024PRESERVE_NONE
46025static bool Interp_ShlUint64Uint32(InterpState &S) {
46026 if (!Shl<PT_Uint64, PT_Uint32>(S, S.PC)) return false;
46027#if USE_TAILCALLS
46028 MUSTTAIL return InterpNext(S);
46029#else
46030 return true;
46031#endif
46032}
46033PRESERVE_NONE
46034static bool Interp_ShlUint64Sint64(InterpState &S) {
46035 if (!Shl<PT_Uint64, PT_Sint64>(S, S.PC)) return false;
46036#if USE_TAILCALLS
46037 MUSTTAIL return InterpNext(S);
46038#else
46039 return true;
46040#endif
46041}
46042PRESERVE_NONE
46043static bool Interp_ShlUint64Uint64(InterpState &S) {
46044 if (!Shl<PT_Uint64, PT_Uint64>(S, S.PC)) return false;
46045#if USE_TAILCALLS
46046 MUSTTAIL return InterpNext(S);
46047#else
46048 return true;
46049#endif
46050}
46051PRESERVE_NONE
46052static bool Interp_ShlUint64IntAP(InterpState &S) {
46053 if (!Shl<PT_Uint64, PT_IntAP>(S, S.PC)) return false;
46054#if USE_TAILCALLS
46055 MUSTTAIL return InterpNext(S);
46056#else
46057 return true;
46058#endif
46059}
46060PRESERVE_NONE
46061static bool Interp_ShlUint64IntAPS(InterpState &S) {
46062 if (!Shl<PT_Uint64, PT_IntAPS>(S, S.PC)) return false;
46063#if USE_TAILCALLS
46064 MUSTTAIL return InterpNext(S);
46065#else
46066 return true;
46067#endif
46068}
46069PRESERVE_NONE
46070static bool Interp_ShlIntAPSint8(InterpState &S) {
46071 if (!Shl<PT_IntAP, PT_Sint8>(S, S.PC)) return false;
46072#if USE_TAILCALLS
46073 MUSTTAIL return InterpNext(S);
46074#else
46075 return true;
46076#endif
46077}
46078PRESERVE_NONE
46079static bool Interp_ShlIntAPUint8(InterpState &S) {
46080 if (!Shl<PT_IntAP, PT_Uint8>(S, S.PC)) return false;
46081#if USE_TAILCALLS
46082 MUSTTAIL return InterpNext(S);
46083#else
46084 return true;
46085#endif
46086}
46087PRESERVE_NONE
46088static bool Interp_ShlIntAPSint16(InterpState &S) {
46089 if (!Shl<PT_IntAP, PT_Sint16>(S, S.PC)) return false;
46090#if USE_TAILCALLS
46091 MUSTTAIL return InterpNext(S);
46092#else
46093 return true;
46094#endif
46095}
46096PRESERVE_NONE
46097static bool Interp_ShlIntAPUint16(InterpState &S) {
46098 if (!Shl<PT_IntAP, PT_Uint16>(S, S.PC)) return false;
46099#if USE_TAILCALLS
46100 MUSTTAIL return InterpNext(S);
46101#else
46102 return true;
46103#endif
46104}
46105PRESERVE_NONE
46106static bool Interp_ShlIntAPSint32(InterpState &S) {
46107 if (!Shl<PT_IntAP, PT_Sint32>(S, S.PC)) return false;
46108#if USE_TAILCALLS
46109 MUSTTAIL return InterpNext(S);
46110#else
46111 return true;
46112#endif
46113}
46114PRESERVE_NONE
46115static bool Interp_ShlIntAPUint32(InterpState &S) {
46116 if (!Shl<PT_IntAP, PT_Uint32>(S, S.PC)) return false;
46117#if USE_TAILCALLS
46118 MUSTTAIL return InterpNext(S);
46119#else
46120 return true;
46121#endif
46122}
46123PRESERVE_NONE
46124static bool Interp_ShlIntAPSint64(InterpState &S) {
46125 if (!Shl<PT_IntAP, PT_Sint64>(S, S.PC)) return false;
46126#if USE_TAILCALLS
46127 MUSTTAIL return InterpNext(S);
46128#else
46129 return true;
46130#endif
46131}
46132PRESERVE_NONE
46133static bool Interp_ShlIntAPUint64(InterpState &S) {
46134 if (!Shl<PT_IntAP, PT_Uint64>(S, S.PC)) return false;
46135#if USE_TAILCALLS
46136 MUSTTAIL return InterpNext(S);
46137#else
46138 return true;
46139#endif
46140}
46141PRESERVE_NONE
46142static bool Interp_ShlIntAPIntAP(InterpState &S) {
46143 if (!Shl<PT_IntAP, PT_IntAP>(S, S.PC)) return false;
46144#if USE_TAILCALLS
46145 MUSTTAIL return InterpNext(S);
46146#else
46147 return true;
46148#endif
46149}
46150PRESERVE_NONE
46151static bool Interp_ShlIntAPIntAPS(InterpState &S) {
46152 if (!Shl<PT_IntAP, PT_IntAPS>(S, S.PC)) return false;
46153#if USE_TAILCALLS
46154 MUSTTAIL return InterpNext(S);
46155#else
46156 return true;
46157#endif
46158}
46159PRESERVE_NONE
46160static bool Interp_ShlIntAPSSint8(InterpState &S) {
46161 if (!Shl<PT_IntAPS, PT_Sint8>(S, S.PC)) return false;
46162#if USE_TAILCALLS
46163 MUSTTAIL return InterpNext(S);
46164#else
46165 return true;
46166#endif
46167}
46168PRESERVE_NONE
46169static bool Interp_ShlIntAPSUint8(InterpState &S) {
46170 if (!Shl<PT_IntAPS, PT_Uint8>(S, S.PC)) return false;
46171#if USE_TAILCALLS
46172 MUSTTAIL return InterpNext(S);
46173#else
46174 return true;
46175#endif
46176}
46177PRESERVE_NONE
46178static bool Interp_ShlIntAPSSint16(InterpState &S) {
46179 if (!Shl<PT_IntAPS, PT_Sint16>(S, S.PC)) return false;
46180#if USE_TAILCALLS
46181 MUSTTAIL return InterpNext(S);
46182#else
46183 return true;
46184#endif
46185}
46186PRESERVE_NONE
46187static bool Interp_ShlIntAPSUint16(InterpState &S) {
46188 if (!Shl<PT_IntAPS, PT_Uint16>(S, S.PC)) return false;
46189#if USE_TAILCALLS
46190 MUSTTAIL return InterpNext(S);
46191#else
46192 return true;
46193#endif
46194}
46195PRESERVE_NONE
46196static bool Interp_ShlIntAPSSint32(InterpState &S) {
46197 if (!Shl<PT_IntAPS, PT_Sint32>(S, S.PC)) return false;
46198#if USE_TAILCALLS
46199 MUSTTAIL return InterpNext(S);
46200#else
46201 return true;
46202#endif
46203}
46204PRESERVE_NONE
46205static bool Interp_ShlIntAPSUint32(InterpState &S) {
46206 if (!Shl<PT_IntAPS, PT_Uint32>(S, S.PC)) return false;
46207#if USE_TAILCALLS
46208 MUSTTAIL return InterpNext(S);
46209#else
46210 return true;
46211#endif
46212}
46213PRESERVE_NONE
46214static bool Interp_ShlIntAPSSint64(InterpState &S) {
46215 if (!Shl<PT_IntAPS, PT_Sint64>(S, S.PC)) return false;
46216#if USE_TAILCALLS
46217 MUSTTAIL return InterpNext(S);
46218#else
46219 return true;
46220#endif
46221}
46222PRESERVE_NONE
46223static bool Interp_ShlIntAPSUint64(InterpState &S) {
46224 if (!Shl<PT_IntAPS, PT_Uint64>(S, S.PC)) return false;
46225#if USE_TAILCALLS
46226 MUSTTAIL return InterpNext(S);
46227#else
46228 return true;
46229#endif
46230}
46231PRESERVE_NONE
46232static bool Interp_ShlIntAPSIntAP(InterpState &S) {
46233 if (!Shl<PT_IntAPS, PT_IntAP>(S, S.PC)) return false;
46234#if USE_TAILCALLS
46235 MUSTTAIL return InterpNext(S);
46236#else
46237 return true;
46238#endif
46239}
46240PRESERVE_NONE
46241static bool Interp_ShlIntAPSIntAPS(InterpState &S) {
46242 if (!Shl<PT_IntAPS, PT_IntAPS>(S, S.PC)) return false;
46243#if USE_TAILCALLS
46244 MUSTTAIL return InterpNext(S);
46245#else
46246 return true;
46247#endif
46248}
46249#endif
46250#ifdef GET_DISASM
46251case OP_ShlSint8Sint8:
46252 Text.Op = PrintName("ShlSint8Sint8");
46253 break;
46254case OP_ShlSint8Uint8:
46255 Text.Op = PrintName("ShlSint8Uint8");
46256 break;
46257case OP_ShlSint8Sint16:
46258 Text.Op = PrintName("ShlSint8Sint16");
46259 break;
46260case OP_ShlSint8Uint16:
46261 Text.Op = PrintName("ShlSint8Uint16");
46262 break;
46263case OP_ShlSint8Sint32:
46264 Text.Op = PrintName("ShlSint8Sint32");
46265 break;
46266case OP_ShlSint8Uint32:
46267 Text.Op = PrintName("ShlSint8Uint32");
46268 break;
46269case OP_ShlSint8Sint64:
46270 Text.Op = PrintName("ShlSint8Sint64");
46271 break;
46272case OP_ShlSint8Uint64:
46273 Text.Op = PrintName("ShlSint8Uint64");
46274 break;
46275case OP_ShlSint8IntAP:
46276 Text.Op = PrintName("ShlSint8IntAP");
46277 break;
46278case OP_ShlSint8IntAPS:
46279 Text.Op = PrintName("ShlSint8IntAPS");
46280 break;
46281case OP_ShlUint8Sint8:
46282 Text.Op = PrintName("ShlUint8Sint8");
46283 break;
46284case OP_ShlUint8Uint8:
46285 Text.Op = PrintName("ShlUint8Uint8");
46286 break;
46287case OP_ShlUint8Sint16:
46288 Text.Op = PrintName("ShlUint8Sint16");
46289 break;
46290case OP_ShlUint8Uint16:
46291 Text.Op = PrintName("ShlUint8Uint16");
46292 break;
46293case OP_ShlUint8Sint32:
46294 Text.Op = PrintName("ShlUint8Sint32");
46295 break;
46296case OP_ShlUint8Uint32:
46297 Text.Op = PrintName("ShlUint8Uint32");
46298 break;
46299case OP_ShlUint8Sint64:
46300 Text.Op = PrintName("ShlUint8Sint64");
46301 break;
46302case OP_ShlUint8Uint64:
46303 Text.Op = PrintName("ShlUint8Uint64");
46304 break;
46305case OP_ShlUint8IntAP:
46306 Text.Op = PrintName("ShlUint8IntAP");
46307 break;
46308case OP_ShlUint8IntAPS:
46309 Text.Op = PrintName("ShlUint8IntAPS");
46310 break;
46311case OP_ShlSint16Sint8:
46312 Text.Op = PrintName("ShlSint16Sint8");
46313 break;
46314case OP_ShlSint16Uint8:
46315 Text.Op = PrintName("ShlSint16Uint8");
46316 break;
46317case OP_ShlSint16Sint16:
46318 Text.Op = PrintName("ShlSint16Sint16");
46319 break;
46320case OP_ShlSint16Uint16:
46321 Text.Op = PrintName("ShlSint16Uint16");
46322 break;
46323case OP_ShlSint16Sint32:
46324 Text.Op = PrintName("ShlSint16Sint32");
46325 break;
46326case OP_ShlSint16Uint32:
46327 Text.Op = PrintName("ShlSint16Uint32");
46328 break;
46329case OP_ShlSint16Sint64:
46330 Text.Op = PrintName("ShlSint16Sint64");
46331 break;
46332case OP_ShlSint16Uint64:
46333 Text.Op = PrintName("ShlSint16Uint64");
46334 break;
46335case OP_ShlSint16IntAP:
46336 Text.Op = PrintName("ShlSint16IntAP");
46337 break;
46338case OP_ShlSint16IntAPS:
46339 Text.Op = PrintName("ShlSint16IntAPS");
46340 break;
46341case OP_ShlUint16Sint8:
46342 Text.Op = PrintName("ShlUint16Sint8");
46343 break;
46344case OP_ShlUint16Uint8:
46345 Text.Op = PrintName("ShlUint16Uint8");
46346 break;
46347case OP_ShlUint16Sint16:
46348 Text.Op = PrintName("ShlUint16Sint16");
46349 break;
46350case OP_ShlUint16Uint16:
46351 Text.Op = PrintName("ShlUint16Uint16");
46352 break;
46353case OP_ShlUint16Sint32:
46354 Text.Op = PrintName("ShlUint16Sint32");
46355 break;
46356case OP_ShlUint16Uint32:
46357 Text.Op = PrintName("ShlUint16Uint32");
46358 break;
46359case OP_ShlUint16Sint64:
46360 Text.Op = PrintName("ShlUint16Sint64");
46361 break;
46362case OP_ShlUint16Uint64:
46363 Text.Op = PrintName("ShlUint16Uint64");
46364 break;
46365case OP_ShlUint16IntAP:
46366 Text.Op = PrintName("ShlUint16IntAP");
46367 break;
46368case OP_ShlUint16IntAPS:
46369 Text.Op = PrintName("ShlUint16IntAPS");
46370 break;
46371case OP_ShlSint32Sint8:
46372 Text.Op = PrintName("ShlSint32Sint8");
46373 break;
46374case OP_ShlSint32Uint8:
46375 Text.Op = PrintName("ShlSint32Uint8");
46376 break;
46377case OP_ShlSint32Sint16:
46378 Text.Op = PrintName("ShlSint32Sint16");
46379 break;
46380case OP_ShlSint32Uint16:
46381 Text.Op = PrintName("ShlSint32Uint16");
46382 break;
46383case OP_ShlSint32Sint32:
46384 Text.Op = PrintName("ShlSint32Sint32");
46385 break;
46386case OP_ShlSint32Uint32:
46387 Text.Op = PrintName("ShlSint32Uint32");
46388 break;
46389case OP_ShlSint32Sint64:
46390 Text.Op = PrintName("ShlSint32Sint64");
46391 break;
46392case OP_ShlSint32Uint64:
46393 Text.Op = PrintName("ShlSint32Uint64");
46394 break;
46395case OP_ShlSint32IntAP:
46396 Text.Op = PrintName("ShlSint32IntAP");
46397 break;
46398case OP_ShlSint32IntAPS:
46399 Text.Op = PrintName("ShlSint32IntAPS");
46400 break;
46401case OP_ShlUint32Sint8:
46402 Text.Op = PrintName("ShlUint32Sint8");
46403 break;
46404case OP_ShlUint32Uint8:
46405 Text.Op = PrintName("ShlUint32Uint8");
46406 break;
46407case OP_ShlUint32Sint16:
46408 Text.Op = PrintName("ShlUint32Sint16");
46409 break;
46410case OP_ShlUint32Uint16:
46411 Text.Op = PrintName("ShlUint32Uint16");
46412 break;
46413case OP_ShlUint32Sint32:
46414 Text.Op = PrintName("ShlUint32Sint32");
46415 break;
46416case OP_ShlUint32Uint32:
46417 Text.Op = PrintName("ShlUint32Uint32");
46418 break;
46419case OP_ShlUint32Sint64:
46420 Text.Op = PrintName("ShlUint32Sint64");
46421 break;
46422case OP_ShlUint32Uint64:
46423 Text.Op = PrintName("ShlUint32Uint64");
46424 break;
46425case OP_ShlUint32IntAP:
46426 Text.Op = PrintName("ShlUint32IntAP");
46427 break;
46428case OP_ShlUint32IntAPS:
46429 Text.Op = PrintName("ShlUint32IntAPS");
46430 break;
46431case OP_ShlSint64Sint8:
46432 Text.Op = PrintName("ShlSint64Sint8");
46433 break;
46434case OP_ShlSint64Uint8:
46435 Text.Op = PrintName("ShlSint64Uint8");
46436 break;
46437case OP_ShlSint64Sint16:
46438 Text.Op = PrintName("ShlSint64Sint16");
46439 break;
46440case OP_ShlSint64Uint16:
46441 Text.Op = PrintName("ShlSint64Uint16");
46442 break;
46443case OP_ShlSint64Sint32:
46444 Text.Op = PrintName("ShlSint64Sint32");
46445 break;
46446case OP_ShlSint64Uint32:
46447 Text.Op = PrintName("ShlSint64Uint32");
46448 break;
46449case OP_ShlSint64Sint64:
46450 Text.Op = PrintName("ShlSint64Sint64");
46451 break;
46452case OP_ShlSint64Uint64:
46453 Text.Op = PrintName("ShlSint64Uint64");
46454 break;
46455case OP_ShlSint64IntAP:
46456 Text.Op = PrintName("ShlSint64IntAP");
46457 break;
46458case OP_ShlSint64IntAPS:
46459 Text.Op = PrintName("ShlSint64IntAPS");
46460 break;
46461case OP_ShlUint64Sint8:
46462 Text.Op = PrintName("ShlUint64Sint8");
46463 break;
46464case OP_ShlUint64Uint8:
46465 Text.Op = PrintName("ShlUint64Uint8");
46466 break;
46467case OP_ShlUint64Sint16:
46468 Text.Op = PrintName("ShlUint64Sint16");
46469 break;
46470case OP_ShlUint64Uint16:
46471 Text.Op = PrintName("ShlUint64Uint16");
46472 break;
46473case OP_ShlUint64Sint32:
46474 Text.Op = PrintName("ShlUint64Sint32");
46475 break;
46476case OP_ShlUint64Uint32:
46477 Text.Op = PrintName("ShlUint64Uint32");
46478 break;
46479case OP_ShlUint64Sint64:
46480 Text.Op = PrintName("ShlUint64Sint64");
46481 break;
46482case OP_ShlUint64Uint64:
46483 Text.Op = PrintName("ShlUint64Uint64");
46484 break;
46485case OP_ShlUint64IntAP:
46486 Text.Op = PrintName("ShlUint64IntAP");
46487 break;
46488case OP_ShlUint64IntAPS:
46489 Text.Op = PrintName("ShlUint64IntAPS");
46490 break;
46491case OP_ShlIntAPSint8:
46492 Text.Op = PrintName("ShlIntAPSint8");
46493 break;
46494case OP_ShlIntAPUint8:
46495 Text.Op = PrintName("ShlIntAPUint8");
46496 break;
46497case OP_ShlIntAPSint16:
46498 Text.Op = PrintName("ShlIntAPSint16");
46499 break;
46500case OP_ShlIntAPUint16:
46501 Text.Op = PrintName("ShlIntAPUint16");
46502 break;
46503case OP_ShlIntAPSint32:
46504 Text.Op = PrintName("ShlIntAPSint32");
46505 break;
46506case OP_ShlIntAPUint32:
46507 Text.Op = PrintName("ShlIntAPUint32");
46508 break;
46509case OP_ShlIntAPSint64:
46510 Text.Op = PrintName("ShlIntAPSint64");
46511 break;
46512case OP_ShlIntAPUint64:
46513 Text.Op = PrintName("ShlIntAPUint64");
46514 break;
46515case OP_ShlIntAPIntAP:
46516 Text.Op = PrintName("ShlIntAPIntAP");
46517 break;
46518case OP_ShlIntAPIntAPS:
46519 Text.Op = PrintName("ShlIntAPIntAPS");
46520 break;
46521case OP_ShlIntAPSSint8:
46522 Text.Op = PrintName("ShlIntAPSSint8");
46523 break;
46524case OP_ShlIntAPSUint8:
46525 Text.Op = PrintName("ShlIntAPSUint8");
46526 break;
46527case OP_ShlIntAPSSint16:
46528 Text.Op = PrintName("ShlIntAPSSint16");
46529 break;
46530case OP_ShlIntAPSUint16:
46531 Text.Op = PrintName("ShlIntAPSUint16");
46532 break;
46533case OP_ShlIntAPSSint32:
46534 Text.Op = PrintName("ShlIntAPSSint32");
46535 break;
46536case OP_ShlIntAPSUint32:
46537 Text.Op = PrintName("ShlIntAPSUint32");
46538 break;
46539case OP_ShlIntAPSSint64:
46540 Text.Op = PrintName("ShlIntAPSSint64");
46541 break;
46542case OP_ShlIntAPSUint64:
46543 Text.Op = PrintName("ShlIntAPSUint64");
46544 break;
46545case OP_ShlIntAPSIntAP:
46546 Text.Op = PrintName("ShlIntAPSIntAP");
46547 break;
46548case OP_ShlIntAPSIntAPS:
46549 Text.Op = PrintName("ShlIntAPSIntAPS");
46550 break;
46551#endif
46552#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
46553bool emitShlSint8Sint8(SourceInfo);
46554bool emitShlSint8Uint8(SourceInfo);
46555bool emitShlSint8Sint16(SourceInfo);
46556bool emitShlSint8Uint16(SourceInfo);
46557bool emitShlSint8Sint32(SourceInfo);
46558bool emitShlSint8Uint32(SourceInfo);
46559bool emitShlSint8Sint64(SourceInfo);
46560bool emitShlSint8Uint64(SourceInfo);
46561bool emitShlSint8IntAP(SourceInfo);
46562bool emitShlSint8IntAPS(SourceInfo);
46563bool emitShlUint8Sint8(SourceInfo);
46564bool emitShlUint8Uint8(SourceInfo);
46565bool emitShlUint8Sint16(SourceInfo);
46566bool emitShlUint8Uint16(SourceInfo);
46567bool emitShlUint8Sint32(SourceInfo);
46568bool emitShlUint8Uint32(SourceInfo);
46569bool emitShlUint8Sint64(SourceInfo);
46570bool emitShlUint8Uint64(SourceInfo);
46571bool emitShlUint8IntAP(SourceInfo);
46572bool emitShlUint8IntAPS(SourceInfo);
46573bool emitShlSint16Sint8(SourceInfo);
46574bool emitShlSint16Uint8(SourceInfo);
46575bool emitShlSint16Sint16(SourceInfo);
46576bool emitShlSint16Uint16(SourceInfo);
46577bool emitShlSint16Sint32(SourceInfo);
46578bool emitShlSint16Uint32(SourceInfo);
46579bool emitShlSint16Sint64(SourceInfo);
46580bool emitShlSint16Uint64(SourceInfo);
46581bool emitShlSint16IntAP(SourceInfo);
46582bool emitShlSint16IntAPS(SourceInfo);
46583bool emitShlUint16Sint8(SourceInfo);
46584bool emitShlUint16Uint8(SourceInfo);
46585bool emitShlUint16Sint16(SourceInfo);
46586bool emitShlUint16Uint16(SourceInfo);
46587bool emitShlUint16Sint32(SourceInfo);
46588bool emitShlUint16Uint32(SourceInfo);
46589bool emitShlUint16Sint64(SourceInfo);
46590bool emitShlUint16Uint64(SourceInfo);
46591bool emitShlUint16IntAP(SourceInfo);
46592bool emitShlUint16IntAPS(SourceInfo);
46593bool emitShlSint32Sint8(SourceInfo);
46594bool emitShlSint32Uint8(SourceInfo);
46595bool emitShlSint32Sint16(SourceInfo);
46596bool emitShlSint32Uint16(SourceInfo);
46597bool emitShlSint32Sint32(SourceInfo);
46598bool emitShlSint32Uint32(SourceInfo);
46599bool emitShlSint32Sint64(SourceInfo);
46600bool emitShlSint32Uint64(SourceInfo);
46601bool emitShlSint32IntAP(SourceInfo);
46602bool emitShlSint32IntAPS(SourceInfo);
46603bool emitShlUint32Sint8(SourceInfo);
46604bool emitShlUint32Uint8(SourceInfo);
46605bool emitShlUint32Sint16(SourceInfo);
46606bool emitShlUint32Uint16(SourceInfo);
46607bool emitShlUint32Sint32(SourceInfo);
46608bool emitShlUint32Uint32(SourceInfo);
46609bool emitShlUint32Sint64(SourceInfo);
46610bool emitShlUint32Uint64(SourceInfo);
46611bool emitShlUint32IntAP(SourceInfo);
46612bool emitShlUint32IntAPS(SourceInfo);
46613bool emitShlSint64Sint8(SourceInfo);
46614bool emitShlSint64Uint8(SourceInfo);
46615bool emitShlSint64Sint16(SourceInfo);
46616bool emitShlSint64Uint16(SourceInfo);
46617bool emitShlSint64Sint32(SourceInfo);
46618bool emitShlSint64Uint32(SourceInfo);
46619bool emitShlSint64Sint64(SourceInfo);
46620bool emitShlSint64Uint64(SourceInfo);
46621bool emitShlSint64IntAP(SourceInfo);
46622bool emitShlSint64IntAPS(SourceInfo);
46623bool emitShlUint64Sint8(SourceInfo);
46624bool emitShlUint64Uint8(SourceInfo);
46625bool emitShlUint64Sint16(SourceInfo);
46626bool emitShlUint64Uint16(SourceInfo);
46627bool emitShlUint64Sint32(SourceInfo);
46628bool emitShlUint64Uint32(SourceInfo);
46629bool emitShlUint64Sint64(SourceInfo);
46630bool emitShlUint64Uint64(SourceInfo);
46631bool emitShlUint64IntAP(SourceInfo);
46632bool emitShlUint64IntAPS(SourceInfo);
46633bool emitShlIntAPSint8(SourceInfo);
46634bool emitShlIntAPUint8(SourceInfo);
46635bool emitShlIntAPSint16(SourceInfo);
46636bool emitShlIntAPUint16(SourceInfo);
46637bool emitShlIntAPSint32(SourceInfo);
46638bool emitShlIntAPUint32(SourceInfo);
46639bool emitShlIntAPSint64(SourceInfo);
46640bool emitShlIntAPUint64(SourceInfo);
46641bool emitShlIntAPIntAP(SourceInfo);
46642bool emitShlIntAPIntAPS(SourceInfo);
46643bool emitShlIntAPSSint8(SourceInfo);
46644bool emitShlIntAPSUint8(SourceInfo);
46645bool emitShlIntAPSSint16(SourceInfo);
46646bool emitShlIntAPSUint16(SourceInfo);
46647bool emitShlIntAPSSint32(SourceInfo);
46648bool emitShlIntAPSUint32(SourceInfo);
46649bool emitShlIntAPSSint64(SourceInfo);
46650bool emitShlIntAPSUint64(SourceInfo);
46651bool emitShlIntAPSIntAP(SourceInfo);
46652bool emitShlIntAPSIntAPS(SourceInfo);
46653#endif
46654#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
46655[[nodiscard]] bool emitShl(PrimType, PrimType, SourceInfo I);
46656#endif
46657#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
46658bool
46659#if defined(GET_EVAL_IMPL)
46660EvalEmitter
46661#else
46662ByteCodeEmitter
46663#endif
46664::emitShl(PrimType T0, PrimType T1, SourceInfo I) {
46665 switch (T0) {
46666 case PT_Sint8:
46667 switch (T1) {
46668 case PT_Sint8:
46669 return emitShlSint8Sint8(I);
46670 case PT_Uint8:
46671 return emitShlSint8Uint8(I);
46672 case PT_Sint16:
46673 return emitShlSint8Sint16(I);
46674 case PT_Uint16:
46675 return emitShlSint8Uint16(I);
46676 case PT_Sint32:
46677 return emitShlSint8Sint32(I);
46678 case PT_Uint32:
46679 return emitShlSint8Uint32(I);
46680 case PT_Sint64:
46681 return emitShlSint8Sint64(I);
46682 case PT_Uint64:
46683 return emitShlSint8Uint64(I);
46684 case PT_IntAP:
46685 return emitShlSint8IntAP(I);
46686 case PT_IntAPS:
46687 return emitShlSint8IntAPS(I);
46688 default: llvm_unreachable("invalid type: emitShl");
46689 }
46690 llvm_unreachable("invalid enum value");
46691 case PT_Uint8:
46692 switch (T1) {
46693 case PT_Sint8:
46694 return emitShlUint8Sint8(I);
46695 case PT_Uint8:
46696 return emitShlUint8Uint8(I);
46697 case PT_Sint16:
46698 return emitShlUint8Sint16(I);
46699 case PT_Uint16:
46700 return emitShlUint8Uint16(I);
46701 case PT_Sint32:
46702 return emitShlUint8Sint32(I);
46703 case PT_Uint32:
46704 return emitShlUint8Uint32(I);
46705 case PT_Sint64:
46706 return emitShlUint8Sint64(I);
46707 case PT_Uint64:
46708 return emitShlUint8Uint64(I);
46709 case PT_IntAP:
46710 return emitShlUint8IntAP(I);
46711 case PT_IntAPS:
46712 return emitShlUint8IntAPS(I);
46713 default: llvm_unreachable("invalid type: emitShl");
46714 }
46715 llvm_unreachable("invalid enum value");
46716 case PT_Sint16:
46717 switch (T1) {
46718 case PT_Sint8:
46719 return emitShlSint16Sint8(I);
46720 case PT_Uint8:
46721 return emitShlSint16Uint8(I);
46722 case PT_Sint16:
46723 return emitShlSint16Sint16(I);
46724 case PT_Uint16:
46725 return emitShlSint16Uint16(I);
46726 case PT_Sint32:
46727 return emitShlSint16Sint32(I);
46728 case PT_Uint32:
46729 return emitShlSint16Uint32(I);
46730 case PT_Sint64:
46731 return emitShlSint16Sint64(I);
46732 case PT_Uint64:
46733 return emitShlSint16Uint64(I);
46734 case PT_IntAP:
46735 return emitShlSint16IntAP(I);
46736 case PT_IntAPS:
46737 return emitShlSint16IntAPS(I);
46738 default: llvm_unreachable("invalid type: emitShl");
46739 }
46740 llvm_unreachable("invalid enum value");
46741 case PT_Uint16:
46742 switch (T1) {
46743 case PT_Sint8:
46744 return emitShlUint16Sint8(I);
46745 case PT_Uint8:
46746 return emitShlUint16Uint8(I);
46747 case PT_Sint16:
46748 return emitShlUint16Sint16(I);
46749 case PT_Uint16:
46750 return emitShlUint16Uint16(I);
46751 case PT_Sint32:
46752 return emitShlUint16Sint32(I);
46753 case PT_Uint32:
46754 return emitShlUint16Uint32(I);
46755 case PT_Sint64:
46756 return emitShlUint16Sint64(I);
46757 case PT_Uint64:
46758 return emitShlUint16Uint64(I);
46759 case PT_IntAP:
46760 return emitShlUint16IntAP(I);
46761 case PT_IntAPS:
46762 return emitShlUint16IntAPS(I);
46763 default: llvm_unreachable("invalid type: emitShl");
46764 }
46765 llvm_unreachable("invalid enum value");
46766 case PT_Sint32:
46767 switch (T1) {
46768 case PT_Sint8:
46769 return emitShlSint32Sint8(I);
46770 case PT_Uint8:
46771 return emitShlSint32Uint8(I);
46772 case PT_Sint16:
46773 return emitShlSint32Sint16(I);
46774 case PT_Uint16:
46775 return emitShlSint32Uint16(I);
46776 case PT_Sint32:
46777 return emitShlSint32Sint32(I);
46778 case PT_Uint32:
46779 return emitShlSint32Uint32(I);
46780 case PT_Sint64:
46781 return emitShlSint32Sint64(I);
46782 case PT_Uint64:
46783 return emitShlSint32Uint64(I);
46784 case PT_IntAP:
46785 return emitShlSint32IntAP(I);
46786 case PT_IntAPS:
46787 return emitShlSint32IntAPS(I);
46788 default: llvm_unreachable("invalid type: emitShl");
46789 }
46790 llvm_unreachable("invalid enum value");
46791 case PT_Uint32:
46792 switch (T1) {
46793 case PT_Sint8:
46794 return emitShlUint32Sint8(I);
46795 case PT_Uint8:
46796 return emitShlUint32Uint8(I);
46797 case PT_Sint16:
46798 return emitShlUint32Sint16(I);
46799 case PT_Uint16:
46800 return emitShlUint32Uint16(I);
46801 case PT_Sint32:
46802 return emitShlUint32Sint32(I);
46803 case PT_Uint32:
46804 return emitShlUint32Uint32(I);
46805 case PT_Sint64:
46806 return emitShlUint32Sint64(I);
46807 case PT_Uint64:
46808 return emitShlUint32Uint64(I);
46809 case PT_IntAP:
46810 return emitShlUint32IntAP(I);
46811 case PT_IntAPS:
46812 return emitShlUint32IntAPS(I);
46813 default: llvm_unreachable("invalid type: emitShl");
46814 }
46815 llvm_unreachable("invalid enum value");
46816 case PT_Sint64:
46817 switch (T1) {
46818 case PT_Sint8:
46819 return emitShlSint64Sint8(I);
46820 case PT_Uint8:
46821 return emitShlSint64Uint8(I);
46822 case PT_Sint16:
46823 return emitShlSint64Sint16(I);
46824 case PT_Uint16:
46825 return emitShlSint64Uint16(I);
46826 case PT_Sint32:
46827 return emitShlSint64Sint32(I);
46828 case PT_Uint32:
46829 return emitShlSint64Uint32(I);
46830 case PT_Sint64:
46831 return emitShlSint64Sint64(I);
46832 case PT_Uint64:
46833 return emitShlSint64Uint64(I);
46834 case PT_IntAP:
46835 return emitShlSint64IntAP(I);
46836 case PT_IntAPS:
46837 return emitShlSint64IntAPS(I);
46838 default: llvm_unreachable("invalid type: emitShl");
46839 }
46840 llvm_unreachable("invalid enum value");
46841 case PT_Uint64:
46842 switch (T1) {
46843 case PT_Sint8:
46844 return emitShlUint64Sint8(I);
46845 case PT_Uint8:
46846 return emitShlUint64Uint8(I);
46847 case PT_Sint16:
46848 return emitShlUint64Sint16(I);
46849 case PT_Uint16:
46850 return emitShlUint64Uint16(I);
46851 case PT_Sint32:
46852 return emitShlUint64Sint32(I);
46853 case PT_Uint32:
46854 return emitShlUint64Uint32(I);
46855 case PT_Sint64:
46856 return emitShlUint64Sint64(I);
46857 case PT_Uint64:
46858 return emitShlUint64Uint64(I);
46859 case PT_IntAP:
46860 return emitShlUint64IntAP(I);
46861 case PT_IntAPS:
46862 return emitShlUint64IntAPS(I);
46863 default: llvm_unreachable("invalid type: emitShl");
46864 }
46865 llvm_unreachable("invalid enum value");
46866 case PT_IntAP:
46867 switch (T1) {
46868 case PT_Sint8:
46869 return emitShlIntAPSint8(I);
46870 case PT_Uint8:
46871 return emitShlIntAPUint8(I);
46872 case PT_Sint16:
46873 return emitShlIntAPSint16(I);
46874 case PT_Uint16:
46875 return emitShlIntAPUint16(I);
46876 case PT_Sint32:
46877 return emitShlIntAPSint32(I);
46878 case PT_Uint32:
46879 return emitShlIntAPUint32(I);
46880 case PT_Sint64:
46881 return emitShlIntAPSint64(I);
46882 case PT_Uint64:
46883 return emitShlIntAPUint64(I);
46884 case PT_IntAP:
46885 return emitShlIntAPIntAP(I);
46886 case PT_IntAPS:
46887 return emitShlIntAPIntAPS(I);
46888 default: llvm_unreachable("invalid type: emitShl");
46889 }
46890 llvm_unreachable("invalid enum value");
46891 case PT_IntAPS:
46892 switch (T1) {
46893 case PT_Sint8:
46894 return emitShlIntAPSSint8(I);
46895 case PT_Uint8:
46896 return emitShlIntAPSUint8(I);
46897 case PT_Sint16:
46898 return emitShlIntAPSSint16(I);
46899 case PT_Uint16:
46900 return emitShlIntAPSUint16(I);
46901 case PT_Sint32:
46902 return emitShlIntAPSSint32(I);
46903 case PT_Uint32:
46904 return emitShlIntAPSUint32(I);
46905 case PT_Sint64:
46906 return emitShlIntAPSSint64(I);
46907 case PT_Uint64:
46908 return emitShlIntAPSUint64(I);
46909 case PT_IntAP:
46910 return emitShlIntAPSIntAP(I);
46911 case PT_IntAPS:
46912 return emitShlIntAPSIntAPS(I);
46913 default: llvm_unreachable("invalid type: emitShl");
46914 }
46915 llvm_unreachable("invalid enum value");
46916 default: llvm_unreachable("invalid type: emitShl");
46917 }
46918 llvm_unreachable("invalid enum value");
46919}
46920#endif
46921#ifdef GET_LINK_IMPL
46922bool ByteCodeEmitter::emitShlSint8Sint8(SourceInfo L) {
46923 return emitOp<>(OP_ShlSint8Sint8, L);
46924}
46925bool ByteCodeEmitter::emitShlSint8Uint8(SourceInfo L) {
46926 return emitOp<>(OP_ShlSint8Uint8, L);
46927}
46928bool ByteCodeEmitter::emitShlSint8Sint16(SourceInfo L) {
46929 return emitOp<>(OP_ShlSint8Sint16, L);
46930}
46931bool ByteCodeEmitter::emitShlSint8Uint16(SourceInfo L) {
46932 return emitOp<>(OP_ShlSint8Uint16, L);
46933}
46934bool ByteCodeEmitter::emitShlSint8Sint32(SourceInfo L) {
46935 return emitOp<>(OP_ShlSint8Sint32, L);
46936}
46937bool ByteCodeEmitter::emitShlSint8Uint32(SourceInfo L) {
46938 return emitOp<>(OP_ShlSint8Uint32, L);
46939}
46940bool ByteCodeEmitter::emitShlSint8Sint64(SourceInfo L) {
46941 return emitOp<>(OP_ShlSint8Sint64, L);
46942}
46943bool ByteCodeEmitter::emitShlSint8Uint64(SourceInfo L) {
46944 return emitOp<>(OP_ShlSint8Uint64, L);
46945}
46946bool ByteCodeEmitter::emitShlSint8IntAP(SourceInfo L) {
46947 return emitOp<>(OP_ShlSint8IntAP, L);
46948}
46949bool ByteCodeEmitter::emitShlSint8IntAPS(SourceInfo L) {
46950 return emitOp<>(OP_ShlSint8IntAPS, L);
46951}
46952bool ByteCodeEmitter::emitShlUint8Sint8(SourceInfo L) {
46953 return emitOp<>(OP_ShlUint8Sint8, L);
46954}
46955bool ByteCodeEmitter::emitShlUint8Uint8(SourceInfo L) {
46956 return emitOp<>(OP_ShlUint8Uint8, L);
46957}
46958bool ByteCodeEmitter::emitShlUint8Sint16(SourceInfo L) {
46959 return emitOp<>(OP_ShlUint8Sint16, L);
46960}
46961bool ByteCodeEmitter::emitShlUint8Uint16(SourceInfo L) {
46962 return emitOp<>(OP_ShlUint8Uint16, L);
46963}
46964bool ByteCodeEmitter::emitShlUint8Sint32(SourceInfo L) {
46965 return emitOp<>(OP_ShlUint8Sint32, L);
46966}
46967bool ByteCodeEmitter::emitShlUint8Uint32(SourceInfo L) {
46968 return emitOp<>(OP_ShlUint8Uint32, L);
46969}
46970bool ByteCodeEmitter::emitShlUint8Sint64(SourceInfo L) {
46971 return emitOp<>(OP_ShlUint8Sint64, L);
46972}
46973bool ByteCodeEmitter::emitShlUint8Uint64(SourceInfo L) {
46974 return emitOp<>(OP_ShlUint8Uint64, L);
46975}
46976bool ByteCodeEmitter::emitShlUint8IntAP(SourceInfo L) {
46977 return emitOp<>(OP_ShlUint8IntAP, L);
46978}
46979bool ByteCodeEmitter::emitShlUint8IntAPS(SourceInfo L) {
46980 return emitOp<>(OP_ShlUint8IntAPS, L);
46981}
46982bool ByteCodeEmitter::emitShlSint16Sint8(SourceInfo L) {
46983 return emitOp<>(OP_ShlSint16Sint8, L);
46984}
46985bool ByteCodeEmitter::emitShlSint16Uint8(SourceInfo L) {
46986 return emitOp<>(OP_ShlSint16Uint8, L);
46987}
46988bool ByteCodeEmitter::emitShlSint16Sint16(SourceInfo L) {
46989 return emitOp<>(OP_ShlSint16Sint16, L);
46990}
46991bool ByteCodeEmitter::emitShlSint16Uint16(SourceInfo L) {
46992 return emitOp<>(OP_ShlSint16Uint16, L);
46993}
46994bool ByteCodeEmitter::emitShlSint16Sint32(SourceInfo L) {
46995 return emitOp<>(OP_ShlSint16Sint32, L);
46996}
46997bool ByteCodeEmitter::emitShlSint16Uint32(SourceInfo L) {
46998 return emitOp<>(OP_ShlSint16Uint32, L);
46999}
47000bool ByteCodeEmitter::emitShlSint16Sint64(SourceInfo L) {
47001 return emitOp<>(OP_ShlSint16Sint64, L);
47002}
47003bool ByteCodeEmitter::emitShlSint16Uint64(SourceInfo L) {
47004 return emitOp<>(OP_ShlSint16Uint64, L);
47005}
47006bool ByteCodeEmitter::emitShlSint16IntAP(SourceInfo L) {
47007 return emitOp<>(OP_ShlSint16IntAP, L);
47008}
47009bool ByteCodeEmitter::emitShlSint16IntAPS(SourceInfo L) {
47010 return emitOp<>(OP_ShlSint16IntAPS, L);
47011}
47012bool ByteCodeEmitter::emitShlUint16Sint8(SourceInfo L) {
47013 return emitOp<>(OP_ShlUint16Sint8, L);
47014}
47015bool ByteCodeEmitter::emitShlUint16Uint8(SourceInfo L) {
47016 return emitOp<>(OP_ShlUint16Uint8, L);
47017}
47018bool ByteCodeEmitter::emitShlUint16Sint16(SourceInfo L) {
47019 return emitOp<>(OP_ShlUint16Sint16, L);
47020}
47021bool ByteCodeEmitter::emitShlUint16Uint16(SourceInfo L) {
47022 return emitOp<>(OP_ShlUint16Uint16, L);
47023}
47024bool ByteCodeEmitter::emitShlUint16Sint32(SourceInfo L) {
47025 return emitOp<>(OP_ShlUint16Sint32, L);
47026}
47027bool ByteCodeEmitter::emitShlUint16Uint32(SourceInfo L) {
47028 return emitOp<>(OP_ShlUint16Uint32, L);
47029}
47030bool ByteCodeEmitter::emitShlUint16Sint64(SourceInfo L) {
47031 return emitOp<>(OP_ShlUint16Sint64, L);
47032}
47033bool ByteCodeEmitter::emitShlUint16Uint64(SourceInfo L) {
47034 return emitOp<>(OP_ShlUint16Uint64, L);
47035}
47036bool ByteCodeEmitter::emitShlUint16IntAP(SourceInfo L) {
47037 return emitOp<>(OP_ShlUint16IntAP, L);
47038}
47039bool ByteCodeEmitter::emitShlUint16IntAPS(SourceInfo L) {
47040 return emitOp<>(OP_ShlUint16IntAPS, L);
47041}
47042bool ByteCodeEmitter::emitShlSint32Sint8(SourceInfo L) {
47043 return emitOp<>(OP_ShlSint32Sint8, L);
47044}
47045bool ByteCodeEmitter::emitShlSint32Uint8(SourceInfo L) {
47046 return emitOp<>(OP_ShlSint32Uint8, L);
47047}
47048bool ByteCodeEmitter::emitShlSint32Sint16(SourceInfo L) {
47049 return emitOp<>(OP_ShlSint32Sint16, L);
47050}
47051bool ByteCodeEmitter::emitShlSint32Uint16(SourceInfo L) {
47052 return emitOp<>(OP_ShlSint32Uint16, L);
47053}
47054bool ByteCodeEmitter::emitShlSint32Sint32(SourceInfo L) {
47055 return emitOp<>(OP_ShlSint32Sint32, L);
47056}
47057bool ByteCodeEmitter::emitShlSint32Uint32(SourceInfo L) {
47058 return emitOp<>(OP_ShlSint32Uint32, L);
47059}
47060bool ByteCodeEmitter::emitShlSint32Sint64(SourceInfo L) {
47061 return emitOp<>(OP_ShlSint32Sint64, L);
47062}
47063bool ByteCodeEmitter::emitShlSint32Uint64(SourceInfo L) {
47064 return emitOp<>(OP_ShlSint32Uint64, L);
47065}
47066bool ByteCodeEmitter::emitShlSint32IntAP(SourceInfo L) {
47067 return emitOp<>(OP_ShlSint32IntAP, L);
47068}
47069bool ByteCodeEmitter::emitShlSint32IntAPS(SourceInfo L) {
47070 return emitOp<>(OP_ShlSint32IntAPS, L);
47071}
47072bool ByteCodeEmitter::emitShlUint32Sint8(SourceInfo L) {
47073 return emitOp<>(OP_ShlUint32Sint8, L);
47074}
47075bool ByteCodeEmitter::emitShlUint32Uint8(SourceInfo L) {
47076 return emitOp<>(OP_ShlUint32Uint8, L);
47077}
47078bool ByteCodeEmitter::emitShlUint32Sint16(SourceInfo L) {
47079 return emitOp<>(OP_ShlUint32Sint16, L);
47080}
47081bool ByteCodeEmitter::emitShlUint32Uint16(SourceInfo L) {
47082 return emitOp<>(OP_ShlUint32Uint16, L);
47083}
47084bool ByteCodeEmitter::emitShlUint32Sint32(SourceInfo L) {
47085 return emitOp<>(OP_ShlUint32Sint32, L);
47086}
47087bool ByteCodeEmitter::emitShlUint32Uint32(SourceInfo L) {
47088 return emitOp<>(OP_ShlUint32Uint32, L);
47089}
47090bool ByteCodeEmitter::emitShlUint32Sint64(SourceInfo L) {
47091 return emitOp<>(OP_ShlUint32Sint64, L);
47092}
47093bool ByteCodeEmitter::emitShlUint32Uint64(SourceInfo L) {
47094 return emitOp<>(OP_ShlUint32Uint64, L);
47095}
47096bool ByteCodeEmitter::emitShlUint32IntAP(SourceInfo L) {
47097 return emitOp<>(OP_ShlUint32IntAP, L);
47098}
47099bool ByteCodeEmitter::emitShlUint32IntAPS(SourceInfo L) {
47100 return emitOp<>(OP_ShlUint32IntAPS, L);
47101}
47102bool ByteCodeEmitter::emitShlSint64Sint8(SourceInfo L) {
47103 return emitOp<>(OP_ShlSint64Sint8, L);
47104}
47105bool ByteCodeEmitter::emitShlSint64Uint8(SourceInfo L) {
47106 return emitOp<>(OP_ShlSint64Uint8, L);
47107}
47108bool ByteCodeEmitter::emitShlSint64Sint16(SourceInfo L) {
47109 return emitOp<>(OP_ShlSint64Sint16, L);
47110}
47111bool ByteCodeEmitter::emitShlSint64Uint16(SourceInfo L) {
47112 return emitOp<>(OP_ShlSint64Uint16, L);
47113}
47114bool ByteCodeEmitter::emitShlSint64Sint32(SourceInfo L) {
47115 return emitOp<>(OP_ShlSint64Sint32, L);
47116}
47117bool ByteCodeEmitter::emitShlSint64Uint32(SourceInfo L) {
47118 return emitOp<>(OP_ShlSint64Uint32, L);
47119}
47120bool ByteCodeEmitter::emitShlSint64Sint64(SourceInfo L) {
47121 return emitOp<>(OP_ShlSint64Sint64, L);
47122}
47123bool ByteCodeEmitter::emitShlSint64Uint64(SourceInfo L) {
47124 return emitOp<>(OP_ShlSint64Uint64, L);
47125}
47126bool ByteCodeEmitter::emitShlSint64IntAP(SourceInfo L) {
47127 return emitOp<>(OP_ShlSint64IntAP, L);
47128}
47129bool ByteCodeEmitter::emitShlSint64IntAPS(SourceInfo L) {
47130 return emitOp<>(OP_ShlSint64IntAPS, L);
47131}
47132bool ByteCodeEmitter::emitShlUint64Sint8(SourceInfo L) {
47133 return emitOp<>(OP_ShlUint64Sint8, L);
47134}
47135bool ByteCodeEmitter::emitShlUint64Uint8(SourceInfo L) {
47136 return emitOp<>(OP_ShlUint64Uint8, L);
47137}
47138bool ByteCodeEmitter::emitShlUint64Sint16(SourceInfo L) {
47139 return emitOp<>(OP_ShlUint64Sint16, L);
47140}
47141bool ByteCodeEmitter::emitShlUint64Uint16(SourceInfo L) {
47142 return emitOp<>(OP_ShlUint64Uint16, L);
47143}
47144bool ByteCodeEmitter::emitShlUint64Sint32(SourceInfo L) {
47145 return emitOp<>(OP_ShlUint64Sint32, L);
47146}
47147bool ByteCodeEmitter::emitShlUint64Uint32(SourceInfo L) {
47148 return emitOp<>(OP_ShlUint64Uint32, L);
47149}
47150bool ByteCodeEmitter::emitShlUint64Sint64(SourceInfo L) {
47151 return emitOp<>(OP_ShlUint64Sint64, L);
47152}
47153bool ByteCodeEmitter::emitShlUint64Uint64(SourceInfo L) {
47154 return emitOp<>(OP_ShlUint64Uint64, L);
47155}
47156bool ByteCodeEmitter::emitShlUint64IntAP(SourceInfo L) {
47157 return emitOp<>(OP_ShlUint64IntAP, L);
47158}
47159bool ByteCodeEmitter::emitShlUint64IntAPS(SourceInfo L) {
47160 return emitOp<>(OP_ShlUint64IntAPS, L);
47161}
47162bool ByteCodeEmitter::emitShlIntAPSint8(SourceInfo L) {
47163 return emitOp<>(OP_ShlIntAPSint8, L);
47164}
47165bool ByteCodeEmitter::emitShlIntAPUint8(SourceInfo L) {
47166 return emitOp<>(OP_ShlIntAPUint8, L);
47167}
47168bool ByteCodeEmitter::emitShlIntAPSint16(SourceInfo L) {
47169 return emitOp<>(OP_ShlIntAPSint16, L);
47170}
47171bool ByteCodeEmitter::emitShlIntAPUint16(SourceInfo L) {
47172 return emitOp<>(OP_ShlIntAPUint16, L);
47173}
47174bool ByteCodeEmitter::emitShlIntAPSint32(SourceInfo L) {
47175 return emitOp<>(OP_ShlIntAPSint32, L);
47176}
47177bool ByteCodeEmitter::emitShlIntAPUint32(SourceInfo L) {
47178 return emitOp<>(OP_ShlIntAPUint32, L);
47179}
47180bool ByteCodeEmitter::emitShlIntAPSint64(SourceInfo L) {
47181 return emitOp<>(OP_ShlIntAPSint64, L);
47182}
47183bool ByteCodeEmitter::emitShlIntAPUint64(SourceInfo L) {
47184 return emitOp<>(OP_ShlIntAPUint64, L);
47185}
47186bool ByteCodeEmitter::emitShlIntAPIntAP(SourceInfo L) {
47187 return emitOp<>(OP_ShlIntAPIntAP, L);
47188}
47189bool ByteCodeEmitter::emitShlIntAPIntAPS(SourceInfo L) {
47190 return emitOp<>(OP_ShlIntAPIntAPS, L);
47191}
47192bool ByteCodeEmitter::emitShlIntAPSSint8(SourceInfo L) {
47193 return emitOp<>(OP_ShlIntAPSSint8, L);
47194}
47195bool ByteCodeEmitter::emitShlIntAPSUint8(SourceInfo L) {
47196 return emitOp<>(OP_ShlIntAPSUint8, L);
47197}
47198bool ByteCodeEmitter::emitShlIntAPSSint16(SourceInfo L) {
47199 return emitOp<>(OP_ShlIntAPSSint16, L);
47200}
47201bool ByteCodeEmitter::emitShlIntAPSUint16(SourceInfo L) {
47202 return emitOp<>(OP_ShlIntAPSUint16, L);
47203}
47204bool ByteCodeEmitter::emitShlIntAPSSint32(SourceInfo L) {
47205 return emitOp<>(OP_ShlIntAPSSint32, L);
47206}
47207bool ByteCodeEmitter::emitShlIntAPSUint32(SourceInfo L) {
47208 return emitOp<>(OP_ShlIntAPSUint32, L);
47209}
47210bool ByteCodeEmitter::emitShlIntAPSSint64(SourceInfo L) {
47211 return emitOp<>(OP_ShlIntAPSSint64, L);
47212}
47213bool ByteCodeEmitter::emitShlIntAPSUint64(SourceInfo L) {
47214 return emitOp<>(OP_ShlIntAPSUint64, L);
47215}
47216bool ByteCodeEmitter::emitShlIntAPSIntAP(SourceInfo L) {
47217 return emitOp<>(OP_ShlIntAPSIntAP, L);
47218}
47219bool ByteCodeEmitter::emitShlIntAPSIntAPS(SourceInfo L) {
47220 return emitOp<>(OP_ShlIntAPSIntAPS, L);
47221}
47222#endif
47223#ifdef GET_EVAL_IMPL
47224bool EvalEmitter::emitShlSint8Sint8(SourceInfo L) {
47225 if (!isActive()) return true;
47226 CurrentSource = L;
47227 return Shl<PT_Sint8, PT_Sint8>(S, CodePtr());
47228}
47229bool EvalEmitter::emitShlSint8Uint8(SourceInfo L) {
47230 if (!isActive()) return true;
47231 CurrentSource = L;
47232 return Shl<PT_Sint8, PT_Uint8>(S, CodePtr());
47233}
47234bool EvalEmitter::emitShlSint8Sint16(SourceInfo L) {
47235 if (!isActive()) return true;
47236 CurrentSource = L;
47237 return Shl<PT_Sint8, PT_Sint16>(S, CodePtr());
47238}
47239bool EvalEmitter::emitShlSint8Uint16(SourceInfo L) {
47240 if (!isActive()) return true;
47241 CurrentSource = L;
47242 return Shl<PT_Sint8, PT_Uint16>(S, CodePtr());
47243}
47244bool EvalEmitter::emitShlSint8Sint32(SourceInfo L) {
47245 if (!isActive()) return true;
47246 CurrentSource = L;
47247 return Shl<PT_Sint8, PT_Sint32>(S, CodePtr());
47248}
47249bool EvalEmitter::emitShlSint8Uint32(SourceInfo L) {
47250 if (!isActive()) return true;
47251 CurrentSource = L;
47252 return Shl<PT_Sint8, PT_Uint32>(S, CodePtr());
47253}
47254bool EvalEmitter::emitShlSint8Sint64(SourceInfo L) {
47255 if (!isActive()) return true;
47256 CurrentSource = L;
47257 return Shl<PT_Sint8, PT_Sint64>(S, CodePtr());
47258}
47259bool EvalEmitter::emitShlSint8Uint64(SourceInfo L) {
47260 if (!isActive()) return true;
47261 CurrentSource = L;
47262 return Shl<PT_Sint8, PT_Uint64>(S, CodePtr());
47263}
47264bool EvalEmitter::emitShlSint8IntAP(SourceInfo L) {
47265 if (!isActive()) return true;
47266 CurrentSource = L;
47267 return Shl<PT_Sint8, PT_IntAP>(S, CodePtr());
47268}
47269bool EvalEmitter::emitShlSint8IntAPS(SourceInfo L) {
47270 if (!isActive()) return true;
47271 CurrentSource = L;
47272 return Shl<PT_Sint8, PT_IntAPS>(S, CodePtr());
47273}
47274bool EvalEmitter::emitShlUint8Sint8(SourceInfo L) {
47275 if (!isActive()) return true;
47276 CurrentSource = L;
47277 return Shl<PT_Uint8, PT_Sint8>(S, CodePtr());
47278}
47279bool EvalEmitter::emitShlUint8Uint8(SourceInfo L) {
47280 if (!isActive()) return true;
47281 CurrentSource = L;
47282 return Shl<PT_Uint8, PT_Uint8>(S, CodePtr());
47283}
47284bool EvalEmitter::emitShlUint8Sint16(SourceInfo L) {
47285 if (!isActive()) return true;
47286 CurrentSource = L;
47287 return Shl<PT_Uint8, PT_Sint16>(S, CodePtr());
47288}
47289bool EvalEmitter::emitShlUint8Uint16(SourceInfo L) {
47290 if (!isActive()) return true;
47291 CurrentSource = L;
47292 return Shl<PT_Uint8, PT_Uint16>(S, CodePtr());
47293}
47294bool EvalEmitter::emitShlUint8Sint32(SourceInfo L) {
47295 if (!isActive()) return true;
47296 CurrentSource = L;
47297 return Shl<PT_Uint8, PT_Sint32>(S, CodePtr());
47298}
47299bool EvalEmitter::emitShlUint8Uint32(SourceInfo L) {
47300 if (!isActive()) return true;
47301 CurrentSource = L;
47302 return Shl<PT_Uint8, PT_Uint32>(S, CodePtr());
47303}
47304bool EvalEmitter::emitShlUint8Sint64(SourceInfo L) {
47305 if (!isActive()) return true;
47306 CurrentSource = L;
47307 return Shl<PT_Uint8, PT_Sint64>(S, CodePtr());
47308}
47309bool EvalEmitter::emitShlUint8Uint64(SourceInfo L) {
47310 if (!isActive()) return true;
47311 CurrentSource = L;
47312 return Shl<PT_Uint8, PT_Uint64>(S, CodePtr());
47313}
47314bool EvalEmitter::emitShlUint8IntAP(SourceInfo L) {
47315 if (!isActive()) return true;
47316 CurrentSource = L;
47317 return Shl<PT_Uint8, PT_IntAP>(S, CodePtr());
47318}
47319bool EvalEmitter::emitShlUint8IntAPS(SourceInfo L) {
47320 if (!isActive()) return true;
47321 CurrentSource = L;
47322 return Shl<PT_Uint8, PT_IntAPS>(S, CodePtr());
47323}
47324bool EvalEmitter::emitShlSint16Sint8(SourceInfo L) {
47325 if (!isActive()) return true;
47326 CurrentSource = L;
47327 return Shl<PT_Sint16, PT_Sint8>(S, CodePtr());
47328}
47329bool EvalEmitter::emitShlSint16Uint8(SourceInfo L) {
47330 if (!isActive()) return true;
47331 CurrentSource = L;
47332 return Shl<PT_Sint16, PT_Uint8>(S, CodePtr());
47333}
47334bool EvalEmitter::emitShlSint16Sint16(SourceInfo L) {
47335 if (!isActive()) return true;
47336 CurrentSource = L;
47337 return Shl<PT_Sint16, PT_Sint16>(S, CodePtr());
47338}
47339bool EvalEmitter::emitShlSint16Uint16(SourceInfo L) {
47340 if (!isActive()) return true;
47341 CurrentSource = L;
47342 return Shl<PT_Sint16, PT_Uint16>(S, CodePtr());
47343}
47344bool EvalEmitter::emitShlSint16Sint32(SourceInfo L) {
47345 if (!isActive()) return true;
47346 CurrentSource = L;
47347 return Shl<PT_Sint16, PT_Sint32>(S, CodePtr());
47348}
47349bool EvalEmitter::emitShlSint16Uint32(SourceInfo L) {
47350 if (!isActive()) return true;
47351 CurrentSource = L;
47352 return Shl<PT_Sint16, PT_Uint32>(S, CodePtr());
47353}
47354bool EvalEmitter::emitShlSint16Sint64(SourceInfo L) {
47355 if (!isActive()) return true;
47356 CurrentSource = L;
47357 return Shl<PT_Sint16, PT_Sint64>(S, CodePtr());
47358}
47359bool EvalEmitter::emitShlSint16Uint64(SourceInfo L) {
47360 if (!isActive()) return true;
47361 CurrentSource = L;
47362 return Shl<PT_Sint16, PT_Uint64>(S, CodePtr());
47363}
47364bool EvalEmitter::emitShlSint16IntAP(SourceInfo L) {
47365 if (!isActive()) return true;
47366 CurrentSource = L;
47367 return Shl<PT_Sint16, PT_IntAP>(S, CodePtr());
47368}
47369bool EvalEmitter::emitShlSint16IntAPS(SourceInfo L) {
47370 if (!isActive()) return true;
47371 CurrentSource = L;
47372 return Shl<PT_Sint16, PT_IntAPS>(S, CodePtr());
47373}
47374bool EvalEmitter::emitShlUint16Sint8(SourceInfo L) {
47375 if (!isActive()) return true;
47376 CurrentSource = L;
47377 return Shl<PT_Uint16, PT_Sint8>(S, CodePtr());
47378}
47379bool EvalEmitter::emitShlUint16Uint8(SourceInfo L) {
47380 if (!isActive()) return true;
47381 CurrentSource = L;
47382 return Shl<PT_Uint16, PT_Uint8>(S, CodePtr());
47383}
47384bool EvalEmitter::emitShlUint16Sint16(SourceInfo L) {
47385 if (!isActive()) return true;
47386 CurrentSource = L;
47387 return Shl<PT_Uint16, PT_Sint16>(S, CodePtr());
47388}
47389bool EvalEmitter::emitShlUint16Uint16(SourceInfo L) {
47390 if (!isActive()) return true;
47391 CurrentSource = L;
47392 return Shl<PT_Uint16, PT_Uint16>(S, CodePtr());
47393}
47394bool EvalEmitter::emitShlUint16Sint32(SourceInfo L) {
47395 if (!isActive()) return true;
47396 CurrentSource = L;
47397 return Shl<PT_Uint16, PT_Sint32>(S, CodePtr());
47398}
47399bool EvalEmitter::emitShlUint16Uint32(SourceInfo L) {
47400 if (!isActive()) return true;
47401 CurrentSource = L;
47402 return Shl<PT_Uint16, PT_Uint32>(S, CodePtr());
47403}
47404bool EvalEmitter::emitShlUint16Sint64(SourceInfo L) {
47405 if (!isActive()) return true;
47406 CurrentSource = L;
47407 return Shl<PT_Uint16, PT_Sint64>(S, CodePtr());
47408}
47409bool EvalEmitter::emitShlUint16Uint64(SourceInfo L) {
47410 if (!isActive()) return true;
47411 CurrentSource = L;
47412 return Shl<PT_Uint16, PT_Uint64>(S, CodePtr());
47413}
47414bool EvalEmitter::emitShlUint16IntAP(SourceInfo L) {
47415 if (!isActive()) return true;
47416 CurrentSource = L;
47417 return Shl<PT_Uint16, PT_IntAP>(S, CodePtr());
47418}
47419bool EvalEmitter::emitShlUint16IntAPS(SourceInfo L) {
47420 if (!isActive()) return true;
47421 CurrentSource = L;
47422 return Shl<PT_Uint16, PT_IntAPS>(S, CodePtr());
47423}
47424bool EvalEmitter::emitShlSint32Sint8(SourceInfo L) {
47425 if (!isActive()) return true;
47426 CurrentSource = L;
47427 return Shl<PT_Sint32, PT_Sint8>(S, CodePtr());
47428}
47429bool EvalEmitter::emitShlSint32Uint8(SourceInfo L) {
47430 if (!isActive()) return true;
47431 CurrentSource = L;
47432 return Shl<PT_Sint32, PT_Uint8>(S, CodePtr());
47433}
47434bool EvalEmitter::emitShlSint32Sint16(SourceInfo L) {
47435 if (!isActive()) return true;
47436 CurrentSource = L;
47437 return Shl<PT_Sint32, PT_Sint16>(S, CodePtr());
47438}
47439bool EvalEmitter::emitShlSint32Uint16(SourceInfo L) {
47440 if (!isActive()) return true;
47441 CurrentSource = L;
47442 return Shl<PT_Sint32, PT_Uint16>(S, CodePtr());
47443}
47444bool EvalEmitter::emitShlSint32Sint32(SourceInfo L) {
47445 if (!isActive()) return true;
47446 CurrentSource = L;
47447 return Shl<PT_Sint32, PT_Sint32>(S, CodePtr());
47448}
47449bool EvalEmitter::emitShlSint32Uint32(SourceInfo L) {
47450 if (!isActive()) return true;
47451 CurrentSource = L;
47452 return Shl<PT_Sint32, PT_Uint32>(S, CodePtr());
47453}
47454bool EvalEmitter::emitShlSint32Sint64(SourceInfo L) {
47455 if (!isActive()) return true;
47456 CurrentSource = L;
47457 return Shl<PT_Sint32, PT_Sint64>(S, CodePtr());
47458}
47459bool EvalEmitter::emitShlSint32Uint64(SourceInfo L) {
47460 if (!isActive()) return true;
47461 CurrentSource = L;
47462 return Shl<PT_Sint32, PT_Uint64>(S, CodePtr());
47463}
47464bool EvalEmitter::emitShlSint32IntAP(SourceInfo L) {
47465 if (!isActive()) return true;
47466 CurrentSource = L;
47467 return Shl<PT_Sint32, PT_IntAP>(S, CodePtr());
47468}
47469bool EvalEmitter::emitShlSint32IntAPS(SourceInfo L) {
47470 if (!isActive()) return true;
47471 CurrentSource = L;
47472 return Shl<PT_Sint32, PT_IntAPS>(S, CodePtr());
47473}
47474bool EvalEmitter::emitShlUint32Sint8(SourceInfo L) {
47475 if (!isActive()) return true;
47476 CurrentSource = L;
47477 return Shl<PT_Uint32, PT_Sint8>(S, CodePtr());
47478}
47479bool EvalEmitter::emitShlUint32Uint8(SourceInfo L) {
47480 if (!isActive()) return true;
47481 CurrentSource = L;
47482 return Shl<PT_Uint32, PT_Uint8>(S, CodePtr());
47483}
47484bool EvalEmitter::emitShlUint32Sint16(SourceInfo L) {
47485 if (!isActive()) return true;
47486 CurrentSource = L;
47487 return Shl<PT_Uint32, PT_Sint16>(S, CodePtr());
47488}
47489bool EvalEmitter::emitShlUint32Uint16(SourceInfo L) {
47490 if (!isActive()) return true;
47491 CurrentSource = L;
47492 return Shl<PT_Uint32, PT_Uint16>(S, CodePtr());
47493}
47494bool EvalEmitter::emitShlUint32Sint32(SourceInfo L) {
47495 if (!isActive()) return true;
47496 CurrentSource = L;
47497 return Shl<PT_Uint32, PT_Sint32>(S, CodePtr());
47498}
47499bool EvalEmitter::emitShlUint32Uint32(SourceInfo L) {
47500 if (!isActive()) return true;
47501 CurrentSource = L;
47502 return Shl<PT_Uint32, PT_Uint32>(S, CodePtr());
47503}
47504bool EvalEmitter::emitShlUint32Sint64(SourceInfo L) {
47505 if (!isActive()) return true;
47506 CurrentSource = L;
47507 return Shl<PT_Uint32, PT_Sint64>(S, CodePtr());
47508}
47509bool EvalEmitter::emitShlUint32Uint64(SourceInfo L) {
47510 if (!isActive()) return true;
47511 CurrentSource = L;
47512 return Shl<PT_Uint32, PT_Uint64>(S, CodePtr());
47513}
47514bool EvalEmitter::emitShlUint32IntAP(SourceInfo L) {
47515 if (!isActive()) return true;
47516 CurrentSource = L;
47517 return Shl<PT_Uint32, PT_IntAP>(S, CodePtr());
47518}
47519bool EvalEmitter::emitShlUint32IntAPS(SourceInfo L) {
47520 if (!isActive()) return true;
47521 CurrentSource = L;
47522 return Shl<PT_Uint32, PT_IntAPS>(S, CodePtr());
47523}
47524bool EvalEmitter::emitShlSint64Sint8(SourceInfo L) {
47525 if (!isActive()) return true;
47526 CurrentSource = L;
47527 return Shl<PT_Sint64, PT_Sint8>(S, CodePtr());
47528}
47529bool EvalEmitter::emitShlSint64Uint8(SourceInfo L) {
47530 if (!isActive()) return true;
47531 CurrentSource = L;
47532 return Shl<PT_Sint64, PT_Uint8>(S, CodePtr());
47533}
47534bool EvalEmitter::emitShlSint64Sint16(SourceInfo L) {
47535 if (!isActive()) return true;
47536 CurrentSource = L;
47537 return Shl<PT_Sint64, PT_Sint16>(S, CodePtr());
47538}
47539bool EvalEmitter::emitShlSint64Uint16(SourceInfo L) {
47540 if (!isActive()) return true;
47541 CurrentSource = L;
47542 return Shl<PT_Sint64, PT_Uint16>(S, CodePtr());
47543}
47544bool EvalEmitter::emitShlSint64Sint32(SourceInfo L) {
47545 if (!isActive()) return true;
47546 CurrentSource = L;
47547 return Shl<PT_Sint64, PT_Sint32>(S, CodePtr());
47548}
47549bool EvalEmitter::emitShlSint64Uint32(SourceInfo L) {
47550 if (!isActive()) return true;
47551 CurrentSource = L;
47552 return Shl<PT_Sint64, PT_Uint32>(S, CodePtr());
47553}
47554bool EvalEmitter::emitShlSint64Sint64(SourceInfo L) {
47555 if (!isActive()) return true;
47556 CurrentSource = L;
47557 return Shl<PT_Sint64, PT_Sint64>(S, CodePtr());
47558}
47559bool EvalEmitter::emitShlSint64Uint64(SourceInfo L) {
47560 if (!isActive()) return true;
47561 CurrentSource = L;
47562 return Shl<PT_Sint64, PT_Uint64>(S, CodePtr());
47563}
47564bool EvalEmitter::emitShlSint64IntAP(SourceInfo L) {
47565 if (!isActive()) return true;
47566 CurrentSource = L;
47567 return Shl<PT_Sint64, PT_IntAP>(S, CodePtr());
47568}
47569bool EvalEmitter::emitShlSint64IntAPS(SourceInfo L) {
47570 if (!isActive()) return true;
47571 CurrentSource = L;
47572 return Shl<PT_Sint64, PT_IntAPS>(S, CodePtr());
47573}
47574bool EvalEmitter::emitShlUint64Sint8(SourceInfo L) {
47575 if (!isActive()) return true;
47576 CurrentSource = L;
47577 return Shl<PT_Uint64, PT_Sint8>(S, CodePtr());
47578}
47579bool EvalEmitter::emitShlUint64Uint8(SourceInfo L) {
47580 if (!isActive()) return true;
47581 CurrentSource = L;
47582 return Shl<PT_Uint64, PT_Uint8>(S, CodePtr());
47583}
47584bool EvalEmitter::emitShlUint64Sint16(SourceInfo L) {
47585 if (!isActive()) return true;
47586 CurrentSource = L;
47587 return Shl<PT_Uint64, PT_Sint16>(S, CodePtr());
47588}
47589bool EvalEmitter::emitShlUint64Uint16(SourceInfo L) {
47590 if (!isActive()) return true;
47591 CurrentSource = L;
47592 return Shl<PT_Uint64, PT_Uint16>(S, CodePtr());
47593}
47594bool EvalEmitter::emitShlUint64Sint32(SourceInfo L) {
47595 if (!isActive()) return true;
47596 CurrentSource = L;
47597 return Shl<PT_Uint64, PT_Sint32>(S, CodePtr());
47598}
47599bool EvalEmitter::emitShlUint64Uint32(SourceInfo L) {
47600 if (!isActive()) return true;
47601 CurrentSource = L;
47602 return Shl<PT_Uint64, PT_Uint32>(S, CodePtr());
47603}
47604bool EvalEmitter::emitShlUint64Sint64(SourceInfo L) {
47605 if (!isActive()) return true;
47606 CurrentSource = L;
47607 return Shl<PT_Uint64, PT_Sint64>(S, CodePtr());
47608}
47609bool EvalEmitter::emitShlUint64Uint64(SourceInfo L) {
47610 if (!isActive()) return true;
47611 CurrentSource = L;
47612 return Shl<PT_Uint64, PT_Uint64>(S, CodePtr());
47613}
47614bool EvalEmitter::emitShlUint64IntAP(SourceInfo L) {
47615 if (!isActive()) return true;
47616 CurrentSource = L;
47617 return Shl<PT_Uint64, PT_IntAP>(S, CodePtr());
47618}
47619bool EvalEmitter::emitShlUint64IntAPS(SourceInfo L) {
47620 if (!isActive()) return true;
47621 CurrentSource = L;
47622 return Shl<PT_Uint64, PT_IntAPS>(S, CodePtr());
47623}
47624bool EvalEmitter::emitShlIntAPSint8(SourceInfo L) {
47625 if (!isActive()) return true;
47626 CurrentSource = L;
47627 return Shl<PT_IntAP, PT_Sint8>(S, CodePtr());
47628}
47629bool EvalEmitter::emitShlIntAPUint8(SourceInfo L) {
47630 if (!isActive()) return true;
47631 CurrentSource = L;
47632 return Shl<PT_IntAP, PT_Uint8>(S, CodePtr());
47633}
47634bool EvalEmitter::emitShlIntAPSint16(SourceInfo L) {
47635 if (!isActive()) return true;
47636 CurrentSource = L;
47637 return Shl<PT_IntAP, PT_Sint16>(S, CodePtr());
47638}
47639bool EvalEmitter::emitShlIntAPUint16(SourceInfo L) {
47640 if (!isActive()) return true;
47641 CurrentSource = L;
47642 return Shl<PT_IntAP, PT_Uint16>(S, CodePtr());
47643}
47644bool EvalEmitter::emitShlIntAPSint32(SourceInfo L) {
47645 if (!isActive()) return true;
47646 CurrentSource = L;
47647 return Shl<PT_IntAP, PT_Sint32>(S, CodePtr());
47648}
47649bool EvalEmitter::emitShlIntAPUint32(SourceInfo L) {
47650 if (!isActive()) return true;
47651 CurrentSource = L;
47652 return Shl<PT_IntAP, PT_Uint32>(S, CodePtr());
47653}
47654bool EvalEmitter::emitShlIntAPSint64(SourceInfo L) {
47655 if (!isActive()) return true;
47656 CurrentSource = L;
47657 return Shl<PT_IntAP, PT_Sint64>(S, CodePtr());
47658}
47659bool EvalEmitter::emitShlIntAPUint64(SourceInfo L) {
47660 if (!isActive()) return true;
47661 CurrentSource = L;
47662 return Shl<PT_IntAP, PT_Uint64>(S, CodePtr());
47663}
47664bool EvalEmitter::emitShlIntAPIntAP(SourceInfo L) {
47665 if (!isActive()) return true;
47666 CurrentSource = L;
47667 return Shl<PT_IntAP, PT_IntAP>(S, CodePtr());
47668}
47669bool EvalEmitter::emitShlIntAPIntAPS(SourceInfo L) {
47670 if (!isActive()) return true;
47671 CurrentSource = L;
47672 return Shl<PT_IntAP, PT_IntAPS>(S, CodePtr());
47673}
47674bool EvalEmitter::emitShlIntAPSSint8(SourceInfo L) {
47675 if (!isActive()) return true;
47676 CurrentSource = L;
47677 return Shl<PT_IntAPS, PT_Sint8>(S, CodePtr());
47678}
47679bool EvalEmitter::emitShlIntAPSUint8(SourceInfo L) {
47680 if (!isActive()) return true;
47681 CurrentSource = L;
47682 return Shl<PT_IntAPS, PT_Uint8>(S, CodePtr());
47683}
47684bool EvalEmitter::emitShlIntAPSSint16(SourceInfo L) {
47685 if (!isActive()) return true;
47686 CurrentSource = L;
47687 return Shl<PT_IntAPS, PT_Sint16>(S, CodePtr());
47688}
47689bool EvalEmitter::emitShlIntAPSUint16(SourceInfo L) {
47690 if (!isActive()) return true;
47691 CurrentSource = L;
47692 return Shl<PT_IntAPS, PT_Uint16>(S, CodePtr());
47693}
47694bool EvalEmitter::emitShlIntAPSSint32(SourceInfo L) {
47695 if (!isActive()) return true;
47696 CurrentSource = L;
47697 return Shl<PT_IntAPS, PT_Sint32>(S, CodePtr());
47698}
47699bool EvalEmitter::emitShlIntAPSUint32(SourceInfo L) {
47700 if (!isActive()) return true;
47701 CurrentSource = L;
47702 return Shl<PT_IntAPS, PT_Uint32>(S, CodePtr());
47703}
47704bool EvalEmitter::emitShlIntAPSSint64(SourceInfo L) {
47705 if (!isActive()) return true;
47706 CurrentSource = L;
47707 return Shl<PT_IntAPS, PT_Sint64>(S, CodePtr());
47708}
47709bool EvalEmitter::emitShlIntAPSUint64(SourceInfo L) {
47710 if (!isActive()) return true;
47711 CurrentSource = L;
47712 return Shl<PT_IntAPS, PT_Uint64>(S, CodePtr());
47713}
47714bool EvalEmitter::emitShlIntAPSIntAP(SourceInfo L) {
47715 if (!isActive()) return true;
47716 CurrentSource = L;
47717 return Shl<PT_IntAPS, PT_IntAP>(S, CodePtr());
47718}
47719bool EvalEmitter::emitShlIntAPSIntAPS(SourceInfo L) {
47720 if (!isActive()) return true;
47721 CurrentSource = L;
47722 return Shl<PT_IntAPS, PT_IntAPS>(S, CodePtr());
47723}
47724#endif
47725#ifdef GET_OPCODE_NAMES
47726OP_ShrSint8Sint8,
47727OP_ShrSint8Uint8,
47728OP_ShrSint8Sint16,
47729OP_ShrSint8Uint16,
47730OP_ShrSint8Sint32,
47731OP_ShrSint8Uint32,
47732OP_ShrSint8Sint64,
47733OP_ShrSint8Uint64,
47734OP_ShrSint8IntAP,
47735OP_ShrSint8IntAPS,
47736OP_ShrUint8Sint8,
47737OP_ShrUint8Uint8,
47738OP_ShrUint8Sint16,
47739OP_ShrUint8Uint16,
47740OP_ShrUint8Sint32,
47741OP_ShrUint8Uint32,
47742OP_ShrUint8Sint64,
47743OP_ShrUint8Uint64,
47744OP_ShrUint8IntAP,
47745OP_ShrUint8IntAPS,
47746OP_ShrSint16Sint8,
47747OP_ShrSint16Uint8,
47748OP_ShrSint16Sint16,
47749OP_ShrSint16Uint16,
47750OP_ShrSint16Sint32,
47751OP_ShrSint16Uint32,
47752OP_ShrSint16Sint64,
47753OP_ShrSint16Uint64,
47754OP_ShrSint16IntAP,
47755OP_ShrSint16IntAPS,
47756OP_ShrUint16Sint8,
47757OP_ShrUint16Uint8,
47758OP_ShrUint16Sint16,
47759OP_ShrUint16Uint16,
47760OP_ShrUint16Sint32,
47761OP_ShrUint16Uint32,
47762OP_ShrUint16Sint64,
47763OP_ShrUint16Uint64,
47764OP_ShrUint16IntAP,
47765OP_ShrUint16IntAPS,
47766OP_ShrSint32Sint8,
47767OP_ShrSint32Uint8,
47768OP_ShrSint32Sint16,
47769OP_ShrSint32Uint16,
47770OP_ShrSint32Sint32,
47771OP_ShrSint32Uint32,
47772OP_ShrSint32Sint64,
47773OP_ShrSint32Uint64,
47774OP_ShrSint32IntAP,
47775OP_ShrSint32IntAPS,
47776OP_ShrUint32Sint8,
47777OP_ShrUint32Uint8,
47778OP_ShrUint32Sint16,
47779OP_ShrUint32Uint16,
47780OP_ShrUint32Sint32,
47781OP_ShrUint32Uint32,
47782OP_ShrUint32Sint64,
47783OP_ShrUint32Uint64,
47784OP_ShrUint32IntAP,
47785OP_ShrUint32IntAPS,
47786OP_ShrSint64Sint8,
47787OP_ShrSint64Uint8,
47788OP_ShrSint64Sint16,
47789OP_ShrSint64Uint16,
47790OP_ShrSint64Sint32,
47791OP_ShrSint64Uint32,
47792OP_ShrSint64Sint64,
47793OP_ShrSint64Uint64,
47794OP_ShrSint64IntAP,
47795OP_ShrSint64IntAPS,
47796OP_ShrUint64Sint8,
47797OP_ShrUint64Uint8,
47798OP_ShrUint64Sint16,
47799OP_ShrUint64Uint16,
47800OP_ShrUint64Sint32,
47801OP_ShrUint64Uint32,
47802OP_ShrUint64Sint64,
47803OP_ShrUint64Uint64,
47804OP_ShrUint64IntAP,
47805OP_ShrUint64IntAPS,
47806OP_ShrIntAPSint8,
47807OP_ShrIntAPUint8,
47808OP_ShrIntAPSint16,
47809OP_ShrIntAPUint16,
47810OP_ShrIntAPSint32,
47811OP_ShrIntAPUint32,
47812OP_ShrIntAPSint64,
47813OP_ShrIntAPUint64,
47814OP_ShrIntAPIntAP,
47815OP_ShrIntAPIntAPS,
47816OP_ShrIntAPSSint8,
47817OP_ShrIntAPSUint8,
47818OP_ShrIntAPSSint16,
47819OP_ShrIntAPSUint16,
47820OP_ShrIntAPSSint32,
47821OP_ShrIntAPSUint32,
47822OP_ShrIntAPSSint64,
47823OP_ShrIntAPSUint64,
47824OP_ShrIntAPSIntAP,
47825OP_ShrIntAPSIntAPS,
47826#endif
47827#ifdef GET_INTERPFN_LIST
47828&Interp_ShrSint8Sint8,
47829&Interp_ShrSint8Uint8,
47830&Interp_ShrSint8Sint16,
47831&Interp_ShrSint8Uint16,
47832&Interp_ShrSint8Sint32,
47833&Interp_ShrSint8Uint32,
47834&Interp_ShrSint8Sint64,
47835&Interp_ShrSint8Uint64,
47836&Interp_ShrSint8IntAP,
47837&Interp_ShrSint8IntAPS,
47838&Interp_ShrUint8Sint8,
47839&Interp_ShrUint8Uint8,
47840&Interp_ShrUint8Sint16,
47841&Interp_ShrUint8Uint16,
47842&Interp_ShrUint8Sint32,
47843&Interp_ShrUint8Uint32,
47844&Interp_ShrUint8Sint64,
47845&Interp_ShrUint8Uint64,
47846&Interp_ShrUint8IntAP,
47847&Interp_ShrUint8IntAPS,
47848&Interp_ShrSint16Sint8,
47849&Interp_ShrSint16Uint8,
47850&Interp_ShrSint16Sint16,
47851&Interp_ShrSint16Uint16,
47852&Interp_ShrSint16Sint32,
47853&Interp_ShrSint16Uint32,
47854&Interp_ShrSint16Sint64,
47855&Interp_ShrSint16Uint64,
47856&Interp_ShrSint16IntAP,
47857&Interp_ShrSint16IntAPS,
47858&Interp_ShrUint16Sint8,
47859&Interp_ShrUint16Uint8,
47860&Interp_ShrUint16Sint16,
47861&Interp_ShrUint16Uint16,
47862&Interp_ShrUint16Sint32,
47863&Interp_ShrUint16Uint32,
47864&Interp_ShrUint16Sint64,
47865&Interp_ShrUint16Uint64,
47866&Interp_ShrUint16IntAP,
47867&Interp_ShrUint16IntAPS,
47868&Interp_ShrSint32Sint8,
47869&Interp_ShrSint32Uint8,
47870&Interp_ShrSint32Sint16,
47871&Interp_ShrSint32Uint16,
47872&Interp_ShrSint32Sint32,
47873&Interp_ShrSint32Uint32,
47874&Interp_ShrSint32Sint64,
47875&Interp_ShrSint32Uint64,
47876&Interp_ShrSint32IntAP,
47877&Interp_ShrSint32IntAPS,
47878&Interp_ShrUint32Sint8,
47879&Interp_ShrUint32Uint8,
47880&Interp_ShrUint32Sint16,
47881&Interp_ShrUint32Uint16,
47882&Interp_ShrUint32Sint32,
47883&Interp_ShrUint32Uint32,
47884&Interp_ShrUint32Sint64,
47885&Interp_ShrUint32Uint64,
47886&Interp_ShrUint32IntAP,
47887&Interp_ShrUint32IntAPS,
47888&Interp_ShrSint64Sint8,
47889&Interp_ShrSint64Uint8,
47890&Interp_ShrSint64Sint16,
47891&Interp_ShrSint64Uint16,
47892&Interp_ShrSint64Sint32,
47893&Interp_ShrSint64Uint32,
47894&Interp_ShrSint64Sint64,
47895&Interp_ShrSint64Uint64,
47896&Interp_ShrSint64IntAP,
47897&Interp_ShrSint64IntAPS,
47898&Interp_ShrUint64Sint8,
47899&Interp_ShrUint64Uint8,
47900&Interp_ShrUint64Sint16,
47901&Interp_ShrUint64Uint16,
47902&Interp_ShrUint64Sint32,
47903&Interp_ShrUint64Uint32,
47904&Interp_ShrUint64Sint64,
47905&Interp_ShrUint64Uint64,
47906&Interp_ShrUint64IntAP,
47907&Interp_ShrUint64IntAPS,
47908&Interp_ShrIntAPSint8,
47909&Interp_ShrIntAPUint8,
47910&Interp_ShrIntAPSint16,
47911&Interp_ShrIntAPUint16,
47912&Interp_ShrIntAPSint32,
47913&Interp_ShrIntAPUint32,
47914&Interp_ShrIntAPSint64,
47915&Interp_ShrIntAPUint64,
47916&Interp_ShrIntAPIntAP,
47917&Interp_ShrIntAPIntAPS,
47918&Interp_ShrIntAPSSint8,
47919&Interp_ShrIntAPSUint8,
47920&Interp_ShrIntAPSSint16,
47921&Interp_ShrIntAPSUint16,
47922&Interp_ShrIntAPSSint32,
47923&Interp_ShrIntAPSUint32,
47924&Interp_ShrIntAPSSint64,
47925&Interp_ShrIntAPSUint64,
47926&Interp_ShrIntAPSIntAP,
47927&Interp_ShrIntAPSIntAPS,
47928#endif
47929#ifdef GET_INTERPFN_DISPATCHERS
47930PRESERVE_NONE
47931static bool Interp_ShrSint8Sint8(InterpState &S) {
47932 if (!Shr<PT_Sint8, PT_Sint8>(S, S.PC)) return false;
47933#if USE_TAILCALLS
47934 MUSTTAIL return InterpNext(S);
47935#else
47936 return true;
47937#endif
47938}
47939PRESERVE_NONE
47940static bool Interp_ShrSint8Uint8(InterpState &S) {
47941 if (!Shr<PT_Sint8, PT_Uint8>(S, S.PC)) return false;
47942#if USE_TAILCALLS
47943 MUSTTAIL return InterpNext(S);
47944#else
47945 return true;
47946#endif
47947}
47948PRESERVE_NONE
47949static bool Interp_ShrSint8Sint16(InterpState &S) {
47950 if (!Shr<PT_Sint8, PT_Sint16>(S, S.PC)) return false;
47951#if USE_TAILCALLS
47952 MUSTTAIL return InterpNext(S);
47953#else
47954 return true;
47955#endif
47956}
47957PRESERVE_NONE
47958static bool Interp_ShrSint8Uint16(InterpState &S) {
47959 if (!Shr<PT_Sint8, PT_Uint16>(S, S.PC)) return false;
47960#if USE_TAILCALLS
47961 MUSTTAIL return InterpNext(S);
47962#else
47963 return true;
47964#endif
47965}
47966PRESERVE_NONE
47967static bool Interp_ShrSint8Sint32(InterpState &S) {
47968 if (!Shr<PT_Sint8, PT_Sint32>(S, S.PC)) return false;
47969#if USE_TAILCALLS
47970 MUSTTAIL return InterpNext(S);
47971#else
47972 return true;
47973#endif
47974}
47975PRESERVE_NONE
47976static bool Interp_ShrSint8Uint32(InterpState &S) {
47977 if (!Shr<PT_Sint8, PT_Uint32>(S, S.PC)) return false;
47978#if USE_TAILCALLS
47979 MUSTTAIL return InterpNext(S);
47980#else
47981 return true;
47982#endif
47983}
47984PRESERVE_NONE
47985static bool Interp_ShrSint8Sint64(InterpState &S) {
47986 if (!Shr<PT_Sint8, PT_Sint64>(S, S.PC)) return false;
47987#if USE_TAILCALLS
47988 MUSTTAIL return InterpNext(S);
47989#else
47990 return true;
47991#endif
47992}
47993PRESERVE_NONE
47994static bool Interp_ShrSint8Uint64(InterpState &S) {
47995 if (!Shr<PT_Sint8, PT_Uint64>(S, S.PC)) return false;
47996#if USE_TAILCALLS
47997 MUSTTAIL return InterpNext(S);
47998#else
47999 return true;
48000#endif
48001}
48002PRESERVE_NONE
48003static bool Interp_ShrSint8IntAP(InterpState &S) {
48004 if (!Shr<PT_Sint8, PT_IntAP>(S, S.PC)) return false;
48005#if USE_TAILCALLS
48006 MUSTTAIL return InterpNext(S);
48007#else
48008 return true;
48009#endif
48010}
48011PRESERVE_NONE
48012static bool Interp_ShrSint8IntAPS(InterpState &S) {
48013 if (!Shr<PT_Sint8, PT_IntAPS>(S, S.PC)) return false;
48014#if USE_TAILCALLS
48015 MUSTTAIL return InterpNext(S);
48016#else
48017 return true;
48018#endif
48019}
48020PRESERVE_NONE
48021static bool Interp_ShrUint8Sint8(InterpState &S) {
48022 if (!Shr<PT_Uint8, PT_Sint8>(S, S.PC)) return false;
48023#if USE_TAILCALLS
48024 MUSTTAIL return InterpNext(S);
48025#else
48026 return true;
48027#endif
48028}
48029PRESERVE_NONE
48030static bool Interp_ShrUint8Uint8(InterpState &S) {
48031 if (!Shr<PT_Uint8, PT_Uint8>(S, S.PC)) return false;
48032#if USE_TAILCALLS
48033 MUSTTAIL return InterpNext(S);
48034#else
48035 return true;
48036#endif
48037}
48038PRESERVE_NONE
48039static bool Interp_ShrUint8Sint16(InterpState &S) {
48040 if (!Shr<PT_Uint8, PT_Sint16>(S, S.PC)) return false;
48041#if USE_TAILCALLS
48042 MUSTTAIL return InterpNext(S);
48043#else
48044 return true;
48045#endif
48046}
48047PRESERVE_NONE
48048static bool Interp_ShrUint8Uint16(InterpState &S) {
48049 if (!Shr<PT_Uint8, PT_Uint16>(S, S.PC)) return false;
48050#if USE_TAILCALLS
48051 MUSTTAIL return InterpNext(S);
48052#else
48053 return true;
48054#endif
48055}
48056PRESERVE_NONE
48057static bool Interp_ShrUint8Sint32(InterpState &S) {
48058 if (!Shr<PT_Uint8, PT_Sint32>(S, S.PC)) return false;
48059#if USE_TAILCALLS
48060 MUSTTAIL return InterpNext(S);
48061#else
48062 return true;
48063#endif
48064}
48065PRESERVE_NONE
48066static bool Interp_ShrUint8Uint32(InterpState &S) {
48067 if (!Shr<PT_Uint8, PT_Uint32>(S, S.PC)) return false;
48068#if USE_TAILCALLS
48069 MUSTTAIL return InterpNext(S);
48070#else
48071 return true;
48072#endif
48073}
48074PRESERVE_NONE
48075static bool Interp_ShrUint8Sint64(InterpState &S) {
48076 if (!Shr<PT_Uint8, PT_Sint64>(S, S.PC)) return false;
48077#if USE_TAILCALLS
48078 MUSTTAIL return InterpNext(S);
48079#else
48080 return true;
48081#endif
48082}
48083PRESERVE_NONE
48084static bool Interp_ShrUint8Uint64(InterpState &S) {
48085 if (!Shr<PT_Uint8, PT_Uint64>(S, S.PC)) return false;
48086#if USE_TAILCALLS
48087 MUSTTAIL return InterpNext(S);
48088#else
48089 return true;
48090#endif
48091}
48092PRESERVE_NONE
48093static bool Interp_ShrUint8IntAP(InterpState &S) {
48094 if (!Shr<PT_Uint8, PT_IntAP>(S, S.PC)) return false;
48095#if USE_TAILCALLS
48096 MUSTTAIL return InterpNext(S);
48097#else
48098 return true;
48099#endif
48100}
48101PRESERVE_NONE
48102static bool Interp_ShrUint8IntAPS(InterpState &S) {
48103 if (!Shr<PT_Uint8, PT_IntAPS>(S, S.PC)) return false;
48104#if USE_TAILCALLS
48105 MUSTTAIL return InterpNext(S);
48106#else
48107 return true;
48108#endif
48109}
48110PRESERVE_NONE
48111static bool Interp_ShrSint16Sint8(InterpState &S) {
48112 if (!Shr<PT_Sint16, PT_Sint8>(S, S.PC)) return false;
48113#if USE_TAILCALLS
48114 MUSTTAIL return InterpNext(S);
48115#else
48116 return true;
48117#endif
48118}
48119PRESERVE_NONE
48120static bool Interp_ShrSint16Uint8(InterpState &S) {
48121 if (!Shr<PT_Sint16, PT_Uint8>(S, S.PC)) return false;
48122#if USE_TAILCALLS
48123 MUSTTAIL return InterpNext(S);
48124#else
48125 return true;
48126#endif
48127}
48128PRESERVE_NONE
48129static bool Interp_ShrSint16Sint16(InterpState &S) {
48130 if (!Shr<PT_Sint16, PT_Sint16>(S, S.PC)) return false;
48131#if USE_TAILCALLS
48132 MUSTTAIL return InterpNext(S);
48133#else
48134 return true;
48135#endif
48136}
48137PRESERVE_NONE
48138static bool Interp_ShrSint16Uint16(InterpState &S) {
48139 if (!Shr<PT_Sint16, PT_Uint16>(S, S.PC)) return false;
48140#if USE_TAILCALLS
48141 MUSTTAIL return InterpNext(S);
48142#else
48143 return true;
48144#endif
48145}
48146PRESERVE_NONE
48147static bool Interp_ShrSint16Sint32(InterpState &S) {
48148 if (!Shr<PT_Sint16, PT_Sint32>(S, S.PC)) return false;
48149#if USE_TAILCALLS
48150 MUSTTAIL return InterpNext(S);
48151#else
48152 return true;
48153#endif
48154}
48155PRESERVE_NONE
48156static bool Interp_ShrSint16Uint32(InterpState &S) {
48157 if (!Shr<PT_Sint16, PT_Uint32>(S, S.PC)) return false;
48158#if USE_TAILCALLS
48159 MUSTTAIL return InterpNext(S);
48160#else
48161 return true;
48162#endif
48163}
48164PRESERVE_NONE
48165static bool Interp_ShrSint16Sint64(InterpState &S) {
48166 if (!Shr<PT_Sint16, PT_Sint64>(S, S.PC)) return false;
48167#if USE_TAILCALLS
48168 MUSTTAIL return InterpNext(S);
48169#else
48170 return true;
48171#endif
48172}
48173PRESERVE_NONE
48174static bool Interp_ShrSint16Uint64(InterpState &S) {
48175 if (!Shr<PT_Sint16, PT_Uint64>(S, S.PC)) return false;
48176#if USE_TAILCALLS
48177 MUSTTAIL return InterpNext(S);
48178#else
48179 return true;
48180#endif
48181}
48182PRESERVE_NONE
48183static bool Interp_ShrSint16IntAP(InterpState &S) {
48184 if (!Shr<PT_Sint16, PT_IntAP>(S, S.PC)) return false;
48185#if USE_TAILCALLS
48186 MUSTTAIL return InterpNext(S);
48187#else
48188 return true;
48189#endif
48190}
48191PRESERVE_NONE
48192static bool Interp_ShrSint16IntAPS(InterpState &S) {
48193 if (!Shr<PT_Sint16, PT_IntAPS>(S, S.PC)) return false;
48194#if USE_TAILCALLS
48195 MUSTTAIL return InterpNext(S);
48196#else
48197 return true;
48198#endif
48199}
48200PRESERVE_NONE
48201static bool Interp_ShrUint16Sint8(InterpState &S) {
48202 if (!Shr<PT_Uint16, PT_Sint8>(S, S.PC)) return false;
48203#if USE_TAILCALLS
48204 MUSTTAIL return InterpNext(S);
48205#else
48206 return true;
48207#endif
48208}
48209PRESERVE_NONE
48210static bool Interp_ShrUint16Uint8(InterpState &S) {
48211 if (!Shr<PT_Uint16, PT_Uint8>(S, S.PC)) return false;
48212#if USE_TAILCALLS
48213 MUSTTAIL return InterpNext(S);
48214#else
48215 return true;
48216#endif
48217}
48218PRESERVE_NONE
48219static bool Interp_ShrUint16Sint16(InterpState &S) {
48220 if (!Shr<PT_Uint16, PT_Sint16>(S, S.PC)) return false;
48221#if USE_TAILCALLS
48222 MUSTTAIL return InterpNext(S);
48223#else
48224 return true;
48225#endif
48226}
48227PRESERVE_NONE
48228static bool Interp_ShrUint16Uint16(InterpState &S) {
48229 if (!Shr<PT_Uint16, PT_Uint16>(S, S.PC)) return false;
48230#if USE_TAILCALLS
48231 MUSTTAIL return InterpNext(S);
48232#else
48233 return true;
48234#endif
48235}
48236PRESERVE_NONE
48237static bool Interp_ShrUint16Sint32(InterpState &S) {
48238 if (!Shr<PT_Uint16, PT_Sint32>(S, S.PC)) return false;
48239#if USE_TAILCALLS
48240 MUSTTAIL return InterpNext(S);
48241#else
48242 return true;
48243#endif
48244}
48245PRESERVE_NONE
48246static bool Interp_ShrUint16Uint32(InterpState &S) {
48247 if (!Shr<PT_Uint16, PT_Uint32>(S, S.PC)) return false;
48248#if USE_TAILCALLS
48249 MUSTTAIL return InterpNext(S);
48250#else
48251 return true;
48252#endif
48253}
48254PRESERVE_NONE
48255static bool Interp_ShrUint16Sint64(InterpState &S) {
48256 if (!Shr<PT_Uint16, PT_Sint64>(S, S.PC)) return false;
48257#if USE_TAILCALLS
48258 MUSTTAIL return InterpNext(S);
48259#else
48260 return true;
48261#endif
48262}
48263PRESERVE_NONE
48264static bool Interp_ShrUint16Uint64(InterpState &S) {
48265 if (!Shr<PT_Uint16, PT_Uint64>(S, S.PC)) return false;
48266#if USE_TAILCALLS
48267 MUSTTAIL return InterpNext(S);
48268#else
48269 return true;
48270#endif
48271}
48272PRESERVE_NONE
48273static bool Interp_ShrUint16IntAP(InterpState &S) {
48274 if (!Shr<PT_Uint16, PT_IntAP>(S, S.PC)) return false;
48275#if USE_TAILCALLS
48276 MUSTTAIL return InterpNext(S);
48277#else
48278 return true;
48279#endif
48280}
48281PRESERVE_NONE
48282static bool Interp_ShrUint16IntAPS(InterpState &S) {
48283 if (!Shr<PT_Uint16, PT_IntAPS>(S, S.PC)) return false;
48284#if USE_TAILCALLS
48285 MUSTTAIL return InterpNext(S);
48286#else
48287 return true;
48288#endif
48289}
48290PRESERVE_NONE
48291static bool Interp_ShrSint32Sint8(InterpState &S) {
48292 if (!Shr<PT_Sint32, PT_Sint8>(S, S.PC)) return false;
48293#if USE_TAILCALLS
48294 MUSTTAIL return InterpNext(S);
48295#else
48296 return true;
48297#endif
48298}
48299PRESERVE_NONE
48300static bool Interp_ShrSint32Uint8(InterpState &S) {
48301 if (!Shr<PT_Sint32, PT_Uint8>(S, S.PC)) return false;
48302#if USE_TAILCALLS
48303 MUSTTAIL return InterpNext(S);
48304#else
48305 return true;
48306#endif
48307}
48308PRESERVE_NONE
48309static bool Interp_ShrSint32Sint16(InterpState &S) {
48310 if (!Shr<PT_Sint32, PT_Sint16>(S, S.PC)) return false;
48311#if USE_TAILCALLS
48312 MUSTTAIL return InterpNext(S);
48313#else
48314 return true;
48315#endif
48316}
48317PRESERVE_NONE
48318static bool Interp_ShrSint32Uint16(InterpState &S) {
48319 if (!Shr<PT_Sint32, PT_Uint16>(S, S.PC)) return false;
48320#if USE_TAILCALLS
48321 MUSTTAIL return InterpNext(S);
48322#else
48323 return true;
48324#endif
48325}
48326PRESERVE_NONE
48327static bool Interp_ShrSint32Sint32(InterpState &S) {
48328 if (!Shr<PT_Sint32, PT_Sint32>(S, S.PC)) return false;
48329#if USE_TAILCALLS
48330 MUSTTAIL return InterpNext(S);
48331#else
48332 return true;
48333#endif
48334}
48335PRESERVE_NONE
48336static bool Interp_ShrSint32Uint32(InterpState &S) {
48337 if (!Shr<PT_Sint32, PT_Uint32>(S, S.PC)) return false;
48338#if USE_TAILCALLS
48339 MUSTTAIL return InterpNext(S);
48340#else
48341 return true;
48342#endif
48343}
48344PRESERVE_NONE
48345static bool Interp_ShrSint32Sint64(InterpState &S) {
48346 if (!Shr<PT_Sint32, PT_Sint64>(S, S.PC)) return false;
48347#if USE_TAILCALLS
48348 MUSTTAIL return InterpNext(S);
48349#else
48350 return true;
48351#endif
48352}
48353PRESERVE_NONE
48354static bool Interp_ShrSint32Uint64(InterpState &S) {
48355 if (!Shr<PT_Sint32, PT_Uint64>(S, S.PC)) return false;
48356#if USE_TAILCALLS
48357 MUSTTAIL return InterpNext(S);
48358#else
48359 return true;
48360#endif
48361}
48362PRESERVE_NONE
48363static bool Interp_ShrSint32IntAP(InterpState &S) {
48364 if (!Shr<PT_Sint32, PT_IntAP>(S, S.PC)) return false;
48365#if USE_TAILCALLS
48366 MUSTTAIL return InterpNext(S);
48367#else
48368 return true;
48369#endif
48370}
48371PRESERVE_NONE
48372static bool Interp_ShrSint32IntAPS(InterpState &S) {
48373 if (!Shr<PT_Sint32, PT_IntAPS>(S, S.PC)) return false;
48374#if USE_TAILCALLS
48375 MUSTTAIL return InterpNext(S);
48376#else
48377 return true;
48378#endif
48379}
48380PRESERVE_NONE
48381static bool Interp_ShrUint32Sint8(InterpState &S) {
48382 if (!Shr<PT_Uint32, PT_Sint8>(S, S.PC)) return false;
48383#if USE_TAILCALLS
48384 MUSTTAIL return InterpNext(S);
48385#else
48386 return true;
48387#endif
48388}
48389PRESERVE_NONE
48390static bool Interp_ShrUint32Uint8(InterpState &S) {
48391 if (!Shr<PT_Uint32, PT_Uint8>(S, S.PC)) return false;
48392#if USE_TAILCALLS
48393 MUSTTAIL return InterpNext(S);
48394#else
48395 return true;
48396#endif
48397}
48398PRESERVE_NONE
48399static bool Interp_ShrUint32Sint16(InterpState &S) {
48400 if (!Shr<PT_Uint32, PT_Sint16>(S, S.PC)) return false;
48401#if USE_TAILCALLS
48402 MUSTTAIL return InterpNext(S);
48403#else
48404 return true;
48405#endif
48406}
48407PRESERVE_NONE
48408static bool Interp_ShrUint32Uint16(InterpState &S) {
48409 if (!Shr<PT_Uint32, PT_Uint16>(S, S.PC)) return false;
48410#if USE_TAILCALLS
48411 MUSTTAIL return InterpNext(S);
48412#else
48413 return true;
48414#endif
48415}
48416PRESERVE_NONE
48417static bool Interp_ShrUint32Sint32(InterpState &S) {
48418 if (!Shr<PT_Uint32, PT_Sint32>(S, S.PC)) return false;
48419#if USE_TAILCALLS
48420 MUSTTAIL return InterpNext(S);
48421#else
48422 return true;
48423#endif
48424}
48425PRESERVE_NONE
48426static bool Interp_ShrUint32Uint32(InterpState &S) {
48427 if (!Shr<PT_Uint32, PT_Uint32>(S, S.PC)) return false;
48428#if USE_TAILCALLS
48429 MUSTTAIL return InterpNext(S);
48430#else
48431 return true;
48432#endif
48433}
48434PRESERVE_NONE
48435static bool Interp_ShrUint32Sint64(InterpState &S) {
48436 if (!Shr<PT_Uint32, PT_Sint64>(S, S.PC)) return false;
48437#if USE_TAILCALLS
48438 MUSTTAIL return InterpNext(S);
48439#else
48440 return true;
48441#endif
48442}
48443PRESERVE_NONE
48444static bool Interp_ShrUint32Uint64(InterpState &S) {
48445 if (!Shr<PT_Uint32, PT_Uint64>(S, S.PC)) return false;
48446#if USE_TAILCALLS
48447 MUSTTAIL return InterpNext(S);
48448#else
48449 return true;
48450#endif
48451}
48452PRESERVE_NONE
48453static bool Interp_ShrUint32IntAP(InterpState &S) {
48454 if (!Shr<PT_Uint32, PT_IntAP>(S, S.PC)) return false;
48455#if USE_TAILCALLS
48456 MUSTTAIL return InterpNext(S);
48457#else
48458 return true;
48459#endif
48460}
48461PRESERVE_NONE
48462static bool Interp_ShrUint32IntAPS(InterpState &S) {
48463 if (!Shr<PT_Uint32, PT_IntAPS>(S, S.PC)) return false;
48464#if USE_TAILCALLS
48465 MUSTTAIL return InterpNext(S);
48466#else
48467 return true;
48468#endif
48469}
48470PRESERVE_NONE
48471static bool Interp_ShrSint64Sint8(InterpState &S) {
48472 if (!Shr<PT_Sint64, PT_Sint8>(S, S.PC)) return false;
48473#if USE_TAILCALLS
48474 MUSTTAIL return InterpNext(S);
48475#else
48476 return true;
48477#endif
48478}
48479PRESERVE_NONE
48480static bool Interp_ShrSint64Uint8(InterpState &S) {
48481 if (!Shr<PT_Sint64, PT_Uint8>(S, S.PC)) return false;
48482#if USE_TAILCALLS
48483 MUSTTAIL return InterpNext(S);
48484#else
48485 return true;
48486#endif
48487}
48488PRESERVE_NONE
48489static bool Interp_ShrSint64Sint16(InterpState &S) {
48490 if (!Shr<PT_Sint64, PT_Sint16>(S, S.PC)) return false;
48491#if USE_TAILCALLS
48492 MUSTTAIL return InterpNext(S);
48493#else
48494 return true;
48495#endif
48496}
48497PRESERVE_NONE
48498static bool Interp_ShrSint64Uint16(InterpState &S) {
48499 if (!Shr<PT_Sint64, PT_Uint16>(S, S.PC)) return false;
48500#if USE_TAILCALLS
48501 MUSTTAIL return InterpNext(S);
48502#else
48503 return true;
48504#endif
48505}
48506PRESERVE_NONE
48507static bool Interp_ShrSint64Sint32(InterpState &S) {
48508 if (!Shr<PT_Sint64, PT_Sint32>(S, S.PC)) return false;
48509#if USE_TAILCALLS
48510 MUSTTAIL return InterpNext(S);
48511#else
48512 return true;
48513#endif
48514}
48515PRESERVE_NONE
48516static bool Interp_ShrSint64Uint32(InterpState &S) {
48517 if (!Shr<PT_Sint64, PT_Uint32>(S, S.PC)) return false;
48518#if USE_TAILCALLS
48519 MUSTTAIL return InterpNext(S);
48520#else
48521 return true;
48522#endif
48523}
48524PRESERVE_NONE
48525static bool Interp_ShrSint64Sint64(InterpState &S) {
48526 if (!Shr<PT_Sint64, PT_Sint64>(S, S.PC)) return false;
48527#if USE_TAILCALLS
48528 MUSTTAIL return InterpNext(S);
48529#else
48530 return true;
48531#endif
48532}
48533PRESERVE_NONE
48534static bool Interp_ShrSint64Uint64(InterpState &S) {
48535 if (!Shr<PT_Sint64, PT_Uint64>(S, S.PC)) return false;
48536#if USE_TAILCALLS
48537 MUSTTAIL return InterpNext(S);
48538#else
48539 return true;
48540#endif
48541}
48542PRESERVE_NONE
48543static bool Interp_ShrSint64IntAP(InterpState &S) {
48544 if (!Shr<PT_Sint64, PT_IntAP>(S, S.PC)) return false;
48545#if USE_TAILCALLS
48546 MUSTTAIL return InterpNext(S);
48547#else
48548 return true;
48549#endif
48550}
48551PRESERVE_NONE
48552static bool Interp_ShrSint64IntAPS(InterpState &S) {
48553 if (!Shr<PT_Sint64, PT_IntAPS>(S, S.PC)) return false;
48554#if USE_TAILCALLS
48555 MUSTTAIL return InterpNext(S);
48556#else
48557 return true;
48558#endif
48559}
48560PRESERVE_NONE
48561static bool Interp_ShrUint64Sint8(InterpState &S) {
48562 if (!Shr<PT_Uint64, PT_Sint8>(S, S.PC)) return false;
48563#if USE_TAILCALLS
48564 MUSTTAIL return InterpNext(S);
48565#else
48566 return true;
48567#endif
48568}
48569PRESERVE_NONE
48570static bool Interp_ShrUint64Uint8(InterpState &S) {
48571 if (!Shr<PT_Uint64, PT_Uint8>(S, S.PC)) return false;
48572#if USE_TAILCALLS
48573 MUSTTAIL return InterpNext(S);
48574#else
48575 return true;
48576#endif
48577}
48578PRESERVE_NONE
48579static bool Interp_ShrUint64Sint16(InterpState &S) {
48580 if (!Shr<PT_Uint64, PT_Sint16>(S, S.PC)) return false;
48581#if USE_TAILCALLS
48582 MUSTTAIL return InterpNext(S);
48583#else
48584 return true;
48585#endif
48586}
48587PRESERVE_NONE
48588static bool Interp_ShrUint64Uint16(InterpState &S) {
48589 if (!Shr<PT_Uint64, PT_Uint16>(S, S.PC)) return false;
48590#if USE_TAILCALLS
48591 MUSTTAIL return InterpNext(S);
48592#else
48593 return true;
48594#endif
48595}
48596PRESERVE_NONE
48597static bool Interp_ShrUint64Sint32(InterpState &S) {
48598 if (!Shr<PT_Uint64, PT_Sint32>(S, S.PC)) return false;
48599#if USE_TAILCALLS
48600 MUSTTAIL return InterpNext(S);
48601#else
48602 return true;
48603#endif
48604}
48605PRESERVE_NONE
48606static bool Interp_ShrUint64Uint32(InterpState &S) {
48607 if (!Shr<PT_Uint64, PT_Uint32>(S, S.PC)) return false;
48608#if USE_TAILCALLS
48609 MUSTTAIL return InterpNext(S);
48610#else
48611 return true;
48612#endif
48613}
48614PRESERVE_NONE
48615static bool Interp_ShrUint64Sint64(InterpState &S) {
48616 if (!Shr<PT_Uint64, PT_Sint64>(S, S.PC)) return false;
48617#if USE_TAILCALLS
48618 MUSTTAIL return InterpNext(S);
48619#else
48620 return true;
48621#endif
48622}
48623PRESERVE_NONE
48624static bool Interp_ShrUint64Uint64(InterpState &S) {
48625 if (!Shr<PT_Uint64, PT_Uint64>(S, S.PC)) return false;
48626#if USE_TAILCALLS
48627 MUSTTAIL return InterpNext(S);
48628#else
48629 return true;
48630#endif
48631}
48632PRESERVE_NONE
48633static bool Interp_ShrUint64IntAP(InterpState &S) {
48634 if (!Shr<PT_Uint64, PT_IntAP>(S, S.PC)) return false;
48635#if USE_TAILCALLS
48636 MUSTTAIL return InterpNext(S);
48637#else
48638 return true;
48639#endif
48640}
48641PRESERVE_NONE
48642static bool Interp_ShrUint64IntAPS(InterpState &S) {
48643 if (!Shr<PT_Uint64, PT_IntAPS>(S, S.PC)) return false;
48644#if USE_TAILCALLS
48645 MUSTTAIL return InterpNext(S);
48646#else
48647 return true;
48648#endif
48649}
48650PRESERVE_NONE
48651static bool Interp_ShrIntAPSint8(InterpState &S) {
48652 if (!Shr<PT_IntAP, PT_Sint8>(S, S.PC)) return false;
48653#if USE_TAILCALLS
48654 MUSTTAIL return InterpNext(S);
48655#else
48656 return true;
48657#endif
48658}
48659PRESERVE_NONE
48660static bool Interp_ShrIntAPUint8(InterpState &S) {
48661 if (!Shr<PT_IntAP, PT_Uint8>(S, S.PC)) return false;
48662#if USE_TAILCALLS
48663 MUSTTAIL return InterpNext(S);
48664#else
48665 return true;
48666#endif
48667}
48668PRESERVE_NONE
48669static bool Interp_ShrIntAPSint16(InterpState &S) {
48670 if (!Shr<PT_IntAP, PT_Sint16>(S, S.PC)) return false;
48671#if USE_TAILCALLS
48672 MUSTTAIL return InterpNext(S);
48673#else
48674 return true;
48675#endif
48676}
48677PRESERVE_NONE
48678static bool Interp_ShrIntAPUint16(InterpState &S) {
48679 if (!Shr<PT_IntAP, PT_Uint16>(S, S.PC)) return false;
48680#if USE_TAILCALLS
48681 MUSTTAIL return InterpNext(S);
48682#else
48683 return true;
48684#endif
48685}
48686PRESERVE_NONE
48687static bool Interp_ShrIntAPSint32(InterpState &S) {
48688 if (!Shr<PT_IntAP, PT_Sint32>(S, S.PC)) return false;
48689#if USE_TAILCALLS
48690 MUSTTAIL return InterpNext(S);
48691#else
48692 return true;
48693#endif
48694}
48695PRESERVE_NONE
48696static bool Interp_ShrIntAPUint32(InterpState &S) {
48697 if (!Shr<PT_IntAP, PT_Uint32>(S, S.PC)) return false;
48698#if USE_TAILCALLS
48699 MUSTTAIL return InterpNext(S);
48700#else
48701 return true;
48702#endif
48703}
48704PRESERVE_NONE
48705static bool Interp_ShrIntAPSint64(InterpState &S) {
48706 if (!Shr<PT_IntAP, PT_Sint64>(S, S.PC)) return false;
48707#if USE_TAILCALLS
48708 MUSTTAIL return InterpNext(S);
48709#else
48710 return true;
48711#endif
48712}
48713PRESERVE_NONE
48714static bool Interp_ShrIntAPUint64(InterpState &S) {
48715 if (!Shr<PT_IntAP, PT_Uint64>(S, S.PC)) return false;
48716#if USE_TAILCALLS
48717 MUSTTAIL return InterpNext(S);
48718#else
48719 return true;
48720#endif
48721}
48722PRESERVE_NONE
48723static bool Interp_ShrIntAPIntAP(InterpState &S) {
48724 if (!Shr<PT_IntAP, PT_IntAP>(S, S.PC)) return false;
48725#if USE_TAILCALLS
48726 MUSTTAIL return InterpNext(S);
48727#else
48728 return true;
48729#endif
48730}
48731PRESERVE_NONE
48732static bool Interp_ShrIntAPIntAPS(InterpState &S) {
48733 if (!Shr<PT_IntAP, PT_IntAPS>(S, S.PC)) return false;
48734#if USE_TAILCALLS
48735 MUSTTAIL return InterpNext(S);
48736#else
48737 return true;
48738#endif
48739}
48740PRESERVE_NONE
48741static bool Interp_ShrIntAPSSint8(InterpState &S) {
48742 if (!Shr<PT_IntAPS, PT_Sint8>(S, S.PC)) return false;
48743#if USE_TAILCALLS
48744 MUSTTAIL return InterpNext(S);
48745#else
48746 return true;
48747#endif
48748}
48749PRESERVE_NONE
48750static bool Interp_ShrIntAPSUint8(InterpState &S) {
48751 if (!Shr<PT_IntAPS, PT_Uint8>(S, S.PC)) return false;
48752#if USE_TAILCALLS
48753 MUSTTAIL return InterpNext(S);
48754#else
48755 return true;
48756#endif
48757}
48758PRESERVE_NONE
48759static bool Interp_ShrIntAPSSint16(InterpState &S) {
48760 if (!Shr<PT_IntAPS, PT_Sint16>(S, S.PC)) return false;
48761#if USE_TAILCALLS
48762 MUSTTAIL return InterpNext(S);
48763#else
48764 return true;
48765#endif
48766}
48767PRESERVE_NONE
48768static bool Interp_ShrIntAPSUint16(InterpState &S) {
48769 if (!Shr<PT_IntAPS, PT_Uint16>(S, S.PC)) return false;
48770#if USE_TAILCALLS
48771 MUSTTAIL return InterpNext(S);
48772#else
48773 return true;
48774#endif
48775}
48776PRESERVE_NONE
48777static bool Interp_ShrIntAPSSint32(InterpState &S) {
48778 if (!Shr<PT_IntAPS, PT_Sint32>(S, S.PC)) return false;
48779#if USE_TAILCALLS
48780 MUSTTAIL return InterpNext(S);
48781#else
48782 return true;
48783#endif
48784}
48785PRESERVE_NONE
48786static bool Interp_ShrIntAPSUint32(InterpState &S) {
48787 if (!Shr<PT_IntAPS, PT_Uint32>(S, S.PC)) return false;
48788#if USE_TAILCALLS
48789 MUSTTAIL return InterpNext(S);
48790#else
48791 return true;
48792#endif
48793}
48794PRESERVE_NONE
48795static bool Interp_ShrIntAPSSint64(InterpState &S) {
48796 if (!Shr<PT_IntAPS, PT_Sint64>(S, S.PC)) return false;
48797#if USE_TAILCALLS
48798 MUSTTAIL return InterpNext(S);
48799#else
48800 return true;
48801#endif
48802}
48803PRESERVE_NONE
48804static bool Interp_ShrIntAPSUint64(InterpState &S) {
48805 if (!Shr<PT_IntAPS, PT_Uint64>(S, S.PC)) return false;
48806#if USE_TAILCALLS
48807 MUSTTAIL return InterpNext(S);
48808#else
48809 return true;
48810#endif
48811}
48812PRESERVE_NONE
48813static bool Interp_ShrIntAPSIntAP(InterpState &S) {
48814 if (!Shr<PT_IntAPS, PT_IntAP>(S, S.PC)) return false;
48815#if USE_TAILCALLS
48816 MUSTTAIL return InterpNext(S);
48817#else
48818 return true;
48819#endif
48820}
48821PRESERVE_NONE
48822static bool Interp_ShrIntAPSIntAPS(InterpState &S) {
48823 if (!Shr<PT_IntAPS, PT_IntAPS>(S, S.PC)) return false;
48824#if USE_TAILCALLS
48825 MUSTTAIL return InterpNext(S);
48826#else
48827 return true;
48828#endif
48829}
48830#endif
48831#ifdef GET_DISASM
48832case OP_ShrSint8Sint8:
48833 Text.Op = PrintName("ShrSint8Sint8");
48834 break;
48835case OP_ShrSint8Uint8:
48836 Text.Op = PrintName("ShrSint8Uint8");
48837 break;
48838case OP_ShrSint8Sint16:
48839 Text.Op = PrintName("ShrSint8Sint16");
48840 break;
48841case OP_ShrSint8Uint16:
48842 Text.Op = PrintName("ShrSint8Uint16");
48843 break;
48844case OP_ShrSint8Sint32:
48845 Text.Op = PrintName("ShrSint8Sint32");
48846 break;
48847case OP_ShrSint8Uint32:
48848 Text.Op = PrintName("ShrSint8Uint32");
48849 break;
48850case OP_ShrSint8Sint64:
48851 Text.Op = PrintName("ShrSint8Sint64");
48852 break;
48853case OP_ShrSint8Uint64:
48854 Text.Op = PrintName("ShrSint8Uint64");
48855 break;
48856case OP_ShrSint8IntAP:
48857 Text.Op = PrintName("ShrSint8IntAP");
48858 break;
48859case OP_ShrSint8IntAPS:
48860 Text.Op = PrintName("ShrSint8IntAPS");
48861 break;
48862case OP_ShrUint8Sint8:
48863 Text.Op = PrintName("ShrUint8Sint8");
48864 break;
48865case OP_ShrUint8Uint8:
48866 Text.Op = PrintName("ShrUint8Uint8");
48867 break;
48868case OP_ShrUint8Sint16:
48869 Text.Op = PrintName("ShrUint8Sint16");
48870 break;
48871case OP_ShrUint8Uint16:
48872 Text.Op = PrintName("ShrUint8Uint16");
48873 break;
48874case OP_ShrUint8Sint32:
48875 Text.Op = PrintName("ShrUint8Sint32");
48876 break;
48877case OP_ShrUint8Uint32:
48878 Text.Op = PrintName("ShrUint8Uint32");
48879 break;
48880case OP_ShrUint8Sint64:
48881 Text.Op = PrintName("ShrUint8Sint64");
48882 break;
48883case OP_ShrUint8Uint64:
48884 Text.Op = PrintName("ShrUint8Uint64");
48885 break;
48886case OP_ShrUint8IntAP:
48887 Text.Op = PrintName("ShrUint8IntAP");
48888 break;
48889case OP_ShrUint8IntAPS:
48890 Text.Op = PrintName("ShrUint8IntAPS");
48891 break;
48892case OP_ShrSint16Sint8:
48893 Text.Op = PrintName("ShrSint16Sint8");
48894 break;
48895case OP_ShrSint16Uint8:
48896 Text.Op = PrintName("ShrSint16Uint8");
48897 break;
48898case OP_ShrSint16Sint16:
48899 Text.Op = PrintName("ShrSint16Sint16");
48900 break;
48901case OP_ShrSint16Uint16:
48902 Text.Op = PrintName("ShrSint16Uint16");
48903 break;
48904case OP_ShrSint16Sint32:
48905 Text.Op = PrintName("ShrSint16Sint32");
48906 break;
48907case OP_ShrSint16Uint32:
48908 Text.Op = PrintName("ShrSint16Uint32");
48909 break;
48910case OP_ShrSint16Sint64:
48911 Text.Op = PrintName("ShrSint16Sint64");
48912 break;
48913case OP_ShrSint16Uint64:
48914 Text.Op = PrintName("ShrSint16Uint64");
48915 break;
48916case OP_ShrSint16IntAP:
48917 Text.Op = PrintName("ShrSint16IntAP");
48918 break;
48919case OP_ShrSint16IntAPS:
48920 Text.Op = PrintName("ShrSint16IntAPS");
48921 break;
48922case OP_ShrUint16Sint8:
48923 Text.Op = PrintName("ShrUint16Sint8");
48924 break;
48925case OP_ShrUint16Uint8:
48926 Text.Op = PrintName("ShrUint16Uint8");
48927 break;
48928case OP_ShrUint16Sint16:
48929 Text.Op = PrintName("ShrUint16Sint16");
48930 break;
48931case OP_ShrUint16Uint16:
48932 Text.Op = PrintName("ShrUint16Uint16");
48933 break;
48934case OP_ShrUint16Sint32:
48935 Text.Op = PrintName("ShrUint16Sint32");
48936 break;
48937case OP_ShrUint16Uint32:
48938 Text.Op = PrintName("ShrUint16Uint32");
48939 break;
48940case OP_ShrUint16Sint64:
48941 Text.Op = PrintName("ShrUint16Sint64");
48942 break;
48943case OP_ShrUint16Uint64:
48944 Text.Op = PrintName("ShrUint16Uint64");
48945 break;
48946case OP_ShrUint16IntAP:
48947 Text.Op = PrintName("ShrUint16IntAP");
48948 break;
48949case OP_ShrUint16IntAPS:
48950 Text.Op = PrintName("ShrUint16IntAPS");
48951 break;
48952case OP_ShrSint32Sint8:
48953 Text.Op = PrintName("ShrSint32Sint8");
48954 break;
48955case OP_ShrSint32Uint8:
48956 Text.Op = PrintName("ShrSint32Uint8");
48957 break;
48958case OP_ShrSint32Sint16:
48959 Text.Op = PrintName("ShrSint32Sint16");
48960 break;
48961case OP_ShrSint32Uint16:
48962 Text.Op = PrintName("ShrSint32Uint16");
48963 break;
48964case OP_ShrSint32Sint32:
48965 Text.Op = PrintName("ShrSint32Sint32");
48966 break;
48967case OP_ShrSint32Uint32:
48968 Text.Op = PrintName("ShrSint32Uint32");
48969 break;
48970case OP_ShrSint32Sint64:
48971 Text.Op = PrintName("ShrSint32Sint64");
48972 break;
48973case OP_ShrSint32Uint64:
48974 Text.Op = PrintName("ShrSint32Uint64");
48975 break;
48976case OP_ShrSint32IntAP:
48977 Text.Op = PrintName("ShrSint32IntAP");
48978 break;
48979case OP_ShrSint32IntAPS:
48980 Text.Op = PrintName("ShrSint32IntAPS");
48981 break;
48982case OP_ShrUint32Sint8:
48983 Text.Op = PrintName("ShrUint32Sint8");
48984 break;
48985case OP_ShrUint32Uint8:
48986 Text.Op = PrintName("ShrUint32Uint8");
48987 break;
48988case OP_ShrUint32Sint16:
48989 Text.Op = PrintName("ShrUint32Sint16");
48990 break;
48991case OP_ShrUint32Uint16:
48992 Text.Op = PrintName("ShrUint32Uint16");
48993 break;
48994case OP_ShrUint32Sint32:
48995 Text.Op = PrintName("ShrUint32Sint32");
48996 break;
48997case OP_ShrUint32Uint32:
48998 Text.Op = PrintName("ShrUint32Uint32");
48999 break;
49000case OP_ShrUint32Sint64:
49001 Text.Op = PrintName("ShrUint32Sint64");
49002 break;
49003case OP_ShrUint32Uint64:
49004 Text.Op = PrintName("ShrUint32Uint64");
49005 break;
49006case OP_ShrUint32IntAP:
49007 Text.Op = PrintName("ShrUint32IntAP");
49008 break;
49009case OP_ShrUint32IntAPS:
49010 Text.Op = PrintName("ShrUint32IntAPS");
49011 break;
49012case OP_ShrSint64Sint8:
49013 Text.Op = PrintName("ShrSint64Sint8");
49014 break;
49015case OP_ShrSint64Uint8:
49016 Text.Op = PrintName("ShrSint64Uint8");
49017 break;
49018case OP_ShrSint64Sint16:
49019 Text.Op = PrintName("ShrSint64Sint16");
49020 break;
49021case OP_ShrSint64Uint16:
49022 Text.Op = PrintName("ShrSint64Uint16");
49023 break;
49024case OP_ShrSint64Sint32:
49025 Text.Op = PrintName("ShrSint64Sint32");
49026 break;
49027case OP_ShrSint64Uint32:
49028 Text.Op = PrintName("ShrSint64Uint32");
49029 break;
49030case OP_ShrSint64Sint64:
49031 Text.Op = PrintName("ShrSint64Sint64");
49032 break;
49033case OP_ShrSint64Uint64:
49034 Text.Op = PrintName("ShrSint64Uint64");
49035 break;
49036case OP_ShrSint64IntAP:
49037 Text.Op = PrintName("ShrSint64IntAP");
49038 break;
49039case OP_ShrSint64IntAPS:
49040 Text.Op = PrintName("ShrSint64IntAPS");
49041 break;
49042case OP_ShrUint64Sint8:
49043 Text.Op = PrintName("ShrUint64Sint8");
49044 break;
49045case OP_ShrUint64Uint8:
49046 Text.Op = PrintName("ShrUint64Uint8");
49047 break;
49048case OP_ShrUint64Sint16:
49049 Text.Op = PrintName("ShrUint64Sint16");
49050 break;
49051case OP_ShrUint64Uint16:
49052 Text.Op = PrintName("ShrUint64Uint16");
49053 break;
49054case OP_ShrUint64Sint32:
49055 Text.Op = PrintName("ShrUint64Sint32");
49056 break;
49057case OP_ShrUint64Uint32:
49058 Text.Op = PrintName("ShrUint64Uint32");
49059 break;
49060case OP_ShrUint64Sint64:
49061 Text.Op = PrintName("ShrUint64Sint64");
49062 break;
49063case OP_ShrUint64Uint64:
49064 Text.Op = PrintName("ShrUint64Uint64");
49065 break;
49066case OP_ShrUint64IntAP:
49067 Text.Op = PrintName("ShrUint64IntAP");
49068 break;
49069case OP_ShrUint64IntAPS:
49070 Text.Op = PrintName("ShrUint64IntAPS");
49071 break;
49072case OP_ShrIntAPSint8:
49073 Text.Op = PrintName("ShrIntAPSint8");
49074 break;
49075case OP_ShrIntAPUint8:
49076 Text.Op = PrintName("ShrIntAPUint8");
49077 break;
49078case OP_ShrIntAPSint16:
49079 Text.Op = PrintName("ShrIntAPSint16");
49080 break;
49081case OP_ShrIntAPUint16:
49082 Text.Op = PrintName("ShrIntAPUint16");
49083 break;
49084case OP_ShrIntAPSint32:
49085 Text.Op = PrintName("ShrIntAPSint32");
49086 break;
49087case OP_ShrIntAPUint32:
49088 Text.Op = PrintName("ShrIntAPUint32");
49089 break;
49090case OP_ShrIntAPSint64:
49091 Text.Op = PrintName("ShrIntAPSint64");
49092 break;
49093case OP_ShrIntAPUint64:
49094 Text.Op = PrintName("ShrIntAPUint64");
49095 break;
49096case OP_ShrIntAPIntAP:
49097 Text.Op = PrintName("ShrIntAPIntAP");
49098 break;
49099case OP_ShrIntAPIntAPS:
49100 Text.Op = PrintName("ShrIntAPIntAPS");
49101 break;
49102case OP_ShrIntAPSSint8:
49103 Text.Op = PrintName("ShrIntAPSSint8");
49104 break;
49105case OP_ShrIntAPSUint8:
49106 Text.Op = PrintName("ShrIntAPSUint8");
49107 break;
49108case OP_ShrIntAPSSint16:
49109 Text.Op = PrintName("ShrIntAPSSint16");
49110 break;
49111case OP_ShrIntAPSUint16:
49112 Text.Op = PrintName("ShrIntAPSUint16");
49113 break;
49114case OP_ShrIntAPSSint32:
49115 Text.Op = PrintName("ShrIntAPSSint32");
49116 break;
49117case OP_ShrIntAPSUint32:
49118 Text.Op = PrintName("ShrIntAPSUint32");
49119 break;
49120case OP_ShrIntAPSSint64:
49121 Text.Op = PrintName("ShrIntAPSSint64");
49122 break;
49123case OP_ShrIntAPSUint64:
49124 Text.Op = PrintName("ShrIntAPSUint64");
49125 break;
49126case OP_ShrIntAPSIntAP:
49127 Text.Op = PrintName("ShrIntAPSIntAP");
49128 break;
49129case OP_ShrIntAPSIntAPS:
49130 Text.Op = PrintName("ShrIntAPSIntAPS");
49131 break;
49132#endif
49133#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
49134bool emitShrSint8Sint8(SourceInfo);
49135bool emitShrSint8Uint8(SourceInfo);
49136bool emitShrSint8Sint16(SourceInfo);
49137bool emitShrSint8Uint16(SourceInfo);
49138bool emitShrSint8Sint32(SourceInfo);
49139bool emitShrSint8Uint32(SourceInfo);
49140bool emitShrSint8Sint64(SourceInfo);
49141bool emitShrSint8Uint64(SourceInfo);
49142bool emitShrSint8IntAP(SourceInfo);
49143bool emitShrSint8IntAPS(SourceInfo);
49144bool emitShrUint8Sint8(SourceInfo);
49145bool emitShrUint8Uint8(SourceInfo);
49146bool emitShrUint8Sint16(SourceInfo);
49147bool emitShrUint8Uint16(SourceInfo);
49148bool emitShrUint8Sint32(SourceInfo);
49149bool emitShrUint8Uint32(SourceInfo);
49150bool emitShrUint8Sint64(SourceInfo);
49151bool emitShrUint8Uint64(SourceInfo);
49152bool emitShrUint8IntAP(SourceInfo);
49153bool emitShrUint8IntAPS(SourceInfo);
49154bool emitShrSint16Sint8(SourceInfo);
49155bool emitShrSint16Uint8(SourceInfo);
49156bool emitShrSint16Sint16(SourceInfo);
49157bool emitShrSint16Uint16(SourceInfo);
49158bool emitShrSint16Sint32(SourceInfo);
49159bool emitShrSint16Uint32(SourceInfo);
49160bool emitShrSint16Sint64(SourceInfo);
49161bool emitShrSint16Uint64(SourceInfo);
49162bool emitShrSint16IntAP(SourceInfo);
49163bool emitShrSint16IntAPS(SourceInfo);
49164bool emitShrUint16Sint8(SourceInfo);
49165bool emitShrUint16Uint8(SourceInfo);
49166bool emitShrUint16Sint16(SourceInfo);
49167bool emitShrUint16Uint16(SourceInfo);
49168bool emitShrUint16Sint32(SourceInfo);
49169bool emitShrUint16Uint32(SourceInfo);
49170bool emitShrUint16Sint64(SourceInfo);
49171bool emitShrUint16Uint64(SourceInfo);
49172bool emitShrUint16IntAP(SourceInfo);
49173bool emitShrUint16IntAPS(SourceInfo);
49174bool emitShrSint32Sint8(SourceInfo);
49175bool emitShrSint32Uint8(SourceInfo);
49176bool emitShrSint32Sint16(SourceInfo);
49177bool emitShrSint32Uint16(SourceInfo);
49178bool emitShrSint32Sint32(SourceInfo);
49179bool emitShrSint32Uint32(SourceInfo);
49180bool emitShrSint32Sint64(SourceInfo);
49181bool emitShrSint32Uint64(SourceInfo);
49182bool emitShrSint32IntAP(SourceInfo);
49183bool emitShrSint32IntAPS(SourceInfo);
49184bool emitShrUint32Sint8(SourceInfo);
49185bool emitShrUint32Uint8(SourceInfo);
49186bool emitShrUint32Sint16(SourceInfo);
49187bool emitShrUint32Uint16(SourceInfo);
49188bool emitShrUint32Sint32(SourceInfo);
49189bool emitShrUint32Uint32(SourceInfo);
49190bool emitShrUint32Sint64(SourceInfo);
49191bool emitShrUint32Uint64(SourceInfo);
49192bool emitShrUint32IntAP(SourceInfo);
49193bool emitShrUint32IntAPS(SourceInfo);
49194bool emitShrSint64Sint8(SourceInfo);
49195bool emitShrSint64Uint8(SourceInfo);
49196bool emitShrSint64Sint16(SourceInfo);
49197bool emitShrSint64Uint16(SourceInfo);
49198bool emitShrSint64Sint32(SourceInfo);
49199bool emitShrSint64Uint32(SourceInfo);
49200bool emitShrSint64Sint64(SourceInfo);
49201bool emitShrSint64Uint64(SourceInfo);
49202bool emitShrSint64IntAP(SourceInfo);
49203bool emitShrSint64IntAPS(SourceInfo);
49204bool emitShrUint64Sint8(SourceInfo);
49205bool emitShrUint64Uint8(SourceInfo);
49206bool emitShrUint64Sint16(SourceInfo);
49207bool emitShrUint64Uint16(SourceInfo);
49208bool emitShrUint64Sint32(SourceInfo);
49209bool emitShrUint64Uint32(SourceInfo);
49210bool emitShrUint64Sint64(SourceInfo);
49211bool emitShrUint64Uint64(SourceInfo);
49212bool emitShrUint64IntAP(SourceInfo);
49213bool emitShrUint64IntAPS(SourceInfo);
49214bool emitShrIntAPSint8(SourceInfo);
49215bool emitShrIntAPUint8(SourceInfo);
49216bool emitShrIntAPSint16(SourceInfo);
49217bool emitShrIntAPUint16(SourceInfo);
49218bool emitShrIntAPSint32(SourceInfo);
49219bool emitShrIntAPUint32(SourceInfo);
49220bool emitShrIntAPSint64(SourceInfo);
49221bool emitShrIntAPUint64(SourceInfo);
49222bool emitShrIntAPIntAP(SourceInfo);
49223bool emitShrIntAPIntAPS(SourceInfo);
49224bool emitShrIntAPSSint8(SourceInfo);
49225bool emitShrIntAPSUint8(SourceInfo);
49226bool emitShrIntAPSSint16(SourceInfo);
49227bool emitShrIntAPSUint16(SourceInfo);
49228bool emitShrIntAPSSint32(SourceInfo);
49229bool emitShrIntAPSUint32(SourceInfo);
49230bool emitShrIntAPSSint64(SourceInfo);
49231bool emitShrIntAPSUint64(SourceInfo);
49232bool emitShrIntAPSIntAP(SourceInfo);
49233bool emitShrIntAPSIntAPS(SourceInfo);
49234#endif
49235#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
49236[[nodiscard]] bool emitShr(PrimType, PrimType, SourceInfo I);
49237#endif
49238#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
49239bool
49240#if defined(GET_EVAL_IMPL)
49241EvalEmitter
49242#else
49243ByteCodeEmitter
49244#endif
49245::emitShr(PrimType T0, PrimType T1, SourceInfo I) {
49246 switch (T0) {
49247 case PT_Sint8:
49248 switch (T1) {
49249 case PT_Sint8:
49250 return emitShrSint8Sint8(I);
49251 case PT_Uint8:
49252 return emitShrSint8Uint8(I);
49253 case PT_Sint16:
49254 return emitShrSint8Sint16(I);
49255 case PT_Uint16:
49256 return emitShrSint8Uint16(I);
49257 case PT_Sint32:
49258 return emitShrSint8Sint32(I);
49259 case PT_Uint32:
49260 return emitShrSint8Uint32(I);
49261 case PT_Sint64:
49262 return emitShrSint8Sint64(I);
49263 case PT_Uint64:
49264 return emitShrSint8Uint64(I);
49265 case PT_IntAP:
49266 return emitShrSint8IntAP(I);
49267 case PT_IntAPS:
49268 return emitShrSint8IntAPS(I);
49269 default: llvm_unreachable("invalid type: emitShr");
49270 }
49271 llvm_unreachable("invalid enum value");
49272 case PT_Uint8:
49273 switch (T1) {
49274 case PT_Sint8:
49275 return emitShrUint8Sint8(I);
49276 case PT_Uint8:
49277 return emitShrUint8Uint8(I);
49278 case PT_Sint16:
49279 return emitShrUint8Sint16(I);
49280 case PT_Uint16:
49281 return emitShrUint8Uint16(I);
49282 case PT_Sint32:
49283 return emitShrUint8Sint32(I);
49284 case PT_Uint32:
49285 return emitShrUint8Uint32(I);
49286 case PT_Sint64:
49287 return emitShrUint8Sint64(I);
49288 case PT_Uint64:
49289 return emitShrUint8Uint64(I);
49290 case PT_IntAP:
49291 return emitShrUint8IntAP(I);
49292 case PT_IntAPS:
49293 return emitShrUint8IntAPS(I);
49294 default: llvm_unreachable("invalid type: emitShr");
49295 }
49296 llvm_unreachable("invalid enum value");
49297 case PT_Sint16:
49298 switch (T1) {
49299 case PT_Sint8:
49300 return emitShrSint16Sint8(I);
49301 case PT_Uint8:
49302 return emitShrSint16Uint8(I);
49303 case PT_Sint16:
49304 return emitShrSint16Sint16(I);
49305 case PT_Uint16:
49306 return emitShrSint16Uint16(I);
49307 case PT_Sint32:
49308 return emitShrSint16Sint32(I);
49309 case PT_Uint32:
49310 return emitShrSint16Uint32(I);
49311 case PT_Sint64:
49312 return emitShrSint16Sint64(I);
49313 case PT_Uint64:
49314 return emitShrSint16Uint64(I);
49315 case PT_IntAP:
49316 return emitShrSint16IntAP(I);
49317 case PT_IntAPS:
49318 return emitShrSint16IntAPS(I);
49319 default: llvm_unreachable("invalid type: emitShr");
49320 }
49321 llvm_unreachable("invalid enum value");
49322 case PT_Uint16:
49323 switch (T1) {
49324 case PT_Sint8:
49325 return emitShrUint16Sint8(I);
49326 case PT_Uint8:
49327 return emitShrUint16Uint8(I);
49328 case PT_Sint16:
49329 return emitShrUint16Sint16(I);
49330 case PT_Uint16:
49331 return emitShrUint16Uint16(I);
49332 case PT_Sint32:
49333 return emitShrUint16Sint32(I);
49334 case PT_Uint32:
49335 return emitShrUint16Uint32(I);
49336 case PT_Sint64:
49337 return emitShrUint16Sint64(I);
49338 case PT_Uint64:
49339 return emitShrUint16Uint64(I);
49340 case PT_IntAP:
49341 return emitShrUint16IntAP(I);
49342 case PT_IntAPS:
49343 return emitShrUint16IntAPS(I);
49344 default: llvm_unreachable("invalid type: emitShr");
49345 }
49346 llvm_unreachable("invalid enum value");
49347 case PT_Sint32:
49348 switch (T1) {
49349 case PT_Sint8:
49350 return emitShrSint32Sint8(I);
49351 case PT_Uint8:
49352 return emitShrSint32Uint8(I);
49353 case PT_Sint16:
49354 return emitShrSint32Sint16(I);
49355 case PT_Uint16:
49356 return emitShrSint32Uint16(I);
49357 case PT_Sint32:
49358 return emitShrSint32Sint32(I);
49359 case PT_Uint32:
49360 return emitShrSint32Uint32(I);
49361 case PT_Sint64:
49362 return emitShrSint32Sint64(I);
49363 case PT_Uint64:
49364 return emitShrSint32Uint64(I);
49365 case PT_IntAP:
49366 return emitShrSint32IntAP(I);
49367 case PT_IntAPS:
49368 return emitShrSint32IntAPS(I);
49369 default: llvm_unreachable("invalid type: emitShr");
49370 }
49371 llvm_unreachable("invalid enum value");
49372 case PT_Uint32:
49373 switch (T1) {
49374 case PT_Sint8:
49375 return emitShrUint32Sint8(I);
49376 case PT_Uint8:
49377 return emitShrUint32Uint8(I);
49378 case PT_Sint16:
49379 return emitShrUint32Sint16(I);
49380 case PT_Uint16:
49381 return emitShrUint32Uint16(I);
49382 case PT_Sint32:
49383 return emitShrUint32Sint32(I);
49384 case PT_Uint32:
49385 return emitShrUint32Uint32(I);
49386 case PT_Sint64:
49387 return emitShrUint32Sint64(I);
49388 case PT_Uint64:
49389 return emitShrUint32Uint64(I);
49390 case PT_IntAP:
49391 return emitShrUint32IntAP(I);
49392 case PT_IntAPS:
49393 return emitShrUint32IntAPS(I);
49394 default: llvm_unreachable("invalid type: emitShr");
49395 }
49396 llvm_unreachable("invalid enum value");
49397 case PT_Sint64:
49398 switch (T1) {
49399 case PT_Sint8:
49400 return emitShrSint64Sint8(I);
49401 case PT_Uint8:
49402 return emitShrSint64Uint8(I);
49403 case PT_Sint16:
49404 return emitShrSint64Sint16(I);
49405 case PT_Uint16:
49406 return emitShrSint64Uint16(I);
49407 case PT_Sint32:
49408 return emitShrSint64Sint32(I);
49409 case PT_Uint32:
49410 return emitShrSint64Uint32(I);
49411 case PT_Sint64:
49412 return emitShrSint64Sint64(I);
49413 case PT_Uint64:
49414 return emitShrSint64Uint64(I);
49415 case PT_IntAP:
49416 return emitShrSint64IntAP(I);
49417 case PT_IntAPS:
49418 return emitShrSint64IntAPS(I);
49419 default: llvm_unreachable("invalid type: emitShr");
49420 }
49421 llvm_unreachable("invalid enum value");
49422 case PT_Uint64:
49423 switch (T1) {
49424 case PT_Sint8:
49425 return emitShrUint64Sint8(I);
49426 case PT_Uint8:
49427 return emitShrUint64Uint8(I);
49428 case PT_Sint16:
49429 return emitShrUint64Sint16(I);
49430 case PT_Uint16:
49431 return emitShrUint64Uint16(I);
49432 case PT_Sint32:
49433 return emitShrUint64Sint32(I);
49434 case PT_Uint32:
49435 return emitShrUint64Uint32(I);
49436 case PT_Sint64:
49437 return emitShrUint64Sint64(I);
49438 case PT_Uint64:
49439 return emitShrUint64Uint64(I);
49440 case PT_IntAP:
49441 return emitShrUint64IntAP(I);
49442 case PT_IntAPS:
49443 return emitShrUint64IntAPS(I);
49444 default: llvm_unreachable("invalid type: emitShr");
49445 }
49446 llvm_unreachable("invalid enum value");
49447 case PT_IntAP:
49448 switch (T1) {
49449 case PT_Sint8:
49450 return emitShrIntAPSint8(I);
49451 case PT_Uint8:
49452 return emitShrIntAPUint8(I);
49453 case PT_Sint16:
49454 return emitShrIntAPSint16(I);
49455 case PT_Uint16:
49456 return emitShrIntAPUint16(I);
49457 case PT_Sint32:
49458 return emitShrIntAPSint32(I);
49459 case PT_Uint32:
49460 return emitShrIntAPUint32(I);
49461 case PT_Sint64:
49462 return emitShrIntAPSint64(I);
49463 case PT_Uint64:
49464 return emitShrIntAPUint64(I);
49465 case PT_IntAP:
49466 return emitShrIntAPIntAP(I);
49467 case PT_IntAPS:
49468 return emitShrIntAPIntAPS(I);
49469 default: llvm_unreachable("invalid type: emitShr");
49470 }
49471 llvm_unreachable("invalid enum value");
49472 case PT_IntAPS:
49473 switch (T1) {
49474 case PT_Sint8:
49475 return emitShrIntAPSSint8(I);
49476 case PT_Uint8:
49477 return emitShrIntAPSUint8(I);
49478 case PT_Sint16:
49479 return emitShrIntAPSSint16(I);
49480 case PT_Uint16:
49481 return emitShrIntAPSUint16(I);
49482 case PT_Sint32:
49483 return emitShrIntAPSSint32(I);
49484 case PT_Uint32:
49485 return emitShrIntAPSUint32(I);
49486 case PT_Sint64:
49487 return emitShrIntAPSSint64(I);
49488 case PT_Uint64:
49489 return emitShrIntAPSUint64(I);
49490 case PT_IntAP:
49491 return emitShrIntAPSIntAP(I);
49492 case PT_IntAPS:
49493 return emitShrIntAPSIntAPS(I);
49494 default: llvm_unreachable("invalid type: emitShr");
49495 }
49496 llvm_unreachable("invalid enum value");
49497 default: llvm_unreachable("invalid type: emitShr");
49498 }
49499 llvm_unreachable("invalid enum value");
49500}
49501#endif
49502#ifdef GET_LINK_IMPL
49503bool ByteCodeEmitter::emitShrSint8Sint8(SourceInfo L) {
49504 return emitOp<>(OP_ShrSint8Sint8, L);
49505}
49506bool ByteCodeEmitter::emitShrSint8Uint8(SourceInfo L) {
49507 return emitOp<>(OP_ShrSint8Uint8, L);
49508}
49509bool ByteCodeEmitter::emitShrSint8Sint16(SourceInfo L) {
49510 return emitOp<>(OP_ShrSint8Sint16, L);
49511}
49512bool ByteCodeEmitter::emitShrSint8Uint16(SourceInfo L) {
49513 return emitOp<>(OP_ShrSint8Uint16, L);
49514}
49515bool ByteCodeEmitter::emitShrSint8Sint32(SourceInfo L) {
49516 return emitOp<>(OP_ShrSint8Sint32, L);
49517}
49518bool ByteCodeEmitter::emitShrSint8Uint32(SourceInfo L) {
49519 return emitOp<>(OP_ShrSint8Uint32, L);
49520}
49521bool ByteCodeEmitter::emitShrSint8Sint64(SourceInfo L) {
49522 return emitOp<>(OP_ShrSint8Sint64, L);
49523}
49524bool ByteCodeEmitter::emitShrSint8Uint64(SourceInfo L) {
49525 return emitOp<>(OP_ShrSint8Uint64, L);
49526}
49527bool ByteCodeEmitter::emitShrSint8IntAP(SourceInfo L) {
49528 return emitOp<>(OP_ShrSint8IntAP, L);
49529}
49530bool ByteCodeEmitter::emitShrSint8IntAPS(SourceInfo L) {
49531 return emitOp<>(OP_ShrSint8IntAPS, L);
49532}
49533bool ByteCodeEmitter::emitShrUint8Sint8(SourceInfo L) {
49534 return emitOp<>(OP_ShrUint8Sint8, L);
49535}
49536bool ByteCodeEmitter::emitShrUint8Uint8(SourceInfo L) {
49537 return emitOp<>(OP_ShrUint8Uint8, L);
49538}
49539bool ByteCodeEmitter::emitShrUint8Sint16(SourceInfo L) {
49540 return emitOp<>(OP_ShrUint8Sint16, L);
49541}
49542bool ByteCodeEmitter::emitShrUint8Uint16(SourceInfo L) {
49543 return emitOp<>(OP_ShrUint8Uint16, L);
49544}
49545bool ByteCodeEmitter::emitShrUint8Sint32(SourceInfo L) {
49546 return emitOp<>(OP_ShrUint8Sint32, L);
49547}
49548bool ByteCodeEmitter::emitShrUint8Uint32(SourceInfo L) {
49549 return emitOp<>(OP_ShrUint8Uint32, L);
49550}
49551bool ByteCodeEmitter::emitShrUint8Sint64(SourceInfo L) {
49552 return emitOp<>(OP_ShrUint8Sint64, L);
49553}
49554bool ByteCodeEmitter::emitShrUint8Uint64(SourceInfo L) {
49555 return emitOp<>(OP_ShrUint8Uint64, L);
49556}
49557bool ByteCodeEmitter::emitShrUint8IntAP(SourceInfo L) {
49558 return emitOp<>(OP_ShrUint8IntAP, L);
49559}
49560bool ByteCodeEmitter::emitShrUint8IntAPS(SourceInfo L) {
49561 return emitOp<>(OP_ShrUint8IntAPS, L);
49562}
49563bool ByteCodeEmitter::emitShrSint16Sint8(SourceInfo L) {
49564 return emitOp<>(OP_ShrSint16Sint8, L);
49565}
49566bool ByteCodeEmitter::emitShrSint16Uint8(SourceInfo L) {
49567 return emitOp<>(OP_ShrSint16Uint8, L);
49568}
49569bool ByteCodeEmitter::emitShrSint16Sint16(SourceInfo L) {
49570 return emitOp<>(OP_ShrSint16Sint16, L);
49571}
49572bool ByteCodeEmitter::emitShrSint16Uint16(SourceInfo L) {
49573 return emitOp<>(OP_ShrSint16Uint16, L);
49574}
49575bool ByteCodeEmitter::emitShrSint16Sint32(SourceInfo L) {
49576 return emitOp<>(OP_ShrSint16Sint32, L);
49577}
49578bool ByteCodeEmitter::emitShrSint16Uint32(SourceInfo L) {
49579 return emitOp<>(OP_ShrSint16Uint32, L);
49580}
49581bool ByteCodeEmitter::emitShrSint16Sint64(SourceInfo L) {
49582 return emitOp<>(OP_ShrSint16Sint64, L);
49583}
49584bool ByteCodeEmitter::emitShrSint16Uint64(SourceInfo L) {
49585 return emitOp<>(OP_ShrSint16Uint64, L);
49586}
49587bool ByteCodeEmitter::emitShrSint16IntAP(SourceInfo L) {
49588 return emitOp<>(OP_ShrSint16IntAP, L);
49589}
49590bool ByteCodeEmitter::emitShrSint16IntAPS(SourceInfo L) {
49591 return emitOp<>(OP_ShrSint16IntAPS, L);
49592}
49593bool ByteCodeEmitter::emitShrUint16Sint8(SourceInfo L) {
49594 return emitOp<>(OP_ShrUint16Sint8, L);
49595}
49596bool ByteCodeEmitter::emitShrUint16Uint8(SourceInfo L) {
49597 return emitOp<>(OP_ShrUint16Uint8, L);
49598}
49599bool ByteCodeEmitter::emitShrUint16Sint16(SourceInfo L) {
49600 return emitOp<>(OP_ShrUint16Sint16, L);
49601}
49602bool ByteCodeEmitter::emitShrUint16Uint16(SourceInfo L) {
49603 return emitOp<>(OP_ShrUint16Uint16, L);
49604}
49605bool ByteCodeEmitter::emitShrUint16Sint32(SourceInfo L) {
49606 return emitOp<>(OP_ShrUint16Sint32, L);
49607}
49608bool ByteCodeEmitter::emitShrUint16Uint32(SourceInfo L) {
49609 return emitOp<>(OP_ShrUint16Uint32, L);
49610}
49611bool ByteCodeEmitter::emitShrUint16Sint64(SourceInfo L) {
49612 return emitOp<>(OP_ShrUint16Sint64, L);
49613}
49614bool ByteCodeEmitter::emitShrUint16Uint64(SourceInfo L) {
49615 return emitOp<>(OP_ShrUint16Uint64, L);
49616}
49617bool ByteCodeEmitter::emitShrUint16IntAP(SourceInfo L) {
49618 return emitOp<>(OP_ShrUint16IntAP, L);
49619}
49620bool ByteCodeEmitter::emitShrUint16IntAPS(SourceInfo L) {
49621 return emitOp<>(OP_ShrUint16IntAPS, L);
49622}
49623bool ByteCodeEmitter::emitShrSint32Sint8(SourceInfo L) {
49624 return emitOp<>(OP_ShrSint32Sint8, L);
49625}
49626bool ByteCodeEmitter::emitShrSint32Uint8(SourceInfo L) {
49627 return emitOp<>(OP_ShrSint32Uint8, L);
49628}
49629bool ByteCodeEmitter::emitShrSint32Sint16(SourceInfo L) {
49630 return emitOp<>(OP_ShrSint32Sint16, L);
49631}
49632bool ByteCodeEmitter::emitShrSint32Uint16(SourceInfo L) {
49633 return emitOp<>(OP_ShrSint32Uint16, L);
49634}
49635bool ByteCodeEmitter::emitShrSint32Sint32(SourceInfo L) {
49636 return emitOp<>(OP_ShrSint32Sint32, L);
49637}
49638bool ByteCodeEmitter::emitShrSint32Uint32(SourceInfo L) {
49639 return emitOp<>(OP_ShrSint32Uint32, L);
49640}
49641bool ByteCodeEmitter::emitShrSint32Sint64(SourceInfo L) {
49642 return emitOp<>(OP_ShrSint32Sint64, L);
49643}
49644bool ByteCodeEmitter::emitShrSint32Uint64(SourceInfo L) {
49645 return emitOp<>(OP_ShrSint32Uint64, L);
49646}
49647bool ByteCodeEmitter::emitShrSint32IntAP(SourceInfo L) {
49648 return emitOp<>(OP_ShrSint32IntAP, L);
49649}
49650bool ByteCodeEmitter::emitShrSint32IntAPS(SourceInfo L) {
49651 return emitOp<>(OP_ShrSint32IntAPS, L);
49652}
49653bool ByteCodeEmitter::emitShrUint32Sint8(SourceInfo L) {
49654 return emitOp<>(OP_ShrUint32Sint8, L);
49655}
49656bool ByteCodeEmitter::emitShrUint32Uint8(SourceInfo L) {
49657 return emitOp<>(OP_ShrUint32Uint8, L);
49658}
49659bool ByteCodeEmitter::emitShrUint32Sint16(SourceInfo L) {
49660 return emitOp<>(OP_ShrUint32Sint16, L);
49661}
49662bool ByteCodeEmitter::emitShrUint32Uint16(SourceInfo L) {
49663 return emitOp<>(OP_ShrUint32Uint16, L);
49664}
49665bool ByteCodeEmitter::emitShrUint32Sint32(SourceInfo L) {
49666 return emitOp<>(OP_ShrUint32Sint32, L);
49667}
49668bool ByteCodeEmitter::emitShrUint32Uint32(SourceInfo L) {
49669 return emitOp<>(OP_ShrUint32Uint32, L);
49670}
49671bool ByteCodeEmitter::emitShrUint32Sint64(SourceInfo L) {
49672 return emitOp<>(OP_ShrUint32Sint64, L);
49673}
49674bool ByteCodeEmitter::emitShrUint32Uint64(SourceInfo L) {
49675 return emitOp<>(OP_ShrUint32Uint64, L);
49676}
49677bool ByteCodeEmitter::emitShrUint32IntAP(SourceInfo L) {
49678 return emitOp<>(OP_ShrUint32IntAP, L);
49679}
49680bool ByteCodeEmitter::emitShrUint32IntAPS(SourceInfo L) {
49681 return emitOp<>(OP_ShrUint32IntAPS, L);
49682}
49683bool ByteCodeEmitter::emitShrSint64Sint8(SourceInfo L) {
49684 return emitOp<>(OP_ShrSint64Sint8, L);
49685}
49686bool ByteCodeEmitter::emitShrSint64Uint8(SourceInfo L) {
49687 return emitOp<>(OP_ShrSint64Uint8, L);
49688}
49689bool ByteCodeEmitter::emitShrSint64Sint16(SourceInfo L) {
49690 return emitOp<>(OP_ShrSint64Sint16, L);
49691}
49692bool ByteCodeEmitter::emitShrSint64Uint16(SourceInfo L) {
49693 return emitOp<>(OP_ShrSint64Uint16, L);
49694}
49695bool ByteCodeEmitter::emitShrSint64Sint32(SourceInfo L) {
49696 return emitOp<>(OP_ShrSint64Sint32, L);
49697}
49698bool ByteCodeEmitter::emitShrSint64Uint32(SourceInfo L) {
49699 return emitOp<>(OP_ShrSint64Uint32, L);
49700}
49701bool ByteCodeEmitter::emitShrSint64Sint64(SourceInfo L) {
49702 return emitOp<>(OP_ShrSint64Sint64, L);
49703}
49704bool ByteCodeEmitter::emitShrSint64Uint64(SourceInfo L) {
49705 return emitOp<>(OP_ShrSint64Uint64, L);
49706}
49707bool ByteCodeEmitter::emitShrSint64IntAP(SourceInfo L) {
49708 return emitOp<>(OP_ShrSint64IntAP, L);
49709}
49710bool ByteCodeEmitter::emitShrSint64IntAPS(SourceInfo L) {
49711 return emitOp<>(OP_ShrSint64IntAPS, L);
49712}
49713bool ByteCodeEmitter::emitShrUint64Sint8(SourceInfo L) {
49714 return emitOp<>(OP_ShrUint64Sint8, L);
49715}
49716bool ByteCodeEmitter::emitShrUint64Uint8(SourceInfo L) {
49717 return emitOp<>(OP_ShrUint64Uint8, L);
49718}
49719bool ByteCodeEmitter::emitShrUint64Sint16(SourceInfo L) {
49720 return emitOp<>(OP_ShrUint64Sint16, L);
49721}
49722bool ByteCodeEmitter::emitShrUint64Uint16(SourceInfo L) {
49723 return emitOp<>(OP_ShrUint64Uint16, L);
49724}
49725bool ByteCodeEmitter::emitShrUint64Sint32(SourceInfo L) {
49726 return emitOp<>(OP_ShrUint64Sint32, L);
49727}
49728bool ByteCodeEmitter::emitShrUint64Uint32(SourceInfo L) {
49729 return emitOp<>(OP_ShrUint64Uint32, L);
49730}
49731bool ByteCodeEmitter::emitShrUint64Sint64(SourceInfo L) {
49732 return emitOp<>(OP_ShrUint64Sint64, L);
49733}
49734bool ByteCodeEmitter::emitShrUint64Uint64(SourceInfo L) {
49735 return emitOp<>(OP_ShrUint64Uint64, L);
49736}
49737bool ByteCodeEmitter::emitShrUint64IntAP(SourceInfo L) {
49738 return emitOp<>(OP_ShrUint64IntAP, L);
49739}
49740bool ByteCodeEmitter::emitShrUint64IntAPS(SourceInfo L) {
49741 return emitOp<>(OP_ShrUint64IntAPS, L);
49742}
49743bool ByteCodeEmitter::emitShrIntAPSint8(SourceInfo L) {
49744 return emitOp<>(OP_ShrIntAPSint8, L);
49745}
49746bool ByteCodeEmitter::emitShrIntAPUint8(SourceInfo L) {
49747 return emitOp<>(OP_ShrIntAPUint8, L);
49748}
49749bool ByteCodeEmitter::emitShrIntAPSint16(SourceInfo L) {
49750 return emitOp<>(OP_ShrIntAPSint16, L);
49751}
49752bool ByteCodeEmitter::emitShrIntAPUint16(SourceInfo L) {
49753 return emitOp<>(OP_ShrIntAPUint16, L);
49754}
49755bool ByteCodeEmitter::emitShrIntAPSint32(SourceInfo L) {
49756 return emitOp<>(OP_ShrIntAPSint32, L);
49757}
49758bool ByteCodeEmitter::emitShrIntAPUint32(SourceInfo L) {
49759 return emitOp<>(OP_ShrIntAPUint32, L);
49760}
49761bool ByteCodeEmitter::emitShrIntAPSint64(SourceInfo L) {
49762 return emitOp<>(OP_ShrIntAPSint64, L);
49763}
49764bool ByteCodeEmitter::emitShrIntAPUint64(SourceInfo L) {
49765 return emitOp<>(OP_ShrIntAPUint64, L);
49766}
49767bool ByteCodeEmitter::emitShrIntAPIntAP(SourceInfo L) {
49768 return emitOp<>(OP_ShrIntAPIntAP, L);
49769}
49770bool ByteCodeEmitter::emitShrIntAPIntAPS(SourceInfo L) {
49771 return emitOp<>(OP_ShrIntAPIntAPS, L);
49772}
49773bool ByteCodeEmitter::emitShrIntAPSSint8(SourceInfo L) {
49774 return emitOp<>(OP_ShrIntAPSSint8, L);
49775}
49776bool ByteCodeEmitter::emitShrIntAPSUint8(SourceInfo L) {
49777 return emitOp<>(OP_ShrIntAPSUint8, L);
49778}
49779bool ByteCodeEmitter::emitShrIntAPSSint16(SourceInfo L) {
49780 return emitOp<>(OP_ShrIntAPSSint16, L);
49781}
49782bool ByteCodeEmitter::emitShrIntAPSUint16(SourceInfo L) {
49783 return emitOp<>(OP_ShrIntAPSUint16, L);
49784}
49785bool ByteCodeEmitter::emitShrIntAPSSint32(SourceInfo L) {
49786 return emitOp<>(OP_ShrIntAPSSint32, L);
49787}
49788bool ByteCodeEmitter::emitShrIntAPSUint32(SourceInfo L) {
49789 return emitOp<>(OP_ShrIntAPSUint32, L);
49790}
49791bool ByteCodeEmitter::emitShrIntAPSSint64(SourceInfo L) {
49792 return emitOp<>(OP_ShrIntAPSSint64, L);
49793}
49794bool ByteCodeEmitter::emitShrIntAPSUint64(SourceInfo L) {
49795 return emitOp<>(OP_ShrIntAPSUint64, L);
49796}
49797bool ByteCodeEmitter::emitShrIntAPSIntAP(SourceInfo L) {
49798 return emitOp<>(OP_ShrIntAPSIntAP, L);
49799}
49800bool ByteCodeEmitter::emitShrIntAPSIntAPS(SourceInfo L) {
49801 return emitOp<>(OP_ShrIntAPSIntAPS, L);
49802}
49803#endif
49804#ifdef GET_EVAL_IMPL
49805bool EvalEmitter::emitShrSint8Sint8(SourceInfo L) {
49806 if (!isActive()) return true;
49807 CurrentSource = L;
49808 return Shr<PT_Sint8, PT_Sint8>(S, CodePtr());
49809}
49810bool EvalEmitter::emitShrSint8Uint8(SourceInfo L) {
49811 if (!isActive()) return true;
49812 CurrentSource = L;
49813 return Shr<PT_Sint8, PT_Uint8>(S, CodePtr());
49814}
49815bool EvalEmitter::emitShrSint8Sint16(SourceInfo L) {
49816 if (!isActive()) return true;
49817 CurrentSource = L;
49818 return Shr<PT_Sint8, PT_Sint16>(S, CodePtr());
49819}
49820bool EvalEmitter::emitShrSint8Uint16(SourceInfo L) {
49821 if (!isActive()) return true;
49822 CurrentSource = L;
49823 return Shr<PT_Sint8, PT_Uint16>(S, CodePtr());
49824}
49825bool EvalEmitter::emitShrSint8Sint32(SourceInfo L) {
49826 if (!isActive()) return true;
49827 CurrentSource = L;
49828 return Shr<PT_Sint8, PT_Sint32>(S, CodePtr());
49829}
49830bool EvalEmitter::emitShrSint8Uint32(SourceInfo L) {
49831 if (!isActive()) return true;
49832 CurrentSource = L;
49833 return Shr<PT_Sint8, PT_Uint32>(S, CodePtr());
49834}
49835bool EvalEmitter::emitShrSint8Sint64(SourceInfo L) {
49836 if (!isActive()) return true;
49837 CurrentSource = L;
49838 return Shr<PT_Sint8, PT_Sint64>(S, CodePtr());
49839}
49840bool EvalEmitter::emitShrSint8Uint64(SourceInfo L) {
49841 if (!isActive()) return true;
49842 CurrentSource = L;
49843 return Shr<PT_Sint8, PT_Uint64>(S, CodePtr());
49844}
49845bool EvalEmitter::emitShrSint8IntAP(SourceInfo L) {
49846 if (!isActive()) return true;
49847 CurrentSource = L;
49848 return Shr<PT_Sint8, PT_IntAP>(S, CodePtr());
49849}
49850bool EvalEmitter::emitShrSint8IntAPS(SourceInfo L) {
49851 if (!isActive()) return true;
49852 CurrentSource = L;
49853 return Shr<PT_Sint8, PT_IntAPS>(S, CodePtr());
49854}
49855bool EvalEmitter::emitShrUint8Sint8(SourceInfo L) {
49856 if (!isActive()) return true;
49857 CurrentSource = L;
49858 return Shr<PT_Uint8, PT_Sint8>(S, CodePtr());
49859}
49860bool EvalEmitter::emitShrUint8Uint8(SourceInfo L) {
49861 if (!isActive()) return true;
49862 CurrentSource = L;
49863 return Shr<PT_Uint8, PT_Uint8>(S, CodePtr());
49864}
49865bool EvalEmitter::emitShrUint8Sint16(SourceInfo L) {
49866 if (!isActive()) return true;
49867 CurrentSource = L;
49868 return Shr<PT_Uint8, PT_Sint16>(S, CodePtr());
49869}
49870bool EvalEmitter::emitShrUint8Uint16(SourceInfo L) {
49871 if (!isActive()) return true;
49872 CurrentSource = L;
49873 return Shr<PT_Uint8, PT_Uint16>(S, CodePtr());
49874}
49875bool EvalEmitter::emitShrUint8Sint32(SourceInfo L) {
49876 if (!isActive()) return true;
49877 CurrentSource = L;
49878 return Shr<PT_Uint8, PT_Sint32>(S, CodePtr());
49879}
49880bool EvalEmitter::emitShrUint8Uint32(SourceInfo L) {
49881 if (!isActive()) return true;
49882 CurrentSource = L;
49883 return Shr<PT_Uint8, PT_Uint32>(S, CodePtr());
49884}
49885bool EvalEmitter::emitShrUint8Sint64(SourceInfo L) {
49886 if (!isActive()) return true;
49887 CurrentSource = L;
49888 return Shr<PT_Uint8, PT_Sint64>(S, CodePtr());
49889}
49890bool EvalEmitter::emitShrUint8Uint64(SourceInfo L) {
49891 if (!isActive()) return true;
49892 CurrentSource = L;
49893 return Shr<PT_Uint8, PT_Uint64>(S, CodePtr());
49894}
49895bool EvalEmitter::emitShrUint8IntAP(SourceInfo L) {
49896 if (!isActive()) return true;
49897 CurrentSource = L;
49898 return Shr<PT_Uint8, PT_IntAP>(S, CodePtr());
49899}
49900bool EvalEmitter::emitShrUint8IntAPS(SourceInfo L) {
49901 if (!isActive()) return true;
49902 CurrentSource = L;
49903 return Shr<PT_Uint8, PT_IntAPS>(S, CodePtr());
49904}
49905bool EvalEmitter::emitShrSint16Sint8(SourceInfo L) {
49906 if (!isActive()) return true;
49907 CurrentSource = L;
49908 return Shr<PT_Sint16, PT_Sint8>(S, CodePtr());
49909}
49910bool EvalEmitter::emitShrSint16Uint8(SourceInfo L) {
49911 if (!isActive()) return true;
49912 CurrentSource = L;
49913 return Shr<PT_Sint16, PT_Uint8>(S, CodePtr());
49914}
49915bool EvalEmitter::emitShrSint16Sint16(SourceInfo L) {
49916 if (!isActive()) return true;
49917 CurrentSource = L;
49918 return Shr<PT_Sint16, PT_Sint16>(S, CodePtr());
49919}
49920bool EvalEmitter::emitShrSint16Uint16(SourceInfo L) {
49921 if (!isActive()) return true;
49922 CurrentSource = L;
49923 return Shr<PT_Sint16, PT_Uint16>(S, CodePtr());
49924}
49925bool EvalEmitter::emitShrSint16Sint32(SourceInfo L) {
49926 if (!isActive()) return true;
49927 CurrentSource = L;
49928 return Shr<PT_Sint16, PT_Sint32>(S, CodePtr());
49929}
49930bool EvalEmitter::emitShrSint16Uint32(SourceInfo L) {
49931 if (!isActive()) return true;
49932 CurrentSource = L;
49933 return Shr<PT_Sint16, PT_Uint32>(S, CodePtr());
49934}
49935bool EvalEmitter::emitShrSint16Sint64(SourceInfo L) {
49936 if (!isActive()) return true;
49937 CurrentSource = L;
49938 return Shr<PT_Sint16, PT_Sint64>(S, CodePtr());
49939}
49940bool EvalEmitter::emitShrSint16Uint64(SourceInfo L) {
49941 if (!isActive()) return true;
49942 CurrentSource = L;
49943 return Shr<PT_Sint16, PT_Uint64>(S, CodePtr());
49944}
49945bool EvalEmitter::emitShrSint16IntAP(SourceInfo L) {
49946 if (!isActive()) return true;
49947 CurrentSource = L;
49948 return Shr<PT_Sint16, PT_IntAP>(S, CodePtr());
49949}
49950bool EvalEmitter::emitShrSint16IntAPS(SourceInfo L) {
49951 if (!isActive()) return true;
49952 CurrentSource = L;
49953 return Shr<PT_Sint16, PT_IntAPS>(S, CodePtr());
49954}
49955bool EvalEmitter::emitShrUint16Sint8(SourceInfo L) {
49956 if (!isActive()) return true;
49957 CurrentSource = L;
49958 return Shr<PT_Uint16, PT_Sint8>(S, CodePtr());
49959}
49960bool EvalEmitter::emitShrUint16Uint8(SourceInfo L) {
49961 if (!isActive()) return true;
49962 CurrentSource = L;
49963 return Shr<PT_Uint16, PT_Uint8>(S, CodePtr());
49964}
49965bool EvalEmitter::emitShrUint16Sint16(SourceInfo L) {
49966 if (!isActive()) return true;
49967 CurrentSource = L;
49968 return Shr<PT_Uint16, PT_Sint16>(S, CodePtr());
49969}
49970bool EvalEmitter::emitShrUint16Uint16(SourceInfo L) {
49971 if (!isActive()) return true;
49972 CurrentSource = L;
49973 return Shr<PT_Uint16, PT_Uint16>(S, CodePtr());
49974}
49975bool EvalEmitter::emitShrUint16Sint32(SourceInfo L) {
49976 if (!isActive()) return true;
49977 CurrentSource = L;
49978 return Shr<PT_Uint16, PT_Sint32>(S, CodePtr());
49979}
49980bool EvalEmitter::emitShrUint16Uint32(SourceInfo L) {
49981 if (!isActive()) return true;
49982 CurrentSource = L;
49983 return Shr<PT_Uint16, PT_Uint32>(S, CodePtr());
49984}
49985bool EvalEmitter::emitShrUint16Sint64(SourceInfo L) {
49986 if (!isActive()) return true;
49987 CurrentSource = L;
49988 return Shr<PT_Uint16, PT_Sint64>(S, CodePtr());
49989}
49990bool EvalEmitter::emitShrUint16Uint64(SourceInfo L) {
49991 if (!isActive()) return true;
49992 CurrentSource = L;
49993 return Shr<PT_Uint16, PT_Uint64>(S, CodePtr());
49994}
49995bool EvalEmitter::emitShrUint16IntAP(SourceInfo L) {
49996 if (!isActive()) return true;
49997 CurrentSource = L;
49998 return Shr<PT_Uint16, PT_IntAP>(S, CodePtr());
49999}
50000bool EvalEmitter::emitShrUint16IntAPS(SourceInfo L) {
50001 if (!isActive()) return true;
50002 CurrentSource = L;
50003 return Shr<PT_Uint16, PT_IntAPS>(S, CodePtr());
50004}
50005bool EvalEmitter::emitShrSint32Sint8(SourceInfo L) {
50006 if (!isActive()) return true;
50007 CurrentSource = L;
50008 return Shr<PT_Sint32, PT_Sint8>(S, CodePtr());
50009}
50010bool EvalEmitter::emitShrSint32Uint8(SourceInfo L) {
50011 if (!isActive()) return true;
50012 CurrentSource = L;
50013 return Shr<PT_Sint32, PT_Uint8>(S, CodePtr());
50014}
50015bool EvalEmitter::emitShrSint32Sint16(SourceInfo L) {
50016 if (!isActive()) return true;
50017 CurrentSource = L;
50018 return Shr<PT_Sint32, PT_Sint16>(S, CodePtr());
50019}
50020bool EvalEmitter::emitShrSint32Uint16(SourceInfo L) {
50021 if (!isActive()) return true;
50022 CurrentSource = L;
50023 return Shr<PT_Sint32, PT_Uint16>(S, CodePtr());
50024}
50025bool EvalEmitter::emitShrSint32Sint32(SourceInfo L) {
50026 if (!isActive()) return true;
50027 CurrentSource = L;
50028 return Shr<PT_Sint32, PT_Sint32>(S, CodePtr());
50029}
50030bool EvalEmitter::emitShrSint32Uint32(SourceInfo L) {
50031 if (!isActive()) return true;
50032 CurrentSource = L;
50033 return Shr<PT_Sint32, PT_Uint32>(S, CodePtr());
50034}
50035bool EvalEmitter::emitShrSint32Sint64(SourceInfo L) {
50036 if (!isActive()) return true;
50037 CurrentSource = L;
50038 return Shr<PT_Sint32, PT_Sint64>(S, CodePtr());
50039}
50040bool EvalEmitter::emitShrSint32Uint64(SourceInfo L) {
50041 if (!isActive()) return true;
50042 CurrentSource = L;
50043 return Shr<PT_Sint32, PT_Uint64>(S, CodePtr());
50044}
50045bool EvalEmitter::emitShrSint32IntAP(SourceInfo L) {
50046 if (!isActive()) return true;
50047 CurrentSource = L;
50048 return Shr<PT_Sint32, PT_IntAP>(S, CodePtr());
50049}
50050bool EvalEmitter::emitShrSint32IntAPS(SourceInfo L) {
50051 if (!isActive()) return true;
50052 CurrentSource = L;
50053 return Shr<PT_Sint32, PT_IntAPS>(S, CodePtr());
50054}
50055bool EvalEmitter::emitShrUint32Sint8(SourceInfo L) {
50056 if (!isActive()) return true;
50057 CurrentSource = L;
50058 return Shr<PT_Uint32, PT_Sint8>(S, CodePtr());
50059}
50060bool EvalEmitter::emitShrUint32Uint8(SourceInfo L) {
50061 if (!isActive()) return true;
50062 CurrentSource = L;
50063 return Shr<PT_Uint32, PT_Uint8>(S, CodePtr());
50064}
50065bool EvalEmitter::emitShrUint32Sint16(SourceInfo L) {
50066 if (!isActive()) return true;
50067 CurrentSource = L;
50068 return Shr<PT_Uint32, PT_Sint16>(S, CodePtr());
50069}
50070bool EvalEmitter::emitShrUint32Uint16(SourceInfo L) {
50071 if (!isActive()) return true;
50072 CurrentSource = L;
50073 return Shr<PT_Uint32, PT_Uint16>(S, CodePtr());
50074}
50075bool EvalEmitter::emitShrUint32Sint32(SourceInfo L) {
50076 if (!isActive()) return true;
50077 CurrentSource = L;
50078 return Shr<PT_Uint32, PT_Sint32>(S, CodePtr());
50079}
50080bool EvalEmitter::emitShrUint32Uint32(SourceInfo L) {
50081 if (!isActive()) return true;
50082 CurrentSource = L;
50083 return Shr<PT_Uint32, PT_Uint32>(S, CodePtr());
50084}
50085bool EvalEmitter::emitShrUint32Sint64(SourceInfo L) {
50086 if (!isActive()) return true;
50087 CurrentSource = L;
50088 return Shr<PT_Uint32, PT_Sint64>(S, CodePtr());
50089}
50090bool EvalEmitter::emitShrUint32Uint64(SourceInfo L) {
50091 if (!isActive()) return true;
50092 CurrentSource = L;
50093 return Shr<PT_Uint32, PT_Uint64>(S, CodePtr());
50094}
50095bool EvalEmitter::emitShrUint32IntAP(SourceInfo L) {
50096 if (!isActive()) return true;
50097 CurrentSource = L;
50098 return Shr<PT_Uint32, PT_IntAP>(S, CodePtr());
50099}
50100bool EvalEmitter::emitShrUint32IntAPS(SourceInfo L) {
50101 if (!isActive()) return true;
50102 CurrentSource = L;
50103 return Shr<PT_Uint32, PT_IntAPS>(S, CodePtr());
50104}
50105bool EvalEmitter::emitShrSint64Sint8(SourceInfo L) {
50106 if (!isActive()) return true;
50107 CurrentSource = L;
50108 return Shr<PT_Sint64, PT_Sint8>(S, CodePtr());
50109}
50110bool EvalEmitter::emitShrSint64Uint8(SourceInfo L) {
50111 if (!isActive()) return true;
50112 CurrentSource = L;
50113 return Shr<PT_Sint64, PT_Uint8>(S, CodePtr());
50114}
50115bool EvalEmitter::emitShrSint64Sint16(SourceInfo L) {
50116 if (!isActive()) return true;
50117 CurrentSource = L;
50118 return Shr<PT_Sint64, PT_Sint16>(S, CodePtr());
50119}
50120bool EvalEmitter::emitShrSint64Uint16(SourceInfo L) {
50121 if (!isActive()) return true;
50122 CurrentSource = L;
50123 return Shr<PT_Sint64, PT_Uint16>(S, CodePtr());
50124}
50125bool EvalEmitter::emitShrSint64Sint32(SourceInfo L) {
50126 if (!isActive()) return true;
50127 CurrentSource = L;
50128 return Shr<PT_Sint64, PT_Sint32>(S, CodePtr());
50129}
50130bool EvalEmitter::emitShrSint64Uint32(SourceInfo L) {
50131 if (!isActive()) return true;
50132 CurrentSource = L;
50133 return Shr<PT_Sint64, PT_Uint32>(S, CodePtr());
50134}
50135bool EvalEmitter::emitShrSint64Sint64(SourceInfo L) {
50136 if (!isActive()) return true;
50137 CurrentSource = L;
50138 return Shr<PT_Sint64, PT_Sint64>(S, CodePtr());
50139}
50140bool EvalEmitter::emitShrSint64Uint64(SourceInfo L) {
50141 if (!isActive()) return true;
50142 CurrentSource = L;
50143 return Shr<PT_Sint64, PT_Uint64>(S, CodePtr());
50144}
50145bool EvalEmitter::emitShrSint64IntAP(SourceInfo L) {
50146 if (!isActive()) return true;
50147 CurrentSource = L;
50148 return Shr<PT_Sint64, PT_IntAP>(S, CodePtr());
50149}
50150bool EvalEmitter::emitShrSint64IntAPS(SourceInfo L) {
50151 if (!isActive()) return true;
50152 CurrentSource = L;
50153 return Shr<PT_Sint64, PT_IntAPS>(S, CodePtr());
50154}
50155bool EvalEmitter::emitShrUint64Sint8(SourceInfo L) {
50156 if (!isActive()) return true;
50157 CurrentSource = L;
50158 return Shr<PT_Uint64, PT_Sint8>(S, CodePtr());
50159}
50160bool EvalEmitter::emitShrUint64Uint8(SourceInfo L) {
50161 if (!isActive()) return true;
50162 CurrentSource = L;
50163 return Shr<PT_Uint64, PT_Uint8>(S, CodePtr());
50164}
50165bool EvalEmitter::emitShrUint64Sint16(SourceInfo L) {
50166 if (!isActive()) return true;
50167 CurrentSource = L;
50168 return Shr<PT_Uint64, PT_Sint16>(S, CodePtr());
50169}
50170bool EvalEmitter::emitShrUint64Uint16(SourceInfo L) {
50171 if (!isActive()) return true;
50172 CurrentSource = L;
50173 return Shr<PT_Uint64, PT_Uint16>(S, CodePtr());
50174}
50175bool EvalEmitter::emitShrUint64Sint32(SourceInfo L) {
50176 if (!isActive()) return true;
50177 CurrentSource = L;
50178 return Shr<PT_Uint64, PT_Sint32>(S, CodePtr());
50179}
50180bool EvalEmitter::emitShrUint64Uint32(SourceInfo L) {
50181 if (!isActive()) return true;
50182 CurrentSource = L;
50183 return Shr<PT_Uint64, PT_Uint32>(S, CodePtr());
50184}
50185bool EvalEmitter::emitShrUint64Sint64(SourceInfo L) {
50186 if (!isActive()) return true;
50187 CurrentSource = L;
50188 return Shr<PT_Uint64, PT_Sint64>(S, CodePtr());
50189}
50190bool EvalEmitter::emitShrUint64Uint64(SourceInfo L) {
50191 if (!isActive()) return true;
50192 CurrentSource = L;
50193 return Shr<PT_Uint64, PT_Uint64>(S, CodePtr());
50194}
50195bool EvalEmitter::emitShrUint64IntAP(SourceInfo L) {
50196 if (!isActive()) return true;
50197 CurrentSource = L;
50198 return Shr<PT_Uint64, PT_IntAP>(S, CodePtr());
50199}
50200bool EvalEmitter::emitShrUint64IntAPS(SourceInfo L) {
50201 if (!isActive()) return true;
50202 CurrentSource = L;
50203 return Shr<PT_Uint64, PT_IntAPS>(S, CodePtr());
50204}
50205bool EvalEmitter::emitShrIntAPSint8(SourceInfo L) {
50206 if (!isActive()) return true;
50207 CurrentSource = L;
50208 return Shr<PT_IntAP, PT_Sint8>(S, CodePtr());
50209}
50210bool EvalEmitter::emitShrIntAPUint8(SourceInfo L) {
50211 if (!isActive()) return true;
50212 CurrentSource = L;
50213 return Shr<PT_IntAP, PT_Uint8>(S, CodePtr());
50214}
50215bool EvalEmitter::emitShrIntAPSint16(SourceInfo L) {
50216 if (!isActive()) return true;
50217 CurrentSource = L;
50218 return Shr<PT_IntAP, PT_Sint16>(S, CodePtr());
50219}
50220bool EvalEmitter::emitShrIntAPUint16(SourceInfo L) {
50221 if (!isActive()) return true;
50222 CurrentSource = L;
50223 return Shr<PT_IntAP, PT_Uint16>(S, CodePtr());
50224}
50225bool EvalEmitter::emitShrIntAPSint32(SourceInfo L) {
50226 if (!isActive()) return true;
50227 CurrentSource = L;
50228 return Shr<PT_IntAP, PT_Sint32>(S, CodePtr());
50229}
50230bool EvalEmitter::emitShrIntAPUint32(SourceInfo L) {
50231 if (!isActive()) return true;
50232 CurrentSource = L;
50233 return Shr<PT_IntAP, PT_Uint32>(S, CodePtr());
50234}
50235bool EvalEmitter::emitShrIntAPSint64(SourceInfo L) {
50236 if (!isActive()) return true;
50237 CurrentSource = L;
50238 return Shr<PT_IntAP, PT_Sint64>(S, CodePtr());
50239}
50240bool EvalEmitter::emitShrIntAPUint64(SourceInfo L) {
50241 if (!isActive()) return true;
50242 CurrentSource = L;
50243 return Shr<PT_IntAP, PT_Uint64>(S, CodePtr());
50244}
50245bool EvalEmitter::emitShrIntAPIntAP(SourceInfo L) {
50246 if (!isActive()) return true;
50247 CurrentSource = L;
50248 return Shr<PT_IntAP, PT_IntAP>(S, CodePtr());
50249}
50250bool EvalEmitter::emitShrIntAPIntAPS(SourceInfo L) {
50251 if (!isActive()) return true;
50252 CurrentSource = L;
50253 return Shr<PT_IntAP, PT_IntAPS>(S, CodePtr());
50254}
50255bool EvalEmitter::emitShrIntAPSSint8(SourceInfo L) {
50256 if (!isActive()) return true;
50257 CurrentSource = L;
50258 return Shr<PT_IntAPS, PT_Sint8>(S, CodePtr());
50259}
50260bool EvalEmitter::emitShrIntAPSUint8(SourceInfo L) {
50261 if (!isActive()) return true;
50262 CurrentSource = L;
50263 return Shr<PT_IntAPS, PT_Uint8>(S, CodePtr());
50264}
50265bool EvalEmitter::emitShrIntAPSSint16(SourceInfo L) {
50266 if (!isActive()) return true;
50267 CurrentSource = L;
50268 return Shr<PT_IntAPS, PT_Sint16>(S, CodePtr());
50269}
50270bool EvalEmitter::emitShrIntAPSUint16(SourceInfo L) {
50271 if (!isActive()) return true;
50272 CurrentSource = L;
50273 return Shr<PT_IntAPS, PT_Uint16>(S, CodePtr());
50274}
50275bool EvalEmitter::emitShrIntAPSSint32(SourceInfo L) {
50276 if (!isActive()) return true;
50277 CurrentSource = L;
50278 return Shr<PT_IntAPS, PT_Sint32>(S, CodePtr());
50279}
50280bool EvalEmitter::emitShrIntAPSUint32(SourceInfo L) {
50281 if (!isActive()) return true;
50282 CurrentSource = L;
50283 return Shr<PT_IntAPS, PT_Uint32>(S, CodePtr());
50284}
50285bool EvalEmitter::emitShrIntAPSSint64(SourceInfo L) {
50286 if (!isActive()) return true;
50287 CurrentSource = L;
50288 return Shr<PT_IntAPS, PT_Sint64>(S, CodePtr());
50289}
50290bool EvalEmitter::emitShrIntAPSUint64(SourceInfo L) {
50291 if (!isActive()) return true;
50292 CurrentSource = L;
50293 return Shr<PT_IntAPS, PT_Uint64>(S, CodePtr());
50294}
50295bool EvalEmitter::emitShrIntAPSIntAP(SourceInfo L) {
50296 if (!isActive()) return true;
50297 CurrentSource = L;
50298 return Shr<PT_IntAPS, PT_IntAP>(S, CodePtr());
50299}
50300bool EvalEmitter::emitShrIntAPSIntAPS(SourceInfo L) {
50301 if (!isActive()) return true;
50302 CurrentSource = L;
50303 return Shr<PT_IntAPS, PT_IntAPS>(S, CodePtr());
50304}
50305#endif
50306#ifdef GET_OPCODE_NAMES
50307OP_SideEffect,
50308#endif
50309#ifdef GET_INTERPFN_LIST
50310&Interp_SideEffect,
50311#endif
50312#ifdef GET_INTERPFN_DISPATCHERS
50313PRESERVE_NONE
50314static bool Interp_SideEffect(InterpState &S) {
50315 if (!SideEffect(S)) return false;
50316#if USE_TAILCALLS
50317 MUSTTAIL return InterpNext(S);
50318#else
50319 return true;
50320#endif
50321}
50322#endif
50323#ifdef GET_DISASM
50324case OP_SideEffect:
50325 Text.Op = PrintName("SideEffect");
50326 break;
50327#endif
50328#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
50329bool emitSideEffect(SourceInfo);
50330#endif
50331#ifdef GET_LINK_IMPL
50332bool ByteCodeEmitter::emitSideEffect(SourceInfo L) {
50333 return emitOp<>(OP_SideEffect, L);
50334}
50335#endif
50336#ifdef GET_EVAL_IMPL
50337bool EvalEmitter::emitSideEffect(SourceInfo L) {
50338 if (!isActive()) return true;
50339 CurrentSource = L;
50340 return SideEffect(S);
50341}
50342#endif
50343#ifdef GET_OPCODE_NAMES
50344OP_SizelessVectorElementSize,
50345#endif
50346#ifdef GET_INTERPFN_LIST
50347&Interp_SizelessVectorElementSize,
50348#endif
50349#ifdef GET_INTERPFN_DISPATCHERS
50350PRESERVE_NONE
50351static bool Interp_SizelessVectorElementSize(InterpState &S) {
50352 if (!SizelessVectorElementSize(S, S.PC)) return false;
50353#if USE_TAILCALLS
50354 MUSTTAIL return InterpNext(S);
50355#else
50356 return true;
50357#endif
50358}
50359#endif
50360#ifdef GET_DISASM
50361case OP_SizelessVectorElementSize:
50362 Text.Op = PrintName("SizelessVectorElementSize");
50363 break;
50364#endif
50365#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
50366bool emitSizelessVectorElementSize(SourceInfo);
50367#endif
50368#ifdef GET_LINK_IMPL
50369bool ByteCodeEmitter::emitSizelessVectorElementSize(SourceInfo L) {
50370 return emitOp<>(OP_SizelessVectorElementSize, L);
50371}
50372#endif
50373#ifdef GET_EVAL_IMPL
50374bool EvalEmitter::emitSizelessVectorElementSize(SourceInfo L) {
50375 if (!isActive()) return true;
50376 CurrentSource = L;
50377 return SizelessVectorElementSize(S, CodePtr());
50378}
50379#endif
50380#ifdef GET_OPCODE_NAMES
50381OP_StartInit,
50382#endif
50383#ifdef GET_INTERPFN_LIST
50384&Interp_StartInit,
50385#endif
50386#ifdef GET_INTERPFN_DISPATCHERS
50387PRESERVE_NONE
50388static bool Interp_StartInit(InterpState &S) {
50389 StartInit(S);
50390#if USE_TAILCALLS
50391 MUSTTAIL return InterpNext(S);
50392#else
50393 return true;
50394#endif
50395}
50396#endif
50397#ifdef GET_DISASM
50398case OP_StartInit:
50399 Text.Op = PrintName("StartInit");
50400 break;
50401#endif
50402#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
50403bool emitStartInit(SourceInfo);
50404#endif
50405#ifdef GET_LINK_IMPL
50406bool ByteCodeEmitter::emitStartInit(SourceInfo L) {
50407 return emitOp<>(OP_StartInit, L);
50408}
50409#endif
50410#ifdef GET_EVAL_IMPL
50411bool EvalEmitter::emitStartInit(SourceInfo L) {
50412 if (!isActive()) return true;
50413 CurrentSource = L;
50414 return StartInit(S);
50415}
50416#endif
50417#ifdef GET_OPCODE_NAMES
50418OP_StartSpeculation,
50419#endif
50420#ifdef GET_INTERPFN_LIST
50421&Interp_StartSpeculation,
50422#endif
50423#ifdef GET_INTERPFN_DISPATCHERS
50424PRESERVE_NONE
50425static bool Interp_StartSpeculation(InterpState &S) {
50426 StartSpeculation(S);
50427#if USE_TAILCALLS
50428 MUSTTAIL return InterpNext(S);
50429#else
50430 return true;
50431#endif
50432}
50433#endif
50434#ifdef GET_DISASM
50435case OP_StartSpeculation:
50436 Text.Op = PrintName("StartSpeculation");
50437 break;
50438#endif
50439#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
50440bool emitStartSpeculation(SourceInfo);
50441#endif
50442#ifdef GET_LINK_IMPL
50443bool ByteCodeEmitter::emitStartSpeculation(SourceInfo L) {
50444 return emitOp<>(OP_StartSpeculation, L);
50445}
50446#endif
50447#ifdef GET_EVAL_IMPL
50448bool EvalEmitter::emitStartSpeculation(SourceInfo L) {
50449 if (!isActive()) return true;
50450 CurrentSource = L;
50451 return StartSpeculation(S);
50452}
50453#endif
50454#ifdef GET_OPCODE_NAMES
50455OP_StartThisLifetime,
50456#endif
50457#ifdef GET_INTERPFN_LIST
50458&Interp_StartThisLifetime,
50459#endif
50460#ifdef GET_INTERPFN_DISPATCHERS
50461PRESERVE_NONE
50462static bool Interp_StartThisLifetime(InterpState &S) {
50463 if (!StartThisLifetime(S)) return false;
50464#if USE_TAILCALLS
50465 MUSTTAIL return InterpNext(S);
50466#else
50467 return true;
50468#endif
50469}
50470#endif
50471#ifdef GET_DISASM
50472case OP_StartThisLifetime:
50473 Text.Op = PrintName("StartThisLifetime");
50474 break;
50475#endif
50476#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
50477bool emitStartThisLifetime(SourceInfo);
50478#endif
50479#ifdef GET_LINK_IMPL
50480bool ByteCodeEmitter::emitStartThisLifetime(SourceInfo L) {
50481 return emitOp<>(OP_StartThisLifetime, L);
50482}
50483#endif
50484#ifdef GET_EVAL_IMPL
50485bool EvalEmitter::emitStartThisLifetime(SourceInfo L) {
50486 if (!isActive()) return true;
50487 CurrentSource = L;
50488 return StartThisLifetime(S);
50489}
50490#endif
50491#ifdef GET_OPCODE_NAMES
50492OP_StartThisLifetime1,
50493#endif
50494#ifdef GET_INTERPFN_LIST
50495&Interp_StartThisLifetime1,
50496#endif
50497#ifdef GET_INTERPFN_DISPATCHERS
50498PRESERVE_NONE
50499static bool Interp_StartThisLifetime1(InterpState &S) {
50500 if (!StartThisLifetime1(S)) return false;
50501#if USE_TAILCALLS
50502 MUSTTAIL return InterpNext(S);
50503#else
50504 return true;
50505#endif
50506}
50507#endif
50508#ifdef GET_DISASM
50509case OP_StartThisLifetime1:
50510 Text.Op = PrintName("StartThisLifetime1");
50511 break;
50512#endif
50513#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
50514bool emitStartThisLifetime1(SourceInfo);
50515#endif
50516#ifdef GET_LINK_IMPL
50517bool ByteCodeEmitter::emitStartThisLifetime1(SourceInfo L) {
50518 return emitOp<>(OP_StartThisLifetime1, L);
50519}
50520#endif
50521#ifdef GET_EVAL_IMPL
50522bool EvalEmitter::emitStartThisLifetime1(SourceInfo L) {
50523 if (!isActive()) return true;
50524 CurrentSource = L;
50525 return StartThisLifetime1(S);
50526}
50527#endif
50528#ifdef GET_OPCODE_NAMES
50529OP_StoreSint8,
50530OP_StoreUint8,
50531OP_StoreSint16,
50532OP_StoreUint16,
50533OP_StoreSint32,
50534OP_StoreUint32,
50535OP_StoreSint64,
50536OP_StoreUint64,
50537OP_StoreIntAP,
50538OP_StoreIntAPS,
50539OP_StoreBool,
50540OP_StoreFixedPoint,
50541OP_StorePtr,
50542OP_StoreMemberPtr,
50543OP_StoreFloat,
50544#endif
50545#ifdef GET_INTERPFN_LIST
50546&Interp_StoreSint8,
50547&Interp_StoreUint8,
50548&Interp_StoreSint16,
50549&Interp_StoreUint16,
50550&Interp_StoreSint32,
50551&Interp_StoreUint32,
50552&Interp_StoreSint64,
50553&Interp_StoreUint64,
50554&Interp_StoreIntAP,
50555&Interp_StoreIntAPS,
50556&Interp_StoreBool,
50557&Interp_StoreFixedPoint,
50558&Interp_StorePtr,
50559&Interp_StoreMemberPtr,
50560&Interp_StoreFloat,
50561#endif
50562#ifdef GET_INTERPFN_DISPATCHERS
50563PRESERVE_NONE
50564static bool Interp_StoreSint8(InterpState &S) {
50565 if (!Store<PT_Sint8>(S, S.PC)) return false;
50566#if USE_TAILCALLS
50567 MUSTTAIL return InterpNext(S);
50568#else
50569 return true;
50570#endif
50571}
50572PRESERVE_NONE
50573static bool Interp_StoreUint8(InterpState &S) {
50574 if (!Store<PT_Uint8>(S, S.PC)) return false;
50575#if USE_TAILCALLS
50576 MUSTTAIL return InterpNext(S);
50577#else
50578 return true;
50579#endif
50580}
50581PRESERVE_NONE
50582static bool Interp_StoreSint16(InterpState &S) {
50583 if (!Store<PT_Sint16>(S, S.PC)) return false;
50584#if USE_TAILCALLS
50585 MUSTTAIL return InterpNext(S);
50586#else
50587 return true;
50588#endif
50589}
50590PRESERVE_NONE
50591static bool Interp_StoreUint16(InterpState &S) {
50592 if (!Store<PT_Uint16>(S, S.PC)) return false;
50593#if USE_TAILCALLS
50594 MUSTTAIL return InterpNext(S);
50595#else
50596 return true;
50597#endif
50598}
50599PRESERVE_NONE
50600static bool Interp_StoreSint32(InterpState &S) {
50601 if (!Store<PT_Sint32>(S, S.PC)) return false;
50602#if USE_TAILCALLS
50603 MUSTTAIL return InterpNext(S);
50604#else
50605 return true;
50606#endif
50607}
50608PRESERVE_NONE
50609static bool Interp_StoreUint32(InterpState &S) {
50610 if (!Store<PT_Uint32>(S, S.PC)) return false;
50611#if USE_TAILCALLS
50612 MUSTTAIL return InterpNext(S);
50613#else
50614 return true;
50615#endif
50616}
50617PRESERVE_NONE
50618static bool Interp_StoreSint64(InterpState &S) {
50619 if (!Store<PT_Sint64>(S, S.PC)) return false;
50620#if USE_TAILCALLS
50621 MUSTTAIL return InterpNext(S);
50622#else
50623 return true;
50624#endif
50625}
50626PRESERVE_NONE
50627static bool Interp_StoreUint64(InterpState &S) {
50628 if (!Store<PT_Uint64>(S, S.PC)) return false;
50629#if USE_TAILCALLS
50630 MUSTTAIL return InterpNext(S);
50631#else
50632 return true;
50633#endif
50634}
50635PRESERVE_NONE
50636static bool Interp_StoreIntAP(InterpState &S) {
50637 if (!Store<PT_IntAP>(S, S.PC)) return false;
50638#if USE_TAILCALLS
50639 MUSTTAIL return InterpNext(S);
50640#else
50641 return true;
50642#endif
50643}
50644PRESERVE_NONE
50645static bool Interp_StoreIntAPS(InterpState &S) {
50646 if (!Store<PT_IntAPS>(S, S.PC)) return false;
50647#if USE_TAILCALLS
50648 MUSTTAIL return InterpNext(S);
50649#else
50650 return true;
50651#endif
50652}
50653PRESERVE_NONE
50654static bool Interp_StoreBool(InterpState &S) {
50655 if (!Store<PT_Bool>(S, S.PC)) return false;
50656#if USE_TAILCALLS
50657 MUSTTAIL return InterpNext(S);
50658#else
50659 return true;
50660#endif
50661}
50662PRESERVE_NONE
50663static bool Interp_StoreFixedPoint(InterpState &S) {
50664 if (!Store<PT_FixedPoint>(S, S.PC)) return false;
50665#if USE_TAILCALLS
50666 MUSTTAIL return InterpNext(S);
50667#else
50668 return true;
50669#endif
50670}
50671PRESERVE_NONE
50672static bool Interp_StorePtr(InterpState &S) {
50673 if (!Store<PT_Ptr>(S, S.PC)) return false;
50674#if USE_TAILCALLS
50675 MUSTTAIL return InterpNext(S);
50676#else
50677 return true;
50678#endif
50679}
50680PRESERVE_NONE
50681static bool Interp_StoreMemberPtr(InterpState &S) {
50682 if (!Store<PT_MemberPtr>(S, S.PC)) return false;
50683#if USE_TAILCALLS
50684 MUSTTAIL return InterpNext(S);
50685#else
50686 return true;
50687#endif
50688}
50689PRESERVE_NONE
50690static bool Interp_StoreFloat(InterpState &S) {
50691 if (!Store<PT_Float>(S, S.PC)) return false;
50692#if USE_TAILCALLS
50693 MUSTTAIL return InterpNext(S);
50694#else
50695 return true;
50696#endif
50697}
50698#endif
50699#ifdef GET_DISASM
50700case OP_StoreSint8:
50701 Text.Op = PrintName("StoreSint8");
50702 break;
50703case OP_StoreUint8:
50704 Text.Op = PrintName("StoreUint8");
50705 break;
50706case OP_StoreSint16:
50707 Text.Op = PrintName("StoreSint16");
50708 break;
50709case OP_StoreUint16:
50710 Text.Op = PrintName("StoreUint16");
50711 break;
50712case OP_StoreSint32:
50713 Text.Op = PrintName("StoreSint32");
50714 break;
50715case OP_StoreUint32:
50716 Text.Op = PrintName("StoreUint32");
50717 break;
50718case OP_StoreSint64:
50719 Text.Op = PrintName("StoreSint64");
50720 break;
50721case OP_StoreUint64:
50722 Text.Op = PrintName("StoreUint64");
50723 break;
50724case OP_StoreIntAP:
50725 Text.Op = PrintName("StoreIntAP");
50726 break;
50727case OP_StoreIntAPS:
50728 Text.Op = PrintName("StoreIntAPS");
50729 break;
50730case OP_StoreBool:
50731 Text.Op = PrintName("StoreBool");
50732 break;
50733case OP_StoreFixedPoint:
50734 Text.Op = PrintName("StoreFixedPoint");
50735 break;
50736case OP_StorePtr:
50737 Text.Op = PrintName("StorePtr");
50738 break;
50739case OP_StoreMemberPtr:
50740 Text.Op = PrintName("StoreMemberPtr");
50741 break;
50742case OP_StoreFloat:
50743 Text.Op = PrintName("StoreFloat");
50744 break;
50745#endif
50746#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
50747bool emitStoreSint8(SourceInfo);
50748bool emitStoreUint8(SourceInfo);
50749bool emitStoreSint16(SourceInfo);
50750bool emitStoreUint16(SourceInfo);
50751bool emitStoreSint32(SourceInfo);
50752bool emitStoreUint32(SourceInfo);
50753bool emitStoreSint64(SourceInfo);
50754bool emitStoreUint64(SourceInfo);
50755bool emitStoreIntAP(SourceInfo);
50756bool emitStoreIntAPS(SourceInfo);
50757bool emitStoreBool(SourceInfo);
50758bool emitStoreFixedPoint(SourceInfo);
50759bool emitStorePtr(SourceInfo);
50760bool emitStoreMemberPtr(SourceInfo);
50761bool emitStoreFloat(SourceInfo);
50762#endif
50763#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
50764[[nodiscard]] bool emitStore(PrimType, SourceInfo I);
50765#endif
50766#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
50767bool
50768#if defined(GET_EVAL_IMPL)
50769EvalEmitter
50770#else
50771ByteCodeEmitter
50772#endif
50773::emitStore(PrimType T0, SourceInfo I) {
50774 switch (T0) {
50775 case PT_Sint8:
50776 return emitStoreSint8(I);
50777 case PT_Uint8:
50778 return emitStoreUint8(I);
50779 case PT_Sint16:
50780 return emitStoreSint16(I);
50781 case PT_Uint16:
50782 return emitStoreUint16(I);
50783 case PT_Sint32:
50784 return emitStoreSint32(I);
50785 case PT_Uint32:
50786 return emitStoreUint32(I);
50787 case PT_Sint64:
50788 return emitStoreSint64(I);
50789 case PT_Uint64:
50790 return emitStoreUint64(I);
50791 case PT_IntAP:
50792 return emitStoreIntAP(I);
50793 case PT_IntAPS:
50794 return emitStoreIntAPS(I);
50795 case PT_Bool:
50796 return emitStoreBool(I);
50797 case PT_FixedPoint:
50798 return emitStoreFixedPoint(I);
50799 case PT_Ptr:
50800 return emitStorePtr(I);
50801 case PT_MemberPtr:
50802 return emitStoreMemberPtr(I);
50803 case PT_Float:
50804 return emitStoreFloat(I);
50805 }
50806 llvm_unreachable("invalid enum value");
50807}
50808#endif
50809#ifdef GET_LINK_IMPL
50810bool ByteCodeEmitter::emitStoreSint8(SourceInfo L) {
50811 return emitOp<>(OP_StoreSint8, L);
50812}
50813bool ByteCodeEmitter::emitStoreUint8(SourceInfo L) {
50814 return emitOp<>(OP_StoreUint8, L);
50815}
50816bool ByteCodeEmitter::emitStoreSint16(SourceInfo L) {
50817 return emitOp<>(OP_StoreSint16, L);
50818}
50819bool ByteCodeEmitter::emitStoreUint16(SourceInfo L) {
50820 return emitOp<>(OP_StoreUint16, L);
50821}
50822bool ByteCodeEmitter::emitStoreSint32(SourceInfo L) {
50823 return emitOp<>(OP_StoreSint32, L);
50824}
50825bool ByteCodeEmitter::emitStoreUint32(SourceInfo L) {
50826 return emitOp<>(OP_StoreUint32, L);
50827}
50828bool ByteCodeEmitter::emitStoreSint64(SourceInfo L) {
50829 return emitOp<>(OP_StoreSint64, L);
50830}
50831bool ByteCodeEmitter::emitStoreUint64(SourceInfo L) {
50832 return emitOp<>(OP_StoreUint64, L);
50833}
50834bool ByteCodeEmitter::emitStoreIntAP(SourceInfo L) {
50835 return emitOp<>(OP_StoreIntAP, L);
50836}
50837bool ByteCodeEmitter::emitStoreIntAPS(SourceInfo L) {
50838 return emitOp<>(OP_StoreIntAPS, L);
50839}
50840bool ByteCodeEmitter::emitStoreBool(SourceInfo L) {
50841 return emitOp<>(OP_StoreBool, L);
50842}
50843bool ByteCodeEmitter::emitStoreFixedPoint(SourceInfo L) {
50844 return emitOp<>(OP_StoreFixedPoint, L);
50845}
50846bool ByteCodeEmitter::emitStorePtr(SourceInfo L) {
50847 return emitOp<>(OP_StorePtr, L);
50848}
50849bool ByteCodeEmitter::emitStoreMemberPtr(SourceInfo L) {
50850 return emitOp<>(OP_StoreMemberPtr, L);
50851}
50852bool ByteCodeEmitter::emitStoreFloat(SourceInfo L) {
50853 return emitOp<>(OP_StoreFloat, L);
50854}
50855#endif
50856#ifdef GET_EVAL_IMPL
50857bool EvalEmitter::emitStoreSint8(SourceInfo L) {
50858 if (!isActive()) return true;
50859 CurrentSource = L;
50860 return Store<PT_Sint8>(S, CodePtr());
50861}
50862bool EvalEmitter::emitStoreUint8(SourceInfo L) {
50863 if (!isActive()) return true;
50864 CurrentSource = L;
50865 return Store<PT_Uint8>(S, CodePtr());
50866}
50867bool EvalEmitter::emitStoreSint16(SourceInfo L) {
50868 if (!isActive()) return true;
50869 CurrentSource = L;
50870 return Store<PT_Sint16>(S, CodePtr());
50871}
50872bool EvalEmitter::emitStoreUint16(SourceInfo L) {
50873 if (!isActive()) return true;
50874 CurrentSource = L;
50875 return Store<PT_Uint16>(S, CodePtr());
50876}
50877bool EvalEmitter::emitStoreSint32(SourceInfo L) {
50878 if (!isActive()) return true;
50879 CurrentSource = L;
50880 return Store<PT_Sint32>(S, CodePtr());
50881}
50882bool EvalEmitter::emitStoreUint32(SourceInfo L) {
50883 if (!isActive()) return true;
50884 CurrentSource = L;
50885 return Store<PT_Uint32>(S, CodePtr());
50886}
50887bool EvalEmitter::emitStoreSint64(SourceInfo L) {
50888 if (!isActive()) return true;
50889 CurrentSource = L;
50890 return Store<PT_Sint64>(S, CodePtr());
50891}
50892bool EvalEmitter::emitStoreUint64(SourceInfo L) {
50893 if (!isActive()) return true;
50894 CurrentSource = L;
50895 return Store<PT_Uint64>(S, CodePtr());
50896}
50897bool EvalEmitter::emitStoreIntAP(SourceInfo L) {
50898 if (!isActive()) return true;
50899 CurrentSource = L;
50900 return Store<PT_IntAP>(S, CodePtr());
50901}
50902bool EvalEmitter::emitStoreIntAPS(SourceInfo L) {
50903 if (!isActive()) return true;
50904 CurrentSource = L;
50905 return Store<PT_IntAPS>(S, CodePtr());
50906}
50907bool EvalEmitter::emitStoreBool(SourceInfo L) {
50908 if (!isActive()) return true;
50909 CurrentSource = L;
50910 return Store<PT_Bool>(S, CodePtr());
50911}
50912bool EvalEmitter::emitStoreFixedPoint(SourceInfo L) {
50913 if (!isActive()) return true;
50914 CurrentSource = L;
50915 return Store<PT_FixedPoint>(S, CodePtr());
50916}
50917bool EvalEmitter::emitStorePtr(SourceInfo L) {
50918 if (!isActive()) return true;
50919 CurrentSource = L;
50920 return Store<PT_Ptr>(S, CodePtr());
50921}
50922bool EvalEmitter::emitStoreMemberPtr(SourceInfo L) {
50923 if (!isActive()) return true;
50924 CurrentSource = L;
50925 return Store<PT_MemberPtr>(S, CodePtr());
50926}
50927bool EvalEmitter::emitStoreFloat(SourceInfo L) {
50928 if (!isActive()) return true;
50929 CurrentSource = L;
50930 return Store<PT_Float>(S, CodePtr());
50931}
50932#endif
50933#ifdef GET_OPCODE_NAMES
50934OP_StoreActivateSint8,
50935OP_StoreActivateUint8,
50936OP_StoreActivateSint16,
50937OP_StoreActivateUint16,
50938OP_StoreActivateSint32,
50939OP_StoreActivateUint32,
50940OP_StoreActivateSint64,
50941OP_StoreActivateUint64,
50942OP_StoreActivateIntAP,
50943OP_StoreActivateIntAPS,
50944OP_StoreActivateBool,
50945OP_StoreActivateFixedPoint,
50946OP_StoreActivatePtr,
50947OP_StoreActivateMemberPtr,
50948OP_StoreActivateFloat,
50949#endif
50950#ifdef GET_INTERPFN_LIST
50951&Interp_StoreActivateSint8,
50952&Interp_StoreActivateUint8,
50953&Interp_StoreActivateSint16,
50954&Interp_StoreActivateUint16,
50955&Interp_StoreActivateSint32,
50956&Interp_StoreActivateUint32,
50957&Interp_StoreActivateSint64,
50958&Interp_StoreActivateUint64,
50959&Interp_StoreActivateIntAP,
50960&Interp_StoreActivateIntAPS,
50961&Interp_StoreActivateBool,
50962&Interp_StoreActivateFixedPoint,
50963&Interp_StoreActivatePtr,
50964&Interp_StoreActivateMemberPtr,
50965&Interp_StoreActivateFloat,
50966#endif
50967#ifdef GET_INTERPFN_DISPATCHERS
50968PRESERVE_NONE
50969static bool Interp_StoreActivateSint8(InterpState &S) {
50970 if (!StoreActivate<PT_Sint8>(S, S.PC)) return false;
50971#if USE_TAILCALLS
50972 MUSTTAIL return InterpNext(S);
50973#else
50974 return true;
50975#endif
50976}
50977PRESERVE_NONE
50978static bool Interp_StoreActivateUint8(InterpState &S) {
50979 if (!StoreActivate<PT_Uint8>(S, S.PC)) return false;
50980#if USE_TAILCALLS
50981 MUSTTAIL return InterpNext(S);
50982#else
50983 return true;
50984#endif
50985}
50986PRESERVE_NONE
50987static bool Interp_StoreActivateSint16(InterpState &S) {
50988 if (!StoreActivate<PT_Sint16>(S, S.PC)) return false;
50989#if USE_TAILCALLS
50990 MUSTTAIL return InterpNext(S);
50991#else
50992 return true;
50993#endif
50994}
50995PRESERVE_NONE
50996static bool Interp_StoreActivateUint16(InterpState &S) {
50997 if (!StoreActivate<PT_Uint16>(S, S.PC)) return false;
50998#if USE_TAILCALLS
50999 MUSTTAIL return InterpNext(S);
51000#else
51001 return true;
51002#endif
51003}
51004PRESERVE_NONE
51005static bool Interp_StoreActivateSint32(InterpState &S) {
51006 if (!StoreActivate<PT_Sint32>(S, S.PC)) return false;
51007#if USE_TAILCALLS
51008 MUSTTAIL return InterpNext(S);
51009#else
51010 return true;
51011#endif
51012}
51013PRESERVE_NONE
51014static bool Interp_StoreActivateUint32(InterpState &S) {
51015 if (!StoreActivate<PT_Uint32>(S, S.PC)) return false;
51016#if USE_TAILCALLS
51017 MUSTTAIL return InterpNext(S);
51018#else
51019 return true;
51020#endif
51021}
51022PRESERVE_NONE
51023static bool Interp_StoreActivateSint64(InterpState &S) {
51024 if (!StoreActivate<PT_Sint64>(S, S.PC)) return false;
51025#if USE_TAILCALLS
51026 MUSTTAIL return InterpNext(S);
51027#else
51028 return true;
51029#endif
51030}
51031PRESERVE_NONE
51032static bool Interp_StoreActivateUint64(InterpState &S) {
51033 if (!StoreActivate<PT_Uint64>(S, S.PC)) return false;
51034#if USE_TAILCALLS
51035 MUSTTAIL return InterpNext(S);
51036#else
51037 return true;
51038#endif
51039}
51040PRESERVE_NONE
51041static bool Interp_StoreActivateIntAP(InterpState &S) {
51042 if (!StoreActivate<PT_IntAP>(S, S.PC)) return false;
51043#if USE_TAILCALLS
51044 MUSTTAIL return InterpNext(S);
51045#else
51046 return true;
51047#endif
51048}
51049PRESERVE_NONE
51050static bool Interp_StoreActivateIntAPS(InterpState &S) {
51051 if (!StoreActivate<PT_IntAPS>(S, S.PC)) return false;
51052#if USE_TAILCALLS
51053 MUSTTAIL return InterpNext(S);
51054#else
51055 return true;
51056#endif
51057}
51058PRESERVE_NONE
51059static bool Interp_StoreActivateBool(InterpState &S) {
51060 if (!StoreActivate<PT_Bool>(S, S.PC)) return false;
51061#if USE_TAILCALLS
51062 MUSTTAIL return InterpNext(S);
51063#else
51064 return true;
51065#endif
51066}
51067PRESERVE_NONE
51068static bool Interp_StoreActivateFixedPoint(InterpState &S) {
51069 if (!StoreActivate<PT_FixedPoint>(S, S.PC)) return false;
51070#if USE_TAILCALLS
51071 MUSTTAIL return InterpNext(S);
51072#else
51073 return true;
51074#endif
51075}
51076PRESERVE_NONE
51077static bool Interp_StoreActivatePtr(InterpState &S) {
51078 if (!StoreActivate<PT_Ptr>(S, S.PC)) return false;
51079#if USE_TAILCALLS
51080 MUSTTAIL return InterpNext(S);
51081#else
51082 return true;
51083#endif
51084}
51085PRESERVE_NONE
51086static bool Interp_StoreActivateMemberPtr(InterpState &S) {
51087 if (!StoreActivate<PT_MemberPtr>(S, S.PC)) return false;
51088#if USE_TAILCALLS
51089 MUSTTAIL return InterpNext(S);
51090#else
51091 return true;
51092#endif
51093}
51094PRESERVE_NONE
51095static bool Interp_StoreActivateFloat(InterpState &S) {
51096 if (!StoreActivate<PT_Float>(S, S.PC)) return false;
51097#if USE_TAILCALLS
51098 MUSTTAIL return InterpNext(S);
51099#else
51100 return true;
51101#endif
51102}
51103#endif
51104#ifdef GET_DISASM
51105case OP_StoreActivateSint8:
51106 Text.Op = PrintName("StoreActivateSint8");
51107 break;
51108case OP_StoreActivateUint8:
51109 Text.Op = PrintName("StoreActivateUint8");
51110 break;
51111case OP_StoreActivateSint16:
51112 Text.Op = PrintName("StoreActivateSint16");
51113 break;
51114case OP_StoreActivateUint16:
51115 Text.Op = PrintName("StoreActivateUint16");
51116 break;
51117case OP_StoreActivateSint32:
51118 Text.Op = PrintName("StoreActivateSint32");
51119 break;
51120case OP_StoreActivateUint32:
51121 Text.Op = PrintName("StoreActivateUint32");
51122 break;
51123case OP_StoreActivateSint64:
51124 Text.Op = PrintName("StoreActivateSint64");
51125 break;
51126case OP_StoreActivateUint64:
51127 Text.Op = PrintName("StoreActivateUint64");
51128 break;
51129case OP_StoreActivateIntAP:
51130 Text.Op = PrintName("StoreActivateIntAP");
51131 break;
51132case OP_StoreActivateIntAPS:
51133 Text.Op = PrintName("StoreActivateIntAPS");
51134 break;
51135case OP_StoreActivateBool:
51136 Text.Op = PrintName("StoreActivateBool");
51137 break;
51138case OP_StoreActivateFixedPoint:
51139 Text.Op = PrintName("StoreActivateFixedPoint");
51140 break;
51141case OP_StoreActivatePtr:
51142 Text.Op = PrintName("StoreActivatePtr");
51143 break;
51144case OP_StoreActivateMemberPtr:
51145 Text.Op = PrintName("StoreActivateMemberPtr");
51146 break;
51147case OP_StoreActivateFloat:
51148 Text.Op = PrintName("StoreActivateFloat");
51149 break;
51150#endif
51151#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51152bool emitStoreActivateSint8(SourceInfo);
51153bool emitStoreActivateUint8(SourceInfo);
51154bool emitStoreActivateSint16(SourceInfo);
51155bool emitStoreActivateUint16(SourceInfo);
51156bool emitStoreActivateSint32(SourceInfo);
51157bool emitStoreActivateUint32(SourceInfo);
51158bool emitStoreActivateSint64(SourceInfo);
51159bool emitStoreActivateUint64(SourceInfo);
51160bool emitStoreActivateIntAP(SourceInfo);
51161bool emitStoreActivateIntAPS(SourceInfo);
51162bool emitStoreActivateBool(SourceInfo);
51163bool emitStoreActivateFixedPoint(SourceInfo);
51164bool emitStoreActivatePtr(SourceInfo);
51165bool emitStoreActivateMemberPtr(SourceInfo);
51166bool emitStoreActivateFloat(SourceInfo);
51167#endif
51168#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51169[[nodiscard]] bool emitStoreActivate(PrimType, SourceInfo I);
51170#endif
51171#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
51172bool
51173#if defined(GET_EVAL_IMPL)
51174EvalEmitter
51175#else
51176ByteCodeEmitter
51177#endif
51178::emitStoreActivate(PrimType T0, SourceInfo I) {
51179 switch (T0) {
51180 case PT_Sint8:
51181 return emitStoreActivateSint8(I);
51182 case PT_Uint8:
51183 return emitStoreActivateUint8(I);
51184 case PT_Sint16:
51185 return emitStoreActivateSint16(I);
51186 case PT_Uint16:
51187 return emitStoreActivateUint16(I);
51188 case PT_Sint32:
51189 return emitStoreActivateSint32(I);
51190 case PT_Uint32:
51191 return emitStoreActivateUint32(I);
51192 case PT_Sint64:
51193 return emitStoreActivateSint64(I);
51194 case PT_Uint64:
51195 return emitStoreActivateUint64(I);
51196 case PT_IntAP:
51197 return emitStoreActivateIntAP(I);
51198 case PT_IntAPS:
51199 return emitStoreActivateIntAPS(I);
51200 case PT_Bool:
51201 return emitStoreActivateBool(I);
51202 case PT_FixedPoint:
51203 return emitStoreActivateFixedPoint(I);
51204 case PT_Ptr:
51205 return emitStoreActivatePtr(I);
51206 case PT_MemberPtr:
51207 return emitStoreActivateMemberPtr(I);
51208 case PT_Float:
51209 return emitStoreActivateFloat(I);
51210 }
51211 llvm_unreachable("invalid enum value");
51212}
51213#endif
51214#ifdef GET_LINK_IMPL
51215bool ByteCodeEmitter::emitStoreActivateSint8(SourceInfo L) {
51216 return emitOp<>(OP_StoreActivateSint8, L);
51217}
51218bool ByteCodeEmitter::emitStoreActivateUint8(SourceInfo L) {
51219 return emitOp<>(OP_StoreActivateUint8, L);
51220}
51221bool ByteCodeEmitter::emitStoreActivateSint16(SourceInfo L) {
51222 return emitOp<>(OP_StoreActivateSint16, L);
51223}
51224bool ByteCodeEmitter::emitStoreActivateUint16(SourceInfo L) {
51225 return emitOp<>(OP_StoreActivateUint16, L);
51226}
51227bool ByteCodeEmitter::emitStoreActivateSint32(SourceInfo L) {
51228 return emitOp<>(OP_StoreActivateSint32, L);
51229}
51230bool ByteCodeEmitter::emitStoreActivateUint32(SourceInfo L) {
51231 return emitOp<>(OP_StoreActivateUint32, L);
51232}
51233bool ByteCodeEmitter::emitStoreActivateSint64(SourceInfo L) {
51234 return emitOp<>(OP_StoreActivateSint64, L);
51235}
51236bool ByteCodeEmitter::emitStoreActivateUint64(SourceInfo L) {
51237 return emitOp<>(OP_StoreActivateUint64, L);
51238}
51239bool ByteCodeEmitter::emitStoreActivateIntAP(SourceInfo L) {
51240 return emitOp<>(OP_StoreActivateIntAP, L);
51241}
51242bool ByteCodeEmitter::emitStoreActivateIntAPS(SourceInfo L) {
51243 return emitOp<>(OP_StoreActivateIntAPS, L);
51244}
51245bool ByteCodeEmitter::emitStoreActivateBool(SourceInfo L) {
51246 return emitOp<>(OP_StoreActivateBool, L);
51247}
51248bool ByteCodeEmitter::emitStoreActivateFixedPoint(SourceInfo L) {
51249 return emitOp<>(OP_StoreActivateFixedPoint, L);
51250}
51251bool ByteCodeEmitter::emitStoreActivatePtr(SourceInfo L) {
51252 return emitOp<>(OP_StoreActivatePtr, L);
51253}
51254bool ByteCodeEmitter::emitStoreActivateMemberPtr(SourceInfo L) {
51255 return emitOp<>(OP_StoreActivateMemberPtr, L);
51256}
51257bool ByteCodeEmitter::emitStoreActivateFloat(SourceInfo L) {
51258 return emitOp<>(OP_StoreActivateFloat, L);
51259}
51260#endif
51261#ifdef GET_EVAL_IMPL
51262bool EvalEmitter::emitStoreActivateSint8(SourceInfo L) {
51263 if (!isActive()) return true;
51264 CurrentSource = L;
51265 return StoreActivate<PT_Sint8>(S, CodePtr());
51266}
51267bool EvalEmitter::emitStoreActivateUint8(SourceInfo L) {
51268 if (!isActive()) return true;
51269 CurrentSource = L;
51270 return StoreActivate<PT_Uint8>(S, CodePtr());
51271}
51272bool EvalEmitter::emitStoreActivateSint16(SourceInfo L) {
51273 if (!isActive()) return true;
51274 CurrentSource = L;
51275 return StoreActivate<PT_Sint16>(S, CodePtr());
51276}
51277bool EvalEmitter::emitStoreActivateUint16(SourceInfo L) {
51278 if (!isActive()) return true;
51279 CurrentSource = L;
51280 return StoreActivate<PT_Uint16>(S, CodePtr());
51281}
51282bool EvalEmitter::emitStoreActivateSint32(SourceInfo L) {
51283 if (!isActive()) return true;
51284 CurrentSource = L;
51285 return StoreActivate<PT_Sint32>(S, CodePtr());
51286}
51287bool EvalEmitter::emitStoreActivateUint32(SourceInfo L) {
51288 if (!isActive()) return true;
51289 CurrentSource = L;
51290 return StoreActivate<PT_Uint32>(S, CodePtr());
51291}
51292bool EvalEmitter::emitStoreActivateSint64(SourceInfo L) {
51293 if (!isActive()) return true;
51294 CurrentSource = L;
51295 return StoreActivate<PT_Sint64>(S, CodePtr());
51296}
51297bool EvalEmitter::emitStoreActivateUint64(SourceInfo L) {
51298 if (!isActive()) return true;
51299 CurrentSource = L;
51300 return StoreActivate<PT_Uint64>(S, CodePtr());
51301}
51302bool EvalEmitter::emitStoreActivateIntAP(SourceInfo L) {
51303 if (!isActive()) return true;
51304 CurrentSource = L;
51305 return StoreActivate<PT_IntAP>(S, CodePtr());
51306}
51307bool EvalEmitter::emitStoreActivateIntAPS(SourceInfo L) {
51308 if (!isActive()) return true;
51309 CurrentSource = L;
51310 return StoreActivate<PT_IntAPS>(S, CodePtr());
51311}
51312bool EvalEmitter::emitStoreActivateBool(SourceInfo L) {
51313 if (!isActive()) return true;
51314 CurrentSource = L;
51315 return StoreActivate<PT_Bool>(S, CodePtr());
51316}
51317bool EvalEmitter::emitStoreActivateFixedPoint(SourceInfo L) {
51318 if (!isActive()) return true;
51319 CurrentSource = L;
51320 return StoreActivate<PT_FixedPoint>(S, CodePtr());
51321}
51322bool EvalEmitter::emitStoreActivatePtr(SourceInfo L) {
51323 if (!isActive()) return true;
51324 CurrentSource = L;
51325 return StoreActivate<PT_Ptr>(S, CodePtr());
51326}
51327bool EvalEmitter::emitStoreActivateMemberPtr(SourceInfo L) {
51328 if (!isActive()) return true;
51329 CurrentSource = L;
51330 return StoreActivate<PT_MemberPtr>(S, CodePtr());
51331}
51332bool EvalEmitter::emitStoreActivateFloat(SourceInfo L) {
51333 if (!isActive()) return true;
51334 CurrentSource = L;
51335 return StoreActivate<PT_Float>(S, CodePtr());
51336}
51337#endif
51338#ifdef GET_OPCODE_NAMES
51339OP_StoreActivatePopSint8,
51340OP_StoreActivatePopUint8,
51341OP_StoreActivatePopSint16,
51342OP_StoreActivatePopUint16,
51343OP_StoreActivatePopSint32,
51344OP_StoreActivatePopUint32,
51345OP_StoreActivatePopSint64,
51346OP_StoreActivatePopUint64,
51347OP_StoreActivatePopIntAP,
51348OP_StoreActivatePopIntAPS,
51349OP_StoreActivatePopBool,
51350OP_StoreActivatePopFixedPoint,
51351OP_StoreActivatePopPtr,
51352OP_StoreActivatePopMemberPtr,
51353OP_StoreActivatePopFloat,
51354#endif
51355#ifdef GET_INTERPFN_LIST
51356&Interp_StoreActivatePopSint8,
51357&Interp_StoreActivatePopUint8,
51358&Interp_StoreActivatePopSint16,
51359&Interp_StoreActivatePopUint16,
51360&Interp_StoreActivatePopSint32,
51361&Interp_StoreActivatePopUint32,
51362&Interp_StoreActivatePopSint64,
51363&Interp_StoreActivatePopUint64,
51364&Interp_StoreActivatePopIntAP,
51365&Interp_StoreActivatePopIntAPS,
51366&Interp_StoreActivatePopBool,
51367&Interp_StoreActivatePopFixedPoint,
51368&Interp_StoreActivatePopPtr,
51369&Interp_StoreActivatePopMemberPtr,
51370&Interp_StoreActivatePopFloat,
51371#endif
51372#ifdef GET_INTERPFN_DISPATCHERS
51373PRESERVE_NONE
51374static bool Interp_StoreActivatePopSint8(InterpState &S) {
51375 if (!StoreActivatePop<PT_Sint8>(S, S.PC)) return false;
51376#if USE_TAILCALLS
51377 MUSTTAIL return InterpNext(S);
51378#else
51379 return true;
51380#endif
51381}
51382PRESERVE_NONE
51383static bool Interp_StoreActivatePopUint8(InterpState &S) {
51384 if (!StoreActivatePop<PT_Uint8>(S, S.PC)) return false;
51385#if USE_TAILCALLS
51386 MUSTTAIL return InterpNext(S);
51387#else
51388 return true;
51389#endif
51390}
51391PRESERVE_NONE
51392static bool Interp_StoreActivatePopSint16(InterpState &S) {
51393 if (!StoreActivatePop<PT_Sint16>(S, S.PC)) return false;
51394#if USE_TAILCALLS
51395 MUSTTAIL return InterpNext(S);
51396#else
51397 return true;
51398#endif
51399}
51400PRESERVE_NONE
51401static bool Interp_StoreActivatePopUint16(InterpState &S) {
51402 if (!StoreActivatePop<PT_Uint16>(S, S.PC)) return false;
51403#if USE_TAILCALLS
51404 MUSTTAIL return InterpNext(S);
51405#else
51406 return true;
51407#endif
51408}
51409PRESERVE_NONE
51410static bool Interp_StoreActivatePopSint32(InterpState &S) {
51411 if (!StoreActivatePop<PT_Sint32>(S, S.PC)) return false;
51412#if USE_TAILCALLS
51413 MUSTTAIL return InterpNext(S);
51414#else
51415 return true;
51416#endif
51417}
51418PRESERVE_NONE
51419static bool Interp_StoreActivatePopUint32(InterpState &S) {
51420 if (!StoreActivatePop<PT_Uint32>(S, S.PC)) return false;
51421#if USE_TAILCALLS
51422 MUSTTAIL return InterpNext(S);
51423#else
51424 return true;
51425#endif
51426}
51427PRESERVE_NONE
51428static bool Interp_StoreActivatePopSint64(InterpState &S) {
51429 if (!StoreActivatePop<PT_Sint64>(S, S.PC)) return false;
51430#if USE_TAILCALLS
51431 MUSTTAIL return InterpNext(S);
51432#else
51433 return true;
51434#endif
51435}
51436PRESERVE_NONE
51437static bool Interp_StoreActivatePopUint64(InterpState &S) {
51438 if (!StoreActivatePop<PT_Uint64>(S, S.PC)) return false;
51439#if USE_TAILCALLS
51440 MUSTTAIL return InterpNext(S);
51441#else
51442 return true;
51443#endif
51444}
51445PRESERVE_NONE
51446static bool Interp_StoreActivatePopIntAP(InterpState &S) {
51447 if (!StoreActivatePop<PT_IntAP>(S, S.PC)) return false;
51448#if USE_TAILCALLS
51449 MUSTTAIL return InterpNext(S);
51450#else
51451 return true;
51452#endif
51453}
51454PRESERVE_NONE
51455static bool Interp_StoreActivatePopIntAPS(InterpState &S) {
51456 if (!StoreActivatePop<PT_IntAPS>(S, S.PC)) return false;
51457#if USE_TAILCALLS
51458 MUSTTAIL return InterpNext(S);
51459#else
51460 return true;
51461#endif
51462}
51463PRESERVE_NONE
51464static bool Interp_StoreActivatePopBool(InterpState &S) {
51465 if (!StoreActivatePop<PT_Bool>(S, S.PC)) return false;
51466#if USE_TAILCALLS
51467 MUSTTAIL return InterpNext(S);
51468#else
51469 return true;
51470#endif
51471}
51472PRESERVE_NONE
51473static bool Interp_StoreActivatePopFixedPoint(InterpState &S) {
51474 if (!StoreActivatePop<PT_FixedPoint>(S, S.PC)) return false;
51475#if USE_TAILCALLS
51476 MUSTTAIL return InterpNext(S);
51477#else
51478 return true;
51479#endif
51480}
51481PRESERVE_NONE
51482static bool Interp_StoreActivatePopPtr(InterpState &S) {
51483 if (!StoreActivatePop<PT_Ptr>(S, S.PC)) return false;
51484#if USE_TAILCALLS
51485 MUSTTAIL return InterpNext(S);
51486#else
51487 return true;
51488#endif
51489}
51490PRESERVE_NONE
51491static bool Interp_StoreActivatePopMemberPtr(InterpState &S) {
51492 if (!StoreActivatePop<PT_MemberPtr>(S, S.PC)) return false;
51493#if USE_TAILCALLS
51494 MUSTTAIL return InterpNext(S);
51495#else
51496 return true;
51497#endif
51498}
51499PRESERVE_NONE
51500static bool Interp_StoreActivatePopFloat(InterpState &S) {
51501 if (!StoreActivatePop<PT_Float>(S, S.PC)) return false;
51502#if USE_TAILCALLS
51503 MUSTTAIL return InterpNext(S);
51504#else
51505 return true;
51506#endif
51507}
51508#endif
51509#ifdef GET_DISASM
51510case OP_StoreActivatePopSint8:
51511 Text.Op = PrintName("StoreActivatePopSint8");
51512 break;
51513case OP_StoreActivatePopUint8:
51514 Text.Op = PrintName("StoreActivatePopUint8");
51515 break;
51516case OP_StoreActivatePopSint16:
51517 Text.Op = PrintName("StoreActivatePopSint16");
51518 break;
51519case OP_StoreActivatePopUint16:
51520 Text.Op = PrintName("StoreActivatePopUint16");
51521 break;
51522case OP_StoreActivatePopSint32:
51523 Text.Op = PrintName("StoreActivatePopSint32");
51524 break;
51525case OP_StoreActivatePopUint32:
51526 Text.Op = PrintName("StoreActivatePopUint32");
51527 break;
51528case OP_StoreActivatePopSint64:
51529 Text.Op = PrintName("StoreActivatePopSint64");
51530 break;
51531case OP_StoreActivatePopUint64:
51532 Text.Op = PrintName("StoreActivatePopUint64");
51533 break;
51534case OP_StoreActivatePopIntAP:
51535 Text.Op = PrintName("StoreActivatePopIntAP");
51536 break;
51537case OP_StoreActivatePopIntAPS:
51538 Text.Op = PrintName("StoreActivatePopIntAPS");
51539 break;
51540case OP_StoreActivatePopBool:
51541 Text.Op = PrintName("StoreActivatePopBool");
51542 break;
51543case OP_StoreActivatePopFixedPoint:
51544 Text.Op = PrintName("StoreActivatePopFixedPoint");
51545 break;
51546case OP_StoreActivatePopPtr:
51547 Text.Op = PrintName("StoreActivatePopPtr");
51548 break;
51549case OP_StoreActivatePopMemberPtr:
51550 Text.Op = PrintName("StoreActivatePopMemberPtr");
51551 break;
51552case OP_StoreActivatePopFloat:
51553 Text.Op = PrintName("StoreActivatePopFloat");
51554 break;
51555#endif
51556#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51557bool emitStoreActivatePopSint8(SourceInfo);
51558bool emitStoreActivatePopUint8(SourceInfo);
51559bool emitStoreActivatePopSint16(SourceInfo);
51560bool emitStoreActivatePopUint16(SourceInfo);
51561bool emitStoreActivatePopSint32(SourceInfo);
51562bool emitStoreActivatePopUint32(SourceInfo);
51563bool emitStoreActivatePopSint64(SourceInfo);
51564bool emitStoreActivatePopUint64(SourceInfo);
51565bool emitStoreActivatePopIntAP(SourceInfo);
51566bool emitStoreActivatePopIntAPS(SourceInfo);
51567bool emitStoreActivatePopBool(SourceInfo);
51568bool emitStoreActivatePopFixedPoint(SourceInfo);
51569bool emitStoreActivatePopPtr(SourceInfo);
51570bool emitStoreActivatePopMemberPtr(SourceInfo);
51571bool emitStoreActivatePopFloat(SourceInfo);
51572#endif
51573#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51574[[nodiscard]] bool emitStoreActivatePop(PrimType, SourceInfo I);
51575#endif
51576#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
51577bool
51578#if defined(GET_EVAL_IMPL)
51579EvalEmitter
51580#else
51581ByteCodeEmitter
51582#endif
51583::emitStoreActivatePop(PrimType T0, SourceInfo I) {
51584 switch (T0) {
51585 case PT_Sint8:
51586 return emitStoreActivatePopSint8(I);
51587 case PT_Uint8:
51588 return emitStoreActivatePopUint8(I);
51589 case PT_Sint16:
51590 return emitStoreActivatePopSint16(I);
51591 case PT_Uint16:
51592 return emitStoreActivatePopUint16(I);
51593 case PT_Sint32:
51594 return emitStoreActivatePopSint32(I);
51595 case PT_Uint32:
51596 return emitStoreActivatePopUint32(I);
51597 case PT_Sint64:
51598 return emitStoreActivatePopSint64(I);
51599 case PT_Uint64:
51600 return emitStoreActivatePopUint64(I);
51601 case PT_IntAP:
51602 return emitStoreActivatePopIntAP(I);
51603 case PT_IntAPS:
51604 return emitStoreActivatePopIntAPS(I);
51605 case PT_Bool:
51606 return emitStoreActivatePopBool(I);
51607 case PT_FixedPoint:
51608 return emitStoreActivatePopFixedPoint(I);
51609 case PT_Ptr:
51610 return emitStoreActivatePopPtr(I);
51611 case PT_MemberPtr:
51612 return emitStoreActivatePopMemberPtr(I);
51613 case PT_Float:
51614 return emitStoreActivatePopFloat(I);
51615 }
51616 llvm_unreachable("invalid enum value");
51617}
51618#endif
51619#ifdef GET_LINK_IMPL
51620bool ByteCodeEmitter::emitStoreActivatePopSint8(SourceInfo L) {
51621 return emitOp<>(OP_StoreActivatePopSint8, L);
51622}
51623bool ByteCodeEmitter::emitStoreActivatePopUint8(SourceInfo L) {
51624 return emitOp<>(OP_StoreActivatePopUint8, L);
51625}
51626bool ByteCodeEmitter::emitStoreActivatePopSint16(SourceInfo L) {
51627 return emitOp<>(OP_StoreActivatePopSint16, L);
51628}
51629bool ByteCodeEmitter::emitStoreActivatePopUint16(SourceInfo L) {
51630 return emitOp<>(OP_StoreActivatePopUint16, L);
51631}
51632bool ByteCodeEmitter::emitStoreActivatePopSint32(SourceInfo L) {
51633 return emitOp<>(OP_StoreActivatePopSint32, L);
51634}
51635bool ByteCodeEmitter::emitStoreActivatePopUint32(SourceInfo L) {
51636 return emitOp<>(OP_StoreActivatePopUint32, L);
51637}
51638bool ByteCodeEmitter::emitStoreActivatePopSint64(SourceInfo L) {
51639 return emitOp<>(OP_StoreActivatePopSint64, L);
51640}
51641bool ByteCodeEmitter::emitStoreActivatePopUint64(SourceInfo L) {
51642 return emitOp<>(OP_StoreActivatePopUint64, L);
51643}
51644bool ByteCodeEmitter::emitStoreActivatePopIntAP(SourceInfo L) {
51645 return emitOp<>(OP_StoreActivatePopIntAP, L);
51646}
51647bool ByteCodeEmitter::emitStoreActivatePopIntAPS(SourceInfo L) {
51648 return emitOp<>(OP_StoreActivatePopIntAPS, L);
51649}
51650bool ByteCodeEmitter::emitStoreActivatePopBool(SourceInfo L) {
51651 return emitOp<>(OP_StoreActivatePopBool, L);
51652}
51653bool ByteCodeEmitter::emitStoreActivatePopFixedPoint(SourceInfo L) {
51654 return emitOp<>(OP_StoreActivatePopFixedPoint, L);
51655}
51656bool ByteCodeEmitter::emitStoreActivatePopPtr(SourceInfo L) {
51657 return emitOp<>(OP_StoreActivatePopPtr, L);
51658}
51659bool ByteCodeEmitter::emitStoreActivatePopMemberPtr(SourceInfo L) {
51660 return emitOp<>(OP_StoreActivatePopMemberPtr, L);
51661}
51662bool ByteCodeEmitter::emitStoreActivatePopFloat(SourceInfo L) {
51663 return emitOp<>(OP_StoreActivatePopFloat, L);
51664}
51665#endif
51666#ifdef GET_EVAL_IMPL
51667bool EvalEmitter::emitStoreActivatePopSint8(SourceInfo L) {
51668 if (!isActive()) return true;
51669 CurrentSource = L;
51670 return StoreActivatePop<PT_Sint8>(S, CodePtr());
51671}
51672bool EvalEmitter::emitStoreActivatePopUint8(SourceInfo L) {
51673 if (!isActive()) return true;
51674 CurrentSource = L;
51675 return StoreActivatePop<PT_Uint8>(S, CodePtr());
51676}
51677bool EvalEmitter::emitStoreActivatePopSint16(SourceInfo L) {
51678 if (!isActive()) return true;
51679 CurrentSource = L;
51680 return StoreActivatePop<PT_Sint16>(S, CodePtr());
51681}
51682bool EvalEmitter::emitStoreActivatePopUint16(SourceInfo L) {
51683 if (!isActive()) return true;
51684 CurrentSource = L;
51685 return StoreActivatePop<PT_Uint16>(S, CodePtr());
51686}
51687bool EvalEmitter::emitStoreActivatePopSint32(SourceInfo L) {
51688 if (!isActive()) return true;
51689 CurrentSource = L;
51690 return StoreActivatePop<PT_Sint32>(S, CodePtr());
51691}
51692bool EvalEmitter::emitStoreActivatePopUint32(SourceInfo L) {
51693 if (!isActive()) return true;
51694 CurrentSource = L;
51695 return StoreActivatePop<PT_Uint32>(S, CodePtr());
51696}
51697bool EvalEmitter::emitStoreActivatePopSint64(SourceInfo L) {
51698 if (!isActive()) return true;
51699 CurrentSource = L;
51700 return StoreActivatePop<PT_Sint64>(S, CodePtr());
51701}
51702bool EvalEmitter::emitStoreActivatePopUint64(SourceInfo L) {
51703 if (!isActive()) return true;
51704 CurrentSource = L;
51705 return StoreActivatePop<PT_Uint64>(S, CodePtr());
51706}
51707bool EvalEmitter::emitStoreActivatePopIntAP(SourceInfo L) {
51708 if (!isActive()) return true;
51709 CurrentSource = L;
51710 return StoreActivatePop<PT_IntAP>(S, CodePtr());
51711}
51712bool EvalEmitter::emitStoreActivatePopIntAPS(SourceInfo L) {
51713 if (!isActive()) return true;
51714 CurrentSource = L;
51715 return StoreActivatePop<PT_IntAPS>(S, CodePtr());
51716}
51717bool EvalEmitter::emitStoreActivatePopBool(SourceInfo L) {
51718 if (!isActive()) return true;
51719 CurrentSource = L;
51720 return StoreActivatePop<PT_Bool>(S, CodePtr());
51721}
51722bool EvalEmitter::emitStoreActivatePopFixedPoint(SourceInfo L) {
51723 if (!isActive()) return true;
51724 CurrentSource = L;
51725 return StoreActivatePop<PT_FixedPoint>(S, CodePtr());
51726}
51727bool EvalEmitter::emitStoreActivatePopPtr(SourceInfo L) {
51728 if (!isActive()) return true;
51729 CurrentSource = L;
51730 return StoreActivatePop<PT_Ptr>(S, CodePtr());
51731}
51732bool EvalEmitter::emitStoreActivatePopMemberPtr(SourceInfo L) {
51733 if (!isActive()) return true;
51734 CurrentSource = L;
51735 return StoreActivatePop<PT_MemberPtr>(S, CodePtr());
51736}
51737bool EvalEmitter::emitStoreActivatePopFloat(SourceInfo L) {
51738 if (!isActive()) return true;
51739 CurrentSource = L;
51740 return StoreActivatePop<PT_Float>(S, CodePtr());
51741}
51742#endif
51743#ifdef GET_OPCODE_NAMES
51744OP_StoreBitFieldSint8,
51745OP_StoreBitFieldUint8,
51746OP_StoreBitFieldSint16,
51747OP_StoreBitFieldUint16,
51748OP_StoreBitFieldSint32,
51749OP_StoreBitFieldUint32,
51750OP_StoreBitFieldSint64,
51751OP_StoreBitFieldUint64,
51752OP_StoreBitFieldIntAP,
51753OP_StoreBitFieldIntAPS,
51754OP_StoreBitFieldBool,
51755OP_StoreBitFieldFixedPoint,
51756#endif
51757#ifdef GET_INTERPFN_LIST
51758&Interp_StoreBitFieldSint8,
51759&Interp_StoreBitFieldUint8,
51760&Interp_StoreBitFieldSint16,
51761&Interp_StoreBitFieldUint16,
51762&Interp_StoreBitFieldSint32,
51763&Interp_StoreBitFieldUint32,
51764&Interp_StoreBitFieldSint64,
51765&Interp_StoreBitFieldUint64,
51766&Interp_StoreBitFieldIntAP,
51767&Interp_StoreBitFieldIntAPS,
51768&Interp_StoreBitFieldBool,
51769&Interp_StoreBitFieldFixedPoint,
51770#endif
51771#ifdef GET_INTERPFN_DISPATCHERS
51772PRESERVE_NONE
51773static bool Interp_StoreBitFieldSint8(InterpState &S) {
51774 if (!StoreBitField<PT_Sint8>(S, S.PC)) return false;
51775#if USE_TAILCALLS
51776 MUSTTAIL return InterpNext(S);
51777#else
51778 return true;
51779#endif
51780}
51781PRESERVE_NONE
51782static bool Interp_StoreBitFieldUint8(InterpState &S) {
51783 if (!StoreBitField<PT_Uint8>(S, S.PC)) return false;
51784#if USE_TAILCALLS
51785 MUSTTAIL return InterpNext(S);
51786#else
51787 return true;
51788#endif
51789}
51790PRESERVE_NONE
51791static bool Interp_StoreBitFieldSint16(InterpState &S) {
51792 if (!StoreBitField<PT_Sint16>(S, S.PC)) return false;
51793#if USE_TAILCALLS
51794 MUSTTAIL return InterpNext(S);
51795#else
51796 return true;
51797#endif
51798}
51799PRESERVE_NONE
51800static bool Interp_StoreBitFieldUint16(InterpState &S) {
51801 if (!StoreBitField<PT_Uint16>(S, S.PC)) return false;
51802#if USE_TAILCALLS
51803 MUSTTAIL return InterpNext(S);
51804#else
51805 return true;
51806#endif
51807}
51808PRESERVE_NONE
51809static bool Interp_StoreBitFieldSint32(InterpState &S) {
51810 if (!StoreBitField<PT_Sint32>(S, S.PC)) return false;
51811#if USE_TAILCALLS
51812 MUSTTAIL return InterpNext(S);
51813#else
51814 return true;
51815#endif
51816}
51817PRESERVE_NONE
51818static bool Interp_StoreBitFieldUint32(InterpState &S) {
51819 if (!StoreBitField<PT_Uint32>(S, S.PC)) return false;
51820#if USE_TAILCALLS
51821 MUSTTAIL return InterpNext(S);
51822#else
51823 return true;
51824#endif
51825}
51826PRESERVE_NONE
51827static bool Interp_StoreBitFieldSint64(InterpState &S) {
51828 if (!StoreBitField<PT_Sint64>(S, S.PC)) return false;
51829#if USE_TAILCALLS
51830 MUSTTAIL return InterpNext(S);
51831#else
51832 return true;
51833#endif
51834}
51835PRESERVE_NONE
51836static bool Interp_StoreBitFieldUint64(InterpState &S) {
51837 if (!StoreBitField<PT_Uint64>(S, S.PC)) return false;
51838#if USE_TAILCALLS
51839 MUSTTAIL return InterpNext(S);
51840#else
51841 return true;
51842#endif
51843}
51844PRESERVE_NONE
51845static bool Interp_StoreBitFieldIntAP(InterpState &S) {
51846 if (!StoreBitField<PT_IntAP>(S, S.PC)) return false;
51847#if USE_TAILCALLS
51848 MUSTTAIL return InterpNext(S);
51849#else
51850 return true;
51851#endif
51852}
51853PRESERVE_NONE
51854static bool Interp_StoreBitFieldIntAPS(InterpState &S) {
51855 if (!StoreBitField<PT_IntAPS>(S, S.PC)) return false;
51856#if USE_TAILCALLS
51857 MUSTTAIL return InterpNext(S);
51858#else
51859 return true;
51860#endif
51861}
51862PRESERVE_NONE
51863static bool Interp_StoreBitFieldBool(InterpState &S) {
51864 if (!StoreBitField<PT_Bool>(S, S.PC)) return false;
51865#if USE_TAILCALLS
51866 MUSTTAIL return InterpNext(S);
51867#else
51868 return true;
51869#endif
51870}
51871PRESERVE_NONE
51872static bool Interp_StoreBitFieldFixedPoint(InterpState &S) {
51873 if (!StoreBitField<PT_FixedPoint>(S, S.PC)) return false;
51874#if USE_TAILCALLS
51875 MUSTTAIL return InterpNext(S);
51876#else
51877 return true;
51878#endif
51879}
51880#endif
51881#ifdef GET_DISASM
51882case OP_StoreBitFieldSint8:
51883 Text.Op = PrintName("StoreBitFieldSint8");
51884 break;
51885case OP_StoreBitFieldUint8:
51886 Text.Op = PrintName("StoreBitFieldUint8");
51887 break;
51888case OP_StoreBitFieldSint16:
51889 Text.Op = PrintName("StoreBitFieldSint16");
51890 break;
51891case OP_StoreBitFieldUint16:
51892 Text.Op = PrintName("StoreBitFieldUint16");
51893 break;
51894case OP_StoreBitFieldSint32:
51895 Text.Op = PrintName("StoreBitFieldSint32");
51896 break;
51897case OP_StoreBitFieldUint32:
51898 Text.Op = PrintName("StoreBitFieldUint32");
51899 break;
51900case OP_StoreBitFieldSint64:
51901 Text.Op = PrintName("StoreBitFieldSint64");
51902 break;
51903case OP_StoreBitFieldUint64:
51904 Text.Op = PrintName("StoreBitFieldUint64");
51905 break;
51906case OP_StoreBitFieldIntAP:
51907 Text.Op = PrintName("StoreBitFieldIntAP");
51908 break;
51909case OP_StoreBitFieldIntAPS:
51910 Text.Op = PrintName("StoreBitFieldIntAPS");
51911 break;
51912case OP_StoreBitFieldBool:
51913 Text.Op = PrintName("StoreBitFieldBool");
51914 break;
51915case OP_StoreBitFieldFixedPoint:
51916 Text.Op = PrintName("StoreBitFieldFixedPoint");
51917 break;
51918#endif
51919#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51920bool emitStoreBitFieldSint8(SourceInfo);
51921bool emitStoreBitFieldUint8(SourceInfo);
51922bool emitStoreBitFieldSint16(SourceInfo);
51923bool emitStoreBitFieldUint16(SourceInfo);
51924bool emitStoreBitFieldSint32(SourceInfo);
51925bool emitStoreBitFieldUint32(SourceInfo);
51926bool emitStoreBitFieldSint64(SourceInfo);
51927bool emitStoreBitFieldUint64(SourceInfo);
51928bool emitStoreBitFieldIntAP(SourceInfo);
51929bool emitStoreBitFieldIntAPS(SourceInfo);
51930bool emitStoreBitFieldBool(SourceInfo);
51931bool emitStoreBitFieldFixedPoint(SourceInfo);
51932#endif
51933#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51934[[nodiscard]] bool emitStoreBitField(PrimType, SourceInfo I);
51935#endif
51936#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
51937bool
51938#if defined(GET_EVAL_IMPL)
51939EvalEmitter
51940#else
51941ByteCodeEmitter
51942#endif
51943::emitStoreBitField(PrimType T0, SourceInfo I) {
51944 switch (T0) {
51945 case PT_Sint8:
51946 return emitStoreBitFieldSint8(I);
51947 case PT_Uint8:
51948 return emitStoreBitFieldUint8(I);
51949 case PT_Sint16:
51950 return emitStoreBitFieldSint16(I);
51951 case PT_Uint16:
51952 return emitStoreBitFieldUint16(I);
51953 case PT_Sint32:
51954 return emitStoreBitFieldSint32(I);
51955 case PT_Uint32:
51956 return emitStoreBitFieldUint32(I);
51957 case PT_Sint64:
51958 return emitStoreBitFieldSint64(I);
51959 case PT_Uint64:
51960 return emitStoreBitFieldUint64(I);
51961 case PT_IntAP:
51962 return emitStoreBitFieldIntAP(I);
51963 case PT_IntAPS:
51964 return emitStoreBitFieldIntAPS(I);
51965 case PT_Bool:
51966 return emitStoreBitFieldBool(I);
51967 case PT_FixedPoint:
51968 return emitStoreBitFieldFixedPoint(I);
51969 default: llvm_unreachable("invalid type: emitStoreBitField");
51970 }
51971 llvm_unreachable("invalid enum value");
51972}
51973#endif
51974#ifdef GET_LINK_IMPL
51975bool ByteCodeEmitter::emitStoreBitFieldSint8(SourceInfo L) {
51976 return emitOp<>(OP_StoreBitFieldSint8, L);
51977}
51978bool ByteCodeEmitter::emitStoreBitFieldUint8(SourceInfo L) {
51979 return emitOp<>(OP_StoreBitFieldUint8, L);
51980}
51981bool ByteCodeEmitter::emitStoreBitFieldSint16(SourceInfo L) {
51982 return emitOp<>(OP_StoreBitFieldSint16, L);
51983}
51984bool ByteCodeEmitter::emitStoreBitFieldUint16(SourceInfo L) {
51985 return emitOp<>(OP_StoreBitFieldUint16, L);
51986}
51987bool ByteCodeEmitter::emitStoreBitFieldSint32(SourceInfo L) {
51988 return emitOp<>(OP_StoreBitFieldSint32, L);
51989}
51990bool ByteCodeEmitter::emitStoreBitFieldUint32(SourceInfo L) {
51991 return emitOp<>(OP_StoreBitFieldUint32, L);
51992}
51993bool ByteCodeEmitter::emitStoreBitFieldSint64(SourceInfo L) {
51994 return emitOp<>(OP_StoreBitFieldSint64, L);
51995}
51996bool ByteCodeEmitter::emitStoreBitFieldUint64(SourceInfo L) {
51997 return emitOp<>(OP_StoreBitFieldUint64, L);
51998}
51999bool ByteCodeEmitter::emitStoreBitFieldIntAP(SourceInfo L) {
52000 return emitOp<>(OP_StoreBitFieldIntAP, L);
52001}
52002bool ByteCodeEmitter::emitStoreBitFieldIntAPS(SourceInfo L) {
52003 return emitOp<>(OP_StoreBitFieldIntAPS, L);
52004}
52005bool ByteCodeEmitter::emitStoreBitFieldBool(SourceInfo L) {
52006 return emitOp<>(OP_StoreBitFieldBool, L);
52007}
52008bool ByteCodeEmitter::emitStoreBitFieldFixedPoint(SourceInfo L) {
52009 return emitOp<>(OP_StoreBitFieldFixedPoint, L);
52010}
52011#endif
52012#ifdef GET_EVAL_IMPL
52013bool EvalEmitter::emitStoreBitFieldSint8(SourceInfo L) {
52014 if (!isActive()) return true;
52015 CurrentSource = L;
52016 return StoreBitField<PT_Sint8>(S, CodePtr());
52017}
52018bool EvalEmitter::emitStoreBitFieldUint8(SourceInfo L) {
52019 if (!isActive()) return true;
52020 CurrentSource = L;
52021 return StoreBitField<PT_Uint8>(S, CodePtr());
52022}
52023bool EvalEmitter::emitStoreBitFieldSint16(SourceInfo L) {
52024 if (!isActive()) return true;
52025 CurrentSource = L;
52026 return StoreBitField<PT_Sint16>(S, CodePtr());
52027}
52028bool EvalEmitter::emitStoreBitFieldUint16(SourceInfo L) {
52029 if (!isActive()) return true;
52030 CurrentSource = L;
52031 return StoreBitField<PT_Uint16>(S, CodePtr());
52032}
52033bool EvalEmitter::emitStoreBitFieldSint32(SourceInfo L) {
52034 if (!isActive()) return true;
52035 CurrentSource = L;
52036 return StoreBitField<PT_Sint32>(S, CodePtr());
52037}
52038bool EvalEmitter::emitStoreBitFieldUint32(SourceInfo L) {
52039 if (!isActive()) return true;
52040 CurrentSource = L;
52041 return StoreBitField<PT_Uint32>(S, CodePtr());
52042}
52043bool EvalEmitter::emitStoreBitFieldSint64(SourceInfo L) {
52044 if (!isActive()) return true;
52045 CurrentSource = L;
52046 return StoreBitField<PT_Sint64>(S, CodePtr());
52047}
52048bool EvalEmitter::emitStoreBitFieldUint64(SourceInfo L) {
52049 if (!isActive()) return true;
52050 CurrentSource = L;
52051 return StoreBitField<PT_Uint64>(S, CodePtr());
52052}
52053bool EvalEmitter::emitStoreBitFieldIntAP(SourceInfo L) {
52054 if (!isActive()) return true;
52055 CurrentSource = L;
52056 return StoreBitField<PT_IntAP>(S, CodePtr());
52057}
52058bool EvalEmitter::emitStoreBitFieldIntAPS(SourceInfo L) {
52059 if (!isActive()) return true;
52060 CurrentSource = L;
52061 return StoreBitField<PT_IntAPS>(S, CodePtr());
52062}
52063bool EvalEmitter::emitStoreBitFieldBool(SourceInfo L) {
52064 if (!isActive()) return true;
52065 CurrentSource = L;
52066 return StoreBitField<PT_Bool>(S, CodePtr());
52067}
52068bool EvalEmitter::emitStoreBitFieldFixedPoint(SourceInfo L) {
52069 if (!isActive()) return true;
52070 CurrentSource = L;
52071 return StoreBitField<PT_FixedPoint>(S, CodePtr());
52072}
52073#endif
52074#ifdef GET_OPCODE_NAMES
52075OP_StoreBitFieldActivateSint8,
52076OP_StoreBitFieldActivateUint8,
52077OP_StoreBitFieldActivateSint16,
52078OP_StoreBitFieldActivateUint16,
52079OP_StoreBitFieldActivateSint32,
52080OP_StoreBitFieldActivateUint32,
52081OP_StoreBitFieldActivateSint64,
52082OP_StoreBitFieldActivateUint64,
52083OP_StoreBitFieldActivateIntAP,
52084OP_StoreBitFieldActivateIntAPS,
52085OP_StoreBitFieldActivateBool,
52086OP_StoreBitFieldActivateFixedPoint,
52087#endif
52088#ifdef GET_INTERPFN_LIST
52089&Interp_StoreBitFieldActivateSint8,
52090&Interp_StoreBitFieldActivateUint8,
52091&Interp_StoreBitFieldActivateSint16,
52092&Interp_StoreBitFieldActivateUint16,
52093&Interp_StoreBitFieldActivateSint32,
52094&Interp_StoreBitFieldActivateUint32,
52095&Interp_StoreBitFieldActivateSint64,
52096&Interp_StoreBitFieldActivateUint64,
52097&Interp_StoreBitFieldActivateIntAP,
52098&Interp_StoreBitFieldActivateIntAPS,
52099&Interp_StoreBitFieldActivateBool,
52100&Interp_StoreBitFieldActivateFixedPoint,
52101#endif
52102#ifdef GET_INTERPFN_DISPATCHERS
52103PRESERVE_NONE
52104static bool Interp_StoreBitFieldActivateSint8(InterpState &S) {
52105 if (!StoreBitFieldActivate<PT_Sint8>(S, S.PC)) return false;
52106#if USE_TAILCALLS
52107 MUSTTAIL return InterpNext(S);
52108#else
52109 return true;
52110#endif
52111}
52112PRESERVE_NONE
52113static bool Interp_StoreBitFieldActivateUint8(InterpState &S) {
52114 if (!StoreBitFieldActivate<PT_Uint8>(S, S.PC)) return false;
52115#if USE_TAILCALLS
52116 MUSTTAIL return InterpNext(S);
52117#else
52118 return true;
52119#endif
52120}
52121PRESERVE_NONE
52122static bool Interp_StoreBitFieldActivateSint16(InterpState &S) {
52123 if (!StoreBitFieldActivate<PT_Sint16>(S, S.PC)) return false;
52124#if USE_TAILCALLS
52125 MUSTTAIL return InterpNext(S);
52126#else
52127 return true;
52128#endif
52129}
52130PRESERVE_NONE
52131static bool Interp_StoreBitFieldActivateUint16(InterpState &S) {
52132 if (!StoreBitFieldActivate<PT_Uint16>(S, S.PC)) return false;
52133#if USE_TAILCALLS
52134 MUSTTAIL return InterpNext(S);
52135#else
52136 return true;
52137#endif
52138}
52139PRESERVE_NONE
52140static bool Interp_StoreBitFieldActivateSint32(InterpState &S) {
52141 if (!StoreBitFieldActivate<PT_Sint32>(S, S.PC)) return false;
52142#if USE_TAILCALLS
52143 MUSTTAIL return InterpNext(S);
52144#else
52145 return true;
52146#endif
52147}
52148PRESERVE_NONE
52149static bool Interp_StoreBitFieldActivateUint32(InterpState &S) {
52150 if (!StoreBitFieldActivate<PT_Uint32>(S, S.PC)) return false;
52151#if USE_TAILCALLS
52152 MUSTTAIL return InterpNext(S);
52153#else
52154 return true;
52155#endif
52156}
52157PRESERVE_NONE
52158static bool Interp_StoreBitFieldActivateSint64(InterpState &S) {
52159 if (!StoreBitFieldActivate<PT_Sint64>(S, S.PC)) return false;
52160#if USE_TAILCALLS
52161 MUSTTAIL return InterpNext(S);
52162#else
52163 return true;
52164#endif
52165}
52166PRESERVE_NONE
52167static bool Interp_StoreBitFieldActivateUint64(InterpState &S) {
52168 if (!StoreBitFieldActivate<PT_Uint64>(S, S.PC)) return false;
52169#if USE_TAILCALLS
52170 MUSTTAIL return InterpNext(S);
52171#else
52172 return true;
52173#endif
52174}
52175PRESERVE_NONE
52176static bool Interp_StoreBitFieldActivateIntAP(InterpState &S) {
52177 if (!StoreBitFieldActivate<PT_IntAP>(S, S.PC)) return false;
52178#if USE_TAILCALLS
52179 MUSTTAIL return InterpNext(S);
52180#else
52181 return true;
52182#endif
52183}
52184PRESERVE_NONE
52185static bool Interp_StoreBitFieldActivateIntAPS(InterpState &S) {
52186 if (!StoreBitFieldActivate<PT_IntAPS>(S, S.PC)) return false;
52187#if USE_TAILCALLS
52188 MUSTTAIL return InterpNext(S);
52189#else
52190 return true;
52191#endif
52192}
52193PRESERVE_NONE
52194static bool Interp_StoreBitFieldActivateBool(InterpState &S) {
52195 if (!StoreBitFieldActivate<PT_Bool>(S, S.PC)) return false;
52196#if USE_TAILCALLS
52197 MUSTTAIL return InterpNext(S);
52198#else
52199 return true;
52200#endif
52201}
52202PRESERVE_NONE
52203static bool Interp_StoreBitFieldActivateFixedPoint(InterpState &S) {
52204 if (!StoreBitFieldActivate<PT_FixedPoint>(S, S.PC)) return false;
52205#if USE_TAILCALLS
52206 MUSTTAIL return InterpNext(S);
52207#else
52208 return true;
52209#endif
52210}
52211#endif
52212#ifdef GET_DISASM
52213case OP_StoreBitFieldActivateSint8:
52214 Text.Op = PrintName("StoreBitFieldActivateSint8");
52215 break;
52216case OP_StoreBitFieldActivateUint8:
52217 Text.Op = PrintName("StoreBitFieldActivateUint8");
52218 break;
52219case OP_StoreBitFieldActivateSint16:
52220 Text.Op = PrintName("StoreBitFieldActivateSint16");
52221 break;
52222case OP_StoreBitFieldActivateUint16:
52223 Text.Op = PrintName("StoreBitFieldActivateUint16");
52224 break;
52225case OP_StoreBitFieldActivateSint32:
52226 Text.Op = PrintName("StoreBitFieldActivateSint32");
52227 break;
52228case OP_StoreBitFieldActivateUint32:
52229 Text.Op = PrintName("StoreBitFieldActivateUint32");
52230 break;
52231case OP_StoreBitFieldActivateSint64:
52232 Text.Op = PrintName("StoreBitFieldActivateSint64");
52233 break;
52234case OP_StoreBitFieldActivateUint64:
52235 Text.Op = PrintName("StoreBitFieldActivateUint64");
52236 break;
52237case OP_StoreBitFieldActivateIntAP:
52238 Text.Op = PrintName("StoreBitFieldActivateIntAP");
52239 break;
52240case OP_StoreBitFieldActivateIntAPS:
52241 Text.Op = PrintName("StoreBitFieldActivateIntAPS");
52242 break;
52243case OP_StoreBitFieldActivateBool:
52244 Text.Op = PrintName("StoreBitFieldActivateBool");
52245 break;
52246case OP_StoreBitFieldActivateFixedPoint:
52247 Text.Op = PrintName("StoreBitFieldActivateFixedPoint");
52248 break;
52249#endif
52250#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52251bool emitStoreBitFieldActivateSint8(SourceInfo);
52252bool emitStoreBitFieldActivateUint8(SourceInfo);
52253bool emitStoreBitFieldActivateSint16(SourceInfo);
52254bool emitStoreBitFieldActivateUint16(SourceInfo);
52255bool emitStoreBitFieldActivateSint32(SourceInfo);
52256bool emitStoreBitFieldActivateUint32(SourceInfo);
52257bool emitStoreBitFieldActivateSint64(SourceInfo);
52258bool emitStoreBitFieldActivateUint64(SourceInfo);
52259bool emitStoreBitFieldActivateIntAP(SourceInfo);
52260bool emitStoreBitFieldActivateIntAPS(SourceInfo);
52261bool emitStoreBitFieldActivateBool(SourceInfo);
52262bool emitStoreBitFieldActivateFixedPoint(SourceInfo);
52263#endif
52264#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52265[[nodiscard]] bool emitStoreBitFieldActivate(PrimType, SourceInfo I);
52266#endif
52267#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
52268bool
52269#if defined(GET_EVAL_IMPL)
52270EvalEmitter
52271#else
52272ByteCodeEmitter
52273#endif
52274::emitStoreBitFieldActivate(PrimType T0, SourceInfo I) {
52275 switch (T0) {
52276 case PT_Sint8:
52277 return emitStoreBitFieldActivateSint8(I);
52278 case PT_Uint8:
52279 return emitStoreBitFieldActivateUint8(I);
52280 case PT_Sint16:
52281 return emitStoreBitFieldActivateSint16(I);
52282 case PT_Uint16:
52283 return emitStoreBitFieldActivateUint16(I);
52284 case PT_Sint32:
52285 return emitStoreBitFieldActivateSint32(I);
52286 case PT_Uint32:
52287 return emitStoreBitFieldActivateUint32(I);
52288 case PT_Sint64:
52289 return emitStoreBitFieldActivateSint64(I);
52290 case PT_Uint64:
52291 return emitStoreBitFieldActivateUint64(I);
52292 case PT_IntAP:
52293 return emitStoreBitFieldActivateIntAP(I);
52294 case PT_IntAPS:
52295 return emitStoreBitFieldActivateIntAPS(I);
52296 case PT_Bool:
52297 return emitStoreBitFieldActivateBool(I);
52298 case PT_FixedPoint:
52299 return emitStoreBitFieldActivateFixedPoint(I);
52300 default: llvm_unreachable("invalid type: emitStoreBitFieldActivate");
52301 }
52302 llvm_unreachable("invalid enum value");
52303}
52304#endif
52305#ifdef GET_LINK_IMPL
52306bool ByteCodeEmitter::emitStoreBitFieldActivateSint8(SourceInfo L) {
52307 return emitOp<>(OP_StoreBitFieldActivateSint8, L);
52308}
52309bool ByteCodeEmitter::emitStoreBitFieldActivateUint8(SourceInfo L) {
52310 return emitOp<>(OP_StoreBitFieldActivateUint8, L);
52311}
52312bool ByteCodeEmitter::emitStoreBitFieldActivateSint16(SourceInfo L) {
52313 return emitOp<>(OP_StoreBitFieldActivateSint16, L);
52314}
52315bool ByteCodeEmitter::emitStoreBitFieldActivateUint16(SourceInfo L) {
52316 return emitOp<>(OP_StoreBitFieldActivateUint16, L);
52317}
52318bool ByteCodeEmitter::emitStoreBitFieldActivateSint32(SourceInfo L) {
52319 return emitOp<>(OP_StoreBitFieldActivateSint32, L);
52320}
52321bool ByteCodeEmitter::emitStoreBitFieldActivateUint32(SourceInfo L) {
52322 return emitOp<>(OP_StoreBitFieldActivateUint32, L);
52323}
52324bool ByteCodeEmitter::emitStoreBitFieldActivateSint64(SourceInfo L) {
52325 return emitOp<>(OP_StoreBitFieldActivateSint64, L);
52326}
52327bool ByteCodeEmitter::emitStoreBitFieldActivateUint64(SourceInfo L) {
52328 return emitOp<>(OP_StoreBitFieldActivateUint64, L);
52329}
52330bool ByteCodeEmitter::emitStoreBitFieldActivateIntAP(SourceInfo L) {
52331 return emitOp<>(OP_StoreBitFieldActivateIntAP, L);
52332}
52333bool ByteCodeEmitter::emitStoreBitFieldActivateIntAPS(SourceInfo L) {
52334 return emitOp<>(OP_StoreBitFieldActivateIntAPS, L);
52335}
52336bool ByteCodeEmitter::emitStoreBitFieldActivateBool(SourceInfo L) {
52337 return emitOp<>(OP_StoreBitFieldActivateBool, L);
52338}
52339bool ByteCodeEmitter::emitStoreBitFieldActivateFixedPoint(SourceInfo L) {
52340 return emitOp<>(OP_StoreBitFieldActivateFixedPoint, L);
52341}
52342#endif
52343#ifdef GET_EVAL_IMPL
52344bool EvalEmitter::emitStoreBitFieldActivateSint8(SourceInfo L) {
52345 if (!isActive()) return true;
52346 CurrentSource = L;
52347 return StoreBitFieldActivate<PT_Sint8>(S, CodePtr());
52348}
52349bool EvalEmitter::emitStoreBitFieldActivateUint8(SourceInfo L) {
52350 if (!isActive()) return true;
52351 CurrentSource = L;
52352 return StoreBitFieldActivate<PT_Uint8>(S, CodePtr());
52353}
52354bool EvalEmitter::emitStoreBitFieldActivateSint16(SourceInfo L) {
52355 if (!isActive()) return true;
52356 CurrentSource = L;
52357 return StoreBitFieldActivate<PT_Sint16>(S, CodePtr());
52358}
52359bool EvalEmitter::emitStoreBitFieldActivateUint16(SourceInfo L) {
52360 if (!isActive()) return true;
52361 CurrentSource = L;
52362 return StoreBitFieldActivate<PT_Uint16>(S, CodePtr());
52363}
52364bool EvalEmitter::emitStoreBitFieldActivateSint32(SourceInfo L) {
52365 if (!isActive()) return true;
52366 CurrentSource = L;
52367 return StoreBitFieldActivate<PT_Sint32>(S, CodePtr());
52368}
52369bool EvalEmitter::emitStoreBitFieldActivateUint32(SourceInfo L) {
52370 if (!isActive()) return true;
52371 CurrentSource = L;
52372 return StoreBitFieldActivate<PT_Uint32>(S, CodePtr());
52373}
52374bool EvalEmitter::emitStoreBitFieldActivateSint64(SourceInfo L) {
52375 if (!isActive()) return true;
52376 CurrentSource = L;
52377 return StoreBitFieldActivate<PT_Sint64>(S, CodePtr());
52378}
52379bool EvalEmitter::emitStoreBitFieldActivateUint64(SourceInfo L) {
52380 if (!isActive()) return true;
52381 CurrentSource = L;
52382 return StoreBitFieldActivate<PT_Uint64>(S, CodePtr());
52383}
52384bool EvalEmitter::emitStoreBitFieldActivateIntAP(SourceInfo L) {
52385 if (!isActive()) return true;
52386 CurrentSource = L;
52387 return StoreBitFieldActivate<PT_IntAP>(S, CodePtr());
52388}
52389bool EvalEmitter::emitStoreBitFieldActivateIntAPS(SourceInfo L) {
52390 if (!isActive()) return true;
52391 CurrentSource = L;
52392 return StoreBitFieldActivate<PT_IntAPS>(S, CodePtr());
52393}
52394bool EvalEmitter::emitStoreBitFieldActivateBool(SourceInfo L) {
52395 if (!isActive()) return true;
52396 CurrentSource = L;
52397 return StoreBitFieldActivate<PT_Bool>(S, CodePtr());
52398}
52399bool EvalEmitter::emitStoreBitFieldActivateFixedPoint(SourceInfo L) {
52400 if (!isActive()) return true;
52401 CurrentSource = L;
52402 return StoreBitFieldActivate<PT_FixedPoint>(S, CodePtr());
52403}
52404#endif
52405#ifdef GET_OPCODE_NAMES
52406OP_StoreBitFieldActivatePopSint8,
52407OP_StoreBitFieldActivatePopUint8,
52408OP_StoreBitFieldActivatePopSint16,
52409OP_StoreBitFieldActivatePopUint16,
52410OP_StoreBitFieldActivatePopSint32,
52411OP_StoreBitFieldActivatePopUint32,
52412OP_StoreBitFieldActivatePopSint64,
52413OP_StoreBitFieldActivatePopUint64,
52414OP_StoreBitFieldActivatePopIntAP,
52415OP_StoreBitFieldActivatePopIntAPS,
52416OP_StoreBitFieldActivatePopBool,
52417OP_StoreBitFieldActivatePopFixedPoint,
52418#endif
52419#ifdef GET_INTERPFN_LIST
52420&Interp_StoreBitFieldActivatePopSint8,
52421&Interp_StoreBitFieldActivatePopUint8,
52422&Interp_StoreBitFieldActivatePopSint16,
52423&Interp_StoreBitFieldActivatePopUint16,
52424&Interp_StoreBitFieldActivatePopSint32,
52425&Interp_StoreBitFieldActivatePopUint32,
52426&Interp_StoreBitFieldActivatePopSint64,
52427&Interp_StoreBitFieldActivatePopUint64,
52428&Interp_StoreBitFieldActivatePopIntAP,
52429&Interp_StoreBitFieldActivatePopIntAPS,
52430&Interp_StoreBitFieldActivatePopBool,
52431&Interp_StoreBitFieldActivatePopFixedPoint,
52432#endif
52433#ifdef GET_INTERPFN_DISPATCHERS
52434PRESERVE_NONE
52435static bool Interp_StoreBitFieldActivatePopSint8(InterpState &S) {
52436 if (!StoreBitFieldActivatePop<PT_Sint8>(S, S.PC)) return false;
52437#if USE_TAILCALLS
52438 MUSTTAIL return InterpNext(S);
52439#else
52440 return true;
52441#endif
52442}
52443PRESERVE_NONE
52444static bool Interp_StoreBitFieldActivatePopUint8(InterpState &S) {
52445 if (!StoreBitFieldActivatePop<PT_Uint8>(S, S.PC)) return false;
52446#if USE_TAILCALLS
52447 MUSTTAIL return InterpNext(S);
52448#else
52449 return true;
52450#endif
52451}
52452PRESERVE_NONE
52453static bool Interp_StoreBitFieldActivatePopSint16(InterpState &S) {
52454 if (!StoreBitFieldActivatePop<PT_Sint16>(S, S.PC)) return false;
52455#if USE_TAILCALLS
52456 MUSTTAIL return InterpNext(S);
52457#else
52458 return true;
52459#endif
52460}
52461PRESERVE_NONE
52462static bool Interp_StoreBitFieldActivatePopUint16(InterpState &S) {
52463 if (!StoreBitFieldActivatePop<PT_Uint16>(S, S.PC)) return false;
52464#if USE_TAILCALLS
52465 MUSTTAIL return InterpNext(S);
52466#else
52467 return true;
52468#endif
52469}
52470PRESERVE_NONE
52471static bool Interp_StoreBitFieldActivatePopSint32(InterpState &S) {
52472 if (!StoreBitFieldActivatePop<PT_Sint32>(S, S.PC)) return false;
52473#if USE_TAILCALLS
52474 MUSTTAIL return InterpNext(S);
52475#else
52476 return true;
52477#endif
52478}
52479PRESERVE_NONE
52480static bool Interp_StoreBitFieldActivatePopUint32(InterpState &S) {
52481 if (!StoreBitFieldActivatePop<PT_Uint32>(S, S.PC)) return false;
52482#if USE_TAILCALLS
52483 MUSTTAIL return InterpNext(S);
52484#else
52485 return true;
52486#endif
52487}
52488PRESERVE_NONE
52489static bool Interp_StoreBitFieldActivatePopSint64(InterpState &S) {
52490 if (!StoreBitFieldActivatePop<PT_Sint64>(S, S.PC)) return false;
52491#if USE_TAILCALLS
52492 MUSTTAIL return InterpNext(S);
52493#else
52494 return true;
52495#endif
52496}
52497PRESERVE_NONE
52498static bool Interp_StoreBitFieldActivatePopUint64(InterpState &S) {
52499 if (!StoreBitFieldActivatePop<PT_Uint64>(S, S.PC)) return false;
52500#if USE_TAILCALLS
52501 MUSTTAIL return InterpNext(S);
52502#else
52503 return true;
52504#endif
52505}
52506PRESERVE_NONE
52507static bool Interp_StoreBitFieldActivatePopIntAP(InterpState &S) {
52508 if (!StoreBitFieldActivatePop<PT_IntAP>(S, S.PC)) return false;
52509#if USE_TAILCALLS
52510 MUSTTAIL return InterpNext(S);
52511#else
52512 return true;
52513#endif
52514}
52515PRESERVE_NONE
52516static bool Interp_StoreBitFieldActivatePopIntAPS(InterpState &S) {
52517 if (!StoreBitFieldActivatePop<PT_IntAPS>(S, S.PC)) return false;
52518#if USE_TAILCALLS
52519 MUSTTAIL return InterpNext(S);
52520#else
52521 return true;
52522#endif
52523}
52524PRESERVE_NONE
52525static bool Interp_StoreBitFieldActivatePopBool(InterpState &S) {
52526 if (!StoreBitFieldActivatePop<PT_Bool>(S, S.PC)) return false;
52527#if USE_TAILCALLS
52528 MUSTTAIL return InterpNext(S);
52529#else
52530 return true;
52531#endif
52532}
52533PRESERVE_NONE
52534static bool Interp_StoreBitFieldActivatePopFixedPoint(InterpState &S) {
52535 if (!StoreBitFieldActivatePop<PT_FixedPoint>(S, S.PC)) return false;
52536#if USE_TAILCALLS
52537 MUSTTAIL return InterpNext(S);
52538#else
52539 return true;
52540#endif
52541}
52542#endif
52543#ifdef GET_DISASM
52544case OP_StoreBitFieldActivatePopSint8:
52545 Text.Op = PrintName("StoreBitFieldActivatePopSint8");
52546 break;
52547case OP_StoreBitFieldActivatePopUint8:
52548 Text.Op = PrintName("StoreBitFieldActivatePopUint8");
52549 break;
52550case OP_StoreBitFieldActivatePopSint16:
52551 Text.Op = PrintName("StoreBitFieldActivatePopSint16");
52552 break;
52553case OP_StoreBitFieldActivatePopUint16:
52554 Text.Op = PrintName("StoreBitFieldActivatePopUint16");
52555 break;
52556case OP_StoreBitFieldActivatePopSint32:
52557 Text.Op = PrintName("StoreBitFieldActivatePopSint32");
52558 break;
52559case OP_StoreBitFieldActivatePopUint32:
52560 Text.Op = PrintName("StoreBitFieldActivatePopUint32");
52561 break;
52562case OP_StoreBitFieldActivatePopSint64:
52563 Text.Op = PrintName("StoreBitFieldActivatePopSint64");
52564 break;
52565case OP_StoreBitFieldActivatePopUint64:
52566 Text.Op = PrintName("StoreBitFieldActivatePopUint64");
52567 break;
52568case OP_StoreBitFieldActivatePopIntAP:
52569 Text.Op = PrintName("StoreBitFieldActivatePopIntAP");
52570 break;
52571case OP_StoreBitFieldActivatePopIntAPS:
52572 Text.Op = PrintName("StoreBitFieldActivatePopIntAPS");
52573 break;
52574case OP_StoreBitFieldActivatePopBool:
52575 Text.Op = PrintName("StoreBitFieldActivatePopBool");
52576 break;
52577case OP_StoreBitFieldActivatePopFixedPoint:
52578 Text.Op = PrintName("StoreBitFieldActivatePopFixedPoint");
52579 break;
52580#endif
52581#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52582bool emitStoreBitFieldActivatePopSint8(SourceInfo);
52583bool emitStoreBitFieldActivatePopUint8(SourceInfo);
52584bool emitStoreBitFieldActivatePopSint16(SourceInfo);
52585bool emitStoreBitFieldActivatePopUint16(SourceInfo);
52586bool emitStoreBitFieldActivatePopSint32(SourceInfo);
52587bool emitStoreBitFieldActivatePopUint32(SourceInfo);
52588bool emitStoreBitFieldActivatePopSint64(SourceInfo);
52589bool emitStoreBitFieldActivatePopUint64(SourceInfo);
52590bool emitStoreBitFieldActivatePopIntAP(SourceInfo);
52591bool emitStoreBitFieldActivatePopIntAPS(SourceInfo);
52592bool emitStoreBitFieldActivatePopBool(SourceInfo);
52593bool emitStoreBitFieldActivatePopFixedPoint(SourceInfo);
52594#endif
52595#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52596[[nodiscard]] bool emitStoreBitFieldActivatePop(PrimType, SourceInfo I);
52597#endif
52598#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
52599bool
52600#if defined(GET_EVAL_IMPL)
52601EvalEmitter
52602#else
52603ByteCodeEmitter
52604#endif
52605::emitStoreBitFieldActivatePop(PrimType T0, SourceInfo I) {
52606 switch (T0) {
52607 case PT_Sint8:
52608 return emitStoreBitFieldActivatePopSint8(I);
52609 case PT_Uint8:
52610 return emitStoreBitFieldActivatePopUint8(I);
52611 case PT_Sint16:
52612 return emitStoreBitFieldActivatePopSint16(I);
52613 case PT_Uint16:
52614 return emitStoreBitFieldActivatePopUint16(I);
52615 case PT_Sint32:
52616 return emitStoreBitFieldActivatePopSint32(I);
52617 case PT_Uint32:
52618 return emitStoreBitFieldActivatePopUint32(I);
52619 case PT_Sint64:
52620 return emitStoreBitFieldActivatePopSint64(I);
52621 case PT_Uint64:
52622 return emitStoreBitFieldActivatePopUint64(I);
52623 case PT_IntAP:
52624 return emitStoreBitFieldActivatePopIntAP(I);
52625 case PT_IntAPS:
52626 return emitStoreBitFieldActivatePopIntAPS(I);
52627 case PT_Bool:
52628 return emitStoreBitFieldActivatePopBool(I);
52629 case PT_FixedPoint:
52630 return emitStoreBitFieldActivatePopFixedPoint(I);
52631 default: llvm_unreachable("invalid type: emitStoreBitFieldActivatePop");
52632 }
52633 llvm_unreachable("invalid enum value");
52634}
52635#endif
52636#ifdef GET_LINK_IMPL
52637bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint8(SourceInfo L) {
52638 return emitOp<>(OP_StoreBitFieldActivatePopSint8, L);
52639}
52640bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint8(SourceInfo L) {
52641 return emitOp<>(OP_StoreBitFieldActivatePopUint8, L);
52642}
52643bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint16(SourceInfo L) {
52644 return emitOp<>(OP_StoreBitFieldActivatePopSint16, L);
52645}
52646bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint16(SourceInfo L) {
52647 return emitOp<>(OP_StoreBitFieldActivatePopUint16, L);
52648}
52649bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint32(SourceInfo L) {
52650 return emitOp<>(OP_StoreBitFieldActivatePopSint32, L);
52651}
52652bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint32(SourceInfo L) {
52653 return emitOp<>(OP_StoreBitFieldActivatePopUint32, L);
52654}
52655bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint64(SourceInfo L) {
52656 return emitOp<>(OP_StoreBitFieldActivatePopSint64, L);
52657}
52658bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint64(SourceInfo L) {
52659 return emitOp<>(OP_StoreBitFieldActivatePopUint64, L);
52660}
52661bool ByteCodeEmitter::emitStoreBitFieldActivatePopIntAP(SourceInfo L) {
52662 return emitOp<>(OP_StoreBitFieldActivatePopIntAP, L);
52663}
52664bool ByteCodeEmitter::emitStoreBitFieldActivatePopIntAPS(SourceInfo L) {
52665 return emitOp<>(OP_StoreBitFieldActivatePopIntAPS, L);
52666}
52667bool ByteCodeEmitter::emitStoreBitFieldActivatePopBool(SourceInfo L) {
52668 return emitOp<>(OP_StoreBitFieldActivatePopBool, L);
52669}
52670bool ByteCodeEmitter::emitStoreBitFieldActivatePopFixedPoint(SourceInfo L) {
52671 return emitOp<>(OP_StoreBitFieldActivatePopFixedPoint, L);
52672}
52673#endif
52674#ifdef GET_EVAL_IMPL
52675bool EvalEmitter::emitStoreBitFieldActivatePopSint8(SourceInfo L) {
52676 if (!isActive()) return true;
52677 CurrentSource = L;
52678 return StoreBitFieldActivatePop<PT_Sint8>(S, CodePtr());
52679}
52680bool EvalEmitter::emitStoreBitFieldActivatePopUint8(SourceInfo L) {
52681 if (!isActive()) return true;
52682 CurrentSource = L;
52683 return StoreBitFieldActivatePop<PT_Uint8>(S, CodePtr());
52684}
52685bool EvalEmitter::emitStoreBitFieldActivatePopSint16(SourceInfo L) {
52686 if (!isActive()) return true;
52687 CurrentSource = L;
52688 return StoreBitFieldActivatePop<PT_Sint16>(S, CodePtr());
52689}
52690bool EvalEmitter::emitStoreBitFieldActivatePopUint16(SourceInfo L) {
52691 if (!isActive()) return true;
52692 CurrentSource = L;
52693 return StoreBitFieldActivatePop<PT_Uint16>(S, CodePtr());
52694}
52695bool EvalEmitter::emitStoreBitFieldActivatePopSint32(SourceInfo L) {
52696 if (!isActive()) return true;
52697 CurrentSource = L;
52698 return StoreBitFieldActivatePop<PT_Sint32>(S, CodePtr());
52699}
52700bool EvalEmitter::emitStoreBitFieldActivatePopUint32(SourceInfo L) {
52701 if (!isActive()) return true;
52702 CurrentSource = L;
52703 return StoreBitFieldActivatePop<PT_Uint32>(S, CodePtr());
52704}
52705bool EvalEmitter::emitStoreBitFieldActivatePopSint64(SourceInfo L) {
52706 if (!isActive()) return true;
52707 CurrentSource = L;
52708 return StoreBitFieldActivatePop<PT_Sint64>(S, CodePtr());
52709}
52710bool EvalEmitter::emitStoreBitFieldActivatePopUint64(SourceInfo L) {
52711 if (!isActive()) return true;
52712 CurrentSource = L;
52713 return StoreBitFieldActivatePop<PT_Uint64>(S, CodePtr());
52714}
52715bool EvalEmitter::emitStoreBitFieldActivatePopIntAP(SourceInfo L) {
52716 if (!isActive()) return true;
52717 CurrentSource = L;
52718 return StoreBitFieldActivatePop<PT_IntAP>(S, CodePtr());
52719}
52720bool EvalEmitter::emitStoreBitFieldActivatePopIntAPS(SourceInfo L) {
52721 if (!isActive()) return true;
52722 CurrentSource = L;
52723 return StoreBitFieldActivatePop<PT_IntAPS>(S, CodePtr());
52724}
52725bool EvalEmitter::emitStoreBitFieldActivatePopBool(SourceInfo L) {
52726 if (!isActive()) return true;
52727 CurrentSource = L;
52728 return StoreBitFieldActivatePop<PT_Bool>(S, CodePtr());
52729}
52730bool EvalEmitter::emitStoreBitFieldActivatePopFixedPoint(SourceInfo L) {
52731 if (!isActive()) return true;
52732 CurrentSource = L;
52733 return StoreBitFieldActivatePop<PT_FixedPoint>(S, CodePtr());
52734}
52735#endif
52736#ifdef GET_OPCODE_NAMES
52737OP_StoreBitFieldPopSint8,
52738OP_StoreBitFieldPopUint8,
52739OP_StoreBitFieldPopSint16,
52740OP_StoreBitFieldPopUint16,
52741OP_StoreBitFieldPopSint32,
52742OP_StoreBitFieldPopUint32,
52743OP_StoreBitFieldPopSint64,
52744OP_StoreBitFieldPopUint64,
52745OP_StoreBitFieldPopIntAP,
52746OP_StoreBitFieldPopIntAPS,
52747OP_StoreBitFieldPopBool,
52748OP_StoreBitFieldPopFixedPoint,
52749#endif
52750#ifdef GET_INTERPFN_LIST
52751&Interp_StoreBitFieldPopSint8,
52752&Interp_StoreBitFieldPopUint8,
52753&Interp_StoreBitFieldPopSint16,
52754&Interp_StoreBitFieldPopUint16,
52755&Interp_StoreBitFieldPopSint32,
52756&Interp_StoreBitFieldPopUint32,
52757&Interp_StoreBitFieldPopSint64,
52758&Interp_StoreBitFieldPopUint64,
52759&Interp_StoreBitFieldPopIntAP,
52760&Interp_StoreBitFieldPopIntAPS,
52761&Interp_StoreBitFieldPopBool,
52762&Interp_StoreBitFieldPopFixedPoint,
52763#endif
52764#ifdef GET_INTERPFN_DISPATCHERS
52765PRESERVE_NONE
52766static bool Interp_StoreBitFieldPopSint8(InterpState &S) {
52767 if (!StoreBitFieldPop<PT_Sint8>(S, S.PC)) return false;
52768#if USE_TAILCALLS
52769 MUSTTAIL return InterpNext(S);
52770#else
52771 return true;
52772#endif
52773}
52774PRESERVE_NONE
52775static bool Interp_StoreBitFieldPopUint8(InterpState &S) {
52776 if (!StoreBitFieldPop<PT_Uint8>(S, S.PC)) return false;
52777#if USE_TAILCALLS
52778 MUSTTAIL return InterpNext(S);
52779#else
52780 return true;
52781#endif
52782}
52783PRESERVE_NONE
52784static bool Interp_StoreBitFieldPopSint16(InterpState &S) {
52785 if (!StoreBitFieldPop<PT_Sint16>(S, S.PC)) return false;
52786#if USE_TAILCALLS
52787 MUSTTAIL return InterpNext(S);
52788#else
52789 return true;
52790#endif
52791}
52792PRESERVE_NONE
52793static bool Interp_StoreBitFieldPopUint16(InterpState &S) {
52794 if (!StoreBitFieldPop<PT_Uint16>(S, S.PC)) return false;
52795#if USE_TAILCALLS
52796 MUSTTAIL return InterpNext(S);
52797#else
52798 return true;
52799#endif
52800}
52801PRESERVE_NONE
52802static bool Interp_StoreBitFieldPopSint32(InterpState &S) {
52803 if (!StoreBitFieldPop<PT_Sint32>(S, S.PC)) return false;
52804#if USE_TAILCALLS
52805 MUSTTAIL return InterpNext(S);
52806#else
52807 return true;
52808#endif
52809}
52810PRESERVE_NONE
52811static bool Interp_StoreBitFieldPopUint32(InterpState &S) {
52812 if (!StoreBitFieldPop<PT_Uint32>(S, S.PC)) return false;
52813#if USE_TAILCALLS
52814 MUSTTAIL return InterpNext(S);
52815#else
52816 return true;
52817#endif
52818}
52819PRESERVE_NONE
52820static bool Interp_StoreBitFieldPopSint64(InterpState &S) {
52821 if (!StoreBitFieldPop<PT_Sint64>(S, S.PC)) return false;
52822#if USE_TAILCALLS
52823 MUSTTAIL return InterpNext(S);
52824#else
52825 return true;
52826#endif
52827}
52828PRESERVE_NONE
52829static bool Interp_StoreBitFieldPopUint64(InterpState &S) {
52830 if (!StoreBitFieldPop<PT_Uint64>(S, S.PC)) return false;
52831#if USE_TAILCALLS
52832 MUSTTAIL return InterpNext(S);
52833#else
52834 return true;
52835#endif
52836}
52837PRESERVE_NONE
52838static bool Interp_StoreBitFieldPopIntAP(InterpState &S) {
52839 if (!StoreBitFieldPop<PT_IntAP>(S, S.PC)) return false;
52840#if USE_TAILCALLS
52841 MUSTTAIL return InterpNext(S);
52842#else
52843 return true;
52844#endif
52845}
52846PRESERVE_NONE
52847static bool Interp_StoreBitFieldPopIntAPS(InterpState &S) {
52848 if (!StoreBitFieldPop<PT_IntAPS>(S, S.PC)) return false;
52849#if USE_TAILCALLS
52850 MUSTTAIL return InterpNext(S);
52851#else
52852 return true;
52853#endif
52854}
52855PRESERVE_NONE
52856static bool Interp_StoreBitFieldPopBool(InterpState &S) {
52857 if (!StoreBitFieldPop<PT_Bool>(S, S.PC)) return false;
52858#if USE_TAILCALLS
52859 MUSTTAIL return InterpNext(S);
52860#else
52861 return true;
52862#endif
52863}
52864PRESERVE_NONE
52865static bool Interp_StoreBitFieldPopFixedPoint(InterpState &S) {
52866 if (!StoreBitFieldPop<PT_FixedPoint>(S, S.PC)) return false;
52867#if USE_TAILCALLS
52868 MUSTTAIL return InterpNext(S);
52869#else
52870 return true;
52871#endif
52872}
52873#endif
52874#ifdef GET_DISASM
52875case OP_StoreBitFieldPopSint8:
52876 Text.Op = PrintName("StoreBitFieldPopSint8");
52877 break;
52878case OP_StoreBitFieldPopUint8:
52879 Text.Op = PrintName("StoreBitFieldPopUint8");
52880 break;
52881case OP_StoreBitFieldPopSint16:
52882 Text.Op = PrintName("StoreBitFieldPopSint16");
52883 break;
52884case OP_StoreBitFieldPopUint16:
52885 Text.Op = PrintName("StoreBitFieldPopUint16");
52886 break;
52887case OP_StoreBitFieldPopSint32:
52888 Text.Op = PrintName("StoreBitFieldPopSint32");
52889 break;
52890case OP_StoreBitFieldPopUint32:
52891 Text.Op = PrintName("StoreBitFieldPopUint32");
52892 break;
52893case OP_StoreBitFieldPopSint64:
52894 Text.Op = PrintName("StoreBitFieldPopSint64");
52895 break;
52896case OP_StoreBitFieldPopUint64:
52897 Text.Op = PrintName("StoreBitFieldPopUint64");
52898 break;
52899case OP_StoreBitFieldPopIntAP:
52900 Text.Op = PrintName("StoreBitFieldPopIntAP");
52901 break;
52902case OP_StoreBitFieldPopIntAPS:
52903 Text.Op = PrintName("StoreBitFieldPopIntAPS");
52904 break;
52905case OP_StoreBitFieldPopBool:
52906 Text.Op = PrintName("StoreBitFieldPopBool");
52907 break;
52908case OP_StoreBitFieldPopFixedPoint:
52909 Text.Op = PrintName("StoreBitFieldPopFixedPoint");
52910 break;
52911#endif
52912#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52913bool emitStoreBitFieldPopSint8(SourceInfo);
52914bool emitStoreBitFieldPopUint8(SourceInfo);
52915bool emitStoreBitFieldPopSint16(SourceInfo);
52916bool emitStoreBitFieldPopUint16(SourceInfo);
52917bool emitStoreBitFieldPopSint32(SourceInfo);
52918bool emitStoreBitFieldPopUint32(SourceInfo);
52919bool emitStoreBitFieldPopSint64(SourceInfo);
52920bool emitStoreBitFieldPopUint64(SourceInfo);
52921bool emitStoreBitFieldPopIntAP(SourceInfo);
52922bool emitStoreBitFieldPopIntAPS(SourceInfo);
52923bool emitStoreBitFieldPopBool(SourceInfo);
52924bool emitStoreBitFieldPopFixedPoint(SourceInfo);
52925#endif
52926#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52927[[nodiscard]] bool emitStoreBitFieldPop(PrimType, SourceInfo I);
52928#endif
52929#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
52930bool
52931#if defined(GET_EVAL_IMPL)
52932EvalEmitter
52933#else
52934ByteCodeEmitter
52935#endif
52936::emitStoreBitFieldPop(PrimType T0, SourceInfo I) {
52937 switch (T0) {
52938 case PT_Sint8:
52939 return emitStoreBitFieldPopSint8(I);
52940 case PT_Uint8:
52941 return emitStoreBitFieldPopUint8(I);
52942 case PT_Sint16:
52943 return emitStoreBitFieldPopSint16(I);
52944 case PT_Uint16:
52945 return emitStoreBitFieldPopUint16(I);
52946 case PT_Sint32:
52947 return emitStoreBitFieldPopSint32(I);
52948 case PT_Uint32:
52949 return emitStoreBitFieldPopUint32(I);
52950 case PT_Sint64:
52951 return emitStoreBitFieldPopSint64(I);
52952 case PT_Uint64:
52953 return emitStoreBitFieldPopUint64(I);
52954 case PT_IntAP:
52955 return emitStoreBitFieldPopIntAP(I);
52956 case PT_IntAPS:
52957 return emitStoreBitFieldPopIntAPS(I);
52958 case PT_Bool:
52959 return emitStoreBitFieldPopBool(I);
52960 case PT_FixedPoint:
52961 return emitStoreBitFieldPopFixedPoint(I);
52962 default: llvm_unreachable("invalid type: emitStoreBitFieldPop");
52963 }
52964 llvm_unreachable("invalid enum value");
52965}
52966#endif
52967#ifdef GET_LINK_IMPL
52968bool ByteCodeEmitter::emitStoreBitFieldPopSint8(SourceInfo L) {
52969 return emitOp<>(OP_StoreBitFieldPopSint8, L);
52970}
52971bool ByteCodeEmitter::emitStoreBitFieldPopUint8(SourceInfo L) {
52972 return emitOp<>(OP_StoreBitFieldPopUint8, L);
52973}
52974bool ByteCodeEmitter::emitStoreBitFieldPopSint16(SourceInfo L) {
52975 return emitOp<>(OP_StoreBitFieldPopSint16, L);
52976}
52977bool ByteCodeEmitter::emitStoreBitFieldPopUint16(SourceInfo L) {
52978 return emitOp<>(OP_StoreBitFieldPopUint16, L);
52979}
52980bool ByteCodeEmitter::emitStoreBitFieldPopSint32(SourceInfo L) {
52981 return emitOp<>(OP_StoreBitFieldPopSint32, L);
52982}
52983bool ByteCodeEmitter::emitStoreBitFieldPopUint32(SourceInfo L) {
52984 return emitOp<>(OP_StoreBitFieldPopUint32, L);
52985}
52986bool ByteCodeEmitter::emitStoreBitFieldPopSint64(SourceInfo L) {
52987 return emitOp<>(OP_StoreBitFieldPopSint64, L);
52988}
52989bool ByteCodeEmitter::emitStoreBitFieldPopUint64(SourceInfo L) {
52990 return emitOp<>(OP_StoreBitFieldPopUint64, L);
52991}
52992bool ByteCodeEmitter::emitStoreBitFieldPopIntAP(SourceInfo L) {
52993 return emitOp<>(OP_StoreBitFieldPopIntAP, L);
52994}
52995bool ByteCodeEmitter::emitStoreBitFieldPopIntAPS(SourceInfo L) {
52996 return emitOp<>(OP_StoreBitFieldPopIntAPS, L);
52997}
52998bool ByteCodeEmitter::emitStoreBitFieldPopBool(SourceInfo L) {
52999 return emitOp<>(OP_StoreBitFieldPopBool, L);
53000}
53001bool ByteCodeEmitter::emitStoreBitFieldPopFixedPoint(SourceInfo L) {
53002 return emitOp<>(OP_StoreBitFieldPopFixedPoint, L);
53003}
53004#endif
53005#ifdef GET_EVAL_IMPL
53006bool EvalEmitter::emitStoreBitFieldPopSint8(SourceInfo L) {
53007 if (!isActive()) return true;
53008 CurrentSource = L;
53009 return StoreBitFieldPop<PT_Sint8>(S, CodePtr());
53010}
53011bool EvalEmitter::emitStoreBitFieldPopUint8(SourceInfo L) {
53012 if (!isActive()) return true;
53013 CurrentSource = L;
53014 return StoreBitFieldPop<PT_Uint8>(S, CodePtr());
53015}
53016bool EvalEmitter::emitStoreBitFieldPopSint16(SourceInfo L) {
53017 if (!isActive()) return true;
53018 CurrentSource = L;
53019 return StoreBitFieldPop<PT_Sint16>(S, CodePtr());
53020}
53021bool EvalEmitter::emitStoreBitFieldPopUint16(SourceInfo L) {
53022 if (!isActive()) return true;
53023 CurrentSource = L;
53024 return StoreBitFieldPop<PT_Uint16>(S, CodePtr());
53025}
53026bool EvalEmitter::emitStoreBitFieldPopSint32(SourceInfo L) {
53027 if (!isActive()) return true;
53028 CurrentSource = L;
53029 return StoreBitFieldPop<PT_Sint32>(S, CodePtr());
53030}
53031bool EvalEmitter::emitStoreBitFieldPopUint32(SourceInfo L) {
53032 if (!isActive()) return true;
53033 CurrentSource = L;
53034 return StoreBitFieldPop<PT_Uint32>(S, CodePtr());
53035}
53036bool EvalEmitter::emitStoreBitFieldPopSint64(SourceInfo L) {
53037 if (!isActive()) return true;
53038 CurrentSource = L;
53039 return StoreBitFieldPop<PT_Sint64>(S, CodePtr());
53040}
53041bool EvalEmitter::emitStoreBitFieldPopUint64(SourceInfo L) {
53042 if (!isActive()) return true;
53043 CurrentSource = L;
53044 return StoreBitFieldPop<PT_Uint64>(S, CodePtr());
53045}
53046bool EvalEmitter::emitStoreBitFieldPopIntAP(SourceInfo L) {
53047 if (!isActive()) return true;
53048 CurrentSource = L;
53049 return StoreBitFieldPop<PT_IntAP>(S, CodePtr());
53050}
53051bool EvalEmitter::emitStoreBitFieldPopIntAPS(SourceInfo L) {
53052 if (!isActive()) return true;
53053 CurrentSource = L;
53054 return StoreBitFieldPop<PT_IntAPS>(S, CodePtr());
53055}
53056bool EvalEmitter::emitStoreBitFieldPopBool(SourceInfo L) {
53057 if (!isActive()) return true;
53058 CurrentSource = L;
53059 return StoreBitFieldPop<PT_Bool>(S, CodePtr());
53060}
53061bool EvalEmitter::emitStoreBitFieldPopFixedPoint(SourceInfo L) {
53062 if (!isActive()) return true;
53063 CurrentSource = L;
53064 return StoreBitFieldPop<PT_FixedPoint>(S, CodePtr());
53065}
53066#endif
53067#ifdef GET_OPCODE_NAMES
53068OP_StorePopSint8,
53069OP_StorePopUint8,
53070OP_StorePopSint16,
53071OP_StorePopUint16,
53072OP_StorePopSint32,
53073OP_StorePopUint32,
53074OP_StorePopSint64,
53075OP_StorePopUint64,
53076OP_StorePopIntAP,
53077OP_StorePopIntAPS,
53078OP_StorePopBool,
53079OP_StorePopFixedPoint,
53080OP_StorePopPtr,
53081OP_StorePopMemberPtr,
53082OP_StorePopFloat,
53083#endif
53084#ifdef GET_INTERPFN_LIST
53085&Interp_StorePopSint8,
53086&Interp_StorePopUint8,
53087&Interp_StorePopSint16,
53088&Interp_StorePopUint16,
53089&Interp_StorePopSint32,
53090&Interp_StorePopUint32,
53091&Interp_StorePopSint64,
53092&Interp_StorePopUint64,
53093&Interp_StorePopIntAP,
53094&Interp_StorePopIntAPS,
53095&Interp_StorePopBool,
53096&Interp_StorePopFixedPoint,
53097&Interp_StorePopPtr,
53098&Interp_StorePopMemberPtr,
53099&Interp_StorePopFloat,
53100#endif
53101#ifdef GET_INTERPFN_DISPATCHERS
53102PRESERVE_NONE
53103static bool Interp_StorePopSint8(InterpState &S) {
53104 if (!StorePop<PT_Sint8>(S, S.PC)) return false;
53105#if USE_TAILCALLS
53106 MUSTTAIL return InterpNext(S);
53107#else
53108 return true;
53109#endif
53110}
53111PRESERVE_NONE
53112static bool Interp_StorePopUint8(InterpState &S) {
53113 if (!StorePop<PT_Uint8>(S, S.PC)) return false;
53114#if USE_TAILCALLS
53115 MUSTTAIL return InterpNext(S);
53116#else
53117 return true;
53118#endif
53119}
53120PRESERVE_NONE
53121static bool Interp_StorePopSint16(InterpState &S) {
53122 if (!StorePop<PT_Sint16>(S, S.PC)) return false;
53123#if USE_TAILCALLS
53124 MUSTTAIL return InterpNext(S);
53125#else
53126 return true;
53127#endif
53128}
53129PRESERVE_NONE
53130static bool Interp_StorePopUint16(InterpState &S) {
53131 if (!StorePop<PT_Uint16>(S, S.PC)) return false;
53132#if USE_TAILCALLS
53133 MUSTTAIL return InterpNext(S);
53134#else
53135 return true;
53136#endif
53137}
53138PRESERVE_NONE
53139static bool Interp_StorePopSint32(InterpState &S) {
53140 if (!StorePop<PT_Sint32>(S, S.PC)) return false;
53141#if USE_TAILCALLS
53142 MUSTTAIL return InterpNext(S);
53143#else
53144 return true;
53145#endif
53146}
53147PRESERVE_NONE
53148static bool Interp_StorePopUint32(InterpState &S) {
53149 if (!StorePop<PT_Uint32>(S, S.PC)) return false;
53150#if USE_TAILCALLS
53151 MUSTTAIL return InterpNext(S);
53152#else
53153 return true;
53154#endif
53155}
53156PRESERVE_NONE
53157static bool Interp_StorePopSint64(InterpState &S) {
53158 if (!StorePop<PT_Sint64>(S, S.PC)) return false;
53159#if USE_TAILCALLS
53160 MUSTTAIL return InterpNext(S);
53161#else
53162 return true;
53163#endif
53164}
53165PRESERVE_NONE
53166static bool Interp_StorePopUint64(InterpState &S) {
53167 if (!StorePop<PT_Uint64>(S, S.PC)) return false;
53168#if USE_TAILCALLS
53169 MUSTTAIL return InterpNext(S);
53170#else
53171 return true;
53172#endif
53173}
53174PRESERVE_NONE
53175static bool Interp_StorePopIntAP(InterpState &S) {
53176 if (!StorePop<PT_IntAP>(S, S.PC)) return false;
53177#if USE_TAILCALLS
53178 MUSTTAIL return InterpNext(S);
53179#else
53180 return true;
53181#endif
53182}
53183PRESERVE_NONE
53184static bool Interp_StorePopIntAPS(InterpState &S) {
53185 if (!StorePop<PT_IntAPS>(S, S.PC)) return false;
53186#if USE_TAILCALLS
53187 MUSTTAIL return InterpNext(S);
53188#else
53189 return true;
53190#endif
53191}
53192PRESERVE_NONE
53193static bool Interp_StorePopBool(InterpState &S) {
53194 if (!StorePop<PT_Bool>(S, S.PC)) return false;
53195#if USE_TAILCALLS
53196 MUSTTAIL return InterpNext(S);
53197#else
53198 return true;
53199#endif
53200}
53201PRESERVE_NONE
53202static bool Interp_StorePopFixedPoint(InterpState &S) {
53203 if (!StorePop<PT_FixedPoint>(S, S.PC)) return false;
53204#if USE_TAILCALLS
53205 MUSTTAIL return InterpNext(S);
53206#else
53207 return true;
53208#endif
53209}
53210PRESERVE_NONE
53211static bool Interp_StorePopPtr(InterpState &S) {
53212 if (!StorePop<PT_Ptr>(S, S.PC)) return false;
53213#if USE_TAILCALLS
53214 MUSTTAIL return InterpNext(S);
53215#else
53216 return true;
53217#endif
53218}
53219PRESERVE_NONE
53220static bool Interp_StorePopMemberPtr(InterpState &S) {
53221 if (!StorePop<PT_MemberPtr>(S, S.PC)) return false;
53222#if USE_TAILCALLS
53223 MUSTTAIL return InterpNext(S);
53224#else
53225 return true;
53226#endif
53227}
53228PRESERVE_NONE
53229static bool Interp_StorePopFloat(InterpState &S) {
53230 if (!StorePop<PT_Float>(S, S.PC)) return false;
53231#if USE_TAILCALLS
53232 MUSTTAIL return InterpNext(S);
53233#else
53234 return true;
53235#endif
53236}
53237#endif
53238#ifdef GET_DISASM
53239case OP_StorePopSint8:
53240 Text.Op = PrintName("StorePopSint8");
53241 break;
53242case OP_StorePopUint8:
53243 Text.Op = PrintName("StorePopUint8");
53244 break;
53245case OP_StorePopSint16:
53246 Text.Op = PrintName("StorePopSint16");
53247 break;
53248case OP_StorePopUint16:
53249 Text.Op = PrintName("StorePopUint16");
53250 break;
53251case OP_StorePopSint32:
53252 Text.Op = PrintName("StorePopSint32");
53253 break;
53254case OP_StorePopUint32:
53255 Text.Op = PrintName("StorePopUint32");
53256 break;
53257case OP_StorePopSint64:
53258 Text.Op = PrintName("StorePopSint64");
53259 break;
53260case OP_StorePopUint64:
53261 Text.Op = PrintName("StorePopUint64");
53262 break;
53263case OP_StorePopIntAP:
53264 Text.Op = PrintName("StorePopIntAP");
53265 break;
53266case OP_StorePopIntAPS:
53267 Text.Op = PrintName("StorePopIntAPS");
53268 break;
53269case OP_StorePopBool:
53270 Text.Op = PrintName("StorePopBool");
53271 break;
53272case OP_StorePopFixedPoint:
53273 Text.Op = PrintName("StorePopFixedPoint");
53274 break;
53275case OP_StorePopPtr:
53276 Text.Op = PrintName("StorePopPtr");
53277 break;
53278case OP_StorePopMemberPtr:
53279 Text.Op = PrintName("StorePopMemberPtr");
53280 break;
53281case OP_StorePopFloat:
53282 Text.Op = PrintName("StorePopFloat");
53283 break;
53284#endif
53285#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53286bool emitStorePopSint8(SourceInfo);
53287bool emitStorePopUint8(SourceInfo);
53288bool emitStorePopSint16(SourceInfo);
53289bool emitStorePopUint16(SourceInfo);
53290bool emitStorePopSint32(SourceInfo);
53291bool emitStorePopUint32(SourceInfo);
53292bool emitStorePopSint64(SourceInfo);
53293bool emitStorePopUint64(SourceInfo);
53294bool emitStorePopIntAP(SourceInfo);
53295bool emitStorePopIntAPS(SourceInfo);
53296bool emitStorePopBool(SourceInfo);
53297bool emitStorePopFixedPoint(SourceInfo);
53298bool emitStorePopPtr(SourceInfo);
53299bool emitStorePopMemberPtr(SourceInfo);
53300bool emitStorePopFloat(SourceInfo);
53301#endif
53302#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53303[[nodiscard]] bool emitStorePop(PrimType, SourceInfo I);
53304#endif
53305#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
53306bool
53307#if defined(GET_EVAL_IMPL)
53308EvalEmitter
53309#else
53310ByteCodeEmitter
53311#endif
53312::emitStorePop(PrimType T0, SourceInfo I) {
53313 switch (T0) {
53314 case PT_Sint8:
53315 return emitStorePopSint8(I);
53316 case PT_Uint8:
53317 return emitStorePopUint8(I);
53318 case PT_Sint16:
53319 return emitStorePopSint16(I);
53320 case PT_Uint16:
53321 return emitStorePopUint16(I);
53322 case PT_Sint32:
53323 return emitStorePopSint32(I);
53324 case PT_Uint32:
53325 return emitStorePopUint32(I);
53326 case PT_Sint64:
53327 return emitStorePopSint64(I);
53328 case PT_Uint64:
53329 return emitStorePopUint64(I);
53330 case PT_IntAP:
53331 return emitStorePopIntAP(I);
53332 case PT_IntAPS:
53333 return emitStorePopIntAPS(I);
53334 case PT_Bool:
53335 return emitStorePopBool(I);
53336 case PT_FixedPoint:
53337 return emitStorePopFixedPoint(I);
53338 case PT_Ptr:
53339 return emitStorePopPtr(I);
53340 case PT_MemberPtr:
53341 return emitStorePopMemberPtr(I);
53342 case PT_Float:
53343 return emitStorePopFloat(I);
53344 }
53345 llvm_unreachable("invalid enum value");
53346}
53347#endif
53348#ifdef GET_LINK_IMPL
53349bool ByteCodeEmitter::emitStorePopSint8(SourceInfo L) {
53350 return emitOp<>(OP_StorePopSint8, L);
53351}
53352bool ByteCodeEmitter::emitStorePopUint8(SourceInfo L) {
53353 return emitOp<>(OP_StorePopUint8, L);
53354}
53355bool ByteCodeEmitter::emitStorePopSint16(SourceInfo L) {
53356 return emitOp<>(OP_StorePopSint16, L);
53357}
53358bool ByteCodeEmitter::emitStorePopUint16(SourceInfo L) {
53359 return emitOp<>(OP_StorePopUint16, L);
53360}
53361bool ByteCodeEmitter::emitStorePopSint32(SourceInfo L) {
53362 return emitOp<>(OP_StorePopSint32, L);
53363}
53364bool ByteCodeEmitter::emitStorePopUint32(SourceInfo L) {
53365 return emitOp<>(OP_StorePopUint32, L);
53366}
53367bool ByteCodeEmitter::emitStorePopSint64(SourceInfo L) {
53368 return emitOp<>(OP_StorePopSint64, L);
53369}
53370bool ByteCodeEmitter::emitStorePopUint64(SourceInfo L) {
53371 return emitOp<>(OP_StorePopUint64, L);
53372}
53373bool ByteCodeEmitter::emitStorePopIntAP(SourceInfo L) {
53374 return emitOp<>(OP_StorePopIntAP, L);
53375}
53376bool ByteCodeEmitter::emitStorePopIntAPS(SourceInfo L) {
53377 return emitOp<>(OP_StorePopIntAPS, L);
53378}
53379bool ByteCodeEmitter::emitStorePopBool(SourceInfo L) {
53380 return emitOp<>(OP_StorePopBool, L);
53381}
53382bool ByteCodeEmitter::emitStorePopFixedPoint(SourceInfo L) {
53383 return emitOp<>(OP_StorePopFixedPoint, L);
53384}
53385bool ByteCodeEmitter::emitStorePopPtr(SourceInfo L) {
53386 return emitOp<>(OP_StorePopPtr, L);
53387}
53388bool ByteCodeEmitter::emitStorePopMemberPtr(SourceInfo L) {
53389 return emitOp<>(OP_StorePopMemberPtr, L);
53390}
53391bool ByteCodeEmitter::emitStorePopFloat(SourceInfo L) {
53392 return emitOp<>(OP_StorePopFloat, L);
53393}
53394#endif
53395#ifdef GET_EVAL_IMPL
53396bool EvalEmitter::emitStorePopSint8(SourceInfo L) {
53397 if (!isActive()) return true;
53398 CurrentSource = L;
53399 return StorePop<PT_Sint8>(S, CodePtr());
53400}
53401bool EvalEmitter::emitStorePopUint8(SourceInfo L) {
53402 if (!isActive()) return true;
53403 CurrentSource = L;
53404 return StorePop<PT_Uint8>(S, CodePtr());
53405}
53406bool EvalEmitter::emitStorePopSint16(SourceInfo L) {
53407 if (!isActive()) return true;
53408 CurrentSource = L;
53409 return StorePop<PT_Sint16>(S, CodePtr());
53410}
53411bool EvalEmitter::emitStorePopUint16(SourceInfo L) {
53412 if (!isActive()) return true;
53413 CurrentSource = L;
53414 return StorePop<PT_Uint16>(S, CodePtr());
53415}
53416bool EvalEmitter::emitStorePopSint32(SourceInfo L) {
53417 if (!isActive()) return true;
53418 CurrentSource = L;
53419 return StorePop<PT_Sint32>(S, CodePtr());
53420}
53421bool EvalEmitter::emitStorePopUint32(SourceInfo L) {
53422 if (!isActive()) return true;
53423 CurrentSource = L;
53424 return StorePop<PT_Uint32>(S, CodePtr());
53425}
53426bool EvalEmitter::emitStorePopSint64(SourceInfo L) {
53427 if (!isActive()) return true;
53428 CurrentSource = L;
53429 return StorePop<PT_Sint64>(S, CodePtr());
53430}
53431bool EvalEmitter::emitStorePopUint64(SourceInfo L) {
53432 if (!isActive()) return true;
53433 CurrentSource = L;
53434 return StorePop<PT_Uint64>(S, CodePtr());
53435}
53436bool EvalEmitter::emitStorePopIntAP(SourceInfo L) {
53437 if (!isActive()) return true;
53438 CurrentSource = L;
53439 return StorePop<PT_IntAP>(S, CodePtr());
53440}
53441bool EvalEmitter::emitStorePopIntAPS(SourceInfo L) {
53442 if (!isActive()) return true;
53443 CurrentSource = L;
53444 return StorePop<PT_IntAPS>(S, CodePtr());
53445}
53446bool EvalEmitter::emitStorePopBool(SourceInfo L) {
53447 if (!isActive()) return true;
53448 CurrentSource = L;
53449 return StorePop<PT_Bool>(S, CodePtr());
53450}
53451bool EvalEmitter::emitStorePopFixedPoint(SourceInfo L) {
53452 if (!isActive()) return true;
53453 CurrentSource = L;
53454 return StorePop<PT_FixedPoint>(S, CodePtr());
53455}
53456bool EvalEmitter::emitStorePopPtr(SourceInfo L) {
53457 if (!isActive()) return true;
53458 CurrentSource = L;
53459 return StorePop<PT_Ptr>(S, CodePtr());
53460}
53461bool EvalEmitter::emitStorePopMemberPtr(SourceInfo L) {
53462 if (!isActive()) return true;
53463 CurrentSource = L;
53464 return StorePop<PT_MemberPtr>(S, CodePtr());
53465}
53466bool EvalEmitter::emitStorePopFloat(SourceInfo L) {
53467 if (!isActive()) return true;
53468 CurrentSource = L;
53469 return StorePop<PT_Float>(S, CodePtr());
53470}
53471#endif
53472#ifdef GET_OPCODE_NAMES
53473OP_SubSint8,
53474OP_SubUint8,
53475OP_SubSint16,
53476OP_SubUint16,
53477OP_SubSint32,
53478OP_SubUint32,
53479OP_SubSint64,
53480OP_SubUint64,
53481OP_SubIntAP,
53482OP_SubIntAPS,
53483OP_SubBool,
53484OP_SubFixedPoint,
53485#endif
53486#ifdef GET_INTERPFN_LIST
53487&Interp_SubSint8,
53488&Interp_SubUint8,
53489&Interp_SubSint16,
53490&Interp_SubUint16,
53491&Interp_SubSint32,
53492&Interp_SubUint32,
53493&Interp_SubSint64,
53494&Interp_SubUint64,
53495&Interp_SubIntAP,
53496&Interp_SubIntAPS,
53497&Interp_SubBool,
53498&Interp_SubFixedPoint,
53499#endif
53500#ifdef GET_INTERPFN_DISPATCHERS
53501PRESERVE_NONE
53502static bool Interp_SubSint8(InterpState &S) {
53503 if (!Sub<PT_Sint8>(S, S.PC)) return false;
53504#if USE_TAILCALLS
53505 MUSTTAIL return InterpNext(S);
53506#else
53507 return true;
53508#endif
53509}
53510PRESERVE_NONE
53511static bool Interp_SubUint8(InterpState &S) {
53512 if (!Sub<PT_Uint8>(S, S.PC)) return false;
53513#if USE_TAILCALLS
53514 MUSTTAIL return InterpNext(S);
53515#else
53516 return true;
53517#endif
53518}
53519PRESERVE_NONE
53520static bool Interp_SubSint16(InterpState &S) {
53521 if (!Sub<PT_Sint16>(S, S.PC)) return false;
53522#if USE_TAILCALLS
53523 MUSTTAIL return InterpNext(S);
53524#else
53525 return true;
53526#endif
53527}
53528PRESERVE_NONE
53529static bool Interp_SubUint16(InterpState &S) {
53530 if (!Sub<PT_Uint16>(S, S.PC)) return false;
53531#if USE_TAILCALLS
53532 MUSTTAIL return InterpNext(S);
53533#else
53534 return true;
53535#endif
53536}
53537PRESERVE_NONE
53538static bool Interp_SubSint32(InterpState &S) {
53539 if (!Sub<PT_Sint32>(S, S.PC)) return false;
53540#if USE_TAILCALLS
53541 MUSTTAIL return InterpNext(S);
53542#else
53543 return true;
53544#endif
53545}
53546PRESERVE_NONE
53547static bool Interp_SubUint32(InterpState &S) {
53548 if (!Sub<PT_Uint32>(S, S.PC)) return false;
53549#if USE_TAILCALLS
53550 MUSTTAIL return InterpNext(S);
53551#else
53552 return true;
53553#endif
53554}
53555PRESERVE_NONE
53556static bool Interp_SubSint64(InterpState &S) {
53557 if (!Sub<PT_Sint64>(S, S.PC)) return false;
53558#if USE_TAILCALLS
53559 MUSTTAIL return InterpNext(S);
53560#else
53561 return true;
53562#endif
53563}
53564PRESERVE_NONE
53565static bool Interp_SubUint64(InterpState &S) {
53566 if (!Sub<PT_Uint64>(S, S.PC)) return false;
53567#if USE_TAILCALLS
53568 MUSTTAIL return InterpNext(S);
53569#else
53570 return true;
53571#endif
53572}
53573PRESERVE_NONE
53574static bool Interp_SubIntAP(InterpState &S) {
53575 if (!Sub<PT_IntAP>(S, S.PC)) return false;
53576#if USE_TAILCALLS
53577 MUSTTAIL return InterpNext(S);
53578#else
53579 return true;
53580#endif
53581}
53582PRESERVE_NONE
53583static bool Interp_SubIntAPS(InterpState &S) {
53584 if (!Sub<PT_IntAPS>(S, S.PC)) return false;
53585#if USE_TAILCALLS
53586 MUSTTAIL return InterpNext(S);
53587#else
53588 return true;
53589#endif
53590}
53591PRESERVE_NONE
53592static bool Interp_SubBool(InterpState &S) {
53593 if (!Sub<PT_Bool>(S, S.PC)) return false;
53594#if USE_TAILCALLS
53595 MUSTTAIL return InterpNext(S);
53596#else
53597 return true;
53598#endif
53599}
53600PRESERVE_NONE
53601static bool Interp_SubFixedPoint(InterpState &S) {
53602 if (!Sub<PT_FixedPoint>(S, S.PC)) return false;
53603#if USE_TAILCALLS
53604 MUSTTAIL return InterpNext(S);
53605#else
53606 return true;
53607#endif
53608}
53609#endif
53610#ifdef GET_DISASM
53611case OP_SubSint8:
53612 Text.Op = PrintName("SubSint8");
53613 break;
53614case OP_SubUint8:
53615 Text.Op = PrintName("SubUint8");
53616 break;
53617case OP_SubSint16:
53618 Text.Op = PrintName("SubSint16");
53619 break;
53620case OP_SubUint16:
53621 Text.Op = PrintName("SubUint16");
53622 break;
53623case OP_SubSint32:
53624 Text.Op = PrintName("SubSint32");
53625 break;
53626case OP_SubUint32:
53627 Text.Op = PrintName("SubUint32");
53628 break;
53629case OP_SubSint64:
53630 Text.Op = PrintName("SubSint64");
53631 break;
53632case OP_SubUint64:
53633 Text.Op = PrintName("SubUint64");
53634 break;
53635case OP_SubIntAP:
53636 Text.Op = PrintName("SubIntAP");
53637 break;
53638case OP_SubIntAPS:
53639 Text.Op = PrintName("SubIntAPS");
53640 break;
53641case OP_SubBool:
53642 Text.Op = PrintName("SubBool");
53643 break;
53644case OP_SubFixedPoint:
53645 Text.Op = PrintName("SubFixedPoint");
53646 break;
53647#endif
53648#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53649bool emitSubSint8(SourceInfo);
53650bool emitSubUint8(SourceInfo);
53651bool emitSubSint16(SourceInfo);
53652bool emitSubUint16(SourceInfo);
53653bool emitSubSint32(SourceInfo);
53654bool emitSubUint32(SourceInfo);
53655bool emitSubSint64(SourceInfo);
53656bool emitSubUint64(SourceInfo);
53657bool emitSubIntAP(SourceInfo);
53658bool emitSubIntAPS(SourceInfo);
53659bool emitSubBool(SourceInfo);
53660bool emitSubFixedPoint(SourceInfo);
53661#endif
53662#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53663[[nodiscard]] bool emitSub(PrimType, SourceInfo I);
53664#endif
53665#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
53666bool
53667#if defined(GET_EVAL_IMPL)
53668EvalEmitter
53669#else
53670ByteCodeEmitter
53671#endif
53672::emitSub(PrimType T0, SourceInfo I) {
53673 switch (T0) {
53674 case PT_Sint8:
53675 return emitSubSint8(I);
53676 case PT_Uint8:
53677 return emitSubUint8(I);
53678 case PT_Sint16:
53679 return emitSubSint16(I);
53680 case PT_Uint16:
53681 return emitSubUint16(I);
53682 case PT_Sint32:
53683 return emitSubSint32(I);
53684 case PT_Uint32:
53685 return emitSubUint32(I);
53686 case PT_Sint64:
53687 return emitSubSint64(I);
53688 case PT_Uint64:
53689 return emitSubUint64(I);
53690 case PT_IntAP:
53691 return emitSubIntAP(I);
53692 case PT_IntAPS:
53693 return emitSubIntAPS(I);
53694 case PT_Bool:
53695 return emitSubBool(I);
53696 case PT_FixedPoint:
53697 return emitSubFixedPoint(I);
53698 default: llvm_unreachable("invalid type: emitSub");
53699 }
53700 llvm_unreachable("invalid enum value");
53701}
53702#endif
53703#ifdef GET_LINK_IMPL
53704bool ByteCodeEmitter::emitSubSint8(SourceInfo L) {
53705 return emitOp<>(OP_SubSint8, L);
53706}
53707bool ByteCodeEmitter::emitSubUint8(SourceInfo L) {
53708 return emitOp<>(OP_SubUint8, L);
53709}
53710bool ByteCodeEmitter::emitSubSint16(SourceInfo L) {
53711 return emitOp<>(OP_SubSint16, L);
53712}
53713bool ByteCodeEmitter::emitSubUint16(SourceInfo L) {
53714 return emitOp<>(OP_SubUint16, L);
53715}
53716bool ByteCodeEmitter::emitSubSint32(SourceInfo L) {
53717 return emitOp<>(OP_SubSint32, L);
53718}
53719bool ByteCodeEmitter::emitSubUint32(SourceInfo L) {
53720 return emitOp<>(OP_SubUint32, L);
53721}
53722bool ByteCodeEmitter::emitSubSint64(SourceInfo L) {
53723 return emitOp<>(OP_SubSint64, L);
53724}
53725bool ByteCodeEmitter::emitSubUint64(SourceInfo L) {
53726 return emitOp<>(OP_SubUint64, L);
53727}
53728bool ByteCodeEmitter::emitSubIntAP(SourceInfo L) {
53729 return emitOp<>(OP_SubIntAP, L);
53730}
53731bool ByteCodeEmitter::emitSubIntAPS(SourceInfo L) {
53732 return emitOp<>(OP_SubIntAPS, L);
53733}
53734bool ByteCodeEmitter::emitSubBool(SourceInfo L) {
53735 return emitOp<>(OP_SubBool, L);
53736}
53737bool ByteCodeEmitter::emitSubFixedPoint(SourceInfo L) {
53738 return emitOp<>(OP_SubFixedPoint, L);
53739}
53740#endif
53741#ifdef GET_EVAL_IMPL
53742bool EvalEmitter::emitSubSint8(SourceInfo L) {
53743 if (!isActive()) return true;
53744 CurrentSource = L;
53745 return Sub<PT_Sint8>(S, CodePtr());
53746}
53747bool EvalEmitter::emitSubUint8(SourceInfo L) {
53748 if (!isActive()) return true;
53749 CurrentSource = L;
53750 return Sub<PT_Uint8>(S, CodePtr());
53751}
53752bool EvalEmitter::emitSubSint16(SourceInfo L) {
53753 if (!isActive()) return true;
53754 CurrentSource = L;
53755 return Sub<PT_Sint16>(S, CodePtr());
53756}
53757bool EvalEmitter::emitSubUint16(SourceInfo L) {
53758 if (!isActive()) return true;
53759 CurrentSource = L;
53760 return Sub<PT_Uint16>(S, CodePtr());
53761}
53762bool EvalEmitter::emitSubSint32(SourceInfo L) {
53763 if (!isActive()) return true;
53764 CurrentSource = L;
53765 return Sub<PT_Sint32>(S, CodePtr());
53766}
53767bool EvalEmitter::emitSubUint32(SourceInfo L) {
53768 if (!isActive()) return true;
53769 CurrentSource = L;
53770 return Sub<PT_Uint32>(S, CodePtr());
53771}
53772bool EvalEmitter::emitSubSint64(SourceInfo L) {
53773 if (!isActive()) return true;
53774 CurrentSource = L;
53775 return Sub<PT_Sint64>(S, CodePtr());
53776}
53777bool EvalEmitter::emitSubUint64(SourceInfo L) {
53778 if (!isActive()) return true;
53779 CurrentSource = L;
53780 return Sub<PT_Uint64>(S, CodePtr());
53781}
53782bool EvalEmitter::emitSubIntAP(SourceInfo L) {
53783 if (!isActive()) return true;
53784 CurrentSource = L;
53785 return Sub<PT_IntAP>(S, CodePtr());
53786}
53787bool EvalEmitter::emitSubIntAPS(SourceInfo L) {
53788 if (!isActive()) return true;
53789 CurrentSource = L;
53790 return Sub<PT_IntAPS>(S, CodePtr());
53791}
53792bool EvalEmitter::emitSubBool(SourceInfo L) {
53793 if (!isActive()) return true;
53794 CurrentSource = L;
53795 return Sub<PT_Bool>(S, CodePtr());
53796}
53797bool EvalEmitter::emitSubFixedPoint(SourceInfo L) {
53798 if (!isActive()) return true;
53799 CurrentSource = L;
53800 return Sub<PT_FixedPoint>(S, CodePtr());
53801}
53802#endif
53803#ifdef GET_OPCODE_NAMES
53804OP_SubOffsetSint8,
53805OP_SubOffsetUint8,
53806OP_SubOffsetSint16,
53807OP_SubOffsetUint16,
53808OP_SubOffsetSint32,
53809OP_SubOffsetUint32,
53810OP_SubOffsetSint64,
53811OP_SubOffsetUint64,
53812OP_SubOffsetIntAP,
53813OP_SubOffsetIntAPS,
53814OP_SubOffsetBool,
53815#endif
53816#ifdef GET_INTERPFN_LIST
53817&Interp_SubOffsetSint8,
53818&Interp_SubOffsetUint8,
53819&Interp_SubOffsetSint16,
53820&Interp_SubOffsetUint16,
53821&Interp_SubOffsetSint32,
53822&Interp_SubOffsetUint32,
53823&Interp_SubOffsetSint64,
53824&Interp_SubOffsetUint64,
53825&Interp_SubOffsetIntAP,
53826&Interp_SubOffsetIntAPS,
53827&Interp_SubOffsetBool,
53828#endif
53829#ifdef GET_INTERPFN_DISPATCHERS
53830PRESERVE_NONE
53831static bool Interp_SubOffsetSint8(InterpState &S) {
53832 if (!SubOffset<PT_Sint8>(S, S.PC)) return false;
53833#if USE_TAILCALLS
53834 MUSTTAIL return InterpNext(S);
53835#else
53836 return true;
53837#endif
53838}
53839PRESERVE_NONE
53840static bool Interp_SubOffsetUint8(InterpState &S) {
53841 if (!SubOffset<PT_Uint8>(S, S.PC)) return false;
53842#if USE_TAILCALLS
53843 MUSTTAIL return InterpNext(S);
53844#else
53845 return true;
53846#endif
53847}
53848PRESERVE_NONE
53849static bool Interp_SubOffsetSint16(InterpState &S) {
53850 if (!SubOffset<PT_Sint16>(S, S.PC)) return false;
53851#if USE_TAILCALLS
53852 MUSTTAIL return InterpNext(S);
53853#else
53854 return true;
53855#endif
53856}
53857PRESERVE_NONE
53858static bool Interp_SubOffsetUint16(InterpState &S) {
53859 if (!SubOffset<PT_Uint16>(S, S.PC)) return false;
53860#if USE_TAILCALLS
53861 MUSTTAIL return InterpNext(S);
53862#else
53863 return true;
53864#endif
53865}
53866PRESERVE_NONE
53867static bool Interp_SubOffsetSint32(InterpState &S) {
53868 if (!SubOffset<PT_Sint32>(S, S.PC)) return false;
53869#if USE_TAILCALLS
53870 MUSTTAIL return InterpNext(S);
53871#else
53872 return true;
53873#endif
53874}
53875PRESERVE_NONE
53876static bool Interp_SubOffsetUint32(InterpState &S) {
53877 if (!SubOffset<PT_Uint32>(S, S.PC)) return false;
53878#if USE_TAILCALLS
53879 MUSTTAIL return InterpNext(S);
53880#else
53881 return true;
53882#endif
53883}
53884PRESERVE_NONE
53885static bool Interp_SubOffsetSint64(InterpState &S) {
53886 if (!SubOffset<PT_Sint64>(S, S.PC)) return false;
53887#if USE_TAILCALLS
53888 MUSTTAIL return InterpNext(S);
53889#else
53890 return true;
53891#endif
53892}
53893PRESERVE_NONE
53894static bool Interp_SubOffsetUint64(InterpState &S) {
53895 if (!SubOffset<PT_Uint64>(S, S.PC)) return false;
53896#if USE_TAILCALLS
53897 MUSTTAIL return InterpNext(S);
53898#else
53899 return true;
53900#endif
53901}
53902PRESERVE_NONE
53903static bool Interp_SubOffsetIntAP(InterpState &S) {
53904 if (!SubOffset<PT_IntAP>(S, S.PC)) return false;
53905#if USE_TAILCALLS
53906 MUSTTAIL return InterpNext(S);
53907#else
53908 return true;
53909#endif
53910}
53911PRESERVE_NONE
53912static bool Interp_SubOffsetIntAPS(InterpState &S) {
53913 if (!SubOffset<PT_IntAPS>(S, S.PC)) return false;
53914#if USE_TAILCALLS
53915 MUSTTAIL return InterpNext(S);
53916#else
53917 return true;
53918#endif
53919}
53920PRESERVE_NONE
53921static bool Interp_SubOffsetBool(InterpState &S) {
53922 if (!SubOffset<PT_Bool>(S, S.PC)) return false;
53923#if USE_TAILCALLS
53924 MUSTTAIL return InterpNext(S);
53925#else
53926 return true;
53927#endif
53928}
53929#endif
53930#ifdef GET_DISASM
53931case OP_SubOffsetSint8:
53932 Text.Op = PrintName("SubOffsetSint8");
53933 break;
53934case OP_SubOffsetUint8:
53935 Text.Op = PrintName("SubOffsetUint8");
53936 break;
53937case OP_SubOffsetSint16:
53938 Text.Op = PrintName("SubOffsetSint16");
53939 break;
53940case OP_SubOffsetUint16:
53941 Text.Op = PrintName("SubOffsetUint16");
53942 break;
53943case OP_SubOffsetSint32:
53944 Text.Op = PrintName("SubOffsetSint32");
53945 break;
53946case OP_SubOffsetUint32:
53947 Text.Op = PrintName("SubOffsetUint32");
53948 break;
53949case OP_SubOffsetSint64:
53950 Text.Op = PrintName("SubOffsetSint64");
53951 break;
53952case OP_SubOffsetUint64:
53953 Text.Op = PrintName("SubOffsetUint64");
53954 break;
53955case OP_SubOffsetIntAP:
53956 Text.Op = PrintName("SubOffsetIntAP");
53957 break;
53958case OP_SubOffsetIntAPS:
53959 Text.Op = PrintName("SubOffsetIntAPS");
53960 break;
53961case OP_SubOffsetBool:
53962 Text.Op = PrintName("SubOffsetBool");
53963 break;
53964#endif
53965#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53966bool emitSubOffsetSint8(SourceInfo);
53967bool emitSubOffsetUint8(SourceInfo);
53968bool emitSubOffsetSint16(SourceInfo);
53969bool emitSubOffsetUint16(SourceInfo);
53970bool emitSubOffsetSint32(SourceInfo);
53971bool emitSubOffsetUint32(SourceInfo);
53972bool emitSubOffsetSint64(SourceInfo);
53973bool emitSubOffsetUint64(SourceInfo);
53974bool emitSubOffsetIntAP(SourceInfo);
53975bool emitSubOffsetIntAPS(SourceInfo);
53976bool emitSubOffsetBool(SourceInfo);
53977#endif
53978#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53979[[nodiscard]] bool emitSubOffset(PrimType, SourceInfo I);
53980#endif
53981#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
53982bool
53983#if defined(GET_EVAL_IMPL)
53984EvalEmitter
53985#else
53986ByteCodeEmitter
53987#endif
53988::emitSubOffset(PrimType T0, SourceInfo I) {
53989 switch (T0) {
53990 case PT_Sint8:
53991 return emitSubOffsetSint8(I);
53992 case PT_Uint8:
53993 return emitSubOffsetUint8(I);
53994 case PT_Sint16:
53995 return emitSubOffsetSint16(I);
53996 case PT_Uint16:
53997 return emitSubOffsetUint16(I);
53998 case PT_Sint32:
53999 return emitSubOffsetSint32(I);
54000 case PT_Uint32:
54001 return emitSubOffsetUint32(I);
54002 case PT_Sint64:
54003 return emitSubOffsetSint64(I);
54004 case PT_Uint64:
54005 return emitSubOffsetUint64(I);
54006 case PT_IntAP:
54007 return emitSubOffsetIntAP(I);
54008 case PT_IntAPS:
54009 return emitSubOffsetIntAPS(I);
54010 case PT_Bool:
54011 return emitSubOffsetBool(I);
54012 default: llvm_unreachable("invalid type: emitSubOffset");
54013 }
54014 llvm_unreachable("invalid enum value");
54015}
54016#endif
54017#ifdef GET_LINK_IMPL
54018bool ByteCodeEmitter::emitSubOffsetSint8(SourceInfo L) {
54019 return emitOp<>(OP_SubOffsetSint8, L);
54020}
54021bool ByteCodeEmitter::emitSubOffsetUint8(SourceInfo L) {
54022 return emitOp<>(OP_SubOffsetUint8, L);
54023}
54024bool ByteCodeEmitter::emitSubOffsetSint16(SourceInfo L) {
54025 return emitOp<>(OP_SubOffsetSint16, L);
54026}
54027bool ByteCodeEmitter::emitSubOffsetUint16(SourceInfo L) {
54028 return emitOp<>(OP_SubOffsetUint16, L);
54029}
54030bool ByteCodeEmitter::emitSubOffsetSint32(SourceInfo L) {
54031 return emitOp<>(OP_SubOffsetSint32, L);
54032}
54033bool ByteCodeEmitter::emitSubOffsetUint32(SourceInfo L) {
54034 return emitOp<>(OP_SubOffsetUint32, L);
54035}
54036bool ByteCodeEmitter::emitSubOffsetSint64(SourceInfo L) {
54037 return emitOp<>(OP_SubOffsetSint64, L);
54038}
54039bool ByteCodeEmitter::emitSubOffsetUint64(SourceInfo L) {
54040 return emitOp<>(OP_SubOffsetUint64, L);
54041}
54042bool ByteCodeEmitter::emitSubOffsetIntAP(SourceInfo L) {
54043 return emitOp<>(OP_SubOffsetIntAP, L);
54044}
54045bool ByteCodeEmitter::emitSubOffsetIntAPS(SourceInfo L) {
54046 return emitOp<>(OP_SubOffsetIntAPS, L);
54047}
54048bool ByteCodeEmitter::emitSubOffsetBool(SourceInfo L) {
54049 return emitOp<>(OP_SubOffsetBool, L);
54050}
54051#endif
54052#ifdef GET_EVAL_IMPL
54053bool EvalEmitter::emitSubOffsetSint8(SourceInfo L) {
54054 if (!isActive()) return true;
54055 CurrentSource = L;
54056 return SubOffset<PT_Sint8>(S, CodePtr());
54057}
54058bool EvalEmitter::emitSubOffsetUint8(SourceInfo L) {
54059 if (!isActive()) return true;
54060 CurrentSource = L;
54061 return SubOffset<PT_Uint8>(S, CodePtr());
54062}
54063bool EvalEmitter::emitSubOffsetSint16(SourceInfo L) {
54064 if (!isActive()) return true;
54065 CurrentSource = L;
54066 return SubOffset<PT_Sint16>(S, CodePtr());
54067}
54068bool EvalEmitter::emitSubOffsetUint16(SourceInfo L) {
54069 if (!isActive()) return true;
54070 CurrentSource = L;
54071 return SubOffset<PT_Uint16>(S, CodePtr());
54072}
54073bool EvalEmitter::emitSubOffsetSint32(SourceInfo L) {
54074 if (!isActive()) return true;
54075 CurrentSource = L;
54076 return SubOffset<PT_Sint32>(S, CodePtr());
54077}
54078bool EvalEmitter::emitSubOffsetUint32(SourceInfo L) {
54079 if (!isActive()) return true;
54080 CurrentSource = L;
54081 return SubOffset<PT_Uint32>(S, CodePtr());
54082}
54083bool EvalEmitter::emitSubOffsetSint64(SourceInfo L) {
54084 if (!isActive()) return true;
54085 CurrentSource = L;
54086 return SubOffset<PT_Sint64>(S, CodePtr());
54087}
54088bool EvalEmitter::emitSubOffsetUint64(SourceInfo L) {
54089 if (!isActive()) return true;
54090 CurrentSource = L;
54091 return SubOffset<PT_Uint64>(S, CodePtr());
54092}
54093bool EvalEmitter::emitSubOffsetIntAP(SourceInfo L) {
54094 if (!isActive()) return true;
54095 CurrentSource = L;
54096 return SubOffset<PT_IntAP>(S, CodePtr());
54097}
54098bool EvalEmitter::emitSubOffsetIntAPS(SourceInfo L) {
54099 if (!isActive()) return true;
54100 CurrentSource = L;
54101 return SubOffset<PT_IntAPS>(S, CodePtr());
54102}
54103bool EvalEmitter::emitSubOffsetBool(SourceInfo L) {
54104 if (!isActive()) return true;
54105 CurrentSource = L;
54106 return SubOffset<PT_Bool>(S, CodePtr());
54107}
54108#endif
54109#ifdef GET_OPCODE_NAMES
54110OP_SubPtrSint8,
54111OP_SubPtrUint8,
54112OP_SubPtrSint16,
54113OP_SubPtrUint16,
54114OP_SubPtrSint32,
54115OP_SubPtrUint32,
54116OP_SubPtrSint64,
54117OP_SubPtrUint64,
54118OP_SubPtrIntAP,
54119OP_SubPtrIntAPS,
54120#endif
54121#ifdef GET_INTERPFN_LIST
54122&Interp_SubPtrSint8,
54123&Interp_SubPtrUint8,
54124&Interp_SubPtrSint16,
54125&Interp_SubPtrUint16,
54126&Interp_SubPtrSint32,
54127&Interp_SubPtrUint32,
54128&Interp_SubPtrSint64,
54129&Interp_SubPtrUint64,
54130&Interp_SubPtrIntAP,
54131&Interp_SubPtrIntAPS,
54132#endif
54133#ifdef GET_INTERPFN_DISPATCHERS
54134PRESERVE_NONE
54135static bool Interp_SubPtrSint8(InterpState &S) {
54136 {
54137 CodePtr OpPC = S.PC;
54138 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54139 if (!SubPtr<PT_Sint8>(S, OpPC, V0)) return false;
54140 }
54141#if USE_TAILCALLS
54142 MUSTTAIL return InterpNext(S);
54143#else
54144 return true;
54145#endif
54146}
54147PRESERVE_NONE
54148static bool Interp_SubPtrUint8(InterpState &S) {
54149 {
54150 CodePtr OpPC = S.PC;
54151 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54152 if (!SubPtr<PT_Uint8>(S, OpPC, V0)) return false;
54153 }
54154#if USE_TAILCALLS
54155 MUSTTAIL return InterpNext(S);
54156#else
54157 return true;
54158#endif
54159}
54160PRESERVE_NONE
54161static bool Interp_SubPtrSint16(InterpState &S) {
54162 {
54163 CodePtr OpPC = S.PC;
54164 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54165 if (!SubPtr<PT_Sint16>(S, OpPC, V0)) return false;
54166 }
54167#if USE_TAILCALLS
54168 MUSTTAIL return InterpNext(S);
54169#else
54170 return true;
54171#endif
54172}
54173PRESERVE_NONE
54174static bool Interp_SubPtrUint16(InterpState &S) {
54175 {
54176 CodePtr OpPC = S.PC;
54177 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54178 if (!SubPtr<PT_Uint16>(S, OpPC, V0)) return false;
54179 }
54180#if USE_TAILCALLS
54181 MUSTTAIL return InterpNext(S);
54182#else
54183 return true;
54184#endif
54185}
54186PRESERVE_NONE
54187static bool Interp_SubPtrSint32(InterpState &S) {
54188 {
54189 CodePtr OpPC = S.PC;
54190 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54191 if (!SubPtr<PT_Sint32>(S, OpPC, V0)) return false;
54192 }
54193#if USE_TAILCALLS
54194 MUSTTAIL return InterpNext(S);
54195#else
54196 return true;
54197#endif
54198}
54199PRESERVE_NONE
54200static bool Interp_SubPtrUint32(InterpState &S) {
54201 {
54202 CodePtr OpPC = S.PC;
54203 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54204 if (!SubPtr<PT_Uint32>(S, OpPC, V0)) return false;
54205 }
54206#if USE_TAILCALLS
54207 MUSTTAIL return InterpNext(S);
54208#else
54209 return true;
54210#endif
54211}
54212PRESERVE_NONE
54213static bool Interp_SubPtrSint64(InterpState &S) {
54214 {
54215 CodePtr OpPC = S.PC;
54216 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54217 if (!SubPtr<PT_Sint64>(S, OpPC, V0)) return false;
54218 }
54219#if USE_TAILCALLS
54220 MUSTTAIL return InterpNext(S);
54221#else
54222 return true;
54223#endif
54224}
54225PRESERVE_NONE
54226static bool Interp_SubPtrUint64(InterpState &S) {
54227 {
54228 CodePtr OpPC = S.PC;
54229 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54230 if (!SubPtr<PT_Uint64>(S, OpPC, V0)) return false;
54231 }
54232#if USE_TAILCALLS
54233 MUSTTAIL return InterpNext(S);
54234#else
54235 return true;
54236#endif
54237}
54238PRESERVE_NONE
54239static bool Interp_SubPtrIntAP(InterpState &S) {
54240 {
54241 CodePtr OpPC = S.PC;
54242 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54243 if (!SubPtr<PT_IntAP>(S, OpPC, V0)) return false;
54244 }
54245#if USE_TAILCALLS
54246 MUSTTAIL return InterpNext(S);
54247#else
54248 return true;
54249#endif
54250}
54251PRESERVE_NONE
54252static bool Interp_SubPtrIntAPS(InterpState &S) {
54253 {
54254 CodePtr OpPC = S.PC;
54255 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54256 if (!SubPtr<PT_IntAPS>(S, OpPC, V0)) return false;
54257 }
54258#if USE_TAILCALLS
54259 MUSTTAIL return InterpNext(S);
54260#else
54261 return true;
54262#endif
54263}
54264#endif
54265#ifdef GET_DISASM
54266case OP_SubPtrSint8:
54267 Text.Op = PrintName("SubPtrSint8");
54268 Text.Args.push_back(printArg<uint32_t>(PC));
54269 break;
54270case OP_SubPtrUint8:
54271 Text.Op = PrintName("SubPtrUint8");
54272 Text.Args.push_back(printArg<uint32_t>(PC));
54273 break;
54274case OP_SubPtrSint16:
54275 Text.Op = PrintName("SubPtrSint16");
54276 Text.Args.push_back(printArg<uint32_t>(PC));
54277 break;
54278case OP_SubPtrUint16:
54279 Text.Op = PrintName("SubPtrUint16");
54280 Text.Args.push_back(printArg<uint32_t>(PC));
54281 break;
54282case OP_SubPtrSint32:
54283 Text.Op = PrintName("SubPtrSint32");
54284 Text.Args.push_back(printArg<uint32_t>(PC));
54285 break;
54286case OP_SubPtrUint32:
54287 Text.Op = PrintName("SubPtrUint32");
54288 Text.Args.push_back(printArg<uint32_t>(PC));
54289 break;
54290case OP_SubPtrSint64:
54291 Text.Op = PrintName("SubPtrSint64");
54292 Text.Args.push_back(printArg<uint32_t>(PC));
54293 break;
54294case OP_SubPtrUint64:
54295 Text.Op = PrintName("SubPtrUint64");
54296 Text.Args.push_back(printArg<uint32_t>(PC));
54297 break;
54298case OP_SubPtrIntAP:
54299 Text.Op = PrintName("SubPtrIntAP");
54300 Text.Args.push_back(printArg<uint32_t>(PC));
54301 break;
54302case OP_SubPtrIntAPS:
54303 Text.Op = PrintName("SubPtrIntAPS");
54304 Text.Args.push_back(printArg<uint32_t>(PC));
54305 break;
54306#endif
54307#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54308bool emitSubPtrSint8( uint32_t , SourceInfo);
54309bool emitSubPtrUint8( uint32_t , SourceInfo);
54310bool emitSubPtrSint16( uint32_t , SourceInfo);
54311bool emitSubPtrUint16( uint32_t , SourceInfo);
54312bool emitSubPtrSint32( uint32_t , SourceInfo);
54313bool emitSubPtrUint32( uint32_t , SourceInfo);
54314bool emitSubPtrSint64( uint32_t , SourceInfo);
54315bool emitSubPtrUint64( uint32_t , SourceInfo);
54316bool emitSubPtrIntAP( uint32_t , SourceInfo);
54317bool emitSubPtrIntAPS( uint32_t , SourceInfo);
54318#endif
54319#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54320[[nodiscard]] bool emitSubPtr(PrimType, uint32_t, SourceInfo I);
54321#endif
54322#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
54323bool
54324#if defined(GET_EVAL_IMPL)
54325EvalEmitter
54326#else
54327ByteCodeEmitter
54328#endif
54329::emitSubPtr(PrimType T0, uint32_t A0, SourceInfo I) {
54330 switch (T0) {
54331 case PT_Sint8:
54332 return emitSubPtrSint8(A0, I);
54333 case PT_Uint8:
54334 return emitSubPtrUint8(A0, I);
54335 case PT_Sint16:
54336 return emitSubPtrSint16(A0, I);
54337 case PT_Uint16:
54338 return emitSubPtrUint16(A0, I);
54339 case PT_Sint32:
54340 return emitSubPtrSint32(A0, I);
54341 case PT_Uint32:
54342 return emitSubPtrUint32(A0, I);
54343 case PT_Sint64:
54344 return emitSubPtrSint64(A0, I);
54345 case PT_Uint64:
54346 return emitSubPtrUint64(A0, I);
54347 case PT_IntAP:
54348 return emitSubPtrIntAP(A0, I);
54349 case PT_IntAPS:
54350 return emitSubPtrIntAPS(A0, I);
54351 default: llvm_unreachable("invalid type: emitSubPtr");
54352 }
54353 llvm_unreachable("invalid enum value");
54354}
54355#endif
54356#ifdef GET_LINK_IMPL
54357bool ByteCodeEmitter::emitSubPtrSint8( uint32_t A0, SourceInfo L) {
54358 return emitOp<uint32_t>(OP_SubPtrSint8, A0, L);
54359}
54360bool ByteCodeEmitter::emitSubPtrUint8( uint32_t A0, SourceInfo L) {
54361 return emitOp<uint32_t>(OP_SubPtrUint8, A0, L);
54362}
54363bool ByteCodeEmitter::emitSubPtrSint16( uint32_t A0, SourceInfo L) {
54364 return emitOp<uint32_t>(OP_SubPtrSint16, A0, L);
54365}
54366bool ByteCodeEmitter::emitSubPtrUint16( uint32_t A0, SourceInfo L) {
54367 return emitOp<uint32_t>(OP_SubPtrUint16, A0, L);
54368}
54369bool ByteCodeEmitter::emitSubPtrSint32( uint32_t A0, SourceInfo L) {
54370 return emitOp<uint32_t>(OP_SubPtrSint32, A0, L);
54371}
54372bool ByteCodeEmitter::emitSubPtrUint32( uint32_t A0, SourceInfo L) {
54373 return emitOp<uint32_t>(OP_SubPtrUint32, A0, L);
54374}
54375bool ByteCodeEmitter::emitSubPtrSint64( uint32_t A0, SourceInfo L) {
54376 return emitOp<uint32_t>(OP_SubPtrSint64, A0, L);
54377}
54378bool ByteCodeEmitter::emitSubPtrUint64( uint32_t A0, SourceInfo L) {
54379 return emitOp<uint32_t>(OP_SubPtrUint64, A0, L);
54380}
54381bool ByteCodeEmitter::emitSubPtrIntAP( uint32_t A0, SourceInfo L) {
54382 return emitOp<uint32_t>(OP_SubPtrIntAP, A0, L);
54383}
54384bool ByteCodeEmitter::emitSubPtrIntAPS( uint32_t A0, SourceInfo L) {
54385 return emitOp<uint32_t>(OP_SubPtrIntAPS, A0, L);
54386}
54387#endif
54388#ifdef GET_EVAL_IMPL
54389bool EvalEmitter::emitSubPtrSint8( uint32_t A0, SourceInfo L) {
54390 if (!isActive()) return true;
54391 CurrentSource = L;
54392 return SubPtr<PT_Sint8>(S, CodePtr(), A0);
54393}
54394bool EvalEmitter::emitSubPtrUint8( uint32_t A0, SourceInfo L) {
54395 if (!isActive()) return true;
54396 CurrentSource = L;
54397 return SubPtr<PT_Uint8>(S, CodePtr(), A0);
54398}
54399bool EvalEmitter::emitSubPtrSint16( uint32_t A0, SourceInfo L) {
54400 if (!isActive()) return true;
54401 CurrentSource = L;
54402 return SubPtr<PT_Sint16>(S, CodePtr(), A0);
54403}
54404bool EvalEmitter::emitSubPtrUint16( uint32_t A0, SourceInfo L) {
54405 if (!isActive()) return true;
54406 CurrentSource = L;
54407 return SubPtr<PT_Uint16>(S, CodePtr(), A0);
54408}
54409bool EvalEmitter::emitSubPtrSint32( uint32_t A0, SourceInfo L) {
54410 if (!isActive()) return true;
54411 CurrentSource = L;
54412 return SubPtr<PT_Sint32>(S, CodePtr(), A0);
54413}
54414bool EvalEmitter::emitSubPtrUint32( uint32_t A0, SourceInfo L) {
54415 if (!isActive()) return true;
54416 CurrentSource = L;
54417 return SubPtr<PT_Uint32>(S, CodePtr(), A0);
54418}
54419bool EvalEmitter::emitSubPtrSint64( uint32_t A0, SourceInfo L) {
54420 if (!isActive()) return true;
54421 CurrentSource = L;
54422 return SubPtr<PT_Sint64>(S, CodePtr(), A0);
54423}
54424bool EvalEmitter::emitSubPtrUint64( uint32_t A0, SourceInfo L) {
54425 if (!isActive()) return true;
54426 CurrentSource = L;
54427 return SubPtr<PT_Uint64>(S, CodePtr(), A0);
54428}
54429bool EvalEmitter::emitSubPtrIntAP( uint32_t A0, SourceInfo L) {
54430 if (!isActive()) return true;
54431 CurrentSource = L;
54432 return SubPtr<PT_IntAP>(S, CodePtr(), A0);
54433}
54434bool EvalEmitter::emitSubPtrIntAPS( uint32_t A0, SourceInfo L) {
54435 if (!isActive()) return true;
54436 CurrentSource = L;
54437 return SubPtr<PT_IntAPS>(S, CodePtr(), A0);
54438}
54439#endif
54440#ifdef GET_OPCODE_NAMES
54441OP_Subf,
54442#endif
54443#ifdef GET_INTERPFN_LIST
54444&Interp_Subf,
54445#endif
54446#ifdef GET_INTERPFN_DISPATCHERS
54447PRESERVE_NONE
54448static bool Interp_Subf(InterpState &S) {
54449 {
54450 CodePtr OpPC = S.PC;
54451 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54452 if (!Subf(S, OpPC, V0)) return false;
54453 }
54454#if USE_TAILCALLS
54455 MUSTTAIL return InterpNext(S);
54456#else
54457 return true;
54458#endif
54459}
54460#endif
54461#ifdef GET_DISASM
54462case OP_Subf:
54463 Text.Op = PrintName("Subf");
54464 Text.Args.push_back(printArg<uint32_t>(PC));
54465 break;
54466#endif
54467#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54468bool emitSubf( uint32_t , SourceInfo);
54469#endif
54470#ifdef GET_LINK_IMPL
54471bool ByteCodeEmitter::emitSubf( uint32_t A0, SourceInfo L) {
54472 return emitOp<uint32_t>(OP_Subf, A0, L);
54473}
54474#endif
54475#ifdef GET_EVAL_IMPL
54476bool EvalEmitter::emitSubf( uint32_t A0, SourceInfo L) {
54477 if (!isActive()) return true;
54478 CurrentSource = L;
54479 return Subf(S, CodePtr(), A0);
54480}
54481#endif
54482#ifdef GET_OPCODE_NAMES
54483OP_This,
54484#endif
54485#ifdef GET_INTERPFN_LIST
54486&Interp_This,
54487#endif
54488#ifdef GET_INTERPFN_DISPATCHERS
54489PRESERVE_NONE
54490static bool Interp_This(InterpState &S) {
54491 if (!This(S, S.PC)) return false;
54492#if USE_TAILCALLS
54493 MUSTTAIL return InterpNext(S);
54494#else
54495 return true;
54496#endif
54497}
54498#endif
54499#ifdef GET_DISASM
54500case OP_This:
54501 Text.Op = PrintName("This");
54502 break;
54503#endif
54504#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54505bool emitThis(SourceInfo);
54506#endif
54507#ifdef GET_LINK_IMPL
54508bool ByteCodeEmitter::emitThis(SourceInfo L) {
54509 return emitOp<>(OP_This, L);
54510}
54511#endif
54512#ifdef GET_EVAL_IMPL
54513bool EvalEmitter::emitThis(SourceInfo L) {
54514 if (!isActive()) return true;
54515 CurrentSource = L;
54516 return This(S, CodePtr());
54517}
54518#endif
54519#ifdef GET_OPCODE_NAMES
54520OP_ToMemberPtr,
54521#endif
54522#ifdef GET_INTERPFN_LIST
54523&Interp_ToMemberPtr,
54524#endif
54525#ifdef GET_INTERPFN_DISPATCHERS
54526PRESERVE_NONE
54527static bool Interp_ToMemberPtr(InterpState &S) {
54528 ToMemberPtr(S);
54529#if USE_TAILCALLS
54530 MUSTTAIL return InterpNext(S);
54531#else
54532 return true;
54533#endif
54534}
54535#endif
54536#ifdef GET_DISASM
54537case OP_ToMemberPtr:
54538 Text.Op = PrintName("ToMemberPtr");
54539 break;
54540#endif
54541#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54542bool emitToMemberPtr(SourceInfo);
54543#endif
54544#ifdef GET_LINK_IMPL
54545bool ByteCodeEmitter::emitToMemberPtr(SourceInfo L) {
54546 return emitOp<>(OP_ToMemberPtr, L);
54547}
54548#endif
54549#ifdef GET_EVAL_IMPL
54550bool EvalEmitter::emitToMemberPtr(SourceInfo L) {
54551 if (!isActive()) return true;
54552 CurrentSource = L;
54553 return ToMemberPtr(S);
54554}
54555#endif
54556#ifdef GET_OPCODE_NAMES
54557OP_Unsupported,
54558#endif
54559#ifdef GET_INTERPFN_LIST
54560&Interp_Unsupported,
54561#endif
54562#ifdef GET_INTERPFN_DISPATCHERS
54563PRESERVE_NONE
54564static bool Interp_Unsupported(InterpState &S) {
54565 if (!Unsupported(S, S.PC)) return false;
54566#if USE_TAILCALLS
54567 MUSTTAIL return InterpNext(S);
54568#else
54569 return true;
54570#endif
54571}
54572#endif
54573#ifdef GET_DISASM
54574case OP_Unsupported:
54575 Text.Op = PrintName("Unsupported");
54576 break;
54577#endif
54578#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54579bool emitUnsupported(SourceInfo);
54580#endif
54581#ifdef GET_LINK_IMPL
54582bool ByteCodeEmitter::emitUnsupported(SourceInfo L) {
54583 return emitOp<>(OP_Unsupported, L);
54584}
54585#endif
54586#ifdef GET_EVAL_IMPL
54587bool EvalEmitter::emitUnsupported(SourceInfo L) {
54588 if (!isActive()) return true;
54589 CurrentSource = L;
54590 return Unsupported(S, CodePtr());
54591}
54592#endif
54593#ifdef GET_OPCODE_NAMES
54594OP_ZeroSint8,
54595OP_ZeroUint8,
54596OP_ZeroSint16,
54597OP_ZeroUint16,
54598OP_ZeroSint32,
54599OP_ZeroUint32,
54600OP_ZeroSint64,
54601OP_ZeroUint64,
54602OP_ZeroBool,
54603#endif
54604#ifdef GET_INTERPFN_LIST
54605&Interp_ZeroSint8,
54606&Interp_ZeroUint8,
54607&Interp_ZeroSint16,
54608&Interp_ZeroUint16,
54609&Interp_ZeroSint32,
54610&Interp_ZeroUint32,
54611&Interp_ZeroSint64,
54612&Interp_ZeroUint64,
54613&Interp_ZeroBool,
54614#endif
54615#ifdef GET_INTERPFN_DISPATCHERS
54616PRESERVE_NONE
54617static bool Interp_ZeroSint8(InterpState &S) {
54618 Zero<PT_Sint8>(S);
54619#if USE_TAILCALLS
54620 MUSTTAIL return InterpNext(S);
54621#else
54622 return true;
54623#endif
54624}
54625PRESERVE_NONE
54626static bool Interp_ZeroUint8(InterpState &S) {
54627 Zero<PT_Uint8>(S);
54628#if USE_TAILCALLS
54629 MUSTTAIL return InterpNext(S);
54630#else
54631 return true;
54632#endif
54633}
54634PRESERVE_NONE
54635static bool Interp_ZeroSint16(InterpState &S) {
54636 Zero<PT_Sint16>(S);
54637#if USE_TAILCALLS
54638 MUSTTAIL return InterpNext(S);
54639#else
54640 return true;
54641#endif
54642}
54643PRESERVE_NONE
54644static bool Interp_ZeroUint16(InterpState &S) {
54645 Zero<PT_Uint16>(S);
54646#if USE_TAILCALLS
54647 MUSTTAIL return InterpNext(S);
54648#else
54649 return true;
54650#endif
54651}
54652PRESERVE_NONE
54653static bool Interp_ZeroSint32(InterpState &S) {
54654 Zero<PT_Sint32>(S);
54655#if USE_TAILCALLS
54656 MUSTTAIL return InterpNext(S);
54657#else
54658 return true;
54659#endif
54660}
54661PRESERVE_NONE
54662static bool Interp_ZeroUint32(InterpState &S) {
54663 Zero<PT_Uint32>(S);
54664#if USE_TAILCALLS
54665 MUSTTAIL return InterpNext(S);
54666#else
54667 return true;
54668#endif
54669}
54670PRESERVE_NONE
54671static bool Interp_ZeroSint64(InterpState &S) {
54672 Zero<PT_Sint64>(S);
54673#if USE_TAILCALLS
54674 MUSTTAIL return InterpNext(S);
54675#else
54676 return true;
54677#endif
54678}
54679PRESERVE_NONE
54680static bool Interp_ZeroUint64(InterpState &S) {
54681 Zero<PT_Uint64>(S);
54682#if USE_TAILCALLS
54683 MUSTTAIL return InterpNext(S);
54684#else
54685 return true;
54686#endif
54687}
54688PRESERVE_NONE
54689static bool Interp_ZeroBool(InterpState &S) {
54690 Zero<PT_Bool>(S);
54691#if USE_TAILCALLS
54692 MUSTTAIL return InterpNext(S);
54693#else
54694 return true;
54695#endif
54696}
54697#endif
54698#ifdef GET_DISASM
54699case OP_ZeroSint8:
54700 Text.Op = PrintName("ZeroSint8");
54701 break;
54702case OP_ZeroUint8:
54703 Text.Op = PrintName("ZeroUint8");
54704 break;
54705case OP_ZeroSint16:
54706 Text.Op = PrintName("ZeroSint16");
54707 break;
54708case OP_ZeroUint16:
54709 Text.Op = PrintName("ZeroUint16");
54710 break;
54711case OP_ZeroSint32:
54712 Text.Op = PrintName("ZeroSint32");
54713 break;
54714case OP_ZeroUint32:
54715 Text.Op = PrintName("ZeroUint32");
54716 break;
54717case OP_ZeroSint64:
54718 Text.Op = PrintName("ZeroSint64");
54719 break;
54720case OP_ZeroUint64:
54721 Text.Op = PrintName("ZeroUint64");
54722 break;
54723case OP_ZeroBool:
54724 Text.Op = PrintName("ZeroBool");
54725 break;
54726#endif
54727#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54728bool emitZeroSint8(SourceInfo);
54729bool emitZeroUint8(SourceInfo);
54730bool emitZeroSint16(SourceInfo);
54731bool emitZeroUint16(SourceInfo);
54732bool emitZeroSint32(SourceInfo);
54733bool emitZeroUint32(SourceInfo);
54734bool emitZeroSint64(SourceInfo);
54735bool emitZeroUint64(SourceInfo);
54736bool emitZeroBool(SourceInfo);
54737#endif
54738#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54739[[nodiscard]] bool emitZero(PrimType, SourceInfo I);
54740#endif
54741#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
54742bool
54743#if defined(GET_EVAL_IMPL)
54744EvalEmitter
54745#else
54746ByteCodeEmitter
54747#endif
54748::emitZero(PrimType T0, SourceInfo I) {
54749 switch (T0) {
54750 case PT_Sint8:
54751 return emitZeroSint8(I);
54752 case PT_Uint8:
54753 return emitZeroUint8(I);
54754 case PT_Sint16:
54755 return emitZeroSint16(I);
54756 case PT_Uint16:
54757 return emitZeroUint16(I);
54758 case PT_Sint32:
54759 return emitZeroSint32(I);
54760 case PT_Uint32:
54761 return emitZeroUint32(I);
54762 case PT_Sint64:
54763 return emitZeroSint64(I);
54764 case PT_Uint64:
54765 return emitZeroUint64(I);
54766 case PT_Bool:
54767 return emitZeroBool(I);
54768 default: llvm_unreachable("invalid type: emitZero");
54769 }
54770 llvm_unreachable("invalid enum value");
54771}
54772#endif
54773#ifdef GET_LINK_IMPL
54774bool ByteCodeEmitter::emitZeroSint8(SourceInfo L) {
54775 return emitOp<>(OP_ZeroSint8, L);
54776}
54777bool ByteCodeEmitter::emitZeroUint8(SourceInfo L) {
54778 return emitOp<>(OP_ZeroUint8, L);
54779}
54780bool ByteCodeEmitter::emitZeroSint16(SourceInfo L) {
54781 return emitOp<>(OP_ZeroSint16, L);
54782}
54783bool ByteCodeEmitter::emitZeroUint16(SourceInfo L) {
54784 return emitOp<>(OP_ZeroUint16, L);
54785}
54786bool ByteCodeEmitter::emitZeroSint32(SourceInfo L) {
54787 return emitOp<>(OP_ZeroSint32, L);
54788}
54789bool ByteCodeEmitter::emitZeroUint32(SourceInfo L) {
54790 return emitOp<>(OP_ZeroUint32, L);
54791}
54792bool ByteCodeEmitter::emitZeroSint64(SourceInfo L) {
54793 return emitOp<>(OP_ZeroSint64, L);
54794}
54795bool ByteCodeEmitter::emitZeroUint64(SourceInfo L) {
54796 return emitOp<>(OP_ZeroUint64, L);
54797}
54798bool ByteCodeEmitter::emitZeroBool(SourceInfo L) {
54799 return emitOp<>(OP_ZeroBool, L);
54800}
54801#endif
54802#ifdef GET_EVAL_IMPL
54803bool EvalEmitter::emitZeroSint8(SourceInfo L) {
54804 if (!isActive()) return true;
54805 CurrentSource = L;
54806 return Zero<PT_Sint8>(S);
54807}
54808bool EvalEmitter::emitZeroUint8(SourceInfo L) {
54809 if (!isActive()) return true;
54810 CurrentSource = L;
54811 return Zero<PT_Uint8>(S);
54812}
54813bool EvalEmitter::emitZeroSint16(SourceInfo L) {
54814 if (!isActive()) return true;
54815 CurrentSource = L;
54816 return Zero<PT_Sint16>(S);
54817}
54818bool EvalEmitter::emitZeroUint16(SourceInfo L) {
54819 if (!isActive()) return true;
54820 CurrentSource = L;
54821 return Zero<PT_Uint16>(S);
54822}
54823bool EvalEmitter::emitZeroSint32(SourceInfo L) {
54824 if (!isActive()) return true;
54825 CurrentSource = L;
54826 return Zero<PT_Sint32>(S);
54827}
54828bool EvalEmitter::emitZeroUint32(SourceInfo L) {
54829 if (!isActive()) return true;
54830 CurrentSource = L;
54831 return Zero<PT_Uint32>(S);
54832}
54833bool EvalEmitter::emitZeroSint64(SourceInfo L) {
54834 if (!isActive()) return true;
54835 CurrentSource = L;
54836 return Zero<PT_Sint64>(S);
54837}
54838bool EvalEmitter::emitZeroUint64(SourceInfo L) {
54839 if (!isActive()) return true;
54840 CurrentSource = L;
54841 return Zero<PT_Uint64>(S);
54842}
54843bool EvalEmitter::emitZeroBool(SourceInfo L) {
54844 if (!isActive()) return true;
54845 CurrentSource = L;
54846 return Zero<PT_Bool>(S);
54847}
54848#endif
54849#ifdef GET_OPCODE_NAMES
54850OP_ZeroIntAP,
54851#endif
54852#ifdef GET_INTERPFN_LIST
54853&Interp_ZeroIntAP,
54854#endif
54855#ifdef GET_INTERPFN_DISPATCHERS
54856PRESERVE_NONE
54857static bool Interp_ZeroIntAP(InterpState &S) {
54858 {
54859 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54860 ZeroIntAP(S, V0);
54861 }
54862#if USE_TAILCALLS
54863 MUSTTAIL return InterpNext(S);
54864#else
54865 return true;
54866#endif
54867}
54868#endif
54869#ifdef GET_DISASM
54870case OP_ZeroIntAP:
54871 Text.Op = PrintName("ZeroIntAP");
54872 Text.Args.push_back(printArg<uint32_t>(PC));
54873 break;
54874#endif
54875#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54876bool emitZeroIntAP( uint32_t , SourceInfo);
54877#endif
54878#ifdef GET_LINK_IMPL
54879bool ByteCodeEmitter::emitZeroIntAP( uint32_t A0, SourceInfo L) {
54880 return emitOp<uint32_t>(OP_ZeroIntAP, A0, L);
54881}
54882#endif
54883#ifdef GET_EVAL_IMPL
54884bool EvalEmitter::emitZeroIntAP( uint32_t A0, SourceInfo L) {
54885 if (!isActive()) return true;
54886 CurrentSource = L;
54887 return ZeroIntAP(S, A0);
54888}
54889#endif
54890#ifdef GET_OPCODE_NAMES
54891OP_ZeroIntAPS,
54892#endif
54893#ifdef GET_INTERPFN_LIST
54894&Interp_ZeroIntAPS,
54895#endif
54896#ifdef GET_INTERPFN_DISPATCHERS
54897PRESERVE_NONE
54898static bool Interp_ZeroIntAPS(InterpState &S) {
54899 {
54900 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54901 ZeroIntAPS(S, V0);
54902 }
54903#if USE_TAILCALLS
54904 MUSTTAIL return InterpNext(S);
54905#else
54906 return true;
54907#endif
54908}
54909#endif
54910#ifdef GET_DISASM
54911case OP_ZeroIntAPS:
54912 Text.Op = PrintName("ZeroIntAPS");
54913 Text.Args.push_back(printArg<uint32_t>(PC));
54914 break;
54915#endif
54916#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54917bool emitZeroIntAPS( uint32_t , SourceInfo);
54918#endif
54919#ifdef GET_LINK_IMPL
54920bool ByteCodeEmitter::emitZeroIntAPS( uint32_t A0, SourceInfo L) {
54921 return emitOp<uint32_t>(OP_ZeroIntAPS, A0, L);
54922}
54923#endif
54924#ifdef GET_EVAL_IMPL
54925bool EvalEmitter::emitZeroIntAPS( uint32_t A0, SourceInfo L) {
54926 if (!isActive()) return true;
54927 CurrentSource = L;
54928 return ZeroIntAPS(S, A0);
54929}
54930#endif
54931