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_AddrOf,
760#endif
761#ifdef GET_INTERPFN_LIST
762&Interp_AddrOf,
763#endif
764#ifdef GET_INTERPFN_DISPATCHERS
765PRESERVE_NONE
766static bool Interp_AddrOf(InterpState &S) {
767 if (!AddrOf(S, S.PC)) return false;
768#if USE_TAILCALLS
769 MUSTTAIL return InterpNext(S);
770#else
771 return true;
772#endif
773}
774#endif
775#ifdef GET_DISASM
776case OP_AddrOf:
777 Text.Op = PrintName("AddrOf");
778 break;
779#endif
780#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
781bool emitAddrOf(SourceInfo);
782#endif
783#ifdef GET_LINK_IMPL
784bool ByteCodeEmitter::emitAddrOf(SourceInfo L) {
785 return emitOp<>(OP_AddrOf, L);
786}
787#endif
788#ifdef GET_EVAL_IMPL
789bool EvalEmitter::emitAddrOf(SourceInfo L) {
790 if (!isActive()) return true;
791 CurrentSource = L;
792 return AddrOf(S, CodePtr());
793}
794#endif
795#ifdef GET_OPCODE_NAMES
796OP_Alloc,
797#endif
798#ifdef GET_INTERPFN_LIST
799&Interp_Alloc,
800#endif
801#ifdef GET_INTERPFN_DISPATCHERS
802PRESERVE_NONE
803static bool Interp_Alloc(InterpState &S) {
804 {
805 CodePtr OpPC = S.PC;
806 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
807 if (!Alloc(S, OpPC, V0)) return false;
808 }
809#if USE_TAILCALLS
810 MUSTTAIL return InterpNext(S);
811#else
812 return true;
813#endif
814}
815#endif
816#ifdef GET_DISASM
817case OP_Alloc:
818 Text.Op = PrintName("Alloc");
819 Text.Args.push_back(printArg<const Descriptor *>(PC));
820 break;
821#endif
822#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
823bool emitAlloc( const Descriptor * , SourceInfo);
824#endif
825#ifdef GET_LINK_IMPL
826bool ByteCodeEmitter::emitAlloc( const Descriptor * A0, SourceInfo L) {
827 return emitOp<const Descriptor *>(OP_Alloc, A0, L);
828}
829#endif
830#ifdef GET_EVAL_IMPL
831bool EvalEmitter::emitAlloc( const Descriptor * A0, SourceInfo L) {
832 if (!isActive()) return true;
833 CurrentSource = L;
834 return Alloc(S, CodePtr(), A0);
835}
836#endif
837#ifdef GET_OPCODE_NAMES
838OP_AllocCNSint8,
839OP_AllocCNUint8,
840OP_AllocCNSint16,
841OP_AllocCNUint16,
842OP_AllocCNSint32,
843OP_AllocCNUint32,
844OP_AllocCNSint64,
845OP_AllocCNUint64,
846OP_AllocCNIntAP,
847OP_AllocCNIntAPS,
848OP_AllocCNBool,
849#endif
850#ifdef GET_INTERPFN_LIST
851&Interp_AllocCNSint8,
852&Interp_AllocCNUint8,
853&Interp_AllocCNSint16,
854&Interp_AllocCNUint16,
855&Interp_AllocCNSint32,
856&Interp_AllocCNUint32,
857&Interp_AllocCNSint64,
858&Interp_AllocCNUint64,
859&Interp_AllocCNIntAP,
860&Interp_AllocCNIntAPS,
861&Interp_AllocCNBool,
862#endif
863#ifdef GET_INTERPFN_DISPATCHERS
864PRESERVE_NONE
865static bool Interp_AllocCNSint8(InterpState &S) {
866 {
867 CodePtr OpPC = S.PC;
868 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
869 const auto V1 = ReadArg<bool>(S, S.PC);
870 if (!AllocCN<PT_Sint8>(S, OpPC, V0, V1)) return false;
871 }
872#if USE_TAILCALLS
873 MUSTTAIL return InterpNext(S);
874#else
875 return true;
876#endif
877}
878PRESERVE_NONE
879static bool Interp_AllocCNUint8(InterpState &S) {
880 {
881 CodePtr OpPC = S.PC;
882 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
883 const auto V1 = ReadArg<bool>(S, S.PC);
884 if (!AllocCN<PT_Uint8>(S, OpPC, V0, V1)) return false;
885 }
886#if USE_TAILCALLS
887 MUSTTAIL return InterpNext(S);
888#else
889 return true;
890#endif
891}
892PRESERVE_NONE
893static bool Interp_AllocCNSint16(InterpState &S) {
894 {
895 CodePtr OpPC = S.PC;
896 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
897 const auto V1 = ReadArg<bool>(S, S.PC);
898 if (!AllocCN<PT_Sint16>(S, OpPC, V0, V1)) return false;
899 }
900#if USE_TAILCALLS
901 MUSTTAIL return InterpNext(S);
902#else
903 return true;
904#endif
905}
906PRESERVE_NONE
907static bool Interp_AllocCNUint16(InterpState &S) {
908 {
909 CodePtr OpPC = S.PC;
910 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
911 const auto V1 = ReadArg<bool>(S, S.PC);
912 if (!AllocCN<PT_Uint16>(S, OpPC, V0, V1)) return false;
913 }
914#if USE_TAILCALLS
915 MUSTTAIL return InterpNext(S);
916#else
917 return true;
918#endif
919}
920PRESERVE_NONE
921static bool Interp_AllocCNSint32(InterpState &S) {
922 {
923 CodePtr OpPC = S.PC;
924 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
925 const auto V1 = ReadArg<bool>(S, S.PC);
926 if (!AllocCN<PT_Sint32>(S, OpPC, V0, V1)) return false;
927 }
928#if USE_TAILCALLS
929 MUSTTAIL return InterpNext(S);
930#else
931 return true;
932#endif
933}
934PRESERVE_NONE
935static bool Interp_AllocCNUint32(InterpState &S) {
936 {
937 CodePtr OpPC = S.PC;
938 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
939 const auto V1 = ReadArg<bool>(S, S.PC);
940 if (!AllocCN<PT_Uint32>(S, OpPC, V0, V1)) return false;
941 }
942#if USE_TAILCALLS
943 MUSTTAIL return InterpNext(S);
944#else
945 return true;
946#endif
947}
948PRESERVE_NONE
949static bool Interp_AllocCNSint64(InterpState &S) {
950 {
951 CodePtr OpPC = S.PC;
952 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
953 const auto V1 = ReadArg<bool>(S, S.PC);
954 if (!AllocCN<PT_Sint64>(S, OpPC, V0, V1)) return false;
955 }
956#if USE_TAILCALLS
957 MUSTTAIL return InterpNext(S);
958#else
959 return true;
960#endif
961}
962PRESERVE_NONE
963static bool Interp_AllocCNUint64(InterpState &S) {
964 {
965 CodePtr OpPC = S.PC;
966 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
967 const auto V1 = ReadArg<bool>(S, S.PC);
968 if (!AllocCN<PT_Uint64>(S, OpPC, V0, V1)) return false;
969 }
970#if USE_TAILCALLS
971 MUSTTAIL return InterpNext(S);
972#else
973 return true;
974#endif
975}
976PRESERVE_NONE
977static bool Interp_AllocCNIntAP(InterpState &S) {
978 {
979 CodePtr OpPC = S.PC;
980 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
981 const auto V1 = ReadArg<bool>(S, S.PC);
982 if (!AllocCN<PT_IntAP>(S, OpPC, V0, V1)) return false;
983 }
984#if USE_TAILCALLS
985 MUSTTAIL return InterpNext(S);
986#else
987 return true;
988#endif
989}
990PRESERVE_NONE
991static bool Interp_AllocCNIntAPS(InterpState &S) {
992 {
993 CodePtr OpPC = S.PC;
994 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
995 const auto V1 = ReadArg<bool>(S, S.PC);
996 if (!AllocCN<PT_IntAPS>(S, OpPC, V0, V1)) return false;
997 }
998#if USE_TAILCALLS
999 MUSTTAIL return InterpNext(S);
1000#else
1001 return true;
1002#endif
1003}
1004PRESERVE_NONE
1005static bool Interp_AllocCNBool(InterpState &S) {
1006 {
1007 CodePtr OpPC = S.PC;
1008 const auto V0 = ReadArg<const Descriptor *>(S, S.PC);
1009 const auto V1 = ReadArg<bool>(S, S.PC);
1010 if (!AllocCN<PT_Bool>(S, OpPC, V0, V1)) return false;
1011 }
1012#if USE_TAILCALLS
1013 MUSTTAIL return InterpNext(S);
1014#else
1015 return true;
1016#endif
1017}
1018#endif
1019#ifdef GET_DISASM
1020case OP_AllocCNSint8:
1021 Text.Op = PrintName("AllocCNSint8");
1022 Text.Args.push_back(printArg<const Descriptor *>(PC));
1023 Text.Args.push_back(printArg<bool>(PC));
1024 break;
1025case OP_AllocCNUint8:
1026 Text.Op = PrintName("AllocCNUint8");
1027 Text.Args.push_back(printArg<const Descriptor *>(PC));
1028 Text.Args.push_back(printArg<bool>(PC));
1029 break;
1030case OP_AllocCNSint16:
1031 Text.Op = PrintName("AllocCNSint16");
1032 Text.Args.push_back(printArg<const Descriptor *>(PC));
1033 Text.Args.push_back(printArg<bool>(PC));
1034 break;
1035case OP_AllocCNUint16:
1036 Text.Op = PrintName("AllocCNUint16");
1037 Text.Args.push_back(printArg<const Descriptor *>(PC));
1038 Text.Args.push_back(printArg<bool>(PC));
1039 break;
1040case OP_AllocCNSint32:
1041 Text.Op = PrintName("AllocCNSint32");
1042 Text.Args.push_back(printArg<const Descriptor *>(PC));
1043 Text.Args.push_back(printArg<bool>(PC));
1044 break;
1045case OP_AllocCNUint32:
1046 Text.Op = PrintName("AllocCNUint32");
1047 Text.Args.push_back(printArg<const Descriptor *>(PC));
1048 Text.Args.push_back(printArg<bool>(PC));
1049 break;
1050case OP_AllocCNSint64:
1051 Text.Op = PrintName("AllocCNSint64");
1052 Text.Args.push_back(printArg<const Descriptor *>(PC));
1053 Text.Args.push_back(printArg<bool>(PC));
1054 break;
1055case OP_AllocCNUint64:
1056 Text.Op = PrintName("AllocCNUint64");
1057 Text.Args.push_back(printArg<const Descriptor *>(PC));
1058 Text.Args.push_back(printArg<bool>(PC));
1059 break;
1060case OP_AllocCNIntAP:
1061 Text.Op = PrintName("AllocCNIntAP");
1062 Text.Args.push_back(printArg<const Descriptor *>(PC));
1063 Text.Args.push_back(printArg<bool>(PC));
1064 break;
1065case OP_AllocCNIntAPS:
1066 Text.Op = PrintName("AllocCNIntAPS");
1067 Text.Args.push_back(printArg<const Descriptor *>(PC));
1068 Text.Args.push_back(printArg<bool>(PC));
1069 break;
1070case OP_AllocCNBool:
1071 Text.Op = PrintName("AllocCNBool");
1072 Text.Args.push_back(printArg<const Descriptor *>(PC));
1073 Text.Args.push_back(printArg<bool>(PC));
1074 break;
1075#endif
1076#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1077bool emitAllocCNSint8( const Descriptor * , bool , SourceInfo);
1078bool emitAllocCNUint8( const Descriptor * , bool , SourceInfo);
1079bool emitAllocCNSint16( const Descriptor * , bool , SourceInfo);
1080bool emitAllocCNUint16( const Descriptor * , bool , SourceInfo);
1081bool emitAllocCNSint32( const Descriptor * , bool , SourceInfo);
1082bool emitAllocCNUint32( const Descriptor * , bool , SourceInfo);
1083bool emitAllocCNSint64( const Descriptor * , bool , SourceInfo);
1084bool emitAllocCNUint64( const Descriptor * , bool , SourceInfo);
1085bool emitAllocCNIntAP( const Descriptor * , bool , SourceInfo);
1086bool emitAllocCNIntAPS( const Descriptor * , bool , SourceInfo);
1087bool emitAllocCNBool( const Descriptor * , bool , SourceInfo);
1088#endif
1089#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1090[[nodiscard]] bool emitAllocCN(PrimType, const Descriptor *, bool, SourceInfo I);
1091#endif
1092#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
1093bool
1094#if defined(GET_EVAL_IMPL)
1095EvalEmitter
1096#else
1097ByteCodeEmitter
1098#endif
1099::emitAllocCN(PrimType T0, const Descriptor * A0, bool A1, SourceInfo I) {
1100 switch (T0) {
1101 case PT_Sint8:
1102 return emitAllocCNSint8(A0, A1, I);
1103 case PT_Uint8:
1104 return emitAllocCNUint8(A0, A1, I);
1105 case PT_Sint16:
1106 return emitAllocCNSint16(A0, A1, I);
1107 case PT_Uint16:
1108 return emitAllocCNUint16(A0, A1, I);
1109 case PT_Sint32:
1110 return emitAllocCNSint32(A0, A1, I);
1111 case PT_Uint32:
1112 return emitAllocCNUint32(A0, A1, I);
1113 case PT_Sint64:
1114 return emitAllocCNSint64(A0, A1, I);
1115 case PT_Uint64:
1116 return emitAllocCNUint64(A0, A1, I);
1117 case PT_IntAP:
1118 return emitAllocCNIntAP(A0, A1, I);
1119 case PT_IntAPS:
1120 return emitAllocCNIntAPS(A0, A1, I);
1121 case PT_Bool:
1122 return emitAllocCNBool(A0, A1, I);
1123 default: llvm_unreachable("invalid type: emitAllocCN");
1124 }
1125 llvm_unreachable("invalid enum value");
1126}
1127#endif
1128#ifdef GET_LINK_IMPL
1129bool ByteCodeEmitter::emitAllocCNSint8( const Descriptor * A0, bool A1, SourceInfo L) {
1130 return emitOp<const Descriptor *, bool>(OP_AllocCNSint8, A0, A1, L);
1131}
1132bool ByteCodeEmitter::emitAllocCNUint8( const Descriptor * A0, bool A1, SourceInfo L) {
1133 return emitOp<const Descriptor *, bool>(OP_AllocCNUint8, A0, A1, L);
1134}
1135bool ByteCodeEmitter::emitAllocCNSint16( const Descriptor * A0, bool A1, SourceInfo L) {
1136 return emitOp<const Descriptor *, bool>(OP_AllocCNSint16, A0, A1, L);
1137}
1138bool ByteCodeEmitter::emitAllocCNUint16( const Descriptor * A0, bool A1, SourceInfo L) {
1139 return emitOp<const Descriptor *, bool>(OP_AllocCNUint16, A0, A1, L);
1140}
1141bool ByteCodeEmitter::emitAllocCNSint32( const Descriptor * A0, bool A1, SourceInfo L) {
1142 return emitOp<const Descriptor *, bool>(OP_AllocCNSint32, A0, A1, L);
1143}
1144bool ByteCodeEmitter::emitAllocCNUint32( const Descriptor * A0, bool A1, SourceInfo L) {
1145 return emitOp<const Descriptor *, bool>(OP_AllocCNUint32, A0, A1, L);
1146}
1147bool ByteCodeEmitter::emitAllocCNSint64( const Descriptor * A0, bool A1, SourceInfo L) {
1148 return emitOp<const Descriptor *, bool>(OP_AllocCNSint64, A0, A1, L);
1149}
1150bool ByteCodeEmitter::emitAllocCNUint64( const Descriptor * A0, bool A1, SourceInfo L) {
1151 return emitOp<const Descriptor *, bool>(OP_AllocCNUint64, A0, A1, L);
1152}
1153bool ByteCodeEmitter::emitAllocCNIntAP( const Descriptor * A0, bool A1, SourceInfo L) {
1154 return emitOp<const Descriptor *, bool>(OP_AllocCNIntAP, A0, A1, L);
1155}
1156bool ByteCodeEmitter::emitAllocCNIntAPS( const Descriptor * A0, bool A1, SourceInfo L) {
1157 return emitOp<const Descriptor *, bool>(OP_AllocCNIntAPS, A0, A1, L);
1158}
1159bool ByteCodeEmitter::emitAllocCNBool( const Descriptor * A0, bool A1, SourceInfo L) {
1160 return emitOp<const Descriptor *, bool>(OP_AllocCNBool, A0, A1, L);
1161}
1162#endif
1163#ifdef GET_EVAL_IMPL
1164bool EvalEmitter::emitAllocCNSint8( const Descriptor * A0, bool A1, SourceInfo L) {
1165 if (!isActive()) return true;
1166 CurrentSource = L;
1167 return AllocCN<PT_Sint8>(S, CodePtr(), A0, A1);
1168}
1169bool EvalEmitter::emitAllocCNUint8( const Descriptor * A0, bool A1, SourceInfo L) {
1170 if (!isActive()) return true;
1171 CurrentSource = L;
1172 return AllocCN<PT_Uint8>(S, CodePtr(), A0, A1);
1173}
1174bool EvalEmitter::emitAllocCNSint16( const Descriptor * A0, bool A1, SourceInfo L) {
1175 if (!isActive()) return true;
1176 CurrentSource = L;
1177 return AllocCN<PT_Sint16>(S, CodePtr(), A0, A1);
1178}
1179bool EvalEmitter::emitAllocCNUint16( const Descriptor * A0, bool A1, SourceInfo L) {
1180 if (!isActive()) return true;
1181 CurrentSource = L;
1182 return AllocCN<PT_Uint16>(S, CodePtr(), A0, A1);
1183}
1184bool EvalEmitter::emitAllocCNSint32( const Descriptor * A0, bool A1, SourceInfo L) {
1185 if (!isActive()) return true;
1186 CurrentSource = L;
1187 return AllocCN<PT_Sint32>(S, CodePtr(), A0, A1);
1188}
1189bool EvalEmitter::emitAllocCNUint32( const Descriptor * A0, bool A1, SourceInfo L) {
1190 if (!isActive()) return true;
1191 CurrentSource = L;
1192 return AllocCN<PT_Uint32>(S, CodePtr(), A0, A1);
1193}
1194bool EvalEmitter::emitAllocCNSint64( const Descriptor * A0, bool A1, SourceInfo L) {
1195 if (!isActive()) return true;
1196 CurrentSource = L;
1197 return AllocCN<PT_Sint64>(S, CodePtr(), A0, A1);
1198}
1199bool EvalEmitter::emitAllocCNUint64( const Descriptor * A0, bool A1, SourceInfo L) {
1200 if (!isActive()) return true;
1201 CurrentSource = L;
1202 return AllocCN<PT_Uint64>(S, CodePtr(), A0, A1);
1203}
1204bool EvalEmitter::emitAllocCNIntAP( const Descriptor * A0, bool A1, SourceInfo L) {
1205 if (!isActive()) return true;
1206 CurrentSource = L;
1207 return AllocCN<PT_IntAP>(S, CodePtr(), A0, A1);
1208}
1209bool EvalEmitter::emitAllocCNIntAPS( const Descriptor * A0, bool A1, SourceInfo L) {
1210 if (!isActive()) return true;
1211 CurrentSource = L;
1212 return AllocCN<PT_IntAPS>(S, CodePtr(), A0, A1);
1213}
1214bool EvalEmitter::emitAllocCNBool( const Descriptor * A0, bool A1, SourceInfo L) {
1215 if (!isActive()) return true;
1216 CurrentSource = L;
1217 return AllocCN<PT_Bool>(S, CodePtr(), A0, A1);
1218}
1219#endif
1220#ifdef GET_OPCODE_NAMES
1221OP_AllocNSint8,
1222OP_AllocNUint8,
1223OP_AllocNSint16,
1224OP_AllocNUint16,
1225OP_AllocNSint32,
1226OP_AllocNUint32,
1227OP_AllocNSint64,
1228OP_AllocNUint64,
1229OP_AllocNIntAP,
1230OP_AllocNIntAPS,
1231OP_AllocNBool,
1232#endif
1233#ifdef GET_INTERPFN_LIST
1234&Interp_AllocNSint8,
1235&Interp_AllocNUint8,
1236&Interp_AllocNSint16,
1237&Interp_AllocNUint16,
1238&Interp_AllocNSint32,
1239&Interp_AllocNUint32,
1240&Interp_AllocNSint64,
1241&Interp_AllocNUint64,
1242&Interp_AllocNIntAP,
1243&Interp_AllocNIntAPS,
1244&Interp_AllocNBool,
1245#endif
1246#ifdef GET_INTERPFN_DISPATCHERS
1247PRESERVE_NONE
1248static bool Interp_AllocNSint8(InterpState &S) {
1249 {
1250 CodePtr OpPC = S.PC;
1251 const auto V0 = ReadArg<PrimType>(S, S.PC);
1252 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1253 const auto V2 = ReadArg<bool>(S, S.PC);
1254 if (!AllocN<PT_Sint8>(S, OpPC, V0, V1, V2)) return false;
1255 }
1256#if USE_TAILCALLS
1257 MUSTTAIL return InterpNext(S);
1258#else
1259 return true;
1260#endif
1261}
1262PRESERVE_NONE
1263static bool Interp_AllocNUint8(InterpState &S) {
1264 {
1265 CodePtr OpPC = S.PC;
1266 const auto V0 = ReadArg<PrimType>(S, S.PC);
1267 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1268 const auto V2 = ReadArg<bool>(S, S.PC);
1269 if (!AllocN<PT_Uint8>(S, OpPC, V0, V1, V2)) return false;
1270 }
1271#if USE_TAILCALLS
1272 MUSTTAIL return InterpNext(S);
1273#else
1274 return true;
1275#endif
1276}
1277PRESERVE_NONE
1278static bool Interp_AllocNSint16(InterpState &S) {
1279 {
1280 CodePtr OpPC = S.PC;
1281 const auto V0 = ReadArg<PrimType>(S, S.PC);
1282 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1283 const auto V2 = ReadArg<bool>(S, S.PC);
1284 if (!AllocN<PT_Sint16>(S, OpPC, V0, V1, V2)) return false;
1285 }
1286#if USE_TAILCALLS
1287 MUSTTAIL return InterpNext(S);
1288#else
1289 return true;
1290#endif
1291}
1292PRESERVE_NONE
1293static bool Interp_AllocNUint16(InterpState &S) {
1294 {
1295 CodePtr OpPC = S.PC;
1296 const auto V0 = ReadArg<PrimType>(S, S.PC);
1297 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1298 const auto V2 = ReadArg<bool>(S, S.PC);
1299 if (!AllocN<PT_Uint16>(S, OpPC, V0, V1, V2)) return false;
1300 }
1301#if USE_TAILCALLS
1302 MUSTTAIL return InterpNext(S);
1303#else
1304 return true;
1305#endif
1306}
1307PRESERVE_NONE
1308static bool Interp_AllocNSint32(InterpState &S) {
1309 {
1310 CodePtr OpPC = S.PC;
1311 const auto V0 = ReadArg<PrimType>(S, S.PC);
1312 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1313 const auto V2 = ReadArg<bool>(S, S.PC);
1314 if (!AllocN<PT_Sint32>(S, OpPC, V0, V1, V2)) return false;
1315 }
1316#if USE_TAILCALLS
1317 MUSTTAIL return InterpNext(S);
1318#else
1319 return true;
1320#endif
1321}
1322PRESERVE_NONE
1323static bool Interp_AllocNUint32(InterpState &S) {
1324 {
1325 CodePtr OpPC = S.PC;
1326 const auto V0 = ReadArg<PrimType>(S, S.PC);
1327 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1328 const auto V2 = ReadArg<bool>(S, S.PC);
1329 if (!AllocN<PT_Uint32>(S, OpPC, V0, V1, V2)) return false;
1330 }
1331#if USE_TAILCALLS
1332 MUSTTAIL return InterpNext(S);
1333#else
1334 return true;
1335#endif
1336}
1337PRESERVE_NONE
1338static bool Interp_AllocNSint64(InterpState &S) {
1339 {
1340 CodePtr OpPC = S.PC;
1341 const auto V0 = ReadArg<PrimType>(S, S.PC);
1342 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1343 const auto V2 = ReadArg<bool>(S, S.PC);
1344 if (!AllocN<PT_Sint64>(S, OpPC, V0, V1, V2)) return false;
1345 }
1346#if USE_TAILCALLS
1347 MUSTTAIL return InterpNext(S);
1348#else
1349 return true;
1350#endif
1351}
1352PRESERVE_NONE
1353static bool Interp_AllocNUint64(InterpState &S) {
1354 {
1355 CodePtr OpPC = S.PC;
1356 const auto V0 = ReadArg<PrimType>(S, S.PC);
1357 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1358 const auto V2 = ReadArg<bool>(S, S.PC);
1359 if (!AllocN<PT_Uint64>(S, OpPC, V0, V1, V2)) return false;
1360 }
1361#if USE_TAILCALLS
1362 MUSTTAIL return InterpNext(S);
1363#else
1364 return true;
1365#endif
1366}
1367PRESERVE_NONE
1368static bool Interp_AllocNIntAP(InterpState &S) {
1369 {
1370 CodePtr OpPC = S.PC;
1371 const auto V0 = ReadArg<PrimType>(S, S.PC);
1372 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1373 const auto V2 = ReadArg<bool>(S, S.PC);
1374 if (!AllocN<PT_IntAP>(S, OpPC, V0, V1, V2)) return false;
1375 }
1376#if USE_TAILCALLS
1377 MUSTTAIL return InterpNext(S);
1378#else
1379 return true;
1380#endif
1381}
1382PRESERVE_NONE
1383static bool Interp_AllocNIntAPS(InterpState &S) {
1384 {
1385 CodePtr OpPC = S.PC;
1386 const auto V0 = ReadArg<PrimType>(S, S.PC);
1387 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1388 const auto V2 = ReadArg<bool>(S, S.PC);
1389 if (!AllocN<PT_IntAPS>(S, OpPC, V0, V1, V2)) return false;
1390 }
1391#if USE_TAILCALLS
1392 MUSTTAIL return InterpNext(S);
1393#else
1394 return true;
1395#endif
1396}
1397PRESERVE_NONE
1398static bool Interp_AllocNBool(InterpState &S) {
1399 {
1400 CodePtr OpPC = S.PC;
1401 const auto V0 = ReadArg<PrimType>(S, S.PC);
1402 const auto V1 = ReadArg<const Expr *>(S, S.PC);
1403 const auto V2 = ReadArg<bool>(S, S.PC);
1404 if (!AllocN<PT_Bool>(S, OpPC, V0, V1, V2)) return false;
1405 }
1406#if USE_TAILCALLS
1407 MUSTTAIL return InterpNext(S);
1408#else
1409 return true;
1410#endif
1411}
1412#endif
1413#ifdef GET_DISASM
1414case OP_AllocNSint8:
1415 Text.Op = PrintName("AllocNSint8");
1416 Text.Args.push_back(printArg<PrimType>(PC));
1417 Text.Args.push_back(printArg<const Expr *>(PC));
1418 Text.Args.push_back(printArg<bool>(PC));
1419 break;
1420case OP_AllocNUint8:
1421 Text.Op = PrintName("AllocNUint8");
1422 Text.Args.push_back(printArg<PrimType>(PC));
1423 Text.Args.push_back(printArg<const Expr *>(PC));
1424 Text.Args.push_back(printArg<bool>(PC));
1425 break;
1426case OP_AllocNSint16:
1427 Text.Op = PrintName("AllocNSint16");
1428 Text.Args.push_back(printArg<PrimType>(PC));
1429 Text.Args.push_back(printArg<const Expr *>(PC));
1430 Text.Args.push_back(printArg<bool>(PC));
1431 break;
1432case OP_AllocNUint16:
1433 Text.Op = PrintName("AllocNUint16");
1434 Text.Args.push_back(printArg<PrimType>(PC));
1435 Text.Args.push_back(printArg<const Expr *>(PC));
1436 Text.Args.push_back(printArg<bool>(PC));
1437 break;
1438case OP_AllocNSint32:
1439 Text.Op = PrintName("AllocNSint32");
1440 Text.Args.push_back(printArg<PrimType>(PC));
1441 Text.Args.push_back(printArg<const Expr *>(PC));
1442 Text.Args.push_back(printArg<bool>(PC));
1443 break;
1444case OP_AllocNUint32:
1445 Text.Op = PrintName("AllocNUint32");
1446 Text.Args.push_back(printArg<PrimType>(PC));
1447 Text.Args.push_back(printArg<const Expr *>(PC));
1448 Text.Args.push_back(printArg<bool>(PC));
1449 break;
1450case OP_AllocNSint64:
1451 Text.Op = PrintName("AllocNSint64");
1452 Text.Args.push_back(printArg<PrimType>(PC));
1453 Text.Args.push_back(printArg<const Expr *>(PC));
1454 Text.Args.push_back(printArg<bool>(PC));
1455 break;
1456case OP_AllocNUint64:
1457 Text.Op = PrintName("AllocNUint64");
1458 Text.Args.push_back(printArg<PrimType>(PC));
1459 Text.Args.push_back(printArg<const Expr *>(PC));
1460 Text.Args.push_back(printArg<bool>(PC));
1461 break;
1462case OP_AllocNIntAP:
1463 Text.Op = PrintName("AllocNIntAP");
1464 Text.Args.push_back(printArg<PrimType>(PC));
1465 Text.Args.push_back(printArg<const Expr *>(PC));
1466 Text.Args.push_back(printArg<bool>(PC));
1467 break;
1468case OP_AllocNIntAPS:
1469 Text.Op = PrintName("AllocNIntAPS");
1470 Text.Args.push_back(printArg<PrimType>(PC));
1471 Text.Args.push_back(printArg<const Expr *>(PC));
1472 Text.Args.push_back(printArg<bool>(PC));
1473 break;
1474case OP_AllocNBool:
1475 Text.Op = PrintName("AllocNBool");
1476 Text.Args.push_back(printArg<PrimType>(PC));
1477 Text.Args.push_back(printArg<const Expr *>(PC));
1478 Text.Args.push_back(printArg<bool>(PC));
1479 break;
1480#endif
1481#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1482bool emitAllocNSint8( PrimType , const Expr * , bool , SourceInfo);
1483bool emitAllocNUint8( PrimType , const Expr * , bool , SourceInfo);
1484bool emitAllocNSint16( PrimType , const Expr * , bool , SourceInfo);
1485bool emitAllocNUint16( PrimType , const Expr * , bool , SourceInfo);
1486bool emitAllocNSint32( PrimType , const Expr * , bool , SourceInfo);
1487bool emitAllocNUint32( PrimType , const Expr * , bool , SourceInfo);
1488bool emitAllocNSint64( PrimType , const Expr * , bool , SourceInfo);
1489bool emitAllocNUint64( PrimType , const Expr * , bool , SourceInfo);
1490bool emitAllocNIntAP( PrimType , const Expr * , bool , SourceInfo);
1491bool emitAllocNIntAPS( PrimType , const Expr * , bool , SourceInfo);
1492bool emitAllocNBool( PrimType , const Expr * , bool , SourceInfo);
1493#endif
1494#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1495[[nodiscard]] bool emitAllocN(PrimType, PrimType, const Expr *, bool, SourceInfo I);
1496#endif
1497#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
1498bool
1499#if defined(GET_EVAL_IMPL)
1500EvalEmitter
1501#else
1502ByteCodeEmitter
1503#endif
1504::emitAllocN(PrimType T0, PrimType A0, const Expr * A1, bool A2, SourceInfo I) {
1505 switch (T0) {
1506 case PT_Sint8:
1507 return emitAllocNSint8(A0, A1, A2, I);
1508 case PT_Uint8:
1509 return emitAllocNUint8(A0, A1, A2, I);
1510 case PT_Sint16:
1511 return emitAllocNSint16(A0, A1, A2, I);
1512 case PT_Uint16:
1513 return emitAllocNUint16(A0, A1, A2, I);
1514 case PT_Sint32:
1515 return emitAllocNSint32(A0, A1, A2, I);
1516 case PT_Uint32:
1517 return emitAllocNUint32(A0, A1, A2, I);
1518 case PT_Sint64:
1519 return emitAllocNSint64(A0, A1, A2, I);
1520 case PT_Uint64:
1521 return emitAllocNUint64(A0, A1, A2, I);
1522 case PT_IntAP:
1523 return emitAllocNIntAP(A0, A1, A2, I);
1524 case PT_IntAPS:
1525 return emitAllocNIntAPS(A0, A1, A2, I);
1526 case PT_Bool:
1527 return emitAllocNBool(A0, A1, A2, I);
1528 default: llvm_unreachable("invalid type: emitAllocN");
1529 }
1530 llvm_unreachable("invalid enum value");
1531}
1532#endif
1533#ifdef GET_LINK_IMPL
1534bool ByteCodeEmitter::emitAllocNSint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1535 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint8, A0, A1, A2, L);
1536}
1537bool ByteCodeEmitter::emitAllocNUint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1538 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint8, A0, A1, A2, L);
1539}
1540bool ByteCodeEmitter::emitAllocNSint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1541 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint16, A0, A1, A2, L);
1542}
1543bool ByteCodeEmitter::emitAllocNUint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1544 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint16, A0, A1, A2, L);
1545}
1546bool ByteCodeEmitter::emitAllocNSint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1547 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint32, A0, A1, A2, L);
1548}
1549bool ByteCodeEmitter::emitAllocNUint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1550 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint32, A0, A1, A2, L);
1551}
1552bool ByteCodeEmitter::emitAllocNSint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1553 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint64, A0, A1, A2, L);
1554}
1555bool ByteCodeEmitter::emitAllocNUint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1556 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint64, A0, A1, A2, L);
1557}
1558bool ByteCodeEmitter::emitAllocNIntAP( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1559 return emitOp<PrimType, const Expr *, bool>(OP_AllocNIntAP, A0, A1, A2, L);
1560}
1561bool ByteCodeEmitter::emitAllocNIntAPS( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1562 return emitOp<PrimType, const Expr *, bool>(OP_AllocNIntAPS, A0, A1, A2, L);
1563}
1564bool ByteCodeEmitter::emitAllocNBool( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1565 return emitOp<PrimType, const Expr *, bool>(OP_AllocNBool, A0, A1, A2, L);
1566}
1567#endif
1568#ifdef GET_EVAL_IMPL
1569bool EvalEmitter::emitAllocNSint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1570 if (!isActive()) return true;
1571 CurrentSource = L;
1572 return AllocN<PT_Sint8>(S, CodePtr(), A0, A1, A2);
1573}
1574bool EvalEmitter::emitAllocNUint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1575 if (!isActive()) return true;
1576 CurrentSource = L;
1577 return AllocN<PT_Uint8>(S, CodePtr(), A0, A1, A2);
1578}
1579bool EvalEmitter::emitAllocNSint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1580 if (!isActive()) return true;
1581 CurrentSource = L;
1582 return AllocN<PT_Sint16>(S, CodePtr(), A0, A1, A2);
1583}
1584bool EvalEmitter::emitAllocNUint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1585 if (!isActive()) return true;
1586 CurrentSource = L;
1587 return AllocN<PT_Uint16>(S, CodePtr(), A0, A1, A2);
1588}
1589bool EvalEmitter::emitAllocNSint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1590 if (!isActive()) return true;
1591 CurrentSource = L;
1592 return AllocN<PT_Sint32>(S, CodePtr(), A0, A1, A2);
1593}
1594bool EvalEmitter::emitAllocNUint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1595 if (!isActive()) return true;
1596 CurrentSource = L;
1597 return AllocN<PT_Uint32>(S, CodePtr(), A0, A1, A2);
1598}
1599bool EvalEmitter::emitAllocNSint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1600 if (!isActive()) return true;
1601 CurrentSource = L;
1602 return AllocN<PT_Sint64>(S, CodePtr(), A0, A1, A2);
1603}
1604bool EvalEmitter::emitAllocNUint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1605 if (!isActive()) return true;
1606 CurrentSource = L;
1607 return AllocN<PT_Uint64>(S, CodePtr(), A0, A1, A2);
1608}
1609bool EvalEmitter::emitAllocNIntAP( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1610 if (!isActive()) return true;
1611 CurrentSource = L;
1612 return AllocN<PT_IntAP>(S, CodePtr(), A0, A1, A2);
1613}
1614bool EvalEmitter::emitAllocNIntAPS( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1615 if (!isActive()) return true;
1616 CurrentSource = L;
1617 return AllocN<PT_IntAPS>(S, CodePtr(), A0, A1, A2);
1618}
1619bool EvalEmitter::emitAllocNBool( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1620 if (!isActive()) return true;
1621 CurrentSource = L;
1622 return AllocN<PT_Bool>(S, CodePtr(), A0, A1, A2);
1623}
1624#endif
1625#ifdef GET_OPCODE_NAMES
1626OP_ArrayDecay,
1627#endif
1628#ifdef GET_INTERPFN_LIST
1629&Interp_ArrayDecay,
1630#endif
1631#ifdef GET_INTERPFN_DISPATCHERS
1632PRESERVE_NONE
1633static bool Interp_ArrayDecay(InterpState &S) {
1634 if (!ArrayDecay(S, S.PC)) return false;
1635#if USE_TAILCALLS
1636 MUSTTAIL return InterpNext(S);
1637#else
1638 return true;
1639#endif
1640}
1641#endif
1642#ifdef GET_DISASM
1643case OP_ArrayDecay:
1644 Text.Op = PrintName("ArrayDecay");
1645 break;
1646#endif
1647#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1648bool emitArrayDecay(SourceInfo);
1649#endif
1650#ifdef GET_LINK_IMPL
1651bool ByteCodeEmitter::emitArrayDecay(SourceInfo L) {
1652 return emitOp<>(OP_ArrayDecay, L);
1653}
1654#endif
1655#ifdef GET_EVAL_IMPL
1656bool EvalEmitter::emitArrayDecay(SourceInfo L) {
1657 if (!isActive()) return true;
1658 CurrentSource = L;
1659 return ArrayDecay(S, CodePtr());
1660}
1661#endif
1662#ifdef GET_OPCODE_NAMES
1663OP_ArrayElemSint8,
1664OP_ArrayElemUint8,
1665OP_ArrayElemSint16,
1666OP_ArrayElemUint16,
1667OP_ArrayElemSint32,
1668OP_ArrayElemUint32,
1669OP_ArrayElemSint64,
1670OP_ArrayElemUint64,
1671OP_ArrayElemIntAP,
1672OP_ArrayElemIntAPS,
1673OP_ArrayElemBool,
1674OP_ArrayElemFixedPoint,
1675OP_ArrayElemPtr,
1676OP_ArrayElemMemberPtr,
1677OP_ArrayElemFloat,
1678#endif
1679#ifdef GET_INTERPFN_LIST
1680&Interp_ArrayElemSint8,
1681&Interp_ArrayElemUint8,
1682&Interp_ArrayElemSint16,
1683&Interp_ArrayElemUint16,
1684&Interp_ArrayElemSint32,
1685&Interp_ArrayElemUint32,
1686&Interp_ArrayElemSint64,
1687&Interp_ArrayElemUint64,
1688&Interp_ArrayElemIntAP,
1689&Interp_ArrayElemIntAPS,
1690&Interp_ArrayElemBool,
1691&Interp_ArrayElemFixedPoint,
1692&Interp_ArrayElemPtr,
1693&Interp_ArrayElemMemberPtr,
1694&Interp_ArrayElemFloat,
1695#endif
1696#ifdef GET_INTERPFN_DISPATCHERS
1697PRESERVE_NONE
1698static bool Interp_ArrayElemSint8(InterpState &S) {
1699 {
1700 CodePtr OpPC = S.PC;
1701 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1702 if (!ArrayElem<PT_Sint8>(S, OpPC, V0)) return false;
1703 }
1704#if USE_TAILCALLS
1705 MUSTTAIL return InterpNext(S);
1706#else
1707 return true;
1708#endif
1709}
1710PRESERVE_NONE
1711static bool Interp_ArrayElemUint8(InterpState &S) {
1712 {
1713 CodePtr OpPC = S.PC;
1714 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1715 if (!ArrayElem<PT_Uint8>(S, OpPC, V0)) return false;
1716 }
1717#if USE_TAILCALLS
1718 MUSTTAIL return InterpNext(S);
1719#else
1720 return true;
1721#endif
1722}
1723PRESERVE_NONE
1724static bool Interp_ArrayElemSint16(InterpState &S) {
1725 {
1726 CodePtr OpPC = S.PC;
1727 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1728 if (!ArrayElem<PT_Sint16>(S, OpPC, V0)) return false;
1729 }
1730#if USE_TAILCALLS
1731 MUSTTAIL return InterpNext(S);
1732#else
1733 return true;
1734#endif
1735}
1736PRESERVE_NONE
1737static bool Interp_ArrayElemUint16(InterpState &S) {
1738 {
1739 CodePtr OpPC = S.PC;
1740 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1741 if (!ArrayElem<PT_Uint16>(S, OpPC, V0)) return false;
1742 }
1743#if USE_TAILCALLS
1744 MUSTTAIL return InterpNext(S);
1745#else
1746 return true;
1747#endif
1748}
1749PRESERVE_NONE
1750static bool Interp_ArrayElemSint32(InterpState &S) {
1751 {
1752 CodePtr OpPC = S.PC;
1753 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1754 if (!ArrayElem<PT_Sint32>(S, OpPC, V0)) return false;
1755 }
1756#if USE_TAILCALLS
1757 MUSTTAIL return InterpNext(S);
1758#else
1759 return true;
1760#endif
1761}
1762PRESERVE_NONE
1763static bool Interp_ArrayElemUint32(InterpState &S) {
1764 {
1765 CodePtr OpPC = S.PC;
1766 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1767 if (!ArrayElem<PT_Uint32>(S, OpPC, V0)) return false;
1768 }
1769#if USE_TAILCALLS
1770 MUSTTAIL return InterpNext(S);
1771#else
1772 return true;
1773#endif
1774}
1775PRESERVE_NONE
1776static bool Interp_ArrayElemSint64(InterpState &S) {
1777 {
1778 CodePtr OpPC = S.PC;
1779 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1780 if (!ArrayElem<PT_Sint64>(S, OpPC, V0)) return false;
1781 }
1782#if USE_TAILCALLS
1783 MUSTTAIL return InterpNext(S);
1784#else
1785 return true;
1786#endif
1787}
1788PRESERVE_NONE
1789static bool Interp_ArrayElemUint64(InterpState &S) {
1790 {
1791 CodePtr OpPC = S.PC;
1792 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1793 if (!ArrayElem<PT_Uint64>(S, OpPC, V0)) return false;
1794 }
1795#if USE_TAILCALLS
1796 MUSTTAIL return InterpNext(S);
1797#else
1798 return true;
1799#endif
1800}
1801PRESERVE_NONE
1802static bool Interp_ArrayElemIntAP(InterpState &S) {
1803 {
1804 CodePtr OpPC = S.PC;
1805 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1806 if (!ArrayElem<PT_IntAP>(S, OpPC, V0)) return false;
1807 }
1808#if USE_TAILCALLS
1809 MUSTTAIL return InterpNext(S);
1810#else
1811 return true;
1812#endif
1813}
1814PRESERVE_NONE
1815static bool Interp_ArrayElemIntAPS(InterpState &S) {
1816 {
1817 CodePtr OpPC = S.PC;
1818 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1819 if (!ArrayElem<PT_IntAPS>(S, OpPC, V0)) return false;
1820 }
1821#if USE_TAILCALLS
1822 MUSTTAIL return InterpNext(S);
1823#else
1824 return true;
1825#endif
1826}
1827PRESERVE_NONE
1828static bool Interp_ArrayElemBool(InterpState &S) {
1829 {
1830 CodePtr OpPC = S.PC;
1831 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1832 if (!ArrayElem<PT_Bool>(S, OpPC, V0)) return false;
1833 }
1834#if USE_TAILCALLS
1835 MUSTTAIL return InterpNext(S);
1836#else
1837 return true;
1838#endif
1839}
1840PRESERVE_NONE
1841static bool Interp_ArrayElemFixedPoint(InterpState &S) {
1842 {
1843 CodePtr OpPC = S.PC;
1844 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1845 if (!ArrayElem<PT_FixedPoint>(S, OpPC, V0)) return false;
1846 }
1847#if USE_TAILCALLS
1848 MUSTTAIL return InterpNext(S);
1849#else
1850 return true;
1851#endif
1852}
1853PRESERVE_NONE
1854static bool Interp_ArrayElemPtr(InterpState &S) {
1855 {
1856 CodePtr OpPC = S.PC;
1857 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1858 if (!ArrayElem<PT_Ptr>(S, OpPC, V0)) return false;
1859 }
1860#if USE_TAILCALLS
1861 MUSTTAIL return InterpNext(S);
1862#else
1863 return true;
1864#endif
1865}
1866PRESERVE_NONE
1867static bool Interp_ArrayElemMemberPtr(InterpState &S) {
1868 {
1869 CodePtr OpPC = S.PC;
1870 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1871 if (!ArrayElem<PT_MemberPtr>(S, OpPC, V0)) return false;
1872 }
1873#if USE_TAILCALLS
1874 MUSTTAIL return InterpNext(S);
1875#else
1876 return true;
1877#endif
1878}
1879PRESERVE_NONE
1880static bool Interp_ArrayElemFloat(InterpState &S) {
1881 {
1882 CodePtr OpPC = S.PC;
1883 const auto V0 = ReadArg<uint32_t>(S, S.PC);
1884 if (!ArrayElem<PT_Float>(S, OpPC, V0)) return false;
1885 }
1886#if USE_TAILCALLS
1887 MUSTTAIL return InterpNext(S);
1888#else
1889 return true;
1890#endif
1891}
1892#endif
1893#ifdef GET_DISASM
1894case OP_ArrayElemSint8:
1895 Text.Op = PrintName("ArrayElemSint8");
1896 Text.Args.push_back(printArg<uint32_t>(PC));
1897 break;
1898case OP_ArrayElemUint8:
1899 Text.Op = PrintName("ArrayElemUint8");
1900 Text.Args.push_back(printArg<uint32_t>(PC));
1901 break;
1902case OP_ArrayElemSint16:
1903 Text.Op = PrintName("ArrayElemSint16");
1904 Text.Args.push_back(printArg<uint32_t>(PC));
1905 break;
1906case OP_ArrayElemUint16:
1907 Text.Op = PrintName("ArrayElemUint16");
1908 Text.Args.push_back(printArg<uint32_t>(PC));
1909 break;
1910case OP_ArrayElemSint32:
1911 Text.Op = PrintName("ArrayElemSint32");
1912 Text.Args.push_back(printArg<uint32_t>(PC));
1913 break;
1914case OP_ArrayElemUint32:
1915 Text.Op = PrintName("ArrayElemUint32");
1916 Text.Args.push_back(printArg<uint32_t>(PC));
1917 break;
1918case OP_ArrayElemSint64:
1919 Text.Op = PrintName("ArrayElemSint64");
1920 Text.Args.push_back(printArg<uint32_t>(PC));
1921 break;
1922case OP_ArrayElemUint64:
1923 Text.Op = PrintName("ArrayElemUint64");
1924 Text.Args.push_back(printArg<uint32_t>(PC));
1925 break;
1926case OP_ArrayElemIntAP:
1927 Text.Op = PrintName("ArrayElemIntAP");
1928 Text.Args.push_back(printArg<uint32_t>(PC));
1929 break;
1930case OP_ArrayElemIntAPS:
1931 Text.Op = PrintName("ArrayElemIntAPS");
1932 Text.Args.push_back(printArg<uint32_t>(PC));
1933 break;
1934case OP_ArrayElemBool:
1935 Text.Op = PrintName("ArrayElemBool");
1936 Text.Args.push_back(printArg<uint32_t>(PC));
1937 break;
1938case OP_ArrayElemFixedPoint:
1939 Text.Op = PrintName("ArrayElemFixedPoint");
1940 Text.Args.push_back(printArg<uint32_t>(PC));
1941 break;
1942case OP_ArrayElemPtr:
1943 Text.Op = PrintName("ArrayElemPtr");
1944 Text.Args.push_back(printArg<uint32_t>(PC));
1945 break;
1946case OP_ArrayElemMemberPtr:
1947 Text.Op = PrintName("ArrayElemMemberPtr");
1948 Text.Args.push_back(printArg<uint32_t>(PC));
1949 break;
1950case OP_ArrayElemFloat:
1951 Text.Op = PrintName("ArrayElemFloat");
1952 Text.Args.push_back(printArg<uint32_t>(PC));
1953 break;
1954#endif
1955#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1956bool emitArrayElemSint8( uint32_t , SourceInfo);
1957bool emitArrayElemUint8( uint32_t , SourceInfo);
1958bool emitArrayElemSint16( uint32_t , SourceInfo);
1959bool emitArrayElemUint16( uint32_t , SourceInfo);
1960bool emitArrayElemSint32( uint32_t , SourceInfo);
1961bool emitArrayElemUint32( uint32_t , SourceInfo);
1962bool emitArrayElemSint64( uint32_t , SourceInfo);
1963bool emitArrayElemUint64( uint32_t , SourceInfo);
1964bool emitArrayElemIntAP( uint32_t , SourceInfo);
1965bool emitArrayElemIntAPS( uint32_t , SourceInfo);
1966bool emitArrayElemBool( uint32_t , SourceInfo);
1967bool emitArrayElemFixedPoint( uint32_t , SourceInfo);
1968bool emitArrayElemPtr( uint32_t , SourceInfo);
1969bool emitArrayElemMemberPtr( uint32_t , SourceInfo);
1970bool emitArrayElemFloat( uint32_t , SourceInfo);
1971#endif
1972#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1973[[nodiscard]] bool emitArrayElem(PrimType, uint32_t, SourceInfo I);
1974#endif
1975#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
1976bool
1977#if defined(GET_EVAL_IMPL)
1978EvalEmitter
1979#else
1980ByteCodeEmitter
1981#endif
1982::emitArrayElem(PrimType T0, uint32_t A0, SourceInfo I) {
1983 switch (T0) {
1984 case PT_Sint8:
1985 return emitArrayElemSint8(A0, I);
1986 case PT_Uint8:
1987 return emitArrayElemUint8(A0, I);
1988 case PT_Sint16:
1989 return emitArrayElemSint16(A0, I);
1990 case PT_Uint16:
1991 return emitArrayElemUint16(A0, I);
1992 case PT_Sint32:
1993 return emitArrayElemSint32(A0, I);
1994 case PT_Uint32:
1995 return emitArrayElemUint32(A0, I);
1996 case PT_Sint64:
1997 return emitArrayElemSint64(A0, I);
1998 case PT_Uint64:
1999 return emitArrayElemUint64(A0, I);
2000 case PT_IntAP:
2001 return emitArrayElemIntAP(A0, I);
2002 case PT_IntAPS:
2003 return emitArrayElemIntAPS(A0, I);
2004 case PT_Bool:
2005 return emitArrayElemBool(A0, I);
2006 case PT_FixedPoint:
2007 return emitArrayElemFixedPoint(A0, I);
2008 case PT_Ptr:
2009 return emitArrayElemPtr(A0, I);
2010 case PT_MemberPtr:
2011 return emitArrayElemMemberPtr(A0, I);
2012 case PT_Float:
2013 return emitArrayElemFloat(A0, I);
2014 }
2015 llvm_unreachable("invalid enum value");
2016}
2017#endif
2018#ifdef GET_LINK_IMPL
2019bool ByteCodeEmitter::emitArrayElemSint8( uint32_t A0, SourceInfo L) {
2020 return emitOp<uint32_t>(OP_ArrayElemSint8, A0, L);
2021}
2022bool ByteCodeEmitter::emitArrayElemUint8( uint32_t A0, SourceInfo L) {
2023 return emitOp<uint32_t>(OP_ArrayElemUint8, A0, L);
2024}
2025bool ByteCodeEmitter::emitArrayElemSint16( uint32_t A0, SourceInfo L) {
2026 return emitOp<uint32_t>(OP_ArrayElemSint16, A0, L);
2027}
2028bool ByteCodeEmitter::emitArrayElemUint16( uint32_t A0, SourceInfo L) {
2029 return emitOp<uint32_t>(OP_ArrayElemUint16, A0, L);
2030}
2031bool ByteCodeEmitter::emitArrayElemSint32( uint32_t A0, SourceInfo L) {
2032 return emitOp<uint32_t>(OP_ArrayElemSint32, A0, L);
2033}
2034bool ByteCodeEmitter::emitArrayElemUint32( uint32_t A0, SourceInfo L) {
2035 return emitOp<uint32_t>(OP_ArrayElemUint32, A0, L);
2036}
2037bool ByteCodeEmitter::emitArrayElemSint64( uint32_t A0, SourceInfo L) {
2038 return emitOp<uint32_t>(OP_ArrayElemSint64, A0, L);
2039}
2040bool ByteCodeEmitter::emitArrayElemUint64( uint32_t A0, SourceInfo L) {
2041 return emitOp<uint32_t>(OP_ArrayElemUint64, A0, L);
2042}
2043bool ByteCodeEmitter::emitArrayElemIntAP( uint32_t A0, SourceInfo L) {
2044 return emitOp<uint32_t>(OP_ArrayElemIntAP, A0, L);
2045}
2046bool ByteCodeEmitter::emitArrayElemIntAPS( uint32_t A0, SourceInfo L) {
2047 return emitOp<uint32_t>(OP_ArrayElemIntAPS, A0, L);
2048}
2049bool ByteCodeEmitter::emitArrayElemBool( uint32_t A0, SourceInfo L) {
2050 return emitOp<uint32_t>(OP_ArrayElemBool, A0, L);
2051}
2052bool ByteCodeEmitter::emitArrayElemFixedPoint( uint32_t A0, SourceInfo L) {
2053 return emitOp<uint32_t>(OP_ArrayElemFixedPoint, A0, L);
2054}
2055bool ByteCodeEmitter::emitArrayElemPtr( uint32_t A0, SourceInfo L) {
2056 return emitOp<uint32_t>(OP_ArrayElemPtr, A0, L);
2057}
2058bool ByteCodeEmitter::emitArrayElemMemberPtr( uint32_t A0, SourceInfo L) {
2059 return emitOp<uint32_t>(OP_ArrayElemMemberPtr, A0, L);
2060}
2061bool ByteCodeEmitter::emitArrayElemFloat( uint32_t A0, SourceInfo L) {
2062 return emitOp<uint32_t>(OP_ArrayElemFloat, A0, L);
2063}
2064#endif
2065#ifdef GET_EVAL_IMPL
2066bool EvalEmitter::emitArrayElemSint8( uint32_t A0, SourceInfo L) {
2067 if (!isActive()) return true;
2068 CurrentSource = L;
2069 return ArrayElem<PT_Sint8>(S, CodePtr(), A0);
2070}
2071bool EvalEmitter::emitArrayElemUint8( uint32_t A0, SourceInfo L) {
2072 if (!isActive()) return true;
2073 CurrentSource = L;
2074 return ArrayElem<PT_Uint8>(S, CodePtr(), A0);
2075}
2076bool EvalEmitter::emitArrayElemSint16( uint32_t A0, SourceInfo L) {
2077 if (!isActive()) return true;
2078 CurrentSource = L;
2079 return ArrayElem<PT_Sint16>(S, CodePtr(), A0);
2080}
2081bool EvalEmitter::emitArrayElemUint16( uint32_t A0, SourceInfo L) {
2082 if (!isActive()) return true;
2083 CurrentSource = L;
2084 return ArrayElem<PT_Uint16>(S, CodePtr(), A0);
2085}
2086bool EvalEmitter::emitArrayElemSint32( uint32_t A0, SourceInfo L) {
2087 if (!isActive()) return true;
2088 CurrentSource = L;
2089 return ArrayElem<PT_Sint32>(S, CodePtr(), A0);
2090}
2091bool EvalEmitter::emitArrayElemUint32( uint32_t A0, SourceInfo L) {
2092 if (!isActive()) return true;
2093 CurrentSource = L;
2094 return ArrayElem<PT_Uint32>(S, CodePtr(), A0);
2095}
2096bool EvalEmitter::emitArrayElemSint64( uint32_t A0, SourceInfo L) {
2097 if (!isActive()) return true;
2098 CurrentSource = L;
2099 return ArrayElem<PT_Sint64>(S, CodePtr(), A0);
2100}
2101bool EvalEmitter::emitArrayElemUint64( uint32_t A0, SourceInfo L) {
2102 if (!isActive()) return true;
2103 CurrentSource = L;
2104 return ArrayElem<PT_Uint64>(S, CodePtr(), A0);
2105}
2106bool EvalEmitter::emitArrayElemIntAP( uint32_t A0, SourceInfo L) {
2107 if (!isActive()) return true;
2108 CurrentSource = L;
2109 return ArrayElem<PT_IntAP>(S, CodePtr(), A0);
2110}
2111bool EvalEmitter::emitArrayElemIntAPS( uint32_t A0, SourceInfo L) {
2112 if (!isActive()) return true;
2113 CurrentSource = L;
2114 return ArrayElem<PT_IntAPS>(S, CodePtr(), A0);
2115}
2116bool EvalEmitter::emitArrayElemBool( uint32_t A0, SourceInfo L) {
2117 if (!isActive()) return true;
2118 CurrentSource = L;
2119 return ArrayElem<PT_Bool>(S, CodePtr(), A0);
2120}
2121bool EvalEmitter::emitArrayElemFixedPoint( uint32_t A0, SourceInfo L) {
2122 if (!isActive()) return true;
2123 CurrentSource = L;
2124 return ArrayElem<PT_FixedPoint>(S, CodePtr(), A0);
2125}
2126bool EvalEmitter::emitArrayElemPtr( uint32_t A0, SourceInfo L) {
2127 if (!isActive()) return true;
2128 CurrentSource = L;
2129 return ArrayElem<PT_Ptr>(S, CodePtr(), A0);
2130}
2131bool EvalEmitter::emitArrayElemMemberPtr( uint32_t A0, SourceInfo L) {
2132 if (!isActive()) return true;
2133 CurrentSource = L;
2134 return ArrayElem<PT_MemberPtr>(S, CodePtr(), A0);
2135}
2136bool EvalEmitter::emitArrayElemFloat( uint32_t A0, SourceInfo L) {
2137 if (!isActive()) return true;
2138 CurrentSource = L;
2139 return ArrayElem<PT_Float>(S, CodePtr(), A0);
2140}
2141#endif
2142#ifdef GET_OPCODE_NAMES
2143OP_ArrayElemPopSint8,
2144OP_ArrayElemPopUint8,
2145OP_ArrayElemPopSint16,
2146OP_ArrayElemPopUint16,
2147OP_ArrayElemPopSint32,
2148OP_ArrayElemPopUint32,
2149OP_ArrayElemPopSint64,
2150OP_ArrayElemPopUint64,
2151OP_ArrayElemPopIntAP,
2152OP_ArrayElemPopIntAPS,
2153OP_ArrayElemPopBool,
2154OP_ArrayElemPopFixedPoint,
2155OP_ArrayElemPopPtr,
2156OP_ArrayElemPopMemberPtr,
2157OP_ArrayElemPopFloat,
2158#endif
2159#ifdef GET_INTERPFN_LIST
2160&Interp_ArrayElemPopSint8,
2161&Interp_ArrayElemPopUint8,
2162&Interp_ArrayElemPopSint16,
2163&Interp_ArrayElemPopUint16,
2164&Interp_ArrayElemPopSint32,
2165&Interp_ArrayElemPopUint32,
2166&Interp_ArrayElemPopSint64,
2167&Interp_ArrayElemPopUint64,
2168&Interp_ArrayElemPopIntAP,
2169&Interp_ArrayElemPopIntAPS,
2170&Interp_ArrayElemPopBool,
2171&Interp_ArrayElemPopFixedPoint,
2172&Interp_ArrayElemPopPtr,
2173&Interp_ArrayElemPopMemberPtr,
2174&Interp_ArrayElemPopFloat,
2175#endif
2176#ifdef GET_INTERPFN_DISPATCHERS
2177PRESERVE_NONE
2178static bool Interp_ArrayElemPopSint8(InterpState &S) {
2179 {
2180 CodePtr OpPC = S.PC;
2181 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2182 if (!ArrayElemPop<PT_Sint8>(S, OpPC, V0)) return false;
2183 }
2184#if USE_TAILCALLS
2185 MUSTTAIL return InterpNext(S);
2186#else
2187 return true;
2188#endif
2189}
2190PRESERVE_NONE
2191static bool Interp_ArrayElemPopUint8(InterpState &S) {
2192 {
2193 CodePtr OpPC = S.PC;
2194 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2195 if (!ArrayElemPop<PT_Uint8>(S, OpPC, V0)) return false;
2196 }
2197#if USE_TAILCALLS
2198 MUSTTAIL return InterpNext(S);
2199#else
2200 return true;
2201#endif
2202}
2203PRESERVE_NONE
2204static bool Interp_ArrayElemPopSint16(InterpState &S) {
2205 {
2206 CodePtr OpPC = S.PC;
2207 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2208 if (!ArrayElemPop<PT_Sint16>(S, OpPC, V0)) return false;
2209 }
2210#if USE_TAILCALLS
2211 MUSTTAIL return InterpNext(S);
2212#else
2213 return true;
2214#endif
2215}
2216PRESERVE_NONE
2217static bool Interp_ArrayElemPopUint16(InterpState &S) {
2218 {
2219 CodePtr OpPC = S.PC;
2220 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2221 if (!ArrayElemPop<PT_Uint16>(S, OpPC, V0)) return false;
2222 }
2223#if USE_TAILCALLS
2224 MUSTTAIL return InterpNext(S);
2225#else
2226 return true;
2227#endif
2228}
2229PRESERVE_NONE
2230static bool Interp_ArrayElemPopSint32(InterpState &S) {
2231 {
2232 CodePtr OpPC = S.PC;
2233 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2234 if (!ArrayElemPop<PT_Sint32>(S, OpPC, V0)) return false;
2235 }
2236#if USE_TAILCALLS
2237 MUSTTAIL return InterpNext(S);
2238#else
2239 return true;
2240#endif
2241}
2242PRESERVE_NONE
2243static bool Interp_ArrayElemPopUint32(InterpState &S) {
2244 {
2245 CodePtr OpPC = S.PC;
2246 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2247 if (!ArrayElemPop<PT_Uint32>(S, OpPC, V0)) return false;
2248 }
2249#if USE_TAILCALLS
2250 MUSTTAIL return InterpNext(S);
2251#else
2252 return true;
2253#endif
2254}
2255PRESERVE_NONE
2256static bool Interp_ArrayElemPopSint64(InterpState &S) {
2257 {
2258 CodePtr OpPC = S.PC;
2259 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2260 if (!ArrayElemPop<PT_Sint64>(S, OpPC, V0)) return false;
2261 }
2262#if USE_TAILCALLS
2263 MUSTTAIL return InterpNext(S);
2264#else
2265 return true;
2266#endif
2267}
2268PRESERVE_NONE
2269static bool Interp_ArrayElemPopUint64(InterpState &S) {
2270 {
2271 CodePtr OpPC = S.PC;
2272 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2273 if (!ArrayElemPop<PT_Uint64>(S, OpPC, V0)) return false;
2274 }
2275#if USE_TAILCALLS
2276 MUSTTAIL return InterpNext(S);
2277#else
2278 return true;
2279#endif
2280}
2281PRESERVE_NONE
2282static bool Interp_ArrayElemPopIntAP(InterpState &S) {
2283 {
2284 CodePtr OpPC = S.PC;
2285 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2286 if (!ArrayElemPop<PT_IntAP>(S, OpPC, V0)) return false;
2287 }
2288#if USE_TAILCALLS
2289 MUSTTAIL return InterpNext(S);
2290#else
2291 return true;
2292#endif
2293}
2294PRESERVE_NONE
2295static bool Interp_ArrayElemPopIntAPS(InterpState &S) {
2296 {
2297 CodePtr OpPC = S.PC;
2298 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2299 if (!ArrayElemPop<PT_IntAPS>(S, OpPC, V0)) return false;
2300 }
2301#if USE_TAILCALLS
2302 MUSTTAIL return InterpNext(S);
2303#else
2304 return true;
2305#endif
2306}
2307PRESERVE_NONE
2308static bool Interp_ArrayElemPopBool(InterpState &S) {
2309 {
2310 CodePtr OpPC = S.PC;
2311 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2312 if (!ArrayElemPop<PT_Bool>(S, OpPC, V0)) return false;
2313 }
2314#if USE_TAILCALLS
2315 MUSTTAIL return InterpNext(S);
2316#else
2317 return true;
2318#endif
2319}
2320PRESERVE_NONE
2321static bool Interp_ArrayElemPopFixedPoint(InterpState &S) {
2322 {
2323 CodePtr OpPC = S.PC;
2324 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2325 if (!ArrayElemPop<PT_FixedPoint>(S, OpPC, V0)) return false;
2326 }
2327#if USE_TAILCALLS
2328 MUSTTAIL return InterpNext(S);
2329#else
2330 return true;
2331#endif
2332}
2333PRESERVE_NONE
2334static bool Interp_ArrayElemPopPtr(InterpState &S) {
2335 {
2336 CodePtr OpPC = S.PC;
2337 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2338 if (!ArrayElemPop<PT_Ptr>(S, OpPC, V0)) return false;
2339 }
2340#if USE_TAILCALLS
2341 MUSTTAIL return InterpNext(S);
2342#else
2343 return true;
2344#endif
2345}
2346PRESERVE_NONE
2347static bool Interp_ArrayElemPopMemberPtr(InterpState &S) {
2348 {
2349 CodePtr OpPC = S.PC;
2350 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2351 if (!ArrayElemPop<PT_MemberPtr>(S, OpPC, V0)) return false;
2352 }
2353#if USE_TAILCALLS
2354 MUSTTAIL return InterpNext(S);
2355#else
2356 return true;
2357#endif
2358}
2359PRESERVE_NONE
2360static bool Interp_ArrayElemPopFloat(InterpState &S) {
2361 {
2362 CodePtr OpPC = S.PC;
2363 const auto V0 = ReadArg<uint32_t>(S, S.PC);
2364 if (!ArrayElemPop<PT_Float>(S, OpPC, V0)) return false;
2365 }
2366#if USE_TAILCALLS
2367 MUSTTAIL return InterpNext(S);
2368#else
2369 return true;
2370#endif
2371}
2372#endif
2373#ifdef GET_DISASM
2374case OP_ArrayElemPopSint8:
2375 Text.Op = PrintName("ArrayElemPopSint8");
2376 Text.Args.push_back(printArg<uint32_t>(PC));
2377 break;
2378case OP_ArrayElemPopUint8:
2379 Text.Op = PrintName("ArrayElemPopUint8");
2380 Text.Args.push_back(printArg<uint32_t>(PC));
2381 break;
2382case OP_ArrayElemPopSint16:
2383 Text.Op = PrintName("ArrayElemPopSint16");
2384 Text.Args.push_back(printArg<uint32_t>(PC));
2385 break;
2386case OP_ArrayElemPopUint16:
2387 Text.Op = PrintName("ArrayElemPopUint16");
2388 Text.Args.push_back(printArg<uint32_t>(PC));
2389 break;
2390case OP_ArrayElemPopSint32:
2391 Text.Op = PrintName("ArrayElemPopSint32");
2392 Text.Args.push_back(printArg<uint32_t>(PC));
2393 break;
2394case OP_ArrayElemPopUint32:
2395 Text.Op = PrintName("ArrayElemPopUint32");
2396 Text.Args.push_back(printArg<uint32_t>(PC));
2397 break;
2398case OP_ArrayElemPopSint64:
2399 Text.Op = PrintName("ArrayElemPopSint64");
2400 Text.Args.push_back(printArg<uint32_t>(PC));
2401 break;
2402case OP_ArrayElemPopUint64:
2403 Text.Op = PrintName("ArrayElemPopUint64");
2404 Text.Args.push_back(printArg<uint32_t>(PC));
2405 break;
2406case OP_ArrayElemPopIntAP:
2407 Text.Op = PrintName("ArrayElemPopIntAP");
2408 Text.Args.push_back(printArg<uint32_t>(PC));
2409 break;
2410case OP_ArrayElemPopIntAPS:
2411 Text.Op = PrintName("ArrayElemPopIntAPS");
2412 Text.Args.push_back(printArg<uint32_t>(PC));
2413 break;
2414case OP_ArrayElemPopBool:
2415 Text.Op = PrintName("ArrayElemPopBool");
2416 Text.Args.push_back(printArg<uint32_t>(PC));
2417 break;
2418case OP_ArrayElemPopFixedPoint:
2419 Text.Op = PrintName("ArrayElemPopFixedPoint");
2420 Text.Args.push_back(printArg<uint32_t>(PC));
2421 break;
2422case OP_ArrayElemPopPtr:
2423 Text.Op = PrintName("ArrayElemPopPtr");
2424 Text.Args.push_back(printArg<uint32_t>(PC));
2425 break;
2426case OP_ArrayElemPopMemberPtr:
2427 Text.Op = PrintName("ArrayElemPopMemberPtr");
2428 Text.Args.push_back(printArg<uint32_t>(PC));
2429 break;
2430case OP_ArrayElemPopFloat:
2431 Text.Op = PrintName("ArrayElemPopFloat");
2432 Text.Args.push_back(printArg<uint32_t>(PC));
2433 break;
2434#endif
2435#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2436bool emitArrayElemPopSint8( uint32_t , SourceInfo);
2437bool emitArrayElemPopUint8( uint32_t , SourceInfo);
2438bool emitArrayElemPopSint16( uint32_t , SourceInfo);
2439bool emitArrayElemPopUint16( uint32_t , SourceInfo);
2440bool emitArrayElemPopSint32( uint32_t , SourceInfo);
2441bool emitArrayElemPopUint32( uint32_t , SourceInfo);
2442bool emitArrayElemPopSint64( uint32_t , SourceInfo);
2443bool emitArrayElemPopUint64( uint32_t , SourceInfo);
2444bool emitArrayElemPopIntAP( uint32_t , SourceInfo);
2445bool emitArrayElemPopIntAPS( uint32_t , SourceInfo);
2446bool emitArrayElemPopBool( uint32_t , SourceInfo);
2447bool emitArrayElemPopFixedPoint( uint32_t , SourceInfo);
2448bool emitArrayElemPopPtr( uint32_t , SourceInfo);
2449bool emitArrayElemPopMemberPtr( uint32_t , SourceInfo);
2450bool emitArrayElemPopFloat( uint32_t , SourceInfo);
2451#endif
2452#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2453[[nodiscard]] bool emitArrayElemPop(PrimType, uint32_t, SourceInfo I);
2454#endif
2455#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
2456bool
2457#if defined(GET_EVAL_IMPL)
2458EvalEmitter
2459#else
2460ByteCodeEmitter
2461#endif
2462::emitArrayElemPop(PrimType T0, uint32_t A0, SourceInfo I) {
2463 switch (T0) {
2464 case PT_Sint8:
2465 return emitArrayElemPopSint8(A0, I);
2466 case PT_Uint8:
2467 return emitArrayElemPopUint8(A0, I);
2468 case PT_Sint16:
2469 return emitArrayElemPopSint16(A0, I);
2470 case PT_Uint16:
2471 return emitArrayElemPopUint16(A0, I);
2472 case PT_Sint32:
2473 return emitArrayElemPopSint32(A0, I);
2474 case PT_Uint32:
2475 return emitArrayElemPopUint32(A0, I);
2476 case PT_Sint64:
2477 return emitArrayElemPopSint64(A0, I);
2478 case PT_Uint64:
2479 return emitArrayElemPopUint64(A0, I);
2480 case PT_IntAP:
2481 return emitArrayElemPopIntAP(A0, I);
2482 case PT_IntAPS:
2483 return emitArrayElemPopIntAPS(A0, I);
2484 case PT_Bool:
2485 return emitArrayElemPopBool(A0, I);
2486 case PT_FixedPoint:
2487 return emitArrayElemPopFixedPoint(A0, I);
2488 case PT_Ptr:
2489 return emitArrayElemPopPtr(A0, I);
2490 case PT_MemberPtr:
2491 return emitArrayElemPopMemberPtr(A0, I);
2492 case PT_Float:
2493 return emitArrayElemPopFloat(A0, I);
2494 }
2495 llvm_unreachable("invalid enum value");
2496}
2497#endif
2498#ifdef GET_LINK_IMPL
2499bool ByteCodeEmitter::emitArrayElemPopSint8( uint32_t A0, SourceInfo L) {
2500 return emitOp<uint32_t>(OP_ArrayElemPopSint8, A0, L);
2501}
2502bool ByteCodeEmitter::emitArrayElemPopUint8( uint32_t A0, SourceInfo L) {
2503 return emitOp<uint32_t>(OP_ArrayElemPopUint8, A0, L);
2504}
2505bool ByteCodeEmitter::emitArrayElemPopSint16( uint32_t A0, SourceInfo L) {
2506 return emitOp<uint32_t>(OP_ArrayElemPopSint16, A0, L);
2507}
2508bool ByteCodeEmitter::emitArrayElemPopUint16( uint32_t A0, SourceInfo L) {
2509 return emitOp<uint32_t>(OP_ArrayElemPopUint16, A0, L);
2510}
2511bool ByteCodeEmitter::emitArrayElemPopSint32( uint32_t A0, SourceInfo L) {
2512 return emitOp<uint32_t>(OP_ArrayElemPopSint32, A0, L);
2513}
2514bool ByteCodeEmitter::emitArrayElemPopUint32( uint32_t A0, SourceInfo L) {
2515 return emitOp<uint32_t>(OP_ArrayElemPopUint32, A0, L);
2516}
2517bool ByteCodeEmitter::emitArrayElemPopSint64( uint32_t A0, SourceInfo L) {
2518 return emitOp<uint32_t>(OP_ArrayElemPopSint64, A0, L);
2519}
2520bool ByteCodeEmitter::emitArrayElemPopUint64( uint32_t A0, SourceInfo L) {
2521 return emitOp<uint32_t>(OP_ArrayElemPopUint64, A0, L);
2522}
2523bool ByteCodeEmitter::emitArrayElemPopIntAP( uint32_t A0, SourceInfo L) {
2524 return emitOp<uint32_t>(OP_ArrayElemPopIntAP, A0, L);
2525}
2526bool ByteCodeEmitter::emitArrayElemPopIntAPS( uint32_t A0, SourceInfo L) {
2527 return emitOp<uint32_t>(OP_ArrayElemPopIntAPS, A0, L);
2528}
2529bool ByteCodeEmitter::emitArrayElemPopBool( uint32_t A0, SourceInfo L) {
2530 return emitOp<uint32_t>(OP_ArrayElemPopBool, A0, L);
2531}
2532bool ByteCodeEmitter::emitArrayElemPopFixedPoint( uint32_t A0, SourceInfo L) {
2533 return emitOp<uint32_t>(OP_ArrayElemPopFixedPoint, A0, L);
2534}
2535bool ByteCodeEmitter::emitArrayElemPopPtr( uint32_t A0, SourceInfo L) {
2536 return emitOp<uint32_t>(OP_ArrayElemPopPtr, A0, L);
2537}
2538bool ByteCodeEmitter::emitArrayElemPopMemberPtr( uint32_t A0, SourceInfo L) {
2539 return emitOp<uint32_t>(OP_ArrayElemPopMemberPtr, A0, L);
2540}
2541bool ByteCodeEmitter::emitArrayElemPopFloat( uint32_t A0, SourceInfo L) {
2542 return emitOp<uint32_t>(OP_ArrayElemPopFloat, A0, L);
2543}
2544#endif
2545#ifdef GET_EVAL_IMPL
2546bool EvalEmitter::emitArrayElemPopSint8( uint32_t A0, SourceInfo L) {
2547 if (!isActive()) return true;
2548 CurrentSource = L;
2549 return ArrayElemPop<PT_Sint8>(S, CodePtr(), A0);
2550}
2551bool EvalEmitter::emitArrayElemPopUint8( uint32_t A0, SourceInfo L) {
2552 if (!isActive()) return true;
2553 CurrentSource = L;
2554 return ArrayElemPop<PT_Uint8>(S, CodePtr(), A0);
2555}
2556bool EvalEmitter::emitArrayElemPopSint16( uint32_t A0, SourceInfo L) {
2557 if (!isActive()) return true;
2558 CurrentSource = L;
2559 return ArrayElemPop<PT_Sint16>(S, CodePtr(), A0);
2560}
2561bool EvalEmitter::emitArrayElemPopUint16( uint32_t A0, SourceInfo L) {
2562 if (!isActive()) return true;
2563 CurrentSource = L;
2564 return ArrayElemPop<PT_Uint16>(S, CodePtr(), A0);
2565}
2566bool EvalEmitter::emitArrayElemPopSint32( uint32_t A0, SourceInfo L) {
2567 if (!isActive()) return true;
2568 CurrentSource = L;
2569 return ArrayElemPop<PT_Sint32>(S, CodePtr(), A0);
2570}
2571bool EvalEmitter::emitArrayElemPopUint32( uint32_t A0, SourceInfo L) {
2572 if (!isActive()) return true;
2573 CurrentSource = L;
2574 return ArrayElemPop<PT_Uint32>(S, CodePtr(), A0);
2575}
2576bool EvalEmitter::emitArrayElemPopSint64( uint32_t A0, SourceInfo L) {
2577 if (!isActive()) return true;
2578 CurrentSource = L;
2579 return ArrayElemPop<PT_Sint64>(S, CodePtr(), A0);
2580}
2581bool EvalEmitter::emitArrayElemPopUint64( uint32_t A0, SourceInfo L) {
2582 if (!isActive()) return true;
2583 CurrentSource = L;
2584 return ArrayElemPop<PT_Uint64>(S, CodePtr(), A0);
2585}
2586bool EvalEmitter::emitArrayElemPopIntAP( uint32_t A0, SourceInfo L) {
2587 if (!isActive()) return true;
2588 CurrentSource = L;
2589 return ArrayElemPop<PT_IntAP>(S, CodePtr(), A0);
2590}
2591bool EvalEmitter::emitArrayElemPopIntAPS( uint32_t A0, SourceInfo L) {
2592 if (!isActive()) return true;
2593 CurrentSource = L;
2594 return ArrayElemPop<PT_IntAPS>(S, CodePtr(), A0);
2595}
2596bool EvalEmitter::emitArrayElemPopBool( uint32_t A0, SourceInfo L) {
2597 if (!isActive()) return true;
2598 CurrentSource = L;
2599 return ArrayElemPop<PT_Bool>(S, CodePtr(), A0);
2600}
2601bool EvalEmitter::emitArrayElemPopFixedPoint( uint32_t A0, SourceInfo L) {
2602 if (!isActive()) return true;
2603 CurrentSource = L;
2604 return ArrayElemPop<PT_FixedPoint>(S, CodePtr(), A0);
2605}
2606bool EvalEmitter::emitArrayElemPopPtr( uint32_t A0, SourceInfo L) {
2607 if (!isActive()) return true;
2608 CurrentSource = L;
2609 return ArrayElemPop<PT_Ptr>(S, CodePtr(), A0);
2610}
2611bool EvalEmitter::emitArrayElemPopMemberPtr( uint32_t A0, SourceInfo L) {
2612 if (!isActive()) return true;
2613 CurrentSource = L;
2614 return ArrayElemPop<PT_MemberPtr>(S, CodePtr(), A0);
2615}
2616bool EvalEmitter::emitArrayElemPopFloat( uint32_t A0, SourceInfo L) {
2617 if (!isActive()) return true;
2618 CurrentSource = L;
2619 return ArrayElemPop<PT_Float>(S, CodePtr(), A0);
2620}
2621#endif
2622#ifdef GET_OPCODE_NAMES
2623OP_ArrayElemPtrSint8,
2624OP_ArrayElemPtrUint8,
2625OP_ArrayElemPtrSint16,
2626OP_ArrayElemPtrUint16,
2627OP_ArrayElemPtrSint32,
2628OP_ArrayElemPtrUint32,
2629OP_ArrayElemPtrSint64,
2630OP_ArrayElemPtrUint64,
2631OP_ArrayElemPtrIntAP,
2632OP_ArrayElemPtrIntAPS,
2633OP_ArrayElemPtrBool,
2634#endif
2635#ifdef GET_INTERPFN_LIST
2636&Interp_ArrayElemPtrSint8,
2637&Interp_ArrayElemPtrUint8,
2638&Interp_ArrayElemPtrSint16,
2639&Interp_ArrayElemPtrUint16,
2640&Interp_ArrayElemPtrSint32,
2641&Interp_ArrayElemPtrUint32,
2642&Interp_ArrayElemPtrSint64,
2643&Interp_ArrayElemPtrUint64,
2644&Interp_ArrayElemPtrIntAP,
2645&Interp_ArrayElemPtrIntAPS,
2646&Interp_ArrayElemPtrBool,
2647#endif
2648#ifdef GET_INTERPFN_DISPATCHERS
2649PRESERVE_NONE
2650static bool Interp_ArrayElemPtrSint8(InterpState &S) {
2651 if (!ArrayElemPtr<PT_Sint8>(S, S.PC)) return false;
2652#if USE_TAILCALLS
2653 MUSTTAIL return InterpNext(S);
2654#else
2655 return true;
2656#endif
2657}
2658PRESERVE_NONE
2659static bool Interp_ArrayElemPtrUint8(InterpState &S) {
2660 if (!ArrayElemPtr<PT_Uint8>(S, S.PC)) return false;
2661#if USE_TAILCALLS
2662 MUSTTAIL return InterpNext(S);
2663#else
2664 return true;
2665#endif
2666}
2667PRESERVE_NONE
2668static bool Interp_ArrayElemPtrSint16(InterpState &S) {
2669 if (!ArrayElemPtr<PT_Sint16>(S, S.PC)) return false;
2670#if USE_TAILCALLS
2671 MUSTTAIL return InterpNext(S);
2672#else
2673 return true;
2674#endif
2675}
2676PRESERVE_NONE
2677static bool Interp_ArrayElemPtrUint16(InterpState &S) {
2678 if (!ArrayElemPtr<PT_Uint16>(S, S.PC)) return false;
2679#if USE_TAILCALLS
2680 MUSTTAIL return InterpNext(S);
2681#else
2682 return true;
2683#endif
2684}
2685PRESERVE_NONE
2686static bool Interp_ArrayElemPtrSint32(InterpState &S) {
2687 if (!ArrayElemPtr<PT_Sint32>(S, S.PC)) return false;
2688#if USE_TAILCALLS
2689 MUSTTAIL return InterpNext(S);
2690#else
2691 return true;
2692#endif
2693}
2694PRESERVE_NONE
2695static bool Interp_ArrayElemPtrUint32(InterpState &S) {
2696 if (!ArrayElemPtr<PT_Uint32>(S, S.PC)) return false;
2697#if USE_TAILCALLS
2698 MUSTTAIL return InterpNext(S);
2699#else
2700 return true;
2701#endif
2702}
2703PRESERVE_NONE
2704static bool Interp_ArrayElemPtrSint64(InterpState &S) {
2705 if (!ArrayElemPtr<PT_Sint64>(S, S.PC)) return false;
2706#if USE_TAILCALLS
2707 MUSTTAIL return InterpNext(S);
2708#else
2709 return true;
2710#endif
2711}
2712PRESERVE_NONE
2713static bool Interp_ArrayElemPtrUint64(InterpState &S) {
2714 if (!ArrayElemPtr<PT_Uint64>(S, S.PC)) return false;
2715#if USE_TAILCALLS
2716 MUSTTAIL return InterpNext(S);
2717#else
2718 return true;
2719#endif
2720}
2721PRESERVE_NONE
2722static bool Interp_ArrayElemPtrIntAP(InterpState &S) {
2723 if (!ArrayElemPtr<PT_IntAP>(S, S.PC)) return false;
2724#if USE_TAILCALLS
2725 MUSTTAIL return InterpNext(S);
2726#else
2727 return true;
2728#endif
2729}
2730PRESERVE_NONE
2731static bool Interp_ArrayElemPtrIntAPS(InterpState &S) {
2732 if (!ArrayElemPtr<PT_IntAPS>(S, S.PC)) return false;
2733#if USE_TAILCALLS
2734 MUSTTAIL return InterpNext(S);
2735#else
2736 return true;
2737#endif
2738}
2739PRESERVE_NONE
2740static bool Interp_ArrayElemPtrBool(InterpState &S) {
2741 if (!ArrayElemPtr<PT_Bool>(S, S.PC)) return false;
2742#if USE_TAILCALLS
2743 MUSTTAIL return InterpNext(S);
2744#else
2745 return true;
2746#endif
2747}
2748#endif
2749#ifdef GET_DISASM
2750case OP_ArrayElemPtrSint8:
2751 Text.Op = PrintName("ArrayElemPtrSint8");
2752 break;
2753case OP_ArrayElemPtrUint8:
2754 Text.Op = PrintName("ArrayElemPtrUint8");
2755 break;
2756case OP_ArrayElemPtrSint16:
2757 Text.Op = PrintName("ArrayElemPtrSint16");
2758 break;
2759case OP_ArrayElemPtrUint16:
2760 Text.Op = PrintName("ArrayElemPtrUint16");
2761 break;
2762case OP_ArrayElemPtrSint32:
2763 Text.Op = PrintName("ArrayElemPtrSint32");
2764 break;
2765case OP_ArrayElemPtrUint32:
2766 Text.Op = PrintName("ArrayElemPtrUint32");
2767 break;
2768case OP_ArrayElemPtrSint64:
2769 Text.Op = PrintName("ArrayElemPtrSint64");
2770 break;
2771case OP_ArrayElemPtrUint64:
2772 Text.Op = PrintName("ArrayElemPtrUint64");
2773 break;
2774case OP_ArrayElemPtrIntAP:
2775 Text.Op = PrintName("ArrayElemPtrIntAP");
2776 break;
2777case OP_ArrayElemPtrIntAPS:
2778 Text.Op = PrintName("ArrayElemPtrIntAPS");
2779 break;
2780case OP_ArrayElemPtrBool:
2781 Text.Op = PrintName("ArrayElemPtrBool");
2782 break;
2783#endif
2784#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2785bool emitArrayElemPtrSint8(SourceInfo);
2786bool emitArrayElemPtrUint8(SourceInfo);
2787bool emitArrayElemPtrSint16(SourceInfo);
2788bool emitArrayElemPtrUint16(SourceInfo);
2789bool emitArrayElemPtrSint32(SourceInfo);
2790bool emitArrayElemPtrUint32(SourceInfo);
2791bool emitArrayElemPtrSint64(SourceInfo);
2792bool emitArrayElemPtrUint64(SourceInfo);
2793bool emitArrayElemPtrIntAP(SourceInfo);
2794bool emitArrayElemPtrIntAPS(SourceInfo);
2795bool emitArrayElemPtrBool(SourceInfo);
2796#endif
2797#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2798[[nodiscard]] bool emitArrayElemPtr(PrimType, SourceInfo I);
2799#endif
2800#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
2801bool
2802#if defined(GET_EVAL_IMPL)
2803EvalEmitter
2804#else
2805ByteCodeEmitter
2806#endif
2807::emitArrayElemPtr(PrimType T0, SourceInfo I) {
2808 switch (T0) {
2809 case PT_Sint8:
2810 return emitArrayElemPtrSint8(I);
2811 case PT_Uint8:
2812 return emitArrayElemPtrUint8(I);
2813 case PT_Sint16:
2814 return emitArrayElemPtrSint16(I);
2815 case PT_Uint16:
2816 return emitArrayElemPtrUint16(I);
2817 case PT_Sint32:
2818 return emitArrayElemPtrSint32(I);
2819 case PT_Uint32:
2820 return emitArrayElemPtrUint32(I);
2821 case PT_Sint64:
2822 return emitArrayElemPtrSint64(I);
2823 case PT_Uint64:
2824 return emitArrayElemPtrUint64(I);
2825 case PT_IntAP:
2826 return emitArrayElemPtrIntAP(I);
2827 case PT_IntAPS:
2828 return emitArrayElemPtrIntAPS(I);
2829 case PT_Bool:
2830 return emitArrayElemPtrBool(I);
2831 default: llvm_unreachable("invalid type: emitArrayElemPtr");
2832 }
2833 llvm_unreachable("invalid enum value");
2834}
2835#endif
2836#ifdef GET_LINK_IMPL
2837bool ByteCodeEmitter::emitArrayElemPtrSint8(SourceInfo L) {
2838 return emitOp<>(OP_ArrayElemPtrSint8, L);
2839}
2840bool ByteCodeEmitter::emitArrayElemPtrUint8(SourceInfo L) {
2841 return emitOp<>(OP_ArrayElemPtrUint8, L);
2842}
2843bool ByteCodeEmitter::emitArrayElemPtrSint16(SourceInfo L) {
2844 return emitOp<>(OP_ArrayElemPtrSint16, L);
2845}
2846bool ByteCodeEmitter::emitArrayElemPtrUint16(SourceInfo L) {
2847 return emitOp<>(OP_ArrayElemPtrUint16, L);
2848}
2849bool ByteCodeEmitter::emitArrayElemPtrSint32(SourceInfo L) {
2850 return emitOp<>(OP_ArrayElemPtrSint32, L);
2851}
2852bool ByteCodeEmitter::emitArrayElemPtrUint32(SourceInfo L) {
2853 return emitOp<>(OP_ArrayElemPtrUint32, L);
2854}
2855bool ByteCodeEmitter::emitArrayElemPtrSint64(SourceInfo L) {
2856 return emitOp<>(OP_ArrayElemPtrSint64, L);
2857}
2858bool ByteCodeEmitter::emitArrayElemPtrUint64(SourceInfo L) {
2859 return emitOp<>(OP_ArrayElemPtrUint64, L);
2860}
2861bool ByteCodeEmitter::emitArrayElemPtrIntAP(SourceInfo L) {
2862 return emitOp<>(OP_ArrayElemPtrIntAP, L);
2863}
2864bool ByteCodeEmitter::emitArrayElemPtrIntAPS(SourceInfo L) {
2865 return emitOp<>(OP_ArrayElemPtrIntAPS, L);
2866}
2867bool ByteCodeEmitter::emitArrayElemPtrBool(SourceInfo L) {
2868 return emitOp<>(OP_ArrayElemPtrBool, L);
2869}
2870#endif
2871#ifdef GET_EVAL_IMPL
2872bool EvalEmitter::emitArrayElemPtrSint8(SourceInfo L) {
2873 if (!isActive()) return true;
2874 CurrentSource = L;
2875 return ArrayElemPtr<PT_Sint8>(S, CodePtr());
2876}
2877bool EvalEmitter::emitArrayElemPtrUint8(SourceInfo L) {
2878 if (!isActive()) return true;
2879 CurrentSource = L;
2880 return ArrayElemPtr<PT_Uint8>(S, CodePtr());
2881}
2882bool EvalEmitter::emitArrayElemPtrSint16(SourceInfo L) {
2883 if (!isActive()) return true;
2884 CurrentSource = L;
2885 return ArrayElemPtr<PT_Sint16>(S, CodePtr());
2886}
2887bool EvalEmitter::emitArrayElemPtrUint16(SourceInfo L) {
2888 if (!isActive()) return true;
2889 CurrentSource = L;
2890 return ArrayElemPtr<PT_Uint16>(S, CodePtr());
2891}
2892bool EvalEmitter::emitArrayElemPtrSint32(SourceInfo L) {
2893 if (!isActive()) return true;
2894 CurrentSource = L;
2895 return ArrayElemPtr<PT_Sint32>(S, CodePtr());
2896}
2897bool EvalEmitter::emitArrayElemPtrUint32(SourceInfo L) {
2898 if (!isActive()) return true;
2899 CurrentSource = L;
2900 return ArrayElemPtr<PT_Uint32>(S, CodePtr());
2901}
2902bool EvalEmitter::emitArrayElemPtrSint64(SourceInfo L) {
2903 if (!isActive()) return true;
2904 CurrentSource = L;
2905 return ArrayElemPtr<PT_Sint64>(S, CodePtr());
2906}
2907bool EvalEmitter::emitArrayElemPtrUint64(SourceInfo L) {
2908 if (!isActive()) return true;
2909 CurrentSource = L;
2910 return ArrayElemPtr<PT_Uint64>(S, CodePtr());
2911}
2912bool EvalEmitter::emitArrayElemPtrIntAP(SourceInfo L) {
2913 if (!isActive()) return true;
2914 CurrentSource = L;
2915 return ArrayElemPtr<PT_IntAP>(S, CodePtr());
2916}
2917bool EvalEmitter::emitArrayElemPtrIntAPS(SourceInfo L) {
2918 if (!isActive()) return true;
2919 CurrentSource = L;
2920 return ArrayElemPtr<PT_IntAPS>(S, CodePtr());
2921}
2922bool EvalEmitter::emitArrayElemPtrBool(SourceInfo L) {
2923 if (!isActive()) return true;
2924 CurrentSource = L;
2925 return ArrayElemPtr<PT_Bool>(S, CodePtr());
2926}
2927#endif
2928#ifdef GET_OPCODE_NAMES
2929OP_ArrayElemPtrPopSint8,
2930OP_ArrayElemPtrPopUint8,
2931OP_ArrayElemPtrPopSint16,
2932OP_ArrayElemPtrPopUint16,
2933OP_ArrayElemPtrPopSint32,
2934OP_ArrayElemPtrPopUint32,
2935OP_ArrayElemPtrPopSint64,
2936OP_ArrayElemPtrPopUint64,
2937OP_ArrayElemPtrPopIntAP,
2938OP_ArrayElemPtrPopIntAPS,
2939OP_ArrayElemPtrPopBool,
2940#endif
2941#ifdef GET_INTERPFN_LIST
2942&Interp_ArrayElemPtrPopSint8,
2943&Interp_ArrayElemPtrPopUint8,
2944&Interp_ArrayElemPtrPopSint16,
2945&Interp_ArrayElemPtrPopUint16,
2946&Interp_ArrayElemPtrPopSint32,
2947&Interp_ArrayElemPtrPopUint32,
2948&Interp_ArrayElemPtrPopSint64,
2949&Interp_ArrayElemPtrPopUint64,
2950&Interp_ArrayElemPtrPopIntAP,
2951&Interp_ArrayElemPtrPopIntAPS,
2952&Interp_ArrayElemPtrPopBool,
2953#endif
2954#ifdef GET_INTERPFN_DISPATCHERS
2955PRESERVE_NONE
2956static bool Interp_ArrayElemPtrPopSint8(InterpState &S) {
2957 if (!ArrayElemPtrPop<PT_Sint8>(S, S.PC)) return false;
2958#if USE_TAILCALLS
2959 MUSTTAIL return InterpNext(S);
2960#else
2961 return true;
2962#endif
2963}
2964PRESERVE_NONE
2965static bool Interp_ArrayElemPtrPopUint8(InterpState &S) {
2966 if (!ArrayElemPtrPop<PT_Uint8>(S, S.PC)) return false;
2967#if USE_TAILCALLS
2968 MUSTTAIL return InterpNext(S);
2969#else
2970 return true;
2971#endif
2972}
2973PRESERVE_NONE
2974static bool Interp_ArrayElemPtrPopSint16(InterpState &S) {
2975 if (!ArrayElemPtrPop<PT_Sint16>(S, S.PC)) return false;
2976#if USE_TAILCALLS
2977 MUSTTAIL return InterpNext(S);
2978#else
2979 return true;
2980#endif
2981}
2982PRESERVE_NONE
2983static bool Interp_ArrayElemPtrPopUint16(InterpState &S) {
2984 if (!ArrayElemPtrPop<PT_Uint16>(S, S.PC)) return false;
2985#if USE_TAILCALLS
2986 MUSTTAIL return InterpNext(S);
2987#else
2988 return true;
2989#endif
2990}
2991PRESERVE_NONE
2992static bool Interp_ArrayElemPtrPopSint32(InterpState &S) {
2993 if (!ArrayElemPtrPop<PT_Sint32>(S, S.PC)) return false;
2994#if USE_TAILCALLS
2995 MUSTTAIL return InterpNext(S);
2996#else
2997 return true;
2998#endif
2999}
3000PRESERVE_NONE
3001static bool Interp_ArrayElemPtrPopUint32(InterpState &S) {
3002 if (!ArrayElemPtrPop<PT_Uint32>(S, S.PC)) return false;
3003#if USE_TAILCALLS
3004 MUSTTAIL return InterpNext(S);
3005#else
3006 return true;
3007#endif
3008}
3009PRESERVE_NONE
3010static bool Interp_ArrayElemPtrPopSint64(InterpState &S) {
3011 if (!ArrayElemPtrPop<PT_Sint64>(S, S.PC)) return false;
3012#if USE_TAILCALLS
3013 MUSTTAIL return InterpNext(S);
3014#else
3015 return true;
3016#endif
3017}
3018PRESERVE_NONE
3019static bool Interp_ArrayElemPtrPopUint64(InterpState &S) {
3020 if (!ArrayElemPtrPop<PT_Uint64>(S, S.PC)) return false;
3021#if USE_TAILCALLS
3022 MUSTTAIL return InterpNext(S);
3023#else
3024 return true;
3025#endif
3026}
3027PRESERVE_NONE
3028static bool Interp_ArrayElemPtrPopIntAP(InterpState &S) {
3029 if (!ArrayElemPtrPop<PT_IntAP>(S, S.PC)) return false;
3030#if USE_TAILCALLS
3031 MUSTTAIL return InterpNext(S);
3032#else
3033 return true;
3034#endif
3035}
3036PRESERVE_NONE
3037static bool Interp_ArrayElemPtrPopIntAPS(InterpState &S) {
3038 if (!ArrayElemPtrPop<PT_IntAPS>(S, S.PC)) return false;
3039#if USE_TAILCALLS
3040 MUSTTAIL return InterpNext(S);
3041#else
3042 return true;
3043#endif
3044}
3045PRESERVE_NONE
3046static bool Interp_ArrayElemPtrPopBool(InterpState &S) {
3047 if (!ArrayElemPtrPop<PT_Bool>(S, S.PC)) return false;
3048#if USE_TAILCALLS
3049 MUSTTAIL return InterpNext(S);
3050#else
3051 return true;
3052#endif
3053}
3054#endif
3055#ifdef GET_DISASM
3056case OP_ArrayElemPtrPopSint8:
3057 Text.Op = PrintName("ArrayElemPtrPopSint8");
3058 break;
3059case OP_ArrayElemPtrPopUint8:
3060 Text.Op = PrintName("ArrayElemPtrPopUint8");
3061 break;
3062case OP_ArrayElemPtrPopSint16:
3063 Text.Op = PrintName("ArrayElemPtrPopSint16");
3064 break;
3065case OP_ArrayElemPtrPopUint16:
3066 Text.Op = PrintName("ArrayElemPtrPopUint16");
3067 break;
3068case OP_ArrayElemPtrPopSint32:
3069 Text.Op = PrintName("ArrayElemPtrPopSint32");
3070 break;
3071case OP_ArrayElemPtrPopUint32:
3072 Text.Op = PrintName("ArrayElemPtrPopUint32");
3073 break;
3074case OP_ArrayElemPtrPopSint64:
3075 Text.Op = PrintName("ArrayElemPtrPopSint64");
3076 break;
3077case OP_ArrayElemPtrPopUint64:
3078 Text.Op = PrintName("ArrayElemPtrPopUint64");
3079 break;
3080case OP_ArrayElemPtrPopIntAP:
3081 Text.Op = PrintName("ArrayElemPtrPopIntAP");
3082 break;
3083case OP_ArrayElemPtrPopIntAPS:
3084 Text.Op = PrintName("ArrayElemPtrPopIntAPS");
3085 break;
3086case OP_ArrayElemPtrPopBool:
3087 Text.Op = PrintName("ArrayElemPtrPopBool");
3088 break;
3089#endif
3090#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3091bool emitArrayElemPtrPopSint8(SourceInfo);
3092bool emitArrayElemPtrPopUint8(SourceInfo);
3093bool emitArrayElemPtrPopSint16(SourceInfo);
3094bool emitArrayElemPtrPopUint16(SourceInfo);
3095bool emitArrayElemPtrPopSint32(SourceInfo);
3096bool emitArrayElemPtrPopUint32(SourceInfo);
3097bool emitArrayElemPtrPopSint64(SourceInfo);
3098bool emitArrayElemPtrPopUint64(SourceInfo);
3099bool emitArrayElemPtrPopIntAP(SourceInfo);
3100bool emitArrayElemPtrPopIntAPS(SourceInfo);
3101bool emitArrayElemPtrPopBool(SourceInfo);
3102#endif
3103#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3104[[nodiscard]] bool emitArrayElemPtrPop(PrimType, SourceInfo I);
3105#endif
3106#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
3107bool
3108#if defined(GET_EVAL_IMPL)
3109EvalEmitter
3110#else
3111ByteCodeEmitter
3112#endif
3113::emitArrayElemPtrPop(PrimType T0, SourceInfo I) {
3114 switch (T0) {
3115 case PT_Sint8:
3116 return emitArrayElemPtrPopSint8(I);
3117 case PT_Uint8:
3118 return emitArrayElemPtrPopUint8(I);
3119 case PT_Sint16:
3120 return emitArrayElemPtrPopSint16(I);
3121 case PT_Uint16:
3122 return emitArrayElemPtrPopUint16(I);
3123 case PT_Sint32:
3124 return emitArrayElemPtrPopSint32(I);
3125 case PT_Uint32:
3126 return emitArrayElemPtrPopUint32(I);
3127 case PT_Sint64:
3128 return emitArrayElemPtrPopSint64(I);
3129 case PT_Uint64:
3130 return emitArrayElemPtrPopUint64(I);
3131 case PT_IntAP:
3132 return emitArrayElemPtrPopIntAP(I);
3133 case PT_IntAPS:
3134 return emitArrayElemPtrPopIntAPS(I);
3135 case PT_Bool:
3136 return emitArrayElemPtrPopBool(I);
3137 default: llvm_unreachable("invalid type: emitArrayElemPtrPop");
3138 }
3139 llvm_unreachable("invalid enum value");
3140}
3141#endif
3142#ifdef GET_LINK_IMPL
3143bool ByteCodeEmitter::emitArrayElemPtrPopSint8(SourceInfo L) {
3144 return emitOp<>(OP_ArrayElemPtrPopSint8, L);
3145}
3146bool ByteCodeEmitter::emitArrayElemPtrPopUint8(SourceInfo L) {
3147 return emitOp<>(OP_ArrayElemPtrPopUint8, L);
3148}
3149bool ByteCodeEmitter::emitArrayElemPtrPopSint16(SourceInfo L) {
3150 return emitOp<>(OP_ArrayElemPtrPopSint16, L);
3151}
3152bool ByteCodeEmitter::emitArrayElemPtrPopUint16(SourceInfo L) {
3153 return emitOp<>(OP_ArrayElemPtrPopUint16, L);
3154}
3155bool ByteCodeEmitter::emitArrayElemPtrPopSint32(SourceInfo L) {
3156 return emitOp<>(OP_ArrayElemPtrPopSint32, L);
3157}
3158bool ByteCodeEmitter::emitArrayElemPtrPopUint32(SourceInfo L) {
3159 return emitOp<>(OP_ArrayElemPtrPopUint32, L);
3160}
3161bool ByteCodeEmitter::emitArrayElemPtrPopSint64(SourceInfo L) {
3162 return emitOp<>(OP_ArrayElemPtrPopSint64, L);
3163}
3164bool ByteCodeEmitter::emitArrayElemPtrPopUint64(SourceInfo L) {
3165 return emitOp<>(OP_ArrayElemPtrPopUint64, L);
3166}
3167bool ByteCodeEmitter::emitArrayElemPtrPopIntAP(SourceInfo L) {
3168 return emitOp<>(OP_ArrayElemPtrPopIntAP, L);
3169}
3170bool ByteCodeEmitter::emitArrayElemPtrPopIntAPS(SourceInfo L) {
3171 return emitOp<>(OP_ArrayElemPtrPopIntAPS, L);
3172}
3173bool ByteCodeEmitter::emitArrayElemPtrPopBool(SourceInfo L) {
3174 return emitOp<>(OP_ArrayElemPtrPopBool, L);
3175}
3176#endif
3177#ifdef GET_EVAL_IMPL
3178bool EvalEmitter::emitArrayElemPtrPopSint8(SourceInfo L) {
3179 if (!isActive()) return true;
3180 CurrentSource = L;
3181 return ArrayElemPtrPop<PT_Sint8>(S, CodePtr());
3182}
3183bool EvalEmitter::emitArrayElemPtrPopUint8(SourceInfo L) {
3184 if (!isActive()) return true;
3185 CurrentSource = L;
3186 return ArrayElemPtrPop<PT_Uint8>(S, CodePtr());
3187}
3188bool EvalEmitter::emitArrayElemPtrPopSint16(SourceInfo L) {
3189 if (!isActive()) return true;
3190 CurrentSource = L;
3191 return ArrayElemPtrPop<PT_Sint16>(S, CodePtr());
3192}
3193bool EvalEmitter::emitArrayElemPtrPopUint16(SourceInfo L) {
3194 if (!isActive()) return true;
3195 CurrentSource = L;
3196 return ArrayElemPtrPop<PT_Uint16>(S, CodePtr());
3197}
3198bool EvalEmitter::emitArrayElemPtrPopSint32(SourceInfo L) {
3199 if (!isActive()) return true;
3200 CurrentSource = L;
3201 return ArrayElemPtrPop<PT_Sint32>(S, CodePtr());
3202}
3203bool EvalEmitter::emitArrayElemPtrPopUint32(SourceInfo L) {
3204 if (!isActive()) return true;
3205 CurrentSource = L;
3206 return ArrayElemPtrPop<PT_Uint32>(S, CodePtr());
3207}
3208bool EvalEmitter::emitArrayElemPtrPopSint64(SourceInfo L) {
3209 if (!isActive()) return true;
3210 CurrentSource = L;
3211 return ArrayElemPtrPop<PT_Sint64>(S, CodePtr());
3212}
3213bool EvalEmitter::emitArrayElemPtrPopUint64(SourceInfo L) {
3214 if (!isActive()) return true;
3215 CurrentSource = L;
3216 return ArrayElemPtrPop<PT_Uint64>(S, CodePtr());
3217}
3218bool EvalEmitter::emitArrayElemPtrPopIntAP(SourceInfo L) {
3219 if (!isActive()) return true;
3220 CurrentSource = L;
3221 return ArrayElemPtrPop<PT_IntAP>(S, CodePtr());
3222}
3223bool EvalEmitter::emitArrayElemPtrPopIntAPS(SourceInfo L) {
3224 if (!isActive()) return true;
3225 CurrentSource = L;
3226 return ArrayElemPtrPop<PT_IntAPS>(S, CodePtr());
3227}
3228bool EvalEmitter::emitArrayElemPtrPopBool(SourceInfo L) {
3229 if (!isActive()) return true;
3230 CurrentSource = L;
3231 return ArrayElemPtrPop<PT_Bool>(S, CodePtr());
3232}
3233#endif
3234#ifdef GET_OPCODE_NAMES
3235OP_Assume,
3236#endif
3237#ifdef GET_INTERPFN_LIST
3238&Interp_Assume,
3239#endif
3240#ifdef GET_INTERPFN_DISPATCHERS
3241PRESERVE_NONE
3242static bool Interp_Assume(InterpState &S) {
3243 if (!Assume(S, S.PC)) return false;
3244#if USE_TAILCALLS
3245 MUSTTAIL return InterpNext(S);
3246#else
3247 return true;
3248#endif
3249}
3250#endif
3251#ifdef GET_DISASM
3252case OP_Assume:
3253 Text.Op = PrintName("Assume");
3254 break;
3255#endif
3256#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3257bool emitAssume(SourceInfo);
3258#endif
3259#ifdef GET_LINK_IMPL
3260bool ByteCodeEmitter::emitAssume(SourceInfo L) {
3261 return emitOp<>(OP_Assume, L);
3262}
3263#endif
3264#ifdef GET_EVAL_IMPL
3265bool EvalEmitter::emitAssume(SourceInfo L) {
3266 if (!isActive()) return true;
3267 CurrentSource = L;
3268 return Assume(S, CodePtr());
3269}
3270#endif
3271#ifdef GET_OPCODE_NAMES
3272OP_BCP,
3273#endif
3274#ifdef GET_INTERPFN_LIST
3275&Interp_BCP,
3276#endif
3277#ifdef GET_INTERPFN_DISPATCHERS
3278PRESERVE_NONE
3279static bool Interp_BCP(InterpState &S) {
3280 {
3281 CodePtr OpPC = S.PC;
3282 const auto V0 = ReadArg<int32_t>(S, S.PC);
3283 const auto V1 = ReadArg<PrimType>(S, S.PC);
3284 if (!BCP(S, OpPC, V0, V1)) return false;
3285 }
3286#if USE_TAILCALLS
3287 MUSTTAIL return InterpNext(S);
3288#else
3289 return true;
3290#endif
3291}
3292#endif
3293#ifdef GET_DISASM
3294case OP_BCP:
3295 Text.Op = PrintName("BCP");
3296 Text.Args.push_back(printArg<int32_t>(PC));
3297 Text.Args.push_back(printArg<PrimType>(PC));
3298 break;
3299#endif
3300#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3301bool emitBCP( int32_t , PrimType , SourceInfo);
3302#endif
3303#ifdef GET_LINK_IMPL
3304bool ByteCodeEmitter::emitBCP( int32_t A0, PrimType A1, SourceInfo L) {
3305 return emitOp<int32_t, PrimType>(OP_BCP, A0, A1, L);
3306}
3307#endif
3308#ifdef GET_OPCODE_NAMES
3309OP_BitAndSint8,
3310OP_BitAndUint8,
3311OP_BitAndSint16,
3312OP_BitAndUint16,
3313OP_BitAndSint32,
3314OP_BitAndUint32,
3315OP_BitAndSint64,
3316OP_BitAndUint64,
3317OP_BitAndIntAP,
3318OP_BitAndIntAPS,
3319OP_BitAndFixedPoint,
3320#endif
3321#ifdef GET_INTERPFN_LIST
3322&Interp_BitAndSint8,
3323&Interp_BitAndUint8,
3324&Interp_BitAndSint16,
3325&Interp_BitAndUint16,
3326&Interp_BitAndSint32,
3327&Interp_BitAndUint32,
3328&Interp_BitAndSint64,
3329&Interp_BitAndUint64,
3330&Interp_BitAndIntAP,
3331&Interp_BitAndIntAPS,
3332&Interp_BitAndFixedPoint,
3333#endif
3334#ifdef GET_INTERPFN_DISPATCHERS
3335PRESERVE_NONE
3336static bool Interp_BitAndSint8(InterpState &S) {
3337 if (!BitAnd<PT_Sint8>(S)) return false;
3338#if USE_TAILCALLS
3339 MUSTTAIL return InterpNext(S);
3340#else
3341 return true;
3342#endif
3343}
3344PRESERVE_NONE
3345static bool Interp_BitAndUint8(InterpState &S) {
3346 if (!BitAnd<PT_Uint8>(S)) return false;
3347#if USE_TAILCALLS
3348 MUSTTAIL return InterpNext(S);
3349#else
3350 return true;
3351#endif
3352}
3353PRESERVE_NONE
3354static bool Interp_BitAndSint16(InterpState &S) {
3355 if (!BitAnd<PT_Sint16>(S)) return false;
3356#if USE_TAILCALLS
3357 MUSTTAIL return InterpNext(S);
3358#else
3359 return true;
3360#endif
3361}
3362PRESERVE_NONE
3363static bool Interp_BitAndUint16(InterpState &S) {
3364 if (!BitAnd<PT_Uint16>(S)) return false;
3365#if USE_TAILCALLS
3366 MUSTTAIL return InterpNext(S);
3367#else
3368 return true;
3369#endif
3370}
3371PRESERVE_NONE
3372static bool Interp_BitAndSint32(InterpState &S) {
3373 if (!BitAnd<PT_Sint32>(S)) return false;
3374#if USE_TAILCALLS
3375 MUSTTAIL return InterpNext(S);
3376#else
3377 return true;
3378#endif
3379}
3380PRESERVE_NONE
3381static bool Interp_BitAndUint32(InterpState &S) {
3382 if (!BitAnd<PT_Uint32>(S)) return false;
3383#if USE_TAILCALLS
3384 MUSTTAIL return InterpNext(S);
3385#else
3386 return true;
3387#endif
3388}
3389PRESERVE_NONE
3390static bool Interp_BitAndSint64(InterpState &S) {
3391 if (!BitAnd<PT_Sint64>(S)) return false;
3392#if USE_TAILCALLS
3393 MUSTTAIL return InterpNext(S);
3394#else
3395 return true;
3396#endif
3397}
3398PRESERVE_NONE
3399static bool Interp_BitAndUint64(InterpState &S) {
3400 if (!BitAnd<PT_Uint64>(S)) return false;
3401#if USE_TAILCALLS
3402 MUSTTAIL return InterpNext(S);
3403#else
3404 return true;
3405#endif
3406}
3407PRESERVE_NONE
3408static bool Interp_BitAndIntAP(InterpState &S) {
3409 if (!BitAnd<PT_IntAP>(S)) return false;
3410#if USE_TAILCALLS
3411 MUSTTAIL return InterpNext(S);
3412#else
3413 return true;
3414#endif
3415}
3416PRESERVE_NONE
3417static bool Interp_BitAndIntAPS(InterpState &S) {
3418 if (!BitAnd<PT_IntAPS>(S)) return false;
3419#if USE_TAILCALLS
3420 MUSTTAIL return InterpNext(S);
3421#else
3422 return true;
3423#endif
3424}
3425PRESERVE_NONE
3426static bool Interp_BitAndFixedPoint(InterpState &S) {
3427 if (!BitAnd<PT_FixedPoint>(S)) return false;
3428#if USE_TAILCALLS
3429 MUSTTAIL return InterpNext(S);
3430#else
3431 return true;
3432#endif
3433}
3434#endif
3435#ifdef GET_DISASM
3436case OP_BitAndSint8:
3437 Text.Op = PrintName("BitAndSint8");
3438 break;
3439case OP_BitAndUint8:
3440 Text.Op = PrintName("BitAndUint8");
3441 break;
3442case OP_BitAndSint16:
3443 Text.Op = PrintName("BitAndSint16");
3444 break;
3445case OP_BitAndUint16:
3446 Text.Op = PrintName("BitAndUint16");
3447 break;
3448case OP_BitAndSint32:
3449 Text.Op = PrintName("BitAndSint32");
3450 break;
3451case OP_BitAndUint32:
3452 Text.Op = PrintName("BitAndUint32");
3453 break;
3454case OP_BitAndSint64:
3455 Text.Op = PrintName("BitAndSint64");
3456 break;
3457case OP_BitAndUint64:
3458 Text.Op = PrintName("BitAndUint64");
3459 break;
3460case OP_BitAndIntAP:
3461 Text.Op = PrintName("BitAndIntAP");
3462 break;
3463case OP_BitAndIntAPS:
3464 Text.Op = PrintName("BitAndIntAPS");
3465 break;
3466case OP_BitAndFixedPoint:
3467 Text.Op = PrintName("BitAndFixedPoint");
3468 break;
3469#endif
3470#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3471bool emitBitAndSint8(SourceInfo);
3472bool emitBitAndUint8(SourceInfo);
3473bool emitBitAndSint16(SourceInfo);
3474bool emitBitAndUint16(SourceInfo);
3475bool emitBitAndSint32(SourceInfo);
3476bool emitBitAndUint32(SourceInfo);
3477bool emitBitAndSint64(SourceInfo);
3478bool emitBitAndUint64(SourceInfo);
3479bool emitBitAndIntAP(SourceInfo);
3480bool emitBitAndIntAPS(SourceInfo);
3481bool emitBitAndFixedPoint(SourceInfo);
3482#endif
3483#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3484[[nodiscard]] bool emitBitAnd(PrimType, SourceInfo I);
3485#endif
3486#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
3487bool
3488#if defined(GET_EVAL_IMPL)
3489EvalEmitter
3490#else
3491ByteCodeEmitter
3492#endif
3493::emitBitAnd(PrimType T0, SourceInfo I) {
3494 switch (T0) {
3495 case PT_Sint8:
3496 return emitBitAndSint8(I);
3497 case PT_Uint8:
3498 return emitBitAndUint8(I);
3499 case PT_Sint16:
3500 return emitBitAndSint16(I);
3501 case PT_Uint16:
3502 return emitBitAndUint16(I);
3503 case PT_Sint32:
3504 return emitBitAndSint32(I);
3505 case PT_Uint32:
3506 return emitBitAndUint32(I);
3507 case PT_Sint64:
3508 return emitBitAndSint64(I);
3509 case PT_Uint64:
3510 return emitBitAndUint64(I);
3511 case PT_IntAP:
3512 return emitBitAndIntAP(I);
3513 case PT_IntAPS:
3514 return emitBitAndIntAPS(I);
3515 case PT_FixedPoint:
3516 return emitBitAndFixedPoint(I);
3517 default: llvm_unreachable("invalid type: emitBitAnd");
3518 }
3519 llvm_unreachable("invalid enum value");
3520}
3521#endif
3522#ifdef GET_LINK_IMPL
3523bool ByteCodeEmitter::emitBitAndSint8(SourceInfo L) {
3524 return emitOp<>(OP_BitAndSint8, L);
3525}
3526bool ByteCodeEmitter::emitBitAndUint8(SourceInfo L) {
3527 return emitOp<>(OP_BitAndUint8, L);
3528}
3529bool ByteCodeEmitter::emitBitAndSint16(SourceInfo L) {
3530 return emitOp<>(OP_BitAndSint16, L);
3531}
3532bool ByteCodeEmitter::emitBitAndUint16(SourceInfo L) {
3533 return emitOp<>(OP_BitAndUint16, L);
3534}
3535bool ByteCodeEmitter::emitBitAndSint32(SourceInfo L) {
3536 return emitOp<>(OP_BitAndSint32, L);
3537}
3538bool ByteCodeEmitter::emitBitAndUint32(SourceInfo L) {
3539 return emitOp<>(OP_BitAndUint32, L);
3540}
3541bool ByteCodeEmitter::emitBitAndSint64(SourceInfo L) {
3542 return emitOp<>(OP_BitAndSint64, L);
3543}
3544bool ByteCodeEmitter::emitBitAndUint64(SourceInfo L) {
3545 return emitOp<>(OP_BitAndUint64, L);
3546}
3547bool ByteCodeEmitter::emitBitAndIntAP(SourceInfo L) {
3548 return emitOp<>(OP_BitAndIntAP, L);
3549}
3550bool ByteCodeEmitter::emitBitAndIntAPS(SourceInfo L) {
3551 return emitOp<>(OP_BitAndIntAPS, L);
3552}
3553bool ByteCodeEmitter::emitBitAndFixedPoint(SourceInfo L) {
3554 return emitOp<>(OP_BitAndFixedPoint, L);
3555}
3556#endif
3557#ifdef GET_EVAL_IMPL
3558bool EvalEmitter::emitBitAndSint8(SourceInfo L) {
3559 if (!isActive()) return true;
3560 CurrentSource = L;
3561 return BitAnd<PT_Sint8>(S);
3562}
3563bool EvalEmitter::emitBitAndUint8(SourceInfo L) {
3564 if (!isActive()) return true;
3565 CurrentSource = L;
3566 return BitAnd<PT_Uint8>(S);
3567}
3568bool EvalEmitter::emitBitAndSint16(SourceInfo L) {
3569 if (!isActive()) return true;
3570 CurrentSource = L;
3571 return BitAnd<PT_Sint16>(S);
3572}
3573bool EvalEmitter::emitBitAndUint16(SourceInfo L) {
3574 if (!isActive()) return true;
3575 CurrentSource = L;
3576 return BitAnd<PT_Uint16>(S);
3577}
3578bool EvalEmitter::emitBitAndSint32(SourceInfo L) {
3579 if (!isActive()) return true;
3580 CurrentSource = L;
3581 return BitAnd<PT_Sint32>(S);
3582}
3583bool EvalEmitter::emitBitAndUint32(SourceInfo L) {
3584 if (!isActive()) return true;
3585 CurrentSource = L;
3586 return BitAnd<PT_Uint32>(S);
3587}
3588bool EvalEmitter::emitBitAndSint64(SourceInfo L) {
3589 if (!isActive()) return true;
3590 CurrentSource = L;
3591 return BitAnd<PT_Sint64>(S);
3592}
3593bool EvalEmitter::emitBitAndUint64(SourceInfo L) {
3594 if (!isActive()) return true;
3595 CurrentSource = L;
3596 return BitAnd<PT_Uint64>(S);
3597}
3598bool EvalEmitter::emitBitAndIntAP(SourceInfo L) {
3599 if (!isActive()) return true;
3600 CurrentSource = L;
3601 return BitAnd<PT_IntAP>(S);
3602}
3603bool EvalEmitter::emitBitAndIntAPS(SourceInfo L) {
3604 if (!isActive()) return true;
3605 CurrentSource = L;
3606 return BitAnd<PT_IntAPS>(S);
3607}
3608bool EvalEmitter::emitBitAndFixedPoint(SourceInfo L) {
3609 if (!isActive()) return true;
3610 CurrentSource = L;
3611 return BitAnd<PT_FixedPoint>(S);
3612}
3613#endif
3614#ifdef GET_OPCODE_NAMES
3615OP_BitCast,
3616#endif
3617#ifdef GET_INTERPFN_LIST
3618&Interp_BitCast,
3619#endif
3620#ifdef GET_INTERPFN_DISPATCHERS
3621PRESERVE_NONE
3622static bool Interp_BitCast(InterpState &S) {
3623 if (!BitCast(S, S.PC)) return false;
3624#if USE_TAILCALLS
3625 MUSTTAIL return InterpNext(S);
3626#else
3627 return true;
3628#endif
3629}
3630#endif
3631#ifdef GET_DISASM
3632case OP_BitCast:
3633 Text.Op = PrintName("BitCast");
3634 break;
3635#endif
3636#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3637bool emitBitCast(SourceInfo);
3638#endif
3639#ifdef GET_LINK_IMPL
3640bool ByteCodeEmitter::emitBitCast(SourceInfo L) {
3641 return emitOp<>(OP_BitCast, L);
3642}
3643#endif
3644#ifdef GET_EVAL_IMPL
3645bool EvalEmitter::emitBitCast(SourceInfo L) {
3646 if (!isActive()) return true;
3647 CurrentSource = L;
3648 return BitCast(S, CodePtr());
3649}
3650#endif
3651#ifdef GET_OPCODE_NAMES
3652OP_BitCastPrimUint8,
3653OP_BitCastPrimSint8,
3654OP_BitCastPrimUint16,
3655OP_BitCastPrimSint16,
3656OP_BitCastPrimUint32,
3657OP_BitCastPrimSint32,
3658OP_BitCastPrimUint64,
3659OP_BitCastPrimSint64,
3660OP_BitCastPrimIntAP,
3661OP_BitCastPrimIntAPS,
3662OP_BitCastPrimBool,
3663OP_BitCastPrimFloat,
3664OP_BitCastPrimPtr,
3665OP_BitCastPrimMemberPtr,
3666#endif
3667#ifdef GET_INTERPFN_LIST
3668&Interp_BitCastPrimUint8,
3669&Interp_BitCastPrimSint8,
3670&Interp_BitCastPrimUint16,
3671&Interp_BitCastPrimSint16,
3672&Interp_BitCastPrimUint32,
3673&Interp_BitCastPrimSint32,
3674&Interp_BitCastPrimUint64,
3675&Interp_BitCastPrimSint64,
3676&Interp_BitCastPrimIntAP,
3677&Interp_BitCastPrimIntAPS,
3678&Interp_BitCastPrimBool,
3679&Interp_BitCastPrimFloat,
3680&Interp_BitCastPrimPtr,
3681&Interp_BitCastPrimMemberPtr,
3682#endif
3683#ifdef GET_INTERPFN_DISPATCHERS
3684PRESERVE_NONE
3685static bool Interp_BitCastPrimUint8(InterpState &S) {
3686 {
3687 CodePtr OpPC = S.PC;
3688 const auto V0 = ReadArg<bool>(S, S.PC);
3689 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3690 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3691 const auto V3 = ReadArg<const Type *>(S, S.PC);
3692 if (!BitCastPrim<PT_Uint8>(S, OpPC, V0, V1, V2, V3)) return false;
3693 }
3694#if USE_TAILCALLS
3695 MUSTTAIL return InterpNext(S);
3696#else
3697 return true;
3698#endif
3699}
3700PRESERVE_NONE
3701static bool Interp_BitCastPrimSint8(InterpState &S) {
3702 {
3703 CodePtr OpPC = S.PC;
3704 const auto V0 = ReadArg<bool>(S, S.PC);
3705 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3706 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3707 const auto V3 = ReadArg<const Type *>(S, S.PC);
3708 if (!BitCastPrim<PT_Sint8>(S, OpPC, V0, V1, V2, V3)) return false;
3709 }
3710#if USE_TAILCALLS
3711 MUSTTAIL return InterpNext(S);
3712#else
3713 return true;
3714#endif
3715}
3716PRESERVE_NONE
3717static bool Interp_BitCastPrimUint16(InterpState &S) {
3718 {
3719 CodePtr OpPC = S.PC;
3720 const auto V0 = ReadArg<bool>(S, S.PC);
3721 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3722 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3723 const auto V3 = ReadArg<const Type *>(S, S.PC);
3724 if (!BitCastPrim<PT_Uint16>(S, OpPC, V0, V1, V2, V3)) return false;
3725 }
3726#if USE_TAILCALLS
3727 MUSTTAIL return InterpNext(S);
3728#else
3729 return true;
3730#endif
3731}
3732PRESERVE_NONE
3733static bool Interp_BitCastPrimSint16(InterpState &S) {
3734 {
3735 CodePtr OpPC = S.PC;
3736 const auto V0 = ReadArg<bool>(S, S.PC);
3737 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3738 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3739 const auto V3 = ReadArg<const Type *>(S, S.PC);
3740 if (!BitCastPrim<PT_Sint16>(S, OpPC, V0, V1, V2, V3)) return false;
3741 }
3742#if USE_TAILCALLS
3743 MUSTTAIL return InterpNext(S);
3744#else
3745 return true;
3746#endif
3747}
3748PRESERVE_NONE
3749static bool Interp_BitCastPrimUint32(InterpState &S) {
3750 {
3751 CodePtr OpPC = S.PC;
3752 const auto V0 = ReadArg<bool>(S, S.PC);
3753 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3754 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3755 const auto V3 = ReadArg<const Type *>(S, S.PC);
3756 if (!BitCastPrim<PT_Uint32>(S, OpPC, V0, V1, V2, V3)) return false;
3757 }
3758#if USE_TAILCALLS
3759 MUSTTAIL return InterpNext(S);
3760#else
3761 return true;
3762#endif
3763}
3764PRESERVE_NONE
3765static bool Interp_BitCastPrimSint32(InterpState &S) {
3766 {
3767 CodePtr OpPC = S.PC;
3768 const auto V0 = ReadArg<bool>(S, S.PC);
3769 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3770 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3771 const auto V3 = ReadArg<const Type *>(S, S.PC);
3772 if (!BitCastPrim<PT_Sint32>(S, OpPC, V0, V1, V2, V3)) return false;
3773 }
3774#if USE_TAILCALLS
3775 MUSTTAIL return InterpNext(S);
3776#else
3777 return true;
3778#endif
3779}
3780PRESERVE_NONE
3781static bool Interp_BitCastPrimUint64(InterpState &S) {
3782 {
3783 CodePtr OpPC = S.PC;
3784 const auto V0 = ReadArg<bool>(S, S.PC);
3785 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3786 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3787 const auto V3 = ReadArg<const Type *>(S, S.PC);
3788 if (!BitCastPrim<PT_Uint64>(S, OpPC, V0, V1, V2, V3)) return false;
3789 }
3790#if USE_TAILCALLS
3791 MUSTTAIL return InterpNext(S);
3792#else
3793 return true;
3794#endif
3795}
3796PRESERVE_NONE
3797static bool Interp_BitCastPrimSint64(InterpState &S) {
3798 {
3799 CodePtr OpPC = S.PC;
3800 const auto V0 = ReadArg<bool>(S, S.PC);
3801 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3802 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3803 const auto V3 = ReadArg<const Type *>(S, S.PC);
3804 if (!BitCastPrim<PT_Sint64>(S, OpPC, V0, V1, V2, V3)) return false;
3805 }
3806#if USE_TAILCALLS
3807 MUSTTAIL return InterpNext(S);
3808#else
3809 return true;
3810#endif
3811}
3812PRESERVE_NONE
3813static bool Interp_BitCastPrimIntAP(InterpState &S) {
3814 {
3815 CodePtr OpPC = S.PC;
3816 const auto V0 = ReadArg<bool>(S, S.PC);
3817 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3818 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3819 const auto V3 = ReadArg<const Type *>(S, S.PC);
3820 if (!BitCastPrim<PT_IntAP>(S, OpPC, V0, V1, V2, V3)) return false;
3821 }
3822#if USE_TAILCALLS
3823 MUSTTAIL return InterpNext(S);
3824#else
3825 return true;
3826#endif
3827}
3828PRESERVE_NONE
3829static bool Interp_BitCastPrimIntAPS(InterpState &S) {
3830 {
3831 CodePtr OpPC = S.PC;
3832 const auto V0 = ReadArg<bool>(S, S.PC);
3833 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3834 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3835 const auto V3 = ReadArg<const Type *>(S, S.PC);
3836 if (!BitCastPrim<PT_IntAPS>(S, OpPC, V0, V1, V2, V3)) return false;
3837 }
3838#if USE_TAILCALLS
3839 MUSTTAIL return InterpNext(S);
3840#else
3841 return true;
3842#endif
3843}
3844PRESERVE_NONE
3845static bool Interp_BitCastPrimBool(InterpState &S) {
3846 {
3847 CodePtr OpPC = S.PC;
3848 const auto V0 = ReadArg<bool>(S, S.PC);
3849 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3850 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3851 const auto V3 = ReadArg<const Type *>(S, S.PC);
3852 if (!BitCastPrim<PT_Bool>(S, OpPC, V0, V1, V2, V3)) return false;
3853 }
3854#if USE_TAILCALLS
3855 MUSTTAIL return InterpNext(S);
3856#else
3857 return true;
3858#endif
3859}
3860PRESERVE_NONE
3861static bool Interp_BitCastPrimFloat(InterpState &S) {
3862 {
3863 CodePtr OpPC = S.PC;
3864 const auto V0 = ReadArg<bool>(S, S.PC);
3865 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3866 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3867 const auto V3 = ReadArg<const Type *>(S, S.PC);
3868 if (!BitCastPrim<PT_Float>(S, OpPC, V0, V1, V2, V3)) return false;
3869 }
3870#if USE_TAILCALLS
3871 MUSTTAIL return InterpNext(S);
3872#else
3873 return true;
3874#endif
3875}
3876PRESERVE_NONE
3877static bool Interp_BitCastPrimPtr(InterpState &S) {
3878 {
3879 CodePtr OpPC = S.PC;
3880 const auto V0 = ReadArg<bool>(S, S.PC);
3881 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3882 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3883 const auto V3 = ReadArg<const Type *>(S, S.PC);
3884 if (!BitCastPrim<PT_Ptr>(S, OpPC, V0, V1, V2, V3)) return false;
3885 }
3886#if USE_TAILCALLS
3887 MUSTTAIL return InterpNext(S);
3888#else
3889 return true;
3890#endif
3891}
3892PRESERVE_NONE
3893static bool Interp_BitCastPrimMemberPtr(InterpState &S) {
3894 {
3895 CodePtr OpPC = S.PC;
3896 const auto V0 = ReadArg<bool>(S, S.PC);
3897 const auto V1 = ReadArg<uint32_t>(S, S.PC);
3898 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
3899 const auto V3 = ReadArg<const Type *>(S, S.PC);
3900 if (!BitCastPrim<PT_MemberPtr>(S, OpPC, V0, V1, V2, V3)) return false;
3901 }
3902#if USE_TAILCALLS
3903 MUSTTAIL return InterpNext(S);
3904#else
3905 return true;
3906#endif
3907}
3908#endif
3909#ifdef GET_DISASM
3910case OP_BitCastPrimUint8:
3911 Text.Op = PrintName("BitCastPrimUint8");
3912 Text.Args.push_back(printArg<bool>(PC));
3913 Text.Args.push_back(printArg<uint32_t>(PC));
3914 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3915 Text.Args.push_back(printArg<const Type *>(PC));
3916 break;
3917case OP_BitCastPrimSint8:
3918 Text.Op = PrintName("BitCastPrimSint8");
3919 Text.Args.push_back(printArg<bool>(PC));
3920 Text.Args.push_back(printArg<uint32_t>(PC));
3921 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3922 Text.Args.push_back(printArg<const Type *>(PC));
3923 break;
3924case OP_BitCastPrimUint16:
3925 Text.Op = PrintName("BitCastPrimUint16");
3926 Text.Args.push_back(printArg<bool>(PC));
3927 Text.Args.push_back(printArg<uint32_t>(PC));
3928 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3929 Text.Args.push_back(printArg<const Type *>(PC));
3930 break;
3931case OP_BitCastPrimSint16:
3932 Text.Op = PrintName("BitCastPrimSint16");
3933 Text.Args.push_back(printArg<bool>(PC));
3934 Text.Args.push_back(printArg<uint32_t>(PC));
3935 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3936 Text.Args.push_back(printArg<const Type *>(PC));
3937 break;
3938case OP_BitCastPrimUint32:
3939 Text.Op = PrintName("BitCastPrimUint32");
3940 Text.Args.push_back(printArg<bool>(PC));
3941 Text.Args.push_back(printArg<uint32_t>(PC));
3942 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3943 Text.Args.push_back(printArg<const Type *>(PC));
3944 break;
3945case OP_BitCastPrimSint32:
3946 Text.Op = PrintName("BitCastPrimSint32");
3947 Text.Args.push_back(printArg<bool>(PC));
3948 Text.Args.push_back(printArg<uint32_t>(PC));
3949 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3950 Text.Args.push_back(printArg<const Type *>(PC));
3951 break;
3952case OP_BitCastPrimUint64:
3953 Text.Op = PrintName("BitCastPrimUint64");
3954 Text.Args.push_back(printArg<bool>(PC));
3955 Text.Args.push_back(printArg<uint32_t>(PC));
3956 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3957 Text.Args.push_back(printArg<const Type *>(PC));
3958 break;
3959case OP_BitCastPrimSint64:
3960 Text.Op = PrintName("BitCastPrimSint64");
3961 Text.Args.push_back(printArg<bool>(PC));
3962 Text.Args.push_back(printArg<uint32_t>(PC));
3963 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3964 Text.Args.push_back(printArg<const Type *>(PC));
3965 break;
3966case OP_BitCastPrimIntAP:
3967 Text.Op = PrintName("BitCastPrimIntAP");
3968 Text.Args.push_back(printArg<bool>(PC));
3969 Text.Args.push_back(printArg<uint32_t>(PC));
3970 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3971 Text.Args.push_back(printArg<const Type *>(PC));
3972 break;
3973case OP_BitCastPrimIntAPS:
3974 Text.Op = PrintName("BitCastPrimIntAPS");
3975 Text.Args.push_back(printArg<bool>(PC));
3976 Text.Args.push_back(printArg<uint32_t>(PC));
3977 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3978 Text.Args.push_back(printArg<const Type *>(PC));
3979 break;
3980case OP_BitCastPrimBool:
3981 Text.Op = PrintName("BitCastPrimBool");
3982 Text.Args.push_back(printArg<bool>(PC));
3983 Text.Args.push_back(printArg<uint32_t>(PC));
3984 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3985 Text.Args.push_back(printArg<const Type *>(PC));
3986 break;
3987case OP_BitCastPrimFloat:
3988 Text.Op = PrintName("BitCastPrimFloat");
3989 Text.Args.push_back(printArg<bool>(PC));
3990 Text.Args.push_back(printArg<uint32_t>(PC));
3991 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3992 Text.Args.push_back(printArg<const Type *>(PC));
3993 break;
3994case OP_BitCastPrimPtr:
3995 Text.Op = PrintName("BitCastPrimPtr");
3996 Text.Args.push_back(printArg<bool>(PC));
3997 Text.Args.push_back(printArg<uint32_t>(PC));
3998 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
3999 Text.Args.push_back(printArg<const Type *>(PC));
4000 break;
4001case OP_BitCastPrimMemberPtr:
4002 Text.Op = PrintName("BitCastPrimMemberPtr");
4003 Text.Args.push_back(printArg<bool>(PC));
4004 Text.Args.push_back(printArg<uint32_t>(PC));
4005 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
4006 Text.Args.push_back(printArg<const Type *>(PC));
4007 break;
4008#endif
4009#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4010bool emitBitCastPrimUint8( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4011bool emitBitCastPrimSint8( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4012bool emitBitCastPrimUint16( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4013bool emitBitCastPrimSint16( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4014bool emitBitCastPrimUint32( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4015bool emitBitCastPrimSint32( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4016bool emitBitCastPrimUint64( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4017bool emitBitCastPrimSint64( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4018bool emitBitCastPrimIntAP( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4019bool emitBitCastPrimIntAPS( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4020bool emitBitCastPrimBool( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4021bool emitBitCastPrimFloat( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4022bool emitBitCastPrimPtr( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4023bool emitBitCastPrimMemberPtr( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
4024#endif
4025#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4026[[nodiscard]] bool emitBitCastPrim(PrimType, bool, uint32_t, const llvm::fltSemantics *, const Type *, SourceInfo I);
4027#endif
4028#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
4029bool
4030#if defined(GET_EVAL_IMPL)
4031EvalEmitter
4032#else
4033ByteCodeEmitter
4034#endif
4035::emitBitCastPrim(PrimType T0, bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo I) {
4036 switch (T0) {
4037 case PT_Uint8:
4038 return emitBitCastPrimUint8(A0, A1, A2, A3, I);
4039 case PT_Sint8:
4040 return emitBitCastPrimSint8(A0, A1, A2, A3, I);
4041 case PT_Uint16:
4042 return emitBitCastPrimUint16(A0, A1, A2, A3, I);
4043 case PT_Sint16:
4044 return emitBitCastPrimSint16(A0, A1, A2, A3, I);
4045 case PT_Uint32:
4046 return emitBitCastPrimUint32(A0, A1, A2, A3, I);
4047 case PT_Sint32:
4048 return emitBitCastPrimSint32(A0, A1, A2, A3, I);
4049 case PT_Uint64:
4050 return emitBitCastPrimUint64(A0, A1, A2, A3, I);
4051 case PT_Sint64:
4052 return emitBitCastPrimSint64(A0, A1, A2, A3, I);
4053 case PT_IntAP:
4054 return emitBitCastPrimIntAP(A0, A1, A2, A3, I);
4055 case PT_IntAPS:
4056 return emitBitCastPrimIntAPS(A0, A1, A2, A3, I);
4057 case PT_Bool:
4058 return emitBitCastPrimBool(A0, A1, A2, A3, I);
4059 case PT_Float:
4060 return emitBitCastPrimFloat(A0, A1, A2, A3, I);
4061 case PT_Ptr:
4062 return emitBitCastPrimPtr(A0, A1, A2, A3, I);
4063 case PT_MemberPtr:
4064 return emitBitCastPrimMemberPtr(A0, A1, A2, A3, I);
4065 default: llvm_unreachable("invalid type: emitBitCastPrim");
4066 }
4067 llvm_unreachable("invalid enum value");
4068}
4069#endif
4070#ifdef GET_LINK_IMPL
4071bool ByteCodeEmitter::emitBitCastPrimUint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4072 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint8, A0, A1, A2, A3, L);
4073}
4074bool ByteCodeEmitter::emitBitCastPrimSint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4075 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint8, A0, A1, A2, A3, L);
4076}
4077bool ByteCodeEmitter::emitBitCastPrimUint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4078 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint16, A0, A1, A2, A3, L);
4079}
4080bool ByteCodeEmitter::emitBitCastPrimSint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4081 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint16, A0, A1, A2, A3, L);
4082}
4083bool ByteCodeEmitter::emitBitCastPrimUint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4084 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint32, A0, A1, A2, A3, L);
4085}
4086bool ByteCodeEmitter::emitBitCastPrimSint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4087 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint32, A0, A1, A2, A3, L);
4088}
4089bool ByteCodeEmitter::emitBitCastPrimUint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4090 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint64, A0, A1, A2, A3, L);
4091}
4092bool ByteCodeEmitter::emitBitCastPrimSint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4093 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint64, A0, A1, A2, A3, L);
4094}
4095bool ByteCodeEmitter::emitBitCastPrimIntAP( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4096 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimIntAP, A0, A1, A2, A3, L);
4097}
4098bool ByteCodeEmitter::emitBitCastPrimIntAPS( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4099 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimIntAPS, A0, A1, A2, A3, L);
4100}
4101bool ByteCodeEmitter::emitBitCastPrimBool( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4102 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimBool, A0, A1, A2, A3, L);
4103}
4104bool ByteCodeEmitter::emitBitCastPrimFloat( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4105 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimFloat, A0, A1, A2, A3, L);
4106}
4107bool ByteCodeEmitter::emitBitCastPrimPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4108 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimPtr, A0, A1, A2, A3, L);
4109}
4110bool ByteCodeEmitter::emitBitCastPrimMemberPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4111 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimMemberPtr, A0, A1, A2, A3, L);
4112}
4113#endif
4114#ifdef GET_EVAL_IMPL
4115bool EvalEmitter::emitBitCastPrimUint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4116 if (!isActive()) return true;
4117 CurrentSource = L;
4118 return BitCastPrim<PT_Uint8>(S, CodePtr(), A0, A1, A2, A3);
4119}
4120bool EvalEmitter::emitBitCastPrimSint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4121 if (!isActive()) return true;
4122 CurrentSource = L;
4123 return BitCastPrim<PT_Sint8>(S, CodePtr(), A0, A1, A2, A3);
4124}
4125bool EvalEmitter::emitBitCastPrimUint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4126 if (!isActive()) return true;
4127 CurrentSource = L;
4128 return BitCastPrim<PT_Uint16>(S, CodePtr(), A0, A1, A2, A3);
4129}
4130bool EvalEmitter::emitBitCastPrimSint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4131 if (!isActive()) return true;
4132 CurrentSource = L;
4133 return BitCastPrim<PT_Sint16>(S, CodePtr(), A0, A1, A2, A3);
4134}
4135bool EvalEmitter::emitBitCastPrimUint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4136 if (!isActive()) return true;
4137 CurrentSource = L;
4138 return BitCastPrim<PT_Uint32>(S, CodePtr(), A0, A1, A2, A3);
4139}
4140bool EvalEmitter::emitBitCastPrimSint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4141 if (!isActive()) return true;
4142 CurrentSource = L;
4143 return BitCastPrim<PT_Sint32>(S, CodePtr(), A0, A1, A2, A3);
4144}
4145bool EvalEmitter::emitBitCastPrimUint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4146 if (!isActive()) return true;
4147 CurrentSource = L;
4148 return BitCastPrim<PT_Uint64>(S, CodePtr(), A0, A1, A2, A3);
4149}
4150bool EvalEmitter::emitBitCastPrimSint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4151 if (!isActive()) return true;
4152 CurrentSource = L;
4153 return BitCastPrim<PT_Sint64>(S, CodePtr(), A0, A1, A2, A3);
4154}
4155bool EvalEmitter::emitBitCastPrimIntAP( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4156 if (!isActive()) return true;
4157 CurrentSource = L;
4158 return BitCastPrim<PT_IntAP>(S, CodePtr(), A0, A1, A2, A3);
4159}
4160bool EvalEmitter::emitBitCastPrimIntAPS( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4161 if (!isActive()) return true;
4162 CurrentSource = L;
4163 return BitCastPrim<PT_IntAPS>(S, CodePtr(), A0, A1, A2, A3);
4164}
4165bool EvalEmitter::emitBitCastPrimBool( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4166 if (!isActive()) return true;
4167 CurrentSource = L;
4168 return BitCastPrim<PT_Bool>(S, CodePtr(), A0, A1, A2, A3);
4169}
4170bool EvalEmitter::emitBitCastPrimFloat( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4171 if (!isActive()) return true;
4172 CurrentSource = L;
4173 return BitCastPrim<PT_Float>(S, CodePtr(), A0, A1, A2, A3);
4174}
4175bool EvalEmitter::emitBitCastPrimPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4176 if (!isActive()) return true;
4177 CurrentSource = L;
4178 return BitCastPrim<PT_Ptr>(S, CodePtr(), A0, A1, A2, A3);
4179}
4180bool EvalEmitter::emitBitCastPrimMemberPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4181 if (!isActive()) return true;
4182 CurrentSource = L;
4183 return BitCastPrim<PT_MemberPtr>(S, CodePtr(), A0, A1, A2, A3);
4184}
4185#endif
4186#ifdef GET_OPCODE_NAMES
4187OP_BitOrSint8,
4188OP_BitOrUint8,
4189OP_BitOrSint16,
4190OP_BitOrUint16,
4191OP_BitOrSint32,
4192OP_BitOrUint32,
4193OP_BitOrSint64,
4194OP_BitOrUint64,
4195OP_BitOrIntAP,
4196OP_BitOrIntAPS,
4197OP_BitOrFixedPoint,
4198#endif
4199#ifdef GET_INTERPFN_LIST
4200&Interp_BitOrSint8,
4201&Interp_BitOrUint8,
4202&Interp_BitOrSint16,
4203&Interp_BitOrUint16,
4204&Interp_BitOrSint32,
4205&Interp_BitOrUint32,
4206&Interp_BitOrSint64,
4207&Interp_BitOrUint64,
4208&Interp_BitOrIntAP,
4209&Interp_BitOrIntAPS,
4210&Interp_BitOrFixedPoint,
4211#endif
4212#ifdef GET_INTERPFN_DISPATCHERS
4213PRESERVE_NONE
4214static bool Interp_BitOrSint8(InterpState &S) {
4215 if (!BitOr<PT_Sint8>(S)) return false;
4216#if USE_TAILCALLS
4217 MUSTTAIL return InterpNext(S);
4218#else
4219 return true;
4220#endif
4221}
4222PRESERVE_NONE
4223static bool Interp_BitOrUint8(InterpState &S) {
4224 if (!BitOr<PT_Uint8>(S)) return false;
4225#if USE_TAILCALLS
4226 MUSTTAIL return InterpNext(S);
4227#else
4228 return true;
4229#endif
4230}
4231PRESERVE_NONE
4232static bool Interp_BitOrSint16(InterpState &S) {
4233 if (!BitOr<PT_Sint16>(S)) return false;
4234#if USE_TAILCALLS
4235 MUSTTAIL return InterpNext(S);
4236#else
4237 return true;
4238#endif
4239}
4240PRESERVE_NONE
4241static bool Interp_BitOrUint16(InterpState &S) {
4242 if (!BitOr<PT_Uint16>(S)) return false;
4243#if USE_TAILCALLS
4244 MUSTTAIL return InterpNext(S);
4245#else
4246 return true;
4247#endif
4248}
4249PRESERVE_NONE
4250static bool Interp_BitOrSint32(InterpState &S) {
4251 if (!BitOr<PT_Sint32>(S)) return false;
4252#if USE_TAILCALLS
4253 MUSTTAIL return InterpNext(S);
4254#else
4255 return true;
4256#endif
4257}
4258PRESERVE_NONE
4259static bool Interp_BitOrUint32(InterpState &S) {
4260 if (!BitOr<PT_Uint32>(S)) return false;
4261#if USE_TAILCALLS
4262 MUSTTAIL return InterpNext(S);
4263#else
4264 return true;
4265#endif
4266}
4267PRESERVE_NONE
4268static bool Interp_BitOrSint64(InterpState &S) {
4269 if (!BitOr<PT_Sint64>(S)) return false;
4270#if USE_TAILCALLS
4271 MUSTTAIL return InterpNext(S);
4272#else
4273 return true;
4274#endif
4275}
4276PRESERVE_NONE
4277static bool Interp_BitOrUint64(InterpState &S) {
4278 if (!BitOr<PT_Uint64>(S)) return false;
4279#if USE_TAILCALLS
4280 MUSTTAIL return InterpNext(S);
4281#else
4282 return true;
4283#endif
4284}
4285PRESERVE_NONE
4286static bool Interp_BitOrIntAP(InterpState &S) {
4287 if (!BitOr<PT_IntAP>(S)) return false;
4288#if USE_TAILCALLS
4289 MUSTTAIL return InterpNext(S);
4290#else
4291 return true;
4292#endif
4293}
4294PRESERVE_NONE
4295static bool Interp_BitOrIntAPS(InterpState &S) {
4296 if (!BitOr<PT_IntAPS>(S)) return false;
4297#if USE_TAILCALLS
4298 MUSTTAIL return InterpNext(S);
4299#else
4300 return true;
4301#endif
4302}
4303PRESERVE_NONE
4304static bool Interp_BitOrFixedPoint(InterpState &S) {
4305 if (!BitOr<PT_FixedPoint>(S)) return false;
4306#if USE_TAILCALLS
4307 MUSTTAIL return InterpNext(S);
4308#else
4309 return true;
4310#endif
4311}
4312#endif
4313#ifdef GET_DISASM
4314case OP_BitOrSint8:
4315 Text.Op = PrintName("BitOrSint8");
4316 break;
4317case OP_BitOrUint8:
4318 Text.Op = PrintName("BitOrUint8");
4319 break;
4320case OP_BitOrSint16:
4321 Text.Op = PrintName("BitOrSint16");
4322 break;
4323case OP_BitOrUint16:
4324 Text.Op = PrintName("BitOrUint16");
4325 break;
4326case OP_BitOrSint32:
4327 Text.Op = PrintName("BitOrSint32");
4328 break;
4329case OP_BitOrUint32:
4330 Text.Op = PrintName("BitOrUint32");
4331 break;
4332case OP_BitOrSint64:
4333 Text.Op = PrintName("BitOrSint64");
4334 break;
4335case OP_BitOrUint64:
4336 Text.Op = PrintName("BitOrUint64");
4337 break;
4338case OP_BitOrIntAP:
4339 Text.Op = PrintName("BitOrIntAP");
4340 break;
4341case OP_BitOrIntAPS:
4342 Text.Op = PrintName("BitOrIntAPS");
4343 break;
4344case OP_BitOrFixedPoint:
4345 Text.Op = PrintName("BitOrFixedPoint");
4346 break;
4347#endif
4348#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4349bool emitBitOrSint8(SourceInfo);
4350bool emitBitOrUint8(SourceInfo);
4351bool emitBitOrSint16(SourceInfo);
4352bool emitBitOrUint16(SourceInfo);
4353bool emitBitOrSint32(SourceInfo);
4354bool emitBitOrUint32(SourceInfo);
4355bool emitBitOrSint64(SourceInfo);
4356bool emitBitOrUint64(SourceInfo);
4357bool emitBitOrIntAP(SourceInfo);
4358bool emitBitOrIntAPS(SourceInfo);
4359bool emitBitOrFixedPoint(SourceInfo);
4360#endif
4361#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4362[[nodiscard]] bool emitBitOr(PrimType, SourceInfo I);
4363#endif
4364#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
4365bool
4366#if defined(GET_EVAL_IMPL)
4367EvalEmitter
4368#else
4369ByteCodeEmitter
4370#endif
4371::emitBitOr(PrimType T0, SourceInfo I) {
4372 switch (T0) {
4373 case PT_Sint8:
4374 return emitBitOrSint8(I);
4375 case PT_Uint8:
4376 return emitBitOrUint8(I);
4377 case PT_Sint16:
4378 return emitBitOrSint16(I);
4379 case PT_Uint16:
4380 return emitBitOrUint16(I);
4381 case PT_Sint32:
4382 return emitBitOrSint32(I);
4383 case PT_Uint32:
4384 return emitBitOrUint32(I);
4385 case PT_Sint64:
4386 return emitBitOrSint64(I);
4387 case PT_Uint64:
4388 return emitBitOrUint64(I);
4389 case PT_IntAP:
4390 return emitBitOrIntAP(I);
4391 case PT_IntAPS:
4392 return emitBitOrIntAPS(I);
4393 case PT_FixedPoint:
4394 return emitBitOrFixedPoint(I);
4395 default: llvm_unreachable("invalid type: emitBitOr");
4396 }
4397 llvm_unreachable("invalid enum value");
4398}
4399#endif
4400#ifdef GET_LINK_IMPL
4401bool ByteCodeEmitter::emitBitOrSint8(SourceInfo L) {
4402 return emitOp<>(OP_BitOrSint8, L);
4403}
4404bool ByteCodeEmitter::emitBitOrUint8(SourceInfo L) {
4405 return emitOp<>(OP_BitOrUint8, L);
4406}
4407bool ByteCodeEmitter::emitBitOrSint16(SourceInfo L) {
4408 return emitOp<>(OP_BitOrSint16, L);
4409}
4410bool ByteCodeEmitter::emitBitOrUint16(SourceInfo L) {
4411 return emitOp<>(OP_BitOrUint16, L);
4412}
4413bool ByteCodeEmitter::emitBitOrSint32(SourceInfo L) {
4414 return emitOp<>(OP_BitOrSint32, L);
4415}
4416bool ByteCodeEmitter::emitBitOrUint32(SourceInfo L) {
4417 return emitOp<>(OP_BitOrUint32, L);
4418}
4419bool ByteCodeEmitter::emitBitOrSint64(SourceInfo L) {
4420 return emitOp<>(OP_BitOrSint64, L);
4421}
4422bool ByteCodeEmitter::emitBitOrUint64(SourceInfo L) {
4423 return emitOp<>(OP_BitOrUint64, L);
4424}
4425bool ByteCodeEmitter::emitBitOrIntAP(SourceInfo L) {
4426 return emitOp<>(OP_BitOrIntAP, L);
4427}
4428bool ByteCodeEmitter::emitBitOrIntAPS(SourceInfo L) {
4429 return emitOp<>(OP_BitOrIntAPS, L);
4430}
4431bool ByteCodeEmitter::emitBitOrFixedPoint(SourceInfo L) {
4432 return emitOp<>(OP_BitOrFixedPoint, L);
4433}
4434#endif
4435#ifdef GET_EVAL_IMPL
4436bool EvalEmitter::emitBitOrSint8(SourceInfo L) {
4437 if (!isActive()) return true;
4438 CurrentSource = L;
4439 return BitOr<PT_Sint8>(S);
4440}
4441bool EvalEmitter::emitBitOrUint8(SourceInfo L) {
4442 if (!isActive()) return true;
4443 CurrentSource = L;
4444 return BitOr<PT_Uint8>(S);
4445}
4446bool EvalEmitter::emitBitOrSint16(SourceInfo L) {
4447 if (!isActive()) return true;
4448 CurrentSource = L;
4449 return BitOr<PT_Sint16>(S);
4450}
4451bool EvalEmitter::emitBitOrUint16(SourceInfo L) {
4452 if (!isActive()) return true;
4453 CurrentSource = L;
4454 return BitOr<PT_Uint16>(S);
4455}
4456bool EvalEmitter::emitBitOrSint32(SourceInfo L) {
4457 if (!isActive()) return true;
4458 CurrentSource = L;
4459 return BitOr<PT_Sint32>(S);
4460}
4461bool EvalEmitter::emitBitOrUint32(SourceInfo L) {
4462 if (!isActive()) return true;
4463 CurrentSource = L;
4464 return BitOr<PT_Uint32>(S);
4465}
4466bool EvalEmitter::emitBitOrSint64(SourceInfo L) {
4467 if (!isActive()) return true;
4468 CurrentSource = L;
4469 return BitOr<PT_Sint64>(S);
4470}
4471bool EvalEmitter::emitBitOrUint64(SourceInfo L) {
4472 if (!isActive()) return true;
4473 CurrentSource = L;
4474 return BitOr<PT_Uint64>(S);
4475}
4476bool EvalEmitter::emitBitOrIntAP(SourceInfo L) {
4477 if (!isActive()) return true;
4478 CurrentSource = L;
4479 return BitOr<PT_IntAP>(S);
4480}
4481bool EvalEmitter::emitBitOrIntAPS(SourceInfo L) {
4482 if (!isActive()) return true;
4483 CurrentSource = L;
4484 return BitOr<PT_IntAPS>(S);
4485}
4486bool EvalEmitter::emitBitOrFixedPoint(SourceInfo L) {
4487 if (!isActive()) return true;
4488 CurrentSource = L;
4489 return BitOr<PT_FixedPoint>(S);
4490}
4491#endif
4492#ifdef GET_OPCODE_NAMES
4493OP_BitXorSint8,
4494OP_BitXorUint8,
4495OP_BitXorSint16,
4496OP_BitXorUint16,
4497OP_BitXorSint32,
4498OP_BitXorUint32,
4499OP_BitXorSint64,
4500OP_BitXorUint64,
4501OP_BitXorIntAP,
4502OP_BitXorIntAPS,
4503OP_BitXorFixedPoint,
4504#endif
4505#ifdef GET_INTERPFN_LIST
4506&Interp_BitXorSint8,
4507&Interp_BitXorUint8,
4508&Interp_BitXorSint16,
4509&Interp_BitXorUint16,
4510&Interp_BitXorSint32,
4511&Interp_BitXorUint32,
4512&Interp_BitXorSint64,
4513&Interp_BitXorUint64,
4514&Interp_BitXorIntAP,
4515&Interp_BitXorIntAPS,
4516&Interp_BitXorFixedPoint,
4517#endif
4518#ifdef GET_INTERPFN_DISPATCHERS
4519PRESERVE_NONE
4520static bool Interp_BitXorSint8(InterpState &S) {
4521 if (!BitXor<PT_Sint8>(S)) return false;
4522#if USE_TAILCALLS
4523 MUSTTAIL return InterpNext(S);
4524#else
4525 return true;
4526#endif
4527}
4528PRESERVE_NONE
4529static bool Interp_BitXorUint8(InterpState &S) {
4530 if (!BitXor<PT_Uint8>(S)) return false;
4531#if USE_TAILCALLS
4532 MUSTTAIL return InterpNext(S);
4533#else
4534 return true;
4535#endif
4536}
4537PRESERVE_NONE
4538static bool Interp_BitXorSint16(InterpState &S) {
4539 if (!BitXor<PT_Sint16>(S)) return false;
4540#if USE_TAILCALLS
4541 MUSTTAIL return InterpNext(S);
4542#else
4543 return true;
4544#endif
4545}
4546PRESERVE_NONE
4547static bool Interp_BitXorUint16(InterpState &S) {
4548 if (!BitXor<PT_Uint16>(S)) return false;
4549#if USE_TAILCALLS
4550 MUSTTAIL return InterpNext(S);
4551#else
4552 return true;
4553#endif
4554}
4555PRESERVE_NONE
4556static bool Interp_BitXorSint32(InterpState &S) {
4557 if (!BitXor<PT_Sint32>(S)) return false;
4558#if USE_TAILCALLS
4559 MUSTTAIL return InterpNext(S);
4560#else
4561 return true;
4562#endif
4563}
4564PRESERVE_NONE
4565static bool Interp_BitXorUint32(InterpState &S) {
4566 if (!BitXor<PT_Uint32>(S)) return false;
4567#if USE_TAILCALLS
4568 MUSTTAIL return InterpNext(S);
4569#else
4570 return true;
4571#endif
4572}
4573PRESERVE_NONE
4574static bool Interp_BitXorSint64(InterpState &S) {
4575 if (!BitXor<PT_Sint64>(S)) return false;
4576#if USE_TAILCALLS
4577 MUSTTAIL return InterpNext(S);
4578#else
4579 return true;
4580#endif
4581}
4582PRESERVE_NONE
4583static bool Interp_BitXorUint64(InterpState &S) {
4584 if (!BitXor<PT_Uint64>(S)) return false;
4585#if USE_TAILCALLS
4586 MUSTTAIL return InterpNext(S);
4587#else
4588 return true;
4589#endif
4590}
4591PRESERVE_NONE
4592static bool Interp_BitXorIntAP(InterpState &S) {
4593 if (!BitXor<PT_IntAP>(S)) return false;
4594#if USE_TAILCALLS
4595 MUSTTAIL return InterpNext(S);
4596#else
4597 return true;
4598#endif
4599}
4600PRESERVE_NONE
4601static bool Interp_BitXorIntAPS(InterpState &S) {
4602 if (!BitXor<PT_IntAPS>(S)) return false;
4603#if USE_TAILCALLS
4604 MUSTTAIL return InterpNext(S);
4605#else
4606 return true;
4607#endif
4608}
4609PRESERVE_NONE
4610static bool Interp_BitXorFixedPoint(InterpState &S) {
4611 if (!BitXor<PT_FixedPoint>(S)) return false;
4612#if USE_TAILCALLS
4613 MUSTTAIL return InterpNext(S);
4614#else
4615 return true;
4616#endif
4617}
4618#endif
4619#ifdef GET_DISASM
4620case OP_BitXorSint8:
4621 Text.Op = PrintName("BitXorSint8");
4622 break;
4623case OP_BitXorUint8:
4624 Text.Op = PrintName("BitXorUint8");
4625 break;
4626case OP_BitXorSint16:
4627 Text.Op = PrintName("BitXorSint16");
4628 break;
4629case OP_BitXorUint16:
4630 Text.Op = PrintName("BitXorUint16");
4631 break;
4632case OP_BitXorSint32:
4633 Text.Op = PrintName("BitXorSint32");
4634 break;
4635case OP_BitXorUint32:
4636 Text.Op = PrintName("BitXorUint32");
4637 break;
4638case OP_BitXorSint64:
4639 Text.Op = PrintName("BitXorSint64");
4640 break;
4641case OP_BitXorUint64:
4642 Text.Op = PrintName("BitXorUint64");
4643 break;
4644case OP_BitXorIntAP:
4645 Text.Op = PrintName("BitXorIntAP");
4646 break;
4647case OP_BitXorIntAPS:
4648 Text.Op = PrintName("BitXorIntAPS");
4649 break;
4650case OP_BitXorFixedPoint:
4651 Text.Op = PrintName("BitXorFixedPoint");
4652 break;
4653#endif
4654#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4655bool emitBitXorSint8(SourceInfo);
4656bool emitBitXorUint8(SourceInfo);
4657bool emitBitXorSint16(SourceInfo);
4658bool emitBitXorUint16(SourceInfo);
4659bool emitBitXorSint32(SourceInfo);
4660bool emitBitXorUint32(SourceInfo);
4661bool emitBitXorSint64(SourceInfo);
4662bool emitBitXorUint64(SourceInfo);
4663bool emitBitXorIntAP(SourceInfo);
4664bool emitBitXorIntAPS(SourceInfo);
4665bool emitBitXorFixedPoint(SourceInfo);
4666#endif
4667#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4668[[nodiscard]] bool emitBitXor(PrimType, SourceInfo I);
4669#endif
4670#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
4671bool
4672#if defined(GET_EVAL_IMPL)
4673EvalEmitter
4674#else
4675ByteCodeEmitter
4676#endif
4677::emitBitXor(PrimType T0, SourceInfo I) {
4678 switch (T0) {
4679 case PT_Sint8:
4680 return emitBitXorSint8(I);
4681 case PT_Uint8:
4682 return emitBitXorUint8(I);
4683 case PT_Sint16:
4684 return emitBitXorSint16(I);
4685 case PT_Uint16:
4686 return emitBitXorUint16(I);
4687 case PT_Sint32:
4688 return emitBitXorSint32(I);
4689 case PT_Uint32:
4690 return emitBitXorUint32(I);
4691 case PT_Sint64:
4692 return emitBitXorSint64(I);
4693 case PT_Uint64:
4694 return emitBitXorUint64(I);
4695 case PT_IntAP:
4696 return emitBitXorIntAP(I);
4697 case PT_IntAPS:
4698 return emitBitXorIntAPS(I);
4699 case PT_FixedPoint:
4700 return emitBitXorFixedPoint(I);
4701 default: llvm_unreachable("invalid type: emitBitXor");
4702 }
4703 llvm_unreachable("invalid enum value");
4704}
4705#endif
4706#ifdef GET_LINK_IMPL
4707bool ByteCodeEmitter::emitBitXorSint8(SourceInfo L) {
4708 return emitOp<>(OP_BitXorSint8, L);
4709}
4710bool ByteCodeEmitter::emitBitXorUint8(SourceInfo L) {
4711 return emitOp<>(OP_BitXorUint8, L);
4712}
4713bool ByteCodeEmitter::emitBitXorSint16(SourceInfo L) {
4714 return emitOp<>(OP_BitXorSint16, L);
4715}
4716bool ByteCodeEmitter::emitBitXorUint16(SourceInfo L) {
4717 return emitOp<>(OP_BitXorUint16, L);
4718}
4719bool ByteCodeEmitter::emitBitXorSint32(SourceInfo L) {
4720 return emitOp<>(OP_BitXorSint32, L);
4721}
4722bool ByteCodeEmitter::emitBitXorUint32(SourceInfo L) {
4723 return emitOp<>(OP_BitXorUint32, L);
4724}
4725bool ByteCodeEmitter::emitBitXorSint64(SourceInfo L) {
4726 return emitOp<>(OP_BitXorSint64, L);
4727}
4728bool ByteCodeEmitter::emitBitXorUint64(SourceInfo L) {
4729 return emitOp<>(OP_BitXorUint64, L);
4730}
4731bool ByteCodeEmitter::emitBitXorIntAP(SourceInfo L) {
4732 return emitOp<>(OP_BitXorIntAP, L);
4733}
4734bool ByteCodeEmitter::emitBitXorIntAPS(SourceInfo L) {
4735 return emitOp<>(OP_BitXorIntAPS, L);
4736}
4737bool ByteCodeEmitter::emitBitXorFixedPoint(SourceInfo L) {
4738 return emitOp<>(OP_BitXorFixedPoint, L);
4739}
4740#endif
4741#ifdef GET_EVAL_IMPL
4742bool EvalEmitter::emitBitXorSint8(SourceInfo L) {
4743 if (!isActive()) return true;
4744 CurrentSource = L;
4745 return BitXor<PT_Sint8>(S);
4746}
4747bool EvalEmitter::emitBitXorUint8(SourceInfo L) {
4748 if (!isActive()) return true;
4749 CurrentSource = L;
4750 return BitXor<PT_Uint8>(S);
4751}
4752bool EvalEmitter::emitBitXorSint16(SourceInfo L) {
4753 if (!isActive()) return true;
4754 CurrentSource = L;
4755 return BitXor<PT_Sint16>(S);
4756}
4757bool EvalEmitter::emitBitXorUint16(SourceInfo L) {
4758 if (!isActive()) return true;
4759 CurrentSource = L;
4760 return BitXor<PT_Uint16>(S);
4761}
4762bool EvalEmitter::emitBitXorSint32(SourceInfo L) {
4763 if (!isActive()) return true;
4764 CurrentSource = L;
4765 return BitXor<PT_Sint32>(S);
4766}
4767bool EvalEmitter::emitBitXorUint32(SourceInfo L) {
4768 if (!isActive()) return true;
4769 CurrentSource = L;
4770 return BitXor<PT_Uint32>(S);
4771}
4772bool EvalEmitter::emitBitXorSint64(SourceInfo L) {
4773 if (!isActive()) return true;
4774 CurrentSource = L;
4775 return BitXor<PT_Sint64>(S);
4776}
4777bool EvalEmitter::emitBitXorUint64(SourceInfo L) {
4778 if (!isActive()) return true;
4779 CurrentSource = L;
4780 return BitXor<PT_Uint64>(S);
4781}
4782bool EvalEmitter::emitBitXorIntAP(SourceInfo L) {
4783 if (!isActive()) return true;
4784 CurrentSource = L;
4785 return BitXor<PT_IntAP>(S);
4786}
4787bool EvalEmitter::emitBitXorIntAPS(SourceInfo L) {
4788 if (!isActive()) return true;
4789 CurrentSource = L;
4790 return BitXor<PT_IntAPS>(S);
4791}
4792bool EvalEmitter::emitBitXorFixedPoint(SourceInfo L) {
4793 if (!isActive()) return true;
4794 CurrentSource = L;
4795 return BitXor<PT_FixedPoint>(S);
4796}
4797#endif
4798#ifdef GET_OPCODE_NAMES
4799OP_CMP3Sint8,
4800OP_CMP3Uint8,
4801OP_CMP3Sint16,
4802OP_CMP3Uint16,
4803OP_CMP3Sint32,
4804OP_CMP3Uint32,
4805OP_CMP3Sint64,
4806OP_CMP3Uint64,
4807OP_CMP3IntAP,
4808OP_CMP3IntAPS,
4809OP_CMP3Bool,
4810OP_CMP3FixedPoint,
4811OP_CMP3Ptr,
4812OP_CMP3Float,
4813#endif
4814#ifdef GET_INTERPFN_LIST
4815&Interp_CMP3Sint8,
4816&Interp_CMP3Uint8,
4817&Interp_CMP3Sint16,
4818&Interp_CMP3Uint16,
4819&Interp_CMP3Sint32,
4820&Interp_CMP3Uint32,
4821&Interp_CMP3Sint64,
4822&Interp_CMP3Uint64,
4823&Interp_CMP3IntAP,
4824&Interp_CMP3IntAPS,
4825&Interp_CMP3Bool,
4826&Interp_CMP3FixedPoint,
4827&Interp_CMP3Ptr,
4828&Interp_CMP3Float,
4829#endif
4830#ifdef GET_INTERPFN_DISPATCHERS
4831PRESERVE_NONE
4832static bool Interp_CMP3Sint8(InterpState &S) {
4833 {
4834 CodePtr OpPC = S.PC;
4835 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4836 if (!CMP3<PT_Sint8>(S, OpPC, V0)) return false;
4837 }
4838#if USE_TAILCALLS
4839 MUSTTAIL return InterpNext(S);
4840#else
4841 return true;
4842#endif
4843}
4844PRESERVE_NONE
4845static bool Interp_CMP3Uint8(InterpState &S) {
4846 {
4847 CodePtr OpPC = S.PC;
4848 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4849 if (!CMP3<PT_Uint8>(S, OpPC, V0)) return false;
4850 }
4851#if USE_TAILCALLS
4852 MUSTTAIL return InterpNext(S);
4853#else
4854 return true;
4855#endif
4856}
4857PRESERVE_NONE
4858static bool Interp_CMP3Sint16(InterpState &S) {
4859 {
4860 CodePtr OpPC = S.PC;
4861 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4862 if (!CMP3<PT_Sint16>(S, OpPC, V0)) return false;
4863 }
4864#if USE_TAILCALLS
4865 MUSTTAIL return InterpNext(S);
4866#else
4867 return true;
4868#endif
4869}
4870PRESERVE_NONE
4871static bool Interp_CMP3Uint16(InterpState &S) {
4872 {
4873 CodePtr OpPC = S.PC;
4874 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4875 if (!CMP3<PT_Uint16>(S, OpPC, V0)) return false;
4876 }
4877#if USE_TAILCALLS
4878 MUSTTAIL return InterpNext(S);
4879#else
4880 return true;
4881#endif
4882}
4883PRESERVE_NONE
4884static bool Interp_CMP3Sint32(InterpState &S) {
4885 {
4886 CodePtr OpPC = S.PC;
4887 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4888 if (!CMP3<PT_Sint32>(S, OpPC, V0)) return false;
4889 }
4890#if USE_TAILCALLS
4891 MUSTTAIL return InterpNext(S);
4892#else
4893 return true;
4894#endif
4895}
4896PRESERVE_NONE
4897static bool Interp_CMP3Uint32(InterpState &S) {
4898 {
4899 CodePtr OpPC = S.PC;
4900 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4901 if (!CMP3<PT_Uint32>(S, OpPC, V0)) return false;
4902 }
4903#if USE_TAILCALLS
4904 MUSTTAIL return InterpNext(S);
4905#else
4906 return true;
4907#endif
4908}
4909PRESERVE_NONE
4910static bool Interp_CMP3Sint64(InterpState &S) {
4911 {
4912 CodePtr OpPC = S.PC;
4913 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4914 if (!CMP3<PT_Sint64>(S, OpPC, V0)) return false;
4915 }
4916#if USE_TAILCALLS
4917 MUSTTAIL return InterpNext(S);
4918#else
4919 return true;
4920#endif
4921}
4922PRESERVE_NONE
4923static bool Interp_CMP3Uint64(InterpState &S) {
4924 {
4925 CodePtr OpPC = S.PC;
4926 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4927 if (!CMP3<PT_Uint64>(S, OpPC, V0)) return false;
4928 }
4929#if USE_TAILCALLS
4930 MUSTTAIL return InterpNext(S);
4931#else
4932 return true;
4933#endif
4934}
4935PRESERVE_NONE
4936static bool Interp_CMP3IntAP(InterpState &S) {
4937 {
4938 CodePtr OpPC = S.PC;
4939 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4940 if (!CMP3<PT_IntAP>(S, OpPC, V0)) return false;
4941 }
4942#if USE_TAILCALLS
4943 MUSTTAIL return InterpNext(S);
4944#else
4945 return true;
4946#endif
4947}
4948PRESERVE_NONE
4949static bool Interp_CMP3IntAPS(InterpState &S) {
4950 {
4951 CodePtr OpPC = S.PC;
4952 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4953 if (!CMP3<PT_IntAPS>(S, OpPC, V0)) return false;
4954 }
4955#if USE_TAILCALLS
4956 MUSTTAIL return InterpNext(S);
4957#else
4958 return true;
4959#endif
4960}
4961PRESERVE_NONE
4962static bool Interp_CMP3Bool(InterpState &S) {
4963 {
4964 CodePtr OpPC = S.PC;
4965 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4966 if (!CMP3<PT_Bool>(S, OpPC, V0)) return false;
4967 }
4968#if USE_TAILCALLS
4969 MUSTTAIL return InterpNext(S);
4970#else
4971 return true;
4972#endif
4973}
4974PRESERVE_NONE
4975static bool Interp_CMP3FixedPoint(InterpState &S) {
4976 {
4977 CodePtr OpPC = S.PC;
4978 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4979 if (!CMP3<PT_FixedPoint>(S, OpPC, V0)) return false;
4980 }
4981#if USE_TAILCALLS
4982 MUSTTAIL return InterpNext(S);
4983#else
4984 return true;
4985#endif
4986}
4987PRESERVE_NONE
4988static bool Interp_CMP3Ptr(InterpState &S) {
4989 {
4990 CodePtr OpPC = S.PC;
4991 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
4992 if (!CMP3<PT_Ptr>(S, OpPC, V0)) return false;
4993 }
4994#if USE_TAILCALLS
4995 MUSTTAIL return InterpNext(S);
4996#else
4997 return true;
4998#endif
4999}
5000PRESERVE_NONE
5001static bool Interp_CMP3Float(InterpState &S) {
5002 {
5003 CodePtr OpPC = S.PC;
5004 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, S.PC);
5005 if (!CMP3<PT_Float>(S, OpPC, V0)) return false;
5006 }
5007#if USE_TAILCALLS
5008 MUSTTAIL return InterpNext(S);
5009#else
5010 return true;
5011#endif
5012}
5013#endif
5014#ifdef GET_DISASM
5015case OP_CMP3Sint8:
5016 Text.Op = PrintName("CMP3Sint8");
5017 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5018 break;
5019case OP_CMP3Uint8:
5020 Text.Op = PrintName("CMP3Uint8");
5021 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5022 break;
5023case OP_CMP3Sint16:
5024 Text.Op = PrintName("CMP3Sint16");
5025 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5026 break;
5027case OP_CMP3Uint16:
5028 Text.Op = PrintName("CMP3Uint16");
5029 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5030 break;
5031case OP_CMP3Sint32:
5032 Text.Op = PrintName("CMP3Sint32");
5033 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5034 break;
5035case OP_CMP3Uint32:
5036 Text.Op = PrintName("CMP3Uint32");
5037 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5038 break;
5039case OP_CMP3Sint64:
5040 Text.Op = PrintName("CMP3Sint64");
5041 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5042 break;
5043case OP_CMP3Uint64:
5044 Text.Op = PrintName("CMP3Uint64");
5045 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5046 break;
5047case OP_CMP3IntAP:
5048 Text.Op = PrintName("CMP3IntAP");
5049 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5050 break;
5051case OP_CMP3IntAPS:
5052 Text.Op = PrintName("CMP3IntAPS");
5053 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5054 break;
5055case OP_CMP3Bool:
5056 Text.Op = PrintName("CMP3Bool");
5057 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5058 break;
5059case OP_CMP3FixedPoint:
5060 Text.Op = PrintName("CMP3FixedPoint");
5061 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5062 break;
5063case OP_CMP3Ptr:
5064 Text.Op = PrintName("CMP3Ptr");
5065 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5066 break;
5067case OP_CMP3Float:
5068 Text.Op = PrintName("CMP3Float");
5069 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(PC));
5070 break;
5071#endif
5072#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5073bool emitCMP3Sint8( const ComparisonCategoryInfo * , SourceInfo);
5074bool emitCMP3Uint8( const ComparisonCategoryInfo * , SourceInfo);
5075bool emitCMP3Sint16( const ComparisonCategoryInfo * , SourceInfo);
5076bool emitCMP3Uint16( const ComparisonCategoryInfo * , SourceInfo);
5077bool emitCMP3Sint32( const ComparisonCategoryInfo * , SourceInfo);
5078bool emitCMP3Uint32( const ComparisonCategoryInfo * , SourceInfo);
5079bool emitCMP3Sint64( const ComparisonCategoryInfo * , SourceInfo);
5080bool emitCMP3Uint64( const ComparisonCategoryInfo * , SourceInfo);
5081bool emitCMP3IntAP( const ComparisonCategoryInfo * , SourceInfo);
5082bool emitCMP3IntAPS( const ComparisonCategoryInfo * , SourceInfo);
5083bool emitCMP3Bool( const ComparisonCategoryInfo * , SourceInfo);
5084bool emitCMP3FixedPoint( const ComparisonCategoryInfo * , SourceInfo);
5085bool emitCMP3Ptr( const ComparisonCategoryInfo * , SourceInfo);
5086bool emitCMP3Float( const ComparisonCategoryInfo * , SourceInfo);
5087#endif
5088#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5089[[nodiscard]] bool emitCMP3(PrimType, const ComparisonCategoryInfo *, SourceInfo I);
5090#endif
5091#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
5092bool
5093#if defined(GET_EVAL_IMPL)
5094EvalEmitter
5095#else
5096ByteCodeEmitter
5097#endif
5098::emitCMP3(PrimType T0, const ComparisonCategoryInfo * A0, SourceInfo I) {
5099 switch (T0) {
5100 case PT_Sint8:
5101 return emitCMP3Sint8(A0, I);
5102 case PT_Uint8:
5103 return emitCMP3Uint8(A0, I);
5104 case PT_Sint16:
5105 return emitCMP3Sint16(A0, I);
5106 case PT_Uint16:
5107 return emitCMP3Uint16(A0, I);
5108 case PT_Sint32:
5109 return emitCMP3Sint32(A0, I);
5110 case PT_Uint32:
5111 return emitCMP3Uint32(A0, I);
5112 case PT_Sint64:
5113 return emitCMP3Sint64(A0, I);
5114 case PT_Uint64:
5115 return emitCMP3Uint64(A0, I);
5116 case PT_IntAP:
5117 return emitCMP3IntAP(A0, I);
5118 case PT_IntAPS:
5119 return emitCMP3IntAPS(A0, I);
5120 case PT_Bool:
5121 return emitCMP3Bool(A0, I);
5122 case PT_FixedPoint:
5123 return emitCMP3FixedPoint(A0, I);
5124 case PT_Ptr:
5125 return emitCMP3Ptr(A0, I);
5126 case PT_Float:
5127 return emitCMP3Float(A0, I);
5128 default: llvm_unreachable("invalid type: emitCMP3");
5129 }
5130 llvm_unreachable("invalid enum value");
5131}
5132#endif
5133#ifdef GET_LINK_IMPL
5134bool ByteCodeEmitter::emitCMP3Sint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
5135 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint8, A0, L);
5136}
5137bool ByteCodeEmitter::emitCMP3Uint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
5138 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint8, A0, L);
5139}
5140bool ByteCodeEmitter::emitCMP3Sint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
5141 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint16, A0, L);
5142}
5143bool ByteCodeEmitter::emitCMP3Uint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
5144 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint16, A0, L);
5145}
5146bool ByteCodeEmitter::emitCMP3Sint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
5147 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint32, A0, L);
5148}
5149bool ByteCodeEmitter::emitCMP3Uint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
5150 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint32, A0, L);
5151}
5152bool ByteCodeEmitter::emitCMP3Sint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
5153 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint64, A0, L);
5154}
5155bool ByteCodeEmitter::emitCMP3Uint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
5156 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint64, A0, L);
5157}
5158bool ByteCodeEmitter::emitCMP3IntAP( const ComparisonCategoryInfo * A0, SourceInfo L) {
5159 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3IntAP, A0, L);
5160}
5161bool ByteCodeEmitter::emitCMP3IntAPS( const ComparisonCategoryInfo * A0, SourceInfo L) {
5162 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3IntAPS, A0, L);
5163}
5164bool ByteCodeEmitter::emitCMP3Bool( const ComparisonCategoryInfo * A0, SourceInfo L) {
5165 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Bool, A0, L);
5166}
5167bool ByteCodeEmitter::emitCMP3FixedPoint( const ComparisonCategoryInfo * A0, SourceInfo L) {
5168 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3FixedPoint, A0, L);
5169}
5170bool ByteCodeEmitter::emitCMP3Ptr( const ComparisonCategoryInfo * A0, SourceInfo L) {
5171 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Ptr, A0, L);
5172}
5173bool ByteCodeEmitter::emitCMP3Float( const ComparisonCategoryInfo * A0, SourceInfo L) {
5174 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Float, A0, L);
5175}
5176#endif
5177#ifdef GET_EVAL_IMPL
5178bool EvalEmitter::emitCMP3Sint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
5179 if (!isActive()) return true;
5180 CurrentSource = L;
5181 return CMP3<PT_Sint8>(S, CodePtr(), A0);
5182}
5183bool EvalEmitter::emitCMP3Uint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
5184 if (!isActive()) return true;
5185 CurrentSource = L;
5186 return CMP3<PT_Uint8>(S, CodePtr(), A0);
5187}
5188bool EvalEmitter::emitCMP3Sint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
5189 if (!isActive()) return true;
5190 CurrentSource = L;
5191 return CMP3<PT_Sint16>(S, CodePtr(), A0);
5192}
5193bool EvalEmitter::emitCMP3Uint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
5194 if (!isActive()) return true;
5195 CurrentSource = L;
5196 return CMP3<PT_Uint16>(S, CodePtr(), A0);
5197}
5198bool EvalEmitter::emitCMP3Sint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
5199 if (!isActive()) return true;
5200 CurrentSource = L;
5201 return CMP3<PT_Sint32>(S, CodePtr(), A0);
5202}
5203bool EvalEmitter::emitCMP3Uint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
5204 if (!isActive()) return true;
5205 CurrentSource = L;
5206 return CMP3<PT_Uint32>(S, CodePtr(), A0);
5207}
5208bool EvalEmitter::emitCMP3Sint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
5209 if (!isActive()) return true;
5210 CurrentSource = L;
5211 return CMP3<PT_Sint64>(S, CodePtr(), A0);
5212}
5213bool EvalEmitter::emitCMP3Uint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
5214 if (!isActive()) return true;
5215 CurrentSource = L;
5216 return CMP3<PT_Uint64>(S, CodePtr(), A0);
5217}
5218bool EvalEmitter::emitCMP3IntAP( const ComparisonCategoryInfo * A0, SourceInfo L) {
5219 if (!isActive()) return true;
5220 CurrentSource = L;
5221 return CMP3<PT_IntAP>(S, CodePtr(), A0);
5222}
5223bool EvalEmitter::emitCMP3IntAPS( const ComparisonCategoryInfo * A0, SourceInfo L) {
5224 if (!isActive()) return true;
5225 CurrentSource = L;
5226 return CMP3<PT_IntAPS>(S, CodePtr(), A0);
5227}
5228bool EvalEmitter::emitCMP3Bool( const ComparisonCategoryInfo * A0, SourceInfo L) {
5229 if (!isActive()) return true;
5230 CurrentSource = L;
5231 return CMP3<PT_Bool>(S, CodePtr(), A0);
5232}
5233bool EvalEmitter::emitCMP3FixedPoint( const ComparisonCategoryInfo * A0, SourceInfo L) {
5234 if (!isActive()) return true;
5235 CurrentSource = L;
5236 return CMP3<PT_FixedPoint>(S, CodePtr(), A0);
5237}
5238bool EvalEmitter::emitCMP3Ptr( const ComparisonCategoryInfo * A0, SourceInfo L) {
5239 if (!isActive()) return true;
5240 CurrentSource = L;
5241 return CMP3<PT_Ptr>(S, CodePtr(), A0);
5242}
5243bool EvalEmitter::emitCMP3Float( const ComparisonCategoryInfo * A0, SourceInfo L) {
5244 if (!isActive()) return true;
5245 CurrentSource = L;
5246 return CMP3<PT_Float>(S, CodePtr(), A0);
5247}
5248#endif
5249#ifdef GET_OPCODE_NAMES
5250OP_Call,
5251#endif
5252#ifdef GET_INTERPFN_LIST
5253&Interp_Call,
5254#endif
5255#ifdef GET_INTERPFN_DISPATCHERS
5256PRESERVE_NONE
5257static bool Interp_Call(InterpState &S) {
5258 {
5259 CodePtr OpPC = S.PC;
5260 const auto V0 = ReadArg<const Function *>(S, S.PC);
5261 const auto V1 = ReadArg<uint32_t>(S, S.PC);
5262 if (!Call(S, OpPC, V0, V1)) return false;
5263 }
5264#if USE_TAILCALLS
5265 MUSTTAIL return InterpNext(S);
5266#else
5267 return true;
5268#endif
5269}
5270#endif
5271#ifdef GET_DISASM
5272case OP_Call:
5273 Text.Op = PrintName("Call");
5274 Text.Args.push_back(printArg<const Function *>(PC));
5275 Text.Args.push_back(printArg<uint32_t>(PC));
5276 break;
5277#endif
5278#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5279bool emitCall( const Function * , uint32_t , SourceInfo);
5280#endif
5281#ifdef GET_LINK_IMPL
5282bool ByteCodeEmitter::emitCall( const Function * A0, uint32_t A1, SourceInfo L) {
5283 return emitOp<const Function *, uint32_t>(OP_Call, A0, A1, L);
5284}
5285#endif
5286#ifdef GET_EVAL_IMPL
5287bool EvalEmitter::emitCall( const Function * A0, uint32_t A1, SourceInfo L) {
5288 if (!isActive()) return true;
5289 CurrentSource = L;
5290 return Call(S, CodePtr(), A0, A1);
5291}
5292#endif
5293#ifdef GET_OPCODE_NAMES
5294OP_CallBI,
5295#endif
5296#ifdef GET_INTERPFN_LIST
5297&Interp_CallBI,
5298#endif
5299#ifdef GET_INTERPFN_DISPATCHERS
5300PRESERVE_NONE
5301static bool Interp_CallBI(InterpState &S) {
5302 {
5303 CodePtr OpPC = S.PC;
5304 const auto V0 = ReadArg<const CallExpr *>(S, S.PC);
5305 const auto V1 = ReadArg<uint32_t>(S, S.PC);
5306 if (!CallBI(S, OpPC, V0, V1)) return false;
5307 }
5308#if USE_TAILCALLS
5309 MUSTTAIL return InterpNext(S);
5310#else
5311 return true;
5312#endif
5313}
5314#endif
5315#ifdef GET_DISASM
5316case OP_CallBI:
5317 Text.Op = PrintName("CallBI");
5318 Text.Args.push_back(printArg<const CallExpr *>(PC));
5319 Text.Args.push_back(printArg<uint32_t>(PC));
5320 break;
5321#endif
5322#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5323bool emitCallBI( const CallExpr * , uint32_t , SourceInfo);
5324#endif
5325#ifdef GET_LINK_IMPL
5326bool ByteCodeEmitter::emitCallBI( const CallExpr * A0, uint32_t A1, SourceInfo L) {
5327 return emitOp<const CallExpr *, uint32_t>(OP_CallBI, A0, A1, L);
5328}
5329#endif
5330#ifdef GET_EVAL_IMPL
5331bool EvalEmitter::emitCallBI( const CallExpr * A0, uint32_t A1, SourceInfo L) {
5332 if (!isActive()) return true;
5333 CurrentSource = L;
5334 return CallBI(S, CodePtr(), A0, A1);
5335}
5336#endif
5337#ifdef GET_OPCODE_NAMES
5338OP_CallPtr,
5339#endif
5340#ifdef GET_INTERPFN_LIST
5341&Interp_CallPtr,
5342#endif
5343#ifdef GET_INTERPFN_DISPATCHERS
5344PRESERVE_NONE
5345static bool Interp_CallPtr(InterpState &S) {
5346 {
5347 CodePtr OpPC = S.PC;
5348 const auto V0 = ReadArg<uint32_t>(S, S.PC);
5349 const auto V1 = ReadArg<const CallExpr *>(S, S.PC);
5350 if (!CallPtr(S, OpPC, V0, V1)) return false;
5351 }
5352#if USE_TAILCALLS
5353 MUSTTAIL return InterpNext(S);
5354#else
5355 return true;
5356#endif
5357}
5358#endif
5359#ifdef GET_DISASM
5360case OP_CallPtr:
5361 Text.Op = PrintName("CallPtr");
5362 Text.Args.push_back(printArg<uint32_t>(PC));
5363 Text.Args.push_back(printArg<const CallExpr *>(PC));
5364 break;
5365#endif
5366#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5367bool emitCallPtr( uint32_t , const CallExpr * , SourceInfo);
5368#endif
5369#ifdef GET_LINK_IMPL
5370bool ByteCodeEmitter::emitCallPtr( uint32_t A0, const CallExpr * A1, SourceInfo L) {
5371 return emitOp<uint32_t, const CallExpr *>(OP_CallPtr, A0, A1, L);
5372}
5373#endif
5374#ifdef GET_EVAL_IMPL
5375bool EvalEmitter::emitCallPtr( uint32_t A0, const CallExpr * A1, SourceInfo L) {
5376 if (!isActive()) return true;
5377 CurrentSource = L;
5378 return CallPtr(S, CodePtr(), A0, A1);
5379}
5380#endif
5381#ifdef GET_OPCODE_NAMES
5382OP_CallVar,
5383#endif
5384#ifdef GET_INTERPFN_LIST
5385&Interp_CallVar,
5386#endif
5387#ifdef GET_INTERPFN_DISPATCHERS
5388PRESERVE_NONE
5389static bool Interp_CallVar(InterpState &S) {
5390 {
5391 CodePtr OpPC = S.PC;
5392 const auto V0 = ReadArg<const Function *>(S, S.PC);
5393 const auto V1 = ReadArg<uint32_t>(S, S.PC);
5394 if (!CallVar(S, OpPC, V0, V1)) return false;
5395 }
5396#if USE_TAILCALLS
5397 MUSTTAIL return InterpNext(S);
5398#else
5399 return true;
5400#endif
5401}
5402#endif
5403#ifdef GET_DISASM
5404case OP_CallVar:
5405 Text.Op = PrintName("CallVar");
5406 Text.Args.push_back(printArg<const Function *>(PC));
5407 Text.Args.push_back(printArg<uint32_t>(PC));
5408 break;
5409#endif
5410#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5411bool emitCallVar( const Function * , uint32_t , SourceInfo);
5412#endif
5413#ifdef GET_LINK_IMPL
5414bool ByteCodeEmitter::emitCallVar( const Function * A0, uint32_t A1, SourceInfo L) {
5415 return emitOp<const Function *, uint32_t>(OP_CallVar, A0, A1, L);
5416}
5417#endif
5418#ifdef GET_EVAL_IMPL
5419bool EvalEmitter::emitCallVar( const Function * A0, uint32_t A1, SourceInfo L) {
5420 if (!isActive()) return true;
5421 CurrentSource = L;
5422 return CallVar(S, CodePtr(), A0, A1);
5423}
5424#endif
5425#ifdef GET_OPCODE_NAMES
5426OP_CallVirt,
5427#endif
5428#ifdef GET_INTERPFN_LIST
5429&Interp_CallVirt,
5430#endif
5431#ifdef GET_INTERPFN_DISPATCHERS
5432PRESERVE_NONE
5433static bool Interp_CallVirt(InterpState &S) {
5434 {
5435 CodePtr OpPC = S.PC;
5436 const auto V0 = ReadArg<const Function *>(S, S.PC);
5437 const auto V1 = ReadArg<uint32_t>(S, S.PC);
5438 if (!CallVirt(S, OpPC, V0, V1)) return false;
5439 }
5440#if USE_TAILCALLS
5441 MUSTTAIL return InterpNext(S);
5442#else
5443 return true;
5444#endif
5445}
5446#endif
5447#ifdef GET_DISASM
5448case OP_CallVirt:
5449 Text.Op = PrintName("CallVirt");
5450 Text.Args.push_back(printArg<const Function *>(PC));
5451 Text.Args.push_back(printArg<uint32_t>(PC));
5452 break;
5453#endif
5454#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5455bool emitCallVirt( const Function * , uint32_t , SourceInfo);
5456#endif
5457#ifdef GET_LINK_IMPL
5458bool ByteCodeEmitter::emitCallVirt( const Function * A0, uint32_t A1, SourceInfo L) {
5459 return emitOp<const Function *, uint32_t>(OP_CallVirt, A0, A1, L);
5460}
5461#endif
5462#ifdef GET_EVAL_IMPL
5463bool EvalEmitter::emitCallVirt( const Function * A0, uint32_t A1, SourceInfo L) {
5464 if (!isActive()) return true;
5465 CurrentSource = L;
5466 return CallVirt(S, CodePtr(), A0, A1);
5467}
5468#endif
5469#ifdef GET_OPCODE_NAMES
5470OP_CastUint8Uint8,
5471OP_CastUint8Sint8,
5472OP_CastUint8Uint16,
5473OP_CastUint8Sint16,
5474OP_CastUint8Uint32,
5475OP_CastUint8Sint32,
5476OP_CastUint8Uint64,
5477OP_CastUint8Sint64,
5478OP_CastUint8Bool,
5479OP_CastSint8Uint8,
5480OP_CastSint8Sint8,
5481OP_CastSint8Uint16,
5482OP_CastSint8Sint16,
5483OP_CastSint8Uint32,
5484OP_CastSint8Sint32,
5485OP_CastSint8Uint64,
5486OP_CastSint8Sint64,
5487OP_CastSint8Bool,
5488OP_CastUint16Uint8,
5489OP_CastUint16Sint8,
5490OP_CastUint16Uint16,
5491OP_CastUint16Sint16,
5492OP_CastUint16Uint32,
5493OP_CastUint16Sint32,
5494OP_CastUint16Uint64,
5495OP_CastUint16Sint64,
5496OP_CastUint16Bool,
5497OP_CastSint16Uint8,
5498OP_CastSint16Sint8,
5499OP_CastSint16Uint16,
5500OP_CastSint16Sint16,
5501OP_CastSint16Uint32,
5502OP_CastSint16Sint32,
5503OP_CastSint16Uint64,
5504OP_CastSint16Sint64,
5505OP_CastSint16Bool,
5506OP_CastUint32Uint8,
5507OP_CastUint32Sint8,
5508OP_CastUint32Uint16,
5509OP_CastUint32Sint16,
5510OP_CastUint32Uint32,
5511OP_CastUint32Sint32,
5512OP_CastUint32Uint64,
5513OP_CastUint32Sint64,
5514OP_CastUint32Bool,
5515OP_CastSint32Uint8,
5516OP_CastSint32Sint8,
5517OP_CastSint32Uint16,
5518OP_CastSint32Sint16,
5519OP_CastSint32Uint32,
5520OP_CastSint32Sint32,
5521OP_CastSint32Uint64,
5522OP_CastSint32Sint64,
5523OP_CastSint32Bool,
5524OP_CastUint64Uint8,
5525OP_CastUint64Sint8,
5526OP_CastUint64Uint16,
5527OP_CastUint64Sint16,
5528OP_CastUint64Uint32,
5529OP_CastUint64Sint32,
5530OP_CastUint64Uint64,
5531OP_CastUint64Sint64,
5532OP_CastUint64Bool,
5533OP_CastSint64Uint8,
5534OP_CastSint64Sint8,
5535OP_CastSint64Uint16,
5536OP_CastSint64Sint16,
5537OP_CastSint64Uint32,
5538OP_CastSint64Sint32,
5539OP_CastSint64Uint64,
5540OP_CastSint64Sint64,
5541OP_CastSint64Bool,
5542OP_CastBoolUint8,
5543OP_CastBoolSint8,
5544OP_CastBoolUint16,
5545OP_CastBoolSint16,
5546OP_CastBoolUint32,
5547OP_CastBoolSint32,
5548OP_CastBoolUint64,
5549OP_CastBoolSint64,
5550OP_CastBoolBool,
5551OP_CastIntAPUint8,
5552OP_CastIntAPSint8,
5553OP_CastIntAPUint16,
5554OP_CastIntAPSint16,
5555OP_CastIntAPUint32,
5556OP_CastIntAPSint32,
5557OP_CastIntAPUint64,
5558OP_CastIntAPSint64,
5559OP_CastIntAPBool,
5560OP_CastIntAPSUint8,
5561OP_CastIntAPSSint8,
5562OP_CastIntAPSUint16,
5563OP_CastIntAPSSint16,
5564OP_CastIntAPSUint32,
5565OP_CastIntAPSSint32,
5566OP_CastIntAPSUint64,
5567OP_CastIntAPSSint64,
5568OP_CastIntAPSBool,
5569OP_CastFixedPointUint8,
5570OP_CastFixedPointSint8,
5571OP_CastFixedPointUint16,
5572OP_CastFixedPointSint16,
5573OP_CastFixedPointUint32,
5574OP_CastFixedPointSint32,
5575OP_CastFixedPointUint64,
5576OP_CastFixedPointSint64,
5577OP_CastFixedPointBool,
5578#endif
5579#ifdef GET_INTERPFN_LIST
5580&Interp_CastUint8Uint8,
5581&Interp_CastUint8Sint8,
5582&Interp_CastUint8Uint16,
5583&Interp_CastUint8Sint16,
5584&Interp_CastUint8Uint32,
5585&Interp_CastUint8Sint32,
5586&Interp_CastUint8Uint64,
5587&Interp_CastUint8Sint64,
5588&Interp_CastUint8Bool,
5589&Interp_CastSint8Uint8,
5590&Interp_CastSint8Sint8,
5591&Interp_CastSint8Uint16,
5592&Interp_CastSint8Sint16,
5593&Interp_CastSint8Uint32,
5594&Interp_CastSint8Sint32,
5595&Interp_CastSint8Uint64,
5596&Interp_CastSint8Sint64,
5597&Interp_CastSint8Bool,
5598&Interp_CastUint16Uint8,
5599&Interp_CastUint16Sint8,
5600&Interp_CastUint16Uint16,
5601&Interp_CastUint16Sint16,
5602&Interp_CastUint16Uint32,
5603&Interp_CastUint16Sint32,
5604&Interp_CastUint16Uint64,
5605&Interp_CastUint16Sint64,
5606&Interp_CastUint16Bool,
5607&Interp_CastSint16Uint8,
5608&Interp_CastSint16Sint8,
5609&Interp_CastSint16Uint16,
5610&Interp_CastSint16Sint16,
5611&Interp_CastSint16Uint32,
5612&Interp_CastSint16Sint32,
5613&Interp_CastSint16Uint64,
5614&Interp_CastSint16Sint64,
5615&Interp_CastSint16Bool,
5616&Interp_CastUint32Uint8,
5617&Interp_CastUint32Sint8,
5618&Interp_CastUint32Uint16,
5619&Interp_CastUint32Sint16,
5620&Interp_CastUint32Uint32,
5621&Interp_CastUint32Sint32,
5622&Interp_CastUint32Uint64,
5623&Interp_CastUint32Sint64,
5624&Interp_CastUint32Bool,
5625&Interp_CastSint32Uint8,
5626&Interp_CastSint32Sint8,
5627&Interp_CastSint32Uint16,
5628&Interp_CastSint32Sint16,
5629&Interp_CastSint32Uint32,
5630&Interp_CastSint32Sint32,
5631&Interp_CastSint32Uint64,
5632&Interp_CastSint32Sint64,
5633&Interp_CastSint32Bool,
5634&Interp_CastUint64Uint8,
5635&Interp_CastUint64Sint8,
5636&Interp_CastUint64Uint16,
5637&Interp_CastUint64Sint16,
5638&Interp_CastUint64Uint32,
5639&Interp_CastUint64Sint32,
5640&Interp_CastUint64Uint64,
5641&Interp_CastUint64Sint64,
5642&Interp_CastUint64Bool,
5643&Interp_CastSint64Uint8,
5644&Interp_CastSint64Sint8,
5645&Interp_CastSint64Uint16,
5646&Interp_CastSint64Sint16,
5647&Interp_CastSint64Uint32,
5648&Interp_CastSint64Sint32,
5649&Interp_CastSint64Uint64,
5650&Interp_CastSint64Sint64,
5651&Interp_CastSint64Bool,
5652&Interp_CastBoolUint8,
5653&Interp_CastBoolSint8,
5654&Interp_CastBoolUint16,
5655&Interp_CastBoolSint16,
5656&Interp_CastBoolUint32,
5657&Interp_CastBoolSint32,
5658&Interp_CastBoolUint64,
5659&Interp_CastBoolSint64,
5660&Interp_CastBoolBool,
5661&Interp_CastIntAPUint8,
5662&Interp_CastIntAPSint8,
5663&Interp_CastIntAPUint16,
5664&Interp_CastIntAPSint16,
5665&Interp_CastIntAPUint32,
5666&Interp_CastIntAPSint32,
5667&Interp_CastIntAPUint64,
5668&Interp_CastIntAPSint64,
5669&Interp_CastIntAPBool,
5670&Interp_CastIntAPSUint8,
5671&Interp_CastIntAPSSint8,
5672&Interp_CastIntAPSUint16,
5673&Interp_CastIntAPSSint16,
5674&Interp_CastIntAPSUint32,
5675&Interp_CastIntAPSSint32,
5676&Interp_CastIntAPSUint64,
5677&Interp_CastIntAPSSint64,
5678&Interp_CastIntAPSBool,
5679&Interp_CastFixedPointUint8,
5680&Interp_CastFixedPointSint8,
5681&Interp_CastFixedPointUint16,
5682&Interp_CastFixedPointSint16,
5683&Interp_CastFixedPointUint32,
5684&Interp_CastFixedPointSint32,
5685&Interp_CastFixedPointUint64,
5686&Interp_CastFixedPointSint64,
5687&Interp_CastFixedPointBool,
5688#endif
5689#ifdef GET_INTERPFN_DISPATCHERS
5690PRESERVE_NONE
5691static bool Interp_CastUint8Uint8(InterpState &S) {
5692 if (!Cast<PT_Uint8, PT_Uint8>(S, S.PC)) return false;
5693#if USE_TAILCALLS
5694 MUSTTAIL return InterpNext(S);
5695#else
5696 return true;
5697#endif
5698}
5699PRESERVE_NONE
5700static bool Interp_CastUint8Sint8(InterpState &S) {
5701 if (!Cast<PT_Uint8, PT_Sint8>(S, S.PC)) return false;
5702#if USE_TAILCALLS
5703 MUSTTAIL return InterpNext(S);
5704#else
5705 return true;
5706#endif
5707}
5708PRESERVE_NONE
5709static bool Interp_CastUint8Uint16(InterpState &S) {
5710 if (!Cast<PT_Uint8, PT_Uint16>(S, S.PC)) return false;
5711#if USE_TAILCALLS
5712 MUSTTAIL return InterpNext(S);
5713#else
5714 return true;
5715#endif
5716}
5717PRESERVE_NONE
5718static bool Interp_CastUint8Sint16(InterpState &S) {
5719 if (!Cast<PT_Uint8, PT_Sint16>(S, S.PC)) return false;
5720#if USE_TAILCALLS
5721 MUSTTAIL return InterpNext(S);
5722#else
5723 return true;
5724#endif
5725}
5726PRESERVE_NONE
5727static bool Interp_CastUint8Uint32(InterpState &S) {
5728 if (!Cast<PT_Uint8, PT_Uint32>(S, S.PC)) return false;
5729#if USE_TAILCALLS
5730 MUSTTAIL return InterpNext(S);
5731#else
5732 return true;
5733#endif
5734}
5735PRESERVE_NONE
5736static bool Interp_CastUint8Sint32(InterpState &S) {
5737 if (!Cast<PT_Uint8, PT_Sint32>(S, S.PC)) return false;
5738#if USE_TAILCALLS
5739 MUSTTAIL return InterpNext(S);
5740#else
5741 return true;
5742#endif
5743}
5744PRESERVE_NONE
5745static bool Interp_CastUint8Uint64(InterpState &S) {
5746 if (!Cast<PT_Uint8, PT_Uint64>(S, S.PC)) return false;
5747#if USE_TAILCALLS
5748 MUSTTAIL return InterpNext(S);
5749#else
5750 return true;
5751#endif
5752}
5753PRESERVE_NONE
5754static bool Interp_CastUint8Sint64(InterpState &S) {
5755 if (!Cast<PT_Uint8, PT_Sint64>(S, S.PC)) return false;
5756#if USE_TAILCALLS
5757 MUSTTAIL return InterpNext(S);
5758#else
5759 return true;
5760#endif
5761}
5762PRESERVE_NONE
5763static bool Interp_CastUint8Bool(InterpState &S) {
5764 if (!Cast<PT_Uint8, PT_Bool>(S, S.PC)) return false;
5765#if USE_TAILCALLS
5766 MUSTTAIL return InterpNext(S);
5767#else
5768 return true;
5769#endif
5770}
5771PRESERVE_NONE
5772static bool Interp_CastSint8Uint8(InterpState &S) {
5773 if (!Cast<PT_Sint8, PT_Uint8>(S, S.PC)) return false;
5774#if USE_TAILCALLS
5775 MUSTTAIL return InterpNext(S);
5776#else
5777 return true;
5778#endif
5779}
5780PRESERVE_NONE
5781static bool Interp_CastSint8Sint8(InterpState &S) {
5782 if (!Cast<PT_Sint8, PT_Sint8>(S, S.PC)) return false;
5783#if USE_TAILCALLS
5784 MUSTTAIL return InterpNext(S);
5785#else
5786 return true;
5787#endif
5788}
5789PRESERVE_NONE
5790static bool Interp_CastSint8Uint16(InterpState &S) {
5791 if (!Cast<PT_Sint8, PT_Uint16>(S, S.PC)) return false;
5792#if USE_TAILCALLS
5793 MUSTTAIL return InterpNext(S);
5794#else
5795 return true;
5796#endif
5797}
5798PRESERVE_NONE
5799static bool Interp_CastSint8Sint16(InterpState &S) {
5800 if (!Cast<PT_Sint8, PT_Sint16>(S, S.PC)) return false;
5801#if USE_TAILCALLS
5802 MUSTTAIL return InterpNext(S);
5803#else
5804 return true;
5805#endif
5806}
5807PRESERVE_NONE
5808static bool Interp_CastSint8Uint32(InterpState &S) {
5809 if (!Cast<PT_Sint8, PT_Uint32>(S, S.PC)) return false;
5810#if USE_TAILCALLS
5811 MUSTTAIL return InterpNext(S);
5812#else
5813 return true;
5814#endif
5815}
5816PRESERVE_NONE
5817static bool Interp_CastSint8Sint32(InterpState &S) {
5818 if (!Cast<PT_Sint8, PT_Sint32>(S, S.PC)) return false;
5819#if USE_TAILCALLS
5820 MUSTTAIL return InterpNext(S);
5821#else
5822 return true;
5823#endif
5824}
5825PRESERVE_NONE
5826static bool Interp_CastSint8Uint64(InterpState &S) {
5827 if (!Cast<PT_Sint8, PT_Uint64>(S, S.PC)) return false;
5828#if USE_TAILCALLS
5829 MUSTTAIL return InterpNext(S);
5830#else
5831 return true;
5832#endif
5833}
5834PRESERVE_NONE
5835static bool Interp_CastSint8Sint64(InterpState &S) {
5836 if (!Cast<PT_Sint8, PT_Sint64>(S, S.PC)) return false;
5837#if USE_TAILCALLS
5838 MUSTTAIL return InterpNext(S);
5839#else
5840 return true;
5841#endif
5842}
5843PRESERVE_NONE
5844static bool Interp_CastSint8Bool(InterpState &S) {
5845 if (!Cast<PT_Sint8, PT_Bool>(S, S.PC)) return false;
5846#if USE_TAILCALLS
5847 MUSTTAIL return InterpNext(S);
5848#else
5849 return true;
5850#endif
5851}
5852PRESERVE_NONE
5853static bool Interp_CastUint16Uint8(InterpState &S) {
5854 if (!Cast<PT_Uint16, PT_Uint8>(S, S.PC)) return false;
5855#if USE_TAILCALLS
5856 MUSTTAIL return InterpNext(S);
5857#else
5858 return true;
5859#endif
5860}
5861PRESERVE_NONE
5862static bool Interp_CastUint16Sint8(InterpState &S) {
5863 if (!Cast<PT_Uint16, PT_Sint8>(S, S.PC)) return false;
5864#if USE_TAILCALLS
5865 MUSTTAIL return InterpNext(S);
5866#else
5867 return true;
5868#endif
5869}
5870PRESERVE_NONE
5871static bool Interp_CastUint16Uint16(InterpState &S) {
5872 if (!Cast<PT_Uint16, PT_Uint16>(S, S.PC)) return false;
5873#if USE_TAILCALLS
5874 MUSTTAIL return InterpNext(S);
5875#else
5876 return true;
5877#endif
5878}
5879PRESERVE_NONE
5880static bool Interp_CastUint16Sint16(InterpState &S) {
5881 if (!Cast<PT_Uint16, PT_Sint16>(S, S.PC)) return false;
5882#if USE_TAILCALLS
5883 MUSTTAIL return InterpNext(S);
5884#else
5885 return true;
5886#endif
5887}
5888PRESERVE_NONE
5889static bool Interp_CastUint16Uint32(InterpState &S) {
5890 if (!Cast<PT_Uint16, PT_Uint32>(S, S.PC)) return false;
5891#if USE_TAILCALLS
5892 MUSTTAIL return InterpNext(S);
5893#else
5894 return true;
5895#endif
5896}
5897PRESERVE_NONE
5898static bool Interp_CastUint16Sint32(InterpState &S) {
5899 if (!Cast<PT_Uint16, PT_Sint32>(S, S.PC)) return false;
5900#if USE_TAILCALLS
5901 MUSTTAIL return InterpNext(S);
5902#else
5903 return true;
5904#endif
5905}
5906PRESERVE_NONE
5907static bool Interp_CastUint16Uint64(InterpState &S) {
5908 if (!Cast<PT_Uint16, PT_Uint64>(S, S.PC)) return false;
5909#if USE_TAILCALLS
5910 MUSTTAIL return InterpNext(S);
5911#else
5912 return true;
5913#endif
5914}
5915PRESERVE_NONE
5916static bool Interp_CastUint16Sint64(InterpState &S) {
5917 if (!Cast<PT_Uint16, PT_Sint64>(S, S.PC)) return false;
5918#if USE_TAILCALLS
5919 MUSTTAIL return InterpNext(S);
5920#else
5921 return true;
5922#endif
5923}
5924PRESERVE_NONE
5925static bool Interp_CastUint16Bool(InterpState &S) {
5926 if (!Cast<PT_Uint16, PT_Bool>(S, S.PC)) return false;
5927#if USE_TAILCALLS
5928 MUSTTAIL return InterpNext(S);
5929#else
5930 return true;
5931#endif
5932}
5933PRESERVE_NONE
5934static bool Interp_CastSint16Uint8(InterpState &S) {
5935 if (!Cast<PT_Sint16, PT_Uint8>(S, S.PC)) return false;
5936#if USE_TAILCALLS
5937 MUSTTAIL return InterpNext(S);
5938#else
5939 return true;
5940#endif
5941}
5942PRESERVE_NONE
5943static bool Interp_CastSint16Sint8(InterpState &S) {
5944 if (!Cast<PT_Sint16, PT_Sint8>(S, S.PC)) return false;
5945#if USE_TAILCALLS
5946 MUSTTAIL return InterpNext(S);
5947#else
5948 return true;
5949#endif
5950}
5951PRESERVE_NONE
5952static bool Interp_CastSint16Uint16(InterpState &S) {
5953 if (!Cast<PT_Sint16, PT_Uint16>(S, S.PC)) return false;
5954#if USE_TAILCALLS
5955 MUSTTAIL return InterpNext(S);
5956#else
5957 return true;
5958#endif
5959}
5960PRESERVE_NONE
5961static bool Interp_CastSint16Sint16(InterpState &S) {
5962 if (!Cast<PT_Sint16, PT_Sint16>(S, S.PC)) return false;
5963#if USE_TAILCALLS
5964 MUSTTAIL return InterpNext(S);
5965#else
5966 return true;
5967#endif
5968}
5969PRESERVE_NONE
5970static bool Interp_CastSint16Uint32(InterpState &S) {
5971 if (!Cast<PT_Sint16, PT_Uint32>(S, S.PC)) return false;
5972#if USE_TAILCALLS
5973 MUSTTAIL return InterpNext(S);
5974#else
5975 return true;
5976#endif
5977}
5978PRESERVE_NONE
5979static bool Interp_CastSint16Sint32(InterpState &S) {
5980 if (!Cast<PT_Sint16, PT_Sint32>(S, S.PC)) return false;
5981#if USE_TAILCALLS
5982 MUSTTAIL return InterpNext(S);
5983#else
5984 return true;
5985#endif
5986}
5987PRESERVE_NONE
5988static bool Interp_CastSint16Uint64(InterpState &S) {
5989 if (!Cast<PT_Sint16, PT_Uint64>(S, S.PC)) return false;
5990#if USE_TAILCALLS
5991 MUSTTAIL return InterpNext(S);
5992#else
5993 return true;
5994#endif
5995}
5996PRESERVE_NONE
5997static bool Interp_CastSint16Sint64(InterpState &S) {
5998 if (!Cast<PT_Sint16, PT_Sint64>(S, S.PC)) return false;
5999#if USE_TAILCALLS
6000 MUSTTAIL return InterpNext(S);
6001#else
6002 return true;
6003#endif
6004}
6005PRESERVE_NONE
6006static bool Interp_CastSint16Bool(InterpState &S) {
6007 if (!Cast<PT_Sint16, PT_Bool>(S, S.PC)) return false;
6008#if USE_TAILCALLS
6009 MUSTTAIL return InterpNext(S);
6010#else
6011 return true;
6012#endif
6013}
6014PRESERVE_NONE
6015static bool Interp_CastUint32Uint8(InterpState &S) {
6016 if (!Cast<PT_Uint32, PT_Uint8>(S, S.PC)) return false;
6017#if USE_TAILCALLS
6018 MUSTTAIL return InterpNext(S);
6019#else
6020 return true;
6021#endif
6022}
6023PRESERVE_NONE
6024static bool Interp_CastUint32Sint8(InterpState &S) {
6025 if (!Cast<PT_Uint32, PT_Sint8>(S, S.PC)) return false;
6026#if USE_TAILCALLS
6027 MUSTTAIL return InterpNext(S);
6028#else
6029 return true;
6030#endif
6031}
6032PRESERVE_NONE
6033static bool Interp_CastUint32Uint16(InterpState &S) {
6034 if (!Cast<PT_Uint32, PT_Uint16>(S, S.PC)) return false;
6035#if USE_TAILCALLS
6036 MUSTTAIL return InterpNext(S);
6037#else
6038 return true;
6039#endif
6040}
6041PRESERVE_NONE
6042static bool Interp_CastUint32Sint16(InterpState &S) {
6043 if (!Cast<PT_Uint32, PT_Sint16>(S, S.PC)) return false;
6044#if USE_TAILCALLS
6045 MUSTTAIL return InterpNext(S);
6046#else
6047 return true;
6048#endif
6049}
6050PRESERVE_NONE
6051static bool Interp_CastUint32Uint32(InterpState &S) {
6052 if (!Cast<PT_Uint32, PT_Uint32>(S, S.PC)) return false;
6053#if USE_TAILCALLS
6054 MUSTTAIL return InterpNext(S);
6055#else
6056 return true;
6057#endif
6058}
6059PRESERVE_NONE
6060static bool Interp_CastUint32Sint32(InterpState &S) {
6061 if (!Cast<PT_Uint32, PT_Sint32>(S, S.PC)) return false;
6062#if USE_TAILCALLS
6063 MUSTTAIL return InterpNext(S);
6064#else
6065 return true;
6066#endif
6067}
6068PRESERVE_NONE
6069static bool Interp_CastUint32Uint64(InterpState &S) {
6070 if (!Cast<PT_Uint32, PT_Uint64>(S, S.PC)) return false;
6071#if USE_TAILCALLS
6072 MUSTTAIL return InterpNext(S);
6073#else
6074 return true;
6075#endif
6076}
6077PRESERVE_NONE
6078static bool Interp_CastUint32Sint64(InterpState &S) {
6079 if (!Cast<PT_Uint32, PT_Sint64>(S, S.PC)) return false;
6080#if USE_TAILCALLS
6081 MUSTTAIL return InterpNext(S);
6082#else
6083 return true;
6084#endif
6085}
6086PRESERVE_NONE
6087static bool Interp_CastUint32Bool(InterpState &S) {
6088 if (!Cast<PT_Uint32, PT_Bool>(S, S.PC)) return false;
6089#if USE_TAILCALLS
6090 MUSTTAIL return InterpNext(S);
6091#else
6092 return true;
6093#endif
6094}
6095PRESERVE_NONE
6096static bool Interp_CastSint32Uint8(InterpState &S) {
6097 if (!Cast<PT_Sint32, PT_Uint8>(S, S.PC)) return false;
6098#if USE_TAILCALLS
6099 MUSTTAIL return InterpNext(S);
6100#else
6101 return true;
6102#endif
6103}
6104PRESERVE_NONE
6105static bool Interp_CastSint32Sint8(InterpState &S) {
6106 if (!Cast<PT_Sint32, PT_Sint8>(S, S.PC)) return false;
6107#if USE_TAILCALLS
6108 MUSTTAIL return InterpNext(S);
6109#else
6110 return true;
6111#endif
6112}
6113PRESERVE_NONE
6114static bool Interp_CastSint32Uint16(InterpState &S) {
6115 if (!Cast<PT_Sint32, PT_Uint16>(S, S.PC)) return false;
6116#if USE_TAILCALLS
6117 MUSTTAIL return InterpNext(S);
6118#else
6119 return true;
6120#endif
6121}
6122PRESERVE_NONE
6123static bool Interp_CastSint32Sint16(InterpState &S) {
6124 if (!Cast<PT_Sint32, PT_Sint16>(S, S.PC)) return false;
6125#if USE_TAILCALLS
6126 MUSTTAIL return InterpNext(S);
6127#else
6128 return true;
6129#endif
6130}
6131PRESERVE_NONE
6132static bool Interp_CastSint32Uint32(InterpState &S) {
6133 if (!Cast<PT_Sint32, PT_Uint32>(S, S.PC)) return false;
6134#if USE_TAILCALLS
6135 MUSTTAIL return InterpNext(S);
6136#else
6137 return true;
6138#endif
6139}
6140PRESERVE_NONE
6141static bool Interp_CastSint32Sint32(InterpState &S) {
6142 if (!Cast<PT_Sint32, PT_Sint32>(S, S.PC)) return false;
6143#if USE_TAILCALLS
6144 MUSTTAIL return InterpNext(S);
6145#else
6146 return true;
6147#endif
6148}
6149PRESERVE_NONE
6150static bool Interp_CastSint32Uint64(InterpState &S) {
6151 if (!Cast<PT_Sint32, PT_Uint64>(S, S.PC)) return false;
6152#if USE_TAILCALLS
6153 MUSTTAIL return InterpNext(S);
6154#else
6155 return true;
6156#endif
6157}
6158PRESERVE_NONE
6159static bool Interp_CastSint32Sint64(InterpState &S) {
6160 if (!Cast<PT_Sint32, PT_Sint64>(S, S.PC)) return false;
6161#if USE_TAILCALLS
6162 MUSTTAIL return InterpNext(S);
6163#else
6164 return true;
6165#endif
6166}
6167PRESERVE_NONE
6168static bool Interp_CastSint32Bool(InterpState &S) {
6169 if (!Cast<PT_Sint32, PT_Bool>(S, S.PC)) return false;
6170#if USE_TAILCALLS
6171 MUSTTAIL return InterpNext(S);
6172#else
6173 return true;
6174#endif
6175}
6176PRESERVE_NONE
6177static bool Interp_CastUint64Uint8(InterpState &S) {
6178 if (!Cast<PT_Uint64, PT_Uint8>(S, S.PC)) return false;
6179#if USE_TAILCALLS
6180 MUSTTAIL return InterpNext(S);
6181#else
6182 return true;
6183#endif
6184}
6185PRESERVE_NONE
6186static bool Interp_CastUint64Sint8(InterpState &S) {
6187 if (!Cast<PT_Uint64, PT_Sint8>(S, S.PC)) return false;
6188#if USE_TAILCALLS
6189 MUSTTAIL return InterpNext(S);
6190#else
6191 return true;
6192#endif
6193}
6194PRESERVE_NONE
6195static bool Interp_CastUint64Uint16(InterpState &S) {
6196 if (!Cast<PT_Uint64, PT_Uint16>(S, S.PC)) return false;
6197#if USE_TAILCALLS
6198 MUSTTAIL return InterpNext(S);
6199#else
6200 return true;
6201#endif
6202}
6203PRESERVE_NONE
6204static bool Interp_CastUint64Sint16(InterpState &S) {
6205 if (!Cast<PT_Uint64, PT_Sint16>(S, S.PC)) return false;
6206#if USE_TAILCALLS
6207 MUSTTAIL return InterpNext(S);
6208#else
6209 return true;
6210#endif
6211}
6212PRESERVE_NONE
6213static bool Interp_CastUint64Uint32(InterpState &S) {
6214 if (!Cast<PT_Uint64, PT_Uint32>(S, S.PC)) return false;
6215#if USE_TAILCALLS
6216 MUSTTAIL return InterpNext(S);
6217#else
6218 return true;
6219#endif
6220}
6221PRESERVE_NONE
6222static bool Interp_CastUint64Sint32(InterpState &S) {
6223 if (!Cast<PT_Uint64, PT_Sint32>(S, S.PC)) return false;
6224#if USE_TAILCALLS
6225 MUSTTAIL return InterpNext(S);
6226#else
6227 return true;
6228#endif
6229}
6230PRESERVE_NONE
6231static bool Interp_CastUint64Uint64(InterpState &S) {
6232 if (!Cast<PT_Uint64, PT_Uint64>(S, S.PC)) return false;
6233#if USE_TAILCALLS
6234 MUSTTAIL return InterpNext(S);
6235#else
6236 return true;
6237#endif
6238}
6239PRESERVE_NONE
6240static bool Interp_CastUint64Sint64(InterpState &S) {
6241 if (!Cast<PT_Uint64, PT_Sint64>(S, S.PC)) return false;
6242#if USE_TAILCALLS
6243 MUSTTAIL return InterpNext(S);
6244#else
6245 return true;
6246#endif
6247}
6248PRESERVE_NONE
6249static bool Interp_CastUint64Bool(InterpState &S) {
6250 if (!Cast<PT_Uint64, PT_Bool>(S, S.PC)) return false;
6251#if USE_TAILCALLS
6252 MUSTTAIL return InterpNext(S);
6253#else
6254 return true;
6255#endif
6256}
6257PRESERVE_NONE
6258static bool Interp_CastSint64Uint8(InterpState &S) {
6259 if (!Cast<PT_Sint64, PT_Uint8>(S, S.PC)) return false;
6260#if USE_TAILCALLS
6261 MUSTTAIL return InterpNext(S);
6262#else
6263 return true;
6264#endif
6265}
6266PRESERVE_NONE
6267static bool Interp_CastSint64Sint8(InterpState &S) {
6268 if (!Cast<PT_Sint64, PT_Sint8>(S, S.PC)) return false;
6269#if USE_TAILCALLS
6270 MUSTTAIL return InterpNext(S);
6271#else
6272 return true;
6273#endif
6274}
6275PRESERVE_NONE
6276static bool Interp_CastSint64Uint16(InterpState &S) {
6277 if (!Cast<PT_Sint64, PT_Uint16>(S, S.PC)) return false;
6278#if USE_TAILCALLS
6279 MUSTTAIL return InterpNext(S);
6280#else
6281 return true;
6282#endif
6283}
6284PRESERVE_NONE
6285static bool Interp_CastSint64Sint16(InterpState &S) {
6286 if (!Cast<PT_Sint64, PT_Sint16>(S, S.PC)) return false;
6287#if USE_TAILCALLS
6288 MUSTTAIL return InterpNext(S);
6289#else
6290 return true;
6291#endif
6292}
6293PRESERVE_NONE
6294static bool Interp_CastSint64Uint32(InterpState &S) {
6295 if (!Cast<PT_Sint64, PT_Uint32>(S, S.PC)) return false;
6296#if USE_TAILCALLS
6297 MUSTTAIL return InterpNext(S);
6298#else
6299 return true;
6300#endif
6301}
6302PRESERVE_NONE
6303static bool Interp_CastSint64Sint32(InterpState &S) {
6304 if (!Cast<PT_Sint64, PT_Sint32>(S, S.PC)) return false;
6305#if USE_TAILCALLS
6306 MUSTTAIL return InterpNext(S);
6307#else
6308 return true;
6309#endif
6310}
6311PRESERVE_NONE
6312static bool Interp_CastSint64Uint64(InterpState &S) {
6313 if (!Cast<PT_Sint64, PT_Uint64>(S, S.PC)) return false;
6314#if USE_TAILCALLS
6315 MUSTTAIL return InterpNext(S);
6316#else
6317 return true;
6318#endif
6319}
6320PRESERVE_NONE
6321static bool Interp_CastSint64Sint64(InterpState &S) {
6322 if (!Cast<PT_Sint64, PT_Sint64>(S, S.PC)) return false;
6323#if USE_TAILCALLS
6324 MUSTTAIL return InterpNext(S);
6325#else
6326 return true;
6327#endif
6328}
6329PRESERVE_NONE
6330static bool Interp_CastSint64Bool(InterpState &S) {
6331 if (!Cast<PT_Sint64, PT_Bool>(S, S.PC)) return false;
6332#if USE_TAILCALLS
6333 MUSTTAIL return InterpNext(S);
6334#else
6335 return true;
6336#endif
6337}
6338PRESERVE_NONE
6339static bool Interp_CastBoolUint8(InterpState &S) {
6340 if (!Cast<PT_Bool, PT_Uint8>(S, S.PC)) return false;
6341#if USE_TAILCALLS
6342 MUSTTAIL return InterpNext(S);
6343#else
6344 return true;
6345#endif
6346}
6347PRESERVE_NONE
6348static bool Interp_CastBoolSint8(InterpState &S) {
6349 if (!Cast<PT_Bool, PT_Sint8>(S, S.PC)) return false;
6350#if USE_TAILCALLS
6351 MUSTTAIL return InterpNext(S);
6352#else
6353 return true;
6354#endif
6355}
6356PRESERVE_NONE
6357static bool Interp_CastBoolUint16(InterpState &S) {
6358 if (!Cast<PT_Bool, PT_Uint16>(S, S.PC)) return false;
6359#if USE_TAILCALLS
6360 MUSTTAIL return InterpNext(S);
6361#else
6362 return true;
6363#endif
6364}
6365PRESERVE_NONE
6366static bool Interp_CastBoolSint16(InterpState &S) {
6367 if (!Cast<PT_Bool, PT_Sint16>(S, S.PC)) return false;
6368#if USE_TAILCALLS
6369 MUSTTAIL return InterpNext(S);
6370#else
6371 return true;
6372#endif
6373}
6374PRESERVE_NONE
6375static bool Interp_CastBoolUint32(InterpState &S) {
6376 if (!Cast<PT_Bool, PT_Uint32>(S, S.PC)) return false;
6377#if USE_TAILCALLS
6378 MUSTTAIL return InterpNext(S);
6379#else
6380 return true;
6381#endif
6382}
6383PRESERVE_NONE
6384static bool Interp_CastBoolSint32(InterpState &S) {
6385 if (!Cast<PT_Bool, PT_Sint32>(S, S.PC)) return false;
6386#if USE_TAILCALLS
6387 MUSTTAIL return InterpNext(S);
6388#else
6389 return true;
6390#endif
6391}
6392PRESERVE_NONE
6393static bool Interp_CastBoolUint64(InterpState &S) {
6394 if (!Cast<PT_Bool, PT_Uint64>(S, S.PC)) return false;
6395#if USE_TAILCALLS
6396 MUSTTAIL return InterpNext(S);
6397#else
6398 return true;
6399#endif
6400}
6401PRESERVE_NONE
6402static bool Interp_CastBoolSint64(InterpState &S) {
6403 if (!Cast<PT_Bool, PT_Sint64>(S, S.PC)) return false;
6404#if USE_TAILCALLS
6405 MUSTTAIL return InterpNext(S);
6406#else
6407 return true;
6408#endif
6409}
6410PRESERVE_NONE
6411static bool Interp_CastBoolBool(InterpState &S) {
6412 if (!Cast<PT_Bool, PT_Bool>(S, S.PC)) return false;
6413#if USE_TAILCALLS
6414 MUSTTAIL return InterpNext(S);
6415#else
6416 return true;
6417#endif
6418}
6419PRESERVE_NONE
6420static bool Interp_CastIntAPUint8(InterpState &S) {
6421 if (!Cast<PT_IntAP, PT_Uint8>(S, S.PC)) return false;
6422#if USE_TAILCALLS
6423 MUSTTAIL return InterpNext(S);
6424#else
6425 return true;
6426#endif
6427}
6428PRESERVE_NONE
6429static bool Interp_CastIntAPSint8(InterpState &S) {
6430 if (!Cast<PT_IntAP, PT_Sint8>(S, S.PC)) return false;
6431#if USE_TAILCALLS
6432 MUSTTAIL return InterpNext(S);
6433#else
6434 return true;
6435#endif
6436}
6437PRESERVE_NONE
6438static bool Interp_CastIntAPUint16(InterpState &S) {
6439 if (!Cast<PT_IntAP, PT_Uint16>(S, S.PC)) return false;
6440#if USE_TAILCALLS
6441 MUSTTAIL return InterpNext(S);
6442#else
6443 return true;
6444#endif
6445}
6446PRESERVE_NONE
6447static bool Interp_CastIntAPSint16(InterpState &S) {
6448 if (!Cast<PT_IntAP, PT_Sint16>(S, S.PC)) return false;
6449#if USE_TAILCALLS
6450 MUSTTAIL return InterpNext(S);
6451#else
6452 return true;
6453#endif
6454}
6455PRESERVE_NONE
6456static bool Interp_CastIntAPUint32(InterpState &S) {
6457 if (!Cast<PT_IntAP, PT_Uint32>(S, S.PC)) return false;
6458#if USE_TAILCALLS
6459 MUSTTAIL return InterpNext(S);
6460#else
6461 return true;
6462#endif
6463}
6464PRESERVE_NONE
6465static bool Interp_CastIntAPSint32(InterpState &S) {
6466 if (!Cast<PT_IntAP, PT_Sint32>(S, S.PC)) return false;
6467#if USE_TAILCALLS
6468 MUSTTAIL return InterpNext(S);
6469#else
6470 return true;
6471#endif
6472}
6473PRESERVE_NONE
6474static bool Interp_CastIntAPUint64(InterpState &S) {
6475 if (!Cast<PT_IntAP, PT_Uint64>(S, S.PC)) return false;
6476#if USE_TAILCALLS
6477 MUSTTAIL return InterpNext(S);
6478#else
6479 return true;
6480#endif
6481}
6482PRESERVE_NONE
6483static bool Interp_CastIntAPSint64(InterpState &S) {
6484 if (!Cast<PT_IntAP, PT_Sint64>(S, S.PC)) return false;
6485#if USE_TAILCALLS
6486 MUSTTAIL return InterpNext(S);
6487#else
6488 return true;
6489#endif
6490}
6491PRESERVE_NONE
6492static bool Interp_CastIntAPBool(InterpState &S) {
6493 if (!Cast<PT_IntAP, PT_Bool>(S, S.PC)) return false;
6494#if USE_TAILCALLS
6495 MUSTTAIL return InterpNext(S);
6496#else
6497 return true;
6498#endif
6499}
6500PRESERVE_NONE
6501static bool Interp_CastIntAPSUint8(InterpState &S) {
6502 if (!Cast<PT_IntAPS, PT_Uint8>(S, S.PC)) return false;
6503#if USE_TAILCALLS
6504 MUSTTAIL return InterpNext(S);
6505#else
6506 return true;
6507#endif
6508}
6509PRESERVE_NONE
6510static bool Interp_CastIntAPSSint8(InterpState &S) {
6511 if (!Cast<PT_IntAPS, PT_Sint8>(S, S.PC)) return false;
6512#if USE_TAILCALLS
6513 MUSTTAIL return InterpNext(S);
6514#else
6515 return true;
6516#endif
6517}
6518PRESERVE_NONE
6519static bool Interp_CastIntAPSUint16(InterpState &S) {
6520 if (!Cast<PT_IntAPS, PT_Uint16>(S, S.PC)) return false;
6521#if USE_TAILCALLS
6522 MUSTTAIL return InterpNext(S);
6523#else
6524 return true;
6525#endif
6526}
6527PRESERVE_NONE
6528static bool Interp_CastIntAPSSint16(InterpState &S) {
6529 if (!Cast<PT_IntAPS, PT_Sint16>(S, S.PC)) return false;
6530#if USE_TAILCALLS
6531 MUSTTAIL return InterpNext(S);
6532#else
6533 return true;
6534#endif
6535}
6536PRESERVE_NONE
6537static bool Interp_CastIntAPSUint32(InterpState &S) {
6538 if (!Cast<PT_IntAPS, PT_Uint32>(S, S.PC)) return false;
6539#if USE_TAILCALLS
6540 MUSTTAIL return InterpNext(S);
6541#else
6542 return true;
6543#endif
6544}
6545PRESERVE_NONE
6546static bool Interp_CastIntAPSSint32(InterpState &S) {
6547 if (!Cast<PT_IntAPS, PT_Sint32>(S, S.PC)) return false;
6548#if USE_TAILCALLS
6549 MUSTTAIL return InterpNext(S);
6550#else
6551 return true;
6552#endif
6553}
6554PRESERVE_NONE
6555static bool Interp_CastIntAPSUint64(InterpState &S) {
6556 if (!Cast<PT_IntAPS, PT_Uint64>(S, S.PC)) return false;
6557#if USE_TAILCALLS
6558 MUSTTAIL return InterpNext(S);
6559#else
6560 return true;
6561#endif
6562}
6563PRESERVE_NONE
6564static bool Interp_CastIntAPSSint64(InterpState &S) {
6565 if (!Cast<PT_IntAPS, PT_Sint64>(S, S.PC)) return false;
6566#if USE_TAILCALLS
6567 MUSTTAIL return InterpNext(S);
6568#else
6569 return true;
6570#endif
6571}
6572PRESERVE_NONE
6573static bool Interp_CastIntAPSBool(InterpState &S) {
6574 if (!Cast<PT_IntAPS, PT_Bool>(S, S.PC)) return false;
6575#if USE_TAILCALLS
6576 MUSTTAIL return InterpNext(S);
6577#else
6578 return true;
6579#endif
6580}
6581PRESERVE_NONE
6582static bool Interp_CastFixedPointUint8(InterpState &S) {
6583 if (!Cast<PT_FixedPoint, PT_Uint8>(S, S.PC)) return false;
6584#if USE_TAILCALLS
6585 MUSTTAIL return InterpNext(S);
6586#else
6587 return true;
6588#endif
6589}
6590PRESERVE_NONE
6591static bool Interp_CastFixedPointSint8(InterpState &S) {
6592 if (!Cast<PT_FixedPoint, PT_Sint8>(S, S.PC)) return false;
6593#if USE_TAILCALLS
6594 MUSTTAIL return InterpNext(S);
6595#else
6596 return true;
6597#endif
6598}
6599PRESERVE_NONE
6600static bool Interp_CastFixedPointUint16(InterpState &S) {
6601 if (!Cast<PT_FixedPoint, PT_Uint16>(S, S.PC)) return false;
6602#if USE_TAILCALLS
6603 MUSTTAIL return InterpNext(S);
6604#else
6605 return true;
6606#endif
6607}
6608PRESERVE_NONE
6609static bool Interp_CastFixedPointSint16(InterpState &S) {
6610 if (!Cast<PT_FixedPoint, PT_Sint16>(S, S.PC)) return false;
6611#if USE_TAILCALLS
6612 MUSTTAIL return InterpNext(S);
6613#else
6614 return true;
6615#endif
6616}
6617PRESERVE_NONE
6618static bool Interp_CastFixedPointUint32(InterpState &S) {
6619 if (!Cast<PT_FixedPoint, PT_Uint32>(S, S.PC)) return false;
6620#if USE_TAILCALLS
6621 MUSTTAIL return InterpNext(S);
6622#else
6623 return true;
6624#endif
6625}
6626PRESERVE_NONE
6627static bool Interp_CastFixedPointSint32(InterpState &S) {
6628 if (!Cast<PT_FixedPoint, PT_Sint32>(S, S.PC)) return false;
6629#if USE_TAILCALLS
6630 MUSTTAIL return InterpNext(S);
6631#else
6632 return true;
6633#endif
6634}
6635PRESERVE_NONE
6636static bool Interp_CastFixedPointUint64(InterpState &S) {
6637 if (!Cast<PT_FixedPoint, PT_Uint64>(S, S.PC)) return false;
6638#if USE_TAILCALLS
6639 MUSTTAIL return InterpNext(S);
6640#else
6641 return true;
6642#endif
6643}
6644PRESERVE_NONE
6645static bool Interp_CastFixedPointSint64(InterpState &S) {
6646 if (!Cast<PT_FixedPoint, PT_Sint64>(S, S.PC)) return false;
6647#if USE_TAILCALLS
6648 MUSTTAIL return InterpNext(S);
6649#else
6650 return true;
6651#endif
6652}
6653PRESERVE_NONE
6654static bool Interp_CastFixedPointBool(InterpState &S) {
6655 if (!Cast<PT_FixedPoint, PT_Bool>(S, S.PC)) return false;
6656#if USE_TAILCALLS
6657 MUSTTAIL return InterpNext(S);
6658#else
6659 return true;
6660#endif
6661}
6662#endif
6663#ifdef GET_DISASM
6664case OP_CastUint8Uint8:
6665 Text.Op = PrintName("CastUint8Uint8");
6666 break;
6667case OP_CastUint8Sint8:
6668 Text.Op = PrintName("CastUint8Sint8");
6669 break;
6670case OP_CastUint8Uint16:
6671 Text.Op = PrintName("CastUint8Uint16");
6672 break;
6673case OP_CastUint8Sint16:
6674 Text.Op = PrintName("CastUint8Sint16");
6675 break;
6676case OP_CastUint8Uint32:
6677 Text.Op = PrintName("CastUint8Uint32");
6678 break;
6679case OP_CastUint8Sint32:
6680 Text.Op = PrintName("CastUint8Sint32");
6681 break;
6682case OP_CastUint8Uint64:
6683 Text.Op = PrintName("CastUint8Uint64");
6684 break;
6685case OP_CastUint8Sint64:
6686 Text.Op = PrintName("CastUint8Sint64");
6687 break;
6688case OP_CastUint8Bool:
6689 Text.Op = PrintName("CastUint8Bool");
6690 break;
6691case OP_CastSint8Uint8:
6692 Text.Op = PrintName("CastSint8Uint8");
6693 break;
6694case OP_CastSint8Sint8:
6695 Text.Op = PrintName("CastSint8Sint8");
6696 break;
6697case OP_CastSint8Uint16:
6698 Text.Op = PrintName("CastSint8Uint16");
6699 break;
6700case OP_CastSint8Sint16:
6701 Text.Op = PrintName("CastSint8Sint16");
6702 break;
6703case OP_CastSint8Uint32:
6704 Text.Op = PrintName("CastSint8Uint32");
6705 break;
6706case OP_CastSint8Sint32:
6707 Text.Op = PrintName("CastSint8Sint32");
6708 break;
6709case OP_CastSint8Uint64:
6710 Text.Op = PrintName("CastSint8Uint64");
6711 break;
6712case OP_CastSint8Sint64:
6713 Text.Op = PrintName("CastSint8Sint64");
6714 break;
6715case OP_CastSint8Bool:
6716 Text.Op = PrintName("CastSint8Bool");
6717 break;
6718case OP_CastUint16Uint8:
6719 Text.Op = PrintName("CastUint16Uint8");
6720 break;
6721case OP_CastUint16Sint8:
6722 Text.Op = PrintName("CastUint16Sint8");
6723 break;
6724case OP_CastUint16Uint16:
6725 Text.Op = PrintName("CastUint16Uint16");
6726 break;
6727case OP_CastUint16Sint16:
6728 Text.Op = PrintName("CastUint16Sint16");
6729 break;
6730case OP_CastUint16Uint32:
6731 Text.Op = PrintName("CastUint16Uint32");
6732 break;
6733case OP_CastUint16Sint32:
6734 Text.Op = PrintName("CastUint16Sint32");
6735 break;
6736case OP_CastUint16Uint64:
6737 Text.Op = PrintName("CastUint16Uint64");
6738 break;
6739case OP_CastUint16Sint64:
6740 Text.Op = PrintName("CastUint16Sint64");
6741 break;
6742case OP_CastUint16Bool:
6743 Text.Op = PrintName("CastUint16Bool");
6744 break;
6745case OP_CastSint16Uint8:
6746 Text.Op = PrintName("CastSint16Uint8");
6747 break;
6748case OP_CastSint16Sint8:
6749 Text.Op = PrintName("CastSint16Sint8");
6750 break;
6751case OP_CastSint16Uint16:
6752 Text.Op = PrintName("CastSint16Uint16");
6753 break;
6754case OP_CastSint16Sint16:
6755 Text.Op = PrintName("CastSint16Sint16");
6756 break;
6757case OP_CastSint16Uint32:
6758 Text.Op = PrintName("CastSint16Uint32");
6759 break;
6760case OP_CastSint16Sint32:
6761 Text.Op = PrintName("CastSint16Sint32");
6762 break;
6763case OP_CastSint16Uint64:
6764 Text.Op = PrintName("CastSint16Uint64");
6765 break;
6766case OP_CastSint16Sint64:
6767 Text.Op = PrintName("CastSint16Sint64");
6768 break;
6769case OP_CastSint16Bool:
6770 Text.Op = PrintName("CastSint16Bool");
6771 break;
6772case OP_CastUint32Uint8:
6773 Text.Op = PrintName("CastUint32Uint8");
6774 break;
6775case OP_CastUint32Sint8:
6776 Text.Op = PrintName("CastUint32Sint8");
6777 break;
6778case OP_CastUint32Uint16:
6779 Text.Op = PrintName("CastUint32Uint16");
6780 break;
6781case OP_CastUint32Sint16:
6782 Text.Op = PrintName("CastUint32Sint16");
6783 break;
6784case OP_CastUint32Uint32:
6785 Text.Op = PrintName("CastUint32Uint32");
6786 break;
6787case OP_CastUint32Sint32:
6788 Text.Op = PrintName("CastUint32Sint32");
6789 break;
6790case OP_CastUint32Uint64:
6791 Text.Op = PrintName("CastUint32Uint64");
6792 break;
6793case OP_CastUint32Sint64:
6794 Text.Op = PrintName("CastUint32Sint64");
6795 break;
6796case OP_CastUint32Bool:
6797 Text.Op = PrintName("CastUint32Bool");
6798 break;
6799case OP_CastSint32Uint8:
6800 Text.Op = PrintName("CastSint32Uint8");
6801 break;
6802case OP_CastSint32Sint8:
6803 Text.Op = PrintName("CastSint32Sint8");
6804 break;
6805case OP_CastSint32Uint16:
6806 Text.Op = PrintName("CastSint32Uint16");
6807 break;
6808case OP_CastSint32Sint16:
6809 Text.Op = PrintName("CastSint32Sint16");
6810 break;
6811case OP_CastSint32Uint32:
6812 Text.Op = PrintName("CastSint32Uint32");
6813 break;
6814case OP_CastSint32Sint32:
6815 Text.Op = PrintName("CastSint32Sint32");
6816 break;
6817case OP_CastSint32Uint64:
6818 Text.Op = PrintName("CastSint32Uint64");
6819 break;
6820case OP_CastSint32Sint64:
6821 Text.Op = PrintName("CastSint32Sint64");
6822 break;
6823case OP_CastSint32Bool:
6824 Text.Op = PrintName("CastSint32Bool");
6825 break;
6826case OP_CastUint64Uint8:
6827 Text.Op = PrintName("CastUint64Uint8");
6828 break;
6829case OP_CastUint64Sint8:
6830 Text.Op = PrintName("CastUint64Sint8");
6831 break;
6832case OP_CastUint64Uint16:
6833 Text.Op = PrintName("CastUint64Uint16");
6834 break;
6835case OP_CastUint64Sint16:
6836 Text.Op = PrintName("CastUint64Sint16");
6837 break;
6838case OP_CastUint64Uint32:
6839 Text.Op = PrintName("CastUint64Uint32");
6840 break;
6841case OP_CastUint64Sint32:
6842 Text.Op = PrintName("CastUint64Sint32");
6843 break;
6844case OP_CastUint64Uint64:
6845 Text.Op = PrintName("CastUint64Uint64");
6846 break;
6847case OP_CastUint64Sint64:
6848 Text.Op = PrintName("CastUint64Sint64");
6849 break;
6850case OP_CastUint64Bool:
6851 Text.Op = PrintName("CastUint64Bool");
6852 break;
6853case OP_CastSint64Uint8:
6854 Text.Op = PrintName("CastSint64Uint8");
6855 break;
6856case OP_CastSint64Sint8:
6857 Text.Op = PrintName("CastSint64Sint8");
6858 break;
6859case OP_CastSint64Uint16:
6860 Text.Op = PrintName("CastSint64Uint16");
6861 break;
6862case OP_CastSint64Sint16:
6863 Text.Op = PrintName("CastSint64Sint16");
6864 break;
6865case OP_CastSint64Uint32:
6866 Text.Op = PrintName("CastSint64Uint32");
6867 break;
6868case OP_CastSint64Sint32:
6869 Text.Op = PrintName("CastSint64Sint32");
6870 break;
6871case OP_CastSint64Uint64:
6872 Text.Op = PrintName("CastSint64Uint64");
6873 break;
6874case OP_CastSint64Sint64:
6875 Text.Op = PrintName("CastSint64Sint64");
6876 break;
6877case OP_CastSint64Bool:
6878 Text.Op = PrintName("CastSint64Bool");
6879 break;
6880case OP_CastBoolUint8:
6881 Text.Op = PrintName("CastBoolUint8");
6882 break;
6883case OP_CastBoolSint8:
6884 Text.Op = PrintName("CastBoolSint8");
6885 break;
6886case OP_CastBoolUint16:
6887 Text.Op = PrintName("CastBoolUint16");
6888 break;
6889case OP_CastBoolSint16:
6890 Text.Op = PrintName("CastBoolSint16");
6891 break;
6892case OP_CastBoolUint32:
6893 Text.Op = PrintName("CastBoolUint32");
6894 break;
6895case OP_CastBoolSint32:
6896 Text.Op = PrintName("CastBoolSint32");
6897 break;
6898case OP_CastBoolUint64:
6899 Text.Op = PrintName("CastBoolUint64");
6900 break;
6901case OP_CastBoolSint64:
6902 Text.Op = PrintName("CastBoolSint64");
6903 break;
6904case OP_CastBoolBool:
6905 Text.Op = PrintName("CastBoolBool");
6906 break;
6907case OP_CastIntAPUint8:
6908 Text.Op = PrintName("CastIntAPUint8");
6909 break;
6910case OP_CastIntAPSint8:
6911 Text.Op = PrintName("CastIntAPSint8");
6912 break;
6913case OP_CastIntAPUint16:
6914 Text.Op = PrintName("CastIntAPUint16");
6915 break;
6916case OP_CastIntAPSint16:
6917 Text.Op = PrintName("CastIntAPSint16");
6918 break;
6919case OP_CastIntAPUint32:
6920 Text.Op = PrintName("CastIntAPUint32");
6921 break;
6922case OP_CastIntAPSint32:
6923 Text.Op = PrintName("CastIntAPSint32");
6924 break;
6925case OP_CastIntAPUint64:
6926 Text.Op = PrintName("CastIntAPUint64");
6927 break;
6928case OP_CastIntAPSint64:
6929 Text.Op = PrintName("CastIntAPSint64");
6930 break;
6931case OP_CastIntAPBool:
6932 Text.Op = PrintName("CastIntAPBool");
6933 break;
6934case OP_CastIntAPSUint8:
6935 Text.Op = PrintName("CastIntAPSUint8");
6936 break;
6937case OP_CastIntAPSSint8:
6938 Text.Op = PrintName("CastIntAPSSint8");
6939 break;
6940case OP_CastIntAPSUint16:
6941 Text.Op = PrintName("CastIntAPSUint16");
6942 break;
6943case OP_CastIntAPSSint16:
6944 Text.Op = PrintName("CastIntAPSSint16");
6945 break;
6946case OP_CastIntAPSUint32:
6947 Text.Op = PrintName("CastIntAPSUint32");
6948 break;
6949case OP_CastIntAPSSint32:
6950 Text.Op = PrintName("CastIntAPSSint32");
6951 break;
6952case OP_CastIntAPSUint64:
6953 Text.Op = PrintName("CastIntAPSUint64");
6954 break;
6955case OP_CastIntAPSSint64:
6956 Text.Op = PrintName("CastIntAPSSint64");
6957 break;
6958case OP_CastIntAPSBool:
6959 Text.Op = PrintName("CastIntAPSBool");
6960 break;
6961case OP_CastFixedPointUint8:
6962 Text.Op = PrintName("CastFixedPointUint8");
6963 break;
6964case OP_CastFixedPointSint8:
6965 Text.Op = PrintName("CastFixedPointSint8");
6966 break;
6967case OP_CastFixedPointUint16:
6968 Text.Op = PrintName("CastFixedPointUint16");
6969 break;
6970case OP_CastFixedPointSint16:
6971 Text.Op = PrintName("CastFixedPointSint16");
6972 break;
6973case OP_CastFixedPointUint32:
6974 Text.Op = PrintName("CastFixedPointUint32");
6975 break;
6976case OP_CastFixedPointSint32:
6977 Text.Op = PrintName("CastFixedPointSint32");
6978 break;
6979case OP_CastFixedPointUint64:
6980 Text.Op = PrintName("CastFixedPointUint64");
6981 break;
6982case OP_CastFixedPointSint64:
6983 Text.Op = PrintName("CastFixedPointSint64");
6984 break;
6985case OP_CastFixedPointBool:
6986 Text.Op = PrintName("CastFixedPointBool");
6987 break;
6988#endif
6989#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
6990bool emitCastUint8Uint8(SourceInfo);
6991bool emitCastUint8Sint8(SourceInfo);
6992bool emitCastUint8Uint16(SourceInfo);
6993bool emitCastUint8Sint16(SourceInfo);
6994bool emitCastUint8Uint32(SourceInfo);
6995bool emitCastUint8Sint32(SourceInfo);
6996bool emitCastUint8Uint64(SourceInfo);
6997bool emitCastUint8Sint64(SourceInfo);
6998bool emitCastUint8Bool(SourceInfo);
6999bool emitCastSint8Uint8(SourceInfo);
7000bool emitCastSint8Sint8(SourceInfo);
7001bool emitCastSint8Uint16(SourceInfo);
7002bool emitCastSint8Sint16(SourceInfo);
7003bool emitCastSint8Uint32(SourceInfo);
7004bool emitCastSint8Sint32(SourceInfo);
7005bool emitCastSint8Uint64(SourceInfo);
7006bool emitCastSint8Sint64(SourceInfo);
7007bool emitCastSint8Bool(SourceInfo);
7008bool emitCastUint16Uint8(SourceInfo);
7009bool emitCastUint16Sint8(SourceInfo);
7010bool emitCastUint16Uint16(SourceInfo);
7011bool emitCastUint16Sint16(SourceInfo);
7012bool emitCastUint16Uint32(SourceInfo);
7013bool emitCastUint16Sint32(SourceInfo);
7014bool emitCastUint16Uint64(SourceInfo);
7015bool emitCastUint16Sint64(SourceInfo);
7016bool emitCastUint16Bool(SourceInfo);
7017bool emitCastSint16Uint8(SourceInfo);
7018bool emitCastSint16Sint8(SourceInfo);
7019bool emitCastSint16Uint16(SourceInfo);
7020bool emitCastSint16Sint16(SourceInfo);
7021bool emitCastSint16Uint32(SourceInfo);
7022bool emitCastSint16Sint32(SourceInfo);
7023bool emitCastSint16Uint64(SourceInfo);
7024bool emitCastSint16Sint64(SourceInfo);
7025bool emitCastSint16Bool(SourceInfo);
7026bool emitCastUint32Uint8(SourceInfo);
7027bool emitCastUint32Sint8(SourceInfo);
7028bool emitCastUint32Uint16(SourceInfo);
7029bool emitCastUint32Sint16(SourceInfo);
7030bool emitCastUint32Uint32(SourceInfo);
7031bool emitCastUint32Sint32(SourceInfo);
7032bool emitCastUint32Uint64(SourceInfo);
7033bool emitCastUint32Sint64(SourceInfo);
7034bool emitCastUint32Bool(SourceInfo);
7035bool emitCastSint32Uint8(SourceInfo);
7036bool emitCastSint32Sint8(SourceInfo);
7037bool emitCastSint32Uint16(SourceInfo);
7038bool emitCastSint32Sint16(SourceInfo);
7039bool emitCastSint32Uint32(SourceInfo);
7040bool emitCastSint32Sint32(SourceInfo);
7041bool emitCastSint32Uint64(SourceInfo);
7042bool emitCastSint32Sint64(SourceInfo);
7043bool emitCastSint32Bool(SourceInfo);
7044bool emitCastUint64Uint8(SourceInfo);
7045bool emitCastUint64Sint8(SourceInfo);
7046bool emitCastUint64Uint16(SourceInfo);
7047bool emitCastUint64Sint16(SourceInfo);
7048bool emitCastUint64Uint32(SourceInfo);
7049bool emitCastUint64Sint32(SourceInfo);
7050bool emitCastUint64Uint64(SourceInfo);
7051bool emitCastUint64Sint64(SourceInfo);
7052bool emitCastUint64Bool(SourceInfo);
7053bool emitCastSint64Uint8(SourceInfo);
7054bool emitCastSint64Sint8(SourceInfo);
7055bool emitCastSint64Uint16(SourceInfo);
7056bool emitCastSint64Sint16(SourceInfo);
7057bool emitCastSint64Uint32(SourceInfo);
7058bool emitCastSint64Sint32(SourceInfo);
7059bool emitCastSint64Uint64(SourceInfo);
7060bool emitCastSint64Sint64(SourceInfo);
7061bool emitCastSint64Bool(SourceInfo);
7062bool emitCastBoolUint8(SourceInfo);
7063bool emitCastBoolSint8(SourceInfo);
7064bool emitCastBoolUint16(SourceInfo);
7065bool emitCastBoolSint16(SourceInfo);
7066bool emitCastBoolUint32(SourceInfo);
7067bool emitCastBoolSint32(SourceInfo);
7068bool emitCastBoolUint64(SourceInfo);
7069bool emitCastBoolSint64(SourceInfo);
7070bool emitCastBoolBool(SourceInfo);
7071bool emitCastIntAPUint8(SourceInfo);
7072bool emitCastIntAPSint8(SourceInfo);
7073bool emitCastIntAPUint16(SourceInfo);
7074bool emitCastIntAPSint16(SourceInfo);
7075bool emitCastIntAPUint32(SourceInfo);
7076bool emitCastIntAPSint32(SourceInfo);
7077bool emitCastIntAPUint64(SourceInfo);
7078bool emitCastIntAPSint64(SourceInfo);
7079bool emitCastIntAPBool(SourceInfo);
7080bool emitCastIntAPSUint8(SourceInfo);
7081bool emitCastIntAPSSint8(SourceInfo);
7082bool emitCastIntAPSUint16(SourceInfo);
7083bool emitCastIntAPSSint16(SourceInfo);
7084bool emitCastIntAPSUint32(SourceInfo);
7085bool emitCastIntAPSSint32(SourceInfo);
7086bool emitCastIntAPSUint64(SourceInfo);
7087bool emitCastIntAPSSint64(SourceInfo);
7088bool emitCastIntAPSBool(SourceInfo);
7089bool emitCastFixedPointUint8(SourceInfo);
7090bool emitCastFixedPointSint8(SourceInfo);
7091bool emitCastFixedPointUint16(SourceInfo);
7092bool emitCastFixedPointSint16(SourceInfo);
7093bool emitCastFixedPointUint32(SourceInfo);
7094bool emitCastFixedPointSint32(SourceInfo);
7095bool emitCastFixedPointUint64(SourceInfo);
7096bool emitCastFixedPointSint64(SourceInfo);
7097bool emitCastFixedPointBool(SourceInfo);
7098#endif
7099#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7100[[nodiscard]] bool emitCast(PrimType, PrimType, SourceInfo I);
7101#endif
7102#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
7103bool
7104#if defined(GET_EVAL_IMPL)
7105EvalEmitter
7106#else
7107ByteCodeEmitter
7108#endif
7109::emitCast(PrimType T0, PrimType T1, SourceInfo I) {
7110 switch (T0) {
7111 case PT_Uint8:
7112 switch (T1) {
7113 case PT_Uint8:
7114 return emitCastUint8Uint8(I);
7115 case PT_Sint8:
7116 return emitCastUint8Sint8(I);
7117 case PT_Uint16:
7118 return emitCastUint8Uint16(I);
7119 case PT_Sint16:
7120 return emitCastUint8Sint16(I);
7121 case PT_Uint32:
7122 return emitCastUint8Uint32(I);
7123 case PT_Sint32:
7124 return emitCastUint8Sint32(I);
7125 case PT_Uint64:
7126 return emitCastUint8Uint64(I);
7127 case PT_Sint64:
7128 return emitCastUint8Sint64(I);
7129 case PT_Bool:
7130 return emitCastUint8Bool(I);
7131 default: llvm_unreachable("invalid type: emitCast");
7132 }
7133 llvm_unreachable("invalid enum value");
7134 case PT_Sint8:
7135 switch (T1) {
7136 case PT_Uint8:
7137 return emitCastSint8Uint8(I);
7138 case PT_Sint8:
7139 return emitCastSint8Sint8(I);
7140 case PT_Uint16:
7141 return emitCastSint8Uint16(I);
7142 case PT_Sint16:
7143 return emitCastSint8Sint16(I);
7144 case PT_Uint32:
7145 return emitCastSint8Uint32(I);
7146 case PT_Sint32:
7147 return emitCastSint8Sint32(I);
7148 case PT_Uint64:
7149 return emitCastSint8Uint64(I);
7150 case PT_Sint64:
7151 return emitCastSint8Sint64(I);
7152 case PT_Bool:
7153 return emitCastSint8Bool(I);
7154 default: llvm_unreachable("invalid type: emitCast");
7155 }
7156 llvm_unreachable("invalid enum value");
7157 case PT_Uint16:
7158 switch (T1) {
7159 case PT_Uint8:
7160 return emitCastUint16Uint8(I);
7161 case PT_Sint8:
7162 return emitCastUint16Sint8(I);
7163 case PT_Uint16:
7164 return emitCastUint16Uint16(I);
7165 case PT_Sint16:
7166 return emitCastUint16Sint16(I);
7167 case PT_Uint32:
7168 return emitCastUint16Uint32(I);
7169 case PT_Sint32:
7170 return emitCastUint16Sint32(I);
7171 case PT_Uint64:
7172 return emitCastUint16Uint64(I);
7173 case PT_Sint64:
7174 return emitCastUint16Sint64(I);
7175 case PT_Bool:
7176 return emitCastUint16Bool(I);
7177 default: llvm_unreachable("invalid type: emitCast");
7178 }
7179 llvm_unreachable("invalid enum value");
7180 case PT_Sint16:
7181 switch (T1) {
7182 case PT_Uint8:
7183 return emitCastSint16Uint8(I);
7184 case PT_Sint8:
7185 return emitCastSint16Sint8(I);
7186 case PT_Uint16:
7187 return emitCastSint16Uint16(I);
7188 case PT_Sint16:
7189 return emitCastSint16Sint16(I);
7190 case PT_Uint32:
7191 return emitCastSint16Uint32(I);
7192 case PT_Sint32:
7193 return emitCastSint16Sint32(I);
7194 case PT_Uint64:
7195 return emitCastSint16Uint64(I);
7196 case PT_Sint64:
7197 return emitCastSint16Sint64(I);
7198 case PT_Bool:
7199 return emitCastSint16Bool(I);
7200 default: llvm_unreachable("invalid type: emitCast");
7201 }
7202 llvm_unreachable("invalid enum value");
7203 case PT_Uint32:
7204 switch (T1) {
7205 case PT_Uint8:
7206 return emitCastUint32Uint8(I);
7207 case PT_Sint8:
7208 return emitCastUint32Sint8(I);
7209 case PT_Uint16:
7210 return emitCastUint32Uint16(I);
7211 case PT_Sint16:
7212 return emitCastUint32Sint16(I);
7213 case PT_Uint32:
7214 return emitCastUint32Uint32(I);
7215 case PT_Sint32:
7216 return emitCastUint32Sint32(I);
7217 case PT_Uint64:
7218 return emitCastUint32Uint64(I);
7219 case PT_Sint64:
7220 return emitCastUint32Sint64(I);
7221 case PT_Bool:
7222 return emitCastUint32Bool(I);
7223 default: llvm_unreachable("invalid type: emitCast");
7224 }
7225 llvm_unreachable("invalid enum value");
7226 case PT_Sint32:
7227 switch (T1) {
7228 case PT_Uint8:
7229 return emitCastSint32Uint8(I);
7230 case PT_Sint8:
7231 return emitCastSint32Sint8(I);
7232 case PT_Uint16:
7233 return emitCastSint32Uint16(I);
7234 case PT_Sint16:
7235 return emitCastSint32Sint16(I);
7236 case PT_Uint32:
7237 return emitCastSint32Uint32(I);
7238 case PT_Sint32:
7239 return emitCastSint32Sint32(I);
7240 case PT_Uint64:
7241 return emitCastSint32Uint64(I);
7242 case PT_Sint64:
7243 return emitCastSint32Sint64(I);
7244 case PT_Bool:
7245 return emitCastSint32Bool(I);
7246 default: llvm_unreachable("invalid type: emitCast");
7247 }
7248 llvm_unreachable("invalid enum value");
7249 case PT_Uint64:
7250 switch (T1) {
7251 case PT_Uint8:
7252 return emitCastUint64Uint8(I);
7253 case PT_Sint8:
7254 return emitCastUint64Sint8(I);
7255 case PT_Uint16:
7256 return emitCastUint64Uint16(I);
7257 case PT_Sint16:
7258 return emitCastUint64Sint16(I);
7259 case PT_Uint32:
7260 return emitCastUint64Uint32(I);
7261 case PT_Sint32:
7262 return emitCastUint64Sint32(I);
7263 case PT_Uint64:
7264 return emitCastUint64Uint64(I);
7265 case PT_Sint64:
7266 return emitCastUint64Sint64(I);
7267 case PT_Bool:
7268 return emitCastUint64Bool(I);
7269 default: llvm_unreachable("invalid type: emitCast");
7270 }
7271 llvm_unreachable("invalid enum value");
7272 case PT_Sint64:
7273 switch (T1) {
7274 case PT_Uint8:
7275 return emitCastSint64Uint8(I);
7276 case PT_Sint8:
7277 return emitCastSint64Sint8(I);
7278 case PT_Uint16:
7279 return emitCastSint64Uint16(I);
7280 case PT_Sint16:
7281 return emitCastSint64Sint16(I);
7282 case PT_Uint32:
7283 return emitCastSint64Uint32(I);
7284 case PT_Sint32:
7285 return emitCastSint64Sint32(I);
7286 case PT_Uint64:
7287 return emitCastSint64Uint64(I);
7288 case PT_Sint64:
7289 return emitCastSint64Sint64(I);
7290 case PT_Bool:
7291 return emitCastSint64Bool(I);
7292 default: llvm_unreachable("invalid type: emitCast");
7293 }
7294 llvm_unreachable("invalid enum value");
7295 case PT_Bool:
7296 switch (T1) {
7297 case PT_Uint8:
7298 return emitCastBoolUint8(I);
7299 case PT_Sint8:
7300 return emitCastBoolSint8(I);
7301 case PT_Uint16:
7302 return emitCastBoolUint16(I);
7303 case PT_Sint16:
7304 return emitCastBoolSint16(I);
7305 case PT_Uint32:
7306 return emitCastBoolUint32(I);
7307 case PT_Sint32:
7308 return emitCastBoolSint32(I);
7309 case PT_Uint64:
7310 return emitCastBoolUint64(I);
7311 case PT_Sint64:
7312 return emitCastBoolSint64(I);
7313 case PT_Bool:
7314 return emitCastBoolBool(I);
7315 default: llvm_unreachable("invalid type: emitCast");
7316 }
7317 llvm_unreachable("invalid enum value");
7318 case PT_IntAP:
7319 switch (T1) {
7320 case PT_Uint8:
7321 return emitCastIntAPUint8(I);
7322 case PT_Sint8:
7323 return emitCastIntAPSint8(I);
7324 case PT_Uint16:
7325 return emitCastIntAPUint16(I);
7326 case PT_Sint16:
7327 return emitCastIntAPSint16(I);
7328 case PT_Uint32:
7329 return emitCastIntAPUint32(I);
7330 case PT_Sint32:
7331 return emitCastIntAPSint32(I);
7332 case PT_Uint64:
7333 return emitCastIntAPUint64(I);
7334 case PT_Sint64:
7335 return emitCastIntAPSint64(I);
7336 case PT_Bool:
7337 return emitCastIntAPBool(I);
7338 default: llvm_unreachable("invalid type: emitCast");
7339 }
7340 llvm_unreachable("invalid enum value");
7341 case PT_IntAPS:
7342 switch (T1) {
7343 case PT_Uint8:
7344 return emitCastIntAPSUint8(I);
7345 case PT_Sint8:
7346 return emitCastIntAPSSint8(I);
7347 case PT_Uint16:
7348 return emitCastIntAPSUint16(I);
7349 case PT_Sint16:
7350 return emitCastIntAPSSint16(I);
7351 case PT_Uint32:
7352 return emitCastIntAPSUint32(I);
7353 case PT_Sint32:
7354 return emitCastIntAPSSint32(I);
7355 case PT_Uint64:
7356 return emitCastIntAPSUint64(I);
7357 case PT_Sint64:
7358 return emitCastIntAPSSint64(I);
7359 case PT_Bool:
7360 return emitCastIntAPSBool(I);
7361 default: llvm_unreachable("invalid type: emitCast");
7362 }
7363 llvm_unreachable("invalid enum value");
7364 case PT_FixedPoint:
7365 switch (T1) {
7366 case PT_Uint8:
7367 return emitCastFixedPointUint8(I);
7368 case PT_Sint8:
7369 return emitCastFixedPointSint8(I);
7370 case PT_Uint16:
7371 return emitCastFixedPointUint16(I);
7372 case PT_Sint16:
7373 return emitCastFixedPointSint16(I);
7374 case PT_Uint32:
7375 return emitCastFixedPointUint32(I);
7376 case PT_Sint32:
7377 return emitCastFixedPointSint32(I);
7378 case PT_Uint64:
7379 return emitCastFixedPointUint64(I);
7380 case PT_Sint64:
7381 return emitCastFixedPointSint64(I);
7382 case PT_Bool:
7383 return emitCastFixedPointBool(I);
7384 default: llvm_unreachable("invalid type: emitCast");
7385 }
7386 llvm_unreachable("invalid enum value");
7387 default: llvm_unreachable("invalid type: emitCast");
7388 }
7389 llvm_unreachable("invalid enum value");
7390}
7391#endif
7392#ifdef GET_LINK_IMPL
7393bool ByteCodeEmitter::emitCastUint8Uint8(SourceInfo L) {
7394 return emitOp<>(OP_CastUint8Uint8, L);
7395}
7396bool ByteCodeEmitter::emitCastUint8Sint8(SourceInfo L) {
7397 return emitOp<>(OP_CastUint8Sint8, L);
7398}
7399bool ByteCodeEmitter::emitCastUint8Uint16(SourceInfo L) {
7400 return emitOp<>(OP_CastUint8Uint16, L);
7401}
7402bool ByteCodeEmitter::emitCastUint8Sint16(SourceInfo L) {
7403 return emitOp<>(OP_CastUint8Sint16, L);
7404}
7405bool ByteCodeEmitter::emitCastUint8Uint32(SourceInfo L) {
7406 return emitOp<>(OP_CastUint8Uint32, L);
7407}
7408bool ByteCodeEmitter::emitCastUint8Sint32(SourceInfo L) {
7409 return emitOp<>(OP_CastUint8Sint32, L);
7410}
7411bool ByteCodeEmitter::emitCastUint8Uint64(SourceInfo L) {
7412 return emitOp<>(OP_CastUint8Uint64, L);
7413}
7414bool ByteCodeEmitter::emitCastUint8Sint64(SourceInfo L) {
7415 return emitOp<>(OP_CastUint8Sint64, L);
7416}
7417bool ByteCodeEmitter::emitCastUint8Bool(SourceInfo L) {
7418 return emitOp<>(OP_CastUint8Bool, L);
7419}
7420bool ByteCodeEmitter::emitCastSint8Uint8(SourceInfo L) {
7421 return emitOp<>(OP_CastSint8Uint8, L);
7422}
7423bool ByteCodeEmitter::emitCastSint8Sint8(SourceInfo L) {
7424 return emitOp<>(OP_CastSint8Sint8, L);
7425}
7426bool ByteCodeEmitter::emitCastSint8Uint16(SourceInfo L) {
7427 return emitOp<>(OP_CastSint8Uint16, L);
7428}
7429bool ByteCodeEmitter::emitCastSint8Sint16(SourceInfo L) {
7430 return emitOp<>(OP_CastSint8Sint16, L);
7431}
7432bool ByteCodeEmitter::emitCastSint8Uint32(SourceInfo L) {
7433 return emitOp<>(OP_CastSint8Uint32, L);
7434}
7435bool ByteCodeEmitter::emitCastSint8Sint32(SourceInfo L) {
7436 return emitOp<>(OP_CastSint8Sint32, L);
7437}
7438bool ByteCodeEmitter::emitCastSint8Uint64(SourceInfo L) {
7439 return emitOp<>(OP_CastSint8Uint64, L);
7440}
7441bool ByteCodeEmitter::emitCastSint8Sint64(SourceInfo L) {
7442 return emitOp<>(OP_CastSint8Sint64, L);
7443}
7444bool ByteCodeEmitter::emitCastSint8Bool(SourceInfo L) {
7445 return emitOp<>(OP_CastSint8Bool, L);
7446}
7447bool ByteCodeEmitter::emitCastUint16Uint8(SourceInfo L) {
7448 return emitOp<>(OP_CastUint16Uint8, L);
7449}
7450bool ByteCodeEmitter::emitCastUint16Sint8(SourceInfo L) {
7451 return emitOp<>(OP_CastUint16Sint8, L);
7452}
7453bool ByteCodeEmitter::emitCastUint16Uint16(SourceInfo L) {
7454 return emitOp<>(OP_CastUint16Uint16, L);
7455}
7456bool ByteCodeEmitter::emitCastUint16Sint16(SourceInfo L) {
7457 return emitOp<>(OP_CastUint16Sint16, L);
7458}
7459bool ByteCodeEmitter::emitCastUint16Uint32(SourceInfo L) {
7460 return emitOp<>(OP_CastUint16Uint32, L);
7461}
7462bool ByteCodeEmitter::emitCastUint16Sint32(SourceInfo L) {
7463 return emitOp<>(OP_CastUint16Sint32, L);
7464}
7465bool ByteCodeEmitter::emitCastUint16Uint64(SourceInfo L) {
7466 return emitOp<>(OP_CastUint16Uint64, L);
7467}
7468bool ByteCodeEmitter::emitCastUint16Sint64(SourceInfo L) {
7469 return emitOp<>(OP_CastUint16Sint64, L);
7470}
7471bool ByteCodeEmitter::emitCastUint16Bool(SourceInfo L) {
7472 return emitOp<>(OP_CastUint16Bool, L);
7473}
7474bool ByteCodeEmitter::emitCastSint16Uint8(SourceInfo L) {
7475 return emitOp<>(OP_CastSint16Uint8, L);
7476}
7477bool ByteCodeEmitter::emitCastSint16Sint8(SourceInfo L) {
7478 return emitOp<>(OP_CastSint16Sint8, L);
7479}
7480bool ByteCodeEmitter::emitCastSint16Uint16(SourceInfo L) {
7481 return emitOp<>(OP_CastSint16Uint16, L);
7482}
7483bool ByteCodeEmitter::emitCastSint16Sint16(SourceInfo L) {
7484 return emitOp<>(OP_CastSint16Sint16, L);
7485}
7486bool ByteCodeEmitter::emitCastSint16Uint32(SourceInfo L) {
7487 return emitOp<>(OP_CastSint16Uint32, L);
7488}
7489bool ByteCodeEmitter::emitCastSint16Sint32(SourceInfo L) {
7490 return emitOp<>(OP_CastSint16Sint32, L);
7491}
7492bool ByteCodeEmitter::emitCastSint16Uint64(SourceInfo L) {
7493 return emitOp<>(OP_CastSint16Uint64, L);
7494}
7495bool ByteCodeEmitter::emitCastSint16Sint64(SourceInfo L) {
7496 return emitOp<>(OP_CastSint16Sint64, L);
7497}
7498bool ByteCodeEmitter::emitCastSint16Bool(SourceInfo L) {
7499 return emitOp<>(OP_CastSint16Bool, L);
7500}
7501bool ByteCodeEmitter::emitCastUint32Uint8(SourceInfo L) {
7502 return emitOp<>(OP_CastUint32Uint8, L);
7503}
7504bool ByteCodeEmitter::emitCastUint32Sint8(SourceInfo L) {
7505 return emitOp<>(OP_CastUint32Sint8, L);
7506}
7507bool ByteCodeEmitter::emitCastUint32Uint16(SourceInfo L) {
7508 return emitOp<>(OP_CastUint32Uint16, L);
7509}
7510bool ByteCodeEmitter::emitCastUint32Sint16(SourceInfo L) {
7511 return emitOp<>(OP_CastUint32Sint16, L);
7512}
7513bool ByteCodeEmitter::emitCastUint32Uint32(SourceInfo L) {
7514 return emitOp<>(OP_CastUint32Uint32, L);
7515}
7516bool ByteCodeEmitter::emitCastUint32Sint32(SourceInfo L) {
7517 return emitOp<>(OP_CastUint32Sint32, L);
7518}
7519bool ByteCodeEmitter::emitCastUint32Uint64(SourceInfo L) {
7520 return emitOp<>(OP_CastUint32Uint64, L);
7521}
7522bool ByteCodeEmitter::emitCastUint32Sint64(SourceInfo L) {
7523 return emitOp<>(OP_CastUint32Sint64, L);
7524}
7525bool ByteCodeEmitter::emitCastUint32Bool(SourceInfo L) {
7526 return emitOp<>(OP_CastUint32Bool, L);
7527}
7528bool ByteCodeEmitter::emitCastSint32Uint8(SourceInfo L) {
7529 return emitOp<>(OP_CastSint32Uint8, L);
7530}
7531bool ByteCodeEmitter::emitCastSint32Sint8(SourceInfo L) {
7532 return emitOp<>(OP_CastSint32Sint8, L);
7533}
7534bool ByteCodeEmitter::emitCastSint32Uint16(SourceInfo L) {
7535 return emitOp<>(OP_CastSint32Uint16, L);
7536}
7537bool ByteCodeEmitter::emitCastSint32Sint16(SourceInfo L) {
7538 return emitOp<>(OP_CastSint32Sint16, L);
7539}
7540bool ByteCodeEmitter::emitCastSint32Uint32(SourceInfo L) {
7541 return emitOp<>(OP_CastSint32Uint32, L);
7542}
7543bool ByteCodeEmitter::emitCastSint32Sint32(SourceInfo L) {
7544 return emitOp<>(OP_CastSint32Sint32, L);
7545}
7546bool ByteCodeEmitter::emitCastSint32Uint64(SourceInfo L) {
7547 return emitOp<>(OP_CastSint32Uint64, L);
7548}
7549bool ByteCodeEmitter::emitCastSint32Sint64(SourceInfo L) {
7550 return emitOp<>(OP_CastSint32Sint64, L);
7551}
7552bool ByteCodeEmitter::emitCastSint32Bool(SourceInfo L) {
7553 return emitOp<>(OP_CastSint32Bool, L);
7554}
7555bool ByteCodeEmitter::emitCastUint64Uint8(SourceInfo L) {
7556 return emitOp<>(OP_CastUint64Uint8, L);
7557}
7558bool ByteCodeEmitter::emitCastUint64Sint8(SourceInfo L) {
7559 return emitOp<>(OP_CastUint64Sint8, L);
7560}
7561bool ByteCodeEmitter::emitCastUint64Uint16(SourceInfo L) {
7562 return emitOp<>(OP_CastUint64Uint16, L);
7563}
7564bool ByteCodeEmitter::emitCastUint64Sint16(SourceInfo L) {
7565 return emitOp<>(OP_CastUint64Sint16, L);
7566}
7567bool ByteCodeEmitter::emitCastUint64Uint32(SourceInfo L) {
7568 return emitOp<>(OP_CastUint64Uint32, L);
7569}
7570bool ByteCodeEmitter::emitCastUint64Sint32(SourceInfo L) {
7571 return emitOp<>(OP_CastUint64Sint32, L);
7572}
7573bool ByteCodeEmitter::emitCastUint64Uint64(SourceInfo L) {
7574 return emitOp<>(OP_CastUint64Uint64, L);
7575}
7576bool ByteCodeEmitter::emitCastUint64Sint64(SourceInfo L) {
7577 return emitOp<>(OP_CastUint64Sint64, L);
7578}
7579bool ByteCodeEmitter::emitCastUint64Bool(SourceInfo L) {
7580 return emitOp<>(OP_CastUint64Bool, L);
7581}
7582bool ByteCodeEmitter::emitCastSint64Uint8(SourceInfo L) {
7583 return emitOp<>(OP_CastSint64Uint8, L);
7584}
7585bool ByteCodeEmitter::emitCastSint64Sint8(SourceInfo L) {
7586 return emitOp<>(OP_CastSint64Sint8, L);
7587}
7588bool ByteCodeEmitter::emitCastSint64Uint16(SourceInfo L) {
7589 return emitOp<>(OP_CastSint64Uint16, L);
7590}
7591bool ByteCodeEmitter::emitCastSint64Sint16(SourceInfo L) {
7592 return emitOp<>(OP_CastSint64Sint16, L);
7593}
7594bool ByteCodeEmitter::emitCastSint64Uint32(SourceInfo L) {
7595 return emitOp<>(OP_CastSint64Uint32, L);
7596}
7597bool ByteCodeEmitter::emitCastSint64Sint32(SourceInfo L) {
7598 return emitOp<>(OP_CastSint64Sint32, L);
7599}
7600bool ByteCodeEmitter::emitCastSint64Uint64(SourceInfo L) {
7601 return emitOp<>(OP_CastSint64Uint64, L);
7602}
7603bool ByteCodeEmitter::emitCastSint64Sint64(SourceInfo L) {
7604 return emitOp<>(OP_CastSint64Sint64, L);
7605}
7606bool ByteCodeEmitter::emitCastSint64Bool(SourceInfo L) {
7607 return emitOp<>(OP_CastSint64Bool, L);
7608}
7609bool ByteCodeEmitter::emitCastBoolUint8(SourceInfo L) {
7610 return emitOp<>(OP_CastBoolUint8, L);
7611}
7612bool ByteCodeEmitter::emitCastBoolSint8(SourceInfo L) {
7613 return emitOp<>(OP_CastBoolSint8, L);
7614}
7615bool ByteCodeEmitter::emitCastBoolUint16(SourceInfo L) {
7616 return emitOp<>(OP_CastBoolUint16, L);
7617}
7618bool ByteCodeEmitter::emitCastBoolSint16(SourceInfo L) {
7619 return emitOp<>(OP_CastBoolSint16, L);
7620}
7621bool ByteCodeEmitter::emitCastBoolUint32(SourceInfo L) {
7622 return emitOp<>(OP_CastBoolUint32, L);
7623}
7624bool ByteCodeEmitter::emitCastBoolSint32(SourceInfo L) {
7625 return emitOp<>(OP_CastBoolSint32, L);
7626}
7627bool ByteCodeEmitter::emitCastBoolUint64(SourceInfo L) {
7628 return emitOp<>(OP_CastBoolUint64, L);
7629}
7630bool ByteCodeEmitter::emitCastBoolSint64(SourceInfo L) {
7631 return emitOp<>(OP_CastBoolSint64, L);
7632}
7633bool ByteCodeEmitter::emitCastBoolBool(SourceInfo L) {
7634 return emitOp<>(OP_CastBoolBool, L);
7635}
7636bool ByteCodeEmitter::emitCastIntAPUint8(SourceInfo L) {
7637 return emitOp<>(OP_CastIntAPUint8, L);
7638}
7639bool ByteCodeEmitter::emitCastIntAPSint8(SourceInfo L) {
7640 return emitOp<>(OP_CastIntAPSint8, L);
7641}
7642bool ByteCodeEmitter::emitCastIntAPUint16(SourceInfo L) {
7643 return emitOp<>(OP_CastIntAPUint16, L);
7644}
7645bool ByteCodeEmitter::emitCastIntAPSint16(SourceInfo L) {
7646 return emitOp<>(OP_CastIntAPSint16, L);
7647}
7648bool ByteCodeEmitter::emitCastIntAPUint32(SourceInfo L) {
7649 return emitOp<>(OP_CastIntAPUint32, L);
7650}
7651bool ByteCodeEmitter::emitCastIntAPSint32(SourceInfo L) {
7652 return emitOp<>(OP_CastIntAPSint32, L);
7653}
7654bool ByteCodeEmitter::emitCastIntAPUint64(SourceInfo L) {
7655 return emitOp<>(OP_CastIntAPUint64, L);
7656}
7657bool ByteCodeEmitter::emitCastIntAPSint64(SourceInfo L) {
7658 return emitOp<>(OP_CastIntAPSint64, L);
7659}
7660bool ByteCodeEmitter::emitCastIntAPBool(SourceInfo L) {
7661 return emitOp<>(OP_CastIntAPBool, L);
7662}
7663bool ByteCodeEmitter::emitCastIntAPSUint8(SourceInfo L) {
7664 return emitOp<>(OP_CastIntAPSUint8, L);
7665}
7666bool ByteCodeEmitter::emitCastIntAPSSint8(SourceInfo L) {
7667 return emitOp<>(OP_CastIntAPSSint8, L);
7668}
7669bool ByteCodeEmitter::emitCastIntAPSUint16(SourceInfo L) {
7670 return emitOp<>(OP_CastIntAPSUint16, L);
7671}
7672bool ByteCodeEmitter::emitCastIntAPSSint16(SourceInfo L) {
7673 return emitOp<>(OP_CastIntAPSSint16, L);
7674}
7675bool ByteCodeEmitter::emitCastIntAPSUint32(SourceInfo L) {
7676 return emitOp<>(OP_CastIntAPSUint32, L);
7677}
7678bool ByteCodeEmitter::emitCastIntAPSSint32(SourceInfo L) {
7679 return emitOp<>(OP_CastIntAPSSint32, L);
7680}
7681bool ByteCodeEmitter::emitCastIntAPSUint64(SourceInfo L) {
7682 return emitOp<>(OP_CastIntAPSUint64, L);
7683}
7684bool ByteCodeEmitter::emitCastIntAPSSint64(SourceInfo L) {
7685 return emitOp<>(OP_CastIntAPSSint64, L);
7686}
7687bool ByteCodeEmitter::emitCastIntAPSBool(SourceInfo L) {
7688 return emitOp<>(OP_CastIntAPSBool, L);
7689}
7690bool ByteCodeEmitter::emitCastFixedPointUint8(SourceInfo L) {
7691 return emitOp<>(OP_CastFixedPointUint8, L);
7692}
7693bool ByteCodeEmitter::emitCastFixedPointSint8(SourceInfo L) {
7694 return emitOp<>(OP_CastFixedPointSint8, L);
7695}
7696bool ByteCodeEmitter::emitCastFixedPointUint16(SourceInfo L) {
7697 return emitOp<>(OP_CastFixedPointUint16, L);
7698}
7699bool ByteCodeEmitter::emitCastFixedPointSint16(SourceInfo L) {
7700 return emitOp<>(OP_CastFixedPointSint16, L);
7701}
7702bool ByteCodeEmitter::emitCastFixedPointUint32(SourceInfo L) {
7703 return emitOp<>(OP_CastFixedPointUint32, L);
7704}
7705bool ByteCodeEmitter::emitCastFixedPointSint32(SourceInfo L) {
7706 return emitOp<>(OP_CastFixedPointSint32, L);
7707}
7708bool ByteCodeEmitter::emitCastFixedPointUint64(SourceInfo L) {
7709 return emitOp<>(OP_CastFixedPointUint64, L);
7710}
7711bool ByteCodeEmitter::emitCastFixedPointSint64(SourceInfo L) {
7712 return emitOp<>(OP_CastFixedPointSint64, L);
7713}
7714bool ByteCodeEmitter::emitCastFixedPointBool(SourceInfo L) {
7715 return emitOp<>(OP_CastFixedPointBool, L);
7716}
7717#endif
7718#ifdef GET_EVAL_IMPL
7719bool EvalEmitter::emitCastUint8Uint8(SourceInfo L) {
7720 if (!isActive()) return true;
7721 CurrentSource = L;
7722 return Cast<PT_Uint8, PT_Uint8>(S, CodePtr());
7723}
7724bool EvalEmitter::emitCastUint8Sint8(SourceInfo L) {
7725 if (!isActive()) return true;
7726 CurrentSource = L;
7727 return Cast<PT_Uint8, PT_Sint8>(S, CodePtr());
7728}
7729bool EvalEmitter::emitCastUint8Uint16(SourceInfo L) {
7730 if (!isActive()) return true;
7731 CurrentSource = L;
7732 return Cast<PT_Uint8, PT_Uint16>(S, CodePtr());
7733}
7734bool EvalEmitter::emitCastUint8Sint16(SourceInfo L) {
7735 if (!isActive()) return true;
7736 CurrentSource = L;
7737 return Cast<PT_Uint8, PT_Sint16>(S, CodePtr());
7738}
7739bool EvalEmitter::emitCastUint8Uint32(SourceInfo L) {
7740 if (!isActive()) return true;
7741 CurrentSource = L;
7742 return Cast<PT_Uint8, PT_Uint32>(S, CodePtr());
7743}
7744bool EvalEmitter::emitCastUint8Sint32(SourceInfo L) {
7745 if (!isActive()) return true;
7746 CurrentSource = L;
7747 return Cast<PT_Uint8, PT_Sint32>(S, CodePtr());
7748}
7749bool EvalEmitter::emitCastUint8Uint64(SourceInfo L) {
7750 if (!isActive()) return true;
7751 CurrentSource = L;
7752 return Cast<PT_Uint8, PT_Uint64>(S, CodePtr());
7753}
7754bool EvalEmitter::emitCastUint8Sint64(SourceInfo L) {
7755 if (!isActive()) return true;
7756 CurrentSource = L;
7757 return Cast<PT_Uint8, PT_Sint64>(S, CodePtr());
7758}
7759bool EvalEmitter::emitCastUint8Bool(SourceInfo L) {
7760 if (!isActive()) return true;
7761 CurrentSource = L;
7762 return Cast<PT_Uint8, PT_Bool>(S, CodePtr());
7763}
7764bool EvalEmitter::emitCastSint8Uint8(SourceInfo L) {
7765 if (!isActive()) return true;
7766 CurrentSource = L;
7767 return Cast<PT_Sint8, PT_Uint8>(S, CodePtr());
7768}
7769bool EvalEmitter::emitCastSint8Sint8(SourceInfo L) {
7770 if (!isActive()) return true;
7771 CurrentSource = L;
7772 return Cast<PT_Sint8, PT_Sint8>(S, CodePtr());
7773}
7774bool EvalEmitter::emitCastSint8Uint16(SourceInfo L) {
7775 if (!isActive()) return true;
7776 CurrentSource = L;
7777 return Cast<PT_Sint8, PT_Uint16>(S, CodePtr());
7778}
7779bool EvalEmitter::emitCastSint8Sint16(SourceInfo L) {
7780 if (!isActive()) return true;
7781 CurrentSource = L;
7782 return Cast<PT_Sint8, PT_Sint16>(S, CodePtr());
7783}
7784bool EvalEmitter::emitCastSint8Uint32(SourceInfo L) {
7785 if (!isActive()) return true;
7786 CurrentSource = L;
7787 return Cast<PT_Sint8, PT_Uint32>(S, CodePtr());
7788}
7789bool EvalEmitter::emitCastSint8Sint32(SourceInfo L) {
7790 if (!isActive()) return true;
7791 CurrentSource = L;
7792 return Cast<PT_Sint8, PT_Sint32>(S, CodePtr());
7793}
7794bool EvalEmitter::emitCastSint8Uint64(SourceInfo L) {
7795 if (!isActive()) return true;
7796 CurrentSource = L;
7797 return Cast<PT_Sint8, PT_Uint64>(S, CodePtr());
7798}
7799bool EvalEmitter::emitCastSint8Sint64(SourceInfo L) {
7800 if (!isActive()) return true;
7801 CurrentSource = L;
7802 return Cast<PT_Sint8, PT_Sint64>(S, CodePtr());
7803}
7804bool EvalEmitter::emitCastSint8Bool(SourceInfo L) {
7805 if (!isActive()) return true;
7806 CurrentSource = L;
7807 return Cast<PT_Sint8, PT_Bool>(S, CodePtr());
7808}
7809bool EvalEmitter::emitCastUint16Uint8(SourceInfo L) {
7810 if (!isActive()) return true;
7811 CurrentSource = L;
7812 return Cast<PT_Uint16, PT_Uint8>(S, CodePtr());
7813}
7814bool EvalEmitter::emitCastUint16Sint8(SourceInfo L) {
7815 if (!isActive()) return true;
7816 CurrentSource = L;
7817 return Cast<PT_Uint16, PT_Sint8>(S, CodePtr());
7818}
7819bool EvalEmitter::emitCastUint16Uint16(SourceInfo L) {
7820 if (!isActive()) return true;
7821 CurrentSource = L;
7822 return Cast<PT_Uint16, PT_Uint16>(S, CodePtr());
7823}
7824bool EvalEmitter::emitCastUint16Sint16(SourceInfo L) {
7825 if (!isActive()) return true;
7826 CurrentSource = L;
7827 return Cast<PT_Uint16, PT_Sint16>(S, CodePtr());
7828}
7829bool EvalEmitter::emitCastUint16Uint32(SourceInfo L) {
7830 if (!isActive()) return true;
7831 CurrentSource = L;
7832 return Cast<PT_Uint16, PT_Uint32>(S, CodePtr());
7833}
7834bool EvalEmitter::emitCastUint16Sint32(SourceInfo L) {
7835 if (!isActive()) return true;
7836 CurrentSource = L;
7837 return Cast<PT_Uint16, PT_Sint32>(S, CodePtr());
7838}
7839bool EvalEmitter::emitCastUint16Uint64(SourceInfo L) {
7840 if (!isActive()) return true;
7841 CurrentSource = L;
7842 return Cast<PT_Uint16, PT_Uint64>(S, CodePtr());
7843}
7844bool EvalEmitter::emitCastUint16Sint64(SourceInfo L) {
7845 if (!isActive()) return true;
7846 CurrentSource = L;
7847 return Cast<PT_Uint16, PT_Sint64>(S, CodePtr());
7848}
7849bool EvalEmitter::emitCastUint16Bool(SourceInfo L) {
7850 if (!isActive()) return true;
7851 CurrentSource = L;
7852 return Cast<PT_Uint16, PT_Bool>(S, CodePtr());
7853}
7854bool EvalEmitter::emitCastSint16Uint8(SourceInfo L) {
7855 if (!isActive()) return true;
7856 CurrentSource = L;
7857 return Cast<PT_Sint16, PT_Uint8>(S, CodePtr());
7858}
7859bool EvalEmitter::emitCastSint16Sint8(SourceInfo L) {
7860 if (!isActive()) return true;
7861 CurrentSource = L;
7862 return Cast<PT_Sint16, PT_Sint8>(S, CodePtr());
7863}
7864bool EvalEmitter::emitCastSint16Uint16(SourceInfo L) {
7865 if (!isActive()) return true;
7866 CurrentSource = L;
7867 return Cast<PT_Sint16, PT_Uint16>(S, CodePtr());
7868}
7869bool EvalEmitter::emitCastSint16Sint16(SourceInfo L) {
7870 if (!isActive()) return true;
7871 CurrentSource = L;
7872 return Cast<PT_Sint16, PT_Sint16>(S, CodePtr());
7873}
7874bool EvalEmitter::emitCastSint16Uint32(SourceInfo L) {
7875 if (!isActive()) return true;
7876 CurrentSource = L;
7877 return Cast<PT_Sint16, PT_Uint32>(S, CodePtr());
7878}
7879bool EvalEmitter::emitCastSint16Sint32(SourceInfo L) {
7880 if (!isActive()) return true;
7881 CurrentSource = L;
7882 return Cast<PT_Sint16, PT_Sint32>(S, CodePtr());
7883}
7884bool EvalEmitter::emitCastSint16Uint64(SourceInfo L) {
7885 if (!isActive()) return true;
7886 CurrentSource = L;
7887 return Cast<PT_Sint16, PT_Uint64>(S, CodePtr());
7888}
7889bool EvalEmitter::emitCastSint16Sint64(SourceInfo L) {
7890 if (!isActive()) return true;
7891 CurrentSource = L;
7892 return Cast<PT_Sint16, PT_Sint64>(S, CodePtr());
7893}
7894bool EvalEmitter::emitCastSint16Bool(SourceInfo L) {
7895 if (!isActive()) return true;
7896 CurrentSource = L;
7897 return Cast<PT_Sint16, PT_Bool>(S, CodePtr());
7898}
7899bool EvalEmitter::emitCastUint32Uint8(SourceInfo L) {
7900 if (!isActive()) return true;
7901 CurrentSource = L;
7902 return Cast<PT_Uint32, PT_Uint8>(S, CodePtr());
7903}
7904bool EvalEmitter::emitCastUint32Sint8(SourceInfo L) {
7905 if (!isActive()) return true;
7906 CurrentSource = L;
7907 return Cast<PT_Uint32, PT_Sint8>(S, CodePtr());
7908}
7909bool EvalEmitter::emitCastUint32Uint16(SourceInfo L) {
7910 if (!isActive()) return true;
7911 CurrentSource = L;
7912 return Cast<PT_Uint32, PT_Uint16>(S, CodePtr());
7913}
7914bool EvalEmitter::emitCastUint32Sint16(SourceInfo L) {
7915 if (!isActive()) return true;
7916 CurrentSource = L;
7917 return Cast<PT_Uint32, PT_Sint16>(S, CodePtr());
7918}
7919bool EvalEmitter::emitCastUint32Uint32(SourceInfo L) {
7920 if (!isActive()) return true;
7921 CurrentSource = L;
7922 return Cast<PT_Uint32, PT_Uint32>(S, CodePtr());
7923}
7924bool EvalEmitter::emitCastUint32Sint32(SourceInfo L) {
7925 if (!isActive()) return true;
7926 CurrentSource = L;
7927 return Cast<PT_Uint32, PT_Sint32>(S, CodePtr());
7928}
7929bool EvalEmitter::emitCastUint32Uint64(SourceInfo L) {
7930 if (!isActive()) return true;
7931 CurrentSource = L;
7932 return Cast<PT_Uint32, PT_Uint64>(S, CodePtr());
7933}
7934bool EvalEmitter::emitCastUint32Sint64(SourceInfo L) {
7935 if (!isActive()) return true;
7936 CurrentSource = L;
7937 return Cast<PT_Uint32, PT_Sint64>(S, CodePtr());
7938}
7939bool EvalEmitter::emitCastUint32Bool(SourceInfo L) {
7940 if (!isActive()) return true;
7941 CurrentSource = L;
7942 return Cast<PT_Uint32, PT_Bool>(S, CodePtr());
7943}
7944bool EvalEmitter::emitCastSint32Uint8(SourceInfo L) {
7945 if (!isActive()) return true;
7946 CurrentSource = L;
7947 return Cast<PT_Sint32, PT_Uint8>(S, CodePtr());
7948}
7949bool EvalEmitter::emitCastSint32Sint8(SourceInfo L) {
7950 if (!isActive()) return true;
7951 CurrentSource = L;
7952 return Cast<PT_Sint32, PT_Sint8>(S, CodePtr());
7953}
7954bool EvalEmitter::emitCastSint32Uint16(SourceInfo L) {
7955 if (!isActive()) return true;
7956 CurrentSource = L;
7957 return Cast<PT_Sint32, PT_Uint16>(S, CodePtr());
7958}
7959bool EvalEmitter::emitCastSint32Sint16(SourceInfo L) {
7960 if (!isActive()) return true;
7961 CurrentSource = L;
7962 return Cast<PT_Sint32, PT_Sint16>(S, CodePtr());
7963}
7964bool EvalEmitter::emitCastSint32Uint32(SourceInfo L) {
7965 if (!isActive()) return true;
7966 CurrentSource = L;
7967 return Cast<PT_Sint32, PT_Uint32>(S, CodePtr());
7968}
7969bool EvalEmitter::emitCastSint32Sint32(SourceInfo L) {
7970 if (!isActive()) return true;
7971 CurrentSource = L;
7972 return Cast<PT_Sint32, PT_Sint32>(S, CodePtr());
7973}
7974bool EvalEmitter::emitCastSint32Uint64(SourceInfo L) {
7975 if (!isActive()) return true;
7976 CurrentSource = L;
7977 return Cast<PT_Sint32, PT_Uint64>(S, CodePtr());
7978}
7979bool EvalEmitter::emitCastSint32Sint64(SourceInfo L) {
7980 if (!isActive()) return true;
7981 CurrentSource = L;
7982 return Cast<PT_Sint32, PT_Sint64>(S, CodePtr());
7983}
7984bool EvalEmitter::emitCastSint32Bool(SourceInfo L) {
7985 if (!isActive()) return true;
7986 CurrentSource = L;
7987 return Cast<PT_Sint32, PT_Bool>(S, CodePtr());
7988}
7989bool EvalEmitter::emitCastUint64Uint8(SourceInfo L) {
7990 if (!isActive()) return true;
7991 CurrentSource = L;
7992 return Cast<PT_Uint64, PT_Uint8>(S, CodePtr());
7993}
7994bool EvalEmitter::emitCastUint64Sint8(SourceInfo L) {
7995 if (!isActive()) return true;
7996 CurrentSource = L;
7997 return Cast<PT_Uint64, PT_Sint8>(S, CodePtr());
7998}
7999bool EvalEmitter::emitCastUint64Uint16(SourceInfo L) {
8000 if (!isActive()) return true;
8001 CurrentSource = L;
8002 return Cast<PT_Uint64, PT_Uint16>(S, CodePtr());
8003}
8004bool EvalEmitter::emitCastUint64Sint16(SourceInfo L) {
8005 if (!isActive()) return true;
8006 CurrentSource = L;
8007 return Cast<PT_Uint64, PT_Sint16>(S, CodePtr());
8008}
8009bool EvalEmitter::emitCastUint64Uint32(SourceInfo L) {
8010 if (!isActive()) return true;
8011 CurrentSource = L;
8012 return Cast<PT_Uint64, PT_Uint32>(S, CodePtr());
8013}
8014bool EvalEmitter::emitCastUint64Sint32(SourceInfo L) {
8015 if (!isActive()) return true;
8016 CurrentSource = L;
8017 return Cast<PT_Uint64, PT_Sint32>(S, CodePtr());
8018}
8019bool EvalEmitter::emitCastUint64Uint64(SourceInfo L) {
8020 if (!isActive()) return true;
8021 CurrentSource = L;
8022 return Cast<PT_Uint64, PT_Uint64>(S, CodePtr());
8023}
8024bool EvalEmitter::emitCastUint64Sint64(SourceInfo L) {
8025 if (!isActive()) return true;
8026 CurrentSource = L;
8027 return Cast<PT_Uint64, PT_Sint64>(S, CodePtr());
8028}
8029bool EvalEmitter::emitCastUint64Bool(SourceInfo L) {
8030 if (!isActive()) return true;
8031 CurrentSource = L;
8032 return Cast<PT_Uint64, PT_Bool>(S, CodePtr());
8033}
8034bool EvalEmitter::emitCastSint64Uint8(SourceInfo L) {
8035 if (!isActive()) return true;
8036 CurrentSource = L;
8037 return Cast<PT_Sint64, PT_Uint8>(S, CodePtr());
8038}
8039bool EvalEmitter::emitCastSint64Sint8(SourceInfo L) {
8040 if (!isActive()) return true;
8041 CurrentSource = L;
8042 return Cast<PT_Sint64, PT_Sint8>(S, CodePtr());
8043}
8044bool EvalEmitter::emitCastSint64Uint16(SourceInfo L) {
8045 if (!isActive()) return true;
8046 CurrentSource = L;
8047 return Cast<PT_Sint64, PT_Uint16>(S, CodePtr());
8048}
8049bool EvalEmitter::emitCastSint64Sint16(SourceInfo L) {
8050 if (!isActive()) return true;
8051 CurrentSource = L;
8052 return Cast<PT_Sint64, PT_Sint16>(S, CodePtr());
8053}
8054bool EvalEmitter::emitCastSint64Uint32(SourceInfo L) {
8055 if (!isActive()) return true;
8056 CurrentSource = L;
8057 return Cast<PT_Sint64, PT_Uint32>(S, CodePtr());
8058}
8059bool EvalEmitter::emitCastSint64Sint32(SourceInfo L) {
8060 if (!isActive()) return true;
8061 CurrentSource = L;
8062 return Cast<PT_Sint64, PT_Sint32>(S, CodePtr());
8063}
8064bool EvalEmitter::emitCastSint64Uint64(SourceInfo L) {
8065 if (!isActive()) return true;
8066 CurrentSource = L;
8067 return Cast<PT_Sint64, PT_Uint64>(S, CodePtr());
8068}
8069bool EvalEmitter::emitCastSint64Sint64(SourceInfo L) {
8070 if (!isActive()) return true;
8071 CurrentSource = L;
8072 return Cast<PT_Sint64, PT_Sint64>(S, CodePtr());
8073}
8074bool EvalEmitter::emitCastSint64Bool(SourceInfo L) {
8075 if (!isActive()) return true;
8076 CurrentSource = L;
8077 return Cast<PT_Sint64, PT_Bool>(S, CodePtr());
8078}
8079bool EvalEmitter::emitCastBoolUint8(SourceInfo L) {
8080 if (!isActive()) return true;
8081 CurrentSource = L;
8082 return Cast<PT_Bool, PT_Uint8>(S, CodePtr());
8083}
8084bool EvalEmitter::emitCastBoolSint8(SourceInfo L) {
8085 if (!isActive()) return true;
8086 CurrentSource = L;
8087 return Cast<PT_Bool, PT_Sint8>(S, CodePtr());
8088}
8089bool EvalEmitter::emitCastBoolUint16(SourceInfo L) {
8090 if (!isActive()) return true;
8091 CurrentSource = L;
8092 return Cast<PT_Bool, PT_Uint16>(S, CodePtr());
8093}
8094bool EvalEmitter::emitCastBoolSint16(SourceInfo L) {
8095 if (!isActive()) return true;
8096 CurrentSource = L;
8097 return Cast<PT_Bool, PT_Sint16>(S, CodePtr());
8098}
8099bool EvalEmitter::emitCastBoolUint32(SourceInfo L) {
8100 if (!isActive()) return true;
8101 CurrentSource = L;
8102 return Cast<PT_Bool, PT_Uint32>(S, CodePtr());
8103}
8104bool EvalEmitter::emitCastBoolSint32(SourceInfo L) {
8105 if (!isActive()) return true;
8106 CurrentSource = L;
8107 return Cast<PT_Bool, PT_Sint32>(S, CodePtr());
8108}
8109bool EvalEmitter::emitCastBoolUint64(SourceInfo L) {
8110 if (!isActive()) return true;
8111 CurrentSource = L;
8112 return Cast<PT_Bool, PT_Uint64>(S, CodePtr());
8113}
8114bool EvalEmitter::emitCastBoolSint64(SourceInfo L) {
8115 if (!isActive()) return true;
8116 CurrentSource = L;
8117 return Cast<PT_Bool, PT_Sint64>(S, CodePtr());
8118}
8119bool EvalEmitter::emitCastBoolBool(SourceInfo L) {
8120 if (!isActive()) return true;
8121 CurrentSource = L;
8122 return Cast<PT_Bool, PT_Bool>(S, CodePtr());
8123}
8124bool EvalEmitter::emitCastIntAPUint8(SourceInfo L) {
8125 if (!isActive()) return true;
8126 CurrentSource = L;
8127 return Cast<PT_IntAP, PT_Uint8>(S, CodePtr());
8128}
8129bool EvalEmitter::emitCastIntAPSint8(SourceInfo L) {
8130 if (!isActive()) return true;
8131 CurrentSource = L;
8132 return Cast<PT_IntAP, PT_Sint8>(S, CodePtr());
8133}
8134bool EvalEmitter::emitCastIntAPUint16(SourceInfo L) {
8135 if (!isActive()) return true;
8136 CurrentSource = L;
8137 return Cast<PT_IntAP, PT_Uint16>(S, CodePtr());
8138}
8139bool EvalEmitter::emitCastIntAPSint16(SourceInfo L) {
8140 if (!isActive()) return true;
8141 CurrentSource = L;
8142 return Cast<PT_IntAP, PT_Sint16>(S, CodePtr());
8143}
8144bool EvalEmitter::emitCastIntAPUint32(SourceInfo L) {
8145 if (!isActive()) return true;
8146 CurrentSource = L;
8147 return Cast<PT_IntAP, PT_Uint32>(S, CodePtr());
8148}
8149bool EvalEmitter::emitCastIntAPSint32(SourceInfo L) {
8150 if (!isActive()) return true;
8151 CurrentSource = L;
8152 return Cast<PT_IntAP, PT_Sint32>(S, CodePtr());
8153}
8154bool EvalEmitter::emitCastIntAPUint64(SourceInfo L) {
8155 if (!isActive()) return true;
8156 CurrentSource = L;
8157 return Cast<PT_IntAP, PT_Uint64>(S, CodePtr());
8158}
8159bool EvalEmitter::emitCastIntAPSint64(SourceInfo L) {
8160 if (!isActive()) return true;
8161 CurrentSource = L;
8162 return Cast<PT_IntAP, PT_Sint64>(S, CodePtr());
8163}
8164bool EvalEmitter::emitCastIntAPBool(SourceInfo L) {
8165 if (!isActive()) return true;
8166 CurrentSource = L;
8167 return Cast<PT_IntAP, PT_Bool>(S, CodePtr());
8168}
8169bool EvalEmitter::emitCastIntAPSUint8(SourceInfo L) {
8170 if (!isActive()) return true;
8171 CurrentSource = L;
8172 return Cast<PT_IntAPS, PT_Uint8>(S, CodePtr());
8173}
8174bool EvalEmitter::emitCastIntAPSSint8(SourceInfo L) {
8175 if (!isActive()) return true;
8176 CurrentSource = L;
8177 return Cast<PT_IntAPS, PT_Sint8>(S, CodePtr());
8178}
8179bool EvalEmitter::emitCastIntAPSUint16(SourceInfo L) {
8180 if (!isActive()) return true;
8181 CurrentSource = L;
8182 return Cast<PT_IntAPS, PT_Uint16>(S, CodePtr());
8183}
8184bool EvalEmitter::emitCastIntAPSSint16(SourceInfo L) {
8185 if (!isActive()) return true;
8186 CurrentSource = L;
8187 return Cast<PT_IntAPS, PT_Sint16>(S, CodePtr());
8188}
8189bool EvalEmitter::emitCastIntAPSUint32(SourceInfo L) {
8190 if (!isActive()) return true;
8191 CurrentSource = L;
8192 return Cast<PT_IntAPS, PT_Uint32>(S, CodePtr());
8193}
8194bool EvalEmitter::emitCastIntAPSSint32(SourceInfo L) {
8195 if (!isActive()) return true;
8196 CurrentSource = L;
8197 return Cast<PT_IntAPS, PT_Sint32>(S, CodePtr());
8198}
8199bool EvalEmitter::emitCastIntAPSUint64(SourceInfo L) {
8200 if (!isActive()) return true;
8201 CurrentSource = L;
8202 return Cast<PT_IntAPS, PT_Uint64>(S, CodePtr());
8203}
8204bool EvalEmitter::emitCastIntAPSSint64(SourceInfo L) {
8205 if (!isActive()) return true;
8206 CurrentSource = L;
8207 return Cast<PT_IntAPS, PT_Sint64>(S, CodePtr());
8208}
8209bool EvalEmitter::emitCastIntAPSBool(SourceInfo L) {
8210 if (!isActive()) return true;
8211 CurrentSource = L;
8212 return Cast<PT_IntAPS, PT_Bool>(S, CodePtr());
8213}
8214bool EvalEmitter::emitCastFixedPointUint8(SourceInfo L) {
8215 if (!isActive()) return true;
8216 CurrentSource = L;
8217 return Cast<PT_FixedPoint, PT_Uint8>(S, CodePtr());
8218}
8219bool EvalEmitter::emitCastFixedPointSint8(SourceInfo L) {
8220 if (!isActive()) return true;
8221 CurrentSource = L;
8222 return Cast<PT_FixedPoint, PT_Sint8>(S, CodePtr());
8223}
8224bool EvalEmitter::emitCastFixedPointUint16(SourceInfo L) {
8225 if (!isActive()) return true;
8226 CurrentSource = L;
8227 return Cast<PT_FixedPoint, PT_Uint16>(S, CodePtr());
8228}
8229bool EvalEmitter::emitCastFixedPointSint16(SourceInfo L) {
8230 if (!isActive()) return true;
8231 CurrentSource = L;
8232 return Cast<PT_FixedPoint, PT_Sint16>(S, CodePtr());
8233}
8234bool EvalEmitter::emitCastFixedPointUint32(SourceInfo L) {
8235 if (!isActive()) return true;
8236 CurrentSource = L;
8237 return Cast<PT_FixedPoint, PT_Uint32>(S, CodePtr());
8238}
8239bool EvalEmitter::emitCastFixedPointSint32(SourceInfo L) {
8240 if (!isActive()) return true;
8241 CurrentSource = L;
8242 return Cast<PT_FixedPoint, PT_Sint32>(S, CodePtr());
8243}
8244bool EvalEmitter::emitCastFixedPointUint64(SourceInfo L) {
8245 if (!isActive()) return true;
8246 CurrentSource = L;
8247 return Cast<PT_FixedPoint, PT_Uint64>(S, CodePtr());
8248}
8249bool EvalEmitter::emitCastFixedPointSint64(SourceInfo L) {
8250 if (!isActive()) return true;
8251 CurrentSource = L;
8252 return Cast<PT_FixedPoint, PT_Sint64>(S, CodePtr());
8253}
8254bool EvalEmitter::emitCastFixedPointBool(SourceInfo L) {
8255 if (!isActive()) return true;
8256 CurrentSource = L;
8257 return Cast<PT_FixedPoint, PT_Bool>(S, CodePtr());
8258}
8259#endif
8260#ifdef GET_OPCODE_NAMES
8261OP_CastAPSint8,
8262OP_CastAPUint8,
8263OP_CastAPSint16,
8264OP_CastAPUint16,
8265OP_CastAPSint32,
8266OP_CastAPUint32,
8267OP_CastAPSint64,
8268OP_CastAPUint64,
8269OP_CastAPIntAP,
8270OP_CastAPIntAPS,
8271OP_CastAPBool,
8272OP_CastAPFixedPoint,
8273#endif
8274#ifdef GET_INTERPFN_LIST
8275&Interp_CastAPSint8,
8276&Interp_CastAPUint8,
8277&Interp_CastAPSint16,
8278&Interp_CastAPUint16,
8279&Interp_CastAPSint32,
8280&Interp_CastAPUint32,
8281&Interp_CastAPSint64,
8282&Interp_CastAPUint64,
8283&Interp_CastAPIntAP,
8284&Interp_CastAPIntAPS,
8285&Interp_CastAPBool,
8286&Interp_CastAPFixedPoint,
8287#endif
8288#ifdef GET_INTERPFN_DISPATCHERS
8289PRESERVE_NONE
8290static bool Interp_CastAPSint8(InterpState &S) {
8291 {
8292 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8293 if (!CastAP<PT_Sint8>(S, V0)) return false;
8294 }
8295#if USE_TAILCALLS
8296 MUSTTAIL return InterpNext(S);
8297#else
8298 return true;
8299#endif
8300}
8301PRESERVE_NONE
8302static bool Interp_CastAPUint8(InterpState &S) {
8303 {
8304 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8305 if (!CastAP<PT_Uint8>(S, V0)) return false;
8306 }
8307#if USE_TAILCALLS
8308 MUSTTAIL return InterpNext(S);
8309#else
8310 return true;
8311#endif
8312}
8313PRESERVE_NONE
8314static bool Interp_CastAPSint16(InterpState &S) {
8315 {
8316 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8317 if (!CastAP<PT_Sint16>(S, V0)) return false;
8318 }
8319#if USE_TAILCALLS
8320 MUSTTAIL return InterpNext(S);
8321#else
8322 return true;
8323#endif
8324}
8325PRESERVE_NONE
8326static bool Interp_CastAPUint16(InterpState &S) {
8327 {
8328 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8329 if (!CastAP<PT_Uint16>(S, V0)) return false;
8330 }
8331#if USE_TAILCALLS
8332 MUSTTAIL return InterpNext(S);
8333#else
8334 return true;
8335#endif
8336}
8337PRESERVE_NONE
8338static bool Interp_CastAPSint32(InterpState &S) {
8339 {
8340 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8341 if (!CastAP<PT_Sint32>(S, V0)) return false;
8342 }
8343#if USE_TAILCALLS
8344 MUSTTAIL return InterpNext(S);
8345#else
8346 return true;
8347#endif
8348}
8349PRESERVE_NONE
8350static bool Interp_CastAPUint32(InterpState &S) {
8351 {
8352 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8353 if (!CastAP<PT_Uint32>(S, V0)) return false;
8354 }
8355#if USE_TAILCALLS
8356 MUSTTAIL return InterpNext(S);
8357#else
8358 return true;
8359#endif
8360}
8361PRESERVE_NONE
8362static bool Interp_CastAPSint64(InterpState &S) {
8363 {
8364 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8365 if (!CastAP<PT_Sint64>(S, V0)) return false;
8366 }
8367#if USE_TAILCALLS
8368 MUSTTAIL return InterpNext(S);
8369#else
8370 return true;
8371#endif
8372}
8373PRESERVE_NONE
8374static bool Interp_CastAPUint64(InterpState &S) {
8375 {
8376 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8377 if (!CastAP<PT_Uint64>(S, V0)) return false;
8378 }
8379#if USE_TAILCALLS
8380 MUSTTAIL return InterpNext(S);
8381#else
8382 return true;
8383#endif
8384}
8385PRESERVE_NONE
8386static bool Interp_CastAPIntAP(InterpState &S) {
8387 {
8388 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8389 if (!CastAP<PT_IntAP>(S, V0)) return false;
8390 }
8391#if USE_TAILCALLS
8392 MUSTTAIL return InterpNext(S);
8393#else
8394 return true;
8395#endif
8396}
8397PRESERVE_NONE
8398static bool Interp_CastAPIntAPS(InterpState &S) {
8399 {
8400 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8401 if (!CastAP<PT_IntAPS>(S, V0)) return false;
8402 }
8403#if USE_TAILCALLS
8404 MUSTTAIL return InterpNext(S);
8405#else
8406 return true;
8407#endif
8408}
8409PRESERVE_NONE
8410static bool Interp_CastAPBool(InterpState &S) {
8411 {
8412 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8413 if (!CastAP<PT_Bool>(S, V0)) return false;
8414 }
8415#if USE_TAILCALLS
8416 MUSTTAIL return InterpNext(S);
8417#else
8418 return true;
8419#endif
8420}
8421PRESERVE_NONE
8422static bool Interp_CastAPFixedPoint(InterpState &S) {
8423 {
8424 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8425 if (!CastAP<PT_FixedPoint>(S, V0)) return false;
8426 }
8427#if USE_TAILCALLS
8428 MUSTTAIL return InterpNext(S);
8429#else
8430 return true;
8431#endif
8432}
8433#endif
8434#ifdef GET_DISASM
8435case OP_CastAPSint8:
8436 Text.Op = PrintName("CastAPSint8");
8437 Text.Args.push_back(printArg<uint32_t>(PC));
8438 break;
8439case OP_CastAPUint8:
8440 Text.Op = PrintName("CastAPUint8");
8441 Text.Args.push_back(printArg<uint32_t>(PC));
8442 break;
8443case OP_CastAPSint16:
8444 Text.Op = PrintName("CastAPSint16");
8445 Text.Args.push_back(printArg<uint32_t>(PC));
8446 break;
8447case OP_CastAPUint16:
8448 Text.Op = PrintName("CastAPUint16");
8449 Text.Args.push_back(printArg<uint32_t>(PC));
8450 break;
8451case OP_CastAPSint32:
8452 Text.Op = PrintName("CastAPSint32");
8453 Text.Args.push_back(printArg<uint32_t>(PC));
8454 break;
8455case OP_CastAPUint32:
8456 Text.Op = PrintName("CastAPUint32");
8457 Text.Args.push_back(printArg<uint32_t>(PC));
8458 break;
8459case OP_CastAPSint64:
8460 Text.Op = PrintName("CastAPSint64");
8461 Text.Args.push_back(printArg<uint32_t>(PC));
8462 break;
8463case OP_CastAPUint64:
8464 Text.Op = PrintName("CastAPUint64");
8465 Text.Args.push_back(printArg<uint32_t>(PC));
8466 break;
8467case OP_CastAPIntAP:
8468 Text.Op = PrintName("CastAPIntAP");
8469 Text.Args.push_back(printArg<uint32_t>(PC));
8470 break;
8471case OP_CastAPIntAPS:
8472 Text.Op = PrintName("CastAPIntAPS");
8473 Text.Args.push_back(printArg<uint32_t>(PC));
8474 break;
8475case OP_CastAPBool:
8476 Text.Op = PrintName("CastAPBool");
8477 Text.Args.push_back(printArg<uint32_t>(PC));
8478 break;
8479case OP_CastAPFixedPoint:
8480 Text.Op = PrintName("CastAPFixedPoint");
8481 Text.Args.push_back(printArg<uint32_t>(PC));
8482 break;
8483#endif
8484#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8485bool emitCastAPSint8( uint32_t , SourceInfo);
8486bool emitCastAPUint8( uint32_t , SourceInfo);
8487bool emitCastAPSint16( uint32_t , SourceInfo);
8488bool emitCastAPUint16( uint32_t , SourceInfo);
8489bool emitCastAPSint32( uint32_t , SourceInfo);
8490bool emitCastAPUint32( uint32_t , SourceInfo);
8491bool emitCastAPSint64( uint32_t , SourceInfo);
8492bool emitCastAPUint64( uint32_t , SourceInfo);
8493bool emitCastAPIntAP( uint32_t , SourceInfo);
8494bool emitCastAPIntAPS( uint32_t , SourceInfo);
8495bool emitCastAPBool( uint32_t , SourceInfo);
8496bool emitCastAPFixedPoint( uint32_t , SourceInfo);
8497#endif
8498#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8499[[nodiscard]] bool emitCastAP(PrimType, uint32_t, SourceInfo I);
8500#endif
8501#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
8502bool
8503#if defined(GET_EVAL_IMPL)
8504EvalEmitter
8505#else
8506ByteCodeEmitter
8507#endif
8508::emitCastAP(PrimType T0, uint32_t A0, SourceInfo I) {
8509 switch (T0) {
8510 case PT_Sint8:
8511 return emitCastAPSint8(A0, I);
8512 case PT_Uint8:
8513 return emitCastAPUint8(A0, I);
8514 case PT_Sint16:
8515 return emitCastAPSint16(A0, I);
8516 case PT_Uint16:
8517 return emitCastAPUint16(A0, I);
8518 case PT_Sint32:
8519 return emitCastAPSint32(A0, I);
8520 case PT_Uint32:
8521 return emitCastAPUint32(A0, I);
8522 case PT_Sint64:
8523 return emitCastAPSint64(A0, I);
8524 case PT_Uint64:
8525 return emitCastAPUint64(A0, I);
8526 case PT_IntAP:
8527 return emitCastAPIntAP(A0, I);
8528 case PT_IntAPS:
8529 return emitCastAPIntAPS(A0, I);
8530 case PT_Bool:
8531 return emitCastAPBool(A0, I);
8532 case PT_FixedPoint:
8533 return emitCastAPFixedPoint(A0, I);
8534 default: llvm_unreachable("invalid type: emitCastAP");
8535 }
8536 llvm_unreachable("invalid enum value");
8537}
8538#endif
8539#ifdef GET_LINK_IMPL
8540bool ByteCodeEmitter::emitCastAPSint8( uint32_t A0, SourceInfo L) {
8541 return emitOp<uint32_t>(OP_CastAPSint8, A0, L);
8542}
8543bool ByteCodeEmitter::emitCastAPUint8( uint32_t A0, SourceInfo L) {
8544 return emitOp<uint32_t>(OP_CastAPUint8, A0, L);
8545}
8546bool ByteCodeEmitter::emitCastAPSint16( uint32_t A0, SourceInfo L) {
8547 return emitOp<uint32_t>(OP_CastAPSint16, A0, L);
8548}
8549bool ByteCodeEmitter::emitCastAPUint16( uint32_t A0, SourceInfo L) {
8550 return emitOp<uint32_t>(OP_CastAPUint16, A0, L);
8551}
8552bool ByteCodeEmitter::emitCastAPSint32( uint32_t A0, SourceInfo L) {
8553 return emitOp<uint32_t>(OP_CastAPSint32, A0, L);
8554}
8555bool ByteCodeEmitter::emitCastAPUint32( uint32_t A0, SourceInfo L) {
8556 return emitOp<uint32_t>(OP_CastAPUint32, A0, L);
8557}
8558bool ByteCodeEmitter::emitCastAPSint64( uint32_t A0, SourceInfo L) {
8559 return emitOp<uint32_t>(OP_CastAPSint64, A0, L);
8560}
8561bool ByteCodeEmitter::emitCastAPUint64( uint32_t A0, SourceInfo L) {
8562 return emitOp<uint32_t>(OP_CastAPUint64, A0, L);
8563}
8564bool ByteCodeEmitter::emitCastAPIntAP( uint32_t A0, SourceInfo L) {
8565 return emitOp<uint32_t>(OP_CastAPIntAP, A0, L);
8566}
8567bool ByteCodeEmitter::emitCastAPIntAPS( uint32_t A0, SourceInfo L) {
8568 return emitOp<uint32_t>(OP_CastAPIntAPS, A0, L);
8569}
8570bool ByteCodeEmitter::emitCastAPBool( uint32_t A0, SourceInfo L) {
8571 return emitOp<uint32_t>(OP_CastAPBool, A0, L);
8572}
8573bool ByteCodeEmitter::emitCastAPFixedPoint( uint32_t A0, SourceInfo L) {
8574 return emitOp<uint32_t>(OP_CastAPFixedPoint, A0, L);
8575}
8576#endif
8577#ifdef GET_EVAL_IMPL
8578bool EvalEmitter::emitCastAPSint8( uint32_t A0, SourceInfo L) {
8579 if (!isActive()) return true;
8580 CurrentSource = L;
8581 return CastAP<PT_Sint8>(S, A0);
8582}
8583bool EvalEmitter::emitCastAPUint8( uint32_t A0, SourceInfo L) {
8584 if (!isActive()) return true;
8585 CurrentSource = L;
8586 return CastAP<PT_Uint8>(S, A0);
8587}
8588bool EvalEmitter::emitCastAPSint16( uint32_t A0, SourceInfo L) {
8589 if (!isActive()) return true;
8590 CurrentSource = L;
8591 return CastAP<PT_Sint16>(S, A0);
8592}
8593bool EvalEmitter::emitCastAPUint16( uint32_t A0, SourceInfo L) {
8594 if (!isActive()) return true;
8595 CurrentSource = L;
8596 return CastAP<PT_Uint16>(S, A0);
8597}
8598bool EvalEmitter::emitCastAPSint32( uint32_t A0, SourceInfo L) {
8599 if (!isActive()) return true;
8600 CurrentSource = L;
8601 return CastAP<PT_Sint32>(S, A0);
8602}
8603bool EvalEmitter::emitCastAPUint32( uint32_t A0, SourceInfo L) {
8604 if (!isActive()) return true;
8605 CurrentSource = L;
8606 return CastAP<PT_Uint32>(S, A0);
8607}
8608bool EvalEmitter::emitCastAPSint64( uint32_t A0, SourceInfo L) {
8609 if (!isActive()) return true;
8610 CurrentSource = L;
8611 return CastAP<PT_Sint64>(S, A0);
8612}
8613bool EvalEmitter::emitCastAPUint64( uint32_t A0, SourceInfo L) {
8614 if (!isActive()) return true;
8615 CurrentSource = L;
8616 return CastAP<PT_Uint64>(S, A0);
8617}
8618bool EvalEmitter::emitCastAPIntAP( uint32_t A0, SourceInfo L) {
8619 if (!isActive()) return true;
8620 CurrentSource = L;
8621 return CastAP<PT_IntAP>(S, A0);
8622}
8623bool EvalEmitter::emitCastAPIntAPS( uint32_t A0, SourceInfo L) {
8624 if (!isActive()) return true;
8625 CurrentSource = L;
8626 return CastAP<PT_IntAPS>(S, A0);
8627}
8628bool EvalEmitter::emitCastAPBool( uint32_t A0, SourceInfo L) {
8629 if (!isActive()) return true;
8630 CurrentSource = L;
8631 return CastAP<PT_Bool>(S, A0);
8632}
8633bool EvalEmitter::emitCastAPFixedPoint( uint32_t A0, SourceInfo L) {
8634 if (!isActive()) return true;
8635 CurrentSource = L;
8636 return CastAP<PT_FixedPoint>(S, A0);
8637}
8638#endif
8639#ifdef GET_OPCODE_NAMES
8640OP_CastAPSSint8,
8641OP_CastAPSUint8,
8642OP_CastAPSSint16,
8643OP_CastAPSUint16,
8644OP_CastAPSSint32,
8645OP_CastAPSUint32,
8646OP_CastAPSSint64,
8647OP_CastAPSUint64,
8648OP_CastAPSIntAP,
8649OP_CastAPSIntAPS,
8650OP_CastAPSBool,
8651OP_CastAPSFixedPoint,
8652#endif
8653#ifdef GET_INTERPFN_LIST
8654&Interp_CastAPSSint8,
8655&Interp_CastAPSUint8,
8656&Interp_CastAPSSint16,
8657&Interp_CastAPSUint16,
8658&Interp_CastAPSSint32,
8659&Interp_CastAPSUint32,
8660&Interp_CastAPSSint64,
8661&Interp_CastAPSUint64,
8662&Interp_CastAPSIntAP,
8663&Interp_CastAPSIntAPS,
8664&Interp_CastAPSBool,
8665&Interp_CastAPSFixedPoint,
8666#endif
8667#ifdef GET_INTERPFN_DISPATCHERS
8668PRESERVE_NONE
8669static bool Interp_CastAPSSint8(InterpState &S) {
8670 {
8671 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8672 if (!CastAPS<PT_Sint8>(S, V0)) return false;
8673 }
8674#if USE_TAILCALLS
8675 MUSTTAIL return InterpNext(S);
8676#else
8677 return true;
8678#endif
8679}
8680PRESERVE_NONE
8681static bool Interp_CastAPSUint8(InterpState &S) {
8682 {
8683 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8684 if (!CastAPS<PT_Uint8>(S, V0)) return false;
8685 }
8686#if USE_TAILCALLS
8687 MUSTTAIL return InterpNext(S);
8688#else
8689 return true;
8690#endif
8691}
8692PRESERVE_NONE
8693static bool Interp_CastAPSSint16(InterpState &S) {
8694 {
8695 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8696 if (!CastAPS<PT_Sint16>(S, V0)) return false;
8697 }
8698#if USE_TAILCALLS
8699 MUSTTAIL return InterpNext(S);
8700#else
8701 return true;
8702#endif
8703}
8704PRESERVE_NONE
8705static bool Interp_CastAPSUint16(InterpState &S) {
8706 {
8707 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8708 if (!CastAPS<PT_Uint16>(S, V0)) return false;
8709 }
8710#if USE_TAILCALLS
8711 MUSTTAIL return InterpNext(S);
8712#else
8713 return true;
8714#endif
8715}
8716PRESERVE_NONE
8717static bool Interp_CastAPSSint32(InterpState &S) {
8718 {
8719 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8720 if (!CastAPS<PT_Sint32>(S, V0)) return false;
8721 }
8722#if USE_TAILCALLS
8723 MUSTTAIL return InterpNext(S);
8724#else
8725 return true;
8726#endif
8727}
8728PRESERVE_NONE
8729static bool Interp_CastAPSUint32(InterpState &S) {
8730 {
8731 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8732 if (!CastAPS<PT_Uint32>(S, V0)) return false;
8733 }
8734#if USE_TAILCALLS
8735 MUSTTAIL return InterpNext(S);
8736#else
8737 return true;
8738#endif
8739}
8740PRESERVE_NONE
8741static bool Interp_CastAPSSint64(InterpState &S) {
8742 {
8743 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8744 if (!CastAPS<PT_Sint64>(S, V0)) return false;
8745 }
8746#if USE_TAILCALLS
8747 MUSTTAIL return InterpNext(S);
8748#else
8749 return true;
8750#endif
8751}
8752PRESERVE_NONE
8753static bool Interp_CastAPSUint64(InterpState &S) {
8754 {
8755 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8756 if (!CastAPS<PT_Uint64>(S, V0)) return false;
8757 }
8758#if USE_TAILCALLS
8759 MUSTTAIL return InterpNext(S);
8760#else
8761 return true;
8762#endif
8763}
8764PRESERVE_NONE
8765static bool Interp_CastAPSIntAP(InterpState &S) {
8766 {
8767 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8768 if (!CastAPS<PT_IntAP>(S, V0)) return false;
8769 }
8770#if USE_TAILCALLS
8771 MUSTTAIL return InterpNext(S);
8772#else
8773 return true;
8774#endif
8775}
8776PRESERVE_NONE
8777static bool Interp_CastAPSIntAPS(InterpState &S) {
8778 {
8779 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8780 if (!CastAPS<PT_IntAPS>(S, V0)) return false;
8781 }
8782#if USE_TAILCALLS
8783 MUSTTAIL return InterpNext(S);
8784#else
8785 return true;
8786#endif
8787}
8788PRESERVE_NONE
8789static bool Interp_CastAPSBool(InterpState &S) {
8790 {
8791 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8792 if (!CastAPS<PT_Bool>(S, V0)) return false;
8793 }
8794#if USE_TAILCALLS
8795 MUSTTAIL return InterpNext(S);
8796#else
8797 return true;
8798#endif
8799}
8800PRESERVE_NONE
8801static bool Interp_CastAPSFixedPoint(InterpState &S) {
8802 {
8803 const auto V0 = ReadArg<uint32_t>(S, S.PC);
8804 if (!CastAPS<PT_FixedPoint>(S, V0)) return false;
8805 }
8806#if USE_TAILCALLS
8807 MUSTTAIL return InterpNext(S);
8808#else
8809 return true;
8810#endif
8811}
8812#endif
8813#ifdef GET_DISASM
8814case OP_CastAPSSint8:
8815 Text.Op = PrintName("CastAPSSint8");
8816 Text.Args.push_back(printArg<uint32_t>(PC));
8817 break;
8818case OP_CastAPSUint8:
8819 Text.Op = PrintName("CastAPSUint8");
8820 Text.Args.push_back(printArg<uint32_t>(PC));
8821 break;
8822case OP_CastAPSSint16:
8823 Text.Op = PrintName("CastAPSSint16");
8824 Text.Args.push_back(printArg<uint32_t>(PC));
8825 break;
8826case OP_CastAPSUint16:
8827 Text.Op = PrintName("CastAPSUint16");
8828 Text.Args.push_back(printArg<uint32_t>(PC));
8829 break;
8830case OP_CastAPSSint32:
8831 Text.Op = PrintName("CastAPSSint32");
8832 Text.Args.push_back(printArg<uint32_t>(PC));
8833 break;
8834case OP_CastAPSUint32:
8835 Text.Op = PrintName("CastAPSUint32");
8836 Text.Args.push_back(printArg<uint32_t>(PC));
8837 break;
8838case OP_CastAPSSint64:
8839 Text.Op = PrintName("CastAPSSint64");
8840 Text.Args.push_back(printArg<uint32_t>(PC));
8841 break;
8842case OP_CastAPSUint64:
8843 Text.Op = PrintName("CastAPSUint64");
8844 Text.Args.push_back(printArg<uint32_t>(PC));
8845 break;
8846case OP_CastAPSIntAP:
8847 Text.Op = PrintName("CastAPSIntAP");
8848 Text.Args.push_back(printArg<uint32_t>(PC));
8849 break;
8850case OP_CastAPSIntAPS:
8851 Text.Op = PrintName("CastAPSIntAPS");
8852 Text.Args.push_back(printArg<uint32_t>(PC));
8853 break;
8854case OP_CastAPSBool:
8855 Text.Op = PrintName("CastAPSBool");
8856 Text.Args.push_back(printArg<uint32_t>(PC));
8857 break;
8858case OP_CastAPSFixedPoint:
8859 Text.Op = PrintName("CastAPSFixedPoint");
8860 Text.Args.push_back(printArg<uint32_t>(PC));
8861 break;
8862#endif
8863#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8864bool emitCastAPSSint8( uint32_t , SourceInfo);
8865bool emitCastAPSUint8( uint32_t , SourceInfo);
8866bool emitCastAPSSint16( uint32_t , SourceInfo);
8867bool emitCastAPSUint16( uint32_t , SourceInfo);
8868bool emitCastAPSSint32( uint32_t , SourceInfo);
8869bool emitCastAPSUint32( uint32_t , SourceInfo);
8870bool emitCastAPSSint64( uint32_t , SourceInfo);
8871bool emitCastAPSUint64( uint32_t , SourceInfo);
8872bool emitCastAPSIntAP( uint32_t , SourceInfo);
8873bool emitCastAPSIntAPS( uint32_t , SourceInfo);
8874bool emitCastAPSBool( uint32_t , SourceInfo);
8875bool emitCastAPSFixedPoint( uint32_t , SourceInfo);
8876#endif
8877#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8878[[nodiscard]] bool emitCastAPS(PrimType, uint32_t, SourceInfo I);
8879#endif
8880#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
8881bool
8882#if defined(GET_EVAL_IMPL)
8883EvalEmitter
8884#else
8885ByteCodeEmitter
8886#endif
8887::emitCastAPS(PrimType T0, uint32_t A0, SourceInfo I) {
8888 switch (T0) {
8889 case PT_Sint8:
8890 return emitCastAPSSint8(A0, I);
8891 case PT_Uint8:
8892 return emitCastAPSUint8(A0, I);
8893 case PT_Sint16:
8894 return emitCastAPSSint16(A0, I);
8895 case PT_Uint16:
8896 return emitCastAPSUint16(A0, I);
8897 case PT_Sint32:
8898 return emitCastAPSSint32(A0, I);
8899 case PT_Uint32:
8900 return emitCastAPSUint32(A0, I);
8901 case PT_Sint64:
8902 return emitCastAPSSint64(A0, I);
8903 case PT_Uint64:
8904 return emitCastAPSUint64(A0, I);
8905 case PT_IntAP:
8906 return emitCastAPSIntAP(A0, I);
8907 case PT_IntAPS:
8908 return emitCastAPSIntAPS(A0, I);
8909 case PT_Bool:
8910 return emitCastAPSBool(A0, I);
8911 case PT_FixedPoint:
8912 return emitCastAPSFixedPoint(A0, I);
8913 default: llvm_unreachable("invalid type: emitCastAPS");
8914 }
8915 llvm_unreachable("invalid enum value");
8916}
8917#endif
8918#ifdef GET_LINK_IMPL
8919bool ByteCodeEmitter::emitCastAPSSint8( uint32_t A0, SourceInfo L) {
8920 return emitOp<uint32_t>(OP_CastAPSSint8, A0, L);
8921}
8922bool ByteCodeEmitter::emitCastAPSUint8( uint32_t A0, SourceInfo L) {
8923 return emitOp<uint32_t>(OP_CastAPSUint8, A0, L);
8924}
8925bool ByteCodeEmitter::emitCastAPSSint16( uint32_t A0, SourceInfo L) {
8926 return emitOp<uint32_t>(OP_CastAPSSint16, A0, L);
8927}
8928bool ByteCodeEmitter::emitCastAPSUint16( uint32_t A0, SourceInfo L) {
8929 return emitOp<uint32_t>(OP_CastAPSUint16, A0, L);
8930}
8931bool ByteCodeEmitter::emitCastAPSSint32( uint32_t A0, SourceInfo L) {
8932 return emitOp<uint32_t>(OP_CastAPSSint32, A0, L);
8933}
8934bool ByteCodeEmitter::emitCastAPSUint32( uint32_t A0, SourceInfo L) {
8935 return emitOp<uint32_t>(OP_CastAPSUint32, A0, L);
8936}
8937bool ByteCodeEmitter::emitCastAPSSint64( uint32_t A0, SourceInfo L) {
8938 return emitOp<uint32_t>(OP_CastAPSSint64, A0, L);
8939}
8940bool ByteCodeEmitter::emitCastAPSUint64( uint32_t A0, SourceInfo L) {
8941 return emitOp<uint32_t>(OP_CastAPSUint64, A0, L);
8942}
8943bool ByteCodeEmitter::emitCastAPSIntAP( uint32_t A0, SourceInfo L) {
8944 return emitOp<uint32_t>(OP_CastAPSIntAP, A0, L);
8945}
8946bool ByteCodeEmitter::emitCastAPSIntAPS( uint32_t A0, SourceInfo L) {
8947 return emitOp<uint32_t>(OP_CastAPSIntAPS, A0, L);
8948}
8949bool ByteCodeEmitter::emitCastAPSBool( uint32_t A0, SourceInfo L) {
8950 return emitOp<uint32_t>(OP_CastAPSBool, A0, L);
8951}
8952bool ByteCodeEmitter::emitCastAPSFixedPoint( uint32_t A0, SourceInfo L) {
8953 return emitOp<uint32_t>(OP_CastAPSFixedPoint, A0, L);
8954}
8955#endif
8956#ifdef GET_EVAL_IMPL
8957bool EvalEmitter::emitCastAPSSint8( uint32_t A0, SourceInfo L) {
8958 if (!isActive()) return true;
8959 CurrentSource = L;
8960 return CastAPS<PT_Sint8>(S, A0);
8961}
8962bool EvalEmitter::emitCastAPSUint8( uint32_t A0, SourceInfo L) {
8963 if (!isActive()) return true;
8964 CurrentSource = L;
8965 return CastAPS<PT_Uint8>(S, A0);
8966}
8967bool EvalEmitter::emitCastAPSSint16( uint32_t A0, SourceInfo L) {
8968 if (!isActive()) return true;
8969 CurrentSource = L;
8970 return CastAPS<PT_Sint16>(S, A0);
8971}
8972bool EvalEmitter::emitCastAPSUint16( uint32_t A0, SourceInfo L) {
8973 if (!isActive()) return true;
8974 CurrentSource = L;
8975 return CastAPS<PT_Uint16>(S, A0);
8976}
8977bool EvalEmitter::emitCastAPSSint32( uint32_t A0, SourceInfo L) {
8978 if (!isActive()) return true;
8979 CurrentSource = L;
8980 return CastAPS<PT_Sint32>(S, A0);
8981}
8982bool EvalEmitter::emitCastAPSUint32( uint32_t A0, SourceInfo L) {
8983 if (!isActive()) return true;
8984 CurrentSource = L;
8985 return CastAPS<PT_Uint32>(S, A0);
8986}
8987bool EvalEmitter::emitCastAPSSint64( uint32_t A0, SourceInfo L) {
8988 if (!isActive()) return true;
8989 CurrentSource = L;
8990 return CastAPS<PT_Sint64>(S, A0);
8991}
8992bool EvalEmitter::emitCastAPSUint64( uint32_t A0, SourceInfo L) {
8993 if (!isActive()) return true;
8994 CurrentSource = L;
8995 return CastAPS<PT_Uint64>(S, A0);
8996}
8997bool EvalEmitter::emitCastAPSIntAP( uint32_t A0, SourceInfo L) {
8998 if (!isActive()) return true;
8999 CurrentSource = L;
9000 return CastAPS<PT_IntAP>(S, A0);
9001}
9002bool EvalEmitter::emitCastAPSIntAPS( uint32_t A0, SourceInfo L) {
9003 if (!isActive()) return true;
9004 CurrentSource = L;
9005 return CastAPS<PT_IntAPS>(S, A0);
9006}
9007bool EvalEmitter::emitCastAPSBool( uint32_t A0, SourceInfo L) {
9008 if (!isActive()) return true;
9009 CurrentSource = L;
9010 return CastAPS<PT_Bool>(S, A0);
9011}
9012bool EvalEmitter::emitCastAPSFixedPoint( uint32_t A0, SourceInfo L) {
9013 if (!isActive()) return true;
9014 CurrentSource = L;
9015 return CastAPS<PT_FixedPoint>(S, A0);
9016}
9017#endif
9018#ifdef GET_OPCODE_NAMES
9019OP_CastAPToOffsetIndexIntAP,
9020OP_CastAPToOffsetIndexIntAPS,
9021#endif
9022#ifdef GET_INTERPFN_LIST
9023&Interp_CastAPToOffsetIndexIntAP,
9024&Interp_CastAPToOffsetIndexIntAPS,
9025#endif
9026#ifdef GET_INTERPFN_DISPATCHERS
9027PRESERVE_NONE
9028static bool Interp_CastAPToOffsetIndexIntAP(InterpState &S) {
9029 if (!CastAPToOffsetIndex<PT_IntAP>(S, S.PC)) return false;
9030#if USE_TAILCALLS
9031 MUSTTAIL return InterpNext(S);
9032#else
9033 return true;
9034#endif
9035}
9036PRESERVE_NONE
9037static bool Interp_CastAPToOffsetIndexIntAPS(InterpState &S) {
9038 if (!CastAPToOffsetIndex<PT_IntAPS>(S, S.PC)) return false;
9039#if USE_TAILCALLS
9040 MUSTTAIL return InterpNext(S);
9041#else
9042 return true;
9043#endif
9044}
9045#endif
9046#ifdef GET_DISASM
9047case OP_CastAPToOffsetIndexIntAP:
9048 Text.Op = PrintName("CastAPToOffsetIndexIntAP");
9049 break;
9050case OP_CastAPToOffsetIndexIntAPS:
9051 Text.Op = PrintName("CastAPToOffsetIndexIntAPS");
9052 break;
9053#endif
9054#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9055bool emitCastAPToOffsetIndexIntAP(SourceInfo);
9056bool emitCastAPToOffsetIndexIntAPS(SourceInfo);
9057#endif
9058#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9059[[nodiscard]] bool emitCastAPToOffsetIndex(PrimType, SourceInfo I);
9060#endif
9061#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
9062bool
9063#if defined(GET_EVAL_IMPL)
9064EvalEmitter
9065#else
9066ByteCodeEmitter
9067#endif
9068::emitCastAPToOffsetIndex(PrimType T0, SourceInfo I) {
9069 switch (T0) {
9070 case PT_IntAP:
9071 return emitCastAPToOffsetIndexIntAP(I);
9072 case PT_IntAPS:
9073 return emitCastAPToOffsetIndexIntAPS(I);
9074 default: llvm_unreachable("invalid type: emitCastAPToOffsetIndex");
9075 }
9076 llvm_unreachable("invalid enum value");
9077}
9078#endif
9079#ifdef GET_LINK_IMPL
9080bool ByteCodeEmitter::emitCastAPToOffsetIndexIntAP(SourceInfo L) {
9081 return emitOp<>(OP_CastAPToOffsetIndexIntAP, L);
9082}
9083bool ByteCodeEmitter::emitCastAPToOffsetIndexIntAPS(SourceInfo L) {
9084 return emitOp<>(OP_CastAPToOffsetIndexIntAPS, L);
9085}
9086#endif
9087#ifdef GET_EVAL_IMPL
9088bool EvalEmitter::emitCastAPToOffsetIndexIntAP(SourceInfo L) {
9089 if (!isActive()) return true;
9090 CurrentSource = L;
9091 return CastAPToOffsetIndex<PT_IntAP>(S, CodePtr());
9092}
9093bool EvalEmitter::emitCastAPToOffsetIndexIntAPS(SourceInfo L) {
9094 if (!isActive()) return true;
9095 CurrentSource = L;
9096 return CastAPToOffsetIndex<PT_IntAPS>(S, CodePtr());
9097}
9098#endif
9099#ifdef GET_OPCODE_NAMES
9100OP_CastFP,
9101#endif
9102#ifdef GET_INTERPFN_LIST
9103&Interp_CastFP,
9104#endif
9105#ifdef GET_INTERPFN_DISPATCHERS
9106PRESERVE_NONE
9107static bool Interp_CastFP(InterpState &S) {
9108 {
9109 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
9110 const auto V1 = ReadArg<llvm::RoundingMode>(S, S.PC);
9111 if (!CastFP(S, V0, V1)) return false;
9112 }
9113#if USE_TAILCALLS
9114 MUSTTAIL return InterpNext(S);
9115#else
9116 return true;
9117#endif
9118}
9119#endif
9120#ifdef GET_DISASM
9121case OP_CastFP:
9122 Text.Op = PrintName("CastFP");
9123 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
9124 Text.Args.push_back(printArg<llvm::RoundingMode>(PC));
9125 break;
9126#endif
9127#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9128bool emitCastFP( const llvm::fltSemantics * , llvm::RoundingMode , SourceInfo);
9129#endif
9130#ifdef GET_LINK_IMPL
9131bool ByteCodeEmitter::emitCastFP( const llvm::fltSemantics * A0, llvm::RoundingMode A1, SourceInfo L) {
9132 return emitOp<const llvm::fltSemantics *, llvm::RoundingMode>(OP_CastFP, A0, A1, L);
9133}
9134#endif
9135#ifdef GET_EVAL_IMPL
9136bool EvalEmitter::emitCastFP( const llvm::fltSemantics * A0, llvm::RoundingMode A1, SourceInfo L) {
9137 if (!isActive()) return true;
9138 CurrentSource = L;
9139 return CastFP(S, A0, A1);
9140}
9141#endif
9142#ifdef GET_OPCODE_NAMES
9143OP_CastFixedPoint,
9144#endif
9145#ifdef GET_INTERPFN_LIST
9146&Interp_CastFixedPoint,
9147#endif
9148#ifdef GET_INTERPFN_DISPATCHERS
9149PRESERVE_NONE
9150static bool Interp_CastFixedPoint(InterpState &S) {
9151 {
9152 CodePtr OpPC = S.PC;
9153 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9154 if (!CastFixedPoint(S, OpPC, V0)) return false;
9155 }
9156#if USE_TAILCALLS
9157 MUSTTAIL return InterpNext(S);
9158#else
9159 return true;
9160#endif
9161}
9162#endif
9163#ifdef GET_DISASM
9164case OP_CastFixedPoint:
9165 Text.Op = PrintName("CastFixedPoint");
9166 Text.Args.push_back(printArg<uint32_t>(PC));
9167 break;
9168#endif
9169#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9170bool emitCastFixedPoint( uint32_t , SourceInfo);
9171#endif
9172#ifdef GET_LINK_IMPL
9173bool ByteCodeEmitter::emitCastFixedPoint( uint32_t A0, SourceInfo L) {
9174 return emitOp<uint32_t>(OP_CastFixedPoint, A0, L);
9175}
9176#endif
9177#ifdef GET_EVAL_IMPL
9178bool EvalEmitter::emitCastFixedPoint( uint32_t A0, SourceInfo L) {
9179 if (!isActive()) return true;
9180 CurrentSource = L;
9181 return CastFixedPoint(S, CodePtr(), A0);
9182}
9183#endif
9184#ifdef GET_OPCODE_NAMES
9185OP_CastFixedPointFloating,
9186#endif
9187#ifdef GET_INTERPFN_LIST
9188&Interp_CastFixedPointFloating,
9189#endif
9190#ifdef GET_INTERPFN_DISPATCHERS
9191PRESERVE_NONE
9192static bool Interp_CastFixedPointFloating(InterpState &S) {
9193 {
9194 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
9195 if (!CastFixedPointFloating(S, V0)) return false;
9196 }
9197#if USE_TAILCALLS
9198 MUSTTAIL return InterpNext(S);
9199#else
9200 return true;
9201#endif
9202}
9203#endif
9204#ifdef GET_DISASM
9205case OP_CastFixedPointFloating:
9206 Text.Op = PrintName("CastFixedPointFloating");
9207 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
9208 break;
9209#endif
9210#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9211bool emitCastFixedPointFloating( const llvm::fltSemantics * , SourceInfo);
9212#endif
9213#ifdef GET_LINK_IMPL
9214bool ByteCodeEmitter::emitCastFixedPointFloating( const llvm::fltSemantics * A0, SourceInfo L) {
9215 return emitOp<const llvm::fltSemantics *>(OP_CastFixedPointFloating, A0, L);
9216}
9217#endif
9218#ifdef GET_EVAL_IMPL
9219bool EvalEmitter::emitCastFixedPointFloating( const llvm::fltSemantics * A0, SourceInfo L) {
9220 if (!isActive()) return true;
9221 CurrentSource = L;
9222 return CastFixedPointFloating(S, A0);
9223}
9224#endif
9225#ifdef GET_OPCODE_NAMES
9226OP_CastFixedPointIntegralSint8,
9227OP_CastFixedPointIntegralUint8,
9228OP_CastFixedPointIntegralSint16,
9229OP_CastFixedPointIntegralUint16,
9230OP_CastFixedPointIntegralSint32,
9231OP_CastFixedPointIntegralUint32,
9232OP_CastFixedPointIntegralSint64,
9233OP_CastFixedPointIntegralUint64,
9234#endif
9235#ifdef GET_INTERPFN_LIST
9236&Interp_CastFixedPointIntegralSint8,
9237&Interp_CastFixedPointIntegralUint8,
9238&Interp_CastFixedPointIntegralSint16,
9239&Interp_CastFixedPointIntegralUint16,
9240&Interp_CastFixedPointIntegralSint32,
9241&Interp_CastFixedPointIntegralUint32,
9242&Interp_CastFixedPointIntegralSint64,
9243&Interp_CastFixedPointIntegralUint64,
9244#endif
9245#ifdef GET_INTERPFN_DISPATCHERS
9246PRESERVE_NONE
9247static bool Interp_CastFixedPointIntegralSint8(InterpState &S) {
9248 if (!CastFixedPointIntegral<PT_Sint8>(S, S.PC)) return false;
9249#if USE_TAILCALLS
9250 MUSTTAIL return InterpNext(S);
9251#else
9252 return true;
9253#endif
9254}
9255PRESERVE_NONE
9256static bool Interp_CastFixedPointIntegralUint8(InterpState &S) {
9257 if (!CastFixedPointIntegral<PT_Uint8>(S, S.PC)) return false;
9258#if USE_TAILCALLS
9259 MUSTTAIL return InterpNext(S);
9260#else
9261 return true;
9262#endif
9263}
9264PRESERVE_NONE
9265static bool Interp_CastFixedPointIntegralSint16(InterpState &S) {
9266 if (!CastFixedPointIntegral<PT_Sint16>(S, S.PC)) return false;
9267#if USE_TAILCALLS
9268 MUSTTAIL return InterpNext(S);
9269#else
9270 return true;
9271#endif
9272}
9273PRESERVE_NONE
9274static bool Interp_CastFixedPointIntegralUint16(InterpState &S) {
9275 if (!CastFixedPointIntegral<PT_Uint16>(S, S.PC)) return false;
9276#if USE_TAILCALLS
9277 MUSTTAIL return InterpNext(S);
9278#else
9279 return true;
9280#endif
9281}
9282PRESERVE_NONE
9283static bool Interp_CastFixedPointIntegralSint32(InterpState &S) {
9284 if (!CastFixedPointIntegral<PT_Sint32>(S, S.PC)) return false;
9285#if USE_TAILCALLS
9286 MUSTTAIL return InterpNext(S);
9287#else
9288 return true;
9289#endif
9290}
9291PRESERVE_NONE
9292static bool Interp_CastFixedPointIntegralUint32(InterpState &S) {
9293 if (!CastFixedPointIntegral<PT_Uint32>(S, S.PC)) return false;
9294#if USE_TAILCALLS
9295 MUSTTAIL return InterpNext(S);
9296#else
9297 return true;
9298#endif
9299}
9300PRESERVE_NONE
9301static bool Interp_CastFixedPointIntegralSint64(InterpState &S) {
9302 if (!CastFixedPointIntegral<PT_Sint64>(S, S.PC)) return false;
9303#if USE_TAILCALLS
9304 MUSTTAIL return InterpNext(S);
9305#else
9306 return true;
9307#endif
9308}
9309PRESERVE_NONE
9310static bool Interp_CastFixedPointIntegralUint64(InterpState &S) {
9311 if (!CastFixedPointIntegral<PT_Uint64>(S, S.PC)) return false;
9312#if USE_TAILCALLS
9313 MUSTTAIL return InterpNext(S);
9314#else
9315 return true;
9316#endif
9317}
9318#endif
9319#ifdef GET_DISASM
9320case OP_CastFixedPointIntegralSint8:
9321 Text.Op = PrintName("CastFixedPointIntegralSint8");
9322 break;
9323case OP_CastFixedPointIntegralUint8:
9324 Text.Op = PrintName("CastFixedPointIntegralUint8");
9325 break;
9326case OP_CastFixedPointIntegralSint16:
9327 Text.Op = PrintName("CastFixedPointIntegralSint16");
9328 break;
9329case OP_CastFixedPointIntegralUint16:
9330 Text.Op = PrintName("CastFixedPointIntegralUint16");
9331 break;
9332case OP_CastFixedPointIntegralSint32:
9333 Text.Op = PrintName("CastFixedPointIntegralSint32");
9334 break;
9335case OP_CastFixedPointIntegralUint32:
9336 Text.Op = PrintName("CastFixedPointIntegralUint32");
9337 break;
9338case OP_CastFixedPointIntegralSint64:
9339 Text.Op = PrintName("CastFixedPointIntegralSint64");
9340 break;
9341case OP_CastFixedPointIntegralUint64:
9342 Text.Op = PrintName("CastFixedPointIntegralUint64");
9343 break;
9344#endif
9345#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9346bool emitCastFixedPointIntegralSint8(SourceInfo);
9347bool emitCastFixedPointIntegralUint8(SourceInfo);
9348bool emitCastFixedPointIntegralSint16(SourceInfo);
9349bool emitCastFixedPointIntegralUint16(SourceInfo);
9350bool emitCastFixedPointIntegralSint32(SourceInfo);
9351bool emitCastFixedPointIntegralUint32(SourceInfo);
9352bool emitCastFixedPointIntegralSint64(SourceInfo);
9353bool emitCastFixedPointIntegralUint64(SourceInfo);
9354#endif
9355#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9356[[nodiscard]] bool emitCastFixedPointIntegral(PrimType, SourceInfo I);
9357#endif
9358#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
9359bool
9360#if defined(GET_EVAL_IMPL)
9361EvalEmitter
9362#else
9363ByteCodeEmitter
9364#endif
9365::emitCastFixedPointIntegral(PrimType T0, SourceInfo I) {
9366 switch (T0) {
9367 case PT_Sint8:
9368 return emitCastFixedPointIntegralSint8(I);
9369 case PT_Uint8:
9370 return emitCastFixedPointIntegralUint8(I);
9371 case PT_Sint16:
9372 return emitCastFixedPointIntegralSint16(I);
9373 case PT_Uint16:
9374 return emitCastFixedPointIntegralUint16(I);
9375 case PT_Sint32:
9376 return emitCastFixedPointIntegralSint32(I);
9377 case PT_Uint32:
9378 return emitCastFixedPointIntegralUint32(I);
9379 case PT_Sint64:
9380 return emitCastFixedPointIntegralSint64(I);
9381 case PT_Uint64:
9382 return emitCastFixedPointIntegralUint64(I);
9383 default: llvm_unreachable("invalid type: emitCastFixedPointIntegral");
9384 }
9385 llvm_unreachable("invalid enum value");
9386}
9387#endif
9388#ifdef GET_LINK_IMPL
9389bool ByteCodeEmitter::emitCastFixedPointIntegralSint8(SourceInfo L) {
9390 return emitOp<>(OP_CastFixedPointIntegralSint8, L);
9391}
9392bool ByteCodeEmitter::emitCastFixedPointIntegralUint8(SourceInfo L) {
9393 return emitOp<>(OP_CastFixedPointIntegralUint8, L);
9394}
9395bool ByteCodeEmitter::emitCastFixedPointIntegralSint16(SourceInfo L) {
9396 return emitOp<>(OP_CastFixedPointIntegralSint16, L);
9397}
9398bool ByteCodeEmitter::emitCastFixedPointIntegralUint16(SourceInfo L) {
9399 return emitOp<>(OP_CastFixedPointIntegralUint16, L);
9400}
9401bool ByteCodeEmitter::emitCastFixedPointIntegralSint32(SourceInfo L) {
9402 return emitOp<>(OP_CastFixedPointIntegralSint32, L);
9403}
9404bool ByteCodeEmitter::emitCastFixedPointIntegralUint32(SourceInfo L) {
9405 return emitOp<>(OP_CastFixedPointIntegralUint32, L);
9406}
9407bool ByteCodeEmitter::emitCastFixedPointIntegralSint64(SourceInfo L) {
9408 return emitOp<>(OP_CastFixedPointIntegralSint64, L);
9409}
9410bool ByteCodeEmitter::emitCastFixedPointIntegralUint64(SourceInfo L) {
9411 return emitOp<>(OP_CastFixedPointIntegralUint64, L);
9412}
9413#endif
9414#ifdef GET_EVAL_IMPL
9415bool EvalEmitter::emitCastFixedPointIntegralSint8(SourceInfo L) {
9416 if (!isActive()) return true;
9417 CurrentSource = L;
9418 return CastFixedPointIntegral<PT_Sint8>(S, CodePtr());
9419}
9420bool EvalEmitter::emitCastFixedPointIntegralUint8(SourceInfo L) {
9421 if (!isActive()) return true;
9422 CurrentSource = L;
9423 return CastFixedPointIntegral<PT_Uint8>(S, CodePtr());
9424}
9425bool EvalEmitter::emitCastFixedPointIntegralSint16(SourceInfo L) {
9426 if (!isActive()) return true;
9427 CurrentSource = L;
9428 return CastFixedPointIntegral<PT_Sint16>(S, CodePtr());
9429}
9430bool EvalEmitter::emitCastFixedPointIntegralUint16(SourceInfo L) {
9431 if (!isActive()) return true;
9432 CurrentSource = L;
9433 return CastFixedPointIntegral<PT_Uint16>(S, CodePtr());
9434}
9435bool EvalEmitter::emitCastFixedPointIntegralSint32(SourceInfo L) {
9436 if (!isActive()) return true;
9437 CurrentSource = L;
9438 return CastFixedPointIntegral<PT_Sint32>(S, CodePtr());
9439}
9440bool EvalEmitter::emitCastFixedPointIntegralUint32(SourceInfo L) {
9441 if (!isActive()) return true;
9442 CurrentSource = L;
9443 return CastFixedPointIntegral<PT_Uint32>(S, CodePtr());
9444}
9445bool EvalEmitter::emitCastFixedPointIntegralSint64(SourceInfo L) {
9446 if (!isActive()) return true;
9447 CurrentSource = L;
9448 return CastFixedPointIntegral<PT_Sint64>(S, CodePtr());
9449}
9450bool EvalEmitter::emitCastFixedPointIntegralUint64(SourceInfo L) {
9451 if (!isActive()) return true;
9452 CurrentSource = L;
9453 return CastFixedPointIntegral<PT_Uint64>(S, CodePtr());
9454}
9455#endif
9456#ifdef GET_OPCODE_NAMES
9457OP_CastFloatingFixedPoint,
9458#endif
9459#ifdef GET_INTERPFN_LIST
9460&Interp_CastFloatingFixedPoint,
9461#endif
9462#ifdef GET_INTERPFN_DISPATCHERS
9463PRESERVE_NONE
9464static bool Interp_CastFloatingFixedPoint(InterpState &S) {
9465 {
9466 CodePtr OpPC = S.PC;
9467 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9468 if (!CastFloatingFixedPoint(S, OpPC, V0)) return false;
9469 }
9470#if USE_TAILCALLS
9471 MUSTTAIL return InterpNext(S);
9472#else
9473 return true;
9474#endif
9475}
9476#endif
9477#ifdef GET_DISASM
9478case OP_CastFloatingFixedPoint:
9479 Text.Op = PrintName("CastFloatingFixedPoint");
9480 Text.Args.push_back(printArg<uint32_t>(PC));
9481 break;
9482#endif
9483#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9484bool emitCastFloatingFixedPoint( uint32_t , SourceInfo);
9485#endif
9486#ifdef GET_LINK_IMPL
9487bool ByteCodeEmitter::emitCastFloatingFixedPoint( uint32_t A0, SourceInfo L) {
9488 return emitOp<uint32_t>(OP_CastFloatingFixedPoint, A0, L);
9489}
9490#endif
9491#ifdef GET_EVAL_IMPL
9492bool EvalEmitter::emitCastFloatingFixedPoint( uint32_t A0, SourceInfo L) {
9493 if (!isActive()) return true;
9494 CurrentSource = L;
9495 return CastFloatingFixedPoint(S, CodePtr(), A0);
9496}
9497#endif
9498#ifdef GET_OPCODE_NAMES
9499OP_CastFloatingIntegralSint8,
9500OP_CastFloatingIntegralUint8,
9501OP_CastFloatingIntegralSint16,
9502OP_CastFloatingIntegralUint16,
9503OP_CastFloatingIntegralSint32,
9504OP_CastFloatingIntegralUint32,
9505OP_CastFloatingIntegralSint64,
9506OP_CastFloatingIntegralUint64,
9507OP_CastFloatingIntegralBool,
9508#endif
9509#ifdef GET_INTERPFN_LIST
9510&Interp_CastFloatingIntegralSint8,
9511&Interp_CastFloatingIntegralUint8,
9512&Interp_CastFloatingIntegralSint16,
9513&Interp_CastFloatingIntegralUint16,
9514&Interp_CastFloatingIntegralSint32,
9515&Interp_CastFloatingIntegralUint32,
9516&Interp_CastFloatingIntegralSint64,
9517&Interp_CastFloatingIntegralUint64,
9518&Interp_CastFloatingIntegralBool,
9519#endif
9520#ifdef GET_INTERPFN_DISPATCHERS
9521PRESERVE_NONE
9522static bool Interp_CastFloatingIntegralSint8(InterpState &S) {
9523 {
9524 CodePtr OpPC = S.PC;
9525 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9526 if (!CastFloatingIntegral<PT_Sint8>(S, OpPC, V0)) return false;
9527 }
9528#if USE_TAILCALLS
9529 MUSTTAIL return InterpNext(S);
9530#else
9531 return true;
9532#endif
9533}
9534PRESERVE_NONE
9535static bool Interp_CastFloatingIntegralUint8(InterpState &S) {
9536 {
9537 CodePtr OpPC = S.PC;
9538 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9539 if (!CastFloatingIntegral<PT_Uint8>(S, OpPC, V0)) return false;
9540 }
9541#if USE_TAILCALLS
9542 MUSTTAIL return InterpNext(S);
9543#else
9544 return true;
9545#endif
9546}
9547PRESERVE_NONE
9548static bool Interp_CastFloatingIntegralSint16(InterpState &S) {
9549 {
9550 CodePtr OpPC = S.PC;
9551 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9552 if (!CastFloatingIntegral<PT_Sint16>(S, OpPC, V0)) return false;
9553 }
9554#if USE_TAILCALLS
9555 MUSTTAIL return InterpNext(S);
9556#else
9557 return true;
9558#endif
9559}
9560PRESERVE_NONE
9561static bool Interp_CastFloatingIntegralUint16(InterpState &S) {
9562 {
9563 CodePtr OpPC = S.PC;
9564 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9565 if (!CastFloatingIntegral<PT_Uint16>(S, OpPC, V0)) return false;
9566 }
9567#if USE_TAILCALLS
9568 MUSTTAIL return InterpNext(S);
9569#else
9570 return true;
9571#endif
9572}
9573PRESERVE_NONE
9574static bool Interp_CastFloatingIntegralSint32(InterpState &S) {
9575 {
9576 CodePtr OpPC = S.PC;
9577 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9578 if (!CastFloatingIntegral<PT_Sint32>(S, OpPC, V0)) return false;
9579 }
9580#if USE_TAILCALLS
9581 MUSTTAIL return InterpNext(S);
9582#else
9583 return true;
9584#endif
9585}
9586PRESERVE_NONE
9587static bool Interp_CastFloatingIntegralUint32(InterpState &S) {
9588 {
9589 CodePtr OpPC = S.PC;
9590 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9591 if (!CastFloatingIntegral<PT_Uint32>(S, OpPC, V0)) return false;
9592 }
9593#if USE_TAILCALLS
9594 MUSTTAIL return InterpNext(S);
9595#else
9596 return true;
9597#endif
9598}
9599PRESERVE_NONE
9600static bool Interp_CastFloatingIntegralSint64(InterpState &S) {
9601 {
9602 CodePtr OpPC = S.PC;
9603 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9604 if (!CastFloatingIntegral<PT_Sint64>(S, OpPC, V0)) return false;
9605 }
9606#if USE_TAILCALLS
9607 MUSTTAIL return InterpNext(S);
9608#else
9609 return true;
9610#endif
9611}
9612PRESERVE_NONE
9613static bool Interp_CastFloatingIntegralUint64(InterpState &S) {
9614 {
9615 CodePtr OpPC = S.PC;
9616 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9617 if (!CastFloatingIntegral<PT_Uint64>(S, OpPC, V0)) return false;
9618 }
9619#if USE_TAILCALLS
9620 MUSTTAIL return InterpNext(S);
9621#else
9622 return true;
9623#endif
9624}
9625PRESERVE_NONE
9626static bool Interp_CastFloatingIntegralBool(InterpState &S) {
9627 {
9628 CodePtr OpPC = S.PC;
9629 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9630 if (!CastFloatingIntegral<PT_Bool>(S, OpPC, V0)) return false;
9631 }
9632#if USE_TAILCALLS
9633 MUSTTAIL return InterpNext(S);
9634#else
9635 return true;
9636#endif
9637}
9638#endif
9639#ifdef GET_DISASM
9640case OP_CastFloatingIntegralSint8:
9641 Text.Op = PrintName("CastFloatingIntegralSint8");
9642 Text.Args.push_back(printArg<uint32_t>(PC));
9643 break;
9644case OP_CastFloatingIntegralUint8:
9645 Text.Op = PrintName("CastFloatingIntegralUint8");
9646 Text.Args.push_back(printArg<uint32_t>(PC));
9647 break;
9648case OP_CastFloatingIntegralSint16:
9649 Text.Op = PrintName("CastFloatingIntegralSint16");
9650 Text.Args.push_back(printArg<uint32_t>(PC));
9651 break;
9652case OP_CastFloatingIntegralUint16:
9653 Text.Op = PrintName("CastFloatingIntegralUint16");
9654 Text.Args.push_back(printArg<uint32_t>(PC));
9655 break;
9656case OP_CastFloatingIntegralSint32:
9657 Text.Op = PrintName("CastFloatingIntegralSint32");
9658 Text.Args.push_back(printArg<uint32_t>(PC));
9659 break;
9660case OP_CastFloatingIntegralUint32:
9661 Text.Op = PrintName("CastFloatingIntegralUint32");
9662 Text.Args.push_back(printArg<uint32_t>(PC));
9663 break;
9664case OP_CastFloatingIntegralSint64:
9665 Text.Op = PrintName("CastFloatingIntegralSint64");
9666 Text.Args.push_back(printArg<uint32_t>(PC));
9667 break;
9668case OP_CastFloatingIntegralUint64:
9669 Text.Op = PrintName("CastFloatingIntegralUint64");
9670 Text.Args.push_back(printArg<uint32_t>(PC));
9671 break;
9672case OP_CastFloatingIntegralBool:
9673 Text.Op = PrintName("CastFloatingIntegralBool");
9674 Text.Args.push_back(printArg<uint32_t>(PC));
9675 break;
9676#endif
9677#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9678bool emitCastFloatingIntegralSint8( uint32_t , SourceInfo);
9679bool emitCastFloatingIntegralUint8( uint32_t , SourceInfo);
9680bool emitCastFloatingIntegralSint16( uint32_t , SourceInfo);
9681bool emitCastFloatingIntegralUint16( uint32_t , SourceInfo);
9682bool emitCastFloatingIntegralSint32( uint32_t , SourceInfo);
9683bool emitCastFloatingIntegralUint32( uint32_t , SourceInfo);
9684bool emitCastFloatingIntegralSint64( uint32_t , SourceInfo);
9685bool emitCastFloatingIntegralUint64( uint32_t , SourceInfo);
9686bool emitCastFloatingIntegralBool( uint32_t , SourceInfo);
9687#endif
9688#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9689[[nodiscard]] bool emitCastFloatingIntegral(PrimType, uint32_t, SourceInfo I);
9690#endif
9691#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
9692bool
9693#if defined(GET_EVAL_IMPL)
9694EvalEmitter
9695#else
9696ByteCodeEmitter
9697#endif
9698::emitCastFloatingIntegral(PrimType T0, uint32_t A0, SourceInfo I) {
9699 switch (T0) {
9700 case PT_Sint8:
9701 return emitCastFloatingIntegralSint8(A0, I);
9702 case PT_Uint8:
9703 return emitCastFloatingIntegralUint8(A0, I);
9704 case PT_Sint16:
9705 return emitCastFloatingIntegralSint16(A0, I);
9706 case PT_Uint16:
9707 return emitCastFloatingIntegralUint16(A0, I);
9708 case PT_Sint32:
9709 return emitCastFloatingIntegralSint32(A0, I);
9710 case PT_Uint32:
9711 return emitCastFloatingIntegralUint32(A0, I);
9712 case PT_Sint64:
9713 return emitCastFloatingIntegralSint64(A0, I);
9714 case PT_Uint64:
9715 return emitCastFloatingIntegralUint64(A0, I);
9716 case PT_Bool:
9717 return emitCastFloatingIntegralBool(A0, I);
9718 default: llvm_unreachable("invalid type: emitCastFloatingIntegral");
9719 }
9720 llvm_unreachable("invalid enum value");
9721}
9722#endif
9723#ifdef GET_LINK_IMPL
9724bool ByteCodeEmitter::emitCastFloatingIntegralSint8( uint32_t A0, SourceInfo L) {
9725 return emitOp<uint32_t>(OP_CastFloatingIntegralSint8, A0, L);
9726}
9727bool ByteCodeEmitter::emitCastFloatingIntegralUint8( uint32_t A0, SourceInfo L) {
9728 return emitOp<uint32_t>(OP_CastFloatingIntegralUint8, A0, L);
9729}
9730bool ByteCodeEmitter::emitCastFloatingIntegralSint16( uint32_t A0, SourceInfo L) {
9731 return emitOp<uint32_t>(OP_CastFloatingIntegralSint16, A0, L);
9732}
9733bool ByteCodeEmitter::emitCastFloatingIntegralUint16( uint32_t A0, SourceInfo L) {
9734 return emitOp<uint32_t>(OP_CastFloatingIntegralUint16, A0, L);
9735}
9736bool ByteCodeEmitter::emitCastFloatingIntegralSint32( uint32_t A0, SourceInfo L) {
9737 return emitOp<uint32_t>(OP_CastFloatingIntegralSint32, A0, L);
9738}
9739bool ByteCodeEmitter::emitCastFloatingIntegralUint32( uint32_t A0, SourceInfo L) {
9740 return emitOp<uint32_t>(OP_CastFloatingIntegralUint32, A0, L);
9741}
9742bool ByteCodeEmitter::emitCastFloatingIntegralSint64( uint32_t A0, SourceInfo L) {
9743 return emitOp<uint32_t>(OP_CastFloatingIntegralSint64, A0, L);
9744}
9745bool ByteCodeEmitter::emitCastFloatingIntegralUint64( uint32_t A0, SourceInfo L) {
9746 return emitOp<uint32_t>(OP_CastFloatingIntegralUint64, A0, L);
9747}
9748bool ByteCodeEmitter::emitCastFloatingIntegralBool( uint32_t A0, SourceInfo L) {
9749 return emitOp<uint32_t>(OP_CastFloatingIntegralBool, A0, L);
9750}
9751#endif
9752#ifdef GET_EVAL_IMPL
9753bool EvalEmitter::emitCastFloatingIntegralSint8( uint32_t A0, SourceInfo L) {
9754 if (!isActive()) return true;
9755 CurrentSource = L;
9756 return CastFloatingIntegral<PT_Sint8>(S, CodePtr(), A0);
9757}
9758bool EvalEmitter::emitCastFloatingIntegralUint8( uint32_t A0, SourceInfo L) {
9759 if (!isActive()) return true;
9760 CurrentSource = L;
9761 return CastFloatingIntegral<PT_Uint8>(S, CodePtr(), A0);
9762}
9763bool EvalEmitter::emitCastFloatingIntegralSint16( uint32_t A0, SourceInfo L) {
9764 if (!isActive()) return true;
9765 CurrentSource = L;
9766 return CastFloatingIntegral<PT_Sint16>(S, CodePtr(), A0);
9767}
9768bool EvalEmitter::emitCastFloatingIntegralUint16( uint32_t A0, SourceInfo L) {
9769 if (!isActive()) return true;
9770 CurrentSource = L;
9771 return CastFloatingIntegral<PT_Uint16>(S, CodePtr(), A0);
9772}
9773bool EvalEmitter::emitCastFloatingIntegralSint32( uint32_t A0, SourceInfo L) {
9774 if (!isActive()) return true;
9775 CurrentSource = L;
9776 return CastFloatingIntegral<PT_Sint32>(S, CodePtr(), A0);
9777}
9778bool EvalEmitter::emitCastFloatingIntegralUint32( uint32_t A0, SourceInfo L) {
9779 if (!isActive()) return true;
9780 CurrentSource = L;
9781 return CastFloatingIntegral<PT_Uint32>(S, CodePtr(), A0);
9782}
9783bool EvalEmitter::emitCastFloatingIntegralSint64( uint32_t A0, SourceInfo L) {
9784 if (!isActive()) return true;
9785 CurrentSource = L;
9786 return CastFloatingIntegral<PT_Sint64>(S, CodePtr(), A0);
9787}
9788bool EvalEmitter::emitCastFloatingIntegralUint64( uint32_t A0, SourceInfo L) {
9789 if (!isActive()) return true;
9790 CurrentSource = L;
9791 return CastFloatingIntegral<PT_Uint64>(S, CodePtr(), A0);
9792}
9793bool EvalEmitter::emitCastFloatingIntegralBool( uint32_t A0, SourceInfo L) {
9794 if (!isActive()) return true;
9795 CurrentSource = L;
9796 return CastFloatingIntegral<PT_Bool>(S, CodePtr(), A0);
9797}
9798#endif
9799#ifdef GET_OPCODE_NAMES
9800OP_CastFloatingIntegralAP,
9801#endif
9802#ifdef GET_INTERPFN_LIST
9803&Interp_CastFloatingIntegralAP,
9804#endif
9805#ifdef GET_INTERPFN_DISPATCHERS
9806PRESERVE_NONE
9807static bool Interp_CastFloatingIntegralAP(InterpState &S) {
9808 {
9809 CodePtr OpPC = S.PC;
9810 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9811 const auto V1 = ReadArg<uint32_t>(S, S.PC);
9812 if (!CastFloatingIntegralAP(S, OpPC, V0, V1)) return false;
9813 }
9814#if USE_TAILCALLS
9815 MUSTTAIL return InterpNext(S);
9816#else
9817 return true;
9818#endif
9819}
9820#endif
9821#ifdef GET_DISASM
9822case OP_CastFloatingIntegralAP:
9823 Text.Op = PrintName("CastFloatingIntegralAP");
9824 Text.Args.push_back(printArg<uint32_t>(PC));
9825 Text.Args.push_back(printArg<uint32_t>(PC));
9826 break;
9827#endif
9828#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9829bool emitCastFloatingIntegralAP( uint32_t , uint32_t , SourceInfo);
9830#endif
9831#ifdef GET_LINK_IMPL
9832bool ByteCodeEmitter::emitCastFloatingIntegralAP( uint32_t A0, uint32_t A1, SourceInfo L) {
9833 return emitOp<uint32_t, uint32_t>(OP_CastFloatingIntegralAP, A0, A1, L);
9834}
9835#endif
9836#ifdef GET_EVAL_IMPL
9837bool EvalEmitter::emitCastFloatingIntegralAP( uint32_t A0, uint32_t A1, SourceInfo L) {
9838 if (!isActive()) return true;
9839 CurrentSource = L;
9840 return CastFloatingIntegralAP(S, CodePtr(), A0, A1);
9841}
9842#endif
9843#ifdef GET_OPCODE_NAMES
9844OP_CastFloatingIntegralAPS,
9845#endif
9846#ifdef GET_INTERPFN_LIST
9847&Interp_CastFloatingIntegralAPS,
9848#endif
9849#ifdef GET_INTERPFN_DISPATCHERS
9850PRESERVE_NONE
9851static bool Interp_CastFloatingIntegralAPS(InterpState &S) {
9852 {
9853 CodePtr OpPC = S.PC;
9854 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9855 const auto V1 = ReadArg<uint32_t>(S, S.PC);
9856 if (!CastFloatingIntegralAPS(S, OpPC, V0, V1)) return false;
9857 }
9858#if USE_TAILCALLS
9859 MUSTTAIL return InterpNext(S);
9860#else
9861 return true;
9862#endif
9863}
9864#endif
9865#ifdef GET_DISASM
9866case OP_CastFloatingIntegralAPS:
9867 Text.Op = PrintName("CastFloatingIntegralAPS");
9868 Text.Args.push_back(printArg<uint32_t>(PC));
9869 Text.Args.push_back(printArg<uint32_t>(PC));
9870 break;
9871#endif
9872#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9873bool emitCastFloatingIntegralAPS( uint32_t , uint32_t , SourceInfo);
9874#endif
9875#ifdef GET_LINK_IMPL
9876bool ByteCodeEmitter::emitCastFloatingIntegralAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
9877 return emitOp<uint32_t, uint32_t>(OP_CastFloatingIntegralAPS, A0, A1, L);
9878}
9879#endif
9880#ifdef GET_EVAL_IMPL
9881bool EvalEmitter::emitCastFloatingIntegralAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
9882 if (!isActive()) return true;
9883 CurrentSource = L;
9884 return CastFloatingIntegralAPS(S, CodePtr(), A0, A1);
9885}
9886#endif
9887#ifdef GET_OPCODE_NAMES
9888OP_CastIntegralFixedPointSint8,
9889OP_CastIntegralFixedPointUint8,
9890OP_CastIntegralFixedPointSint16,
9891OP_CastIntegralFixedPointUint16,
9892OP_CastIntegralFixedPointSint32,
9893OP_CastIntegralFixedPointUint32,
9894OP_CastIntegralFixedPointSint64,
9895OP_CastIntegralFixedPointUint64,
9896OP_CastIntegralFixedPointIntAP,
9897OP_CastIntegralFixedPointIntAPS,
9898OP_CastIntegralFixedPointBool,
9899#endif
9900#ifdef GET_INTERPFN_LIST
9901&Interp_CastIntegralFixedPointSint8,
9902&Interp_CastIntegralFixedPointUint8,
9903&Interp_CastIntegralFixedPointSint16,
9904&Interp_CastIntegralFixedPointUint16,
9905&Interp_CastIntegralFixedPointSint32,
9906&Interp_CastIntegralFixedPointUint32,
9907&Interp_CastIntegralFixedPointSint64,
9908&Interp_CastIntegralFixedPointUint64,
9909&Interp_CastIntegralFixedPointIntAP,
9910&Interp_CastIntegralFixedPointIntAPS,
9911&Interp_CastIntegralFixedPointBool,
9912#endif
9913#ifdef GET_INTERPFN_DISPATCHERS
9914PRESERVE_NONE
9915static bool Interp_CastIntegralFixedPointSint8(InterpState &S) {
9916 {
9917 CodePtr OpPC = S.PC;
9918 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9919 if (!CastIntegralFixedPoint<PT_Sint8>(S, OpPC, V0)) return false;
9920 }
9921#if USE_TAILCALLS
9922 MUSTTAIL return InterpNext(S);
9923#else
9924 return true;
9925#endif
9926}
9927PRESERVE_NONE
9928static bool Interp_CastIntegralFixedPointUint8(InterpState &S) {
9929 {
9930 CodePtr OpPC = S.PC;
9931 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9932 if (!CastIntegralFixedPoint<PT_Uint8>(S, OpPC, V0)) return false;
9933 }
9934#if USE_TAILCALLS
9935 MUSTTAIL return InterpNext(S);
9936#else
9937 return true;
9938#endif
9939}
9940PRESERVE_NONE
9941static bool Interp_CastIntegralFixedPointSint16(InterpState &S) {
9942 {
9943 CodePtr OpPC = S.PC;
9944 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9945 if (!CastIntegralFixedPoint<PT_Sint16>(S, OpPC, V0)) return false;
9946 }
9947#if USE_TAILCALLS
9948 MUSTTAIL return InterpNext(S);
9949#else
9950 return true;
9951#endif
9952}
9953PRESERVE_NONE
9954static bool Interp_CastIntegralFixedPointUint16(InterpState &S) {
9955 {
9956 CodePtr OpPC = S.PC;
9957 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9958 if (!CastIntegralFixedPoint<PT_Uint16>(S, OpPC, V0)) return false;
9959 }
9960#if USE_TAILCALLS
9961 MUSTTAIL return InterpNext(S);
9962#else
9963 return true;
9964#endif
9965}
9966PRESERVE_NONE
9967static bool Interp_CastIntegralFixedPointSint32(InterpState &S) {
9968 {
9969 CodePtr OpPC = S.PC;
9970 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9971 if (!CastIntegralFixedPoint<PT_Sint32>(S, OpPC, V0)) return false;
9972 }
9973#if USE_TAILCALLS
9974 MUSTTAIL return InterpNext(S);
9975#else
9976 return true;
9977#endif
9978}
9979PRESERVE_NONE
9980static bool Interp_CastIntegralFixedPointUint32(InterpState &S) {
9981 {
9982 CodePtr OpPC = S.PC;
9983 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9984 if (!CastIntegralFixedPoint<PT_Uint32>(S, OpPC, V0)) return false;
9985 }
9986#if USE_TAILCALLS
9987 MUSTTAIL return InterpNext(S);
9988#else
9989 return true;
9990#endif
9991}
9992PRESERVE_NONE
9993static bool Interp_CastIntegralFixedPointSint64(InterpState &S) {
9994 {
9995 CodePtr OpPC = S.PC;
9996 const auto V0 = ReadArg<uint32_t>(S, S.PC);
9997 if (!CastIntegralFixedPoint<PT_Sint64>(S, OpPC, V0)) return false;
9998 }
9999#if USE_TAILCALLS
10000 MUSTTAIL return InterpNext(S);
10001#else
10002 return true;
10003#endif
10004}
10005PRESERVE_NONE
10006static bool Interp_CastIntegralFixedPointUint64(InterpState &S) {
10007 {
10008 CodePtr OpPC = S.PC;
10009 const auto V0 = ReadArg<uint32_t>(S, S.PC);
10010 if (!CastIntegralFixedPoint<PT_Uint64>(S, OpPC, V0)) return false;
10011 }
10012#if USE_TAILCALLS
10013 MUSTTAIL return InterpNext(S);
10014#else
10015 return true;
10016#endif
10017}
10018PRESERVE_NONE
10019static bool Interp_CastIntegralFixedPointIntAP(InterpState &S) {
10020 {
10021 CodePtr OpPC = S.PC;
10022 const auto V0 = ReadArg<uint32_t>(S, S.PC);
10023 if (!CastIntegralFixedPoint<PT_IntAP>(S, OpPC, V0)) return false;
10024 }
10025#if USE_TAILCALLS
10026 MUSTTAIL return InterpNext(S);
10027#else
10028 return true;
10029#endif
10030}
10031PRESERVE_NONE
10032static bool Interp_CastIntegralFixedPointIntAPS(InterpState &S) {
10033 {
10034 CodePtr OpPC = S.PC;
10035 const auto V0 = ReadArg<uint32_t>(S, S.PC);
10036 if (!CastIntegralFixedPoint<PT_IntAPS>(S, OpPC, V0)) return false;
10037 }
10038#if USE_TAILCALLS
10039 MUSTTAIL return InterpNext(S);
10040#else
10041 return true;
10042#endif
10043}
10044PRESERVE_NONE
10045static bool Interp_CastIntegralFixedPointBool(InterpState &S) {
10046 {
10047 CodePtr OpPC = S.PC;
10048 const auto V0 = ReadArg<uint32_t>(S, S.PC);
10049 if (!CastIntegralFixedPoint<PT_Bool>(S, OpPC, V0)) return false;
10050 }
10051#if USE_TAILCALLS
10052 MUSTTAIL return InterpNext(S);
10053#else
10054 return true;
10055#endif
10056}
10057#endif
10058#ifdef GET_DISASM
10059case OP_CastIntegralFixedPointSint8:
10060 Text.Op = PrintName("CastIntegralFixedPointSint8");
10061 Text.Args.push_back(printArg<uint32_t>(PC));
10062 break;
10063case OP_CastIntegralFixedPointUint8:
10064 Text.Op = PrintName("CastIntegralFixedPointUint8");
10065 Text.Args.push_back(printArg<uint32_t>(PC));
10066 break;
10067case OP_CastIntegralFixedPointSint16:
10068 Text.Op = PrintName("CastIntegralFixedPointSint16");
10069 Text.Args.push_back(printArg<uint32_t>(PC));
10070 break;
10071case OP_CastIntegralFixedPointUint16:
10072 Text.Op = PrintName("CastIntegralFixedPointUint16");
10073 Text.Args.push_back(printArg<uint32_t>(PC));
10074 break;
10075case OP_CastIntegralFixedPointSint32:
10076 Text.Op = PrintName("CastIntegralFixedPointSint32");
10077 Text.Args.push_back(printArg<uint32_t>(PC));
10078 break;
10079case OP_CastIntegralFixedPointUint32:
10080 Text.Op = PrintName("CastIntegralFixedPointUint32");
10081 Text.Args.push_back(printArg<uint32_t>(PC));
10082 break;
10083case OP_CastIntegralFixedPointSint64:
10084 Text.Op = PrintName("CastIntegralFixedPointSint64");
10085 Text.Args.push_back(printArg<uint32_t>(PC));
10086 break;
10087case OP_CastIntegralFixedPointUint64:
10088 Text.Op = PrintName("CastIntegralFixedPointUint64");
10089 Text.Args.push_back(printArg<uint32_t>(PC));
10090 break;
10091case OP_CastIntegralFixedPointIntAP:
10092 Text.Op = PrintName("CastIntegralFixedPointIntAP");
10093 Text.Args.push_back(printArg<uint32_t>(PC));
10094 break;
10095case OP_CastIntegralFixedPointIntAPS:
10096 Text.Op = PrintName("CastIntegralFixedPointIntAPS");
10097 Text.Args.push_back(printArg<uint32_t>(PC));
10098 break;
10099case OP_CastIntegralFixedPointBool:
10100 Text.Op = PrintName("CastIntegralFixedPointBool");
10101 Text.Args.push_back(printArg<uint32_t>(PC));
10102 break;
10103#endif
10104#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10105bool emitCastIntegralFixedPointSint8( uint32_t , SourceInfo);
10106bool emitCastIntegralFixedPointUint8( uint32_t , SourceInfo);
10107bool emitCastIntegralFixedPointSint16( uint32_t , SourceInfo);
10108bool emitCastIntegralFixedPointUint16( uint32_t , SourceInfo);
10109bool emitCastIntegralFixedPointSint32( uint32_t , SourceInfo);
10110bool emitCastIntegralFixedPointUint32( uint32_t , SourceInfo);
10111bool emitCastIntegralFixedPointSint64( uint32_t , SourceInfo);
10112bool emitCastIntegralFixedPointUint64( uint32_t , SourceInfo);
10113bool emitCastIntegralFixedPointIntAP( uint32_t , SourceInfo);
10114bool emitCastIntegralFixedPointIntAPS( uint32_t , SourceInfo);
10115bool emitCastIntegralFixedPointBool( uint32_t , SourceInfo);
10116#endif
10117#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10118[[nodiscard]] bool emitCastIntegralFixedPoint(PrimType, uint32_t, SourceInfo I);
10119#endif
10120#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
10121bool
10122#if defined(GET_EVAL_IMPL)
10123EvalEmitter
10124#else
10125ByteCodeEmitter
10126#endif
10127::emitCastIntegralFixedPoint(PrimType T0, uint32_t A0, SourceInfo I) {
10128 switch (T0) {
10129 case PT_Sint8:
10130 return emitCastIntegralFixedPointSint8(A0, I);
10131 case PT_Uint8:
10132 return emitCastIntegralFixedPointUint8(A0, I);
10133 case PT_Sint16:
10134 return emitCastIntegralFixedPointSint16(A0, I);
10135 case PT_Uint16:
10136 return emitCastIntegralFixedPointUint16(A0, I);
10137 case PT_Sint32:
10138 return emitCastIntegralFixedPointSint32(A0, I);
10139 case PT_Uint32:
10140 return emitCastIntegralFixedPointUint32(A0, I);
10141 case PT_Sint64:
10142 return emitCastIntegralFixedPointSint64(A0, I);
10143 case PT_Uint64:
10144 return emitCastIntegralFixedPointUint64(A0, I);
10145 case PT_IntAP:
10146 return emitCastIntegralFixedPointIntAP(A0, I);
10147 case PT_IntAPS:
10148 return emitCastIntegralFixedPointIntAPS(A0, I);
10149 case PT_Bool:
10150 return emitCastIntegralFixedPointBool(A0, I);
10151 default: llvm_unreachable("invalid type: emitCastIntegralFixedPoint");
10152 }
10153 llvm_unreachable("invalid enum value");
10154}
10155#endif
10156#ifdef GET_LINK_IMPL
10157bool ByteCodeEmitter::emitCastIntegralFixedPointSint8( uint32_t A0, SourceInfo L) {
10158 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint8, A0, L);
10159}
10160bool ByteCodeEmitter::emitCastIntegralFixedPointUint8( uint32_t A0, SourceInfo L) {
10161 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint8, A0, L);
10162}
10163bool ByteCodeEmitter::emitCastIntegralFixedPointSint16( uint32_t A0, SourceInfo L) {
10164 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint16, A0, L);
10165}
10166bool ByteCodeEmitter::emitCastIntegralFixedPointUint16( uint32_t A0, SourceInfo L) {
10167 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint16, A0, L);
10168}
10169bool ByteCodeEmitter::emitCastIntegralFixedPointSint32( uint32_t A0, SourceInfo L) {
10170 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint32, A0, L);
10171}
10172bool ByteCodeEmitter::emitCastIntegralFixedPointUint32( uint32_t A0, SourceInfo L) {
10173 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint32, A0, L);
10174}
10175bool ByteCodeEmitter::emitCastIntegralFixedPointSint64( uint32_t A0, SourceInfo L) {
10176 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint64, A0, L);
10177}
10178bool ByteCodeEmitter::emitCastIntegralFixedPointUint64( uint32_t A0, SourceInfo L) {
10179 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint64, A0, L);
10180}
10181bool ByteCodeEmitter::emitCastIntegralFixedPointIntAP( uint32_t A0, SourceInfo L) {
10182 return emitOp<uint32_t>(OP_CastIntegralFixedPointIntAP, A0, L);
10183}
10184bool ByteCodeEmitter::emitCastIntegralFixedPointIntAPS( uint32_t A0, SourceInfo L) {
10185 return emitOp<uint32_t>(OP_CastIntegralFixedPointIntAPS, A0, L);
10186}
10187bool ByteCodeEmitter::emitCastIntegralFixedPointBool( uint32_t A0, SourceInfo L) {
10188 return emitOp<uint32_t>(OP_CastIntegralFixedPointBool, A0, L);
10189}
10190#endif
10191#ifdef GET_EVAL_IMPL
10192bool EvalEmitter::emitCastIntegralFixedPointSint8( uint32_t A0, SourceInfo L) {
10193 if (!isActive()) return true;
10194 CurrentSource = L;
10195 return CastIntegralFixedPoint<PT_Sint8>(S, CodePtr(), A0);
10196}
10197bool EvalEmitter::emitCastIntegralFixedPointUint8( uint32_t A0, SourceInfo L) {
10198 if (!isActive()) return true;
10199 CurrentSource = L;
10200 return CastIntegralFixedPoint<PT_Uint8>(S, CodePtr(), A0);
10201}
10202bool EvalEmitter::emitCastIntegralFixedPointSint16( uint32_t A0, SourceInfo L) {
10203 if (!isActive()) return true;
10204 CurrentSource = L;
10205 return CastIntegralFixedPoint<PT_Sint16>(S, CodePtr(), A0);
10206}
10207bool EvalEmitter::emitCastIntegralFixedPointUint16( uint32_t A0, SourceInfo L) {
10208 if (!isActive()) return true;
10209 CurrentSource = L;
10210 return CastIntegralFixedPoint<PT_Uint16>(S, CodePtr(), A0);
10211}
10212bool EvalEmitter::emitCastIntegralFixedPointSint32( uint32_t A0, SourceInfo L) {
10213 if (!isActive()) return true;
10214 CurrentSource = L;
10215 return CastIntegralFixedPoint<PT_Sint32>(S, CodePtr(), A0);
10216}
10217bool EvalEmitter::emitCastIntegralFixedPointUint32( uint32_t A0, SourceInfo L) {
10218 if (!isActive()) return true;
10219 CurrentSource = L;
10220 return CastIntegralFixedPoint<PT_Uint32>(S, CodePtr(), A0);
10221}
10222bool EvalEmitter::emitCastIntegralFixedPointSint64( uint32_t A0, SourceInfo L) {
10223 if (!isActive()) return true;
10224 CurrentSource = L;
10225 return CastIntegralFixedPoint<PT_Sint64>(S, CodePtr(), A0);
10226}
10227bool EvalEmitter::emitCastIntegralFixedPointUint64( uint32_t A0, SourceInfo L) {
10228 if (!isActive()) return true;
10229 CurrentSource = L;
10230 return CastIntegralFixedPoint<PT_Uint64>(S, CodePtr(), A0);
10231}
10232bool EvalEmitter::emitCastIntegralFixedPointIntAP( uint32_t A0, SourceInfo L) {
10233 if (!isActive()) return true;
10234 CurrentSource = L;
10235 return CastIntegralFixedPoint<PT_IntAP>(S, CodePtr(), A0);
10236}
10237bool EvalEmitter::emitCastIntegralFixedPointIntAPS( uint32_t A0, SourceInfo L) {
10238 if (!isActive()) return true;
10239 CurrentSource = L;
10240 return CastIntegralFixedPoint<PT_IntAPS>(S, CodePtr(), A0);
10241}
10242bool EvalEmitter::emitCastIntegralFixedPointBool( uint32_t A0, SourceInfo L) {
10243 if (!isActive()) return true;
10244 CurrentSource = L;
10245 return CastIntegralFixedPoint<PT_Bool>(S, CodePtr(), A0);
10246}
10247#endif
10248#ifdef GET_OPCODE_NAMES
10249OP_CastIntegralFloatingSint8,
10250OP_CastIntegralFloatingUint8,
10251OP_CastIntegralFloatingSint16,
10252OP_CastIntegralFloatingUint16,
10253OP_CastIntegralFloatingSint32,
10254OP_CastIntegralFloatingUint32,
10255OP_CastIntegralFloatingSint64,
10256OP_CastIntegralFloatingUint64,
10257OP_CastIntegralFloatingIntAP,
10258OP_CastIntegralFloatingIntAPS,
10259OP_CastIntegralFloatingBool,
10260OP_CastIntegralFloatingFixedPoint,
10261#endif
10262#ifdef GET_INTERPFN_LIST
10263&Interp_CastIntegralFloatingSint8,
10264&Interp_CastIntegralFloatingUint8,
10265&Interp_CastIntegralFloatingSint16,
10266&Interp_CastIntegralFloatingUint16,
10267&Interp_CastIntegralFloatingSint32,
10268&Interp_CastIntegralFloatingUint32,
10269&Interp_CastIntegralFloatingSint64,
10270&Interp_CastIntegralFloatingUint64,
10271&Interp_CastIntegralFloatingIntAP,
10272&Interp_CastIntegralFloatingIntAPS,
10273&Interp_CastIntegralFloatingBool,
10274&Interp_CastIntegralFloatingFixedPoint,
10275#endif
10276#ifdef GET_INTERPFN_DISPATCHERS
10277PRESERVE_NONE
10278static bool Interp_CastIntegralFloatingSint8(InterpState &S) {
10279 {
10280 CodePtr OpPC = S.PC;
10281 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10282 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10283 if (!CastIntegralFloating<PT_Sint8>(S, OpPC, V0, V1)) return false;
10284 }
10285#if USE_TAILCALLS
10286 MUSTTAIL return InterpNext(S);
10287#else
10288 return true;
10289#endif
10290}
10291PRESERVE_NONE
10292static bool Interp_CastIntegralFloatingUint8(InterpState &S) {
10293 {
10294 CodePtr OpPC = S.PC;
10295 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10296 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10297 if (!CastIntegralFloating<PT_Uint8>(S, OpPC, V0, V1)) return false;
10298 }
10299#if USE_TAILCALLS
10300 MUSTTAIL return InterpNext(S);
10301#else
10302 return true;
10303#endif
10304}
10305PRESERVE_NONE
10306static bool Interp_CastIntegralFloatingSint16(InterpState &S) {
10307 {
10308 CodePtr OpPC = S.PC;
10309 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10310 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10311 if (!CastIntegralFloating<PT_Sint16>(S, OpPC, V0, V1)) return false;
10312 }
10313#if USE_TAILCALLS
10314 MUSTTAIL return InterpNext(S);
10315#else
10316 return true;
10317#endif
10318}
10319PRESERVE_NONE
10320static bool Interp_CastIntegralFloatingUint16(InterpState &S) {
10321 {
10322 CodePtr OpPC = S.PC;
10323 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10324 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10325 if (!CastIntegralFloating<PT_Uint16>(S, OpPC, V0, V1)) return false;
10326 }
10327#if USE_TAILCALLS
10328 MUSTTAIL return InterpNext(S);
10329#else
10330 return true;
10331#endif
10332}
10333PRESERVE_NONE
10334static bool Interp_CastIntegralFloatingSint32(InterpState &S) {
10335 {
10336 CodePtr OpPC = S.PC;
10337 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10338 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10339 if (!CastIntegralFloating<PT_Sint32>(S, OpPC, V0, V1)) return false;
10340 }
10341#if USE_TAILCALLS
10342 MUSTTAIL return InterpNext(S);
10343#else
10344 return true;
10345#endif
10346}
10347PRESERVE_NONE
10348static bool Interp_CastIntegralFloatingUint32(InterpState &S) {
10349 {
10350 CodePtr OpPC = S.PC;
10351 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10352 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10353 if (!CastIntegralFloating<PT_Uint32>(S, OpPC, V0, V1)) return false;
10354 }
10355#if USE_TAILCALLS
10356 MUSTTAIL return InterpNext(S);
10357#else
10358 return true;
10359#endif
10360}
10361PRESERVE_NONE
10362static bool Interp_CastIntegralFloatingSint64(InterpState &S) {
10363 {
10364 CodePtr OpPC = S.PC;
10365 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10366 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10367 if (!CastIntegralFloating<PT_Sint64>(S, OpPC, V0, V1)) return false;
10368 }
10369#if USE_TAILCALLS
10370 MUSTTAIL return InterpNext(S);
10371#else
10372 return true;
10373#endif
10374}
10375PRESERVE_NONE
10376static bool Interp_CastIntegralFloatingUint64(InterpState &S) {
10377 {
10378 CodePtr OpPC = S.PC;
10379 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10380 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10381 if (!CastIntegralFloating<PT_Uint64>(S, OpPC, V0, V1)) return false;
10382 }
10383#if USE_TAILCALLS
10384 MUSTTAIL return InterpNext(S);
10385#else
10386 return true;
10387#endif
10388}
10389PRESERVE_NONE
10390static bool Interp_CastIntegralFloatingIntAP(InterpState &S) {
10391 {
10392 CodePtr OpPC = S.PC;
10393 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10394 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10395 if (!CastIntegralFloating<PT_IntAP>(S, OpPC, V0, V1)) return false;
10396 }
10397#if USE_TAILCALLS
10398 MUSTTAIL return InterpNext(S);
10399#else
10400 return true;
10401#endif
10402}
10403PRESERVE_NONE
10404static bool Interp_CastIntegralFloatingIntAPS(InterpState &S) {
10405 {
10406 CodePtr OpPC = S.PC;
10407 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10408 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10409 if (!CastIntegralFloating<PT_IntAPS>(S, OpPC, V0, V1)) return false;
10410 }
10411#if USE_TAILCALLS
10412 MUSTTAIL return InterpNext(S);
10413#else
10414 return true;
10415#endif
10416}
10417PRESERVE_NONE
10418static bool Interp_CastIntegralFloatingBool(InterpState &S) {
10419 {
10420 CodePtr OpPC = S.PC;
10421 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10422 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10423 if (!CastIntegralFloating<PT_Bool>(S, OpPC, V0, V1)) return false;
10424 }
10425#if USE_TAILCALLS
10426 MUSTTAIL return InterpNext(S);
10427#else
10428 return true;
10429#endif
10430}
10431PRESERVE_NONE
10432static bool Interp_CastIntegralFloatingFixedPoint(InterpState &S) {
10433 {
10434 CodePtr OpPC = S.PC;
10435 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, S.PC);
10436 const auto V1 = ReadArg<uint32_t>(S, S.PC);
10437 if (!CastIntegralFloating<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
10438 }
10439#if USE_TAILCALLS
10440 MUSTTAIL return InterpNext(S);
10441#else
10442 return true;
10443#endif
10444}
10445#endif
10446#ifdef GET_DISASM
10447case OP_CastIntegralFloatingSint8:
10448 Text.Op = PrintName("CastIntegralFloatingSint8");
10449 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10450 Text.Args.push_back(printArg<uint32_t>(PC));
10451 break;
10452case OP_CastIntegralFloatingUint8:
10453 Text.Op = PrintName("CastIntegralFloatingUint8");
10454 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10455 Text.Args.push_back(printArg<uint32_t>(PC));
10456 break;
10457case OP_CastIntegralFloatingSint16:
10458 Text.Op = PrintName("CastIntegralFloatingSint16");
10459 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10460 Text.Args.push_back(printArg<uint32_t>(PC));
10461 break;
10462case OP_CastIntegralFloatingUint16:
10463 Text.Op = PrintName("CastIntegralFloatingUint16");
10464 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10465 Text.Args.push_back(printArg<uint32_t>(PC));
10466 break;
10467case OP_CastIntegralFloatingSint32:
10468 Text.Op = PrintName("CastIntegralFloatingSint32");
10469 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10470 Text.Args.push_back(printArg<uint32_t>(PC));
10471 break;
10472case OP_CastIntegralFloatingUint32:
10473 Text.Op = PrintName("CastIntegralFloatingUint32");
10474 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10475 Text.Args.push_back(printArg<uint32_t>(PC));
10476 break;
10477case OP_CastIntegralFloatingSint64:
10478 Text.Op = PrintName("CastIntegralFloatingSint64");
10479 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10480 Text.Args.push_back(printArg<uint32_t>(PC));
10481 break;
10482case OP_CastIntegralFloatingUint64:
10483 Text.Op = PrintName("CastIntegralFloatingUint64");
10484 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10485 Text.Args.push_back(printArg<uint32_t>(PC));
10486 break;
10487case OP_CastIntegralFloatingIntAP:
10488 Text.Op = PrintName("CastIntegralFloatingIntAP");
10489 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10490 Text.Args.push_back(printArg<uint32_t>(PC));
10491 break;
10492case OP_CastIntegralFloatingIntAPS:
10493 Text.Op = PrintName("CastIntegralFloatingIntAPS");
10494 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10495 Text.Args.push_back(printArg<uint32_t>(PC));
10496 break;
10497case OP_CastIntegralFloatingBool:
10498 Text.Op = PrintName("CastIntegralFloatingBool");
10499 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10500 Text.Args.push_back(printArg<uint32_t>(PC));
10501 break;
10502case OP_CastIntegralFloatingFixedPoint:
10503 Text.Op = PrintName("CastIntegralFloatingFixedPoint");
10504 Text.Args.push_back(printArg<const llvm::fltSemantics *>(PC));
10505 Text.Args.push_back(printArg<uint32_t>(PC));
10506 break;
10507#endif
10508#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10509bool emitCastIntegralFloatingSint8( const llvm::fltSemantics * , uint32_t , SourceInfo);
10510bool emitCastIntegralFloatingUint8( const llvm::fltSemantics * , uint32_t , SourceInfo);
10511bool emitCastIntegralFloatingSint16( const llvm::fltSemantics * , uint32_t , SourceInfo);
10512bool emitCastIntegralFloatingUint16( const llvm::fltSemantics * , uint32_t , SourceInfo);
10513bool emitCastIntegralFloatingSint32( const llvm::fltSemantics * , uint32_t , SourceInfo);
10514bool emitCastIntegralFloatingUint32( const llvm::fltSemantics * , uint32_t , SourceInfo);
10515bool emitCastIntegralFloatingSint64( const llvm::fltSemantics * , uint32_t , SourceInfo);
10516bool emitCastIntegralFloatingUint64( const llvm::fltSemantics * , uint32_t , SourceInfo);
10517bool emitCastIntegralFloatingIntAP( const llvm::fltSemantics * , uint32_t , SourceInfo);
10518bool emitCastIntegralFloatingIntAPS( const llvm::fltSemantics * , uint32_t , SourceInfo);
10519bool emitCastIntegralFloatingBool( const llvm::fltSemantics * , uint32_t , SourceInfo);
10520bool emitCastIntegralFloatingFixedPoint( const llvm::fltSemantics * , uint32_t , SourceInfo);
10521#endif
10522#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10523[[nodiscard]] bool emitCastIntegralFloating(PrimType, const llvm::fltSemantics *, uint32_t, SourceInfo I);
10524#endif
10525#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
10526bool
10527#if defined(GET_EVAL_IMPL)
10528EvalEmitter
10529#else
10530ByteCodeEmitter
10531#endif
10532::emitCastIntegralFloating(PrimType T0, const llvm::fltSemantics * A0, uint32_t A1, SourceInfo I) {
10533 switch (T0) {
10534 case PT_Sint8:
10535 return emitCastIntegralFloatingSint8(A0, A1, I);
10536 case PT_Uint8:
10537 return emitCastIntegralFloatingUint8(A0, A1, I);
10538 case PT_Sint16:
10539 return emitCastIntegralFloatingSint16(A0, A1, I);
10540 case PT_Uint16:
10541 return emitCastIntegralFloatingUint16(A0, A1, I);
10542 case PT_Sint32:
10543 return emitCastIntegralFloatingSint32(A0, A1, I);
10544 case PT_Uint32:
10545 return emitCastIntegralFloatingUint32(A0, A1, I);
10546 case PT_Sint64:
10547 return emitCastIntegralFloatingSint64(A0, A1, I);
10548 case PT_Uint64:
10549 return emitCastIntegralFloatingUint64(A0, A1, I);
10550 case PT_IntAP:
10551 return emitCastIntegralFloatingIntAP(A0, A1, I);
10552 case PT_IntAPS:
10553 return emitCastIntegralFloatingIntAPS(A0, A1, I);
10554 case PT_Bool:
10555 return emitCastIntegralFloatingBool(A0, A1, I);
10556 case PT_FixedPoint:
10557 return emitCastIntegralFloatingFixedPoint(A0, A1, I);
10558 default: llvm_unreachable("invalid type: emitCastIntegralFloating");
10559 }
10560 llvm_unreachable("invalid enum value");
10561}
10562#endif
10563#ifdef GET_LINK_IMPL
10564bool ByteCodeEmitter::emitCastIntegralFloatingSint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10565 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint8, A0, A1, L);
10566}
10567bool ByteCodeEmitter::emitCastIntegralFloatingUint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10568 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint8, A0, A1, L);
10569}
10570bool ByteCodeEmitter::emitCastIntegralFloatingSint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10571 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint16, A0, A1, L);
10572}
10573bool ByteCodeEmitter::emitCastIntegralFloatingUint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10574 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint16, A0, A1, L);
10575}
10576bool ByteCodeEmitter::emitCastIntegralFloatingSint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10577 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint32, A0, A1, L);
10578}
10579bool ByteCodeEmitter::emitCastIntegralFloatingUint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10580 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint32, A0, A1, L);
10581}
10582bool ByteCodeEmitter::emitCastIntegralFloatingSint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10583 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint64, A0, A1, L);
10584}
10585bool ByteCodeEmitter::emitCastIntegralFloatingUint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10586 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint64, A0, A1, L);
10587}
10588bool ByteCodeEmitter::emitCastIntegralFloatingIntAP( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10589 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingIntAP, A0, A1, L);
10590}
10591bool ByteCodeEmitter::emitCastIntegralFloatingIntAPS( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10592 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingIntAPS, A0, A1, L);
10593}
10594bool ByteCodeEmitter::emitCastIntegralFloatingBool( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10595 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingBool, A0, A1, L);
10596}
10597bool ByteCodeEmitter::emitCastIntegralFloatingFixedPoint( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10598 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingFixedPoint, A0, A1, L);
10599}
10600#endif
10601#ifdef GET_EVAL_IMPL
10602bool EvalEmitter::emitCastIntegralFloatingSint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10603 if (!isActive()) return true;
10604 CurrentSource = L;
10605 return CastIntegralFloating<PT_Sint8>(S, CodePtr(), A0, A1);
10606}
10607bool EvalEmitter::emitCastIntegralFloatingUint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10608 if (!isActive()) return true;
10609 CurrentSource = L;
10610 return CastIntegralFloating<PT_Uint8>(S, CodePtr(), A0, A1);
10611}
10612bool EvalEmitter::emitCastIntegralFloatingSint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10613 if (!isActive()) return true;
10614 CurrentSource = L;
10615 return CastIntegralFloating<PT_Sint16>(S, CodePtr(), A0, A1);
10616}
10617bool EvalEmitter::emitCastIntegralFloatingUint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10618 if (!isActive()) return true;
10619 CurrentSource = L;
10620 return CastIntegralFloating<PT_Uint16>(S, CodePtr(), A0, A1);
10621}
10622bool EvalEmitter::emitCastIntegralFloatingSint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10623 if (!isActive()) return true;
10624 CurrentSource = L;
10625 return CastIntegralFloating<PT_Sint32>(S, CodePtr(), A0, A1);
10626}
10627bool EvalEmitter::emitCastIntegralFloatingUint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10628 if (!isActive()) return true;
10629 CurrentSource = L;
10630 return CastIntegralFloating<PT_Uint32>(S, CodePtr(), A0, A1);
10631}
10632bool EvalEmitter::emitCastIntegralFloatingSint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10633 if (!isActive()) return true;
10634 CurrentSource = L;
10635 return CastIntegralFloating<PT_Sint64>(S, CodePtr(), A0, A1);
10636}
10637bool EvalEmitter::emitCastIntegralFloatingUint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10638 if (!isActive()) return true;
10639 CurrentSource = L;
10640 return CastIntegralFloating<PT_Uint64>(S, CodePtr(), A0, A1);
10641}
10642bool EvalEmitter::emitCastIntegralFloatingIntAP( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10643 if (!isActive()) return true;
10644 CurrentSource = L;
10645 return CastIntegralFloating<PT_IntAP>(S, CodePtr(), A0, A1);
10646}
10647bool EvalEmitter::emitCastIntegralFloatingIntAPS( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10648 if (!isActive()) return true;
10649 CurrentSource = L;
10650 return CastIntegralFloating<PT_IntAPS>(S, CodePtr(), A0, A1);
10651}
10652bool EvalEmitter::emitCastIntegralFloatingBool( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10653 if (!isActive()) return true;
10654 CurrentSource = L;
10655 return CastIntegralFloating<PT_Bool>(S, CodePtr(), A0, A1);
10656}
10657bool EvalEmitter::emitCastIntegralFloatingFixedPoint( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10658 if (!isActive()) return true;
10659 CurrentSource = L;
10660 return CastIntegralFloating<PT_FixedPoint>(S, CodePtr(), A0, A1);
10661}
10662#endif
10663#ifdef GET_OPCODE_NAMES
10664OP_CastMemberPtrBasePop,
10665#endif
10666#ifdef GET_INTERPFN_LIST
10667&Interp_CastMemberPtrBasePop,
10668#endif
10669#ifdef GET_INTERPFN_DISPATCHERS
10670PRESERVE_NONE
10671static bool Interp_CastMemberPtrBasePop(InterpState &S) {
10672 {
10673 const auto V0 = ReadArg<int32_t>(S, S.PC);
10674 const auto V1 = ReadArg<const RecordDecl *>(S, S.PC);
10675 if (!CastMemberPtrBasePop(S, V0, V1)) return false;
10676 }
10677#if USE_TAILCALLS
10678 MUSTTAIL return InterpNext(S);
10679#else
10680 return true;
10681#endif
10682}
10683#endif
10684#ifdef GET_DISASM
10685case OP_CastMemberPtrBasePop:
10686 Text.Op = PrintName("CastMemberPtrBasePop");
10687 Text.Args.push_back(printArg<int32_t>(PC));
10688 Text.Args.push_back(printArg<const RecordDecl *>(PC));
10689 break;
10690#endif
10691#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10692bool emitCastMemberPtrBasePop( int32_t , const RecordDecl * , SourceInfo);
10693#endif
10694#ifdef GET_LINK_IMPL
10695bool ByteCodeEmitter::emitCastMemberPtrBasePop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
10696 return emitOp<int32_t, const RecordDecl *>(OP_CastMemberPtrBasePop, A0, A1, L);
10697}
10698#endif
10699#ifdef GET_EVAL_IMPL
10700bool EvalEmitter::emitCastMemberPtrBasePop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
10701 if (!isActive()) return true;
10702 CurrentSource = L;
10703 return CastMemberPtrBasePop(S, A0, A1);
10704}
10705#endif
10706#ifdef GET_OPCODE_NAMES
10707OP_CastMemberPtrDerivedPop,
10708#endif
10709#ifdef GET_INTERPFN_LIST
10710&Interp_CastMemberPtrDerivedPop,
10711#endif
10712#ifdef GET_INTERPFN_DISPATCHERS
10713PRESERVE_NONE
10714static bool Interp_CastMemberPtrDerivedPop(InterpState &S) {
10715 {
10716 const auto V0 = ReadArg<int32_t>(S, S.PC);
10717 const auto V1 = ReadArg<const RecordDecl *>(S, S.PC);
10718 if (!CastMemberPtrDerivedPop(S, V0, V1)) return false;
10719 }
10720#if USE_TAILCALLS
10721 MUSTTAIL return InterpNext(S);
10722#else
10723 return true;
10724#endif
10725}
10726#endif
10727#ifdef GET_DISASM
10728case OP_CastMemberPtrDerivedPop:
10729 Text.Op = PrintName("CastMemberPtrDerivedPop");
10730 Text.Args.push_back(printArg<int32_t>(PC));
10731 Text.Args.push_back(printArg<const RecordDecl *>(PC));
10732 break;
10733#endif
10734#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10735bool emitCastMemberPtrDerivedPop( int32_t , const RecordDecl * , SourceInfo);
10736#endif
10737#ifdef GET_LINK_IMPL
10738bool ByteCodeEmitter::emitCastMemberPtrDerivedPop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
10739 return emitOp<int32_t, const RecordDecl *>(OP_CastMemberPtrDerivedPop, A0, A1, L);
10740}
10741#endif
10742#ifdef GET_EVAL_IMPL
10743bool EvalEmitter::emitCastMemberPtrDerivedPop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
10744 if (!isActive()) return true;
10745 CurrentSource = L;
10746 return CastMemberPtrDerivedPop(S, A0, A1);
10747}
10748#endif
10749#ifdef GET_OPCODE_NAMES
10750OP_CastMemberPtrPtr,
10751#endif
10752#ifdef GET_INTERPFN_LIST
10753&Interp_CastMemberPtrPtr,
10754#endif
10755#ifdef GET_INTERPFN_DISPATCHERS
10756PRESERVE_NONE
10757static bool Interp_CastMemberPtrPtr(InterpState &S) {
10758 if (!CastMemberPtrPtr(S, S.PC)) return false;
10759#if USE_TAILCALLS
10760 MUSTTAIL return InterpNext(S);
10761#else
10762 return true;
10763#endif
10764}
10765#endif
10766#ifdef GET_DISASM
10767case OP_CastMemberPtrPtr:
10768 Text.Op = PrintName("CastMemberPtrPtr");
10769 break;
10770#endif
10771#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10772bool emitCastMemberPtrPtr(SourceInfo);
10773#endif
10774#ifdef GET_LINK_IMPL
10775bool ByteCodeEmitter::emitCastMemberPtrPtr(SourceInfo L) {
10776 return emitOp<>(OP_CastMemberPtrPtr, L);
10777}
10778#endif
10779#ifdef GET_EVAL_IMPL
10780bool EvalEmitter::emitCastMemberPtrPtr(SourceInfo L) {
10781 if (!isActive()) return true;
10782 CurrentSource = L;
10783 return CastMemberPtrPtr(S, CodePtr());
10784}
10785#endif
10786#ifdef GET_OPCODE_NAMES
10787OP_CastPointerIntegralSint8,
10788OP_CastPointerIntegralUint8,
10789OP_CastPointerIntegralSint16,
10790OP_CastPointerIntegralUint16,
10791OP_CastPointerIntegralSint32,
10792OP_CastPointerIntegralUint32,
10793OP_CastPointerIntegralSint64,
10794OP_CastPointerIntegralUint64,
10795OP_CastPointerIntegralBool,
10796#endif
10797#ifdef GET_INTERPFN_LIST
10798&Interp_CastPointerIntegralSint8,
10799&Interp_CastPointerIntegralUint8,
10800&Interp_CastPointerIntegralSint16,
10801&Interp_CastPointerIntegralUint16,
10802&Interp_CastPointerIntegralSint32,
10803&Interp_CastPointerIntegralUint32,
10804&Interp_CastPointerIntegralSint64,
10805&Interp_CastPointerIntegralUint64,
10806&Interp_CastPointerIntegralBool,
10807#endif
10808#ifdef GET_INTERPFN_DISPATCHERS
10809PRESERVE_NONE
10810static bool Interp_CastPointerIntegralSint8(InterpState &S) {
10811 if (!CastPointerIntegral<PT_Sint8>(S, S.PC)) return false;
10812#if USE_TAILCALLS
10813 MUSTTAIL return InterpNext(S);
10814#else
10815 return true;
10816#endif
10817}
10818PRESERVE_NONE
10819static bool Interp_CastPointerIntegralUint8(InterpState &S) {
10820 if (!CastPointerIntegral<PT_Uint8>(S, S.PC)) return false;
10821#if USE_TAILCALLS
10822 MUSTTAIL return InterpNext(S);
10823#else
10824 return true;
10825#endif
10826}
10827PRESERVE_NONE
10828static bool Interp_CastPointerIntegralSint16(InterpState &S) {
10829 if (!CastPointerIntegral<PT_Sint16>(S, S.PC)) return false;
10830#if USE_TAILCALLS
10831 MUSTTAIL return InterpNext(S);
10832#else
10833 return true;
10834#endif
10835}
10836PRESERVE_NONE
10837static bool Interp_CastPointerIntegralUint16(InterpState &S) {
10838 if (!CastPointerIntegral<PT_Uint16>(S, S.PC)) return false;
10839#if USE_TAILCALLS
10840 MUSTTAIL return InterpNext(S);
10841#else
10842 return true;
10843#endif
10844}
10845PRESERVE_NONE
10846static bool Interp_CastPointerIntegralSint32(InterpState &S) {
10847 if (!CastPointerIntegral<PT_Sint32>(S, S.PC)) return false;
10848#if USE_TAILCALLS
10849 MUSTTAIL return InterpNext(S);
10850#else
10851 return true;
10852#endif
10853}
10854PRESERVE_NONE
10855static bool Interp_CastPointerIntegralUint32(InterpState &S) {
10856 if (!CastPointerIntegral<PT_Uint32>(S, S.PC)) return false;
10857#if USE_TAILCALLS
10858 MUSTTAIL return InterpNext(S);
10859#else
10860 return true;
10861#endif
10862}
10863PRESERVE_NONE
10864static bool Interp_CastPointerIntegralSint64(InterpState &S) {
10865 if (!CastPointerIntegral<PT_Sint64>(S, S.PC)) return false;
10866#if USE_TAILCALLS
10867 MUSTTAIL return InterpNext(S);
10868#else
10869 return true;
10870#endif
10871}
10872PRESERVE_NONE
10873static bool Interp_CastPointerIntegralUint64(InterpState &S) {
10874 if (!CastPointerIntegral<PT_Uint64>(S, S.PC)) return false;
10875#if USE_TAILCALLS
10876 MUSTTAIL return InterpNext(S);
10877#else
10878 return true;
10879#endif
10880}
10881PRESERVE_NONE
10882static bool Interp_CastPointerIntegralBool(InterpState &S) {
10883 if (!CastPointerIntegral<PT_Bool>(S, S.PC)) return false;
10884#if USE_TAILCALLS
10885 MUSTTAIL return InterpNext(S);
10886#else
10887 return true;
10888#endif
10889}
10890#endif
10891#ifdef GET_DISASM
10892case OP_CastPointerIntegralSint8:
10893 Text.Op = PrintName("CastPointerIntegralSint8");
10894 break;
10895case OP_CastPointerIntegralUint8:
10896 Text.Op = PrintName("CastPointerIntegralUint8");
10897 break;
10898case OP_CastPointerIntegralSint16:
10899 Text.Op = PrintName("CastPointerIntegralSint16");
10900 break;
10901case OP_CastPointerIntegralUint16:
10902 Text.Op = PrintName("CastPointerIntegralUint16");
10903 break;
10904case OP_CastPointerIntegralSint32:
10905 Text.Op = PrintName("CastPointerIntegralSint32");
10906 break;
10907case OP_CastPointerIntegralUint32:
10908 Text.Op = PrintName("CastPointerIntegralUint32");
10909 break;
10910case OP_CastPointerIntegralSint64:
10911 Text.Op = PrintName("CastPointerIntegralSint64");
10912 break;
10913case OP_CastPointerIntegralUint64:
10914 Text.Op = PrintName("CastPointerIntegralUint64");
10915 break;
10916case OP_CastPointerIntegralBool:
10917 Text.Op = PrintName("CastPointerIntegralBool");
10918 break;
10919#endif
10920#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10921bool emitCastPointerIntegralSint8(SourceInfo);
10922bool emitCastPointerIntegralUint8(SourceInfo);
10923bool emitCastPointerIntegralSint16(SourceInfo);
10924bool emitCastPointerIntegralUint16(SourceInfo);
10925bool emitCastPointerIntegralSint32(SourceInfo);
10926bool emitCastPointerIntegralUint32(SourceInfo);
10927bool emitCastPointerIntegralSint64(SourceInfo);
10928bool emitCastPointerIntegralUint64(SourceInfo);
10929bool emitCastPointerIntegralBool(SourceInfo);
10930#endif
10931#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10932[[nodiscard]] bool emitCastPointerIntegral(PrimType, SourceInfo I);
10933#endif
10934#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
10935bool
10936#if defined(GET_EVAL_IMPL)
10937EvalEmitter
10938#else
10939ByteCodeEmitter
10940#endif
10941::emitCastPointerIntegral(PrimType T0, SourceInfo I) {
10942 switch (T0) {
10943 case PT_Sint8:
10944 return emitCastPointerIntegralSint8(I);
10945 case PT_Uint8:
10946 return emitCastPointerIntegralUint8(I);
10947 case PT_Sint16:
10948 return emitCastPointerIntegralSint16(I);
10949 case PT_Uint16:
10950 return emitCastPointerIntegralUint16(I);
10951 case PT_Sint32:
10952 return emitCastPointerIntegralSint32(I);
10953 case PT_Uint32:
10954 return emitCastPointerIntegralUint32(I);
10955 case PT_Sint64:
10956 return emitCastPointerIntegralSint64(I);
10957 case PT_Uint64:
10958 return emitCastPointerIntegralUint64(I);
10959 case PT_Bool:
10960 return emitCastPointerIntegralBool(I);
10961 default: llvm_unreachable("invalid type: emitCastPointerIntegral");
10962 }
10963 llvm_unreachable("invalid enum value");
10964}
10965#endif
10966#ifdef GET_LINK_IMPL
10967bool ByteCodeEmitter::emitCastPointerIntegralSint8(SourceInfo L) {
10968 return emitOp<>(OP_CastPointerIntegralSint8, L);
10969}
10970bool ByteCodeEmitter::emitCastPointerIntegralUint8(SourceInfo L) {
10971 return emitOp<>(OP_CastPointerIntegralUint8, L);
10972}
10973bool ByteCodeEmitter::emitCastPointerIntegralSint16(SourceInfo L) {
10974 return emitOp<>(OP_CastPointerIntegralSint16, L);
10975}
10976bool ByteCodeEmitter::emitCastPointerIntegralUint16(SourceInfo L) {
10977 return emitOp<>(OP_CastPointerIntegralUint16, L);
10978}
10979bool ByteCodeEmitter::emitCastPointerIntegralSint32(SourceInfo L) {
10980 return emitOp<>(OP_CastPointerIntegralSint32, L);
10981}
10982bool ByteCodeEmitter::emitCastPointerIntegralUint32(SourceInfo L) {
10983 return emitOp<>(OP_CastPointerIntegralUint32, L);
10984}
10985bool ByteCodeEmitter::emitCastPointerIntegralSint64(SourceInfo L) {
10986 return emitOp<>(OP_CastPointerIntegralSint64, L);
10987}
10988bool ByteCodeEmitter::emitCastPointerIntegralUint64(SourceInfo L) {
10989 return emitOp<>(OP_CastPointerIntegralUint64, L);
10990}
10991bool ByteCodeEmitter::emitCastPointerIntegralBool(SourceInfo L) {
10992 return emitOp<>(OP_CastPointerIntegralBool, L);
10993}
10994#endif
10995#ifdef GET_EVAL_IMPL
10996bool EvalEmitter::emitCastPointerIntegralSint8(SourceInfo L) {
10997 if (!isActive()) return true;
10998 CurrentSource = L;
10999 return CastPointerIntegral<PT_Sint8>(S, CodePtr());
11000}
11001bool EvalEmitter::emitCastPointerIntegralUint8(SourceInfo L) {
11002 if (!isActive()) return true;
11003 CurrentSource = L;
11004 return CastPointerIntegral<PT_Uint8>(S, CodePtr());
11005}
11006bool EvalEmitter::emitCastPointerIntegralSint16(SourceInfo L) {
11007 if (!isActive()) return true;
11008 CurrentSource = L;
11009 return CastPointerIntegral<PT_Sint16>(S, CodePtr());
11010}
11011bool EvalEmitter::emitCastPointerIntegralUint16(SourceInfo L) {
11012 if (!isActive()) return true;
11013 CurrentSource = L;
11014 return CastPointerIntegral<PT_Uint16>(S, CodePtr());
11015}
11016bool EvalEmitter::emitCastPointerIntegralSint32(SourceInfo L) {
11017 if (!isActive()) return true;
11018 CurrentSource = L;
11019 return CastPointerIntegral<PT_Sint32>(S, CodePtr());
11020}
11021bool EvalEmitter::emitCastPointerIntegralUint32(SourceInfo L) {
11022 if (!isActive()) return true;
11023 CurrentSource = L;
11024 return CastPointerIntegral<PT_Uint32>(S, CodePtr());
11025}
11026bool EvalEmitter::emitCastPointerIntegralSint64(SourceInfo L) {
11027 if (!isActive()) return true;
11028 CurrentSource = L;
11029 return CastPointerIntegral<PT_Sint64>(S, CodePtr());
11030}
11031bool EvalEmitter::emitCastPointerIntegralUint64(SourceInfo L) {
11032 if (!isActive()) return true;
11033 CurrentSource = L;
11034 return CastPointerIntegral<PT_Uint64>(S, CodePtr());
11035}
11036bool EvalEmitter::emitCastPointerIntegralBool(SourceInfo L) {
11037 if (!isActive()) return true;
11038 CurrentSource = L;
11039 return CastPointerIntegral<PT_Bool>(S, CodePtr());
11040}
11041#endif
11042#ifdef GET_OPCODE_NAMES
11043OP_CastPointerIntegralAP,
11044#endif
11045#ifdef GET_INTERPFN_LIST
11046&Interp_CastPointerIntegralAP,
11047#endif
11048#ifdef GET_INTERPFN_DISPATCHERS
11049PRESERVE_NONE
11050static bool Interp_CastPointerIntegralAP(InterpState &S) {
11051 {
11052 CodePtr OpPC = S.PC;
11053 const auto V0 = ReadArg<uint32_t>(S, S.PC);
11054 if (!CastPointerIntegralAP(S, OpPC, V0)) return false;
11055 }
11056#if USE_TAILCALLS
11057 MUSTTAIL return InterpNext(S);
11058#else
11059 return true;
11060#endif
11061}
11062#endif
11063#ifdef GET_DISASM
11064case OP_CastPointerIntegralAP:
11065 Text.Op = PrintName("CastPointerIntegralAP");
11066 Text.Args.push_back(printArg<uint32_t>(PC));
11067 break;
11068#endif
11069#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11070bool emitCastPointerIntegralAP( uint32_t , SourceInfo);
11071#endif
11072#ifdef GET_LINK_IMPL
11073bool ByteCodeEmitter::emitCastPointerIntegralAP( uint32_t A0, SourceInfo L) {
11074 return emitOp<uint32_t>(OP_CastPointerIntegralAP, A0, L);
11075}
11076#endif
11077#ifdef GET_EVAL_IMPL
11078bool EvalEmitter::emitCastPointerIntegralAP( uint32_t A0, SourceInfo L) {
11079 if (!isActive()) return true;
11080 CurrentSource = L;
11081 return CastPointerIntegralAP(S, CodePtr(), A0);
11082}
11083#endif
11084#ifdef GET_OPCODE_NAMES
11085OP_CastPointerIntegralAPS,
11086#endif
11087#ifdef GET_INTERPFN_LIST
11088&Interp_CastPointerIntegralAPS,
11089#endif
11090#ifdef GET_INTERPFN_DISPATCHERS
11091PRESERVE_NONE
11092static bool Interp_CastPointerIntegralAPS(InterpState &S) {
11093 {
11094 CodePtr OpPC = S.PC;
11095 const auto V0 = ReadArg<uint32_t>(S, S.PC);
11096 if (!CastPointerIntegralAPS(S, OpPC, V0)) return false;
11097 }
11098#if USE_TAILCALLS
11099 MUSTTAIL return InterpNext(S);
11100#else
11101 return true;
11102#endif
11103}
11104#endif
11105#ifdef GET_DISASM
11106case OP_CastPointerIntegralAPS:
11107 Text.Op = PrintName("CastPointerIntegralAPS");
11108 Text.Args.push_back(printArg<uint32_t>(PC));
11109 break;
11110#endif
11111#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11112bool emitCastPointerIntegralAPS( uint32_t , SourceInfo);
11113#endif
11114#ifdef GET_LINK_IMPL
11115bool ByteCodeEmitter::emitCastPointerIntegralAPS( uint32_t A0, SourceInfo L) {
11116 return emitOp<uint32_t>(OP_CastPointerIntegralAPS, A0, L);
11117}
11118#endif
11119#ifdef GET_EVAL_IMPL
11120bool EvalEmitter::emitCastPointerIntegralAPS( uint32_t A0, SourceInfo L) {
11121 if (!isActive()) return true;
11122 CurrentSource = L;
11123 return CastPointerIntegralAPS(S, CodePtr(), A0);
11124}
11125#endif
11126#ifdef GET_OPCODE_NAMES
11127OP_CheckAllocations,
11128#endif
11129#ifdef GET_INTERPFN_LIST
11130&Interp_CheckAllocations,
11131#endif
11132#ifdef GET_INTERPFN_DISPATCHERS
11133PRESERVE_NONE
11134static bool Interp_CheckAllocations(InterpState &S) {
11135 if (!CheckAllocations(S)) return false;
11136#if USE_TAILCALLS
11137 MUSTTAIL return InterpNext(S);
11138#else
11139 return true;
11140#endif
11141}
11142#endif
11143#ifdef GET_DISASM
11144case OP_CheckAllocations:
11145 Text.Op = PrintName("CheckAllocations");
11146 break;
11147#endif
11148#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11149bool emitCheckAllocations(SourceInfo);
11150#endif
11151#ifdef GET_LINK_IMPL
11152bool ByteCodeEmitter::emitCheckAllocations(SourceInfo L) {
11153 return emitOp<>(OP_CheckAllocations, L);
11154}
11155#endif
11156#ifdef GET_EVAL_IMPL
11157bool EvalEmitter::emitCheckAllocations(SourceInfo L) {
11158 if (!isActive()) return true;
11159 CurrentSource = L;
11160 return CheckAllocations(S);
11161}
11162#endif
11163#ifdef GET_OPCODE_NAMES
11164OP_CheckArrayDestSize,
11165#endif
11166#ifdef GET_INTERPFN_LIST
11167&Interp_CheckArrayDestSize,
11168#endif
11169#ifdef GET_INTERPFN_DISPATCHERS
11170PRESERVE_NONE
11171static bool Interp_CheckArrayDestSize(InterpState &S) {
11172 {
11173 CodePtr OpPC = S.PC;
11174 const auto V0 = ReadArg<uint64_t>(S, S.PC);
11175 if (!CheckArrayDestSize(S, OpPC, V0)) return false;
11176 }
11177#if USE_TAILCALLS
11178 MUSTTAIL return InterpNext(S);
11179#else
11180 return true;
11181#endif
11182}
11183#endif
11184#ifdef GET_DISASM
11185case OP_CheckArrayDestSize:
11186 Text.Op = PrintName("CheckArrayDestSize");
11187 Text.Args.push_back(printArg<uint64_t>(PC));
11188 break;
11189#endif
11190#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11191bool emitCheckArrayDestSize( uint64_t , SourceInfo);
11192#endif
11193#ifdef GET_LINK_IMPL
11194bool ByteCodeEmitter::emitCheckArrayDestSize( uint64_t A0, SourceInfo L) {
11195 return emitOp<uint64_t>(OP_CheckArrayDestSize, A0, L);
11196}
11197#endif
11198#ifdef GET_EVAL_IMPL
11199bool EvalEmitter::emitCheckArrayDestSize( uint64_t A0, SourceInfo L) {
11200 if (!isActive()) return true;
11201 CurrentSource = L;
11202 return CheckArrayDestSize(S, CodePtr(), A0);
11203}
11204#endif
11205#ifdef GET_OPCODE_NAMES
11206OP_CheckArraySize,
11207#endif
11208#ifdef GET_INTERPFN_LIST
11209&Interp_CheckArraySize,
11210#endif
11211#ifdef GET_INTERPFN_DISPATCHERS
11212PRESERVE_NONE
11213static bool Interp_CheckArraySize(InterpState &S) {
11214 {
11215 CodePtr OpPC = S.PC;
11216 const auto V0 = ReadArg<uint64_t>(S, S.PC);
11217 if (!CheckArraySize(S, OpPC, V0)) return false;
11218 }
11219#if USE_TAILCALLS
11220 MUSTTAIL return InterpNext(S);
11221#else
11222 return true;
11223#endif
11224}
11225#endif
11226#ifdef GET_DISASM
11227case OP_CheckArraySize:
11228 Text.Op = PrintName("CheckArraySize");
11229 Text.Args.push_back(printArg<uint64_t>(PC));
11230 break;
11231#endif
11232#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11233bool emitCheckArraySize( uint64_t , SourceInfo);
11234#endif
11235#ifdef GET_LINK_IMPL
11236bool ByteCodeEmitter::emitCheckArraySize( uint64_t A0, SourceInfo L) {
11237 return emitOp<uint64_t>(OP_CheckArraySize, A0, L);
11238}
11239#endif
11240#ifdef GET_EVAL_IMPL
11241bool EvalEmitter::emitCheckArraySize( uint64_t A0, SourceInfo L) {
11242 if (!isActive()) return true;
11243 CurrentSource = L;
11244 return CheckArraySize(S, CodePtr(), A0);
11245}
11246#endif
11247#ifdef GET_OPCODE_NAMES
11248OP_CheckBitCast,
11249#endif
11250#ifdef GET_INTERPFN_LIST
11251&Interp_CheckBitCast,
11252#endif
11253#ifdef GET_INTERPFN_DISPATCHERS
11254PRESERVE_NONE
11255static bool Interp_CheckBitCast(InterpState &S) {
11256 {
11257 CodePtr OpPC = S.PC;
11258 const auto V0 = ReadArg<const Type *>(S, S.PC);
11259 const auto V1 = ReadArg<bool>(S, S.PC);
11260 if (!CheckBitCast(S, OpPC, V0, V1)) return false;
11261 }
11262#if USE_TAILCALLS
11263 MUSTTAIL return InterpNext(S);
11264#else
11265 return true;
11266#endif
11267}
11268#endif
11269#ifdef GET_DISASM
11270case OP_CheckBitCast:
11271 Text.Op = PrintName("CheckBitCast");
11272 Text.Args.push_back(printArg<const Type *>(PC));
11273 Text.Args.push_back(printArg<bool>(PC));
11274 break;
11275#endif
11276#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11277bool emitCheckBitCast( const Type * , bool , SourceInfo);
11278#endif
11279#ifdef GET_LINK_IMPL
11280bool ByteCodeEmitter::emitCheckBitCast( const Type * A0, bool A1, SourceInfo L) {
11281 return emitOp<const Type *, bool>(OP_CheckBitCast, A0, A1, L);
11282}
11283#endif
11284#ifdef GET_EVAL_IMPL
11285bool EvalEmitter::emitCheckBitCast( const Type * A0, bool A1, SourceInfo L) {
11286 if (!isActive()) return true;
11287 CurrentSource = L;
11288 return CheckBitCast(S, CodePtr(), A0, A1);
11289}
11290#endif
11291#ifdef GET_OPCODE_NAMES
11292OP_CheckDecl,
11293#endif
11294#ifdef GET_INTERPFN_LIST
11295&Interp_CheckDecl,
11296#endif
11297#ifdef GET_INTERPFN_DISPATCHERS
11298PRESERVE_NONE
11299static bool Interp_CheckDecl(InterpState &S) {
11300 {
11301 const auto V0 = ReadArg<const VarDecl*>(S, S.PC);
11302 if (!CheckDecl(S, V0)) return false;
11303 }
11304#if USE_TAILCALLS
11305 MUSTTAIL return InterpNext(S);
11306#else
11307 return true;
11308#endif
11309}
11310#endif
11311#ifdef GET_DISASM
11312case OP_CheckDecl:
11313 Text.Op = PrintName("CheckDecl");
11314 Text.Args.push_back(printArg<const VarDecl*>(PC));
11315 break;
11316#endif
11317#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11318bool emitCheckDecl( const VarDecl* , SourceInfo);
11319#endif
11320#ifdef GET_LINK_IMPL
11321bool ByteCodeEmitter::emitCheckDecl( const VarDecl* A0, SourceInfo L) {
11322 return emitOp<const VarDecl*>(OP_CheckDecl, A0, L);
11323}
11324#endif
11325#ifdef GET_EVAL_IMPL
11326bool EvalEmitter::emitCheckDecl( const VarDecl* A0, SourceInfo L) {
11327 if (!isActive()) return true;
11328 CurrentSource = L;
11329 return CheckDecl(S, A0);
11330}
11331#endif
11332#ifdef GET_OPCODE_NAMES
11333OP_CheckDestruction,
11334#endif
11335#ifdef GET_INTERPFN_LIST
11336&Interp_CheckDestruction,
11337#endif
11338#ifdef GET_INTERPFN_DISPATCHERS
11339PRESERVE_NONE
11340static bool Interp_CheckDestruction(InterpState &S) {
11341 if (!CheckDestruction(S, S.PC)) return false;
11342#if USE_TAILCALLS
11343 MUSTTAIL return InterpNext(S);
11344#else
11345 return true;
11346#endif
11347}
11348#endif
11349#ifdef GET_DISASM
11350case OP_CheckDestruction:
11351 Text.Op = PrintName("CheckDestruction");
11352 break;
11353#endif
11354#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11355bool emitCheckDestruction(SourceInfo);
11356#endif
11357#ifdef GET_LINK_IMPL
11358bool ByteCodeEmitter::emitCheckDestruction(SourceInfo L) {
11359 return emitOp<>(OP_CheckDestruction, L);
11360}
11361#endif
11362#ifdef GET_EVAL_IMPL
11363bool EvalEmitter::emitCheckDestruction(SourceInfo L) {
11364 if (!isActive()) return true;
11365 CurrentSource = L;
11366 return CheckDestruction(S, CodePtr());
11367}
11368#endif
11369#ifdef GET_OPCODE_NAMES
11370OP_CheckEnumValueSint8,
11371OP_CheckEnumValueUint8,
11372OP_CheckEnumValueSint16,
11373OP_CheckEnumValueUint16,
11374OP_CheckEnumValueSint32,
11375OP_CheckEnumValueUint32,
11376OP_CheckEnumValueSint64,
11377OP_CheckEnumValueUint64,
11378OP_CheckEnumValueIntAP,
11379OP_CheckEnumValueIntAPS,
11380OP_CheckEnumValueBool,
11381#endif
11382#ifdef GET_INTERPFN_LIST
11383&Interp_CheckEnumValueSint8,
11384&Interp_CheckEnumValueUint8,
11385&Interp_CheckEnumValueSint16,
11386&Interp_CheckEnumValueUint16,
11387&Interp_CheckEnumValueSint32,
11388&Interp_CheckEnumValueUint32,
11389&Interp_CheckEnumValueSint64,
11390&Interp_CheckEnumValueUint64,
11391&Interp_CheckEnumValueIntAP,
11392&Interp_CheckEnumValueIntAPS,
11393&Interp_CheckEnumValueBool,
11394#endif
11395#ifdef GET_INTERPFN_DISPATCHERS
11396PRESERVE_NONE
11397static bool Interp_CheckEnumValueSint8(InterpState &S) {
11398 {
11399 CodePtr OpPC = S.PC;
11400 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11401 CheckEnumValue<PT_Sint8>(S, OpPC, V0);
11402 }
11403#if USE_TAILCALLS
11404 MUSTTAIL return InterpNext(S);
11405#else
11406 return true;
11407#endif
11408}
11409PRESERVE_NONE
11410static bool Interp_CheckEnumValueUint8(InterpState &S) {
11411 {
11412 CodePtr OpPC = S.PC;
11413 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11414 CheckEnumValue<PT_Uint8>(S, OpPC, V0);
11415 }
11416#if USE_TAILCALLS
11417 MUSTTAIL return InterpNext(S);
11418#else
11419 return true;
11420#endif
11421}
11422PRESERVE_NONE
11423static bool Interp_CheckEnumValueSint16(InterpState &S) {
11424 {
11425 CodePtr OpPC = S.PC;
11426 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11427 CheckEnumValue<PT_Sint16>(S, OpPC, V0);
11428 }
11429#if USE_TAILCALLS
11430 MUSTTAIL return InterpNext(S);
11431#else
11432 return true;
11433#endif
11434}
11435PRESERVE_NONE
11436static bool Interp_CheckEnumValueUint16(InterpState &S) {
11437 {
11438 CodePtr OpPC = S.PC;
11439 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11440 CheckEnumValue<PT_Uint16>(S, OpPC, V0);
11441 }
11442#if USE_TAILCALLS
11443 MUSTTAIL return InterpNext(S);
11444#else
11445 return true;
11446#endif
11447}
11448PRESERVE_NONE
11449static bool Interp_CheckEnumValueSint32(InterpState &S) {
11450 {
11451 CodePtr OpPC = S.PC;
11452 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11453 CheckEnumValue<PT_Sint32>(S, OpPC, V0);
11454 }
11455#if USE_TAILCALLS
11456 MUSTTAIL return InterpNext(S);
11457#else
11458 return true;
11459#endif
11460}
11461PRESERVE_NONE
11462static bool Interp_CheckEnumValueUint32(InterpState &S) {
11463 {
11464 CodePtr OpPC = S.PC;
11465 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11466 CheckEnumValue<PT_Uint32>(S, OpPC, V0);
11467 }
11468#if USE_TAILCALLS
11469 MUSTTAIL return InterpNext(S);
11470#else
11471 return true;
11472#endif
11473}
11474PRESERVE_NONE
11475static bool Interp_CheckEnumValueSint64(InterpState &S) {
11476 {
11477 CodePtr OpPC = S.PC;
11478 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11479 CheckEnumValue<PT_Sint64>(S, OpPC, V0);
11480 }
11481#if USE_TAILCALLS
11482 MUSTTAIL return InterpNext(S);
11483#else
11484 return true;
11485#endif
11486}
11487PRESERVE_NONE
11488static bool Interp_CheckEnumValueUint64(InterpState &S) {
11489 {
11490 CodePtr OpPC = S.PC;
11491 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11492 CheckEnumValue<PT_Uint64>(S, OpPC, V0);
11493 }
11494#if USE_TAILCALLS
11495 MUSTTAIL return InterpNext(S);
11496#else
11497 return true;
11498#endif
11499}
11500PRESERVE_NONE
11501static bool Interp_CheckEnumValueIntAP(InterpState &S) {
11502 {
11503 CodePtr OpPC = S.PC;
11504 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11505 CheckEnumValue<PT_IntAP>(S, OpPC, V0);
11506 }
11507#if USE_TAILCALLS
11508 MUSTTAIL return InterpNext(S);
11509#else
11510 return true;
11511#endif
11512}
11513PRESERVE_NONE
11514static bool Interp_CheckEnumValueIntAPS(InterpState &S) {
11515 {
11516 CodePtr OpPC = S.PC;
11517 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11518 CheckEnumValue<PT_IntAPS>(S, OpPC, V0);
11519 }
11520#if USE_TAILCALLS
11521 MUSTTAIL return InterpNext(S);
11522#else
11523 return true;
11524#endif
11525}
11526PRESERVE_NONE
11527static bool Interp_CheckEnumValueBool(InterpState &S) {
11528 {
11529 CodePtr OpPC = S.PC;
11530 const auto V0 = ReadArg<const EnumDecl *>(S, S.PC);
11531 CheckEnumValue<PT_Bool>(S, OpPC, V0);
11532 }
11533#if USE_TAILCALLS
11534 MUSTTAIL return InterpNext(S);
11535#else
11536 return true;
11537#endif
11538}
11539#endif
11540#ifdef GET_DISASM
11541case OP_CheckEnumValueSint8:
11542 Text.Op = PrintName("CheckEnumValueSint8");
11543 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11544 break;
11545case OP_CheckEnumValueUint8:
11546 Text.Op = PrintName("CheckEnumValueUint8");
11547 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11548 break;
11549case OP_CheckEnumValueSint16:
11550 Text.Op = PrintName("CheckEnumValueSint16");
11551 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11552 break;
11553case OP_CheckEnumValueUint16:
11554 Text.Op = PrintName("CheckEnumValueUint16");
11555 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11556 break;
11557case OP_CheckEnumValueSint32:
11558 Text.Op = PrintName("CheckEnumValueSint32");
11559 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11560 break;
11561case OP_CheckEnumValueUint32:
11562 Text.Op = PrintName("CheckEnumValueUint32");
11563 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11564 break;
11565case OP_CheckEnumValueSint64:
11566 Text.Op = PrintName("CheckEnumValueSint64");
11567 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11568 break;
11569case OP_CheckEnumValueUint64:
11570 Text.Op = PrintName("CheckEnumValueUint64");
11571 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11572 break;
11573case OP_CheckEnumValueIntAP:
11574 Text.Op = PrintName("CheckEnumValueIntAP");
11575 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11576 break;
11577case OP_CheckEnumValueIntAPS:
11578 Text.Op = PrintName("CheckEnumValueIntAPS");
11579 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11580 break;
11581case OP_CheckEnumValueBool:
11582 Text.Op = PrintName("CheckEnumValueBool");
11583 Text.Args.push_back(printArg<const EnumDecl *>(PC));
11584 break;
11585#endif
11586#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11587bool emitCheckEnumValueSint8( const EnumDecl * , SourceInfo);
11588bool emitCheckEnumValueUint8( const EnumDecl * , SourceInfo);
11589bool emitCheckEnumValueSint16( const EnumDecl * , SourceInfo);
11590bool emitCheckEnumValueUint16( const EnumDecl * , SourceInfo);
11591bool emitCheckEnumValueSint32( const EnumDecl * , SourceInfo);
11592bool emitCheckEnumValueUint32( const EnumDecl * , SourceInfo);
11593bool emitCheckEnumValueSint64( const EnumDecl * , SourceInfo);
11594bool emitCheckEnumValueUint64( const EnumDecl * , SourceInfo);
11595bool emitCheckEnumValueIntAP( const EnumDecl * , SourceInfo);
11596bool emitCheckEnumValueIntAPS( const EnumDecl * , SourceInfo);
11597bool emitCheckEnumValueBool( const EnumDecl * , SourceInfo);
11598#endif
11599#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11600[[nodiscard]] bool emitCheckEnumValue(PrimType, const EnumDecl *, SourceInfo I);
11601#endif
11602#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
11603bool
11604#if defined(GET_EVAL_IMPL)
11605EvalEmitter
11606#else
11607ByteCodeEmitter
11608#endif
11609::emitCheckEnumValue(PrimType T0, const EnumDecl * A0, SourceInfo I) {
11610 switch (T0) {
11611 case PT_Sint8:
11612 return emitCheckEnumValueSint8(A0, I);
11613 case PT_Uint8:
11614 return emitCheckEnumValueUint8(A0, I);
11615 case PT_Sint16:
11616 return emitCheckEnumValueSint16(A0, I);
11617 case PT_Uint16:
11618 return emitCheckEnumValueUint16(A0, I);
11619 case PT_Sint32:
11620 return emitCheckEnumValueSint32(A0, I);
11621 case PT_Uint32:
11622 return emitCheckEnumValueUint32(A0, I);
11623 case PT_Sint64:
11624 return emitCheckEnumValueSint64(A0, I);
11625 case PT_Uint64:
11626 return emitCheckEnumValueUint64(A0, I);
11627 case PT_IntAP:
11628 return emitCheckEnumValueIntAP(A0, I);
11629 case PT_IntAPS:
11630 return emitCheckEnumValueIntAPS(A0, I);
11631 case PT_Bool:
11632 return emitCheckEnumValueBool(A0, I);
11633 default: llvm_unreachable("invalid type: emitCheckEnumValue");
11634 }
11635 llvm_unreachable("invalid enum value");
11636}
11637#endif
11638#ifdef GET_LINK_IMPL
11639bool ByteCodeEmitter::emitCheckEnumValueSint8( const EnumDecl * A0, SourceInfo L) {
11640 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint8, A0, L);
11641}
11642bool ByteCodeEmitter::emitCheckEnumValueUint8( const EnumDecl * A0, SourceInfo L) {
11643 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint8, A0, L);
11644}
11645bool ByteCodeEmitter::emitCheckEnumValueSint16( const EnumDecl * A0, SourceInfo L) {
11646 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint16, A0, L);
11647}
11648bool ByteCodeEmitter::emitCheckEnumValueUint16( const EnumDecl * A0, SourceInfo L) {
11649 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint16, A0, L);
11650}
11651bool ByteCodeEmitter::emitCheckEnumValueSint32( const EnumDecl * A0, SourceInfo L) {
11652 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint32, A0, L);
11653}
11654bool ByteCodeEmitter::emitCheckEnumValueUint32( const EnumDecl * A0, SourceInfo L) {
11655 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint32, A0, L);
11656}
11657bool ByteCodeEmitter::emitCheckEnumValueSint64( const EnumDecl * A0, SourceInfo L) {
11658 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint64, A0, L);
11659}
11660bool ByteCodeEmitter::emitCheckEnumValueUint64( const EnumDecl * A0, SourceInfo L) {
11661 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint64, A0, L);
11662}
11663bool ByteCodeEmitter::emitCheckEnumValueIntAP( const EnumDecl * A0, SourceInfo L) {
11664 return emitOp<const EnumDecl *>(OP_CheckEnumValueIntAP, A0, L);
11665}
11666bool ByteCodeEmitter::emitCheckEnumValueIntAPS( const EnumDecl * A0, SourceInfo L) {
11667 return emitOp<const EnumDecl *>(OP_CheckEnumValueIntAPS, A0, L);
11668}
11669bool ByteCodeEmitter::emitCheckEnumValueBool( const EnumDecl * A0, SourceInfo L) {
11670 return emitOp<const EnumDecl *>(OP_CheckEnumValueBool, A0, L);
11671}
11672#endif
11673#ifdef GET_EVAL_IMPL
11674bool EvalEmitter::emitCheckEnumValueSint8( const EnumDecl * A0, SourceInfo L) {
11675 if (!isActive()) return true;
11676 CurrentSource = L;
11677 return CheckEnumValue<PT_Sint8>(S, CodePtr(), A0);
11678}
11679bool EvalEmitter::emitCheckEnumValueUint8( const EnumDecl * A0, SourceInfo L) {
11680 if (!isActive()) return true;
11681 CurrentSource = L;
11682 return CheckEnumValue<PT_Uint8>(S, CodePtr(), A0);
11683}
11684bool EvalEmitter::emitCheckEnumValueSint16( const EnumDecl * A0, SourceInfo L) {
11685 if (!isActive()) return true;
11686 CurrentSource = L;
11687 return CheckEnumValue<PT_Sint16>(S, CodePtr(), A0);
11688}
11689bool EvalEmitter::emitCheckEnumValueUint16( const EnumDecl * A0, SourceInfo L) {
11690 if (!isActive()) return true;
11691 CurrentSource = L;
11692 return CheckEnumValue<PT_Uint16>(S, CodePtr(), A0);
11693}
11694bool EvalEmitter::emitCheckEnumValueSint32( const EnumDecl * A0, SourceInfo L) {
11695 if (!isActive()) return true;
11696 CurrentSource = L;
11697 return CheckEnumValue<PT_Sint32>(S, CodePtr(), A0);
11698}
11699bool EvalEmitter::emitCheckEnumValueUint32( const EnumDecl * A0, SourceInfo L) {
11700 if (!isActive()) return true;
11701 CurrentSource = L;
11702 return CheckEnumValue<PT_Uint32>(S, CodePtr(), A0);
11703}
11704bool EvalEmitter::emitCheckEnumValueSint64( const EnumDecl * A0, SourceInfo L) {
11705 if (!isActive()) return true;
11706 CurrentSource = L;
11707 return CheckEnumValue<PT_Sint64>(S, CodePtr(), A0);
11708}
11709bool EvalEmitter::emitCheckEnumValueUint64( const EnumDecl * A0, SourceInfo L) {
11710 if (!isActive()) return true;
11711 CurrentSource = L;
11712 return CheckEnumValue<PT_Uint64>(S, CodePtr(), A0);
11713}
11714bool EvalEmitter::emitCheckEnumValueIntAP( const EnumDecl * A0, SourceInfo L) {
11715 if (!isActive()) return true;
11716 CurrentSource = L;
11717 return CheckEnumValue<PT_IntAP>(S, CodePtr(), A0);
11718}
11719bool EvalEmitter::emitCheckEnumValueIntAPS( const EnumDecl * A0, SourceInfo L) {
11720 if (!isActive()) return true;
11721 CurrentSource = L;
11722 return CheckEnumValue<PT_IntAPS>(S, CodePtr(), A0);
11723}
11724bool EvalEmitter::emitCheckEnumValueBool( const EnumDecl * A0, SourceInfo L) {
11725 if (!isActive()) return true;
11726 CurrentSource = L;
11727 return CheckEnumValue<PT_Bool>(S, CodePtr(), A0);
11728}
11729#endif
11730#ifdef GET_OPCODE_NAMES
11731OP_CheckFunctionDecl,
11732#endif
11733#ifdef GET_INTERPFN_LIST
11734&Interp_CheckFunctionDecl,
11735#endif
11736#ifdef GET_INTERPFN_DISPATCHERS
11737PRESERVE_NONE
11738static bool Interp_CheckFunctionDecl(InterpState &S) {
11739 {
11740 CodePtr OpPC = S.PC;
11741 const auto V0 = ReadArg<const FunctionDecl *>(S, S.PC);
11742 if (!CheckFunctionDecl(S, OpPC, V0)) return false;
11743 }
11744#if USE_TAILCALLS
11745 MUSTTAIL return InterpNext(S);
11746#else
11747 return true;
11748#endif
11749}
11750#endif
11751#ifdef GET_DISASM
11752case OP_CheckFunctionDecl:
11753 Text.Op = PrintName("CheckFunctionDecl");
11754 Text.Args.push_back(printArg<const FunctionDecl *>(PC));
11755 break;
11756#endif
11757#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11758bool emitCheckFunctionDecl( const FunctionDecl * , SourceInfo);
11759#endif
11760#ifdef GET_LINK_IMPL
11761bool ByteCodeEmitter::emitCheckFunctionDecl( const FunctionDecl * A0, SourceInfo L) {
11762 return emitOp<const FunctionDecl *>(OP_CheckFunctionDecl, A0, L);
11763}
11764#endif
11765#ifdef GET_EVAL_IMPL
11766bool EvalEmitter::emitCheckFunctionDecl( const FunctionDecl * A0, SourceInfo L) {
11767 if (!isActive()) return true;
11768 CurrentSource = L;
11769 return CheckFunctionDecl(S, CodePtr(), A0);
11770}
11771#endif
11772#ifdef GET_OPCODE_NAMES
11773OP_CheckLiteralType,
11774#endif
11775#ifdef GET_INTERPFN_LIST
11776&Interp_CheckLiteralType,
11777#endif
11778#ifdef GET_INTERPFN_DISPATCHERS
11779PRESERVE_NONE
11780static bool Interp_CheckLiteralType(InterpState &S) {
11781 {
11782 CodePtr OpPC = S.PC;
11783 const auto V0 = ReadArg<const Type *>(S, S.PC);
11784 if (!CheckLiteralType(S, OpPC, V0)) return false;
11785 }
11786#if USE_TAILCALLS
11787 MUSTTAIL return InterpNext(S);
11788#else
11789 return true;
11790#endif
11791}
11792#endif
11793#ifdef GET_DISASM
11794case OP_CheckLiteralType:
11795 Text.Op = PrintName("CheckLiteralType");
11796 Text.Args.push_back(printArg<const Type *>(PC));
11797 break;
11798#endif
11799#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11800bool emitCheckLiteralType( const Type * , SourceInfo);
11801#endif
11802#ifdef GET_LINK_IMPL
11803bool ByteCodeEmitter::emitCheckLiteralType( const Type * A0, SourceInfo L) {
11804 return emitOp<const Type *>(OP_CheckLiteralType, A0, L);
11805}
11806#endif
11807#ifdef GET_EVAL_IMPL
11808bool EvalEmitter::emitCheckLiteralType( const Type * A0, SourceInfo L) {
11809 if (!isActive()) return true;
11810 CurrentSource = L;
11811 return CheckLiteralType(S, CodePtr(), A0);
11812}
11813#endif
11814#ifdef GET_OPCODE_NAMES
11815OP_CheckNewTypeMismatch,
11816#endif
11817#ifdef GET_INTERPFN_LIST
11818&Interp_CheckNewTypeMismatch,
11819#endif
11820#ifdef GET_INTERPFN_DISPATCHERS
11821PRESERVE_NONE
11822static bool Interp_CheckNewTypeMismatch(InterpState &S) {
11823 {
11824 CodePtr OpPC = S.PC;
11825 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11826 if (!CheckNewTypeMismatch(S, OpPC, V0)) return false;
11827 }
11828#if USE_TAILCALLS
11829 MUSTTAIL return InterpNext(S);
11830#else
11831 return true;
11832#endif
11833}
11834#endif
11835#ifdef GET_DISASM
11836case OP_CheckNewTypeMismatch:
11837 Text.Op = PrintName("CheckNewTypeMismatch");
11838 Text.Args.push_back(printArg<const Expr *>(PC));
11839 break;
11840#endif
11841#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11842bool emitCheckNewTypeMismatch( const Expr * , SourceInfo);
11843#endif
11844#ifdef GET_LINK_IMPL
11845bool ByteCodeEmitter::emitCheckNewTypeMismatch( const Expr * A0, SourceInfo L) {
11846 return emitOp<const Expr *>(OP_CheckNewTypeMismatch, A0, L);
11847}
11848#endif
11849#ifdef GET_EVAL_IMPL
11850bool EvalEmitter::emitCheckNewTypeMismatch( const Expr * A0, SourceInfo L) {
11851 if (!isActive()) return true;
11852 CurrentSource = L;
11853 return CheckNewTypeMismatch(S, CodePtr(), A0);
11854}
11855#endif
11856#ifdef GET_OPCODE_NAMES
11857OP_CheckNewTypeMismatchArraySint8,
11858OP_CheckNewTypeMismatchArrayUint8,
11859OP_CheckNewTypeMismatchArraySint16,
11860OP_CheckNewTypeMismatchArrayUint16,
11861OP_CheckNewTypeMismatchArraySint32,
11862OP_CheckNewTypeMismatchArrayUint32,
11863OP_CheckNewTypeMismatchArraySint64,
11864OP_CheckNewTypeMismatchArrayUint64,
11865OP_CheckNewTypeMismatchArrayIntAP,
11866OP_CheckNewTypeMismatchArrayIntAPS,
11867#endif
11868#ifdef GET_INTERPFN_LIST
11869&Interp_CheckNewTypeMismatchArraySint8,
11870&Interp_CheckNewTypeMismatchArrayUint8,
11871&Interp_CheckNewTypeMismatchArraySint16,
11872&Interp_CheckNewTypeMismatchArrayUint16,
11873&Interp_CheckNewTypeMismatchArraySint32,
11874&Interp_CheckNewTypeMismatchArrayUint32,
11875&Interp_CheckNewTypeMismatchArraySint64,
11876&Interp_CheckNewTypeMismatchArrayUint64,
11877&Interp_CheckNewTypeMismatchArrayIntAP,
11878&Interp_CheckNewTypeMismatchArrayIntAPS,
11879#endif
11880#ifdef GET_INTERPFN_DISPATCHERS
11881PRESERVE_NONE
11882static bool Interp_CheckNewTypeMismatchArraySint8(InterpState &S) {
11883 {
11884 CodePtr OpPC = S.PC;
11885 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11886 if (!CheckNewTypeMismatchArray<PT_Sint8>(S, OpPC, V0)) return false;
11887 }
11888#if USE_TAILCALLS
11889 MUSTTAIL return InterpNext(S);
11890#else
11891 return true;
11892#endif
11893}
11894PRESERVE_NONE
11895static bool Interp_CheckNewTypeMismatchArrayUint8(InterpState &S) {
11896 {
11897 CodePtr OpPC = S.PC;
11898 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11899 if (!CheckNewTypeMismatchArray<PT_Uint8>(S, OpPC, V0)) return false;
11900 }
11901#if USE_TAILCALLS
11902 MUSTTAIL return InterpNext(S);
11903#else
11904 return true;
11905#endif
11906}
11907PRESERVE_NONE
11908static bool Interp_CheckNewTypeMismatchArraySint16(InterpState &S) {
11909 {
11910 CodePtr OpPC = S.PC;
11911 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11912 if (!CheckNewTypeMismatchArray<PT_Sint16>(S, OpPC, V0)) return false;
11913 }
11914#if USE_TAILCALLS
11915 MUSTTAIL return InterpNext(S);
11916#else
11917 return true;
11918#endif
11919}
11920PRESERVE_NONE
11921static bool Interp_CheckNewTypeMismatchArrayUint16(InterpState &S) {
11922 {
11923 CodePtr OpPC = S.PC;
11924 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11925 if (!CheckNewTypeMismatchArray<PT_Uint16>(S, OpPC, V0)) return false;
11926 }
11927#if USE_TAILCALLS
11928 MUSTTAIL return InterpNext(S);
11929#else
11930 return true;
11931#endif
11932}
11933PRESERVE_NONE
11934static bool Interp_CheckNewTypeMismatchArraySint32(InterpState &S) {
11935 {
11936 CodePtr OpPC = S.PC;
11937 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11938 if (!CheckNewTypeMismatchArray<PT_Sint32>(S, OpPC, V0)) return false;
11939 }
11940#if USE_TAILCALLS
11941 MUSTTAIL return InterpNext(S);
11942#else
11943 return true;
11944#endif
11945}
11946PRESERVE_NONE
11947static bool Interp_CheckNewTypeMismatchArrayUint32(InterpState &S) {
11948 {
11949 CodePtr OpPC = S.PC;
11950 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11951 if (!CheckNewTypeMismatchArray<PT_Uint32>(S, OpPC, V0)) return false;
11952 }
11953#if USE_TAILCALLS
11954 MUSTTAIL return InterpNext(S);
11955#else
11956 return true;
11957#endif
11958}
11959PRESERVE_NONE
11960static bool Interp_CheckNewTypeMismatchArraySint64(InterpState &S) {
11961 {
11962 CodePtr OpPC = S.PC;
11963 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11964 if (!CheckNewTypeMismatchArray<PT_Sint64>(S, OpPC, V0)) return false;
11965 }
11966#if USE_TAILCALLS
11967 MUSTTAIL return InterpNext(S);
11968#else
11969 return true;
11970#endif
11971}
11972PRESERVE_NONE
11973static bool Interp_CheckNewTypeMismatchArrayUint64(InterpState &S) {
11974 {
11975 CodePtr OpPC = S.PC;
11976 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11977 if (!CheckNewTypeMismatchArray<PT_Uint64>(S, OpPC, V0)) return false;
11978 }
11979#if USE_TAILCALLS
11980 MUSTTAIL return InterpNext(S);
11981#else
11982 return true;
11983#endif
11984}
11985PRESERVE_NONE
11986static bool Interp_CheckNewTypeMismatchArrayIntAP(InterpState &S) {
11987 {
11988 CodePtr OpPC = S.PC;
11989 const auto V0 = ReadArg<const Expr *>(S, S.PC);
11990 if (!CheckNewTypeMismatchArray<PT_IntAP>(S, OpPC, V0)) return false;
11991 }
11992#if USE_TAILCALLS
11993 MUSTTAIL return InterpNext(S);
11994#else
11995 return true;
11996#endif
11997}
11998PRESERVE_NONE
11999static bool Interp_CheckNewTypeMismatchArrayIntAPS(InterpState &S) {
12000 {
12001 CodePtr OpPC = S.PC;
12002 const auto V0 = ReadArg<const Expr *>(S, S.PC);
12003 if (!CheckNewTypeMismatchArray<PT_IntAPS>(S, OpPC, V0)) return false;
12004 }
12005#if USE_TAILCALLS
12006 MUSTTAIL return InterpNext(S);
12007#else
12008 return true;
12009#endif
12010}
12011#endif
12012#ifdef GET_DISASM
12013case OP_CheckNewTypeMismatchArraySint8:
12014 Text.Op = PrintName("CheckNewTypeMismatchArraySint8");
12015 Text.Args.push_back(printArg<const Expr *>(PC));
12016 break;
12017case OP_CheckNewTypeMismatchArrayUint8:
12018 Text.Op = PrintName("CheckNewTypeMismatchArrayUint8");
12019 Text.Args.push_back(printArg<const Expr *>(PC));
12020 break;
12021case OP_CheckNewTypeMismatchArraySint16:
12022 Text.Op = PrintName("CheckNewTypeMismatchArraySint16");
12023 Text.Args.push_back(printArg<const Expr *>(PC));
12024 break;
12025case OP_CheckNewTypeMismatchArrayUint16:
12026 Text.Op = PrintName("CheckNewTypeMismatchArrayUint16");
12027 Text.Args.push_back(printArg<const Expr *>(PC));
12028 break;
12029case OP_CheckNewTypeMismatchArraySint32:
12030 Text.Op = PrintName("CheckNewTypeMismatchArraySint32");
12031 Text.Args.push_back(printArg<const Expr *>(PC));
12032 break;
12033case OP_CheckNewTypeMismatchArrayUint32:
12034 Text.Op = PrintName("CheckNewTypeMismatchArrayUint32");
12035 Text.Args.push_back(printArg<const Expr *>(PC));
12036 break;
12037case OP_CheckNewTypeMismatchArraySint64:
12038 Text.Op = PrintName("CheckNewTypeMismatchArraySint64");
12039 Text.Args.push_back(printArg<const Expr *>(PC));
12040 break;
12041case OP_CheckNewTypeMismatchArrayUint64:
12042 Text.Op = PrintName("CheckNewTypeMismatchArrayUint64");
12043 Text.Args.push_back(printArg<const Expr *>(PC));
12044 break;
12045case OP_CheckNewTypeMismatchArrayIntAP:
12046 Text.Op = PrintName("CheckNewTypeMismatchArrayIntAP");
12047 Text.Args.push_back(printArg<const Expr *>(PC));
12048 break;
12049case OP_CheckNewTypeMismatchArrayIntAPS:
12050 Text.Op = PrintName("CheckNewTypeMismatchArrayIntAPS");
12051 Text.Args.push_back(printArg<const Expr *>(PC));
12052 break;
12053#endif
12054#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12055bool emitCheckNewTypeMismatchArraySint8( const Expr * , SourceInfo);
12056bool emitCheckNewTypeMismatchArrayUint8( const Expr * , SourceInfo);
12057bool emitCheckNewTypeMismatchArraySint16( const Expr * , SourceInfo);
12058bool emitCheckNewTypeMismatchArrayUint16( const Expr * , SourceInfo);
12059bool emitCheckNewTypeMismatchArraySint32( const Expr * , SourceInfo);
12060bool emitCheckNewTypeMismatchArrayUint32( const Expr * , SourceInfo);
12061bool emitCheckNewTypeMismatchArraySint64( const Expr * , SourceInfo);
12062bool emitCheckNewTypeMismatchArrayUint64( const Expr * , SourceInfo);
12063bool emitCheckNewTypeMismatchArrayIntAP( const Expr * , SourceInfo);
12064bool emitCheckNewTypeMismatchArrayIntAPS( const Expr * , SourceInfo);
12065#endif
12066#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12067[[nodiscard]] bool emitCheckNewTypeMismatchArray(PrimType, const Expr *, SourceInfo I);
12068#endif
12069#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
12070bool
12071#if defined(GET_EVAL_IMPL)
12072EvalEmitter
12073#else
12074ByteCodeEmitter
12075#endif
12076::emitCheckNewTypeMismatchArray(PrimType T0, const Expr * A0, SourceInfo I) {
12077 switch (T0) {
12078 case PT_Sint8:
12079 return emitCheckNewTypeMismatchArraySint8(A0, I);
12080 case PT_Uint8:
12081 return emitCheckNewTypeMismatchArrayUint8(A0, I);
12082 case PT_Sint16:
12083 return emitCheckNewTypeMismatchArraySint16(A0, I);
12084 case PT_Uint16:
12085 return emitCheckNewTypeMismatchArrayUint16(A0, I);
12086 case PT_Sint32:
12087 return emitCheckNewTypeMismatchArraySint32(A0, I);
12088 case PT_Uint32:
12089 return emitCheckNewTypeMismatchArrayUint32(A0, I);
12090 case PT_Sint64:
12091 return emitCheckNewTypeMismatchArraySint64(A0, I);
12092 case PT_Uint64:
12093 return emitCheckNewTypeMismatchArrayUint64(A0, I);
12094 case PT_IntAP:
12095 return emitCheckNewTypeMismatchArrayIntAP(A0, I);
12096 case PT_IntAPS:
12097 return emitCheckNewTypeMismatchArrayIntAPS(A0, I);
12098 default: llvm_unreachable("invalid type: emitCheckNewTypeMismatchArray");
12099 }
12100 llvm_unreachable("invalid enum value");
12101}
12102#endif
12103#ifdef GET_LINK_IMPL
12104bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint8( const Expr * A0, SourceInfo L) {
12105 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint8, A0, L);
12106}
12107bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint8( const Expr * A0, SourceInfo L) {
12108 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint8, A0, L);
12109}
12110bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint16( const Expr * A0, SourceInfo L) {
12111 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint16, A0, L);
12112}
12113bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint16( const Expr * A0, SourceInfo L) {
12114 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint16, A0, L);
12115}
12116bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint32( const Expr * A0, SourceInfo L) {
12117 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint32, A0, L);
12118}
12119bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint32( const Expr * A0, SourceInfo L) {
12120 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint32, A0, L);
12121}
12122bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint64( const Expr * A0, SourceInfo L) {
12123 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint64, A0, L);
12124}
12125bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint64( const Expr * A0, SourceInfo L) {
12126 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint64, A0, L);
12127}
12128bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayIntAP( const Expr * A0, SourceInfo L) {
12129 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayIntAP, A0, L);
12130}
12131bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayIntAPS( const Expr * A0, SourceInfo L) {
12132 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayIntAPS, A0, L);
12133}
12134#endif
12135#ifdef GET_EVAL_IMPL
12136bool EvalEmitter::emitCheckNewTypeMismatchArraySint8( const Expr * A0, SourceInfo L) {
12137 if (!isActive()) return true;
12138 CurrentSource = L;
12139 return CheckNewTypeMismatchArray<PT_Sint8>(S, CodePtr(), A0);
12140}
12141bool EvalEmitter::emitCheckNewTypeMismatchArrayUint8( const Expr * A0, SourceInfo L) {
12142 if (!isActive()) return true;
12143 CurrentSource = L;
12144 return CheckNewTypeMismatchArray<PT_Uint8>(S, CodePtr(), A0);
12145}
12146bool EvalEmitter::emitCheckNewTypeMismatchArraySint16( const Expr * A0, SourceInfo L) {
12147 if (!isActive()) return true;
12148 CurrentSource = L;
12149 return CheckNewTypeMismatchArray<PT_Sint16>(S, CodePtr(), A0);
12150}
12151bool EvalEmitter::emitCheckNewTypeMismatchArrayUint16( const Expr * A0, SourceInfo L) {
12152 if (!isActive()) return true;
12153 CurrentSource = L;
12154 return CheckNewTypeMismatchArray<PT_Uint16>(S, CodePtr(), A0);
12155}
12156bool EvalEmitter::emitCheckNewTypeMismatchArraySint32( const Expr * A0, SourceInfo L) {
12157 if (!isActive()) return true;
12158 CurrentSource = L;
12159 return CheckNewTypeMismatchArray<PT_Sint32>(S, CodePtr(), A0);
12160}
12161bool EvalEmitter::emitCheckNewTypeMismatchArrayUint32( const Expr * A0, SourceInfo L) {
12162 if (!isActive()) return true;
12163 CurrentSource = L;
12164 return CheckNewTypeMismatchArray<PT_Uint32>(S, CodePtr(), A0);
12165}
12166bool EvalEmitter::emitCheckNewTypeMismatchArraySint64( const Expr * A0, SourceInfo L) {
12167 if (!isActive()) return true;
12168 CurrentSource = L;
12169 return CheckNewTypeMismatchArray<PT_Sint64>(S, CodePtr(), A0);
12170}
12171bool EvalEmitter::emitCheckNewTypeMismatchArrayUint64( const Expr * A0, SourceInfo L) {
12172 if (!isActive()) return true;
12173 CurrentSource = L;
12174 return CheckNewTypeMismatchArray<PT_Uint64>(S, CodePtr(), A0);
12175}
12176bool EvalEmitter::emitCheckNewTypeMismatchArrayIntAP( const Expr * A0, SourceInfo L) {
12177 if (!isActive()) return true;
12178 CurrentSource = L;
12179 return CheckNewTypeMismatchArray<PT_IntAP>(S, CodePtr(), A0);
12180}
12181bool EvalEmitter::emitCheckNewTypeMismatchArrayIntAPS( const Expr * A0, SourceInfo L) {
12182 if (!isActive()) return true;
12183 CurrentSource = L;
12184 return CheckNewTypeMismatchArray<PT_IntAPS>(S, CodePtr(), A0);
12185}
12186#endif
12187#ifdef GET_OPCODE_NAMES
12188OP_CheckNonNullArgPtr,
12189OP_CheckNonNullArgMemberPtr,
12190#endif
12191#ifdef GET_INTERPFN_LIST
12192&Interp_CheckNonNullArgPtr,
12193&Interp_CheckNonNullArgMemberPtr,
12194#endif
12195#ifdef GET_INTERPFN_DISPATCHERS
12196PRESERVE_NONE
12197static bool Interp_CheckNonNullArgPtr(InterpState &S) {
12198 if (!CheckNonNullArg<PT_Ptr>(S, S.PC)) return false;
12199#if USE_TAILCALLS
12200 MUSTTAIL return InterpNext(S);
12201#else
12202 return true;
12203#endif
12204}
12205PRESERVE_NONE
12206static bool Interp_CheckNonNullArgMemberPtr(InterpState &S) {
12207 if (!CheckNonNullArg<PT_MemberPtr>(S, S.PC)) return false;
12208#if USE_TAILCALLS
12209 MUSTTAIL return InterpNext(S);
12210#else
12211 return true;
12212#endif
12213}
12214#endif
12215#ifdef GET_DISASM
12216case OP_CheckNonNullArgPtr:
12217 Text.Op = PrintName("CheckNonNullArgPtr");
12218 break;
12219case OP_CheckNonNullArgMemberPtr:
12220 Text.Op = PrintName("CheckNonNullArgMemberPtr");
12221 break;
12222#endif
12223#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12224bool emitCheckNonNullArgPtr(SourceInfo);
12225bool emitCheckNonNullArgMemberPtr(SourceInfo);
12226#endif
12227#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12228[[nodiscard]] bool emitCheckNonNullArg(PrimType, SourceInfo I);
12229#endif
12230#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
12231bool
12232#if defined(GET_EVAL_IMPL)
12233EvalEmitter
12234#else
12235ByteCodeEmitter
12236#endif
12237::emitCheckNonNullArg(PrimType T0, SourceInfo I) {
12238 switch (T0) {
12239 case PT_Ptr:
12240 return emitCheckNonNullArgPtr(I);
12241 case PT_MemberPtr:
12242 return emitCheckNonNullArgMemberPtr(I);
12243 default: llvm_unreachable("invalid type: emitCheckNonNullArg");
12244 }
12245 llvm_unreachable("invalid enum value");
12246}
12247#endif
12248#ifdef GET_LINK_IMPL
12249bool ByteCodeEmitter::emitCheckNonNullArgPtr(SourceInfo L) {
12250 return emitOp<>(OP_CheckNonNullArgPtr, L);
12251}
12252bool ByteCodeEmitter::emitCheckNonNullArgMemberPtr(SourceInfo L) {
12253 return emitOp<>(OP_CheckNonNullArgMemberPtr, L);
12254}
12255#endif
12256#ifdef GET_EVAL_IMPL
12257bool EvalEmitter::emitCheckNonNullArgPtr(SourceInfo L) {
12258 if (!isActive()) return true;
12259 CurrentSource = L;
12260 return CheckNonNullArg<PT_Ptr>(S, CodePtr());
12261}
12262bool EvalEmitter::emitCheckNonNullArgMemberPtr(SourceInfo L) {
12263 if (!isActive()) return true;
12264 CurrentSource = L;
12265 return CheckNonNullArg<PT_MemberPtr>(S, CodePtr());
12266}
12267#endif
12268#ifdef GET_OPCODE_NAMES
12269OP_CheckNull,
12270#endif
12271#ifdef GET_INTERPFN_LIST
12272&Interp_CheckNull,
12273#endif
12274#ifdef GET_INTERPFN_DISPATCHERS
12275PRESERVE_NONE
12276static bool Interp_CheckNull(InterpState &S) {
12277 if (!CheckNull(S, S.PC)) return false;
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_CheckNull:
12287 Text.Op = PrintName("CheckNull");
12288 break;
12289#endif
12290#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12291bool emitCheckNull(SourceInfo);
12292#endif
12293#ifdef GET_LINK_IMPL
12294bool ByteCodeEmitter::emitCheckNull(SourceInfo L) {
12295 return emitOp<>(OP_CheckNull, L);
12296}
12297#endif
12298#ifdef GET_EVAL_IMPL
12299bool EvalEmitter::emitCheckNull(SourceInfo L) {
12300 if (!isActive()) return true;
12301 CurrentSource = L;
12302 return CheckNull(S, CodePtr());
12303}
12304#endif
12305#ifdef GET_OPCODE_NAMES
12306OP_CheckPseudoDtor,
12307#endif
12308#ifdef GET_INTERPFN_LIST
12309&Interp_CheckPseudoDtor,
12310#endif
12311#ifdef GET_INTERPFN_DISPATCHERS
12312PRESERVE_NONE
12313static bool Interp_CheckPseudoDtor(InterpState &S) {
12314 CheckPseudoDtor(S, S.PC);
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_CheckPseudoDtor:
12324 Text.Op = PrintName("CheckPseudoDtor");
12325 break;
12326#endif
12327#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12328bool emitCheckPseudoDtor(SourceInfo);
12329#endif
12330#ifdef GET_LINK_IMPL
12331bool ByteCodeEmitter::emitCheckPseudoDtor(SourceInfo L) {
12332 return emitOp<>(OP_CheckPseudoDtor, L);
12333}
12334#endif
12335#ifdef GET_EVAL_IMPL
12336bool EvalEmitter::emitCheckPseudoDtor(SourceInfo L) {
12337 if (!isActive()) return true;
12338 CurrentSource = L;
12339 return CheckPseudoDtor(S, CodePtr());
12340}
12341#endif
12342#ifdef GET_OPCODE_NAMES
12343OP_CheckRefInit,
12344#endif
12345#ifdef GET_INTERPFN_LIST
12346&Interp_CheckRefInit,
12347#endif
12348#ifdef GET_INTERPFN_DISPATCHERS
12349PRESERVE_NONE
12350static bool Interp_CheckRefInit(InterpState &S) {
12351 if (!CheckRefInit(S, S.PC)) return false;
12352#if USE_TAILCALLS
12353 MUSTTAIL return InterpNext(S);
12354#else
12355 return true;
12356#endif
12357}
12358#endif
12359#ifdef GET_DISASM
12360case OP_CheckRefInit:
12361 Text.Op = PrintName("CheckRefInit");
12362 break;
12363#endif
12364#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12365bool emitCheckRefInit(SourceInfo);
12366#endif
12367#ifdef GET_LINK_IMPL
12368bool ByteCodeEmitter::emitCheckRefInit(SourceInfo L) {
12369 return emitOp<>(OP_CheckRefInit, L);
12370}
12371#endif
12372#ifdef GET_EVAL_IMPL
12373bool EvalEmitter::emitCheckRefInit(SourceInfo L) {
12374 if (!isActive()) return true;
12375 CurrentSource = L;
12376 return CheckRefInit(S, CodePtr());
12377}
12378#endif
12379#ifdef GET_OPCODE_NAMES
12380OP_CompSint8,
12381OP_CompUint8,
12382OP_CompSint16,
12383OP_CompUint16,
12384OP_CompSint32,
12385OP_CompUint32,
12386OP_CompSint64,
12387OP_CompUint64,
12388OP_CompIntAP,
12389OP_CompIntAPS,
12390#endif
12391#ifdef GET_INTERPFN_LIST
12392&Interp_CompSint8,
12393&Interp_CompUint8,
12394&Interp_CompSint16,
12395&Interp_CompUint16,
12396&Interp_CompSint32,
12397&Interp_CompUint32,
12398&Interp_CompSint64,
12399&Interp_CompUint64,
12400&Interp_CompIntAP,
12401&Interp_CompIntAPS,
12402#endif
12403#ifdef GET_INTERPFN_DISPATCHERS
12404PRESERVE_NONE
12405static bool Interp_CompSint8(InterpState &S) {
12406 if (!Comp<PT_Sint8>(S)) return false;
12407#if USE_TAILCALLS
12408 MUSTTAIL return InterpNext(S);
12409#else
12410 return true;
12411#endif
12412}
12413PRESERVE_NONE
12414static bool Interp_CompUint8(InterpState &S) {
12415 if (!Comp<PT_Uint8>(S)) return false;
12416#if USE_TAILCALLS
12417 MUSTTAIL return InterpNext(S);
12418#else
12419 return true;
12420#endif
12421}
12422PRESERVE_NONE
12423static bool Interp_CompSint16(InterpState &S) {
12424 if (!Comp<PT_Sint16>(S)) return false;
12425#if USE_TAILCALLS
12426 MUSTTAIL return InterpNext(S);
12427#else
12428 return true;
12429#endif
12430}
12431PRESERVE_NONE
12432static bool Interp_CompUint16(InterpState &S) {
12433 if (!Comp<PT_Uint16>(S)) return false;
12434#if USE_TAILCALLS
12435 MUSTTAIL return InterpNext(S);
12436#else
12437 return true;
12438#endif
12439}
12440PRESERVE_NONE
12441static bool Interp_CompSint32(InterpState &S) {
12442 if (!Comp<PT_Sint32>(S)) return false;
12443#if USE_TAILCALLS
12444 MUSTTAIL return InterpNext(S);
12445#else
12446 return true;
12447#endif
12448}
12449PRESERVE_NONE
12450static bool Interp_CompUint32(InterpState &S) {
12451 if (!Comp<PT_Uint32>(S)) return false;
12452#if USE_TAILCALLS
12453 MUSTTAIL return InterpNext(S);
12454#else
12455 return true;
12456#endif
12457}
12458PRESERVE_NONE
12459static bool Interp_CompSint64(InterpState &S) {
12460 if (!Comp<PT_Sint64>(S)) return false;
12461#if USE_TAILCALLS
12462 MUSTTAIL return InterpNext(S);
12463#else
12464 return true;
12465#endif
12466}
12467PRESERVE_NONE
12468static bool Interp_CompUint64(InterpState &S) {
12469 if (!Comp<PT_Uint64>(S)) return false;
12470#if USE_TAILCALLS
12471 MUSTTAIL return InterpNext(S);
12472#else
12473 return true;
12474#endif
12475}
12476PRESERVE_NONE
12477static bool Interp_CompIntAP(InterpState &S) {
12478 if (!Comp<PT_IntAP>(S)) return false;
12479#if USE_TAILCALLS
12480 MUSTTAIL return InterpNext(S);
12481#else
12482 return true;
12483#endif
12484}
12485PRESERVE_NONE
12486static bool Interp_CompIntAPS(InterpState &S) {
12487 if (!Comp<PT_IntAPS>(S)) return false;
12488#if USE_TAILCALLS
12489 MUSTTAIL return InterpNext(S);
12490#else
12491 return true;
12492#endif
12493}
12494#endif
12495#ifdef GET_DISASM
12496case OP_CompSint8:
12497 Text.Op = PrintName("CompSint8");
12498 break;
12499case OP_CompUint8:
12500 Text.Op = PrintName("CompUint8");
12501 break;
12502case OP_CompSint16:
12503 Text.Op = PrintName("CompSint16");
12504 break;
12505case OP_CompUint16:
12506 Text.Op = PrintName("CompUint16");
12507 break;
12508case OP_CompSint32:
12509 Text.Op = PrintName("CompSint32");
12510 break;
12511case OP_CompUint32:
12512 Text.Op = PrintName("CompUint32");
12513 break;
12514case OP_CompSint64:
12515 Text.Op = PrintName("CompSint64");
12516 break;
12517case OP_CompUint64:
12518 Text.Op = PrintName("CompUint64");
12519 break;
12520case OP_CompIntAP:
12521 Text.Op = PrintName("CompIntAP");
12522 break;
12523case OP_CompIntAPS:
12524 Text.Op = PrintName("CompIntAPS");
12525 break;
12526#endif
12527#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12528bool emitCompSint8(SourceInfo);
12529bool emitCompUint8(SourceInfo);
12530bool emitCompSint16(SourceInfo);
12531bool emitCompUint16(SourceInfo);
12532bool emitCompSint32(SourceInfo);
12533bool emitCompUint32(SourceInfo);
12534bool emitCompSint64(SourceInfo);
12535bool emitCompUint64(SourceInfo);
12536bool emitCompIntAP(SourceInfo);
12537bool emitCompIntAPS(SourceInfo);
12538#endif
12539#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12540[[nodiscard]] bool emitComp(PrimType, SourceInfo I);
12541#endif
12542#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
12543bool
12544#if defined(GET_EVAL_IMPL)
12545EvalEmitter
12546#else
12547ByteCodeEmitter
12548#endif
12549::emitComp(PrimType T0, SourceInfo I) {
12550 switch (T0) {
12551 case PT_Sint8:
12552 return emitCompSint8(I);
12553 case PT_Uint8:
12554 return emitCompUint8(I);
12555 case PT_Sint16:
12556 return emitCompSint16(I);
12557 case PT_Uint16:
12558 return emitCompUint16(I);
12559 case PT_Sint32:
12560 return emitCompSint32(I);
12561 case PT_Uint32:
12562 return emitCompUint32(I);
12563 case PT_Sint64:
12564 return emitCompSint64(I);
12565 case PT_Uint64:
12566 return emitCompUint64(I);
12567 case PT_IntAP:
12568 return emitCompIntAP(I);
12569 case PT_IntAPS:
12570 return emitCompIntAPS(I);
12571 default: llvm_unreachable("invalid type: emitComp");
12572 }
12573 llvm_unreachable("invalid enum value");
12574}
12575#endif
12576#ifdef GET_LINK_IMPL
12577bool ByteCodeEmitter::emitCompSint8(SourceInfo L) {
12578 return emitOp<>(OP_CompSint8, L);
12579}
12580bool ByteCodeEmitter::emitCompUint8(SourceInfo L) {
12581 return emitOp<>(OP_CompUint8, L);
12582}
12583bool ByteCodeEmitter::emitCompSint16(SourceInfo L) {
12584 return emitOp<>(OP_CompSint16, L);
12585}
12586bool ByteCodeEmitter::emitCompUint16(SourceInfo L) {
12587 return emitOp<>(OP_CompUint16, L);
12588}
12589bool ByteCodeEmitter::emitCompSint32(SourceInfo L) {
12590 return emitOp<>(OP_CompSint32, L);
12591}
12592bool ByteCodeEmitter::emitCompUint32(SourceInfo L) {
12593 return emitOp<>(OP_CompUint32, L);
12594}
12595bool ByteCodeEmitter::emitCompSint64(SourceInfo L) {
12596 return emitOp<>(OP_CompSint64, L);
12597}
12598bool ByteCodeEmitter::emitCompUint64(SourceInfo L) {
12599 return emitOp<>(OP_CompUint64, L);
12600}
12601bool ByteCodeEmitter::emitCompIntAP(SourceInfo L) {
12602 return emitOp<>(OP_CompIntAP, L);
12603}
12604bool ByteCodeEmitter::emitCompIntAPS(SourceInfo L) {
12605 return emitOp<>(OP_CompIntAPS, L);
12606}
12607#endif
12608#ifdef GET_EVAL_IMPL
12609bool EvalEmitter::emitCompSint8(SourceInfo L) {
12610 if (!isActive()) return true;
12611 CurrentSource = L;
12612 return Comp<PT_Sint8>(S);
12613}
12614bool EvalEmitter::emitCompUint8(SourceInfo L) {
12615 if (!isActive()) return true;
12616 CurrentSource = L;
12617 return Comp<PT_Uint8>(S);
12618}
12619bool EvalEmitter::emitCompSint16(SourceInfo L) {
12620 if (!isActive()) return true;
12621 CurrentSource = L;
12622 return Comp<PT_Sint16>(S);
12623}
12624bool EvalEmitter::emitCompUint16(SourceInfo L) {
12625 if (!isActive()) return true;
12626 CurrentSource = L;
12627 return Comp<PT_Uint16>(S);
12628}
12629bool EvalEmitter::emitCompSint32(SourceInfo L) {
12630 if (!isActive()) return true;
12631 CurrentSource = L;
12632 return Comp<PT_Sint32>(S);
12633}
12634bool EvalEmitter::emitCompUint32(SourceInfo L) {
12635 if (!isActive()) return true;
12636 CurrentSource = L;
12637 return Comp<PT_Uint32>(S);
12638}
12639bool EvalEmitter::emitCompSint64(SourceInfo L) {
12640 if (!isActive()) return true;
12641 CurrentSource = L;
12642 return Comp<PT_Sint64>(S);
12643}
12644bool EvalEmitter::emitCompUint64(SourceInfo L) {
12645 if (!isActive()) return true;
12646 CurrentSource = L;
12647 return Comp<PT_Uint64>(S);
12648}
12649bool EvalEmitter::emitCompIntAP(SourceInfo L) {
12650 if (!isActive()) return true;
12651 CurrentSource = L;
12652 return Comp<PT_IntAP>(S);
12653}
12654bool EvalEmitter::emitCompIntAPS(SourceInfo L) {
12655 if (!isActive()) return true;
12656 CurrentSource = L;
12657 return Comp<PT_IntAPS>(S);
12658}
12659#endif
12660#ifdef GET_OPCODE_NAMES
12661OP_ConstBool,
12662#endif
12663#ifdef GET_INTERPFN_LIST
12664&Interp_ConstBool,
12665#endif
12666#ifdef GET_INTERPFN_DISPATCHERS
12667PRESERVE_NONE
12668static bool Interp_ConstBool(InterpState &S) {
12669 {
12670 const auto V0 = ReadArg<bool>(S, S.PC);
12671 Const<PT_Bool>(S, V0);
12672 }
12673#if USE_TAILCALLS
12674 MUSTTAIL return InterpNext(S);
12675#else
12676 return true;
12677#endif
12678}
12679#endif
12680#ifdef GET_DISASM
12681case OP_ConstBool:
12682 Text.Op = PrintName("ConstBool");
12683 Text.Args.push_back(printArg<bool>(PC));
12684 break;
12685#endif
12686#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12687bool emitConstBool( bool , SourceInfo);
12688#endif
12689#ifdef GET_LINK_IMPL
12690bool ByteCodeEmitter::emitConstBool( bool A0, SourceInfo L) {
12691 return emitOp<bool>(OP_ConstBool, A0, L);
12692}
12693#endif
12694#ifdef GET_EVAL_IMPL
12695bool EvalEmitter::emitConstBool( bool A0, SourceInfo L) {
12696 if (!isActive()) return true;
12697 CurrentSource = L;
12698 return Const<PT_Bool>(S, A0);
12699}
12700#endif
12701#ifdef GET_OPCODE_NAMES
12702OP_ConstFixedPoint,
12703#endif
12704#ifdef GET_INTERPFN_LIST
12705&Interp_ConstFixedPoint,
12706#endif
12707#ifdef GET_INTERPFN_DISPATCHERS
12708PRESERVE_NONE
12709static bool Interp_ConstFixedPoint(InterpState &S) {
12710 {
12711 const auto &V0 = ReadArg<FixedPoint>(S, S.PC);
12712 Const<PT_FixedPoint>(S, V0);
12713 }
12714#if USE_TAILCALLS
12715 MUSTTAIL return InterpNext(S);
12716#else
12717 return true;
12718#endif
12719}
12720#endif
12721#ifdef GET_DISASM
12722case OP_ConstFixedPoint:
12723 Text.Op = PrintName("ConstFixedPoint");
12724 Text.Args.push_back(printArg<FixedPoint>(PC));
12725 break;
12726#endif
12727#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12728bool emitConstFixedPoint(const FixedPoint &, SourceInfo);
12729#endif
12730#ifdef GET_LINK_IMPL
12731bool ByteCodeEmitter::emitConstFixedPoint(const FixedPoint &A0, SourceInfo L) {
12732 return emitOp<FixedPoint>(OP_ConstFixedPoint, A0, L);
12733}
12734#endif
12735#ifdef GET_EVAL_IMPL
12736bool EvalEmitter::emitConstFixedPoint(const FixedPoint &A0, SourceInfo L) {
12737 if (!isActive()) return true;
12738 CurrentSource = L;
12739 return Const<PT_FixedPoint>(S, A0);
12740}
12741#endif
12742#ifdef GET_OPCODE_NAMES
12743OP_ConstFloat,
12744#endif
12745#ifdef GET_INTERPFN_LIST
12746&Interp_ConstFloat,
12747#endif
12748#ifdef GET_INTERPFN_DISPATCHERS
12749PRESERVE_NONE
12750static bool Interp_ConstFloat(InterpState &S) {
12751 {
12752 const auto &V0 = ReadArg<Floating>(S, S.PC);
12753 ConstFloat(S, V0);
12754 }
12755#if USE_TAILCALLS
12756 MUSTTAIL return InterpNext(S);
12757#else
12758 return true;
12759#endif
12760}
12761#endif
12762#ifdef GET_DISASM
12763case OP_ConstFloat:
12764 Text.Op = PrintName("ConstFloat");
12765 Text.Args.push_back(printArg<Floating>(PC));
12766 break;
12767#endif
12768#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12769bool emitConstFloat(const Floating &, SourceInfo);
12770#endif
12771#ifdef GET_LINK_IMPL
12772bool ByteCodeEmitter::emitConstFloat(const Floating &A0, SourceInfo L) {
12773 return emitOp<Floating>(OP_ConstFloat, A0, L);
12774}
12775#endif
12776#ifdef GET_EVAL_IMPL
12777bool EvalEmitter::emitConstFloat(const Floating &A0, SourceInfo L) {
12778 if (!isActive()) return true;
12779 CurrentSource = L;
12780 return ConstFloat(S, A0);
12781}
12782#endif
12783#ifdef GET_OPCODE_NAMES
12784OP_ConstIntAP,
12785#endif
12786#ifdef GET_INTERPFN_LIST
12787&Interp_ConstIntAP,
12788#endif
12789#ifdef GET_INTERPFN_DISPATCHERS
12790PRESERVE_NONE
12791static bool Interp_ConstIntAP(InterpState &S) {
12792 {
12793 const auto &V0 = ReadArg<IntegralAP<false>>(S, S.PC);
12794 Const<PT_IntAP>(S, V0);
12795 }
12796#if USE_TAILCALLS
12797 MUSTTAIL return InterpNext(S);
12798#else
12799 return true;
12800#endif
12801}
12802#endif
12803#ifdef GET_DISASM
12804case OP_ConstIntAP:
12805 Text.Op = PrintName("ConstIntAP");
12806 Text.Args.push_back(printArg<IntegralAP<false>>(PC));
12807 break;
12808#endif
12809#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12810bool emitConstIntAP(const IntegralAP<false> &, SourceInfo);
12811#endif
12812#ifdef GET_LINK_IMPL
12813bool ByteCodeEmitter::emitConstIntAP(const IntegralAP<false> &A0, SourceInfo L) {
12814 return emitOp<IntegralAP<false>>(OP_ConstIntAP, A0, L);
12815}
12816#endif
12817#ifdef GET_EVAL_IMPL
12818bool EvalEmitter::emitConstIntAP(const IntegralAP<false> &A0, SourceInfo L) {
12819 if (!isActive()) return true;
12820 CurrentSource = L;
12821 return Const<PT_IntAP>(S, A0);
12822}
12823#endif
12824#ifdef GET_OPCODE_NAMES
12825OP_ConstIntAPS,
12826#endif
12827#ifdef GET_INTERPFN_LIST
12828&Interp_ConstIntAPS,
12829#endif
12830#ifdef GET_INTERPFN_DISPATCHERS
12831PRESERVE_NONE
12832static bool Interp_ConstIntAPS(InterpState &S) {
12833 {
12834 const auto &V0 = ReadArg<IntegralAP<true>>(S, S.PC);
12835 Const<PT_IntAPS>(S, V0);
12836 }
12837#if USE_TAILCALLS
12838 MUSTTAIL return InterpNext(S);
12839#else
12840 return true;
12841#endif
12842}
12843#endif
12844#ifdef GET_DISASM
12845case OP_ConstIntAPS:
12846 Text.Op = PrintName("ConstIntAPS");
12847 Text.Args.push_back(printArg<IntegralAP<true>>(PC));
12848 break;
12849#endif
12850#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12851bool emitConstIntAPS(const IntegralAP<true> &, SourceInfo);
12852#endif
12853#ifdef GET_LINK_IMPL
12854bool ByteCodeEmitter::emitConstIntAPS(const IntegralAP<true> &A0, SourceInfo L) {
12855 return emitOp<IntegralAP<true>>(OP_ConstIntAPS, A0, L);
12856}
12857#endif
12858#ifdef GET_EVAL_IMPL
12859bool EvalEmitter::emitConstIntAPS(const IntegralAP<true> &A0, SourceInfo L) {
12860 if (!isActive()) return true;
12861 CurrentSource = L;
12862 return Const<PT_IntAPS>(S, A0);
12863}
12864#endif
12865#ifdef GET_OPCODE_NAMES
12866OP_ConstSint8,
12867#endif
12868#ifdef GET_INTERPFN_LIST
12869&Interp_ConstSint8,
12870#endif
12871#ifdef GET_INTERPFN_DISPATCHERS
12872PRESERVE_NONE
12873static bool Interp_ConstSint8(InterpState &S) {
12874 {
12875 const auto V0 = ReadArg<int8_t>(S, S.PC);
12876 Const<PT_Sint8>(S, V0);
12877 }
12878#if USE_TAILCALLS
12879 MUSTTAIL return InterpNext(S);
12880#else
12881 return true;
12882#endif
12883}
12884#endif
12885#ifdef GET_DISASM
12886case OP_ConstSint8:
12887 Text.Op = PrintName("ConstSint8");
12888 Text.Args.push_back(printArg<int8_t>(PC));
12889 break;
12890#endif
12891#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12892bool emitConstSint8( int8_t , SourceInfo);
12893#endif
12894#ifdef GET_LINK_IMPL
12895bool ByteCodeEmitter::emitConstSint8( int8_t A0, SourceInfo L) {
12896 return emitOp<int8_t>(OP_ConstSint8, A0, L);
12897}
12898#endif
12899#ifdef GET_EVAL_IMPL
12900bool EvalEmitter::emitConstSint8( int8_t A0, SourceInfo L) {
12901 if (!isActive()) return true;
12902 CurrentSource = L;
12903 return Const<PT_Sint8>(S, A0);
12904}
12905#endif
12906#ifdef GET_OPCODE_NAMES
12907OP_ConstSint16,
12908#endif
12909#ifdef GET_INTERPFN_LIST
12910&Interp_ConstSint16,
12911#endif
12912#ifdef GET_INTERPFN_DISPATCHERS
12913PRESERVE_NONE
12914static bool Interp_ConstSint16(InterpState &S) {
12915 {
12916 const auto V0 = ReadArg<int16_t>(S, S.PC);
12917 Const<PT_Sint16>(S, V0);
12918 }
12919#if USE_TAILCALLS
12920 MUSTTAIL return InterpNext(S);
12921#else
12922 return true;
12923#endif
12924}
12925#endif
12926#ifdef GET_DISASM
12927case OP_ConstSint16:
12928 Text.Op = PrintName("ConstSint16");
12929 Text.Args.push_back(printArg<int16_t>(PC));
12930 break;
12931#endif
12932#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12933bool emitConstSint16( int16_t , SourceInfo);
12934#endif
12935#ifdef GET_LINK_IMPL
12936bool ByteCodeEmitter::emitConstSint16( int16_t A0, SourceInfo L) {
12937 return emitOp<int16_t>(OP_ConstSint16, A0, L);
12938}
12939#endif
12940#ifdef GET_EVAL_IMPL
12941bool EvalEmitter::emitConstSint16( int16_t A0, SourceInfo L) {
12942 if (!isActive()) return true;
12943 CurrentSource = L;
12944 return Const<PT_Sint16>(S, A0);
12945}
12946#endif
12947#ifdef GET_OPCODE_NAMES
12948OP_ConstSint32,
12949#endif
12950#ifdef GET_INTERPFN_LIST
12951&Interp_ConstSint32,
12952#endif
12953#ifdef GET_INTERPFN_DISPATCHERS
12954PRESERVE_NONE
12955static bool Interp_ConstSint32(InterpState &S) {
12956 {
12957 const auto V0 = ReadArg<int32_t>(S, S.PC);
12958 Const<PT_Sint32>(S, V0);
12959 }
12960#if USE_TAILCALLS
12961 MUSTTAIL return InterpNext(S);
12962#else
12963 return true;
12964#endif
12965}
12966#endif
12967#ifdef GET_DISASM
12968case OP_ConstSint32:
12969 Text.Op = PrintName("ConstSint32");
12970 Text.Args.push_back(printArg<int32_t>(PC));
12971 break;
12972#endif
12973#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12974bool emitConstSint32( int32_t , SourceInfo);
12975#endif
12976#ifdef GET_LINK_IMPL
12977bool ByteCodeEmitter::emitConstSint32( int32_t A0, SourceInfo L) {
12978 return emitOp<int32_t>(OP_ConstSint32, A0, L);
12979}
12980#endif
12981#ifdef GET_EVAL_IMPL
12982bool EvalEmitter::emitConstSint32( int32_t A0, SourceInfo L) {
12983 if (!isActive()) return true;
12984 CurrentSource = L;
12985 return Const<PT_Sint32>(S, A0);
12986}
12987#endif
12988#ifdef GET_OPCODE_NAMES
12989OP_ConstSint64,
12990#endif
12991#ifdef GET_INTERPFN_LIST
12992&Interp_ConstSint64,
12993#endif
12994#ifdef GET_INTERPFN_DISPATCHERS
12995PRESERVE_NONE
12996static bool Interp_ConstSint64(InterpState &S) {
12997 {
12998 const auto V0 = ReadArg<int64_t>(S, S.PC);
12999 Const<PT_Sint64>(S, V0);
13000 }
13001#if USE_TAILCALLS
13002 MUSTTAIL return InterpNext(S);
13003#else
13004 return true;
13005#endif
13006}
13007#endif
13008#ifdef GET_DISASM
13009case OP_ConstSint64:
13010 Text.Op = PrintName("ConstSint64");
13011 Text.Args.push_back(printArg<int64_t>(PC));
13012 break;
13013#endif
13014#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13015bool emitConstSint64( int64_t , SourceInfo);
13016#endif
13017#ifdef GET_LINK_IMPL
13018bool ByteCodeEmitter::emitConstSint64( int64_t A0, SourceInfo L) {
13019 return emitOp<int64_t>(OP_ConstSint64, A0, L);
13020}
13021#endif
13022#ifdef GET_EVAL_IMPL
13023bool EvalEmitter::emitConstSint64( int64_t A0, SourceInfo L) {
13024 if (!isActive()) return true;
13025 CurrentSource = L;
13026 return Const<PT_Sint64>(S, A0);
13027}
13028#endif
13029#ifdef GET_OPCODE_NAMES
13030OP_ConstUint8,
13031#endif
13032#ifdef GET_INTERPFN_LIST
13033&Interp_ConstUint8,
13034#endif
13035#ifdef GET_INTERPFN_DISPATCHERS
13036PRESERVE_NONE
13037static bool Interp_ConstUint8(InterpState &S) {
13038 {
13039 const auto V0 = ReadArg<uint8_t>(S, S.PC);
13040 Const<PT_Uint8>(S, V0);
13041 }
13042#if USE_TAILCALLS
13043 MUSTTAIL return InterpNext(S);
13044#else
13045 return true;
13046#endif
13047}
13048#endif
13049#ifdef GET_DISASM
13050case OP_ConstUint8:
13051 Text.Op = PrintName("ConstUint8");
13052 Text.Args.push_back(printArg<uint8_t>(PC));
13053 break;
13054#endif
13055#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13056bool emitConstUint8( uint8_t , SourceInfo);
13057#endif
13058#ifdef GET_LINK_IMPL
13059bool ByteCodeEmitter::emitConstUint8( uint8_t A0, SourceInfo L) {
13060 return emitOp<uint8_t>(OP_ConstUint8, A0, L);
13061}
13062#endif
13063#ifdef GET_EVAL_IMPL
13064bool EvalEmitter::emitConstUint8( uint8_t A0, SourceInfo L) {
13065 if (!isActive()) return true;
13066 CurrentSource = L;
13067 return Const<PT_Uint8>(S, A0);
13068}
13069#endif
13070#ifdef GET_OPCODE_NAMES
13071OP_ConstUint16,
13072#endif
13073#ifdef GET_INTERPFN_LIST
13074&Interp_ConstUint16,
13075#endif
13076#ifdef GET_INTERPFN_DISPATCHERS
13077PRESERVE_NONE
13078static bool Interp_ConstUint16(InterpState &S) {
13079 {
13080 const auto V0 = ReadArg<uint16_t>(S, S.PC);
13081 Const<PT_Uint16>(S, V0);
13082 }
13083#if USE_TAILCALLS
13084 MUSTTAIL return InterpNext(S);
13085#else
13086 return true;
13087#endif
13088}
13089#endif
13090#ifdef GET_DISASM
13091case OP_ConstUint16:
13092 Text.Op = PrintName("ConstUint16");
13093 Text.Args.push_back(printArg<uint16_t>(PC));
13094 break;
13095#endif
13096#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13097bool emitConstUint16( uint16_t , SourceInfo);
13098#endif
13099#ifdef GET_LINK_IMPL
13100bool ByteCodeEmitter::emitConstUint16( uint16_t A0, SourceInfo L) {
13101 return emitOp<uint16_t>(OP_ConstUint16, A0, L);
13102}
13103#endif
13104#ifdef GET_EVAL_IMPL
13105bool EvalEmitter::emitConstUint16( uint16_t A0, SourceInfo L) {
13106 if (!isActive()) return true;
13107 CurrentSource = L;
13108 return Const<PT_Uint16>(S, A0);
13109}
13110#endif
13111#ifdef GET_OPCODE_NAMES
13112OP_ConstUint32,
13113#endif
13114#ifdef GET_INTERPFN_LIST
13115&Interp_ConstUint32,
13116#endif
13117#ifdef GET_INTERPFN_DISPATCHERS
13118PRESERVE_NONE
13119static bool Interp_ConstUint32(InterpState &S) {
13120 {
13121 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13122 Const<PT_Uint32>(S, V0);
13123 }
13124#if USE_TAILCALLS
13125 MUSTTAIL return InterpNext(S);
13126#else
13127 return true;
13128#endif
13129}
13130#endif
13131#ifdef GET_DISASM
13132case OP_ConstUint32:
13133 Text.Op = PrintName("ConstUint32");
13134 Text.Args.push_back(printArg<uint32_t>(PC));
13135 break;
13136#endif
13137#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13138bool emitConstUint32( uint32_t , SourceInfo);
13139#endif
13140#ifdef GET_LINK_IMPL
13141bool ByteCodeEmitter::emitConstUint32( uint32_t A0, SourceInfo L) {
13142 return emitOp<uint32_t>(OP_ConstUint32, A0, L);
13143}
13144#endif
13145#ifdef GET_EVAL_IMPL
13146bool EvalEmitter::emitConstUint32( uint32_t A0, SourceInfo L) {
13147 if (!isActive()) return true;
13148 CurrentSource = L;
13149 return Const<PT_Uint32>(S, A0);
13150}
13151#endif
13152#ifdef GET_OPCODE_NAMES
13153OP_ConstUint64,
13154#endif
13155#ifdef GET_INTERPFN_LIST
13156&Interp_ConstUint64,
13157#endif
13158#ifdef GET_INTERPFN_DISPATCHERS
13159PRESERVE_NONE
13160static bool Interp_ConstUint64(InterpState &S) {
13161 {
13162 const auto V0 = ReadArg<uint64_t>(S, S.PC);
13163 Const<PT_Uint64>(S, V0);
13164 }
13165#if USE_TAILCALLS
13166 MUSTTAIL return InterpNext(S);
13167#else
13168 return true;
13169#endif
13170}
13171#endif
13172#ifdef GET_DISASM
13173case OP_ConstUint64:
13174 Text.Op = PrintName("ConstUint64");
13175 Text.Args.push_back(printArg<uint64_t>(PC));
13176 break;
13177#endif
13178#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13179bool emitConstUint64( uint64_t , SourceInfo);
13180#endif
13181#ifdef GET_LINK_IMPL
13182bool ByteCodeEmitter::emitConstUint64( uint64_t A0, SourceInfo L) {
13183 return emitOp<uint64_t>(OP_ConstUint64, A0, L);
13184}
13185#endif
13186#ifdef GET_EVAL_IMPL
13187bool EvalEmitter::emitConstUint64( uint64_t A0, SourceInfo L) {
13188 if (!isActive()) return true;
13189 CurrentSource = L;
13190 return Const<PT_Uint64>(S, A0);
13191}
13192#endif
13193#ifdef GET_OPCODE_NAMES
13194OP_CopyArraySint8,
13195OP_CopyArrayUint8,
13196OP_CopyArraySint16,
13197OP_CopyArrayUint16,
13198OP_CopyArraySint32,
13199OP_CopyArrayUint32,
13200OP_CopyArraySint64,
13201OP_CopyArrayUint64,
13202OP_CopyArrayIntAP,
13203OP_CopyArrayIntAPS,
13204OP_CopyArrayBool,
13205OP_CopyArrayFixedPoint,
13206OP_CopyArrayPtr,
13207OP_CopyArrayMemberPtr,
13208OP_CopyArrayFloat,
13209#endif
13210#ifdef GET_INTERPFN_LIST
13211&Interp_CopyArraySint8,
13212&Interp_CopyArrayUint8,
13213&Interp_CopyArraySint16,
13214&Interp_CopyArrayUint16,
13215&Interp_CopyArraySint32,
13216&Interp_CopyArrayUint32,
13217&Interp_CopyArraySint64,
13218&Interp_CopyArrayUint64,
13219&Interp_CopyArrayIntAP,
13220&Interp_CopyArrayIntAPS,
13221&Interp_CopyArrayBool,
13222&Interp_CopyArrayFixedPoint,
13223&Interp_CopyArrayPtr,
13224&Interp_CopyArrayMemberPtr,
13225&Interp_CopyArrayFloat,
13226#endif
13227#ifdef GET_INTERPFN_DISPATCHERS
13228PRESERVE_NONE
13229static bool Interp_CopyArraySint8(InterpState &S) {
13230 {
13231 CodePtr OpPC = S.PC;
13232 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13233 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13234 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13235 if (!CopyArray<PT_Sint8>(S, OpPC, V0, V1, V2)) return false;
13236 }
13237#if USE_TAILCALLS
13238 MUSTTAIL return InterpNext(S);
13239#else
13240 return true;
13241#endif
13242}
13243PRESERVE_NONE
13244static bool Interp_CopyArrayUint8(InterpState &S) {
13245 {
13246 CodePtr OpPC = S.PC;
13247 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13248 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13249 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13250 if (!CopyArray<PT_Uint8>(S, OpPC, V0, V1, V2)) return false;
13251 }
13252#if USE_TAILCALLS
13253 MUSTTAIL return InterpNext(S);
13254#else
13255 return true;
13256#endif
13257}
13258PRESERVE_NONE
13259static bool Interp_CopyArraySint16(InterpState &S) {
13260 {
13261 CodePtr OpPC = S.PC;
13262 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13263 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13264 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13265 if (!CopyArray<PT_Sint16>(S, OpPC, V0, V1, V2)) return false;
13266 }
13267#if USE_TAILCALLS
13268 MUSTTAIL return InterpNext(S);
13269#else
13270 return true;
13271#endif
13272}
13273PRESERVE_NONE
13274static bool Interp_CopyArrayUint16(InterpState &S) {
13275 {
13276 CodePtr OpPC = S.PC;
13277 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13278 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13279 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13280 if (!CopyArray<PT_Uint16>(S, OpPC, V0, V1, V2)) return false;
13281 }
13282#if USE_TAILCALLS
13283 MUSTTAIL return InterpNext(S);
13284#else
13285 return true;
13286#endif
13287}
13288PRESERVE_NONE
13289static bool Interp_CopyArraySint32(InterpState &S) {
13290 {
13291 CodePtr OpPC = S.PC;
13292 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13293 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13294 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13295 if (!CopyArray<PT_Sint32>(S, OpPC, V0, V1, V2)) return false;
13296 }
13297#if USE_TAILCALLS
13298 MUSTTAIL return InterpNext(S);
13299#else
13300 return true;
13301#endif
13302}
13303PRESERVE_NONE
13304static bool Interp_CopyArrayUint32(InterpState &S) {
13305 {
13306 CodePtr OpPC = S.PC;
13307 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13308 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13309 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13310 if (!CopyArray<PT_Uint32>(S, OpPC, V0, V1, V2)) return false;
13311 }
13312#if USE_TAILCALLS
13313 MUSTTAIL return InterpNext(S);
13314#else
13315 return true;
13316#endif
13317}
13318PRESERVE_NONE
13319static bool Interp_CopyArraySint64(InterpState &S) {
13320 {
13321 CodePtr OpPC = S.PC;
13322 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13323 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13324 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13325 if (!CopyArray<PT_Sint64>(S, OpPC, V0, V1, V2)) return false;
13326 }
13327#if USE_TAILCALLS
13328 MUSTTAIL return InterpNext(S);
13329#else
13330 return true;
13331#endif
13332}
13333PRESERVE_NONE
13334static bool Interp_CopyArrayUint64(InterpState &S) {
13335 {
13336 CodePtr OpPC = S.PC;
13337 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13338 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13339 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13340 if (!CopyArray<PT_Uint64>(S, OpPC, V0, V1, V2)) return false;
13341 }
13342#if USE_TAILCALLS
13343 MUSTTAIL return InterpNext(S);
13344#else
13345 return true;
13346#endif
13347}
13348PRESERVE_NONE
13349static bool Interp_CopyArrayIntAP(InterpState &S) {
13350 {
13351 CodePtr OpPC = S.PC;
13352 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13353 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13354 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13355 if (!CopyArray<PT_IntAP>(S, OpPC, V0, V1, V2)) return false;
13356 }
13357#if USE_TAILCALLS
13358 MUSTTAIL return InterpNext(S);
13359#else
13360 return true;
13361#endif
13362}
13363PRESERVE_NONE
13364static bool Interp_CopyArrayIntAPS(InterpState &S) {
13365 {
13366 CodePtr OpPC = S.PC;
13367 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13368 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13369 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13370 if (!CopyArray<PT_IntAPS>(S, OpPC, V0, V1, V2)) return false;
13371 }
13372#if USE_TAILCALLS
13373 MUSTTAIL return InterpNext(S);
13374#else
13375 return true;
13376#endif
13377}
13378PRESERVE_NONE
13379static bool Interp_CopyArrayBool(InterpState &S) {
13380 {
13381 CodePtr OpPC = S.PC;
13382 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13383 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13384 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13385 if (!CopyArray<PT_Bool>(S, OpPC, V0, V1, V2)) return false;
13386 }
13387#if USE_TAILCALLS
13388 MUSTTAIL return InterpNext(S);
13389#else
13390 return true;
13391#endif
13392}
13393PRESERVE_NONE
13394static bool Interp_CopyArrayFixedPoint(InterpState &S) {
13395 {
13396 CodePtr OpPC = S.PC;
13397 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13398 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13399 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13400 if (!CopyArray<PT_FixedPoint>(S, OpPC, V0, V1, V2)) return false;
13401 }
13402#if USE_TAILCALLS
13403 MUSTTAIL return InterpNext(S);
13404#else
13405 return true;
13406#endif
13407}
13408PRESERVE_NONE
13409static bool Interp_CopyArrayPtr(InterpState &S) {
13410 {
13411 CodePtr OpPC = S.PC;
13412 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13413 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13414 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13415 if (!CopyArray<PT_Ptr>(S, OpPC, V0, V1, V2)) return false;
13416 }
13417#if USE_TAILCALLS
13418 MUSTTAIL return InterpNext(S);
13419#else
13420 return true;
13421#endif
13422}
13423PRESERVE_NONE
13424static bool Interp_CopyArrayMemberPtr(InterpState &S) {
13425 {
13426 CodePtr OpPC = S.PC;
13427 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13428 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13429 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13430 if (!CopyArray<PT_MemberPtr>(S, OpPC, V0, V1, V2)) return false;
13431 }
13432#if USE_TAILCALLS
13433 MUSTTAIL return InterpNext(S);
13434#else
13435 return true;
13436#endif
13437}
13438PRESERVE_NONE
13439static bool Interp_CopyArrayFloat(InterpState &S) {
13440 {
13441 CodePtr OpPC = S.PC;
13442 const auto V0 = ReadArg<uint32_t>(S, S.PC);
13443 const auto V1 = ReadArg<uint32_t>(S, S.PC);
13444 const auto V2 = ReadArg<uint32_t>(S, S.PC);
13445 if (!CopyArray<PT_Float>(S, OpPC, V0, V1, V2)) return false;
13446 }
13447#if USE_TAILCALLS
13448 MUSTTAIL return InterpNext(S);
13449#else
13450 return true;
13451#endif
13452}
13453#endif
13454#ifdef GET_DISASM
13455case OP_CopyArraySint8:
13456 Text.Op = PrintName("CopyArraySint8");
13457 Text.Args.push_back(printArg<uint32_t>(PC));
13458 Text.Args.push_back(printArg<uint32_t>(PC));
13459 Text.Args.push_back(printArg<uint32_t>(PC));
13460 break;
13461case OP_CopyArrayUint8:
13462 Text.Op = PrintName("CopyArrayUint8");
13463 Text.Args.push_back(printArg<uint32_t>(PC));
13464 Text.Args.push_back(printArg<uint32_t>(PC));
13465 Text.Args.push_back(printArg<uint32_t>(PC));
13466 break;
13467case OP_CopyArraySint16:
13468 Text.Op = PrintName("CopyArraySint16");
13469 Text.Args.push_back(printArg<uint32_t>(PC));
13470 Text.Args.push_back(printArg<uint32_t>(PC));
13471 Text.Args.push_back(printArg<uint32_t>(PC));
13472 break;
13473case OP_CopyArrayUint16:
13474 Text.Op = PrintName("CopyArrayUint16");
13475 Text.Args.push_back(printArg<uint32_t>(PC));
13476 Text.Args.push_back(printArg<uint32_t>(PC));
13477 Text.Args.push_back(printArg<uint32_t>(PC));
13478 break;
13479case OP_CopyArraySint32:
13480 Text.Op = PrintName("CopyArraySint32");
13481 Text.Args.push_back(printArg<uint32_t>(PC));
13482 Text.Args.push_back(printArg<uint32_t>(PC));
13483 Text.Args.push_back(printArg<uint32_t>(PC));
13484 break;
13485case OP_CopyArrayUint32:
13486 Text.Op = PrintName("CopyArrayUint32");
13487 Text.Args.push_back(printArg<uint32_t>(PC));
13488 Text.Args.push_back(printArg<uint32_t>(PC));
13489 Text.Args.push_back(printArg<uint32_t>(PC));
13490 break;
13491case OP_CopyArraySint64:
13492 Text.Op = PrintName("CopyArraySint64");
13493 Text.Args.push_back(printArg<uint32_t>(PC));
13494 Text.Args.push_back(printArg<uint32_t>(PC));
13495 Text.Args.push_back(printArg<uint32_t>(PC));
13496 break;
13497case OP_CopyArrayUint64:
13498 Text.Op = PrintName("CopyArrayUint64");
13499 Text.Args.push_back(printArg<uint32_t>(PC));
13500 Text.Args.push_back(printArg<uint32_t>(PC));
13501 Text.Args.push_back(printArg<uint32_t>(PC));
13502 break;
13503case OP_CopyArrayIntAP:
13504 Text.Op = PrintName("CopyArrayIntAP");
13505 Text.Args.push_back(printArg<uint32_t>(PC));
13506 Text.Args.push_back(printArg<uint32_t>(PC));
13507 Text.Args.push_back(printArg<uint32_t>(PC));
13508 break;
13509case OP_CopyArrayIntAPS:
13510 Text.Op = PrintName("CopyArrayIntAPS");
13511 Text.Args.push_back(printArg<uint32_t>(PC));
13512 Text.Args.push_back(printArg<uint32_t>(PC));
13513 Text.Args.push_back(printArg<uint32_t>(PC));
13514 break;
13515case OP_CopyArrayBool:
13516 Text.Op = PrintName("CopyArrayBool");
13517 Text.Args.push_back(printArg<uint32_t>(PC));
13518 Text.Args.push_back(printArg<uint32_t>(PC));
13519 Text.Args.push_back(printArg<uint32_t>(PC));
13520 break;
13521case OP_CopyArrayFixedPoint:
13522 Text.Op = PrintName("CopyArrayFixedPoint");
13523 Text.Args.push_back(printArg<uint32_t>(PC));
13524 Text.Args.push_back(printArg<uint32_t>(PC));
13525 Text.Args.push_back(printArg<uint32_t>(PC));
13526 break;
13527case OP_CopyArrayPtr:
13528 Text.Op = PrintName("CopyArrayPtr");
13529 Text.Args.push_back(printArg<uint32_t>(PC));
13530 Text.Args.push_back(printArg<uint32_t>(PC));
13531 Text.Args.push_back(printArg<uint32_t>(PC));
13532 break;
13533case OP_CopyArrayMemberPtr:
13534 Text.Op = PrintName("CopyArrayMemberPtr");
13535 Text.Args.push_back(printArg<uint32_t>(PC));
13536 Text.Args.push_back(printArg<uint32_t>(PC));
13537 Text.Args.push_back(printArg<uint32_t>(PC));
13538 break;
13539case OP_CopyArrayFloat:
13540 Text.Op = PrintName("CopyArrayFloat");
13541 Text.Args.push_back(printArg<uint32_t>(PC));
13542 Text.Args.push_back(printArg<uint32_t>(PC));
13543 Text.Args.push_back(printArg<uint32_t>(PC));
13544 break;
13545#endif
13546#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13547bool emitCopyArraySint8( uint32_t , uint32_t , uint32_t , SourceInfo);
13548bool emitCopyArrayUint8( uint32_t , uint32_t , uint32_t , SourceInfo);
13549bool emitCopyArraySint16( uint32_t , uint32_t , uint32_t , SourceInfo);
13550bool emitCopyArrayUint16( uint32_t , uint32_t , uint32_t , SourceInfo);
13551bool emitCopyArraySint32( uint32_t , uint32_t , uint32_t , SourceInfo);
13552bool emitCopyArrayUint32( uint32_t , uint32_t , uint32_t , SourceInfo);
13553bool emitCopyArraySint64( uint32_t , uint32_t , uint32_t , SourceInfo);
13554bool emitCopyArrayUint64( uint32_t , uint32_t , uint32_t , SourceInfo);
13555bool emitCopyArrayIntAP( uint32_t , uint32_t , uint32_t , SourceInfo);
13556bool emitCopyArrayIntAPS( uint32_t , uint32_t , uint32_t , SourceInfo);
13557bool emitCopyArrayBool( uint32_t , uint32_t , uint32_t , SourceInfo);
13558bool emitCopyArrayFixedPoint( uint32_t , uint32_t , uint32_t , SourceInfo);
13559bool emitCopyArrayPtr( uint32_t , uint32_t , uint32_t , SourceInfo);
13560bool emitCopyArrayMemberPtr( uint32_t , uint32_t , uint32_t , SourceInfo);
13561bool emitCopyArrayFloat( uint32_t , uint32_t , uint32_t , SourceInfo);
13562#endif
13563#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13564[[nodiscard]] bool emitCopyArray(PrimType, uint32_t, uint32_t, uint32_t, SourceInfo I);
13565#endif
13566#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
13567bool
13568#if defined(GET_EVAL_IMPL)
13569EvalEmitter
13570#else
13571ByteCodeEmitter
13572#endif
13573::emitCopyArray(PrimType T0, uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo I) {
13574 switch (T0) {
13575 case PT_Sint8:
13576 return emitCopyArraySint8(A0, A1, A2, I);
13577 case PT_Uint8:
13578 return emitCopyArrayUint8(A0, A1, A2, I);
13579 case PT_Sint16:
13580 return emitCopyArraySint16(A0, A1, A2, I);
13581 case PT_Uint16:
13582 return emitCopyArrayUint16(A0, A1, A2, I);
13583 case PT_Sint32:
13584 return emitCopyArraySint32(A0, A1, A2, I);
13585 case PT_Uint32:
13586 return emitCopyArrayUint32(A0, A1, A2, I);
13587 case PT_Sint64:
13588 return emitCopyArraySint64(A0, A1, A2, I);
13589 case PT_Uint64:
13590 return emitCopyArrayUint64(A0, A1, A2, I);
13591 case PT_IntAP:
13592 return emitCopyArrayIntAP(A0, A1, A2, I);
13593 case PT_IntAPS:
13594 return emitCopyArrayIntAPS(A0, A1, A2, I);
13595 case PT_Bool:
13596 return emitCopyArrayBool(A0, A1, A2, I);
13597 case PT_FixedPoint:
13598 return emitCopyArrayFixedPoint(A0, A1, A2, I);
13599 case PT_Ptr:
13600 return emitCopyArrayPtr(A0, A1, A2, I);
13601 case PT_MemberPtr:
13602 return emitCopyArrayMemberPtr(A0, A1, A2, I);
13603 case PT_Float:
13604 return emitCopyArrayFloat(A0, A1, A2, I);
13605 }
13606 llvm_unreachable("invalid enum value");
13607}
13608#endif
13609#ifdef GET_LINK_IMPL
13610bool ByteCodeEmitter::emitCopyArraySint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13611 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint8, A0, A1, A2, L);
13612}
13613bool ByteCodeEmitter::emitCopyArrayUint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13614 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint8, A0, A1, A2, L);
13615}
13616bool ByteCodeEmitter::emitCopyArraySint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13617 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint16, A0, A1, A2, L);
13618}
13619bool ByteCodeEmitter::emitCopyArrayUint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13620 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint16, A0, A1, A2, L);
13621}
13622bool ByteCodeEmitter::emitCopyArraySint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13623 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint32, A0, A1, A2, L);
13624}
13625bool ByteCodeEmitter::emitCopyArrayUint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13626 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint32, A0, A1, A2, L);
13627}
13628bool ByteCodeEmitter::emitCopyArraySint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13629 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint64, A0, A1, A2, L);
13630}
13631bool ByteCodeEmitter::emitCopyArrayUint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13632 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint64, A0, A1, A2, L);
13633}
13634bool ByteCodeEmitter::emitCopyArrayIntAP( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13635 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayIntAP, A0, A1, A2, L);
13636}
13637bool ByteCodeEmitter::emitCopyArrayIntAPS( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13638 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayIntAPS, A0, A1, A2, L);
13639}
13640bool ByteCodeEmitter::emitCopyArrayBool( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13641 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayBool, A0, A1, A2, L);
13642}
13643bool ByteCodeEmitter::emitCopyArrayFixedPoint( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13644 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayFixedPoint, A0, A1, A2, L);
13645}
13646bool ByteCodeEmitter::emitCopyArrayPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13647 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayPtr, A0, A1, A2, L);
13648}
13649bool ByteCodeEmitter::emitCopyArrayMemberPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13650 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayMemberPtr, A0, A1, A2, L);
13651}
13652bool ByteCodeEmitter::emitCopyArrayFloat( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13653 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayFloat, A0, A1, A2, L);
13654}
13655#endif
13656#ifdef GET_EVAL_IMPL
13657bool EvalEmitter::emitCopyArraySint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13658 if (!isActive()) return true;
13659 CurrentSource = L;
13660 return CopyArray<PT_Sint8>(S, CodePtr(), A0, A1, A2);
13661}
13662bool EvalEmitter::emitCopyArrayUint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13663 if (!isActive()) return true;
13664 CurrentSource = L;
13665 return CopyArray<PT_Uint8>(S, CodePtr(), A0, A1, A2);
13666}
13667bool EvalEmitter::emitCopyArraySint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13668 if (!isActive()) return true;
13669 CurrentSource = L;
13670 return CopyArray<PT_Sint16>(S, CodePtr(), A0, A1, A2);
13671}
13672bool EvalEmitter::emitCopyArrayUint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13673 if (!isActive()) return true;
13674 CurrentSource = L;
13675 return CopyArray<PT_Uint16>(S, CodePtr(), A0, A1, A2);
13676}
13677bool EvalEmitter::emitCopyArraySint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13678 if (!isActive()) return true;
13679 CurrentSource = L;
13680 return CopyArray<PT_Sint32>(S, CodePtr(), A0, A1, A2);
13681}
13682bool EvalEmitter::emitCopyArrayUint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13683 if (!isActive()) return true;
13684 CurrentSource = L;
13685 return CopyArray<PT_Uint32>(S, CodePtr(), A0, A1, A2);
13686}
13687bool EvalEmitter::emitCopyArraySint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13688 if (!isActive()) return true;
13689 CurrentSource = L;
13690 return CopyArray<PT_Sint64>(S, CodePtr(), A0, A1, A2);
13691}
13692bool EvalEmitter::emitCopyArrayUint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13693 if (!isActive()) return true;
13694 CurrentSource = L;
13695 return CopyArray<PT_Uint64>(S, CodePtr(), A0, A1, A2);
13696}
13697bool EvalEmitter::emitCopyArrayIntAP( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13698 if (!isActive()) return true;
13699 CurrentSource = L;
13700 return CopyArray<PT_IntAP>(S, CodePtr(), A0, A1, A2);
13701}
13702bool EvalEmitter::emitCopyArrayIntAPS( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13703 if (!isActive()) return true;
13704 CurrentSource = L;
13705 return CopyArray<PT_IntAPS>(S, CodePtr(), A0, A1, A2);
13706}
13707bool EvalEmitter::emitCopyArrayBool( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13708 if (!isActive()) return true;
13709 CurrentSource = L;
13710 return CopyArray<PT_Bool>(S, CodePtr(), A0, A1, A2);
13711}
13712bool EvalEmitter::emitCopyArrayFixedPoint( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13713 if (!isActive()) return true;
13714 CurrentSource = L;
13715 return CopyArray<PT_FixedPoint>(S, CodePtr(), A0, A1, A2);
13716}
13717bool EvalEmitter::emitCopyArrayPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13718 if (!isActive()) return true;
13719 CurrentSource = L;
13720 return CopyArray<PT_Ptr>(S, CodePtr(), A0, A1, A2);
13721}
13722bool EvalEmitter::emitCopyArrayMemberPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13723 if (!isActive()) return true;
13724 CurrentSource = L;
13725 return CopyArray<PT_MemberPtr>(S, CodePtr(), A0, A1, A2);
13726}
13727bool EvalEmitter::emitCopyArrayFloat( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13728 if (!isActive()) return true;
13729 CurrentSource = L;
13730 return CopyArray<PT_Float>(S, CodePtr(), A0, A1, A2);
13731}
13732#endif
13733#ifdef GET_OPCODE_NAMES
13734OP_CopyMemberPtrPath,
13735#endif
13736#ifdef GET_INTERPFN_LIST
13737&Interp_CopyMemberPtrPath,
13738#endif
13739#ifdef GET_INTERPFN_DISPATCHERS
13740PRESERVE_NONE
13741static bool Interp_CopyMemberPtrPath(InterpState &S) {
13742 {
13743 const auto V0 = ReadArg<const RecordDecl *>(S, S.PC);
13744 const auto V1 = ReadArg<bool>(S, S.PC);
13745 CopyMemberPtrPath(S, V0, V1);
13746 }
13747#if USE_TAILCALLS
13748 MUSTTAIL return InterpNext(S);
13749#else
13750 return true;
13751#endif
13752}
13753#endif
13754#ifdef GET_DISASM
13755case OP_CopyMemberPtrPath:
13756 Text.Op = PrintName("CopyMemberPtrPath");
13757 Text.Args.push_back(printArg<const RecordDecl *>(PC));
13758 Text.Args.push_back(printArg<bool>(PC));
13759 break;
13760#endif
13761#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13762bool emitCopyMemberPtrPath( const RecordDecl * , bool , SourceInfo);
13763#endif
13764#ifdef GET_LINK_IMPL
13765bool ByteCodeEmitter::emitCopyMemberPtrPath( const RecordDecl * A0, bool A1, SourceInfo L) {
13766 return emitOp<const RecordDecl *, bool>(OP_CopyMemberPtrPath, A0, A1, L);
13767}
13768#endif
13769#ifdef GET_EVAL_IMPL
13770bool EvalEmitter::emitCopyMemberPtrPath( const RecordDecl * A0, bool A1, SourceInfo L) {
13771 if (!isActive()) return true;
13772 CurrentSource = L;
13773 return CopyMemberPtrPath(S, A0, A1);
13774}
13775#endif
13776#ifdef GET_OPCODE_NAMES
13777OP_CtorCheck,
13778#endif
13779#ifdef GET_INTERPFN_LIST
13780&Interp_CtorCheck,
13781#endif
13782#ifdef GET_INTERPFN_DISPATCHERS
13783PRESERVE_NONE
13784static bool Interp_CtorCheck(InterpState &S) {
13785 if (!CtorCheck(S)) return false;
13786#if USE_TAILCALLS
13787 MUSTTAIL return InterpNext(S);
13788#else
13789 return true;
13790#endif
13791}
13792#endif
13793#ifdef GET_DISASM
13794case OP_CtorCheck:
13795 Text.Op = PrintName("CtorCheck");
13796 break;
13797#endif
13798#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13799bool emitCtorCheck(SourceInfo);
13800#endif
13801#ifdef GET_LINK_IMPL
13802bool ByteCodeEmitter::emitCtorCheck(SourceInfo L) {
13803 return emitOp<>(OP_CtorCheck, L);
13804}
13805#endif
13806#ifdef GET_EVAL_IMPL
13807bool EvalEmitter::emitCtorCheck(SourceInfo L) {
13808 if (!isActive()) return true;
13809 CurrentSource = L;
13810 return CtorCheck(S);
13811}
13812#endif
13813#ifdef GET_OPCODE_NAMES
13814OP_DecSint8,
13815OP_DecUint8,
13816OP_DecSint16,
13817OP_DecUint16,
13818OP_DecSint32,
13819OP_DecUint32,
13820OP_DecSint64,
13821OP_DecUint64,
13822OP_DecIntAP,
13823OP_DecIntAPS,
13824OP_DecBool,
13825OP_DecFixedPoint,
13826#endif
13827#ifdef GET_INTERPFN_LIST
13828&Interp_DecSint8,
13829&Interp_DecUint8,
13830&Interp_DecSint16,
13831&Interp_DecUint16,
13832&Interp_DecSint32,
13833&Interp_DecUint32,
13834&Interp_DecSint64,
13835&Interp_DecUint64,
13836&Interp_DecIntAP,
13837&Interp_DecIntAPS,
13838&Interp_DecBool,
13839&Interp_DecFixedPoint,
13840#endif
13841#ifdef GET_INTERPFN_DISPATCHERS
13842PRESERVE_NONE
13843static bool Interp_DecSint8(InterpState &S) {
13844 {
13845 CodePtr OpPC = S.PC;
13846 const auto V0 = ReadArg<bool>(S, S.PC);
13847 if (!Dec<PT_Sint8>(S, OpPC, V0)) return false;
13848 }
13849#if USE_TAILCALLS
13850 MUSTTAIL return InterpNext(S);
13851#else
13852 return true;
13853#endif
13854}
13855PRESERVE_NONE
13856static bool Interp_DecUint8(InterpState &S) {
13857 {
13858 CodePtr OpPC = S.PC;
13859 const auto V0 = ReadArg<bool>(S, S.PC);
13860 if (!Dec<PT_Uint8>(S, OpPC, V0)) return false;
13861 }
13862#if USE_TAILCALLS
13863 MUSTTAIL return InterpNext(S);
13864#else
13865 return true;
13866#endif
13867}
13868PRESERVE_NONE
13869static bool Interp_DecSint16(InterpState &S) {
13870 {
13871 CodePtr OpPC = S.PC;
13872 const auto V0 = ReadArg<bool>(S, S.PC);
13873 if (!Dec<PT_Sint16>(S, OpPC, V0)) return false;
13874 }
13875#if USE_TAILCALLS
13876 MUSTTAIL return InterpNext(S);
13877#else
13878 return true;
13879#endif
13880}
13881PRESERVE_NONE
13882static bool Interp_DecUint16(InterpState &S) {
13883 {
13884 CodePtr OpPC = S.PC;
13885 const auto V0 = ReadArg<bool>(S, S.PC);
13886 if (!Dec<PT_Uint16>(S, OpPC, V0)) return false;
13887 }
13888#if USE_TAILCALLS
13889 MUSTTAIL return InterpNext(S);
13890#else
13891 return true;
13892#endif
13893}
13894PRESERVE_NONE
13895static bool Interp_DecSint32(InterpState &S) {
13896 {
13897 CodePtr OpPC = S.PC;
13898 const auto V0 = ReadArg<bool>(S, S.PC);
13899 if (!Dec<PT_Sint32>(S, OpPC, V0)) return false;
13900 }
13901#if USE_TAILCALLS
13902 MUSTTAIL return InterpNext(S);
13903#else
13904 return true;
13905#endif
13906}
13907PRESERVE_NONE
13908static bool Interp_DecUint32(InterpState &S) {
13909 {
13910 CodePtr OpPC = S.PC;
13911 const auto V0 = ReadArg<bool>(S, S.PC);
13912 if (!Dec<PT_Uint32>(S, OpPC, V0)) return false;
13913 }
13914#if USE_TAILCALLS
13915 MUSTTAIL return InterpNext(S);
13916#else
13917 return true;
13918#endif
13919}
13920PRESERVE_NONE
13921static bool Interp_DecSint64(InterpState &S) {
13922 {
13923 CodePtr OpPC = S.PC;
13924 const auto V0 = ReadArg<bool>(S, S.PC);
13925 if (!Dec<PT_Sint64>(S, OpPC, V0)) return false;
13926 }
13927#if USE_TAILCALLS
13928 MUSTTAIL return InterpNext(S);
13929#else
13930 return true;
13931#endif
13932}
13933PRESERVE_NONE
13934static bool Interp_DecUint64(InterpState &S) {
13935 {
13936 CodePtr OpPC = S.PC;
13937 const auto V0 = ReadArg<bool>(S, S.PC);
13938 if (!Dec<PT_Uint64>(S, OpPC, V0)) return false;
13939 }
13940#if USE_TAILCALLS
13941 MUSTTAIL return InterpNext(S);
13942#else
13943 return true;
13944#endif
13945}
13946PRESERVE_NONE
13947static bool Interp_DecIntAP(InterpState &S) {
13948 {
13949 CodePtr OpPC = S.PC;
13950 const auto V0 = ReadArg<bool>(S, S.PC);
13951 if (!Dec<PT_IntAP>(S, OpPC, V0)) return false;
13952 }
13953#if USE_TAILCALLS
13954 MUSTTAIL return InterpNext(S);
13955#else
13956 return true;
13957#endif
13958}
13959PRESERVE_NONE
13960static bool Interp_DecIntAPS(InterpState &S) {
13961 {
13962 CodePtr OpPC = S.PC;
13963 const auto V0 = ReadArg<bool>(S, S.PC);
13964 if (!Dec<PT_IntAPS>(S, OpPC, V0)) return false;
13965 }
13966#if USE_TAILCALLS
13967 MUSTTAIL return InterpNext(S);
13968#else
13969 return true;
13970#endif
13971}
13972PRESERVE_NONE
13973static bool Interp_DecBool(InterpState &S) {
13974 {
13975 CodePtr OpPC = S.PC;
13976 const auto V0 = ReadArg<bool>(S, S.PC);
13977 if (!Dec<PT_Bool>(S, OpPC, V0)) return false;
13978 }
13979#if USE_TAILCALLS
13980 MUSTTAIL return InterpNext(S);
13981#else
13982 return true;
13983#endif
13984}
13985PRESERVE_NONE
13986static bool Interp_DecFixedPoint(InterpState &S) {
13987 {
13988 CodePtr OpPC = S.PC;
13989 const auto V0 = ReadArg<bool>(S, S.PC);
13990 if (!Dec<PT_FixedPoint>(S, OpPC, V0)) return false;
13991 }
13992#if USE_TAILCALLS
13993 MUSTTAIL return InterpNext(S);
13994#else
13995 return true;
13996#endif
13997}
13998#endif
13999#ifdef GET_DISASM
14000case OP_DecSint8:
14001 Text.Op = PrintName("DecSint8");
14002 Text.Args.push_back(printArg<bool>(PC));
14003 break;
14004case OP_DecUint8:
14005 Text.Op = PrintName("DecUint8");
14006 Text.Args.push_back(printArg<bool>(PC));
14007 break;
14008case OP_DecSint16:
14009 Text.Op = PrintName("DecSint16");
14010 Text.Args.push_back(printArg<bool>(PC));
14011 break;
14012case OP_DecUint16:
14013 Text.Op = PrintName("DecUint16");
14014 Text.Args.push_back(printArg<bool>(PC));
14015 break;
14016case OP_DecSint32:
14017 Text.Op = PrintName("DecSint32");
14018 Text.Args.push_back(printArg<bool>(PC));
14019 break;
14020case OP_DecUint32:
14021 Text.Op = PrintName("DecUint32");
14022 Text.Args.push_back(printArg<bool>(PC));
14023 break;
14024case OP_DecSint64:
14025 Text.Op = PrintName("DecSint64");
14026 Text.Args.push_back(printArg<bool>(PC));
14027 break;
14028case OP_DecUint64:
14029 Text.Op = PrintName("DecUint64");
14030 Text.Args.push_back(printArg<bool>(PC));
14031 break;
14032case OP_DecIntAP:
14033 Text.Op = PrintName("DecIntAP");
14034 Text.Args.push_back(printArg<bool>(PC));
14035 break;
14036case OP_DecIntAPS:
14037 Text.Op = PrintName("DecIntAPS");
14038 Text.Args.push_back(printArg<bool>(PC));
14039 break;
14040case OP_DecBool:
14041 Text.Op = PrintName("DecBool");
14042 Text.Args.push_back(printArg<bool>(PC));
14043 break;
14044case OP_DecFixedPoint:
14045 Text.Op = PrintName("DecFixedPoint");
14046 Text.Args.push_back(printArg<bool>(PC));
14047 break;
14048#endif
14049#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14050bool emitDecSint8( bool , SourceInfo);
14051bool emitDecUint8( bool , SourceInfo);
14052bool emitDecSint16( bool , SourceInfo);
14053bool emitDecUint16( bool , SourceInfo);
14054bool emitDecSint32( bool , SourceInfo);
14055bool emitDecUint32( bool , SourceInfo);
14056bool emitDecSint64( bool , SourceInfo);
14057bool emitDecUint64( bool , SourceInfo);
14058bool emitDecIntAP( bool , SourceInfo);
14059bool emitDecIntAPS( bool , SourceInfo);
14060bool emitDecBool( bool , SourceInfo);
14061bool emitDecFixedPoint( bool , SourceInfo);
14062#endif
14063#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14064[[nodiscard]] bool emitDec(PrimType, bool, SourceInfo I);
14065#endif
14066#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
14067bool
14068#if defined(GET_EVAL_IMPL)
14069EvalEmitter
14070#else
14071ByteCodeEmitter
14072#endif
14073::emitDec(PrimType T0, bool A0, SourceInfo I) {
14074 switch (T0) {
14075 case PT_Sint8:
14076 return emitDecSint8(A0, I);
14077 case PT_Uint8:
14078 return emitDecUint8(A0, I);
14079 case PT_Sint16:
14080 return emitDecSint16(A0, I);
14081 case PT_Uint16:
14082 return emitDecUint16(A0, I);
14083 case PT_Sint32:
14084 return emitDecSint32(A0, I);
14085 case PT_Uint32:
14086 return emitDecUint32(A0, I);
14087 case PT_Sint64:
14088 return emitDecSint64(A0, I);
14089 case PT_Uint64:
14090 return emitDecUint64(A0, I);
14091 case PT_IntAP:
14092 return emitDecIntAP(A0, I);
14093 case PT_IntAPS:
14094 return emitDecIntAPS(A0, I);
14095 case PT_Bool:
14096 return emitDecBool(A0, I);
14097 case PT_FixedPoint:
14098 return emitDecFixedPoint(A0, I);
14099 default: llvm_unreachable("invalid type: emitDec");
14100 }
14101 llvm_unreachable("invalid enum value");
14102}
14103#endif
14104#ifdef GET_LINK_IMPL
14105bool ByteCodeEmitter::emitDecSint8( bool A0, SourceInfo L) {
14106 return emitOp<bool>(OP_DecSint8, A0, L);
14107}
14108bool ByteCodeEmitter::emitDecUint8( bool A0, SourceInfo L) {
14109 return emitOp<bool>(OP_DecUint8, A0, L);
14110}
14111bool ByteCodeEmitter::emitDecSint16( bool A0, SourceInfo L) {
14112 return emitOp<bool>(OP_DecSint16, A0, L);
14113}
14114bool ByteCodeEmitter::emitDecUint16( bool A0, SourceInfo L) {
14115 return emitOp<bool>(OP_DecUint16, A0, L);
14116}
14117bool ByteCodeEmitter::emitDecSint32( bool A0, SourceInfo L) {
14118 return emitOp<bool>(OP_DecSint32, A0, L);
14119}
14120bool ByteCodeEmitter::emitDecUint32( bool A0, SourceInfo L) {
14121 return emitOp<bool>(OP_DecUint32, A0, L);
14122}
14123bool ByteCodeEmitter::emitDecSint64( bool A0, SourceInfo L) {
14124 return emitOp<bool>(OP_DecSint64, A0, L);
14125}
14126bool ByteCodeEmitter::emitDecUint64( bool A0, SourceInfo L) {
14127 return emitOp<bool>(OP_DecUint64, A0, L);
14128}
14129bool ByteCodeEmitter::emitDecIntAP( bool A0, SourceInfo L) {
14130 return emitOp<bool>(OP_DecIntAP, A0, L);
14131}
14132bool ByteCodeEmitter::emitDecIntAPS( bool A0, SourceInfo L) {
14133 return emitOp<bool>(OP_DecIntAPS, A0, L);
14134}
14135bool ByteCodeEmitter::emitDecBool( bool A0, SourceInfo L) {
14136 return emitOp<bool>(OP_DecBool, A0, L);
14137}
14138bool ByteCodeEmitter::emitDecFixedPoint( bool A0, SourceInfo L) {
14139 return emitOp<bool>(OP_DecFixedPoint, A0, L);
14140}
14141#endif
14142#ifdef GET_EVAL_IMPL
14143bool EvalEmitter::emitDecSint8( bool A0, SourceInfo L) {
14144 if (!isActive()) return true;
14145 CurrentSource = L;
14146 return Dec<PT_Sint8>(S, CodePtr(), A0);
14147}
14148bool EvalEmitter::emitDecUint8( bool A0, SourceInfo L) {
14149 if (!isActive()) return true;
14150 CurrentSource = L;
14151 return Dec<PT_Uint8>(S, CodePtr(), A0);
14152}
14153bool EvalEmitter::emitDecSint16( bool A0, SourceInfo L) {
14154 if (!isActive()) return true;
14155 CurrentSource = L;
14156 return Dec<PT_Sint16>(S, CodePtr(), A0);
14157}
14158bool EvalEmitter::emitDecUint16( bool A0, SourceInfo L) {
14159 if (!isActive()) return true;
14160 CurrentSource = L;
14161 return Dec<PT_Uint16>(S, CodePtr(), A0);
14162}
14163bool EvalEmitter::emitDecSint32( bool A0, SourceInfo L) {
14164 if (!isActive()) return true;
14165 CurrentSource = L;
14166 return Dec<PT_Sint32>(S, CodePtr(), A0);
14167}
14168bool EvalEmitter::emitDecUint32( bool A0, SourceInfo L) {
14169 if (!isActive()) return true;
14170 CurrentSource = L;
14171 return Dec<PT_Uint32>(S, CodePtr(), A0);
14172}
14173bool EvalEmitter::emitDecSint64( bool A0, SourceInfo L) {
14174 if (!isActive()) return true;
14175 CurrentSource = L;
14176 return Dec<PT_Sint64>(S, CodePtr(), A0);
14177}
14178bool EvalEmitter::emitDecUint64( bool A0, SourceInfo L) {
14179 if (!isActive()) return true;
14180 CurrentSource = L;
14181 return Dec<PT_Uint64>(S, CodePtr(), A0);
14182}
14183bool EvalEmitter::emitDecIntAP( bool A0, SourceInfo L) {
14184 if (!isActive()) return true;
14185 CurrentSource = L;
14186 return Dec<PT_IntAP>(S, CodePtr(), A0);
14187}
14188bool EvalEmitter::emitDecIntAPS( bool A0, SourceInfo L) {
14189 if (!isActive()) return true;
14190 CurrentSource = L;
14191 return Dec<PT_IntAPS>(S, CodePtr(), A0);
14192}
14193bool EvalEmitter::emitDecBool( bool A0, SourceInfo L) {
14194 if (!isActive()) return true;
14195 CurrentSource = L;
14196 return Dec<PT_Bool>(S, CodePtr(), A0);
14197}
14198bool EvalEmitter::emitDecFixedPoint( bool A0, SourceInfo L) {
14199 if (!isActive()) return true;
14200 CurrentSource = L;
14201 return Dec<PT_FixedPoint>(S, CodePtr(), A0);
14202}
14203#endif
14204#ifdef GET_OPCODE_NAMES
14205OP_DecBitfieldSint8,
14206OP_DecBitfieldUint8,
14207OP_DecBitfieldSint16,
14208OP_DecBitfieldUint16,
14209OP_DecBitfieldSint32,
14210OP_DecBitfieldUint32,
14211OP_DecBitfieldSint64,
14212OP_DecBitfieldUint64,
14213OP_DecBitfieldIntAP,
14214OP_DecBitfieldIntAPS,
14215OP_DecBitfieldBool,
14216OP_DecBitfieldFixedPoint,
14217#endif
14218#ifdef GET_INTERPFN_LIST
14219&Interp_DecBitfieldSint8,
14220&Interp_DecBitfieldUint8,
14221&Interp_DecBitfieldSint16,
14222&Interp_DecBitfieldUint16,
14223&Interp_DecBitfieldSint32,
14224&Interp_DecBitfieldUint32,
14225&Interp_DecBitfieldSint64,
14226&Interp_DecBitfieldUint64,
14227&Interp_DecBitfieldIntAP,
14228&Interp_DecBitfieldIntAPS,
14229&Interp_DecBitfieldBool,
14230&Interp_DecBitfieldFixedPoint,
14231#endif
14232#ifdef GET_INTERPFN_DISPATCHERS
14233PRESERVE_NONE
14234static bool Interp_DecBitfieldSint8(InterpState &S) {
14235 {
14236 CodePtr OpPC = S.PC;
14237 const auto V0 = ReadArg<bool>(S, S.PC);
14238 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14239 if (!DecBitfield<PT_Sint8>(S, OpPC, V0, V1)) return false;
14240 }
14241#if USE_TAILCALLS
14242 MUSTTAIL return InterpNext(S);
14243#else
14244 return true;
14245#endif
14246}
14247PRESERVE_NONE
14248static bool Interp_DecBitfieldUint8(InterpState &S) {
14249 {
14250 CodePtr OpPC = S.PC;
14251 const auto V0 = ReadArg<bool>(S, S.PC);
14252 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14253 if (!DecBitfield<PT_Uint8>(S, OpPC, V0, V1)) return false;
14254 }
14255#if USE_TAILCALLS
14256 MUSTTAIL return InterpNext(S);
14257#else
14258 return true;
14259#endif
14260}
14261PRESERVE_NONE
14262static bool Interp_DecBitfieldSint16(InterpState &S) {
14263 {
14264 CodePtr OpPC = S.PC;
14265 const auto V0 = ReadArg<bool>(S, S.PC);
14266 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14267 if (!DecBitfield<PT_Sint16>(S, OpPC, V0, V1)) return false;
14268 }
14269#if USE_TAILCALLS
14270 MUSTTAIL return InterpNext(S);
14271#else
14272 return true;
14273#endif
14274}
14275PRESERVE_NONE
14276static bool Interp_DecBitfieldUint16(InterpState &S) {
14277 {
14278 CodePtr OpPC = S.PC;
14279 const auto V0 = ReadArg<bool>(S, S.PC);
14280 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14281 if (!DecBitfield<PT_Uint16>(S, OpPC, V0, V1)) return false;
14282 }
14283#if USE_TAILCALLS
14284 MUSTTAIL return InterpNext(S);
14285#else
14286 return true;
14287#endif
14288}
14289PRESERVE_NONE
14290static bool Interp_DecBitfieldSint32(InterpState &S) {
14291 {
14292 CodePtr OpPC = S.PC;
14293 const auto V0 = ReadArg<bool>(S, S.PC);
14294 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14295 if (!DecBitfield<PT_Sint32>(S, OpPC, V0, V1)) return false;
14296 }
14297#if USE_TAILCALLS
14298 MUSTTAIL return InterpNext(S);
14299#else
14300 return true;
14301#endif
14302}
14303PRESERVE_NONE
14304static bool Interp_DecBitfieldUint32(InterpState &S) {
14305 {
14306 CodePtr OpPC = S.PC;
14307 const auto V0 = ReadArg<bool>(S, S.PC);
14308 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14309 if (!DecBitfield<PT_Uint32>(S, OpPC, V0, V1)) return false;
14310 }
14311#if USE_TAILCALLS
14312 MUSTTAIL return InterpNext(S);
14313#else
14314 return true;
14315#endif
14316}
14317PRESERVE_NONE
14318static bool Interp_DecBitfieldSint64(InterpState &S) {
14319 {
14320 CodePtr OpPC = S.PC;
14321 const auto V0 = ReadArg<bool>(S, S.PC);
14322 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14323 if (!DecBitfield<PT_Sint64>(S, OpPC, V0, V1)) return false;
14324 }
14325#if USE_TAILCALLS
14326 MUSTTAIL return InterpNext(S);
14327#else
14328 return true;
14329#endif
14330}
14331PRESERVE_NONE
14332static bool Interp_DecBitfieldUint64(InterpState &S) {
14333 {
14334 CodePtr OpPC = S.PC;
14335 const auto V0 = ReadArg<bool>(S, S.PC);
14336 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14337 if (!DecBitfield<PT_Uint64>(S, OpPC, V0, V1)) return false;
14338 }
14339#if USE_TAILCALLS
14340 MUSTTAIL return InterpNext(S);
14341#else
14342 return true;
14343#endif
14344}
14345PRESERVE_NONE
14346static bool Interp_DecBitfieldIntAP(InterpState &S) {
14347 {
14348 CodePtr OpPC = S.PC;
14349 const auto V0 = ReadArg<bool>(S, S.PC);
14350 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14351 if (!DecBitfield<PT_IntAP>(S, OpPC, V0, V1)) return false;
14352 }
14353#if USE_TAILCALLS
14354 MUSTTAIL return InterpNext(S);
14355#else
14356 return true;
14357#endif
14358}
14359PRESERVE_NONE
14360static bool Interp_DecBitfieldIntAPS(InterpState &S) {
14361 {
14362 CodePtr OpPC = S.PC;
14363 const auto V0 = ReadArg<bool>(S, S.PC);
14364 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14365 if (!DecBitfield<PT_IntAPS>(S, OpPC, V0, V1)) return false;
14366 }
14367#if USE_TAILCALLS
14368 MUSTTAIL return InterpNext(S);
14369#else
14370 return true;
14371#endif
14372}
14373PRESERVE_NONE
14374static bool Interp_DecBitfieldBool(InterpState &S) {
14375 {
14376 CodePtr OpPC = S.PC;
14377 const auto V0 = ReadArg<bool>(S, S.PC);
14378 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14379 if (!DecBitfield<PT_Bool>(S, OpPC, V0, V1)) return false;
14380 }
14381#if USE_TAILCALLS
14382 MUSTTAIL return InterpNext(S);
14383#else
14384 return true;
14385#endif
14386}
14387PRESERVE_NONE
14388static bool Interp_DecBitfieldFixedPoint(InterpState &S) {
14389 {
14390 CodePtr OpPC = S.PC;
14391 const auto V0 = ReadArg<bool>(S, S.PC);
14392 const auto V1 = ReadArg<uint32_t>(S, S.PC);
14393 if (!DecBitfield<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
14394 }
14395#if USE_TAILCALLS
14396 MUSTTAIL return InterpNext(S);
14397#else
14398 return true;
14399#endif
14400}
14401#endif
14402#ifdef GET_DISASM
14403case OP_DecBitfieldSint8:
14404 Text.Op = PrintName("DecBitfieldSint8");
14405 Text.Args.push_back(printArg<bool>(PC));
14406 Text.Args.push_back(printArg<uint32_t>(PC));
14407 break;
14408case OP_DecBitfieldUint8:
14409 Text.Op = PrintName("DecBitfieldUint8");
14410 Text.Args.push_back(printArg<bool>(PC));
14411 Text.Args.push_back(printArg<uint32_t>(PC));
14412 break;
14413case OP_DecBitfieldSint16:
14414 Text.Op = PrintName("DecBitfieldSint16");
14415 Text.Args.push_back(printArg<bool>(PC));
14416 Text.Args.push_back(printArg<uint32_t>(PC));
14417 break;
14418case OP_DecBitfieldUint16:
14419 Text.Op = PrintName("DecBitfieldUint16");
14420 Text.Args.push_back(printArg<bool>(PC));
14421 Text.Args.push_back(printArg<uint32_t>(PC));
14422 break;
14423case OP_DecBitfieldSint32:
14424 Text.Op = PrintName("DecBitfieldSint32");
14425 Text.Args.push_back(printArg<bool>(PC));
14426 Text.Args.push_back(printArg<uint32_t>(PC));
14427 break;
14428case OP_DecBitfieldUint32:
14429 Text.Op = PrintName("DecBitfieldUint32");
14430 Text.Args.push_back(printArg<bool>(PC));
14431 Text.Args.push_back(printArg<uint32_t>(PC));
14432 break;
14433case OP_DecBitfieldSint64:
14434 Text.Op = PrintName("DecBitfieldSint64");
14435 Text.Args.push_back(printArg<bool>(PC));
14436 Text.Args.push_back(printArg<uint32_t>(PC));
14437 break;
14438case OP_DecBitfieldUint64:
14439 Text.Op = PrintName("DecBitfieldUint64");
14440 Text.Args.push_back(printArg<bool>(PC));
14441 Text.Args.push_back(printArg<uint32_t>(PC));
14442 break;
14443case OP_DecBitfieldIntAP:
14444 Text.Op = PrintName("DecBitfieldIntAP");
14445 Text.Args.push_back(printArg<bool>(PC));
14446 Text.Args.push_back(printArg<uint32_t>(PC));
14447 break;
14448case OP_DecBitfieldIntAPS:
14449 Text.Op = PrintName("DecBitfieldIntAPS");
14450 Text.Args.push_back(printArg<bool>(PC));
14451 Text.Args.push_back(printArg<uint32_t>(PC));
14452 break;
14453case OP_DecBitfieldBool:
14454 Text.Op = PrintName("DecBitfieldBool");
14455 Text.Args.push_back(printArg<bool>(PC));
14456 Text.Args.push_back(printArg<uint32_t>(PC));
14457 break;
14458case OP_DecBitfieldFixedPoint:
14459 Text.Op = PrintName("DecBitfieldFixedPoint");
14460 Text.Args.push_back(printArg<bool>(PC));
14461 Text.Args.push_back(printArg<uint32_t>(PC));
14462 break;
14463#endif
14464#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14465bool emitDecBitfieldSint8( bool , uint32_t , SourceInfo);
14466bool emitDecBitfieldUint8( bool , uint32_t , SourceInfo);
14467bool emitDecBitfieldSint16( bool , uint32_t , SourceInfo);
14468bool emitDecBitfieldUint16( bool , uint32_t , SourceInfo);
14469bool emitDecBitfieldSint32( bool , uint32_t , SourceInfo);
14470bool emitDecBitfieldUint32( bool , uint32_t , SourceInfo);
14471bool emitDecBitfieldSint64( bool , uint32_t , SourceInfo);
14472bool emitDecBitfieldUint64( bool , uint32_t , SourceInfo);
14473bool emitDecBitfieldIntAP( bool , uint32_t , SourceInfo);
14474bool emitDecBitfieldIntAPS( bool , uint32_t , SourceInfo);
14475bool emitDecBitfieldBool( bool , uint32_t , SourceInfo);
14476bool emitDecBitfieldFixedPoint( bool , uint32_t , SourceInfo);
14477#endif
14478#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14479[[nodiscard]] bool emitDecBitfield(PrimType, bool, uint32_t, SourceInfo I);
14480#endif
14481#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
14482bool
14483#if defined(GET_EVAL_IMPL)
14484EvalEmitter
14485#else
14486ByteCodeEmitter
14487#endif
14488::emitDecBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
14489 switch (T0) {
14490 case PT_Sint8:
14491 return emitDecBitfieldSint8(A0, A1, I);
14492 case PT_Uint8:
14493 return emitDecBitfieldUint8(A0, A1, I);
14494 case PT_Sint16:
14495 return emitDecBitfieldSint16(A0, A1, I);
14496 case PT_Uint16:
14497 return emitDecBitfieldUint16(A0, A1, I);
14498 case PT_Sint32:
14499 return emitDecBitfieldSint32(A0, A1, I);
14500 case PT_Uint32:
14501 return emitDecBitfieldUint32(A0, A1, I);
14502 case PT_Sint64:
14503 return emitDecBitfieldSint64(A0, A1, I);
14504 case PT_Uint64:
14505 return emitDecBitfieldUint64(A0, A1, I);
14506 case PT_IntAP:
14507 return emitDecBitfieldIntAP(A0, A1, I);
14508 case PT_IntAPS:
14509 return emitDecBitfieldIntAPS(A0, A1, I);
14510 case PT_Bool:
14511 return emitDecBitfieldBool(A0, A1, I);
14512 case PT_FixedPoint:
14513 return emitDecBitfieldFixedPoint(A0, A1, I);
14514 default: llvm_unreachable("invalid type: emitDecBitfield");
14515 }
14516 llvm_unreachable("invalid enum value");
14517}
14518#endif
14519#ifdef GET_LINK_IMPL
14520bool ByteCodeEmitter::emitDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
14521 return emitOp<bool, uint32_t>(OP_DecBitfieldSint8, A0, A1, L);
14522}
14523bool ByteCodeEmitter::emitDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
14524 return emitOp<bool, uint32_t>(OP_DecBitfieldUint8, A0, A1, L);
14525}
14526bool ByteCodeEmitter::emitDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
14527 return emitOp<bool, uint32_t>(OP_DecBitfieldSint16, A0, A1, L);
14528}
14529bool ByteCodeEmitter::emitDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
14530 return emitOp<bool, uint32_t>(OP_DecBitfieldUint16, A0, A1, L);
14531}
14532bool ByteCodeEmitter::emitDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
14533 return emitOp<bool, uint32_t>(OP_DecBitfieldSint32, A0, A1, L);
14534}
14535bool ByteCodeEmitter::emitDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
14536 return emitOp<bool, uint32_t>(OP_DecBitfieldUint32, A0, A1, L);
14537}
14538bool ByteCodeEmitter::emitDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
14539 return emitOp<bool, uint32_t>(OP_DecBitfieldSint64, A0, A1, L);
14540}
14541bool ByteCodeEmitter::emitDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
14542 return emitOp<bool, uint32_t>(OP_DecBitfieldUint64, A0, A1, L);
14543}
14544bool ByteCodeEmitter::emitDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
14545 return emitOp<bool, uint32_t>(OP_DecBitfieldIntAP, A0, A1, L);
14546}
14547bool ByteCodeEmitter::emitDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
14548 return emitOp<bool, uint32_t>(OP_DecBitfieldIntAPS, A0, A1, L);
14549}
14550bool ByteCodeEmitter::emitDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
14551 return emitOp<bool, uint32_t>(OP_DecBitfieldBool, A0, A1, L);
14552}
14553bool ByteCodeEmitter::emitDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
14554 return emitOp<bool, uint32_t>(OP_DecBitfieldFixedPoint, A0, A1, L);
14555}
14556#endif
14557#ifdef GET_EVAL_IMPL
14558bool EvalEmitter::emitDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
14559 if (!isActive()) return true;
14560 CurrentSource = L;
14561 return DecBitfield<PT_Sint8>(S, CodePtr(), A0, A1);
14562}
14563bool EvalEmitter::emitDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
14564 if (!isActive()) return true;
14565 CurrentSource = L;
14566 return DecBitfield<PT_Uint8>(S, CodePtr(), A0, A1);
14567}
14568bool EvalEmitter::emitDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
14569 if (!isActive()) return true;
14570 CurrentSource = L;
14571 return DecBitfield<PT_Sint16>(S, CodePtr(), A0, A1);
14572}
14573bool EvalEmitter::emitDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
14574 if (!isActive()) return true;
14575 CurrentSource = L;
14576 return DecBitfield<PT_Uint16>(S, CodePtr(), A0, A1);
14577}
14578bool EvalEmitter::emitDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
14579 if (!isActive()) return true;
14580 CurrentSource = L;
14581 return DecBitfield<PT_Sint32>(S, CodePtr(), A0, A1);
14582}
14583bool EvalEmitter::emitDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
14584 if (!isActive()) return true;
14585 CurrentSource = L;
14586 return DecBitfield<PT_Uint32>(S, CodePtr(), A0, A1);
14587}
14588bool EvalEmitter::emitDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
14589 if (!isActive()) return true;
14590 CurrentSource = L;
14591 return DecBitfield<PT_Sint64>(S, CodePtr(), A0, A1);
14592}
14593bool EvalEmitter::emitDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
14594 if (!isActive()) return true;
14595 CurrentSource = L;
14596 return DecBitfield<PT_Uint64>(S, CodePtr(), A0, A1);
14597}
14598bool EvalEmitter::emitDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
14599 if (!isActive()) return true;
14600 CurrentSource = L;
14601 return DecBitfield<PT_IntAP>(S, CodePtr(), A0, A1);
14602}
14603bool EvalEmitter::emitDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
14604 if (!isActive()) return true;
14605 CurrentSource = L;
14606 return DecBitfield<PT_IntAPS>(S, CodePtr(), A0, A1);
14607}
14608bool EvalEmitter::emitDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
14609 if (!isActive()) return true;
14610 CurrentSource = L;
14611 return DecBitfield<PT_Bool>(S, CodePtr(), A0, A1);
14612}
14613bool EvalEmitter::emitDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
14614 if (!isActive()) return true;
14615 CurrentSource = L;
14616 return DecBitfield<PT_FixedPoint>(S, CodePtr(), A0, A1);
14617}
14618#endif
14619#ifdef GET_OPCODE_NAMES
14620OP_DecPopSint8,
14621OP_DecPopUint8,
14622OP_DecPopSint16,
14623OP_DecPopUint16,
14624OP_DecPopSint32,
14625OP_DecPopUint32,
14626OP_DecPopSint64,
14627OP_DecPopUint64,
14628OP_DecPopIntAP,
14629OP_DecPopIntAPS,
14630OP_DecPopBool,
14631OP_DecPopFixedPoint,
14632#endif
14633#ifdef GET_INTERPFN_LIST
14634&Interp_DecPopSint8,
14635&Interp_DecPopUint8,
14636&Interp_DecPopSint16,
14637&Interp_DecPopUint16,
14638&Interp_DecPopSint32,
14639&Interp_DecPopUint32,
14640&Interp_DecPopSint64,
14641&Interp_DecPopUint64,
14642&Interp_DecPopIntAP,
14643&Interp_DecPopIntAPS,
14644&Interp_DecPopBool,
14645&Interp_DecPopFixedPoint,
14646#endif
14647#ifdef GET_INTERPFN_DISPATCHERS
14648PRESERVE_NONE
14649static bool Interp_DecPopSint8(InterpState &S) {
14650 {
14651 CodePtr OpPC = S.PC;
14652 const auto V0 = ReadArg<bool>(S, S.PC);
14653 if (!DecPop<PT_Sint8>(S, OpPC, V0)) return false;
14654 }
14655#if USE_TAILCALLS
14656 MUSTTAIL return InterpNext(S);
14657#else
14658 return true;
14659#endif
14660}
14661PRESERVE_NONE
14662static bool Interp_DecPopUint8(InterpState &S) {
14663 {
14664 CodePtr OpPC = S.PC;
14665 const auto V0 = ReadArg<bool>(S, S.PC);
14666 if (!DecPop<PT_Uint8>(S, OpPC, V0)) return false;
14667 }
14668#if USE_TAILCALLS
14669 MUSTTAIL return InterpNext(S);
14670#else
14671 return true;
14672#endif
14673}
14674PRESERVE_NONE
14675static bool Interp_DecPopSint16(InterpState &S) {
14676 {
14677 CodePtr OpPC = S.PC;
14678 const auto V0 = ReadArg<bool>(S, S.PC);
14679 if (!DecPop<PT_Sint16>(S, OpPC, V0)) return false;
14680 }
14681#if USE_TAILCALLS
14682 MUSTTAIL return InterpNext(S);
14683#else
14684 return true;
14685#endif
14686}
14687PRESERVE_NONE
14688static bool Interp_DecPopUint16(InterpState &S) {
14689 {
14690 CodePtr OpPC = S.PC;
14691 const auto V0 = ReadArg<bool>(S, S.PC);
14692 if (!DecPop<PT_Uint16>(S, OpPC, V0)) return false;
14693 }
14694#if USE_TAILCALLS
14695 MUSTTAIL return InterpNext(S);
14696#else
14697 return true;
14698#endif
14699}
14700PRESERVE_NONE
14701static bool Interp_DecPopSint32(InterpState &S) {
14702 {
14703 CodePtr OpPC = S.PC;
14704 const auto V0 = ReadArg<bool>(S, S.PC);
14705 if (!DecPop<PT_Sint32>(S, OpPC, V0)) return false;
14706 }
14707#if USE_TAILCALLS
14708 MUSTTAIL return InterpNext(S);
14709#else
14710 return true;
14711#endif
14712}
14713PRESERVE_NONE
14714static bool Interp_DecPopUint32(InterpState &S) {
14715 {
14716 CodePtr OpPC = S.PC;
14717 const auto V0 = ReadArg<bool>(S, S.PC);
14718 if (!DecPop<PT_Uint32>(S, OpPC, V0)) return false;
14719 }
14720#if USE_TAILCALLS
14721 MUSTTAIL return InterpNext(S);
14722#else
14723 return true;
14724#endif
14725}
14726PRESERVE_NONE
14727static bool Interp_DecPopSint64(InterpState &S) {
14728 {
14729 CodePtr OpPC = S.PC;
14730 const auto V0 = ReadArg<bool>(S, S.PC);
14731 if (!DecPop<PT_Sint64>(S, OpPC, V0)) return false;
14732 }
14733#if USE_TAILCALLS
14734 MUSTTAIL return InterpNext(S);
14735#else
14736 return true;
14737#endif
14738}
14739PRESERVE_NONE
14740static bool Interp_DecPopUint64(InterpState &S) {
14741 {
14742 CodePtr OpPC = S.PC;
14743 const auto V0 = ReadArg<bool>(S, S.PC);
14744 if (!DecPop<PT_Uint64>(S, OpPC, V0)) return false;
14745 }
14746#if USE_TAILCALLS
14747 MUSTTAIL return InterpNext(S);
14748#else
14749 return true;
14750#endif
14751}
14752PRESERVE_NONE
14753static bool Interp_DecPopIntAP(InterpState &S) {
14754 {
14755 CodePtr OpPC = S.PC;
14756 const auto V0 = ReadArg<bool>(S, S.PC);
14757 if (!DecPop<PT_IntAP>(S, OpPC, V0)) return false;
14758 }
14759#if USE_TAILCALLS
14760 MUSTTAIL return InterpNext(S);
14761#else
14762 return true;
14763#endif
14764}
14765PRESERVE_NONE
14766static bool Interp_DecPopIntAPS(InterpState &S) {
14767 {
14768 CodePtr OpPC = S.PC;
14769 const auto V0 = ReadArg<bool>(S, S.PC);
14770 if (!DecPop<PT_IntAPS>(S, OpPC, V0)) return false;
14771 }
14772#if USE_TAILCALLS
14773 MUSTTAIL return InterpNext(S);
14774#else
14775 return true;
14776#endif
14777}
14778PRESERVE_NONE
14779static bool Interp_DecPopBool(InterpState &S) {
14780 {
14781 CodePtr OpPC = S.PC;
14782 const auto V0 = ReadArg<bool>(S, S.PC);
14783 if (!DecPop<PT_Bool>(S, OpPC, V0)) return false;
14784 }
14785#if USE_TAILCALLS
14786 MUSTTAIL return InterpNext(S);
14787#else
14788 return true;
14789#endif
14790}
14791PRESERVE_NONE
14792static bool Interp_DecPopFixedPoint(InterpState &S) {
14793 {
14794 CodePtr OpPC = S.PC;
14795 const auto V0 = ReadArg<bool>(S, S.PC);
14796 if (!DecPop<PT_FixedPoint>(S, OpPC, V0)) return false;
14797 }
14798#if USE_TAILCALLS
14799 MUSTTAIL return InterpNext(S);
14800#else
14801 return true;
14802#endif
14803}
14804#endif
14805#ifdef GET_DISASM
14806case OP_DecPopSint8:
14807 Text.Op = PrintName("DecPopSint8");
14808 Text.Args.push_back(printArg<bool>(PC));
14809 break;
14810case OP_DecPopUint8:
14811 Text.Op = PrintName("DecPopUint8");
14812 Text.Args.push_back(printArg<bool>(PC));
14813 break;
14814case OP_DecPopSint16:
14815 Text.Op = PrintName("DecPopSint16");
14816 Text.Args.push_back(printArg<bool>(PC));
14817 break;
14818case OP_DecPopUint16:
14819 Text.Op = PrintName("DecPopUint16");
14820 Text.Args.push_back(printArg<bool>(PC));
14821 break;
14822case OP_DecPopSint32:
14823 Text.Op = PrintName("DecPopSint32");
14824 Text.Args.push_back(printArg<bool>(PC));
14825 break;
14826case OP_DecPopUint32:
14827 Text.Op = PrintName("DecPopUint32");
14828 Text.Args.push_back(printArg<bool>(PC));
14829 break;
14830case OP_DecPopSint64:
14831 Text.Op = PrintName("DecPopSint64");
14832 Text.Args.push_back(printArg<bool>(PC));
14833 break;
14834case OP_DecPopUint64:
14835 Text.Op = PrintName("DecPopUint64");
14836 Text.Args.push_back(printArg<bool>(PC));
14837 break;
14838case OP_DecPopIntAP:
14839 Text.Op = PrintName("DecPopIntAP");
14840 Text.Args.push_back(printArg<bool>(PC));
14841 break;
14842case OP_DecPopIntAPS:
14843 Text.Op = PrintName("DecPopIntAPS");
14844 Text.Args.push_back(printArg<bool>(PC));
14845 break;
14846case OP_DecPopBool:
14847 Text.Op = PrintName("DecPopBool");
14848 Text.Args.push_back(printArg<bool>(PC));
14849 break;
14850case OP_DecPopFixedPoint:
14851 Text.Op = PrintName("DecPopFixedPoint");
14852 Text.Args.push_back(printArg<bool>(PC));
14853 break;
14854#endif
14855#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14856bool emitDecPopSint8( bool , SourceInfo);
14857bool emitDecPopUint8( bool , SourceInfo);
14858bool emitDecPopSint16( bool , SourceInfo);
14859bool emitDecPopUint16( bool , SourceInfo);
14860bool emitDecPopSint32( bool , SourceInfo);
14861bool emitDecPopUint32( bool , SourceInfo);
14862bool emitDecPopSint64( bool , SourceInfo);
14863bool emitDecPopUint64( bool , SourceInfo);
14864bool emitDecPopIntAP( bool , SourceInfo);
14865bool emitDecPopIntAPS( bool , SourceInfo);
14866bool emitDecPopBool( bool , SourceInfo);
14867bool emitDecPopFixedPoint( bool , SourceInfo);
14868#endif
14869#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14870[[nodiscard]] bool emitDecPop(PrimType, bool, SourceInfo I);
14871#endif
14872#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
14873bool
14874#if defined(GET_EVAL_IMPL)
14875EvalEmitter
14876#else
14877ByteCodeEmitter
14878#endif
14879::emitDecPop(PrimType T0, bool A0, SourceInfo I) {
14880 switch (T0) {
14881 case PT_Sint8:
14882 return emitDecPopSint8(A0, I);
14883 case PT_Uint8:
14884 return emitDecPopUint8(A0, I);
14885 case PT_Sint16:
14886 return emitDecPopSint16(A0, I);
14887 case PT_Uint16:
14888 return emitDecPopUint16(A0, I);
14889 case PT_Sint32:
14890 return emitDecPopSint32(A0, I);
14891 case PT_Uint32:
14892 return emitDecPopUint32(A0, I);
14893 case PT_Sint64:
14894 return emitDecPopSint64(A0, I);
14895 case PT_Uint64:
14896 return emitDecPopUint64(A0, I);
14897 case PT_IntAP:
14898 return emitDecPopIntAP(A0, I);
14899 case PT_IntAPS:
14900 return emitDecPopIntAPS(A0, I);
14901 case PT_Bool:
14902 return emitDecPopBool(A0, I);
14903 case PT_FixedPoint:
14904 return emitDecPopFixedPoint(A0, I);
14905 default: llvm_unreachable("invalid type: emitDecPop");
14906 }
14907 llvm_unreachable("invalid enum value");
14908}
14909#endif
14910#ifdef GET_LINK_IMPL
14911bool ByteCodeEmitter::emitDecPopSint8( bool A0, SourceInfo L) {
14912 return emitOp<bool>(OP_DecPopSint8, A0, L);
14913}
14914bool ByteCodeEmitter::emitDecPopUint8( bool A0, SourceInfo L) {
14915 return emitOp<bool>(OP_DecPopUint8, A0, L);
14916}
14917bool ByteCodeEmitter::emitDecPopSint16( bool A0, SourceInfo L) {
14918 return emitOp<bool>(OP_DecPopSint16, A0, L);
14919}
14920bool ByteCodeEmitter::emitDecPopUint16( bool A0, SourceInfo L) {
14921 return emitOp<bool>(OP_DecPopUint16, A0, L);
14922}
14923bool ByteCodeEmitter::emitDecPopSint32( bool A0, SourceInfo L) {
14924 return emitOp<bool>(OP_DecPopSint32, A0, L);
14925}
14926bool ByteCodeEmitter::emitDecPopUint32( bool A0, SourceInfo L) {
14927 return emitOp<bool>(OP_DecPopUint32, A0, L);
14928}
14929bool ByteCodeEmitter::emitDecPopSint64( bool A0, SourceInfo L) {
14930 return emitOp<bool>(OP_DecPopSint64, A0, L);
14931}
14932bool ByteCodeEmitter::emitDecPopUint64( bool A0, SourceInfo L) {
14933 return emitOp<bool>(OP_DecPopUint64, A0, L);
14934}
14935bool ByteCodeEmitter::emitDecPopIntAP( bool A0, SourceInfo L) {
14936 return emitOp<bool>(OP_DecPopIntAP, A0, L);
14937}
14938bool ByteCodeEmitter::emitDecPopIntAPS( bool A0, SourceInfo L) {
14939 return emitOp<bool>(OP_DecPopIntAPS, A0, L);
14940}
14941bool ByteCodeEmitter::emitDecPopBool( bool A0, SourceInfo L) {
14942 return emitOp<bool>(OP_DecPopBool, A0, L);
14943}
14944bool ByteCodeEmitter::emitDecPopFixedPoint( bool A0, SourceInfo L) {
14945 return emitOp<bool>(OP_DecPopFixedPoint, A0, L);
14946}
14947#endif
14948#ifdef GET_EVAL_IMPL
14949bool EvalEmitter::emitDecPopSint8( bool A0, SourceInfo L) {
14950 if (!isActive()) return true;
14951 CurrentSource = L;
14952 return DecPop<PT_Sint8>(S, CodePtr(), A0);
14953}
14954bool EvalEmitter::emitDecPopUint8( bool A0, SourceInfo L) {
14955 if (!isActive()) return true;
14956 CurrentSource = L;
14957 return DecPop<PT_Uint8>(S, CodePtr(), A0);
14958}
14959bool EvalEmitter::emitDecPopSint16( bool A0, SourceInfo L) {
14960 if (!isActive()) return true;
14961 CurrentSource = L;
14962 return DecPop<PT_Sint16>(S, CodePtr(), A0);
14963}
14964bool EvalEmitter::emitDecPopUint16( bool A0, SourceInfo L) {
14965 if (!isActive()) return true;
14966 CurrentSource = L;
14967 return DecPop<PT_Uint16>(S, CodePtr(), A0);
14968}
14969bool EvalEmitter::emitDecPopSint32( bool A0, SourceInfo L) {
14970 if (!isActive()) return true;
14971 CurrentSource = L;
14972 return DecPop<PT_Sint32>(S, CodePtr(), A0);
14973}
14974bool EvalEmitter::emitDecPopUint32( bool A0, SourceInfo L) {
14975 if (!isActive()) return true;
14976 CurrentSource = L;
14977 return DecPop<PT_Uint32>(S, CodePtr(), A0);
14978}
14979bool EvalEmitter::emitDecPopSint64( bool A0, SourceInfo L) {
14980 if (!isActive()) return true;
14981 CurrentSource = L;
14982 return DecPop<PT_Sint64>(S, CodePtr(), A0);
14983}
14984bool EvalEmitter::emitDecPopUint64( bool A0, SourceInfo L) {
14985 if (!isActive()) return true;
14986 CurrentSource = L;
14987 return DecPop<PT_Uint64>(S, CodePtr(), A0);
14988}
14989bool EvalEmitter::emitDecPopIntAP( bool A0, SourceInfo L) {
14990 if (!isActive()) return true;
14991 CurrentSource = L;
14992 return DecPop<PT_IntAP>(S, CodePtr(), A0);
14993}
14994bool EvalEmitter::emitDecPopIntAPS( bool A0, SourceInfo L) {
14995 if (!isActive()) return true;
14996 CurrentSource = L;
14997 return DecPop<PT_IntAPS>(S, CodePtr(), A0);
14998}
14999bool EvalEmitter::emitDecPopBool( bool A0, SourceInfo L) {
15000 if (!isActive()) return true;
15001 CurrentSource = L;
15002 return DecPop<PT_Bool>(S, CodePtr(), A0);
15003}
15004bool EvalEmitter::emitDecPopFixedPoint( bool A0, SourceInfo L) {
15005 if (!isActive()) return true;
15006 CurrentSource = L;
15007 return DecPop<PT_FixedPoint>(S, CodePtr(), A0);
15008}
15009#endif
15010#ifdef GET_OPCODE_NAMES
15011OP_DecPopBitfieldSint8,
15012OP_DecPopBitfieldUint8,
15013OP_DecPopBitfieldSint16,
15014OP_DecPopBitfieldUint16,
15015OP_DecPopBitfieldSint32,
15016OP_DecPopBitfieldUint32,
15017OP_DecPopBitfieldSint64,
15018OP_DecPopBitfieldUint64,
15019OP_DecPopBitfieldIntAP,
15020OP_DecPopBitfieldIntAPS,
15021OP_DecPopBitfieldBool,
15022OP_DecPopBitfieldFixedPoint,
15023#endif
15024#ifdef GET_INTERPFN_LIST
15025&Interp_DecPopBitfieldSint8,
15026&Interp_DecPopBitfieldUint8,
15027&Interp_DecPopBitfieldSint16,
15028&Interp_DecPopBitfieldUint16,
15029&Interp_DecPopBitfieldSint32,
15030&Interp_DecPopBitfieldUint32,
15031&Interp_DecPopBitfieldSint64,
15032&Interp_DecPopBitfieldUint64,
15033&Interp_DecPopBitfieldIntAP,
15034&Interp_DecPopBitfieldIntAPS,
15035&Interp_DecPopBitfieldBool,
15036&Interp_DecPopBitfieldFixedPoint,
15037#endif
15038#ifdef GET_INTERPFN_DISPATCHERS
15039PRESERVE_NONE
15040static bool Interp_DecPopBitfieldSint8(InterpState &S) {
15041 {
15042 CodePtr OpPC = S.PC;
15043 const auto V0 = ReadArg<bool>(S, S.PC);
15044 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15045 if (!DecPopBitfield<PT_Sint8>(S, OpPC, V0, V1)) return false;
15046 }
15047#if USE_TAILCALLS
15048 MUSTTAIL return InterpNext(S);
15049#else
15050 return true;
15051#endif
15052}
15053PRESERVE_NONE
15054static bool Interp_DecPopBitfieldUint8(InterpState &S) {
15055 {
15056 CodePtr OpPC = S.PC;
15057 const auto V0 = ReadArg<bool>(S, S.PC);
15058 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15059 if (!DecPopBitfield<PT_Uint8>(S, OpPC, V0, V1)) return false;
15060 }
15061#if USE_TAILCALLS
15062 MUSTTAIL return InterpNext(S);
15063#else
15064 return true;
15065#endif
15066}
15067PRESERVE_NONE
15068static bool Interp_DecPopBitfieldSint16(InterpState &S) {
15069 {
15070 CodePtr OpPC = S.PC;
15071 const auto V0 = ReadArg<bool>(S, S.PC);
15072 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15073 if (!DecPopBitfield<PT_Sint16>(S, OpPC, V0, V1)) return false;
15074 }
15075#if USE_TAILCALLS
15076 MUSTTAIL return InterpNext(S);
15077#else
15078 return true;
15079#endif
15080}
15081PRESERVE_NONE
15082static bool Interp_DecPopBitfieldUint16(InterpState &S) {
15083 {
15084 CodePtr OpPC = S.PC;
15085 const auto V0 = ReadArg<bool>(S, S.PC);
15086 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15087 if (!DecPopBitfield<PT_Uint16>(S, OpPC, V0, V1)) return false;
15088 }
15089#if USE_TAILCALLS
15090 MUSTTAIL return InterpNext(S);
15091#else
15092 return true;
15093#endif
15094}
15095PRESERVE_NONE
15096static bool Interp_DecPopBitfieldSint32(InterpState &S) {
15097 {
15098 CodePtr OpPC = S.PC;
15099 const auto V0 = ReadArg<bool>(S, S.PC);
15100 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15101 if (!DecPopBitfield<PT_Sint32>(S, OpPC, V0, V1)) return false;
15102 }
15103#if USE_TAILCALLS
15104 MUSTTAIL return InterpNext(S);
15105#else
15106 return true;
15107#endif
15108}
15109PRESERVE_NONE
15110static bool Interp_DecPopBitfieldUint32(InterpState &S) {
15111 {
15112 CodePtr OpPC = S.PC;
15113 const auto V0 = ReadArg<bool>(S, S.PC);
15114 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15115 if (!DecPopBitfield<PT_Uint32>(S, OpPC, V0, V1)) return false;
15116 }
15117#if USE_TAILCALLS
15118 MUSTTAIL return InterpNext(S);
15119#else
15120 return true;
15121#endif
15122}
15123PRESERVE_NONE
15124static bool Interp_DecPopBitfieldSint64(InterpState &S) {
15125 {
15126 CodePtr OpPC = S.PC;
15127 const auto V0 = ReadArg<bool>(S, S.PC);
15128 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15129 if (!DecPopBitfield<PT_Sint64>(S, OpPC, V0, V1)) return false;
15130 }
15131#if USE_TAILCALLS
15132 MUSTTAIL return InterpNext(S);
15133#else
15134 return true;
15135#endif
15136}
15137PRESERVE_NONE
15138static bool Interp_DecPopBitfieldUint64(InterpState &S) {
15139 {
15140 CodePtr OpPC = S.PC;
15141 const auto V0 = ReadArg<bool>(S, S.PC);
15142 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15143 if (!DecPopBitfield<PT_Uint64>(S, OpPC, V0, V1)) return false;
15144 }
15145#if USE_TAILCALLS
15146 MUSTTAIL return InterpNext(S);
15147#else
15148 return true;
15149#endif
15150}
15151PRESERVE_NONE
15152static bool Interp_DecPopBitfieldIntAP(InterpState &S) {
15153 {
15154 CodePtr OpPC = S.PC;
15155 const auto V0 = ReadArg<bool>(S, S.PC);
15156 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15157 if (!DecPopBitfield<PT_IntAP>(S, OpPC, V0, V1)) return false;
15158 }
15159#if USE_TAILCALLS
15160 MUSTTAIL return InterpNext(S);
15161#else
15162 return true;
15163#endif
15164}
15165PRESERVE_NONE
15166static bool Interp_DecPopBitfieldIntAPS(InterpState &S) {
15167 {
15168 CodePtr OpPC = S.PC;
15169 const auto V0 = ReadArg<bool>(S, S.PC);
15170 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15171 if (!DecPopBitfield<PT_IntAPS>(S, OpPC, V0, V1)) return false;
15172 }
15173#if USE_TAILCALLS
15174 MUSTTAIL return InterpNext(S);
15175#else
15176 return true;
15177#endif
15178}
15179PRESERVE_NONE
15180static bool Interp_DecPopBitfieldBool(InterpState &S) {
15181 {
15182 CodePtr OpPC = S.PC;
15183 const auto V0 = ReadArg<bool>(S, S.PC);
15184 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15185 if (!DecPopBitfield<PT_Bool>(S, OpPC, V0, V1)) return false;
15186 }
15187#if USE_TAILCALLS
15188 MUSTTAIL return InterpNext(S);
15189#else
15190 return true;
15191#endif
15192}
15193PRESERVE_NONE
15194static bool Interp_DecPopBitfieldFixedPoint(InterpState &S) {
15195 {
15196 CodePtr OpPC = S.PC;
15197 const auto V0 = ReadArg<bool>(S, S.PC);
15198 const auto V1 = ReadArg<uint32_t>(S, S.PC);
15199 if (!DecPopBitfield<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
15200 }
15201#if USE_TAILCALLS
15202 MUSTTAIL return InterpNext(S);
15203#else
15204 return true;
15205#endif
15206}
15207#endif
15208#ifdef GET_DISASM
15209case OP_DecPopBitfieldSint8:
15210 Text.Op = PrintName("DecPopBitfieldSint8");
15211 Text.Args.push_back(printArg<bool>(PC));
15212 Text.Args.push_back(printArg<uint32_t>(PC));
15213 break;
15214case OP_DecPopBitfieldUint8:
15215 Text.Op = PrintName("DecPopBitfieldUint8");
15216 Text.Args.push_back(printArg<bool>(PC));
15217 Text.Args.push_back(printArg<uint32_t>(PC));
15218 break;
15219case OP_DecPopBitfieldSint16:
15220 Text.Op = PrintName("DecPopBitfieldSint16");
15221 Text.Args.push_back(printArg<bool>(PC));
15222 Text.Args.push_back(printArg<uint32_t>(PC));
15223 break;
15224case OP_DecPopBitfieldUint16:
15225 Text.Op = PrintName("DecPopBitfieldUint16");
15226 Text.Args.push_back(printArg<bool>(PC));
15227 Text.Args.push_back(printArg<uint32_t>(PC));
15228 break;
15229case OP_DecPopBitfieldSint32:
15230 Text.Op = PrintName("DecPopBitfieldSint32");
15231 Text.Args.push_back(printArg<bool>(PC));
15232 Text.Args.push_back(printArg<uint32_t>(PC));
15233 break;
15234case OP_DecPopBitfieldUint32:
15235 Text.Op = PrintName("DecPopBitfieldUint32");
15236 Text.Args.push_back(printArg<bool>(PC));
15237 Text.Args.push_back(printArg<uint32_t>(PC));
15238 break;
15239case OP_DecPopBitfieldSint64:
15240 Text.Op = PrintName("DecPopBitfieldSint64");
15241 Text.Args.push_back(printArg<bool>(PC));
15242 Text.Args.push_back(printArg<uint32_t>(PC));
15243 break;
15244case OP_DecPopBitfieldUint64:
15245 Text.Op = PrintName("DecPopBitfieldUint64");
15246 Text.Args.push_back(printArg<bool>(PC));
15247 Text.Args.push_back(printArg<uint32_t>(PC));
15248 break;
15249case OP_DecPopBitfieldIntAP:
15250 Text.Op = PrintName("DecPopBitfieldIntAP");
15251 Text.Args.push_back(printArg<bool>(PC));
15252 Text.Args.push_back(printArg<uint32_t>(PC));
15253 break;
15254case OP_DecPopBitfieldIntAPS:
15255 Text.Op = PrintName("DecPopBitfieldIntAPS");
15256 Text.Args.push_back(printArg<bool>(PC));
15257 Text.Args.push_back(printArg<uint32_t>(PC));
15258 break;
15259case OP_DecPopBitfieldBool:
15260 Text.Op = PrintName("DecPopBitfieldBool");
15261 Text.Args.push_back(printArg<bool>(PC));
15262 Text.Args.push_back(printArg<uint32_t>(PC));
15263 break;
15264case OP_DecPopBitfieldFixedPoint:
15265 Text.Op = PrintName("DecPopBitfieldFixedPoint");
15266 Text.Args.push_back(printArg<bool>(PC));
15267 Text.Args.push_back(printArg<uint32_t>(PC));
15268 break;
15269#endif
15270#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15271bool emitDecPopBitfieldSint8( bool , uint32_t , SourceInfo);
15272bool emitDecPopBitfieldUint8( bool , uint32_t , SourceInfo);
15273bool emitDecPopBitfieldSint16( bool , uint32_t , SourceInfo);
15274bool emitDecPopBitfieldUint16( bool , uint32_t , SourceInfo);
15275bool emitDecPopBitfieldSint32( bool , uint32_t , SourceInfo);
15276bool emitDecPopBitfieldUint32( bool , uint32_t , SourceInfo);
15277bool emitDecPopBitfieldSint64( bool , uint32_t , SourceInfo);
15278bool emitDecPopBitfieldUint64( bool , uint32_t , SourceInfo);
15279bool emitDecPopBitfieldIntAP( bool , uint32_t , SourceInfo);
15280bool emitDecPopBitfieldIntAPS( bool , uint32_t , SourceInfo);
15281bool emitDecPopBitfieldBool( bool , uint32_t , SourceInfo);
15282bool emitDecPopBitfieldFixedPoint( bool , uint32_t , SourceInfo);
15283#endif
15284#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15285[[nodiscard]] bool emitDecPopBitfield(PrimType, bool, uint32_t, SourceInfo I);
15286#endif
15287#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
15288bool
15289#if defined(GET_EVAL_IMPL)
15290EvalEmitter
15291#else
15292ByteCodeEmitter
15293#endif
15294::emitDecPopBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
15295 switch (T0) {
15296 case PT_Sint8:
15297 return emitDecPopBitfieldSint8(A0, A1, I);
15298 case PT_Uint8:
15299 return emitDecPopBitfieldUint8(A0, A1, I);
15300 case PT_Sint16:
15301 return emitDecPopBitfieldSint16(A0, A1, I);
15302 case PT_Uint16:
15303 return emitDecPopBitfieldUint16(A0, A1, I);
15304 case PT_Sint32:
15305 return emitDecPopBitfieldSint32(A0, A1, I);
15306 case PT_Uint32:
15307 return emitDecPopBitfieldUint32(A0, A1, I);
15308 case PT_Sint64:
15309 return emitDecPopBitfieldSint64(A0, A1, I);
15310 case PT_Uint64:
15311 return emitDecPopBitfieldUint64(A0, A1, I);
15312 case PT_IntAP:
15313 return emitDecPopBitfieldIntAP(A0, A1, I);
15314 case PT_IntAPS:
15315 return emitDecPopBitfieldIntAPS(A0, A1, I);
15316 case PT_Bool:
15317 return emitDecPopBitfieldBool(A0, A1, I);
15318 case PT_FixedPoint:
15319 return emitDecPopBitfieldFixedPoint(A0, A1, I);
15320 default: llvm_unreachable("invalid type: emitDecPopBitfield");
15321 }
15322 llvm_unreachable("invalid enum value");
15323}
15324#endif
15325#ifdef GET_LINK_IMPL
15326bool ByteCodeEmitter::emitDecPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
15327 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint8, A0, A1, L);
15328}
15329bool ByteCodeEmitter::emitDecPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
15330 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint8, A0, A1, L);
15331}
15332bool ByteCodeEmitter::emitDecPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
15333 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint16, A0, A1, L);
15334}
15335bool ByteCodeEmitter::emitDecPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
15336 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint16, A0, A1, L);
15337}
15338bool ByteCodeEmitter::emitDecPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
15339 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint32, A0, A1, L);
15340}
15341bool ByteCodeEmitter::emitDecPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
15342 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint32, A0, A1, L);
15343}
15344bool ByteCodeEmitter::emitDecPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
15345 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint64, A0, A1, L);
15346}
15347bool ByteCodeEmitter::emitDecPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
15348 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint64, A0, A1, L);
15349}
15350bool ByteCodeEmitter::emitDecPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
15351 return emitOp<bool, uint32_t>(OP_DecPopBitfieldIntAP, A0, A1, L);
15352}
15353bool ByteCodeEmitter::emitDecPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
15354 return emitOp<bool, uint32_t>(OP_DecPopBitfieldIntAPS, A0, A1, L);
15355}
15356bool ByteCodeEmitter::emitDecPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
15357 return emitOp<bool, uint32_t>(OP_DecPopBitfieldBool, A0, A1, L);
15358}
15359bool ByteCodeEmitter::emitDecPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
15360 return emitOp<bool, uint32_t>(OP_DecPopBitfieldFixedPoint, A0, A1, L);
15361}
15362#endif
15363#ifdef GET_EVAL_IMPL
15364bool EvalEmitter::emitDecPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
15365 if (!isActive()) return true;
15366 CurrentSource = L;
15367 return DecPopBitfield<PT_Sint8>(S, CodePtr(), A0, A1);
15368}
15369bool EvalEmitter::emitDecPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
15370 if (!isActive()) return true;
15371 CurrentSource = L;
15372 return DecPopBitfield<PT_Uint8>(S, CodePtr(), A0, A1);
15373}
15374bool EvalEmitter::emitDecPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
15375 if (!isActive()) return true;
15376 CurrentSource = L;
15377 return DecPopBitfield<PT_Sint16>(S, CodePtr(), A0, A1);
15378}
15379bool EvalEmitter::emitDecPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
15380 if (!isActive()) return true;
15381 CurrentSource = L;
15382 return DecPopBitfield<PT_Uint16>(S, CodePtr(), A0, A1);
15383}
15384bool EvalEmitter::emitDecPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
15385 if (!isActive()) return true;
15386 CurrentSource = L;
15387 return DecPopBitfield<PT_Sint32>(S, CodePtr(), A0, A1);
15388}
15389bool EvalEmitter::emitDecPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
15390 if (!isActive()) return true;
15391 CurrentSource = L;
15392 return DecPopBitfield<PT_Uint32>(S, CodePtr(), A0, A1);
15393}
15394bool EvalEmitter::emitDecPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
15395 if (!isActive()) return true;
15396 CurrentSource = L;
15397 return DecPopBitfield<PT_Sint64>(S, CodePtr(), A0, A1);
15398}
15399bool EvalEmitter::emitDecPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
15400 if (!isActive()) return true;
15401 CurrentSource = L;
15402 return DecPopBitfield<PT_Uint64>(S, CodePtr(), A0, A1);
15403}
15404bool EvalEmitter::emitDecPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
15405 if (!isActive()) return true;
15406 CurrentSource = L;
15407 return DecPopBitfield<PT_IntAP>(S, CodePtr(), A0, A1);
15408}
15409bool EvalEmitter::emitDecPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
15410 if (!isActive()) return true;
15411 CurrentSource = L;
15412 return DecPopBitfield<PT_IntAPS>(S, CodePtr(), A0, A1);
15413}
15414bool EvalEmitter::emitDecPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
15415 if (!isActive()) return true;
15416 CurrentSource = L;
15417 return DecPopBitfield<PT_Bool>(S, CodePtr(), A0, A1);
15418}
15419bool EvalEmitter::emitDecPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
15420 if (!isActive()) return true;
15421 CurrentSource = L;
15422 return DecPopBitfield<PT_FixedPoint>(S, CodePtr(), A0, A1);
15423}
15424#endif
15425#ifdef GET_OPCODE_NAMES
15426OP_DecPtr,
15427#endif
15428#ifdef GET_INTERPFN_LIST
15429&Interp_DecPtr,
15430#endif
15431#ifdef GET_INTERPFN_DISPATCHERS
15432PRESERVE_NONE
15433static bool Interp_DecPtr(InterpState &S) {
15434 if (!DecPtr(S, S.PC)) return false;
15435#if USE_TAILCALLS
15436 MUSTTAIL return InterpNext(S);
15437#else
15438 return true;
15439#endif
15440}
15441#endif
15442#ifdef GET_DISASM
15443case OP_DecPtr:
15444 Text.Op = PrintName("DecPtr");
15445 break;
15446#endif
15447#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15448bool emitDecPtr(SourceInfo);
15449#endif
15450#ifdef GET_LINK_IMPL
15451bool ByteCodeEmitter::emitDecPtr(SourceInfo L) {
15452 return emitOp<>(OP_DecPtr, L);
15453}
15454#endif
15455#ifdef GET_EVAL_IMPL
15456bool EvalEmitter::emitDecPtr(SourceInfo L) {
15457 if (!isActive()) return true;
15458 CurrentSource = L;
15459 return DecPtr(S, CodePtr());
15460}
15461#endif
15462#ifdef GET_OPCODE_NAMES
15463OP_DecayPtrPtrPtr,
15464OP_DecayPtrPtrMemberPtr,
15465OP_DecayPtrMemberPtrPtr,
15466OP_DecayPtrMemberPtrMemberPtr,
15467#endif
15468#ifdef GET_INTERPFN_LIST
15469&Interp_DecayPtrPtrPtr,
15470&Interp_DecayPtrPtrMemberPtr,
15471&Interp_DecayPtrMemberPtrPtr,
15472&Interp_DecayPtrMemberPtrMemberPtr,
15473#endif
15474#ifdef GET_INTERPFN_DISPATCHERS
15475PRESERVE_NONE
15476static bool Interp_DecayPtrPtrPtr(InterpState &S) {
15477 if (!DecayPtr<PT_Ptr, PT_Ptr>(S)) return false;
15478#if USE_TAILCALLS
15479 MUSTTAIL return InterpNext(S);
15480#else
15481 return true;
15482#endif
15483}
15484PRESERVE_NONE
15485static bool Interp_DecayPtrPtrMemberPtr(InterpState &S) {
15486 if (!DecayPtr<PT_Ptr, PT_MemberPtr>(S)) return false;
15487#if USE_TAILCALLS
15488 MUSTTAIL return InterpNext(S);
15489#else
15490 return true;
15491#endif
15492}
15493PRESERVE_NONE
15494static bool Interp_DecayPtrMemberPtrPtr(InterpState &S) {
15495 if (!DecayPtr<PT_MemberPtr, PT_Ptr>(S)) return false;
15496#if USE_TAILCALLS
15497 MUSTTAIL return InterpNext(S);
15498#else
15499 return true;
15500#endif
15501}
15502PRESERVE_NONE
15503static bool Interp_DecayPtrMemberPtrMemberPtr(InterpState &S) {
15504 if (!DecayPtr<PT_MemberPtr, PT_MemberPtr>(S)) return false;
15505#if USE_TAILCALLS
15506 MUSTTAIL return InterpNext(S);
15507#else
15508 return true;
15509#endif
15510}
15511#endif
15512#ifdef GET_DISASM
15513case OP_DecayPtrPtrPtr:
15514 Text.Op = PrintName("DecayPtrPtrPtr");
15515 break;
15516case OP_DecayPtrPtrMemberPtr:
15517 Text.Op = PrintName("DecayPtrPtrMemberPtr");
15518 break;
15519case OP_DecayPtrMemberPtrPtr:
15520 Text.Op = PrintName("DecayPtrMemberPtrPtr");
15521 break;
15522case OP_DecayPtrMemberPtrMemberPtr:
15523 Text.Op = PrintName("DecayPtrMemberPtrMemberPtr");
15524 break;
15525#endif
15526#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15527bool emitDecayPtrPtrPtr(SourceInfo);
15528bool emitDecayPtrPtrMemberPtr(SourceInfo);
15529bool emitDecayPtrMemberPtrPtr(SourceInfo);
15530bool emitDecayPtrMemberPtrMemberPtr(SourceInfo);
15531#endif
15532#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15533[[nodiscard]] bool emitDecayPtr(PrimType, PrimType, SourceInfo I);
15534#endif
15535#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
15536bool
15537#if defined(GET_EVAL_IMPL)
15538EvalEmitter
15539#else
15540ByteCodeEmitter
15541#endif
15542::emitDecayPtr(PrimType T0, PrimType T1, SourceInfo I) {
15543 switch (T0) {
15544 case PT_Ptr:
15545 switch (T1) {
15546 case PT_Ptr:
15547 return emitDecayPtrPtrPtr(I);
15548 case PT_MemberPtr:
15549 return emitDecayPtrPtrMemberPtr(I);
15550 default: llvm_unreachable("invalid type: emitDecayPtr");
15551 }
15552 llvm_unreachable("invalid enum value");
15553 case PT_MemberPtr:
15554 switch (T1) {
15555 case PT_Ptr:
15556 return emitDecayPtrMemberPtrPtr(I);
15557 case PT_MemberPtr:
15558 return emitDecayPtrMemberPtrMemberPtr(I);
15559 default: llvm_unreachable("invalid type: emitDecayPtr");
15560 }
15561 llvm_unreachable("invalid enum value");
15562 default: llvm_unreachable("invalid type: emitDecayPtr");
15563 }
15564 llvm_unreachable("invalid enum value");
15565}
15566#endif
15567#ifdef GET_LINK_IMPL
15568bool ByteCodeEmitter::emitDecayPtrPtrPtr(SourceInfo L) {
15569 return emitOp<>(OP_DecayPtrPtrPtr, L);
15570}
15571bool ByteCodeEmitter::emitDecayPtrPtrMemberPtr(SourceInfo L) {
15572 return emitOp<>(OP_DecayPtrPtrMemberPtr, L);
15573}
15574bool ByteCodeEmitter::emitDecayPtrMemberPtrPtr(SourceInfo L) {
15575 return emitOp<>(OP_DecayPtrMemberPtrPtr, L);
15576}
15577bool ByteCodeEmitter::emitDecayPtrMemberPtrMemberPtr(SourceInfo L) {
15578 return emitOp<>(OP_DecayPtrMemberPtrMemberPtr, L);
15579}
15580#endif
15581#ifdef GET_EVAL_IMPL
15582bool EvalEmitter::emitDecayPtrPtrPtr(SourceInfo L) {
15583 if (!isActive()) return true;
15584 CurrentSource = L;
15585 return DecayPtr<PT_Ptr, PT_Ptr>(S);
15586}
15587bool EvalEmitter::emitDecayPtrPtrMemberPtr(SourceInfo L) {
15588 if (!isActive()) return true;
15589 CurrentSource = L;
15590 return DecayPtr<PT_Ptr, PT_MemberPtr>(S);
15591}
15592bool EvalEmitter::emitDecayPtrMemberPtrPtr(SourceInfo L) {
15593 if (!isActive()) return true;
15594 CurrentSource = L;
15595 return DecayPtr<PT_MemberPtr, PT_Ptr>(S);
15596}
15597bool EvalEmitter::emitDecayPtrMemberPtrMemberPtr(SourceInfo L) {
15598 if (!isActive()) return true;
15599 CurrentSource = L;
15600 return DecayPtr<PT_MemberPtr, PT_MemberPtr>(S);
15601}
15602#endif
15603#ifdef GET_OPCODE_NAMES
15604OP_Decf,
15605#endif
15606#ifdef GET_INTERPFN_LIST
15607&Interp_Decf,
15608#endif
15609#ifdef GET_INTERPFN_DISPATCHERS
15610PRESERVE_NONE
15611static bool Interp_Decf(InterpState &S) {
15612 {
15613 CodePtr OpPC = S.PC;
15614 const auto V0 = ReadArg<uint32_t>(S, S.PC);
15615 if (!Decf(S, OpPC, V0)) return false;
15616 }
15617#if USE_TAILCALLS
15618 MUSTTAIL return InterpNext(S);
15619#else
15620 return true;
15621#endif
15622}
15623#endif
15624#ifdef GET_DISASM
15625case OP_Decf:
15626 Text.Op = PrintName("Decf");
15627 Text.Args.push_back(printArg<uint32_t>(PC));
15628 break;
15629#endif
15630#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15631bool emitDecf( uint32_t , SourceInfo);
15632#endif
15633#ifdef GET_LINK_IMPL
15634bool ByteCodeEmitter::emitDecf( uint32_t A0, SourceInfo L) {
15635 return emitOp<uint32_t>(OP_Decf, A0, L);
15636}
15637#endif
15638#ifdef GET_EVAL_IMPL
15639bool EvalEmitter::emitDecf( uint32_t A0, SourceInfo L) {
15640 if (!isActive()) return true;
15641 CurrentSource = L;
15642 return Decf(S, CodePtr(), A0);
15643}
15644#endif
15645#ifdef GET_OPCODE_NAMES
15646OP_DecfPop,
15647#endif
15648#ifdef GET_INTERPFN_LIST
15649&Interp_DecfPop,
15650#endif
15651#ifdef GET_INTERPFN_DISPATCHERS
15652PRESERVE_NONE
15653static bool Interp_DecfPop(InterpState &S) {
15654 {
15655 CodePtr OpPC = S.PC;
15656 const auto V0 = ReadArg<uint32_t>(S, S.PC);
15657 if (!DecfPop(S, OpPC, V0)) return false;
15658 }
15659#if USE_TAILCALLS
15660 MUSTTAIL return InterpNext(S);
15661#else
15662 return true;
15663#endif
15664}
15665#endif
15666#ifdef GET_DISASM
15667case OP_DecfPop:
15668 Text.Op = PrintName("DecfPop");
15669 Text.Args.push_back(printArg<uint32_t>(PC));
15670 break;
15671#endif
15672#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15673bool emitDecfPop( uint32_t , SourceInfo);
15674#endif
15675#ifdef GET_LINK_IMPL
15676bool ByteCodeEmitter::emitDecfPop( uint32_t A0, SourceInfo L) {
15677 return emitOp<uint32_t>(OP_DecfPop, A0, L);
15678}
15679#endif
15680#ifdef GET_EVAL_IMPL
15681bool EvalEmitter::emitDecfPop( uint32_t A0, SourceInfo L) {
15682 if (!isActive()) return true;
15683 CurrentSource = L;
15684 return DecfPop(S, CodePtr(), A0);
15685}
15686#endif
15687#ifdef GET_OPCODE_NAMES
15688OP_Destroy,
15689#endif
15690#ifdef GET_INTERPFN_LIST
15691&Interp_Destroy,
15692#endif
15693#ifdef GET_INTERPFN_DISPATCHERS
15694PRESERVE_NONE
15695static bool Interp_Destroy(InterpState &S) {
15696 {
15697 CodePtr OpPC = S.PC;
15698 const auto V0 = ReadArg<uint32_t>(S, S.PC);
15699 if (!Destroy(S, OpPC, V0)) return false;
15700 }
15701#if USE_TAILCALLS
15702 MUSTTAIL return InterpNext(S);
15703#else
15704 return true;
15705#endif
15706}
15707#endif
15708#ifdef GET_DISASM
15709case OP_Destroy:
15710 Text.Op = PrintName("Destroy");
15711 Text.Args.push_back(printArg<uint32_t>(PC));
15712 break;
15713#endif
15714#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15715bool emitDestroy( uint32_t , SourceInfo);
15716#endif
15717#ifdef GET_LINK_IMPL
15718bool ByteCodeEmitter::emitDestroy( uint32_t A0, SourceInfo L) {
15719 return emitOp<uint32_t>(OP_Destroy, A0, L);
15720}
15721#endif
15722#ifdef GET_OPCODE_NAMES
15723OP_DiagTypeid,
15724#endif
15725#ifdef GET_INTERPFN_LIST
15726&Interp_DiagTypeid,
15727#endif
15728#ifdef GET_INTERPFN_DISPATCHERS
15729PRESERVE_NONE
15730static bool Interp_DiagTypeid(InterpState &S) {
15731 if (!DiagTypeid(S, S.PC)) return false;
15732#if USE_TAILCALLS
15733 MUSTTAIL return InterpNext(S);
15734#else
15735 return true;
15736#endif
15737}
15738#endif
15739#ifdef GET_DISASM
15740case OP_DiagTypeid:
15741 Text.Op = PrintName("DiagTypeid");
15742 break;
15743#endif
15744#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15745bool emitDiagTypeid(SourceInfo);
15746#endif
15747#ifdef GET_LINK_IMPL
15748bool ByteCodeEmitter::emitDiagTypeid(SourceInfo L) {
15749 return emitOp<>(OP_DiagTypeid, L);
15750}
15751#endif
15752#ifdef GET_EVAL_IMPL
15753bool EvalEmitter::emitDiagTypeid(SourceInfo L) {
15754 if (!isActive()) return true;
15755 CurrentSource = L;
15756 return DiagTypeid(S, CodePtr());
15757}
15758#endif
15759#ifdef GET_OPCODE_NAMES
15760OP_DivSint8,
15761OP_DivUint8,
15762OP_DivSint16,
15763OP_DivUint16,
15764OP_DivSint32,
15765OP_DivUint32,
15766OP_DivSint64,
15767OP_DivUint64,
15768OP_DivIntAP,
15769OP_DivIntAPS,
15770OP_DivFixedPoint,
15771#endif
15772#ifdef GET_INTERPFN_LIST
15773&Interp_DivSint8,
15774&Interp_DivUint8,
15775&Interp_DivSint16,
15776&Interp_DivUint16,
15777&Interp_DivSint32,
15778&Interp_DivUint32,
15779&Interp_DivSint64,
15780&Interp_DivUint64,
15781&Interp_DivIntAP,
15782&Interp_DivIntAPS,
15783&Interp_DivFixedPoint,
15784#endif
15785#ifdef GET_INTERPFN_DISPATCHERS
15786PRESERVE_NONE
15787static bool Interp_DivSint8(InterpState &S) {
15788 if (!Div<PT_Sint8>(S, S.PC)) return false;
15789#if USE_TAILCALLS
15790 MUSTTAIL return InterpNext(S);
15791#else
15792 return true;
15793#endif
15794}
15795PRESERVE_NONE
15796static bool Interp_DivUint8(InterpState &S) {
15797 if (!Div<PT_Uint8>(S, S.PC)) return false;
15798#if USE_TAILCALLS
15799 MUSTTAIL return InterpNext(S);
15800#else
15801 return true;
15802#endif
15803}
15804PRESERVE_NONE
15805static bool Interp_DivSint16(InterpState &S) {
15806 if (!Div<PT_Sint16>(S, S.PC)) return false;
15807#if USE_TAILCALLS
15808 MUSTTAIL return InterpNext(S);
15809#else
15810 return true;
15811#endif
15812}
15813PRESERVE_NONE
15814static bool Interp_DivUint16(InterpState &S) {
15815 if (!Div<PT_Uint16>(S, S.PC)) return false;
15816#if USE_TAILCALLS
15817 MUSTTAIL return InterpNext(S);
15818#else
15819 return true;
15820#endif
15821}
15822PRESERVE_NONE
15823static bool Interp_DivSint32(InterpState &S) {
15824 if (!Div<PT_Sint32>(S, S.PC)) return false;
15825#if USE_TAILCALLS
15826 MUSTTAIL return InterpNext(S);
15827#else
15828 return true;
15829#endif
15830}
15831PRESERVE_NONE
15832static bool Interp_DivUint32(InterpState &S) {
15833 if (!Div<PT_Uint32>(S, S.PC)) return false;
15834#if USE_TAILCALLS
15835 MUSTTAIL return InterpNext(S);
15836#else
15837 return true;
15838#endif
15839}
15840PRESERVE_NONE
15841static bool Interp_DivSint64(InterpState &S) {
15842 if (!Div<PT_Sint64>(S, S.PC)) return false;
15843#if USE_TAILCALLS
15844 MUSTTAIL return InterpNext(S);
15845#else
15846 return true;
15847#endif
15848}
15849PRESERVE_NONE
15850static bool Interp_DivUint64(InterpState &S) {
15851 if (!Div<PT_Uint64>(S, S.PC)) return false;
15852#if USE_TAILCALLS
15853 MUSTTAIL return InterpNext(S);
15854#else
15855 return true;
15856#endif
15857}
15858PRESERVE_NONE
15859static bool Interp_DivIntAP(InterpState &S) {
15860 if (!Div<PT_IntAP>(S, S.PC)) return false;
15861#if USE_TAILCALLS
15862 MUSTTAIL return InterpNext(S);
15863#else
15864 return true;
15865#endif
15866}
15867PRESERVE_NONE
15868static bool Interp_DivIntAPS(InterpState &S) {
15869 if (!Div<PT_IntAPS>(S, S.PC)) return false;
15870#if USE_TAILCALLS
15871 MUSTTAIL return InterpNext(S);
15872#else
15873 return true;
15874#endif
15875}
15876PRESERVE_NONE
15877static bool Interp_DivFixedPoint(InterpState &S) {
15878 if (!Div<PT_FixedPoint>(S, S.PC)) return false;
15879#if USE_TAILCALLS
15880 MUSTTAIL return InterpNext(S);
15881#else
15882 return true;
15883#endif
15884}
15885#endif
15886#ifdef GET_DISASM
15887case OP_DivSint8:
15888 Text.Op = PrintName("DivSint8");
15889 break;
15890case OP_DivUint8:
15891 Text.Op = PrintName("DivUint8");
15892 break;
15893case OP_DivSint16:
15894 Text.Op = PrintName("DivSint16");
15895 break;
15896case OP_DivUint16:
15897 Text.Op = PrintName("DivUint16");
15898 break;
15899case OP_DivSint32:
15900 Text.Op = PrintName("DivSint32");
15901 break;
15902case OP_DivUint32:
15903 Text.Op = PrintName("DivUint32");
15904 break;
15905case OP_DivSint64:
15906 Text.Op = PrintName("DivSint64");
15907 break;
15908case OP_DivUint64:
15909 Text.Op = PrintName("DivUint64");
15910 break;
15911case OP_DivIntAP:
15912 Text.Op = PrintName("DivIntAP");
15913 break;
15914case OP_DivIntAPS:
15915 Text.Op = PrintName("DivIntAPS");
15916 break;
15917case OP_DivFixedPoint:
15918 Text.Op = PrintName("DivFixedPoint");
15919 break;
15920#endif
15921#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15922bool emitDivSint8(SourceInfo);
15923bool emitDivUint8(SourceInfo);
15924bool emitDivSint16(SourceInfo);
15925bool emitDivUint16(SourceInfo);
15926bool emitDivSint32(SourceInfo);
15927bool emitDivUint32(SourceInfo);
15928bool emitDivSint64(SourceInfo);
15929bool emitDivUint64(SourceInfo);
15930bool emitDivIntAP(SourceInfo);
15931bool emitDivIntAPS(SourceInfo);
15932bool emitDivFixedPoint(SourceInfo);
15933#endif
15934#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15935[[nodiscard]] bool emitDiv(PrimType, SourceInfo I);
15936#endif
15937#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
15938bool
15939#if defined(GET_EVAL_IMPL)
15940EvalEmitter
15941#else
15942ByteCodeEmitter
15943#endif
15944::emitDiv(PrimType T0, SourceInfo I) {
15945 switch (T0) {
15946 case PT_Sint8:
15947 return emitDivSint8(I);
15948 case PT_Uint8:
15949 return emitDivUint8(I);
15950 case PT_Sint16:
15951 return emitDivSint16(I);
15952 case PT_Uint16:
15953 return emitDivUint16(I);
15954 case PT_Sint32:
15955 return emitDivSint32(I);
15956 case PT_Uint32:
15957 return emitDivUint32(I);
15958 case PT_Sint64:
15959 return emitDivSint64(I);
15960 case PT_Uint64:
15961 return emitDivUint64(I);
15962 case PT_IntAP:
15963 return emitDivIntAP(I);
15964 case PT_IntAPS:
15965 return emitDivIntAPS(I);
15966 case PT_FixedPoint:
15967 return emitDivFixedPoint(I);
15968 default: llvm_unreachable("invalid type: emitDiv");
15969 }
15970 llvm_unreachable("invalid enum value");
15971}
15972#endif
15973#ifdef GET_LINK_IMPL
15974bool ByteCodeEmitter::emitDivSint8(SourceInfo L) {
15975 return emitOp<>(OP_DivSint8, L);
15976}
15977bool ByteCodeEmitter::emitDivUint8(SourceInfo L) {
15978 return emitOp<>(OP_DivUint8, L);
15979}
15980bool ByteCodeEmitter::emitDivSint16(SourceInfo L) {
15981 return emitOp<>(OP_DivSint16, L);
15982}
15983bool ByteCodeEmitter::emitDivUint16(SourceInfo L) {
15984 return emitOp<>(OP_DivUint16, L);
15985}
15986bool ByteCodeEmitter::emitDivSint32(SourceInfo L) {
15987 return emitOp<>(OP_DivSint32, L);
15988}
15989bool ByteCodeEmitter::emitDivUint32(SourceInfo L) {
15990 return emitOp<>(OP_DivUint32, L);
15991}
15992bool ByteCodeEmitter::emitDivSint64(SourceInfo L) {
15993 return emitOp<>(OP_DivSint64, L);
15994}
15995bool ByteCodeEmitter::emitDivUint64(SourceInfo L) {
15996 return emitOp<>(OP_DivUint64, L);
15997}
15998bool ByteCodeEmitter::emitDivIntAP(SourceInfo L) {
15999 return emitOp<>(OP_DivIntAP, L);
16000}
16001bool ByteCodeEmitter::emitDivIntAPS(SourceInfo L) {
16002 return emitOp<>(OP_DivIntAPS, L);
16003}
16004bool ByteCodeEmitter::emitDivFixedPoint(SourceInfo L) {
16005 return emitOp<>(OP_DivFixedPoint, L);
16006}
16007#endif
16008#ifdef GET_EVAL_IMPL
16009bool EvalEmitter::emitDivSint8(SourceInfo L) {
16010 if (!isActive()) return true;
16011 CurrentSource = L;
16012 return Div<PT_Sint8>(S, CodePtr());
16013}
16014bool EvalEmitter::emitDivUint8(SourceInfo L) {
16015 if (!isActive()) return true;
16016 CurrentSource = L;
16017 return Div<PT_Uint8>(S, CodePtr());
16018}
16019bool EvalEmitter::emitDivSint16(SourceInfo L) {
16020 if (!isActive()) return true;
16021 CurrentSource = L;
16022 return Div<PT_Sint16>(S, CodePtr());
16023}
16024bool EvalEmitter::emitDivUint16(SourceInfo L) {
16025 if (!isActive()) return true;
16026 CurrentSource = L;
16027 return Div<PT_Uint16>(S, CodePtr());
16028}
16029bool EvalEmitter::emitDivSint32(SourceInfo L) {
16030 if (!isActive()) return true;
16031 CurrentSource = L;
16032 return Div<PT_Sint32>(S, CodePtr());
16033}
16034bool EvalEmitter::emitDivUint32(SourceInfo L) {
16035 if (!isActive()) return true;
16036 CurrentSource = L;
16037 return Div<PT_Uint32>(S, CodePtr());
16038}
16039bool EvalEmitter::emitDivSint64(SourceInfo L) {
16040 if (!isActive()) return true;
16041 CurrentSource = L;
16042 return Div<PT_Sint64>(S, CodePtr());
16043}
16044bool EvalEmitter::emitDivUint64(SourceInfo L) {
16045 if (!isActive()) return true;
16046 CurrentSource = L;
16047 return Div<PT_Uint64>(S, CodePtr());
16048}
16049bool EvalEmitter::emitDivIntAP(SourceInfo L) {
16050 if (!isActive()) return true;
16051 CurrentSource = L;
16052 return Div<PT_IntAP>(S, CodePtr());
16053}
16054bool EvalEmitter::emitDivIntAPS(SourceInfo L) {
16055 if (!isActive()) return true;
16056 CurrentSource = L;
16057 return Div<PT_IntAPS>(S, CodePtr());
16058}
16059bool EvalEmitter::emitDivFixedPoint(SourceInfo L) {
16060 if (!isActive()) return true;
16061 CurrentSource = L;
16062 return Div<PT_FixedPoint>(S, CodePtr());
16063}
16064#endif
16065#ifdef GET_OPCODE_NAMES
16066OP_DivcSint8,
16067OP_DivcUint8,
16068OP_DivcSint16,
16069OP_DivcUint16,
16070OP_DivcSint32,
16071OP_DivcUint32,
16072OP_DivcSint64,
16073OP_DivcUint64,
16074OP_DivcIntAP,
16075OP_DivcIntAPS,
16076OP_DivcFloat,
16077#endif
16078#ifdef GET_INTERPFN_LIST
16079&Interp_DivcSint8,
16080&Interp_DivcUint8,
16081&Interp_DivcSint16,
16082&Interp_DivcUint16,
16083&Interp_DivcSint32,
16084&Interp_DivcUint32,
16085&Interp_DivcSint64,
16086&Interp_DivcUint64,
16087&Interp_DivcIntAP,
16088&Interp_DivcIntAPS,
16089&Interp_DivcFloat,
16090#endif
16091#ifdef GET_INTERPFN_DISPATCHERS
16092PRESERVE_NONE
16093static bool Interp_DivcSint8(InterpState &S) {
16094 if (!Divc<PT_Sint8>(S, S.PC)) return false;
16095#if USE_TAILCALLS
16096 MUSTTAIL return InterpNext(S);
16097#else
16098 return true;
16099#endif
16100}
16101PRESERVE_NONE
16102static bool Interp_DivcUint8(InterpState &S) {
16103 if (!Divc<PT_Uint8>(S, S.PC)) return false;
16104#if USE_TAILCALLS
16105 MUSTTAIL return InterpNext(S);
16106#else
16107 return true;
16108#endif
16109}
16110PRESERVE_NONE
16111static bool Interp_DivcSint16(InterpState &S) {
16112 if (!Divc<PT_Sint16>(S, S.PC)) return false;
16113#if USE_TAILCALLS
16114 MUSTTAIL return InterpNext(S);
16115#else
16116 return true;
16117#endif
16118}
16119PRESERVE_NONE
16120static bool Interp_DivcUint16(InterpState &S) {
16121 if (!Divc<PT_Uint16>(S, S.PC)) return false;
16122#if USE_TAILCALLS
16123 MUSTTAIL return InterpNext(S);
16124#else
16125 return true;
16126#endif
16127}
16128PRESERVE_NONE
16129static bool Interp_DivcSint32(InterpState &S) {
16130 if (!Divc<PT_Sint32>(S, S.PC)) return false;
16131#if USE_TAILCALLS
16132 MUSTTAIL return InterpNext(S);
16133#else
16134 return true;
16135#endif
16136}
16137PRESERVE_NONE
16138static bool Interp_DivcUint32(InterpState &S) {
16139 if (!Divc<PT_Uint32>(S, S.PC)) return false;
16140#if USE_TAILCALLS
16141 MUSTTAIL return InterpNext(S);
16142#else
16143 return true;
16144#endif
16145}
16146PRESERVE_NONE
16147static bool Interp_DivcSint64(InterpState &S) {
16148 if (!Divc<PT_Sint64>(S, S.PC)) return false;
16149#if USE_TAILCALLS
16150 MUSTTAIL return InterpNext(S);
16151#else
16152 return true;
16153#endif
16154}
16155PRESERVE_NONE
16156static bool Interp_DivcUint64(InterpState &S) {
16157 if (!Divc<PT_Uint64>(S, S.PC)) return false;
16158#if USE_TAILCALLS
16159 MUSTTAIL return InterpNext(S);
16160#else
16161 return true;
16162#endif
16163}
16164PRESERVE_NONE
16165static bool Interp_DivcIntAP(InterpState &S) {
16166 if (!Divc<PT_IntAP>(S, S.PC)) return false;
16167#if USE_TAILCALLS
16168 MUSTTAIL return InterpNext(S);
16169#else
16170 return true;
16171#endif
16172}
16173PRESERVE_NONE
16174static bool Interp_DivcIntAPS(InterpState &S) {
16175 if (!Divc<PT_IntAPS>(S, S.PC)) return false;
16176#if USE_TAILCALLS
16177 MUSTTAIL return InterpNext(S);
16178#else
16179 return true;
16180#endif
16181}
16182PRESERVE_NONE
16183static bool Interp_DivcFloat(InterpState &S) {
16184 if (!Divc<PT_Float>(S, S.PC)) return false;
16185#if USE_TAILCALLS
16186 MUSTTAIL return InterpNext(S);
16187#else
16188 return true;
16189#endif
16190}
16191#endif
16192#ifdef GET_DISASM
16193case OP_DivcSint8:
16194 Text.Op = PrintName("DivcSint8");
16195 break;
16196case OP_DivcUint8:
16197 Text.Op = PrintName("DivcUint8");
16198 break;
16199case OP_DivcSint16:
16200 Text.Op = PrintName("DivcSint16");
16201 break;
16202case OP_DivcUint16:
16203 Text.Op = PrintName("DivcUint16");
16204 break;
16205case OP_DivcSint32:
16206 Text.Op = PrintName("DivcSint32");
16207 break;
16208case OP_DivcUint32:
16209 Text.Op = PrintName("DivcUint32");
16210 break;
16211case OP_DivcSint64:
16212 Text.Op = PrintName("DivcSint64");
16213 break;
16214case OP_DivcUint64:
16215 Text.Op = PrintName("DivcUint64");
16216 break;
16217case OP_DivcIntAP:
16218 Text.Op = PrintName("DivcIntAP");
16219 break;
16220case OP_DivcIntAPS:
16221 Text.Op = PrintName("DivcIntAPS");
16222 break;
16223case OP_DivcFloat:
16224 Text.Op = PrintName("DivcFloat");
16225 break;
16226#endif
16227#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16228bool emitDivcSint8(SourceInfo);
16229bool emitDivcUint8(SourceInfo);
16230bool emitDivcSint16(SourceInfo);
16231bool emitDivcUint16(SourceInfo);
16232bool emitDivcSint32(SourceInfo);
16233bool emitDivcUint32(SourceInfo);
16234bool emitDivcSint64(SourceInfo);
16235bool emitDivcUint64(SourceInfo);
16236bool emitDivcIntAP(SourceInfo);
16237bool emitDivcIntAPS(SourceInfo);
16238bool emitDivcFloat(SourceInfo);
16239#endif
16240#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16241[[nodiscard]] bool emitDivc(PrimType, SourceInfo I);
16242#endif
16243#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
16244bool
16245#if defined(GET_EVAL_IMPL)
16246EvalEmitter
16247#else
16248ByteCodeEmitter
16249#endif
16250::emitDivc(PrimType T0, SourceInfo I) {
16251 switch (T0) {
16252 case PT_Sint8:
16253 return emitDivcSint8(I);
16254 case PT_Uint8:
16255 return emitDivcUint8(I);
16256 case PT_Sint16:
16257 return emitDivcSint16(I);
16258 case PT_Uint16:
16259 return emitDivcUint16(I);
16260 case PT_Sint32:
16261 return emitDivcSint32(I);
16262 case PT_Uint32:
16263 return emitDivcUint32(I);
16264 case PT_Sint64:
16265 return emitDivcSint64(I);
16266 case PT_Uint64:
16267 return emitDivcUint64(I);
16268 case PT_IntAP:
16269 return emitDivcIntAP(I);
16270 case PT_IntAPS:
16271 return emitDivcIntAPS(I);
16272 case PT_Float:
16273 return emitDivcFloat(I);
16274 default: llvm_unreachable("invalid type: emitDivc");
16275 }
16276 llvm_unreachable("invalid enum value");
16277}
16278#endif
16279#ifdef GET_LINK_IMPL
16280bool ByteCodeEmitter::emitDivcSint8(SourceInfo L) {
16281 return emitOp<>(OP_DivcSint8, L);
16282}
16283bool ByteCodeEmitter::emitDivcUint8(SourceInfo L) {
16284 return emitOp<>(OP_DivcUint8, L);
16285}
16286bool ByteCodeEmitter::emitDivcSint16(SourceInfo L) {
16287 return emitOp<>(OP_DivcSint16, L);
16288}
16289bool ByteCodeEmitter::emitDivcUint16(SourceInfo L) {
16290 return emitOp<>(OP_DivcUint16, L);
16291}
16292bool ByteCodeEmitter::emitDivcSint32(SourceInfo L) {
16293 return emitOp<>(OP_DivcSint32, L);
16294}
16295bool ByteCodeEmitter::emitDivcUint32(SourceInfo L) {
16296 return emitOp<>(OP_DivcUint32, L);
16297}
16298bool ByteCodeEmitter::emitDivcSint64(SourceInfo L) {
16299 return emitOp<>(OP_DivcSint64, L);
16300}
16301bool ByteCodeEmitter::emitDivcUint64(SourceInfo L) {
16302 return emitOp<>(OP_DivcUint64, L);
16303}
16304bool ByteCodeEmitter::emitDivcIntAP(SourceInfo L) {
16305 return emitOp<>(OP_DivcIntAP, L);
16306}
16307bool ByteCodeEmitter::emitDivcIntAPS(SourceInfo L) {
16308 return emitOp<>(OP_DivcIntAPS, L);
16309}
16310bool ByteCodeEmitter::emitDivcFloat(SourceInfo L) {
16311 return emitOp<>(OP_DivcFloat, L);
16312}
16313#endif
16314#ifdef GET_EVAL_IMPL
16315bool EvalEmitter::emitDivcSint8(SourceInfo L) {
16316 if (!isActive()) return true;
16317 CurrentSource = L;
16318 return Divc<PT_Sint8>(S, CodePtr());
16319}
16320bool EvalEmitter::emitDivcUint8(SourceInfo L) {
16321 if (!isActive()) return true;
16322 CurrentSource = L;
16323 return Divc<PT_Uint8>(S, CodePtr());
16324}
16325bool EvalEmitter::emitDivcSint16(SourceInfo L) {
16326 if (!isActive()) return true;
16327 CurrentSource = L;
16328 return Divc<PT_Sint16>(S, CodePtr());
16329}
16330bool EvalEmitter::emitDivcUint16(SourceInfo L) {
16331 if (!isActive()) return true;
16332 CurrentSource = L;
16333 return Divc<PT_Uint16>(S, CodePtr());
16334}
16335bool EvalEmitter::emitDivcSint32(SourceInfo L) {
16336 if (!isActive()) return true;
16337 CurrentSource = L;
16338 return Divc<PT_Sint32>(S, CodePtr());
16339}
16340bool EvalEmitter::emitDivcUint32(SourceInfo L) {
16341 if (!isActive()) return true;
16342 CurrentSource = L;
16343 return Divc<PT_Uint32>(S, CodePtr());
16344}
16345bool EvalEmitter::emitDivcSint64(SourceInfo L) {
16346 if (!isActive()) return true;
16347 CurrentSource = L;
16348 return Divc<PT_Sint64>(S, CodePtr());
16349}
16350bool EvalEmitter::emitDivcUint64(SourceInfo L) {
16351 if (!isActive()) return true;
16352 CurrentSource = L;
16353 return Divc<PT_Uint64>(S, CodePtr());
16354}
16355bool EvalEmitter::emitDivcIntAP(SourceInfo L) {
16356 if (!isActive()) return true;
16357 CurrentSource = L;
16358 return Divc<PT_IntAP>(S, CodePtr());
16359}
16360bool EvalEmitter::emitDivcIntAPS(SourceInfo L) {
16361 if (!isActive()) return true;
16362 CurrentSource = L;
16363 return Divc<PT_IntAPS>(S, CodePtr());
16364}
16365bool EvalEmitter::emitDivcFloat(SourceInfo L) {
16366 if (!isActive()) return true;
16367 CurrentSource = L;
16368 return Divc<PT_Float>(S, CodePtr());
16369}
16370#endif
16371#ifdef GET_OPCODE_NAMES
16372OP_Divf,
16373#endif
16374#ifdef GET_INTERPFN_LIST
16375&Interp_Divf,
16376#endif
16377#ifdef GET_INTERPFN_DISPATCHERS
16378PRESERVE_NONE
16379static bool Interp_Divf(InterpState &S) {
16380 {
16381 CodePtr OpPC = S.PC;
16382 const auto V0 = ReadArg<uint32_t>(S, S.PC);
16383 if (!Divf(S, OpPC, V0)) return false;
16384 }
16385#if USE_TAILCALLS
16386 MUSTTAIL return InterpNext(S);
16387#else
16388 return true;
16389#endif
16390}
16391#endif
16392#ifdef GET_DISASM
16393case OP_Divf:
16394 Text.Op = PrintName("Divf");
16395 Text.Args.push_back(printArg<uint32_t>(PC));
16396 break;
16397#endif
16398#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16399bool emitDivf( uint32_t , SourceInfo);
16400#endif
16401#ifdef GET_LINK_IMPL
16402bool ByteCodeEmitter::emitDivf( uint32_t A0, SourceInfo L) {
16403 return emitOp<uint32_t>(OP_Divf, A0, L);
16404}
16405#endif
16406#ifdef GET_EVAL_IMPL
16407bool EvalEmitter::emitDivf( uint32_t A0, SourceInfo L) {
16408 if (!isActive()) return true;
16409 CurrentSource = L;
16410 return Divf(S, CodePtr(), A0);
16411}
16412#endif
16413#ifdef GET_OPCODE_NAMES
16414OP_Dump,
16415#endif
16416#ifdef GET_INTERPFN_LIST
16417&Interp_Dump,
16418#endif
16419#ifdef GET_INTERPFN_DISPATCHERS
16420PRESERVE_NONE
16421static bool Interp_Dump(InterpState &S) {
16422 if (!Dump(S)) return false;
16423#if USE_TAILCALLS
16424 MUSTTAIL return InterpNext(S);
16425#else
16426 return true;
16427#endif
16428}
16429#endif
16430#ifdef GET_DISASM
16431case OP_Dump:
16432 Text.Op = PrintName("Dump");
16433 break;
16434#endif
16435#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16436bool emitDump(SourceInfo);
16437#endif
16438#ifdef GET_LINK_IMPL
16439bool ByteCodeEmitter::emitDump(SourceInfo L) {
16440 return emitOp<>(OP_Dump, L);
16441}
16442#endif
16443#ifdef GET_EVAL_IMPL
16444bool EvalEmitter::emitDump(SourceInfo L) {
16445 if (!isActive()) return true;
16446 CurrentSource = L;
16447 return Dump(S);
16448}
16449#endif
16450#ifdef GET_OPCODE_NAMES
16451OP_DupSint8,
16452OP_DupUint8,
16453OP_DupSint16,
16454OP_DupUint16,
16455OP_DupSint32,
16456OP_DupUint32,
16457OP_DupSint64,
16458OP_DupUint64,
16459OP_DupIntAP,
16460OP_DupIntAPS,
16461OP_DupBool,
16462OP_DupFixedPoint,
16463OP_DupPtr,
16464OP_DupMemberPtr,
16465OP_DupFloat,
16466#endif
16467#ifdef GET_INTERPFN_LIST
16468&Interp_DupSint8,
16469&Interp_DupUint8,
16470&Interp_DupSint16,
16471&Interp_DupUint16,
16472&Interp_DupSint32,
16473&Interp_DupUint32,
16474&Interp_DupSint64,
16475&Interp_DupUint64,
16476&Interp_DupIntAP,
16477&Interp_DupIntAPS,
16478&Interp_DupBool,
16479&Interp_DupFixedPoint,
16480&Interp_DupPtr,
16481&Interp_DupMemberPtr,
16482&Interp_DupFloat,
16483#endif
16484#ifdef GET_INTERPFN_DISPATCHERS
16485PRESERVE_NONE
16486static bool Interp_DupSint8(InterpState &S) {
16487 Dup<PT_Sint8>(S);
16488#if USE_TAILCALLS
16489 MUSTTAIL return InterpNext(S);
16490#else
16491 return true;
16492#endif
16493}
16494PRESERVE_NONE
16495static bool Interp_DupUint8(InterpState &S) {
16496 Dup<PT_Uint8>(S);
16497#if USE_TAILCALLS
16498 MUSTTAIL return InterpNext(S);
16499#else
16500 return true;
16501#endif
16502}
16503PRESERVE_NONE
16504static bool Interp_DupSint16(InterpState &S) {
16505 Dup<PT_Sint16>(S);
16506#if USE_TAILCALLS
16507 MUSTTAIL return InterpNext(S);
16508#else
16509 return true;
16510#endif
16511}
16512PRESERVE_NONE
16513static bool Interp_DupUint16(InterpState &S) {
16514 Dup<PT_Uint16>(S);
16515#if USE_TAILCALLS
16516 MUSTTAIL return InterpNext(S);
16517#else
16518 return true;
16519#endif
16520}
16521PRESERVE_NONE
16522static bool Interp_DupSint32(InterpState &S) {
16523 Dup<PT_Sint32>(S);
16524#if USE_TAILCALLS
16525 MUSTTAIL return InterpNext(S);
16526#else
16527 return true;
16528#endif
16529}
16530PRESERVE_NONE
16531static bool Interp_DupUint32(InterpState &S) {
16532 Dup<PT_Uint32>(S);
16533#if USE_TAILCALLS
16534 MUSTTAIL return InterpNext(S);
16535#else
16536 return true;
16537#endif
16538}
16539PRESERVE_NONE
16540static bool Interp_DupSint64(InterpState &S) {
16541 Dup<PT_Sint64>(S);
16542#if USE_TAILCALLS
16543 MUSTTAIL return InterpNext(S);
16544#else
16545 return true;
16546#endif
16547}
16548PRESERVE_NONE
16549static bool Interp_DupUint64(InterpState &S) {
16550 Dup<PT_Uint64>(S);
16551#if USE_TAILCALLS
16552 MUSTTAIL return InterpNext(S);
16553#else
16554 return true;
16555#endif
16556}
16557PRESERVE_NONE
16558static bool Interp_DupIntAP(InterpState &S) {
16559 Dup<PT_IntAP>(S);
16560#if USE_TAILCALLS
16561 MUSTTAIL return InterpNext(S);
16562#else
16563 return true;
16564#endif
16565}
16566PRESERVE_NONE
16567static bool Interp_DupIntAPS(InterpState &S) {
16568 Dup<PT_IntAPS>(S);
16569#if USE_TAILCALLS
16570 MUSTTAIL return InterpNext(S);
16571#else
16572 return true;
16573#endif
16574}
16575PRESERVE_NONE
16576static bool Interp_DupBool(InterpState &S) {
16577 Dup<PT_Bool>(S);
16578#if USE_TAILCALLS
16579 MUSTTAIL return InterpNext(S);
16580#else
16581 return true;
16582#endif
16583}
16584PRESERVE_NONE
16585static bool Interp_DupFixedPoint(InterpState &S) {
16586 Dup<PT_FixedPoint>(S);
16587#if USE_TAILCALLS
16588 MUSTTAIL return InterpNext(S);
16589#else
16590 return true;
16591#endif
16592}
16593PRESERVE_NONE
16594static bool Interp_DupPtr(InterpState &S) {
16595 Dup<PT_Ptr>(S);
16596#if USE_TAILCALLS
16597 MUSTTAIL return InterpNext(S);
16598#else
16599 return true;
16600#endif
16601}
16602PRESERVE_NONE
16603static bool Interp_DupMemberPtr(InterpState &S) {
16604 Dup<PT_MemberPtr>(S);
16605#if USE_TAILCALLS
16606 MUSTTAIL return InterpNext(S);
16607#else
16608 return true;
16609#endif
16610}
16611PRESERVE_NONE
16612static bool Interp_DupFloat(InterpState &S) {
16613 Dup<PT_Float>(S);
16614#if USE_TAILCALLS
16615 MUSTTAIL return InterpNext(S);
16616#else
16617 return true;
16618#endif
16619}
16620#endif
16621#ifdef GET_DISASM
16622case OP_DupSint8:
16623 Text.Op = PrintName("DupSint8");
16624 break;
16625case OP_DupUint8:
16626 Text.Op = PrintName("DupUint8");
16627 break;
16628case OP_DupSint16:
16629 Text.Op = PrintName("DupSint16");
16630 break;
16631case OP_DupUint16:
16632 Text.Op = PrintName("DupUint16");
16633 break;
16634case OP_DupSint32:
16635 Text.Op = PrintName("DupSint32");
16636 break;
16637case OP_DupUint32:
16638 Text.Op = PrintName("DupUint32");
16639 break;
16640case OP_DupSint64:
16641 Text.Op = PrintName("DupSint64");
16642 break;
16643case OP_DupUint64:
16644 Text.Op = PrintName("DupUint64");
16645 break;
16646case OP_DupIntAP:
16647 Text.Op = PrintName("DupIntAP");
16648 break;
16649case OP_DupIntAPS:
16650 Text.Op = PrintName("DupIntAPS");
16651 break;
16652case OP_DupBool:
16653 Text.Op = PrintName("DupBool");
16654 break;
16655case OP_DupFixedPoint:
16656 Text.Op = PrintName("DupFixedPoint");
16657 break;
16658case OP_DupPtr:
16659 Text.Op = PrintName("DupPtr");
16660 break;
16661case OP_DupMemberPtr:
16662 Text.Op = PrintName("DupMemberPtr");
16663 break;
16664case OP_DupFloat:
16665 Text.Op = PrintName("DupFloat");
16666 break;
16667#endif
16668#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16669bool emitDupSint8(SourceInfo);
16670bool emitDupUint8(SourceInfo);
16671bool emitDupSint16(SourceInfo);
16672bool emitDupUint16(SourceInfo);
16673bool emitDupSint32(SourceInfo);
16674bool emitDupUint32(SourceInfo);
16675bool emitDupSint64(SourceInfo);
16676bool emitDupUint64(SourceInfo);
16677bool emitDupIntAP(SourceInfo);
16678bool emitDupIntAPS(SourceInfo);
16679bool emitDupBool(SourceInfo);
16680bool emitDupFixedPoint(SourceInfo);
16681bool emitDupPtr(SourceInfo);
16682bool emitDupMemberPtr(SourceInfo);
16683bool emitDupFloat(SourceInfo);
16684#endif
16685#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16686[[nodiscard]] bool emitDup(PrimType, SourceInfo I);
16687#endif
16688#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
16689bool
16690#if defined(GET_EVAL_IMPL)
16691EvalEmitter
16692#else
16693ByteCodeEmitter
16694#endif
16695::emitDup(PrimType T0, SourceInfo I) {
16696 switch (T0) {
16697 case PT_Sint8:
16698 return emitDupSint8(I);
16699 case PT_Uint8:
16700 return emitDupUint8(I);
16701 case PT_Sint16:
16702 return emitDupSint16(I);
16703 case PT_Uint16:
16704 return emitDupUint16(I);
16705 case PT_Sint32:
16706 return emitDupSint32(I);
16707 case PT_Uint32:
16708 return emitDupUint32(I);
16709 case PT_Sint64:
16710 return emitDupSint64(I);
16711 case PT_Uint64:
16712 return emitDupUint64(I);
16713 case PT_IntAP:
16714 return emitDupIntAP(I);
16715 case PT_IntAPS:
16716 return emitDupIntAPS(I);
16717 case PT_Bool:
16718 return emitDupBool(I);
16719 case PT_FixedPoint:
16720 return emitDupFixedPoint(I);
16721 case PT_Ptr:
16722 return emitDupPtr(I);
16723 case PT_MemberPtr:
16724 return emitDupMemberPtr(I);
16725 case PT_Float:
16726 return emitDupFloat(I);
16727 }
16728 llvm_unreachable("invalid enum value");
16729}
16730#endif
16731#ifdef GET_LINK_IMPL
16732bool ByteCodeEmitter::emitDupSint8(SourceInfo L) {
16733 return emitOp<>(OP_DupSint8, L);
16734}
16735bool ByteCodeEmitter::emitDupUint8(SourceInfo L) {
16736 return emitOp<>(OP_DupUint8, L);
16737}
16738bool ByteCodeEmitter::emitDupSint16(SourceInfo L) {
16739 return emitOp<>(OP_DupSint16, L);
16740}
16741bool ByteCodeEmitter::emitDupUint16(SourceInfo L) {
16742 return emitOp<>(OP_DupUint16, L);
16743}
16744bool ByteCodeEmitter::emitDupSint32(SourceInfo L) {
16745 return emitOp<>(OP_DupSint32, L);
16746}
16747bool ByteCodeEmitter::emitDupUint32(SourceInfo L) {
16748 return emitOp<>(OP_DupUint32, L);
16749}
16750bool ByteCodeEmitter::emitDupSint64(SourceInfo L) {
16751 return emitOp<>(OP_DupSint64, L);
16752}
16753bool ByteCodeEmitter::emitDupUint64(SourceInfo L) {
16754 return emitOp<>(OP_DupUint64, L);
16755}
16756bool ByteCodeEmitter::emitDupIntAP(SourceInfo L) {
16757 return emitOp<>(OP_DupIntAP, L);
16758}
16759bool ByteCodeEmitter::emitDupIntAPS(SourceInfo L) {
16760 return emitOp<>(OP_DupIntAPS, L);
16761}
16762bool ByteCodeEmitter::emitDupBool(SourceInfo L) {
16763 return emitOp<>(OP_DupBool, L);
16764}
16765bool ByteCodeEmitter::emitDupFixedPoint(SourceInfo L) {
16766 return emitOp<>(OP_DupFixedPoint, L);
16767}
16768bool ByteCodeEmitter::emitDupPtr(SourceInfo L) {
16769 return emitOp<>(OP_DupPtr, L);
16770}
16771bool ByteCodeEmitter::emitDupMemberPtr(SourceInfo L) {
16772 return emitOp<>(OP_DupMemberPtr, L);
16773}
16774bool ByteCodeEmitter::emitDupFloat(SourceInfo L) {
16775 return emitOp<>(OP_DupFloat, L);
16776}
16777#endif
16778#ifdef GET_EVAL_IMPL
16779bool EvalEmitter::emitDupSint8(SourceInfo L) {
16780 if (!isActive()) return true;
16781 CurrentSource = L;
16782 return Dup<PT_Sint8>(S);
16783}
16784bool EvalEmitter::emitDupUint8(SourceInfo L) {
16785 if (!isActive()) return true;
16786 CurrentSource = L;
16787 return Dup<PT_Uint8>(S);
16788}
16789bool EvalEmitter::emitDupSint16(SourceInfo L) {
16790 if (!isActive()) return true;
16791 CurrentSource = L;
16792 return Dup<PT_Sint16>(S);
16793}
16794bool EvalEmitter::emitDupUint16(SourceInfo L) {
16795 if (!isActive()) return true;
16796 CurrentSource = L;
16797 return Dup<PT_Uint16>(S);
16798}
16799bool EvalEmitter::emitDupSint32(SourceInfo L) {
16800 if (!isActive()) return true;
16801 CurrentSource = L;
16802 return Dup<PT_Sint32>(S);
16803}
16804bool EvalEmitter::emitDupUint32(SourceInfo L) {
16805 if (!isActive()) return true;
16806 CurrentSource = L;
16807 return Dup<PT_Uint32>(S);
16808}
16809bool EvalEmitter::emitDupSint64(SourceInfo L) {
16810 if (!isActive()) return true;
16811 CurrentSource = L;
16812 return Dup<PT_Sint64>(S);
16813}
16814bool EvalEmitter::emitDupUint64(SourceInfo L) {
16815 if (!isActive()) return true;
16816 CurrentSource = L;
16817 return Dup<PT_Uint64>(S);
16818}
16819bool EvalEmitter::emitDupIntAP(SourceInfo L) {
16820 if (!isActive()) return true;
16821 CurrentSource = L;
16822 return Dup<PT_IntAP>(S);
16823}
16824bool EvalEmitter::emitDupIntAPS(SourceInfo L) {
16825 if (!isActive()) return true;
16826 CurrentSource = L;
16827 return Dup<PT_IntAPS>(S);
16828}
16829bool EvalEmitter::emitDupBool(SourceInfo L) {
16830 if (!isActive()) return true;
16831 CurrentSource = L;
16832 return Dup<PT_Bool>(S);
16833}
16834bool EvalEmitter::emitDupFixedPoint(SourceInfo L) {
16835 if (!isActive()) return true;
16836 CurrentSource = L;
16837 return Dup<PT_FixedPoint>(S);
16838}
16839bool EvalEmitter::emitDupPtr(SourceInfo L) {
16840 if (!isActive()) return true;
16841 CurrentSource = L;
16842 return Dup<PT_Ptr>(S);
16843}
16844bool EvalEmitter::emitDupMemberPtr(SourceInfo L) {
16845 if (!isActive()) return true;
16846 CurrentSource = L;
16847 return Dup<PT_MemberPtr>(S);
16848}
16849bool EvalEmitter::emitDupFloat(SourceInfo L) {
16850 if (!isActive()) return true;
16851 CurrentSource = L;
16852 return Dup<PT_Float>(S);
16853}
16854#endif
16855#ifdef GET_OPCODE_NAMES
16856OP_DynamicCast,
16857#endif
16858#ifdef GET_INTERPFN_LIST
16859&Interp_DynamicCast,
16860#endif
16861#ifdef GET_INTERPFN_DISPATCHERS
16862PRESERVE_NONE
16863static bool Interp_DynamicCast(InterpState &S) {
16864 {
16865 CodePtr OpPC = S.PC;
16866 const auto V0 = ReadArg<const Type *>(S, S.PC);
16867 const auto V1 = ReadArg<bool>(S, S.PC);
16868 if (!DynamicCast(S, OpPC, V0, V1)) return false;
16869 }
16870#if USE_TAILCALLS
16871 MUSTTAIL return InterpNext(S);
16872#else
16873 return true;
16874#endif
16875}
16876#endif
16877#ifdef GET_DISASM
16878case OP_DynamicCast:
16879 Text.Op = PrintName("DynamicCast");
16880 Text.Args.push_back(printArg<const Type *>(PC));
16881 Text.Args.push_back(printArg<bool>(PC));
16882 break;
16883#endif
16884#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16885bool emitDynamicCast( const Type * , bool , SourceInfo);
16886#endif
16887#ifdef GET_LINK_IMPL
16888bool ByteCodeEmitter::emitDynamicCast( const Type * A0, bool A1, SourceInfo L) {
16889 return emitOp<const Type *, bool>(OP_DynamicCast, A0, A1, L);
16890}
16891#endif
16892#ifdef GET_EVAL_IMPL
16893bool EvalEmitter::emitDynamicCast( const Type * A0, bool A1, SourceInfo L) {
16894 if (!isActive()) return true;
16895 CurrentSource = L;
16896 return DynamicCast(S, CodePtr(), A0, A1);
16897}
16898#endif
16899#ifdef GET_OPCODE_NAMES
16900OP_EQSint8,
16901OP_EQUint8,
16902OP_EQSint16,
16903OP_EQUint16,
16904OP_EQSint32,
16905OP_EQUint32,
16906OP_EQSint64,
16907OP_EQUint64,
16908OP_EQIntAP,
16909OP_EQIntAPS,
16910OP_EQBool,
16911OP_EQFixedPoint,
16912OP_EQPtr,
16913OP_EQMemberPtr,
16914OP_EQFloat,
16915#endif
16916#ifdef GET_INTERPFN_LIST
16917&Interp_EQSint8,
16918&Interp_EQUint8,
16919&Interp_EQSint16,
16920&Interp_EQUint16,
16921&Interp_EQSint32,
16922&Interp_EQUint32,
16923&Interp_EQSint64,
16924&Interp_EQUint64,
16925&Interp_EQIntAP,
16926&Interp_EQIntAPS,
16927&Interp_EQBool,
16928&Interp_EQFixedPoint,
16929&Interp_EQPtr,
16930&Interp_EQMemberPtr,
16931&Interp_EQFloat,
16932#endif
16933#ifdef GET_INTERPFN_DISPATCHERS
16934PRESERVE_NONE
16935static bool Interp_EQSint8(InterpState &S) {
16936 if (!EQ<PT_Sint8>(S, S.PC)) return false;
16937#if USE_TAILCALLS
16938 MUSTTAIL return InterpNext(S);
16939#else
16940 return true;
16941#endif
16942}
16943PRESERVE_NONE
16944static bool Interp_EQUint8(InterpState &S) {
16945 if (!EQ<PT_Uint8>(S, S.PC)) return false;
16946#if USE_TAILCALLS
16947 MUSTTAIL return InterpNext(S);
16948#else
16949 return true;
16950#endif
16951}
16952PRESERVE_NONE
16953static bool Interp_EQSint16(InterpState &S) {
16954 if (!EQ<PT_Sint16>(S, S.PC)) return false;
16955#if USE_TAILCALLS
16956 MUSTTAIL return InterpNext(S);
16957#else
16958 return true;
16959#endif
16960}
16961PRESERVE_NONE
16962static bool Interp_EQUint16(InterpState &S) {
16963 if (!EQ<PT_Uint16>(S, S.PC)) return false;
16964#if USE_TAILCALLS
16965 MUSTTAIL return InterpNext(S);
16966#else
16967 return true;
16968#endif
16969}
16970PRESERVE_NONE
16971static bool Interp_EQSint32(InterpState &S) {
16972 if (!EQ<PT_Sint32>(S, S.PC)) return false;
16973#if USE_TAILCALLS
16974 MUSTTAIL return InterpNext(S);
16975#else
16976 return true;
16977#endif
16978}
16979PRESERVE_NONE
16980static bool Interp_EQUint32(InterpState &S) {
16981 if (!EQ<PT_Uint32>(S, S.PC)) return false;
16982#if USE_TAILCALLS
16983 MUSTTAIL return InterpNext(S);
16984#else
16985 return true;
16986#endif
16987}
16988PRESERVE_NONE
16989static bool Interp_EQSint64(InterpState &S) {
16990 if (!EQ<PT_Sint64>(S, S.PC)) return false;
16991#if USE_TAILCALLS
16992 MUSTTAIL return InterpNext(S);
16993#else
16994 return true;
16995#endif
16996}
16997PRESERVE_NONE
16998static bool Interp_EQUint64(InterpState &S) {
16999 if (!EQ<PT_Uint64>(S, S.PC)) return false;
17000#if USE_TAILCALLS
17001 MUSTTAIL return InterpNext(S);
17002#else
17003 return true;
17004#endif
17005}
17006PRESERVE_NONE
17007static bool Interp_EQIntAP(InterpState &S) {
17008 if (!EQ<PT_IntAP>(S, S.PC)) return false;
17009#if USE_TAILCALLS
17010 MUSTTAIL return InterpNext(S);
17011#else
17012 return true;
17013#endif
17014}
17015PRESERVE_NONE
17016static bool Interp_EQIntAPS(InterpState &S) {
17017 if (!EQ<PT_IntAPS>(S, S.PC)) return false;
17018#if USE_TAILCALLS
17019 MUSTTAIL return InterpNext(S);
17020#else
17021 return true;
17022#endif
17023}
17024PRESERVE_NONE
17025static bool Interp_EQBool(InterpState &S) {
17026 if (!EQ<PT_Bool>(S, S.PC)) return false;
17027#if USE_TAILCALLS
17028 MUSTTAIL return InterpNext(S);
17029#else
17030 return true;
17031#endif
17032}
17033PRESERVE_NONE
17034static bool Interp_EQFixedPoint(InterpState &S) {
17035 if (!EQ<PT_FixedPoint>(S, S.PC)) return false;
17036#if USE_TAILCALLS
17037 MUSTTAIL return InterpNext(S);
17038#else
17039 return true;
17040#endif
17041}
17042PRESERVE_NONE
17043static bool Interp_EQPtr(InterpState &S) {
17044 if (!EQ<PT_Ptr>(S, S.PC)) return false;
17045#if USE_TAILCALLS
17046 MUSTTAIL return InterpNext(S);
17047#else
17048 return true;
17049#endif
17050}
17051PRESERVE_NONE
17052static bool Interp_EQMemberPtr(InterpState &S) {
17053 if (!EQ<PT_MemberPtr>(S, S.PC)) return false;
17054#if USE_TAILCALLS
17055 MUSTTAIL return InterpNext(S);
17056#else
17057 return true;
17058#endif
17059}
17060PRESERVE_NONE
17061static bool Interp_EQFloat(InterpState &S) {
17062 if (!EQ<PT_Float>(S, S.PC)) return false;
17063#if USE_TAILCALLS
17064 MUSTTAIL return InterpNext(S);
17065#else
17066 return true;
17067#endif
17068}
17069#endif
17070#ifdef GET_DISASM
17071case OP_EQSint8:
17072 Text.Op = PrintName("EQSint8");
17073 break;
17074case OP_EQUint8:
17075 Text.Op = PrintName("EQUint8");
17076 break;
17077case OP_EQSint16:
17078 Text.Op = PrintName("EQSint16");
17079 break;
17080case OP_EQUint16:
17081 Text.Op = PrintName("EQUint16");
17082 break;
17083case OP_EQSint32:
17084 Text.Op = PrintName("EQSint32");
17085 break;
17086case OP_EQUint32:
17087 Text.Op = PrintName("EQUint32");
17088 break;
17089case OP_EQSint64:
17090 Text.Op = PrintName("EQSint64");
17091 break;
17092case OP_EQUint64:
17093 Text.Op = PrintName("EQUint64");
17094 break;
17095case OP_EQIntAP:
17096 Text.Op = PrintName("EQIntAP");
17097 break;
17098case OP_EQIntAPS:
17099 Text.Op = PrintName("EQIntAPS");
17100 break;
17101case OP_EQBool:
17102 Text.Op = PrintName("EQBool");
17103 break;
17104case OP_EQFixedPoint:
17105 Text.Op = PrintName("EQFixedPoint");
17106 break;
17107case OP_EQPtr:
17108 Text.Op = PrintName("EQPtr");
17109 break;
17110case OP_EQMemberPtr:
17111 Text.Op = PrintName("EQMemberPtr");
17112 break;
17113case OP_EQFloat:
17114 Text.Op = PrintName("EQFloat");
17115 break;
17116#endif
17117#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17118bool emitEQSint8(SourceInfo);
17119bool emitEQUint8(SourceInfo);
17120bool emitEQSint16(SourceInfo);
17121bool emitEQUint16(SourceInfo);
17122bool emitEQSint32(SourceInfo);
17123bool emitEQUint32(SourceInfo);
17124bool emitEQSint64(SourceInfo);
17125bool emitEQUint64(SourceInfo);
17126bool emitEQIntAP(SourceInfo);
17127bool emitEQIntAPS(SourceInfo);
17128bool emitEQBool(SourceInfo);
17129bool emitEQFixedPoint(SourceInfo);
17130bool emitEQPtr(SourceInfo);
17131bool emitEQMemberPtr(SourceInfo);
17132bool emitEQFloat(SourceInfo);
17133#endif
17134#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17135[[nodiscard]] bool emitEQ(PrimType, SourceInfo I);
17136#endif
17137#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
17138bool
17139#if defined(GET_EVAL_IMPL)
17140EvalEmitter
17141#else
17142ByteCodeEmitter
17143#endif
17144::emitEQ(PrimType T0, SourceInfo I) {
17145 switch (T0) {
17146 case PT_Sint8:
17147 return emitEQSint8(I);
17148 case PT_Uint8:
17149 return emitEQUint8(I);
17150 case PT_Sint16:
17151 return emitEQSint16(I);
17152 case PT_Uint16:
17153 return emitEQUint16(I);
17154 case PT_Sint32:
17155 return emitEQSint32(I);
17156 case PT_Uint32:
17157 return emitEQUint32(I);
17158 case PT_Sint64:
17159 return emitEQSint64(I);
17160 case PT_Uint64:
17161 return emitEQUint64(I);
17162 case PT_IntAP:
17163 return emitEQIntAP(I);
17164 case PT_IntAPS:
17165 return emitEQIntAPS(I);
17166 case PT_Bool:
17167 return emitEQBool(I);
17168 case PT_FixedPoint:
17169 return emitEQFixedPoint(I);
17170 case PT_Ptr:
17171 return emitEQPtr(I);
17172 case PT_MemberPtr:
17173 return emitEQMemberPtr(I);
17174 case PT_Float:
17175 return emitEQFloat(I);
17176 }
17177 llvm_unreachable("invalid enum value");
17178}
17179#endif
17180#ifdef GET_LINK_IMPL
17181bool ByteCodeEmitter::emitEQSint8(SourceInfo L) {
17182 return emitOp<>(OP_EQSint8, L);
17183}
17184bool ByteCodeEmitter::emitEQUint8(SourceInfo L) {
17185 return emitOp<>(OP_EQUint8, L);
17186}
17187bool ByteCodeEmitter::emitEQSint16(SourceInfo L) {
17188 return emitOp<>(OP_EQSint16, L);
17189}
17190bool ByteCodeEmitter::emitEQUint16(SourceInfo L) {
17191 return emitOp<>(OP_EQUint16, L);
17192}
17193bool ByteCodeEmitter::emitEQSint32(SourceInfo L) {
17194 return emitOp<>(OP_EQSint32, L);
17195}
17196bool ByteCodeEmitter::emitEQUint32(SourceInfo L) {
17197 return emitOp<>(OP_EQUint32, L);
17198}
17199bool ByteCodeEmitter::emitEQSint64(SourceInfo L) {
17200 return emitOp<>(OP_EQSint64, L);
17201}
17202bool ByteCodeEmitter::emitEQUint64(SourceInfo L) {
17203 return emitOp<>(OP_EQUint64, L);
17204}
17205bool ByteCodeEmitter::emitEQIntAP(SourceInfo L) {
17206 return emitOp<>(OP_EQIntAP, L);
17207}
17208bool ByteCodeEmitter::emitEQIntAPS(SourceInfo L) {
17209 return emitOp<>(OP_EQIntAPS, L);
17210}
17211bool ByteCodeEmitter::emitEQBool(SourceInfo L) {
17212 return emitOp<>(OP_EQBool, L);
17213}
17214bool ByteCodeEmitter::emitEQFixedPoint(SourceInfo L) {
17215 return emitOp<>(OP_EQFixedPoint, L);
17216}
17217bool ByteCodeEmitter::emitEQPtr(SourceInfo L) {
17218 return emitOp<>(OP_EQPtr, L);
17219}
17220bool ByteCodeEmitter::emitEQMemberPtr(SourceInfo L) {
17221 return emitOp<>(OP_EQMemberPtr, L);
17222}
17223bool ByteCodeEmitter::emitEQFloat(SourceInfo L) {
17224 return emitOp<>(OP_EQFloat, L);
17225}
17226#endif
17227#ifdef GET_EVAL_IMPL
17228bool EvalEmitter::emitEQSint8(SourceInfo L) {
17229 if (!isActive()) return true;
17230 CurrentSource = L;
17231 return EQ<PT_Sint8>(S, CodePtr());
17232}
17233bool EvalEmitter::emitEQUint8(SourceInfo L) {
17234 if (!isActive()) return true;
17235 CurrentSource = L;
17236 return EQ<PT_Uint8>(S, CodePtr());
17237}
17238bool EvalEmitter::emitEQSint16(SourceInfo L) {
17239 if (!isActive()) return true;
17240 CurrentSource = L;
17241 return EQ<PT_Sint16>(S, CodePtr());
17242}
17243bool EvalEmitter::emitEQUint16(SourceInfo L) {
17244 if (!isActive()) return true;
17245 CurrentSource = L;
17246 return EQ<PT_Uint16>(S, CodePtr());
17247}
17248bool EvalEmitter::emitEQSint32(SourceInfo L) {
17249 if (!isActive()) return true;
17250 CurrentSource = L;
17251 return EQ<PT_Sint32>(S, CodePtr());
17252}
17253bool EvalEmitter::emitEQUint32(SourceInfo L) {
17254 if (!isActive()) return true;
17255 CurrentSource = L;
17256 return EQ<PT_Uint32>(S, CodePtr());
17257}
17258bool EvalEmitter::emitEQSint64(SourceInfo L) {
17259 if (!isActive()) return true;
17260 CurrentSource = L;
17261 return EQ<PT_Sint64>(S, CodePtr());
17262}
17263bool EvalEmitter::emitEQUint64(SourceInfo L) {
17264 if (!isActive()) return true;
17265 CurrentSource = L;
17266 return EQ<PT_Uint64>(S, CodePtr());
17267}
17268bool EvalEmitter::emitEQIntAP(SourceInfo L) {
17269 if (!isActive()) return true;
17270 CurrentSource = L;
17271 return EQ<PT_IntAP>(S, CodePtr());
17272}
17273bool EvalEmitter::emitEQIntAPS(SourceInfo L) {
17274 if (!isActive()) return true;
17275 CurrentSource = L;
17276 return EQ<PT_IntAPS>(S, CodePtr());
17277}
17278bool EvalEmitter::emitEQBool(SourceInfo L) {
17279 if (!isActive()) return true;
17280 CurrentSource = L;
17281 return EQ<PT_Bool>(S, CodePtr());
17282}
17283bool EvalEmitter::emitEQFixedPoint(SourceInfo L) {
17284 if (!isActive()) return true;
17285 CurrentSource = L;
17286 return EQ<PT_FixedPoint>(S, CodePtr());
17287}
17288bool EvalEmitter::emitEQPtr(SourceInfo L) {
17289 if (!isActive()) return true;
17290 CurrentSource = L;
17291 return EQ<PT_Ptr>(S, CodePtr());
17292}
17293bool EvalEmitter::emitEQMemberPtr(SourceInfo L) {
17294 if (!isActive()) return true;
17295 CurrentSource = L;
17296 return EQ<PT_MemberPtr>(S, CodePtr());
17297}
17298bool EvalEmitter::emitEQFloat(SourceInfo L) {
17299 if (!isActive()) return true;
17300 CurrentSource = L;
17301 return EQ<PT_Float>(S, CodePtr());
17302}
17303#endif
17304#ifdef GET_OPCODE_NAMES
17305OP_EnableLocal,
17306#endif
17307#ifdef GET_INTERPFN_LIST
17308&Interp_EnableLocal,
17309#endif
17310#ifdef GET_INTERPFN_DISPATCHERS
17311PRESERVE_NONE
17312static bool Interp_EnableLocal(InterpState &S) {
17313 {
17314 const auto V0 = ReadArg<uint32_t>(S, S.PC);
17315 EnableLocal(S, V0);
17316 }
17317#if USE_TAILCALLS
17318 MUSTTAIL return InterpNext(S);
17319#else
17320 return true;
17321#endif
17322}
17323#endif
17324#ifdef GET_DISASM
17325case OP_EnableLocal:
17326 Text.Op = PrintName("EnableLocal");
17327 Text.Args.push_back(printArg<uint32_t>(PC));
17328 break;
17329#endif
17330#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17331bool emitEnableLocal( uint32_t , SourceInfo);
17332#endif
17333#ifdef GET_LINK_IMPL
17334bool ByteCodeEmitter::emitEnableLocal( uint32_t A0, SourceInfo L) {
17335 return emitOp<uint32_t>(OP_EnableLocal, A0, L);
17336}
17337#endif
17338#ifdef GET_OPCODE_NAMES
17339OP_EndInit,
17340#endif
17341#ifdef GET_INTERPFN_LIST
17342&Interp_EndInit,
17343#endif
17344#ifdef GET_INTERPFN_DISPATCHERS
17345PRESERVE_NONE
17346static bool Interp_EndInit(InterpState &S) {
17347 EndInit(S);
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_EndInit:
17357 Text.Op = PrintName("EndInit");
17358 break;
17359#endif
17360#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17361bool emitEndInit(SourceInfo);
17362#endif
17363#ifdef GET_LINK_IMPL
17364bool ByteCodeEmitter::emitEndInit(SourceInfo L) {
17365 return emitOp<>(OP_EndInit, L);
17366}
17367#endif
17368#ifdef GET_EVAL_IMPL
17369bool EvalEmitter::emitEndInit(SourceInfo L) {
17370 if (!isActive()) return true;
17371 CurrentSource = L;
17372 return EndInit(S);
17373}
17374#endif
17375#ifdef GET_OPCODE_NAMES
17376OP_EndLifetime,
17377#endif
17378#ifdef GET_INTERPFN_LIST
17379&Interp_EndLifetime,
17380#endif
17381#ifdef GET_INTERPFN_DISPATCHERS
17382PRESERVE_NONE
17383static bool Interp_EndLifetime(InterpState &S) {
17384 if (!EndLifetime(S, S.PC)) return false;
17385#if USE_TAILCALLS
17386 MUSTTAIL return InterpNext(S);
17387#else
17388 return true;
17389#endif
17390}
17391#endif
17392#ifdef GET_DISASM
17393case OP_EndLifetime:
17394 Text.Op = PrintName("EndLifetime");
17395 break;
17396#endif
17397#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17398bool emitEndLifetime(SourceInfo);
17399#endif
17400#ifdef GET_LINK_IMPL
17401bool ByteCodeEmitter::emitEndLifetime(SourceInfo L) {
17402 return emitOp<>(OP_EndLifetime, L);
17403}
17404#endif
17405#ifdef GET_EVAL_IMPL
17406bool EvalEmitter::emitEndLifetime(SourceInfo L) {
17407 if (!isActive()) return true;
17408 CurrentSource = L;
17409 return EndLifetime(S, CodePtr());
17410}
17411#endif
17412#ifdef GET_OPCODE_NAMES
17413OP_EndSpeculation,
17414#endif
17415#ifdef GET_INTERPFN_LIST
17416&Interp_EndSpeculation,
17417#endif
17418#ifdef GET_INTERPFN_DISPATCHERS
17419PRESERVE_NONE
17420static bool Interp_EndSpeculation(InterpState &S) {
17421 MUSTTAIL return EndSpeculation(S);
17422}
17423#endif
17424#ifdef GET_DISASM
17425case OP_EndSpeculation:
17426 Text.Op = PrintName("EndSpeculation");
17427 break;
17428#endif
17429#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17430bool emitEndSpeculation(SourceInfo);
17431#endif
17432#ifdef GET_LINK_IMPL
17433bool ByteCodeEmitter::emitEndSpeculation(SourceInfo L) {
17434 return emitOp<>(OP_EndSpeculation, L);
17435}
17436#endif
17437#ifdef GET_EVAL_IMPL
17438bool EvalEmitter::emitEndSpeculation(SourceInfo L) {
17439 if (!isActive()) return true;
17440 CurrentSource = L;
17441return EndSpeculation(S);
17442}
17443#endif
17444#ifdef GET_OPCODE_NAMES
17445OP_Error,
17446#endif
17447#ifdef GET_INTERPFN_LIST
17448&Interp_Error,
17449#endif
17450#ifdef GET_INTERPFN_DISPATCHERS
17451PRESERVE_NONE
17452static bool Interp_Error(InterpState &S) {
17453 if (!Error(S)) return false;
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_Error:
17463 Text.Op = PrintName("Error");
17464 break;
17465#endif
17466#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17467bool emitError(SourceInfo);
17468#endif
17469#ifdef GET_LINK_IMPL
17470bool ByteCodeEmitter::emitError(SourceInfo L) {
17471 return emitOp<>(OP_Error, L);
17472}
17473#endif
17474#ifdef GET_EVAL_IMPL
17475bool EvalEmitter::emitError(SourceInfo L) {
17476 if (!isActive()) return true;
17477 CurrentSource = L;
17478 return Error(S);
17479}
17480#endif
17481#ifdef GET_OPCODE_NAMES
17482OP_ExpandPtr,
17483#endif
17484#ifdef GET_INTERPFN_LIST
17485&Interp_ExpandPtr,
17486#endif
17487#ifdef GET_INTERPFN_DISPATCHERS
17488PRESERVE_NONE
17489static bool Interp_ExpandPtr(InterpState &S) {
17490 ExpandPtr(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_ExpandPtr:
17500 Text.Op = PrintName("ExpandPtr");
17501 break;
17502#endif
17503#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17504bool emitExpandPtr(SourceInfo);
17505#endif
17506#ifdef GET_LINK_IMPL
17507bool ByteCodeEmitter::emitExpandPtr(SourceInfo L) {
17508 return emitOp<>(OP_ExpandPtr, L);
17509}
17510#endif
17511#ifdef GET_EVAL_IMPL
17512bool EvalEmitter::emitExpandPtr(SourceInfo L) {
17513 if (!isActive()) return true;
17514 CurrentSource = L;
17515 return ExpandPtr(S);
17516}
17517#endif
17518#ifdef GET_OPCODE_NAMES
17519OP_FinishInit,
17520#endif
17521#ifdef GET_INTERPFN_LIST
17522&Interp_FinishInit,
17523#endif
17524#ifdef GET_INTERPFN_DISPATCHERS
17525PRESERVE_NONE
17526static bool Interp_FinishInit(InterpState &S) {
17527 FinishInit(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_FinishInit:
17537 Text.Op = PrintName("FinishInit");
17538 break;
17539#endif
17540#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17541bool emitFinishInit(SourceInfo);
17542#endif
17543#ifdef GET_LINK_IMPL
17544bool ByteCodeEmitter::emitFinishInit(SourceInfo L) {
17545 return emitOp<>(OP_FinishInit, L);
17546}
17547#endif
17548#ifdef GET_EVAL_IMPL
17549bool EvalEmitter::emitFinishInit(SourceInfo L) {
17550 if (!isActive()) return true;
17551 CurrentSource = L;
17552 return FinishInit(S);
17553}
17554#endif
17555#ifdef GET_OPCODE_NAMES
17556OP_FinishInitActivate,
17557#endif
17558#ifdef GET_INTERPFN_LIST
17559&Interp_FinishInitActivate,
17560#endif
17561#ifdef GET_INTERPFN_DISPATCHERS
17562PRESERVE_NONE
17563static bool Interp_FinishInitActivate(InterpState &S) {
17564 FinishInitActivate(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_FinishInitActivate:
17574 Text.Op = PrintName("FinishInitActivate");
17575 break;
17576#endif
17577#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17578bool emitFinishInitActivate(SourceInfo);
17579#endif
17580#ifdef GET_LINK_IMPL
17581bool ByteCodeEmitter::emitFinishInitActivate(SourceInfo L) {
17582 return emitOp<>(OP_FinishInitActivate, L);
17583}
17584#endif
17585#ifdef GET_EVAL_IMPL
17586bool EvalEmitter::emitFinishInitActivate(SourceInfo L) {
17587 if (!isActive()) return true;
17588 CurrentSource = L;
17589 return FinishInitActivate(S);
17590}
17591#endif
17592#ifdef GET_OPCODE_NAMES
17593OP_FinishInitActivatePop,
17594#endif
17595#ifdef GET_INTERPFN_LIST
17596&Interp_FinishInitActivatePop,
17597#endif
17598#ifdef GET_INTERPFN_DISPATCHERS
17599PRESERVE_NONE
17600static bool Interp_FinishInitActivatePop(InterpState &S) {
17601 FinishInitActivatePop(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_FinishInitActivatePop:
17611 Text.Op = PrintName("FinishInitActivatePop");
17612 break;
17613#endif
17614#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17615bool emitFinishInitActivatePop(SourceInfo);
17616#endif
17617#ifdef GET_LINK_IMPL
17618bool ByteCodeEmitter::emitFinishInitActivatePop(SourceInfo L) {
17619 return emitOp<>(OP_FinishInitActivatePop, L);
17620}
17621#endif
17622#ifdef GET_EVAL_IMPL
17623bool EvalEmitter::emitFinishInitActivatePop(SourceInfo L) {
17624 if (!isActive()) return true;
17625 CurrentSource = L;
17626 return FinishInitActivatePop(S);
17627}
17628#endif
17629#ifdef GET_OPCODE_NAMES
17630OP_FinishInitGlobal,
17631#endif
17632#ifdef GET_INTERPFN_LIST
17633&Interp_FinishInitGlobal,
17634#endif
17635#ifdef GET_INTERPFN_DISPATCHERS
17636PRESERVE_NONE
17637static bool Interp_FinishInitGlobal(InterpState &S) {
17638 FinishInitGlobal(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_FinishInitGlobal:
17648 Text.Op = PrintName("FinishInitGlobal");
17649 break;
17650#endif
17651#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17652bool emitFinishInitGlobal(SourceInfo);
17653#endif
17654#ifdef GET_LINK_IMPL
17655bool ByteCodeEmitter::emitFinishInitGlobal(SourceInfo L) {
17656 return emitOp<>(OP_FinishInitGlobal, L);
17657}
17658#endif
17659#ifdef GET_EVAL_IMPL
17660bool EvalEmitter::emitFinishInitGlobal(SourceInfo L) {
17661 if (!isActive()) return true;
17662 CurrentSource = L;
17663 return FinishInitGlobal(S);
17664}
17665#endif
17666#ifdef GET_OPCODE_NAMES
17667OP_FinishInitPop,
17668#endif
17669#ifdef GET_INTERPFN_LIST
17670&Interp_FinishInitPop,
17671#endif
17672#ifdef GET_INTERPFN_DISPATCHERS
17673PRESERVE_NONE
17674static bool Interp_FinishInitPop(InterpState &S) {
17675 FinishInitPop(S);
17676#if USE_TAILCALLS
17677 MUSTTAIL return InterpNext(S);
17678#else
17679 return true;
17680#endif
17681}
17682#endif
17683#ifdef GET_DISASM
17684case OP_FinishInitPop:
17685 Text.Op = PrintName("FinishInitPop");
17686 break;
17687#endif
17688#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17689bool emitFinishInitPop(SourceInfo);
17690#endif
17691#ifdef GET_LINK_IMPL
17692bool ByteCodeEmitter::emitFinishInitPop(SourceInfo L) {
17693 return emitOp<>(OP_FinishInitPop, L);
17694}
17695#endif
17696#ifdef GET_EVAL_IMPL
17697bool EvalEmitter::emitFinishInitPop(SourceInfo L) {
17698 if (!isActive()) return true;
17699 CurrentSource = L;
17700 return FinishInitPop(S);
17701}
17702#endif
17703#ifdef GET_OPCODE_NAMES
17704OP_FlipSint8Sint8,
17705OP_FlipSint8Uint8,
17706OP_FlipSint8Sint16,
17707OP_FlipSint8Uint16,
17708OP_FlipSint8Sint32,
17709OP_FlipSint8Uint32,
17710OP_FlipSint8Sint64,
17711OP_FlipSint8Uint64,
17712OP_FlipSint8IntAP,
17713OP_FlipSint8IntAPS,
17714OP_FlipSint8Bool,
17715OP_FlipSint8FixedPoint,
17716OP_FlipSint8Ptr,
17717OP_FlipSint8MemberPtr,
17718OP_FlipSint8Float,
17719OP_FlipUint8Sint8,
17720OP_FlipUint8Uint8,
17721OP_FlipUint8Sint16,
17722OP_FlipUint8Uint16,
17723OP_FlipUint8Sint32,
17724OP_FlipUint8Uint32,
17725OP_FlipUint8Sint64,
17726OP_FlipUint8Uint64,
17727OP_FlipUint8IntAP,
17728OP_FlipUint8IntAPS,
17729OP_FlipUint8Bool,
17730OP_FlipUint8FixedPoint,
17731OP_FlipUint8Ptr,
17732OP_FlipUint8MemberPtr,
17733OP_FlipUint8Float,
17734OP_FlipSint16Sint8,
17735OP_FlipSint16Uint8,
17736OP_FlipSint16Sint16,
17737OP_FlipSint16Uint16,
17738OP_FlipSint16Sint32,
17739OP_FlipSint16Uint32,
17740OP_FlipSint16Sint64,
17741OP_FlipSint16Uint64,
17742OP_FlipSint16IntAP,
17743OP_FlipSint16IntAPS,
17744OP_FlipSint16Bool,
17745OP_FlipSint16FixedPoint,
17746OP_FlipSint16Ptr,
17747OP_FlipSint16MemberPtr,
17748OP_FlipSint16Float,
17749OP_FlipUint16Sint8,
17750OP_FlipUint16Uint8,
17751OP_FlipUint16Sint16,
17752OP_FlipUint16Uint16,
17753OP_FlipUint16Sint32,
17754OP_FlipUint16Uint32,
17755OP_FlipUint16Sint64,
17756OP_FlipUint16Uint64,
17757OP_FlipUint16IntAP,
17758OP_FlipUint16IntAPS,
17759OP_FlipUint16Bool,
17760OP_FlipUint16FixedPoint,
17761OP_FlipUint16Ptr,
17762OP_FlipUint16MemberPtr,
17763OP_FlipUint16Float,
17764OP_FlipSint32Sint8,
17765OP_FlipSint32Uint8,
17766OP_FlipSint32Sint16,
17767OP_FlipSint32Uint16,
17768OP_FlipSint32Sint32,
17769OP_FlipSint32Uint32,
17770OP_FlipSint32Sint64,
17771OP_FlipSint32Uint64,
17772OP_FlipSint32IntAP,
17773OP_FlipSint32IntAPS,
17774OP_FlipSint32Bool,
17775OP_FlipSint32FixedPoint,
17776OP_FlipSint32Ptr,
17777OP_FlipSint32MemberPtr,
17778OP_FlipSint32Float,
17779OP_FlipUint32Sint8,
17780OP_FlipUint32Uint8,
17781OP_FlipUint32Sint16,
17782OP_FlipUint32Uint16,
17783OP_FlipUint32Sint32,
17784OP_FlipUint32Uint32,
17785OP_FlipUint32Sint64,
17786OP_FlipUint32Uint64,
17787OP_FlipUint32IntAP,
17788OP_FlipUint32IntAPS,
17789OP_FlipUint32Bool,
17790OP_FlipUint32FixedPoint,
17791OP_FlipUint32Ptr,
17792OP_FlipUint32MemberPtr,
17793OP_FlipUint32Float,
17794OP_FlipSint64Sint8,
17795OP_FlipSint64Uint8,
17796OP_FlipSint64Sint16,
17797OP_FlipSint64Uint16,
17798OP_FlipSint64Sint32,
17799OP_FlipSint64Uint32,
17800OP_FlipSint64Sint64,
17801OP_FlipSint64Uint64,
17802OP_FlipSint64IntAP,
17803OP_FlipSint64IntAPS,
17804OP_FlipSint64Bool,
17805OP_FlipSint64FixedPoint,
17806OP_FlipSint64Ptr,
17807OP_FlipSint64MemberPtr,
17808OP_FlipSint64Float,
17809OP_FlipUint64Sint8,
17810OP_FlipUint64Uint8,
17811OP_FlipUint64Sint16,
17812OP_FlipUint64Uint16,
17813OP_FlipUint64Sint32,
17814OP_FlipUint64Uint32,
17815OP_FlipUint64Sint64,
17816OP_FlipUint64Uint64,
17817OP_FlipUint64IntAP,
17818OP_FlipUint64IntAPS,
17819OP_FlipUint64Bool,
17820OP_FlipUint64FixedPoint,
17821OP_FlipUint64Ptr,
17822OP_FlipUint64MemberPtr,
17823OP_FlipUint64Float,
17824OP_FlipIntAPSint8,
17825OP_FlipIntAPUint8,
17826OP_FlipIntAPSint16,
17827OP_FlipIntAPUint16,
17828OP_FlipIntAPSint32,
17829OP_FlipIntAPUint32,
17830OP_FlipIntAPSint64,
17831OP_FlipIntAPUint64,
17832OP_FlipIntAPIntAP,
17833OP_FlipIntAPIntAPS,
17834OP_FlipIntAPBool,
17835OP_FlipIntAPFixedPoint,
17836OP_FlipIntAPPtr,
17837OP_FlipIntAPMemberPtr,
17838OP_FlipIntAPFloat,
17839OP_FlipIntAPSSint8,
17840OP_FlipIntAPSUint8,
17841OP_FlipIntAPSSint16,
17842OP_FlipIntAPSUint16,
17843OP_FlipIntAPSSint32,
17844OP_FlipIntAPSUint32,
17845OP_FlipIntAPSSint64,
17846OP_FlipIntAPSUint64,
17847OP_FlipIntAPSIntAP,
17848OP_FlipIntAPSIntAPS,
17849OP_FlipIntAPSBool,
17850OP_FlipIntAPSFixedPoint,
17851OP_FlipIntAPSPtr,
17852OP_FlipIntAPSMemberPtr,
17853OP_FlipIntAPSFloat,
17854OP_FlipBoolSint8,
17855OP_FlipBoolUint8,
17856OP_FlipBoolSint16,
17857OP_FlipBoolUint16,
17858OP_FlipBoolSint32,
17859OP_FlipBoolUint32,
17860OP_FlipBoolSint64,
17861OP_FlipBoolUint64,
17862OP_FlipBoolIntAP,
17863OP_FlipBoolIntAPS,
17864OP_FlipBoolBool,
17865OP_FlipBoolFixedPoint,
17866OP_FlipBoolPtr,
17867OP_FlipBoolMemberPtr,
17868OP_FlipBoolFloat,
17869OP_FlipFixedPointSint8,
17870OP_FlipFixedPointUint8,
17871OP_FlipFixedPointSint16,
17872OP_FlipFixedPointUint16,
17873OP_FlipFixedPointSint32,
17874OP_FlipFixedPointUint32,
17875OP_FlipFixedPointSint64,
17876OP_FlipFixedPointUint64,
17877OP_FlipFixedPointIntAP,
17878OP_FlipFixedPointIntAPS,
17879OP_FlipFixedPointBool,
17880OP_FlipFixedPointFixedPoint,
17881OP_FlipFixedPointPtr,
17882OP_FlipFixedPointMemberPtr,
17883OP_FlipFixedPointFloat,
17884OP_FlipPtrSint8,
17885OP_FlipPtrUint8,
17886OP_FlipPtrSint16,
17887OP_FlipPtrUint16,
17888OP_FlipPtrSint32,
17889OP_FlipPtrUint32,
17890OP_FlipPtrSint64,
17891OP_FlipPtrUint64,
17892OP_FlipPtrIntAP,
17893OP_FlipPtrIntAPS,
17894OP_FlipPtrBool,
17895OP_FlipPtrFixedPoint,
17896OP_FlipPtrPtr,
17897OP_FlipPtrMemberPtr,
17898OP_FlipPtrFloat,
17899OP_FlipMemberPtrSint8,
17900OP_FlipMemberPtrUint8,
17901OP_FlipMemberPtrSint16,
17902OP_FlipMemberPtrUint16,
17903OP_FlipMemberPtrSint32,
17904OP_FlipMemberPtrUint32,
17905OP_FlipMemberPtrSint64,
17906OP_FlipMemberPtrUint64,
17907OP_FlipMemberPtrIntAP,
17908OP_FlipMemberPtrIntAPS,
17909OP_FlipMemberPtrBool,
17910OP_FlipMemberPtrFixedPoint,
17911OP_FlipMemberPtrPtr,
17912OP_FlipMemberPtrMemberPtr,
17913OP_FlipMemberPtrFloat,
17914OP_FlipFloatSint8,
17915OP_FlipFloatUint8,
17916OP_FlipFloatSint16,
17917OP_FlipFloatUint16,
17918OP_FlipFloatSint32,
17919OP_FlipFloatUint32,
17920OP_FlipFloatSint64,
17921OP_FlipFloatUint64,
17922OP_FlipFloatIntAP,
17923OP_FlipFloatIntAPS,
17924OP_FlipFloatBool,
17925OP_FlipFloatFixedPoint,
17926OP_FlipFloatPtr,
17927OP_FlipFloatMemberPtr,
17928OP_FlipFloatFloat,
17929#endif
17930#ifdef GET_INTERPFN_LIST
17931&Interp_FlipSint8Sint8,
17932&Interp_FlipSint8Uint8,
17933&Interp_FlipSint8Sint16,
17934&Interp_FlipSint8Uint16,
17935&Interp_FlipSint8Sint32,
17936&Interp_FlipSint8Uint32,
17937&Interp_FlipSint8Sint64,
17938&Interp_FlipSint8Uint64,
17939&Interp_FlipSint8IntAP,
17940&Interp_FlipSint8IntAPS,
17941&Interp_FlipSint8Bool,
17942&Interp_FlipSint8FixedPoint,
17943&Interp_FlipSint8Ptr,
17944&Interp_FlipSint8MemberPtr,
17945&Interp_FlipSint8Float,
17946&Interp_FlipUint8Sint8,
17947&Interp_FlipUint8Uint8,
17948&Interp_FlipUint8Sint16,
17949&Interp_FlipUint8Uint16,
17950&Interp_FlipUint8Sint32,
17951&Interp_FlipUint8Uint32,
17952&Interp_FlipUint8Sint64,
17953&Interp_FlipUint8Uint64,
17954&Interp_FlipUint8IntAP,
17955&Interp_FlipUint8IntAPS,
17956&Interp_FlipUint8Bool,
17957&Interp_FlipUint8FixedPoint,
17958&Interp_FlipUint8Ptr,
17959&Interp_FlipUint8MemberPtr,
17960&Interp_FlipUint8Float,
17961&Interp_FlipSint16Sint8,
17962&Interp_FlipSint16Uint8,
17963&Interp_FlipSint16Sint16,
17964&Interp_FlipSint16Uint16,
17965&Interp_FlipSint16Sint32,
17966&Interp_FlipSint16Uint32,
17967&Interp_FlipSint16Sint64,
17968&Interp_FlipSint16Uint64,
17969&Interp_FlipSint16IntAP,
17970&Interp_FlipSint16IntAPS,
17971&Interp_FlipSint16Bool,
17972&Interp_FlipSint16FixedPoint,
17973&Interp_FlipSint16Ptr,
17974&Interp_FlipSint16MemberPtr,
17975&Interp_FlipSint16Float,
17976&Interp_FlipUint16Sint8,
17977&Interp_FlipUint16Uint8,
17978&Interp_FlipUint16Sint16,
17979&Interp_FlipUint16Uint16,
17980&Interp_FlipUint16Sint32,
17981&Interp_FlipUint16Uint32,
17982&Interp_FlipUint16Sint64,
17983&Interp_FlipUint16Uint64,
17984&Interp_FlipUint16IntAP,
17985&Interp_FlipUint16IntAPS,
17986&Interp_FlipUint16Bool,
17987&Interp_FlipUint16FixedPoint,
17988&Interp_FlipUint16Ptr,
17989&Interp_FlipUint16MemberPtr,
17990&Interp_FlipUint16Float,
17991&Interp_FlipSint32Sint8,
17992&Interp_FlipSint32Uint8,
17993&Interp_FlipSint32Sint16,
17994&Interp_FlipSint32Uint16,
17995&Interp_FlipSint32Sint32,
17996&Interp_FlipSint32Uint32,
17997&Interp_FlipSint32Sint64,
17998&Interp_FlipSint32Uint64,
17999&Interp_FlipSint32IntAP,
18000&Interp_FlipSint32IntAPS,
18001&Interp_FlipSint32Bool,
18002&Interp_FlipSint32FixedPoint,
18003&Interp_FlipSint32Ptr,
18004&Interp_FlipSint32MemberPtr,
18005&Interp_FlipSint32Float,
18006&Interp_FlipUint32Sint8,
18007&Interp_FlipUint32Uint8,
18008&Interp_FlipUint32Sint16,
18009&Interp_FlipUint32Uint16,
18010&Interp_FlipUint32Sint32,
18011&Interp_FlipUint32Uint32,
18012&Interp_FlipUint32Sint64,
18013&Interp_FlipUint32Uint64,
18014&Interp_FlipUint32IntAP,
18015&Interp_FlipUint32IntAPS,
18016&Interp_FlipUint32Bool,
18017&Interp_FlipUint32FixedPoint,
18018&Interp_FlipUint32Ptr,
18019&Interp_FlipUint32MemberPtr,
18020&Interp_FlipUint32Float,
18021&Interp_FlipSint64Sint8,
18022&Interp_FlipSint64Uint8,
18023&Interp_FlipSint64Sint16,
18024&Interp_FlipSint64Uint16,
18025&Interp_FlipSint64Sint32,
18026&Interp_FlipSint64Uint32,
18027&Interp_FlipSint64Sint64,
18028&Interp_FlipSint64Uint64,
18029&Interp_FlipSint64IntAP,
18030&Interp_FlipSint64IntAPS,
18031&Interp_FlipSint64Bool,
18032&Interp_FlipSint64FixedPoint,
18033&Interp_FlipSint64Ptr,
18034&Interp_FlipSint64MemberPtr,
18035&Interp_FlipSint64Float,
18036&Interp_FlipUint64Sint8,
18037&Interp_FlipUint64Uint8,
18038&Interp_FlipUint64Sint16,
18039&Interp_FlipUint64Uint16,
18040&Interp_FlipUint64Sint32,
18041&Interp_FlipUint64Uint32,
18042&Interp_FlipUint64Sint64,
18043&Interp_FlipUint64Uint64,
18044&Interp_FlipUint64IntAP,
18045&Interp_FlipUint64IntAPS,
18046&Interp_FlipUint64Bool,
18047&Interp_FlipUint64FixedPoint,
18048&Interp_FlipUint64Ptr,
18049&Interp_FlipUint64MemberPtr,
18050&Interp_FlipUint64Float,
18051&Interp_FlipIntAPSint8,
18052&Interp_FlipIntAPUint8,
18053&Interp_FlipIntAPSint16,
18054&Interp_FlipIntAPUint16,
18055&Interp_FlipIntAPSint32,
18056&Interp_FlipIntAPUint32,
18057&Interp_FlipIntAPSint64,
18058&Interp_FlipIntAPUint64,
18059&Interp_FlipIntAPIntAP,
18060&Interp_FlipIntAPIntAPS,
18061&Interp_FlipIntAPBool,
18062&Interp_FlipIntAPFixedPoint,
18063&Interp_FlipIntAPPtr,
18064&Interp_FlipIntAPMemberPtr,
18065&Interp_FlipIntAPFloat,
18066&Interp_FlipIntAPSSint8,
18067&Interp_FlipIntAPSUint8,
18068&Interp_FlipIntAPSSint16,
18069&Interp_FlipIntAPSUint16,
18070&Interp_FlipIntAPSSint32,
18071&Interp_FlipIntAPSUint32,
18072&Interp_FlipIntAPSSint64,
18073&Interp_FlipIntAPSUint64,
18074&Interp_FlipIntAPSIntAP,
18075&Interp_FlipIntAPSIntAPS,
18076&Interp_FlipIntAPSBool,
18077&Interp_FlipIntAPSFixedPoint,
18078&Interp_FlipIntAPSPtr,
18079&Interp_FlipIntAPSMemberPtr,
18080&Interp_FlipIntAPSFloat,
18081&Interp_FlipBoolSint8,
18082&Interp_FlipBoolUint8,
18083&Interp_FlipBoolSint16,
18084&Interp_FlipBoolUint16,
18085&Interp_FlipBoolSint32,
18086&Interp_FlipBoolUint32,
18087&Interp_FlipBoolSint64,
18088&Interp_FlipBoolUint64,
18089&Interp_FlipBoolIntAP,
18090&Interp_FlipBoolIntAPS,
18091&Interp_FlipBoolBool,
18092&Interp_FlipBoolFixedPoint,
18093&Interp_FlipBoolPtr,
18094&Interp_FlipBoolMemberPtr,
18095&Interp_FlipBoolFloat,
18096&Interp_FlipFixedPointSint8,
18097&Interp_FlipFixedPointUint8,
18098&Interp_FlipFixedPointSint16,
18099&Interp_FlipFixedPointUint16,
18100&Interp_FlipFixedPointSint32,
18101&Interp_FlipFixedPointUint32,
18102&Interp_FlipFixedPointSint64,
18103&Interp_FlipFixedPointUint64,
18104&Interp_FlipFixedPointIntAP,
18105&Interp_FlipFixedPointIntAPS,
18106&Interp_FlipFixedPointBool,
18107&Interp_FlipFixedPointFixedPoint,
18108&Interp_FlipFixedPointPtr,
18109&Interp_FlipFixedPointMemberPtr,
18110&Interp_FlipFixedPointFloat,
18111&Interp_FlipPtrSint8,
18112&Interp_FlipPtrUint8,
18113&Interp_FlipPtrSint16,
18114&Interp_FlipPtrUint16,
18115&Interp_FlipPtrSint32,
18116&Interp_FlipPtrUint32,
18117&Interp_FlipPtrSint64,
18118&Interp_FlipPtrUint64,
18119&Interp_FlipPtrIntAP,
18120&Interp_FlipPtrIntAPS,
18121&Interp_FlipPtrBool,
18122&Interp_FlipPtrFixedPoint,
18123&Interp_FlipPtrPtr,
18124&Interp_FlipPtrMemberPtr,
18125&Interp_FlipPtrFloat,
18126&Interp_FlipMemberPtrSint8,
18127&Interp_FlipMemberPtrUint8,
18128&Interp_FlipMemberPtrSint16,
18129&Interp_FlipMemberPtrUint16,
18130&Interp_FlipMemberPtrSint32,
18131&Interp_FlipMemberPtrUint32,
18132&Interp_FlipMemberPtrSint64,
18133&Interp_FlipMemberPtrUint64,
18134&Interp_FlipMemberPtrIntAP,
18135&Interp_FlipMemberPtrIntAPS,
18136&Interp_FlipMemberPtrBool,
18137&Interp_FlipMemberPtrFixedPoint,
18138&Interp_FlipMemberPtrPtr,
18139&Interp_FlipMemberPtrMemberPtr,
18140&Interp_FlipMemberPtrFloat,
18141&Interp_FlipFloatSint8,
18142&Interp_FlipFloatUint8,
18143&Interp_FlipFloatSint16,
18144&Interp_FlipFloatUint16,
18145&Interp_FlipFloatSint32,
18146&Interp_FlipFloatUint32,
18147&Interp_FlipFloatSint64,
18148&Interp_FlipFloatUint64,
18149&Interp_FlipFloatIntAP,
18150&Interp_FlipFloatIntAPS,
18151&Interp_FlipFloatBool,
18152&Interp_FlipFloatFixedPoint,
18153&Interp_FlipFloatPtr,
18154&Interp_FlipFloatMemberPtr,
18155&Interp_FlipFloatFloat,
18156#endif
18157#ifdef GET_INTERPFN_DISPATCHERS
18158PRESERVE_NONE
18159static bool Interp_FlipSint8Sint8(InterpState &S) {
18160 Flip<PT_Sint8, PT_Sint8>(S);
18161#if USE_TAILCALLS
18162 MUSTTAIL return InterpNext(S);
18163#else
18164 return true;
18165#endif
18166}
18167PRESERVE_NONE
18168static bool Interp_FlipSint8Uint8(InterpState &S) {
18169 Flip<PT_Sint8, PT_Uint8>(S);
18170#if USE_TAILCALLS
18171 MUSTTAIL return InterpNext(S);
18172#else
18173 return true;
18174#endif
18175}
18176PRESERVE_NONE
18177static bool Interp_FlipSint8Sint16(InterpState &S) {
18178 Flip<PT_Sint8, PT_Sint16>(S);
18179#if USE_TAILCALLS
18180 MUSTTAIL return InterpNext(S);
18181#else
18182 return true;
18183#endif
18184}
18185PRESERVE_NONE
18186static bool Interp_FlipSint8Uint16(InterpState &S) {
18187 Flip<PT_Sint8, PT_Uint16>(S);
18188#if USE_TAILCALLS
18189 MUSTTAIL return InterpNext(S);
18190#else
18191 return true;
18192#endif
18193}
18194PRESERVE_NONE
18195static bool Interp_FlipSint8Sint32(InterpState &S) {
18196 Flip<PT_Sint8, PT_Sint32>(S);
18197#if USE_TAILCALLS
18198 MUSTTAIL return InterpNext(S);
18199#else
18200 return true;
18201#endif
18202}
18203PRESERVE_NONE
18204static bool Interp_FlipSint8Uint32(InterpState &S) {
18205 Flip<PT_Sint8, PT_Uint32>(S);
18206#if USE_TAILCALLS
18207 MUSTTAIL return InterpNext(S);
18208#else
18209 return true;
18210#endif
18211}
18212PRESERVE_NONE
18213static bool Interp_FlipSint8Sint64(InterpState &S) {
18214 Flip<PT_Sint8, PT_Sint64>(S);
18215#if USE_TAILCALLS
18216 MUSTTAIL return InterpNext(S);
18217#else
18218 return true;
18219#endif
18220}
18221PRESERVE_NONE
18222static bool Interp_FlipSint8Uint64(InterpState &S) {
18223 Flip<PT_Sint8, PT_Uint64>(S);
18224#if USE_TAILCALLS
18225 MUSTTAIL return InterpNext(S);
18226#else
18227 return true;
18228#endif
18229}
18230PRESERVE_NONE
18231static bool Interp_FlipSint8IntAP(InterpState &S) {
18232 Flip<PT_Sint8, PT_IntAP>(S);
18233#if USE_TAILCALLS
18234 MUSTTAIL return InterpNext(S);
18235#else
18236 return true;
18237#endif
18238}
18239PRESERVE_NONE
18240static bool Interp_FlipSint8IntAPS(InterpState &S) {
18241 Flip<PT_Sint8, PT_IntAPS>(S);
18242#if USE_TAILCALLS
18243 MUSTTAIL return InterpNext(S);
18244#else
18245 return true;
18246#endif
18247}
18248PRESERVE_NONE
18249static bool Interp_FlipSint8Bool(InterpState &S) {
18250 Flip<PT_Sint8, PT_Bool>(S);
18251#if USE_TAILCALLS
18252 MUSTTAIL return InterpNext(S);
18253#else
18254 return true;
18255#endif
18256}
18257PRESERVE_NONE
18258static bool Interp_FlipSint8FixedPoint(InterpState &S) {
18259 Flip<PT_Sint8, PT_FixedPoint>(S);
18260#if USE_TAILCALLS
18261 MUSTTAIL return InterpNext(S);
18262#else
18263 return true;
18264#endif
18265}
18266PRESERVE_NONE
18267static bool Interp_FlipSint8Ptr(InterpState &S) {
18268 Flip<PT_Sint8, PT_Ptr>(S);
18269#if USE_TAILCALLS
18270 MUSTTAIL return InterpNext(S);
18271#else
18272 return true;
18273#endif
18274}
18275PRESERVE_NONE
18276static bool Interp_FlipSint8MemberPtr(InterpState &S) {
18277 Flip<PT_Sint8, PT_MemberPtr>(S);
18278#if USE_TAILCALLS
18279 MUSTTAIL return InterpNext(S);
18280#else
18281 return true;
18282#endif
18283}
18284PRESERVE_NONE
18285static bool Interp_FlipSint8Float(InterpState &S) {
18286 Flip<PT_Sint8, PT_Float>(S);
18287#if USE_TAILCALLS
18288 MUSTTAIL return InterpNext(S);
18289#else
18290 return true;
18291#endif
18292}
18293PRESERVE_NONE
18294static bool Interp_FlipUint8Sint8(InterpState &S) {
18295 Flip<PT_Uint8, PT_Sint8>(S);
18296#if USE_TAILCALLS
18297 MUSTTAIL return InterpNext(S);
18298#else
18299 return true;
18300#endif
18301}
18302PRESERVE_NONE
18303static bool Interp_FlipUint8Uint8(InterpState &S) {
18304 Flip<PT_Uint8, PT_Uint8>(S);
18305#if USE_TAILCALLS
18306 MUSTTAIL return InterpNext(S);
18307#else
18308 return true;
18309#endif
18310}
18311PRESERVE_NONE
18312static bool Interp_FlipUint8Sint16(InterpState &S) {
18313 Flip<PT_Uint8, PT_Sint16>(S);
18314#if USE_TAILCALLS
18315 MUSTTAIL return InterpNext(S);
18316#else
18317 return true;
18318#endif
18319}
18320PRESERVE_NONE
18321static bool Interp_FlipUint8Uint16(InterpState &S) {
18322 Flip<PT_Uint8, PT_Uint16>(S);
18323#if USE_TAILCALLS
18324 MUSTTAIL return InterpNext(S);
18325#else
18326 return true;
18327#endif
18328}
18329PRESERVE_NONE
18330static bool Interp_FlipUint8Sint32(InterpState &S) {
18331 Flip<PT_Uint8, PT_Sint32>(S);
18332#if USE_TAILCALLS
18333 MUSTTAIL return InterpNext(S);
18334#else
18335 return true;
18336#endif
18337}
18338PRESERVE_NONE
18339static bool Interp_FlipUint8Uint32(InterpState &S) {
18340 Flip<PT_Uint8, PT_Uint32>(S);
18341#if USE_TAILCALLS
18342 MUSTTAIL return InterpNext(S);
18343#else
18344 return true;
18345#endif
18346}
18347PRESERVE_NONE
18348static bool Interp_FlipUint8Sint64(InterpState &S) {
18349 Flip<PT_Uint8, PT_Sint64>(S);
18350#if USE_TAILCALLS
18351 MUSTTAIL return InterpNext(S);
18352#else
18353 return true;
18354#endif
18355}
18356PRESERVE_NONE
18357static bool Interp_FlipUint8Uint64(InterpState &S) {
18358 Flip<PT_Uint8, PT_Uint64>(S);
18359#if USE_TAILCALLS
18360 MUSTTAIL return InterpNext(S);
18361#else
18362 return true;
18363#endif
18364}
18365PRESERVE_NONE
18366static bool Interp_FlipUint8IntAP(InterpState &S) {
18367 Flip<PT_Uint8, PT_IntAP>(S);
18368#if USE_TAILCALLS
18369 MUSTTAIL return InterpNext(S);
18370#else
18371 return true;
18372#endif
18373}
18374PRESERVE_NONE
18375static bool Interp_FlipUint8IntAPS(InterpState &S) {
18376 Flip<PT_Uint8, PT_IntAPS>(S);
18377#if USE_TAILCALLS
18378 MUSTTAIL return InterpNext(S);
18379#else
18380 return true;
18381#endif
18382}
18383PRESERVE_NONE
18384static bool Interp_FlipUint8Bool(InterpState &S) {
18385 Flip<PT_Uint8, PT_Bool>(S);
18386#if USE_TAILCALLS
18387 MUSTTAIL return InterpNext(S);
18388#else
18389 return true;
18390#endif
18391}
18392PRESERVE_NONE
18393static bool Interp_FlipUint8FixedPoint(InterpState &S) {
18394 Flip<PT_Uint8, PT_FixedPoint>(S);
18395#if USE_TAILCALLS
18396 MUSTTAIL return InterpNext(S);
18397#else
18398 return true;
18399#endif
18400}
18401PRESERVE_NONE
18402static bool Interp_FlipUint8Ptr(InterpState &S) {
18403 Flip<PT_Uint8, PT_Ptr>(S);
18404#if USE_TAILCALLS
18405 MUSTTAIL return InterpNext(S);
18406#else
18407 return true;
18408#endif
18409}
18410PRESERVE_NONE
18411static bool Interp_FlipUint8MemberPtr(InterpState &S) {
18412 Flip<PT_Uint8, PT_MemberPtr>(S);
18413#if USE_TAILCALLS
18414 MUSTTAIL return InterpNext(S);
18415#else
18416 return true;
18417#endif
18418}
18419PRESERVE_NONE
18420static bool Interp_FlipUint8Float(InterpState &S) {
18421 Flip<PT_Uint8, PT_Float>(S);
18422#if USE_TAILCALLS
18423 MUSTTAIL return InterpNext(S);
18424#else
18425 return true;
18426#endif
18427}
18428PRESERVE_NONE
18429static bool Interp_FlipSint16Sint8(InterpState &S) {
18430 Flip<PT_Sint16, PT_Sint8>(S);
18431#if USE_TAILCALLS
18432 MUSTTAIL return InterpNext(S);
18433#else
18434 return true;
18435#endif
18436}
18437PRESERVE_NONE
18438static bool Interp_FlipSint16Uint8(InterpState &S) {
18439 Flip<PT_Sint16, PT_Uint8>(S);
18440#if USE_TAILCALLS
18441 MUSTTAIL return InterpNext(S);
18442#else
18443 return true;
18444#endif
18445}
18446PRESERVE_NONE
18447static bool Interp_FlipSint16Sint16(InterpState &S) {
18448 Flip<PT_Sint16, PT_Sint16>(S);
18449#if USE_TAILCALLS
18450 MUSTTAIL return InterpNext(S);
18451#else
18452 return true;
18453#endif
18454}
18455PRESERVE_NONE
18456static bool Interp_FlipSint16Uint16(InterpState &S) {
18457 Flip<PT_Sint16, PT_Uint16>(S);
18458#if USE_TAILCALLS
18459 MUSTTAIL return InterpNext(S);
18460#else
18461 return true;
18462#endif
18463}
18464PRESERVE_NONE
18465static bool Interp_FlipSint16Sint32(InterpState &S) {
18466 Flip<PT_Sint16, PT_Sint32>(S);
18467#if USE_TAILCALLS
18468 MUSTTAIL return InterpNext(S);
18469#else
18470 return true;
18471#endif
18472}
18473PRESERVE_NONE
18474static bool Interp_FlipSint16Uint32(InterpState &S) {
18475 Flip<PT_Sint16, PT_Uint32>(S);
18476#if USE_TAILCALLS
18477 MUSTTAIL return InterpNext(S);
18478#else
18479 return true;
18480#endif
18481}
18482PRESERVE_NONE
18483static bool Interp_FlipSint16Sint64(InterpState &S) {
18484 Flip<PT_Sint16, PT_Sint64>(S);
18485#if USE_TAILCALLS
18486 MUSTTAIL return InterpNext(S);
18487#else
18488 return true;
18489#endif
18490}
18491PRESERVE_NONE
18492static bool Interp_FlipSint16Uint64(InterpState &S) {
18493 Flip<PT_Sint16, PT_Uint64>(S);
18494#if USE_TAILCALLS
18495 MUSTTAIL return InterpNext(S);
18496#else
18497 return true;
18498#endif
18499}
18500PRESERVE_NONE
18501static bool Interp_FlipSint16IntAP(InterpState &S) {
18502 Flip<PT_Sint16, PT_IntAP>(S);
18503#if USE_TAILCALLS
18504 MUSTTAIL return InterpNext(S);
18505#else
18506 return true;
18507#endif
18508}
18509PRESERVE_NONE
18510static bool Interp_FlipSint16IntAPS(InterpState &S) {
18511 Flip<PT_Sint16, PT_IntAPS>(S);
18512#if USE_TAILCALLS
18513 MUSTTAIL return InterpNext(S);
18514#else
18515 return true;
18516#endif
18517}
18518PRESERVE_NONE
18519static bool Interp_FlipSint16Bool(InterpState &S) {
18520 Flip<PT_Sint16, PT_Bool>(S);
18521#if USE_TAILCALLS
18522 MUSTTAIL return InterpNext(S);
18523#else
18524 return true;
18525#endif
18526}
18527PRESERVE_NONE
18528static bool Interp_FlipSint16FixedPoint(InterpState &S) {
18529 Flip<PT_Sint16, PT_FixedPoint>(S);
18530#if USE_TAILCALLS
18531 MUSTTAIL return InterpNext(S);
18532#else
18533 return true;
18534#endif
18535}
18536PRESERVE_NONE
18537static bool Interp_FlipSint16Ptr(InterpState &S) {
18538 Flip<PT_Sint16, PT_Ptr>(S);
18539#if USE_TAILCALLS
18540 MUSTTAIL return InterpNext(S);
18541#else
18542 return true;
18543#endif
18544}
18545PRESERVE_NONE
18546static bool Interp_FlipSint16MemberPtr(InterpState &S) {
18547 Flip<PT_Sint16, PT_MemberPtr>(S);
18548#if USE_TAILCALLS
18549 MUSTTAIL return InterpNext(S);
18550#else
18551 return true;
18552#endif
18553}
18554PRESERVE_NONE
18555static bool Interp_FlipSint16Float(InterpState &S) {
18556 Flip<PT_Sint16, PT_Float>(S);
18557#if USE_TAILCALLS
18558 MUSTTAIL return InterpNext(S);
18559#else
18560 return true;
18561#endif
18562}
18563PRESERVE_NONE
18564static bool Interp_FlipUint16Sint8(InterpState &S) {
18565 Flip<PT_Uint16, PT_Sint8>(S);
18566#if USE_TAILCALLS
18567 MUSTTAIL return InterpNext(S);
18568#else
18569 return true;
18570#endif
18571}
18572PRESERVE_NONE
18573static bool Interp_FlipUint16Uint8(InterpState &S) {
18574 Flip<PT_Uint16, PT_Uint8>(S);
18575#if USE_TAILCALLS
18576 MUSTTAIL return InterpNext(S);
18577#else
18578 return true;
18579#endif
18580}
18581PRESERVE_NONE
18582static bool Interp_FlipUint16Sint16(InterpState &S) {
18583 Flip<PT_Uint16, PT_Sint16>(S);
18584#if USE_TAILCALLS
18585 MUSTTAIL return InterpNext(S);
18586#else
18587 return true;
18588#endif
18589}
18590PRESERVE_NONE
18591static bool Interp_FlipUint16Uint16(InterpState &S) {
18592 Flip<PT_Uint16, PT_Uint16>(S);
18593#if USE_TAILCALLS
18594 MUSTTAIL return InterpNext(S);
18595#else
18596 return true;
18597#endif
18598}
18599PRESERVE_NONE
18600static bool Interp_FlipUint16Sint32(InterpState &S) {
18601 Flip<PT_Uint16, PT_Sint32>(S);
18602#if USE_TAILCALLS
18603 MUSTTAIL return InterpNext(S);
18604#else
18605 return true;
18606#endif
18607}
18608PRESERVE_NONE
18609static bool Interp_FlipUint16Uint32(InterpState &S) {
18610 Flip<PT_Uint16, PT_Uint32>(S);
18611#if USE_TAILCALLS
18612 MUSTTAIL return InterpNext(S);
18613#else
18614 return true;
18615#endif
18616}
18617PRESERVE_NONE
18618static bool Interp_FlipUint16Sint64(InterpState &S) {
18619 Flip<PT_Uint16, PT_Sint64>(S);
18620#if USE_TAILCALLS
18621 MUSTTAIL return InterpNext(S);
18622#else
18623 return true;
18624#endif
18625}
18626PRESERVE_NONE
18627static bool Interp_FlipUint16Uint64(InterpState &S) {
18628 Flip<PT_Uint16, PT_Uint64>(S);
18629#if USE_TAILCALLS
18630 MUSTTAIL return InterpNext(S);
18631#else
18632 return true;
18633#endif
18634}
18635PRESERVE_NONE
18636static bool Interp_FlipUint16IntAP(InterpState &S) {
18637 Flip<PT_Uint16, PT_IntAP>(S);
18638#if USE_TAILCALLS
18639 MUSTTAIL return InterpNext(S);
18640#else
18641 return true;
18642#endif
18643}
18644PRESERVE_NONE
18645static bool Interp_FlipUint16IntAPS(InterpState &S) {
18646 Flip<PT_Uint16, PT_IntAPS>(S);
18647#if USE_TAILCALLS
18648 MUSTTAIL return InterpNext(S);
18649#else
18650 return true;
18651#endif
18652}
18653PRESERVE_NONE
18654static bool Interp_FlipUint16Bool(InterpState &S) {
18655 Flip<PT_Uint16, PT_Bool>(S);
18656#if USE_TAILCALLS
18657 MUSTTAIL return InterpNext(S);
18658#else
18659 return true;
18660#endif
18661}
18662PRESERVE_NONE
18663static bool Interp_FlipUint16FixedPoint(InterpState &S) {
18664 Flip<PT_Uint16, PT_FixedPoint>(S);
18665#if USE_TAILCALLS
18666 MUSTTAIL return InterpNext(S);
18667#else
18668 return true;
18669#endif
18670}
18671PRESERVE_NONE
18672static bool Interp_FlipUint16Ptr(InterpState &S) {
18673 Flip<PT_Uint16, PT_Ptr>(S);
18674#if USE_TAILCALLS
18675 MUSTTAIL return InterpNext(S);
18676#else
18677 return true;
18678#endif
18679}
18680PRESERVE_NONE
18681static bool Interp_FlipUint16MemberPtr(InterpState &S) {
18682 Flip<PT_Uint16, PT_MemberPtr>(S);
18683#if USE_TAILCALLS
18684 MUSTTAIL return InterpNext(S);
18685#else
18686 return true;
18687#endif
18688}
18689PRESERVE_NONE
18690static bool Interp_FlipUint16Float(InterpState &S) {
18691 Flip<PT_Uint16, PT_Float>(S);
18692#if USE_TAILCALLS
18693 MUSTTAIL return InterpNext(S);
18694#else
18695 return true;
18696#endif
18697}
18698PRESERVE_NONE
18699static bool Interp_FlipSint32Sint8(InterpState &S) {
18700 Flip<PT_Sint32, PT_Sint8>(S);
18701#if USE_TAILCALLS
18702 MUSTTAIL return InterpNext(S);
18703#else
18704 return true;
18705#endif
18706}
18707PRESERVE_NONE
18708static bool Interp_FlipSint32Uint8(InterpState &S) {
18709 Flip<PT_Sint32, PT_Uint8>(S);
18710#if USE_TAILCALLS
18711 MUSTTAIL return InterpNext(S);
18712#else
18713 return true;
18714#endif
18715}
18716PRESERVE_NONE
18717static bool Interp_FlipSint32Sint16(InterpState &S) {
18718 Flip<PT_Sint32, PT_Sint16>(S);
18719#if USE_TAILCALLS
18720 MUSTTAIL return InterpNext(S);
18721#else
18722 return true;
18723#endif
18724}
18725PRESERVE_NONE
18726static bool Interp_FlipSint32Uint16(InterpState &S) {
18727 Flip<PT_Sint32, PT_Uint16>(S);
18728#if USE_TAILCALLS
18729 MUSTTAIL return InterpNext(S);
18730#else
18731 return true;
18732#endif
18733}
18734PRESERVE_NONE
18735static bool Interp_FlipSint32Sint32(InterpState &S) {
18736 Flip<PT_Sint32, PT_Sint32>(S);
18737#if USE_TAILCALLS
18738 MUSTTAIL return InterpNext(S);
18739#else
18740 return true;
18741#endif
18742}
18743PRESERVE_NONE
18744static bool Interp_FlipSint32Uint32(InterpState &S) {
18745 Flip<PT_Sint32, PT_Uint32>(S);
18746#if USE_TAILCALLS
18747 MUSTTAIL return InterpNext(S);
18748#else
18749 return true;
18750#endif
18751}
18752PRESERVE_NONE
18753static bool Interp_FlipSint32Sint64(InterpState &S) {
18754 Flip<PT_Sint32, PT_Sint64>(S);
18755#if USE_TAILCALLS
18756 MUSTTAIL return InterpNext(S);
18757#else
18758 return true;
18759#endif
18760}
18761PRESERVE_NONE
18762static bool Interp_FlipSint32Uint64(InterpState &S) {
18763 Flip<PT_Sint32, PT_Uint64>(S);
18764#if USE_TAILCALLS
18765 MUSTTAIL return InterpNext(S);
18766#else
18767 return true;
18768#endif
18769}
18770PRESERVE_NONE
18771static bool Interp_FlipSint32IntAP(InterpState &S) {
18772 Flip<PT_Sint32, PT_IntAP>(S);
18773#if USE_TAILCALLS
18774 MUSTTAIL return InterpNext(S);
18775#else
18776 return true;
18777#endif
18778}
18779PRESERVE_NONE
18780static bool Interp_FlipSint32IntAPS(InterpState &S) {
18781 Flip<PT_Sint32, PT_IntAPS>(S);
18782#if USE_TAILCALLS
18783 MUSTTAIL return InterpNext(S);
18784#else
18785 return true;
18786#endif
18787}
18788PRESERVE_NONE
18789static bool Interp_FlipSint32Bool(InterpState &S) {
18790 Flip<PT_Sint32, PT_Bool>(S);
18791#if USE_TAILCALLS
18792 MUSTTAIL return InterpNext(S);
18793#else
18794 return true;
18795#endif
18796}
18797PRESERVE_NONE
18798static bool Interp_FlipSint32FixedPoint(InterpState &S) {
18799 Flip<PT_Sint32, PT_FixedPoint>(S);
18800#if USE_TAILCALLS
18801 MUSTTAIL return InterpNext(S);
18802#else
18803 return true;
18804#endif
18805}
18806PRESERVE_NONE
18807static bool Interp_FlipSint32Ptr(InterpState &S) {
18808 Flip<PT_Sint32, PT_Ptr>(S);
18809#if USE_TAILCALLS
18810 MUSTTAIL return InterpNext(S);
18811#else
18812 return true;
18813#endif
18814}
18815PRESERVE_NONE
18816static bool Interp_FlipSint32MemberPtr(InterpState &S) {
18817 Flip<PT_Sint32, PT_MemberPtr>(S);
18818#if USE_TAILCALLS
18819 MUSTTAIL return InterpNext(S);
18820#else
18821 return true;
18822#endif
18823}
18824PRESERVE_NONE
18825static bool Interp_FlipSint32Float(InterpState &S) {
18826 Flip<PT_Sint32, PT_Float>(S);
18827#if USE_TAILCALLS
18828 MUSTTAIL return InterpNext(S);
18829#else
18830 return true;
18831#endif
18832}
18833PRESERVE_NONE
18834static bool Interp_FlipUint32Sint8(InterpState &S) {
18835 Flip<PT_Uint32, PT_Sint8>(S);
18836#if USE_TAILCALLS
18837 MUSTTAIL return InterpNext(S);
18838#else
18839 return true;
18840#endif
18841}
18842PRESERVE_NONE
18843static bool Interp_FlipUint32Uint8(InterpState &S) {
18844 Flip<PT_Uint32, PT_Uint8>(S);
18845#if USE_TAILCALLS
18846 MUSTTAIL return InterpNext(S);
18847#else
18848 return true;
18849#endif
18850}
18851PRESERVE_NONE
18852static bool Interp_FlipUint32Sint16(InterpState &S) {
18853 Flip<PT_Uint32, PT_Sint16>(S);
18854#if USE_TAILCALLS
18855 MUSTTAIL return InterpNext(S);
18856#else
18857 return true;
18858#endif
18859}
18860PRESERVE_NONE
18861static bool Interp_FlipUint32Uint16(InterpState &S) {
18862 Flip<PT_Uint32, PT_Uint16>(S);
18863#if USE_TAILCALLS
18864 MUSTTAIL return InterpNext(S);
18865#else
18866 return true;
18867#endif
18868}
18869PRESERVE_NONE
18870static bool Interp_FlipUint32Sint32(InterpState &S) {
18871 Flip<PT_Uint32, PT_Sint32>(S);
18872#if USE_TAILCALLS
18873 MUSTTAIL return InterpNext(S);
18874#else
18875 return true;
18876#endif
18877}
18878PRESERVE_NONE
18879static bool Interp_FlipUint32Uint32(InterpState &S) {
18880 Flip<PT_Uint32, PT_Uint32>(S);
18881#if USE_TAILCALLS
18882 MUSTTAIL return InterpNext(S);
18883#else
18884 return true;
18885#endif
18886}
18887PRESERVE_NONE
18888static bool Interp_FlipUint32Sint64(InterpState &S) {
18889 Flip<PT_Uint32, PT_Sint64>(S);
18890#if USE_TAILCALLS
18891 MUSTTAIL return InterpNext(S);
18892#else
18893 return true;
18894#endif
18895}
18896PRESERVE_NONE
18897static bool Interp_FlipUint32Uint64(InterpState &S) {
18898 Flip<PT_Uint32, PT_Uint64>(S);
18899#if USE_TAILCALLS
18900 MUSTTAIL return InterpNext(S);
18901#else
18902 return true;
18903#endif
18904}
18905PRESERVE_NONE
18906static bool Interp_FlipUint32IntAP(InterpState &S) {
18907 Flip<PT_Uint32, PT_IntAP>(S);
18908#if USE_TAILCALLS
18909 MUSTTAIL return InterpNext(S);
18910#else
18911 return true;
18912#endif
18913}
18914PRESERVE_NONE
18915static bool Interp_FlipUint32IntAPS(InterpState &S) {
18916 Flip<PT_Uint32, PT_IntAPS>(S);
18917#if USE_TAILCALLS
18918 MUSTTAIL return InterpNext(S);
18919#else
18920 return true;
18921#endif
18922}
18923PRESERVE_NONE
18924static bool Interp_FlipUint32Bool(InterpState &S) {
18925 Flip<PT_Uint32, PT_Bool>(S);
18926#if USE_TAILCALLS
18927 MUSTTAIL return InterpNext(S);
18928#else
18929 return true;
18930#endif
18931}
18932PRESERVE_NONE
18933static bool Interp_FlipUint32FixedPoint(InterpState &S) {
18934 Flip<PT_Uint32, PT_FixedPoint>(S);
18935#if USE_TAILCALLS
18936 MUSTTAIL return InterpNext(S);
18937#else
18938 return true;
18939#endif
18940}
18941PRESERVE_NONE
18942static bool Interp_FlipUint32Ptr(InterpState &S) {
18943 Flip<PT_Uint32, PT_Ptr>(S);
18944#if USE_TAILCALLS
18945 MUSTTAIL return InterpNext(S);
18946#else
18947 return true;
18948#endif
18949}
18950PRESERVE_NONE
18951static bool Interp_FlipUint32MemberPtr(InterpState &S) {
18952 Flip<PT_Uint32, PT_MemberPtr>(S);
18953#if USE_TAILCALLS
18954 MUSTTAIL return InterpNext(S);
18955#else
18956 return true;
18957#endif
18958}
18959PRESERVE_NONE
18960static bool Interp_FlipUint32Float(InterpState &S) {
18961 Flip<PT_Uint32, PT_Float>(S);
18962#if USE_TAILCALLS
18963 MUSTTAIL return InterpNext(S);
18964#else
18965 return true;
18966#endif
18967}
18968PRESERVE_NONE
18969static bool Interp_FlipSint64Sint8(InterpState &S) {
18970 Flip<PT_Sint64, PT_Sint8>(S);
18971#if USE_TAILCALLS
18972 MUSTTAIL return InterpNext(S);
18973#else
18974 return true;
18975#endif
18976}
18977PRESERVE_NONE
18978static bool Interp_FlipSint64Uint8(InterpState &S) {
18979 Flip<PT_Sint64, PT_Uint8>(S);
18980#if USE_TAILCALLS
18981 MUSTTAIL return InterpNext(S);
18982#else
18983 return true;
18984#endif
18985}
18986PRESERVE_NONE
18987static bool Interp_FlipSint64Sint16(InterpState &S) {
18988 Flip<PT_Sint64, PT_Sint16>(S);
18989#if USE_TAILCALLS
18990 MUSTTAIL return InterpNext(S);
18991#else
18992 return true;
18993#endif
18994}
18995PRESERVE_NONE
18996static bool Interp_FlipSint64Uint16(InterpState &S) {
18997 Flip<PT_Sint64, PT_Uint16>(S);
18998#if USE_TAILCALLS
18999 MUSTTAIL return InterpNext(S);
19000#else
19001 return true;
19002#endif
19003}
19004PRESERVE_NONE
19005static bool Interp_FlipSint64Sint32(InterpState &S) {
19006 Flip<PT_Sint64, PT_Sint32>(S);
19007#if USE_TAILCALLS
19008 MUSTTAIL return InterpNext(S);
19009#else
19010 return true;
19011#endif
19012}
19013PRESERVE_NONE
19014static bool Interp_FlipSint64Uint32(InterpState &S) {
19015 Flip<PT_Sint64, PT_Uint32>(S);
19016#if USE_TAILCALLS
19017 MUSTTAIL return InterpNext(S);
19018#else
19019 return true;
19020#endif
19021}
19022PRESERVE_NONE
19023static bool Interp_FlipSint64Sint64(InterpState &S) {
19024 Flip<PT_Sint64, PT_Sint64>(S);
19025#if USE_TAILCALLS
19026 MUSTTAIL return InterpNext(S);
19027#else
19028 return true;
19029#endif
19030}
19031PRESERVE_NONE
19032static bool Interp_FlipSint64Uint64(InterpState &S) {
19033 Flip<PT_Sint64, PT_Uint64>(S);
19034#if USE_TAILCALLS
19035 MUSTTAIL return InterpNext(S);
19036#else
19037 return true;
19038#endif
19039}
19040PRESERVE_NONE
19041static bool Interp_FlipSint64IntAP(InterpState &S) {
19042 Flip<PT_Sint64, PT_IntAP>(S);
19043#if USE_TAILCALLS
19044 MUSTTAIL return InterpNext(S);
19045#else
19046 return true;
19047#endif
19048}
19049PRESERVE_NONE
19050static bool Interp_FlipSint64IntAPS(InterpState &S) {
19051 Flip<PT_Sint64, PT_IntAPS>(S);
19052#if USE_TAILCALLS
19053 MUSTTAIL return InterpNext(S);
19054#else
19055 return true;
19056#endif
19057}
19058PRESERVE_NONE
19059static bool Interp_FlipSint64Bool(InterpState &S) {
19060 Flip<PT_Sint64, PT_Bool>(S);
19061#if USE_TAILCALLS
19062 MUSTTAIL return InterpNext(S);
19063#else
19064 return true;
19065#endif
19066}
19067PRESERVE_NONE
19068static bool Interp_FlipSint64FixedPoint(InterpState &S) {
19069 Flip<PT_Sint64, PT_FixedPoint>(S);
19070#if USE_TAILCALLS
19071 MUSTTAIL return InterpNext(S);
19072#else
19073 return true;
19074#endif
19075}
19076PRESERVE_NONE
19077static bool Interp_FlipSint64Ptr(InterpState &S) {
19078 Flip<PT_Sint64, PT_Ptr>(S);
19079#if USE_TAILCALLS
19080 MUSTTAIL return InterpNext(S);
19081#else
19082 return true;
19083#endif
19084}
19085PRESERVE_NONE
19086static bool Interp_FlipSint64MemberPtr(InterpState &S) {
19087 Flip<PT_Sint64, PT_MemberPtr>(S);
19088#if USE_TAILCALLS
19089 MUSTTAIL return InterpNext(S);
19090#else
19091 return true;
19092#endif
19093}
19094PRESERVE_NONE
19095static bool Interp_FlipSint64Float(InterpState &S) {
19096 Flip<PT_Sint64, PT_Float>(S);
19097#if USE_TAILCALLS
19098 MUSTTAIL return InterpNext(S);
19099#else
19100 return true;
19101#endif
19102}
19103PRESERVE_NONE
19104static bool Interp_FlipUint64Sint8(InterpState &S) {
19105 Flip<PT_Uint64, PT_Sint8>(S);
19106#if USE_TAILCALLS
19107 MUSTTAIL return InterpNext(S);
19108#else
19109 return true;
19110#endif
19111}
19112PRESERVE_NONE
19113static bool Interp_FlipUint64Uint8(InterpState &S) {
19114 Flip<PT_Uint64, PT_Uint8>(S);
19115#if USE_TAILCALLS
19116 MUSTTAIL return InterpNext(S);
19117#else
19118 return true;
19119#endif
19120}
19121PRESERVE_NONE
19122static bool Interp_FlipUint64Sint16(InterpState &S) {
19123 Flip<PT_Uint64, PT_Sint16>(S);
19124#if USE_TAILCALLS
19125 MUSTTAIL return InterpNext(S);
19126#else
19127 return true;
19128#endif
19129}
19130PRESERVE_NONE
19131static bool Interp_FlipUint64Uint16(InterpState &S) {
19132 Flip<PT_Uint64, PT_Uint16>(S);
19133#if USE_TAILCALLS
19134 MUSTTAIL return InterpNext(S);
19135#else
19136 return true;
19137#endif
19138}
19139PRESERVE_NONE
19140static bool Interp_FlipUint64Sint32(InterpState &S) {
19141 Flip<PT_Uint64, PT_Sint32>(S);
19142#if USE_TAILCALLS
19143 MUSTTAIL return InterpNext(S);
19144#else
19145 return true;
19146#endif
19147}
19148PRESERVE_NONE
19149static bool Interp_FlipUint64Uint32(InterpState &S) {
19150 Flip<PT_Uint64, PT_Uint32>(S);
19151#if USE_TAILCALLS
19152 MUSTTAIL return InterpNext(S);
19153#else
19154 return true;
19155#endif
19156}
19157PRESERVE_NONE
19158static bool Interp_FlipUint64Sint64(InterpState &S) {
19159 Flip<PT_Uint64, PT_Sint64>(S);
19160#if USE_TAILCALLS
19161 MUSTTAIL return InterpNext(S);
19162#else
19163 return true;
19164#endif
19165}
19166PRESERVE_NONE
19167static bool Interp_FlipUint64Uint64(InterpState &S) {
19168 Flip<PT_Uint64, PT_Uint64>(S);
19169#if USE_TAILCALLS
19170 MUSTTAIL return InterpNext(S);
19171#else
19172 return true;
19173#endif
19174}
19175PRESERVE_NONE
19176static bool Interp_FlipUint64IntAP(InterpState &S) {
19177 Flip<PT_Uint64, PT_IntAP>(S);
19178#if USE_TAILCALLS
19179 MUSTTAIL return InterpNext(S);
19180#else
19181 return true;
19182#endif
19183}
19184PRESERVE_NONE
19185static bool Interp_FlipUint64IntAPS(InterpState &S) {
19186 Flip<PT_Uint64, PT_IntAPS>(S);
19187#if USE_TAILCALLS
19188 MUSTTAIL return InterpNext(S);
19189#else
19190 return true;
19191#endif
19192}
19193PRESERVE_NONE
19194static bool Interp_FlipUint64Bool(InterpState &S) {
19195 Flip<PT_Uint64, PT_Bool>(S);
19196#if USE_TAILCALLS
19197 MUSTTAIL return InterpNext(S);
19198#else
19199 return true;
19200#endif
19201}
19202PRESERVE_NONE
19203static bool Interp_FlipUint64FixedPoint(InterpState &S) {
19204 Flip<PT_Uint64, PT_FixedPoint>(S);
19205#if USE_TAILCALLS
19206 MUSTTAIL return InterpNext(S);
19207#else
19208 return true;
19209#endif
19210}
19211PRESERVE_NONE
19212static bool Interp_FlipUint64Ptr(InterpState &S) {
19213 Flip<PT_Uint64, PT_Ptr>(S);
19214#if USE_TAILCALLS
19215 MUSTTAIL return InterpNext(S);
19216#else
19217 return true;
19218#endif
19219}
19220PRESERVE_NONE
19221static bool Interp_FlipUint64MemberPtr(InterpState &S) {
19222 Flip<PT_Uint64, PT_MemberPtr>(S);
19223#if USE_TAILCALLS
19224 MUSTTAIL return InterpNext(S);
19225#else
19226 return true;
19227#endif
19228}
19229PRESERVE_NONE
19230static bool Interp_FlipUint64Float(InterpState &S) {
19231 Flip<PT_Uint64, PT_Float>(S);
19232#if USE_TAILCALLS
19233 MUSTTAIL return InterpNext(S);
19234#else
19235 return true;
19236#endif
19237}
19238PRESERVE_NONE
19239static bool Interp_FlipIntAPSint8(InterpState &S) {
19240 Flip<PT_IntAP, PT_Sint8>(S);
19241#if USE_TAILCALLS
19242 MUSTTAIL return InterpNext(S);
19243#else
19244 return true;
19245#endif
19246}
19247PRESERVE_NONE
19248static bool Interp_FlipIntAPUint8(InterpState &S) {
19249 Flip<PT_IntAP, PT_Uint8>(S);
19250#if USE_TAILCALLS
19251 MUSTTAIL return InterpNext(S);
19252#else
19253 return true;
19254#endif
19255}
19256PRESERVE_NONE
19257static bool Interp_FlipIntAPSint16(InterpState &S) {
19258 Flip<PT_IntAP, PT_Sint16>(S);
19259#if USE_TAILCALLS
19260 MUSTTAIL return InterpNext(S);
19261#else
19262 return true;
19263#endif
19264}
19265PRESERVE_NONE
19266static bool Interp_FlipIntAPUint16(InterpState &S) {
19267 Flip<PT_IntAP, PT_Uint16>(S);
19268#if USE_TAILCALLS
19269 MUSTTAIL return InterpNext(S);
19270#else
19271 return true;
19272#endif
19273}
19274PRESERVE_NONE
19275static bool Interp_FlipIntAPSint32(InterpState &S) {
19276 Flip<PT_IntAP, PT_Sint32>(S);
19277#if USE_TAILCALLS
19278 MUSTTAIL return InterpNext(S);
19279#else
19280 return true;
19281#endif
19282}
19283PRESERVE_NONE
19284static bool Interp_FlipIntAPUint32(InterpState &S) {
19285 Flip<PT_IntAP, PT_Uint32>(S);
19286#if USE_TAILCALLS
19287 MUSTTAIL return InterpNext(S);
19288#else
19289 return true;
19290#endif
19291}
19292PRESERVE_NONE
19293static bool Interp_FlipIntAPSint64(InterpState &S) {
19294 Flip<PT_IntAP, PT_Sint64>(S);
19295#if USE_TAILCALLS
19296 MUSTTAIL return InterpNext(S);
19297#else
19298 return true;
19299#endif
19300}
19301PRESERVE_NONE
19302static bool Interp_FlipIntAPUint64(InterpState &S) {
19303 Flip<PT_IntAP, PT_Uint64>(S);
19304#if USE_TAILCALLS
19305 MUSTTAIL return InterpNext(S);
19306#else
19307 return true;
19308#endif
19309}
19310PRESERVE_NONE
19311static bool Interp_FlipIntAPIntAP(InterpState &S) {
19312 Flip<PT_IntAP, PT_IntAP>(S);
19313#if USE_TAILCALLS
19314 MUSTTAIL return InterpNext(S);
19315#else
19316 return true;
19317#endif
19318}
19319PRESERVE_NONE
19320static bool Interp_FlipIntAPIntAPS(InterpState &S) {
19321 Flip<PT_IntAP, PT_IntAPS>(S);
19322#if USE_TAILCALLS
19323 MUSTTAIL return InterpNext(S);
19324#else
19325 return true;
19326#endif
19327}
19328PRESERVE_NONE
19329static bool Interp_FlipIntAPBool(InterpState &S) {
19330 Flip<PT_IntAP, PT_Bool>(S);
19331#if USE_TAILCALLS
19332 MUSTTAIL return InterpNext(S);
19333#else
19334 return true;
19335#endif
19336}
19337PRESERVE_NONE
19338static bool Interp_FlipIntAPFixedPoint(InterpState &S) {
19339 Flip<PT_IntAP, PT_FixedPoint>(S);
19340#if USE_TAILCALLS
19341 MUSTTAIL return InterpNext(S);
19342#else
19343 return true;
19344#endif
19345}
19346PRESERVE_NONE
19347static bool Interp_FlipIntAPPtr(InterpState &S) {
19348 Flip<PT_IntAP, PT_Ptr>(S);
19349#if USE_TAILCALLS
19350 MUSTTAIL return InterpNext(S);
19351#else
19352 return true;
19353#endif
19354}
19355PRESERVE_NONE
19356static bool Interp_FlipIntAPMemberPtr(InterpState &S) {
19357 Flip<PT_IntAP, PT_MemberPtr>(S);
19358#if USE_TAILCALLS
19359 MUSTTAIL return InterpNext(S);
19360#else
19361 return true;
19362#endif
19363}
19364PRESERVE_NONE
19365static bool Interp_FlipIntAPFloat(InterpState &S) {
19366 Flip<PT_IntAP, PT_Float>(S);
19367#if USE_TAILCALLS
19368 MUSTTAIL return InterpNext(S);
19369#else
19370 return true;
19371#endif
19372}
19373PRESERVE_NONE
19374static bool Interp_FlipIntAPSSint8(InterpState &S) {
19375 Flip<PT_IntAPS, PT_Sint8>(S);
19376#if USE_TAILCALLS
19377 MUSTTAIL return InterpNext(S);
19378#else
19379 return true;
19380#endif
19381}
19382PRESERVE_NONE
19383static bool Interp_FlipIntAPSUint8(InterpState &S) {
19384 Flip<PT_IntAPS, PT_Uint8>(S);
19385#if USE_TAILCALLS
19386 MUSTTAIL return InterpNext(S);
19387#else
19388 return true;
19389#endif
19390}
19391PRESERVE_NONE
19392static bool Interp_FlipIntAPSSint16(InterpState &S) {
19393 Flip<PT_IntAPS, PT_Sint16>(S);
19394#if USE_TAILCALLS
19395 MUSTTAIL return InterpNext(S);
19396#else
19397 return true;
19398#endif
19399}
19400PRESERVE_NONE
19401static bool Interp_FlipIntAPSUint16(InterpState &S) {
19402 Flip<PT_IntAPS, PT_Uint16>(S);
19403#if USE_TAILCALLS
19404 MUSTTAIL return InterpNext(S);
19405#else
19406 return true;
19407#endif
19408}
19409PRESERVE_NONE
19410static bool Interp_FlipIntAPSSint32(InterpState &S) {
19411 Flip<PT_IntAPS, PT_Sint32>(S);
19412#if USE_TAILCALLS
19413 MUSTTAIL return InterpNext(S);
19414#else
19415 return true;
19416#endif
19417}
19418PRESERVE_NONE
19419static bool Interp_FlipIntAPSUint32(InterpState &S) {
19420 Flip<PT_IntAPS, PT_Uint32>(S);
19421#if USE_TAILCALLS
19422 MUSTTAIL return InterpNext(S);
19423#else
19424 return true;
19425#endif
19426}
19427PRESERVE_NONE
19428static bool Interp_FlipIntAPSSint64(InterpState &S) {
19429 Flip<PT_IntAPS, PT_Sint64>(S);
19430#if USE_TAILCALLS
19431 MUSTTAIL return InterpNext(S);
19432#else
19433 return true;
19434#endif
19435}
19436PRESERVE_NONE
19437static bool Interp_FlipIntAPSUint64(InterpState &S) {
19438 Flip<PT_IntAPS, PT_Uint64>(S);
19439#if USE_TAILCALLS
19440 MUSTTAIL return InterpNext(S);
19441#else
19442 return true;
19443#endif
19444}
19445PRESERVE_NONE
19446static bool Interp_FlipIntAPSIntAP(InterpState &S) {
19447 Flip<PT_IntAPS, PT_IntAP>(S);
19448#if USE_TAILCALLS
19449 MUSTTAIL return InterpNext(S);
19450#else
19451 return true;
19452#endif
19453}
19454PRESERVE_NONE
19455static bool Interp_FlipIntAPSIntAPS(InterpState &S) {
19456 Flip<PT_IntAPS, PT_IntAPS>(S);
19457#if USE_TAILCALLS
19458 MUSTTAIL return InterpNext(S);
19459#else
19460 return true;
19461#endif
19462}
19463PRESERVE_NONE
19464static bool Interp_FlipIntAPSBool(InterpState &S) {
19465 Flip<PT_IntAPS, PT_Bool>(S);
19466#if USE_TAILCALLS
19467 MUSTTAIL return InterpNext(S);
19468#else
19469 return true;
19470#endif
19471}
19472PRESERVE_NONE
19473static bool Interp_FlipIntAPSFixedPoint(InterpState &S) {
19474 Flip<PT_IntAPS, PT_FixedPoint>(S);
19475#if USE_TAILCALLS
19476 MUSTTAIL return InterpNext(S);
19477#else
19478 return true;
19479#endif
19480}
19481PRESERVE_NONE
19482static bool Interp_FlipIntAPSPtr(InterpState &S) {
19483 Flip<PT_IntAPS, PT_Ptr>(S);
19484#if USE_TAILCALLS
19485 MUSTTAIL return InterpNext(S);
19486#else
19487 return true;
19488#endif
19489}
19490PRESERVE_NONE
19491static bool Interp_FlipIntAPSMemberPtr(InterpState &S) {
19492 Flip<PT_IntAPS, PT_MemberPtr>(S);
19493#if USE_TAILCALLS
19494 MUSTTAIL return InterpNext(S);
19495#else
19496 return true;
19497#endif
19498}
19499PRESERVE_NONE
19500static bool Interp_FlipIntAPSFloat(InterpState &S) {
19501 Flip<PT_IntAPS, PT_Float>(S);
19502#if USE_TAILCALLS
19503 MUSTTAIL return InterpNext(S);
19504#else
19505 return true;
19506#endif
19507}
19508PRESERVE_NONE
19509static bool Interp_FlipBoolSint8(InterpState &S) {
19510 Flip<PT_Bool, PT_Sint8>(S);
19511#if USE_TAILCALLS
19512 MUSTTAIL return InterpNext(S);
19513#else
19514 return true;
19515#endif
19516}
19517PRESERVE_NONE
19518static bool Interp_FlipBoolUint8(InterpState &S) {
19519 Flip<PT_Bool, PT_Uint8>(S);
19520#if USE_TAILCALLS
19521 MUSTTAIL return InterpNext(S);
19522#else
19523 return true;
19524#endif
19525}
19526PRESERVE_NONE
19527static bool Interp_FlipBoolSint16(InterpState &S) {
19528 Flip<PT_Bool, PT_Sint16>(S);
19529#if USE_TAILCALLS
19530 MUSTTAIL return InterpNext(S);
19531#else
19532 return true;
19533#endif
19534}
19535PRESERVE_NONE
19536static bool Interp_FlipBoolUint16(InterpState &S) {
19537 Flip<PT_Bool, PT_Uint16>(S);
19538#if USE_TAILCALLS
19539 MUSTTAIL return InterpNext(S);
19540#else
19541 return true;
19542#endif
19543}
19544PRESERVE_NONE
19545static bool Interp_FlipBoolSint32(InterpState &S) {
19546 Flip<PT_Bool, PT_Sint32>(S);
19547#if USE_TAILCALLS
19548 MUSTTAIL return InterpNext(S);
19549#else
19550 return true;
19551#endif
19552}
19553PRESERVE_NONE
19554static bool Interp_FlipBoolUint32(InterpState &S) {
19555 Flip<PT_Bool, PT_Uint32>(S);
19556#if USE_TAILCALLS
19557 MUSTTAIL return InterpNext(S);
19558#else
19559 return true;
19560#endif
19561}
19562PRESERVE_NONE
19563static bool Interp_FlipBoolSint64(InterpState &S) {
19564 Flip<PT_Bool, PT_Sint64>(S);
19565#if USE_TAILCALLS
19566 MUSTTAIL return InterpNext(S);
19567#else
19568 return true;
19569#endif
19570}
19571PRESERVE_NONE
19572static bool Interp_FlipBoolUint64(InterpState &S) {
19573 Flip<PT_Bool, PT_Uint64>(S);
19574#if USE_TAILCALLS
19575 MUSTTAIL return InterpNext(S);
19576#else
19577 return true;
19578#endif
19579}
19580PRESERVE_NONE
19581static bool Interp_FlipBoolIntAP(InterpState &S) {
19582 Flip<PT_Bool, PT_IntAP>(S);
19583#if USE_TAILCALLS
19584 MUSTTAIL return InterpNext(S);
19585#else
19586 return true;
19587#endif
19588}
19589PRESERVE_NONE
19590static bool Interp_FlipBoolIntAPS(InterpState &S) {
19591 Flip<PT_Bool, PT_IntAPS>(S);
19592#if USE_TAILCALLS
19593 MUSTTAIL return InterpNext(S);
19594#else
19595 return true;
19596#endif
19597}
19598PRESERVE_NONE
19599static bool Interp_FlipBoolBool(InterpState &S) {
19600 Flip<PT_Bool, PT_Bool>(S);
19601#if USE_TAILCALLS
19602 MUSTTAIL return InterpNext(S);
19603#else
19604 return true;
19605#endif
19606}
19607PRESERVE_NONE
19608static bool Interp_FlipBoolFixedPoint(InterpState &S) {
19609 Flip<PT_Bool, PT_FixedPoint>(S);
19610#if USE_TAILCALLS
19611 MUSTTAIL return InterpNext(S);
19612#else
19613 return true;
19614#endif
19615}
19616PRESERVE_NONE
19617static bool Interp_FlipBoolPtr(InterpState &S) {
19618 Flip<PT_Bool, PT_Ptr>(S);
19619#if USE_TAILCALLS
19620 MUSTTAIL return InterpNext(S);
19621#else
19622 return true;
19623#endif
19624}
19625PRESERVE_NONE
19626static bool Interp_FlipBoolMemberPtr(InterpState &S) {
19627 Flip<PT_Bool, PT_MemberPtr>(S);
19628#if USE_TAILCALLS
19629 MUSTTAIL return InterpNext(S);
19630#else
19631 return true;
19632#endif
19633}
19634PRESERVE_NONE
19635static bool Interp_FlipBoolFloat(InterpState &S) {
19636 Flip<PT_Bool, PT_Float>(S);
19637#if USE_TAILCALLS
19638 MUSTTAIL return InterpNext(S);
19639#else
19640 return true;
19641#endif
19642}
19643PRESERVE_NONE
19644static bool Interp_FlipFixedPointSint8(InterpState &S) {
19645 Flip<PT_FixedPoint, PT_Sint8>(S);
19646#if USE_TAILCALLS
19647 MUSTTAIL return InterpNext(S);
19648#else
19649 return true;
19650#endif
19651}
19652PRESERVE_NONE
19653static bool Interp_FlipFixedPointUint8(InterpState &S) {
19654 Flip<PT_FixedPoint, PT_Uint8>(S);
19655#if USE_TAILCALLS
19656 MUSTTAIL return InterpNext(S);
19657#else
19658 return true;
19659#endif
19660}
19661PRESERVE_NONE
19662static bool Interp_FlipFixedPointSint16(InterpState &S) {
19663 Flip<PT_FixedPoint, PT_Sint16>(S);
19664#if USE_TAILCALLS
19665 MUSTTAIL return InterpNext(S);
19666#else
19667 return true;
19668#endif
19669}
19670PRESERVE_NONE
19671static bool Interp_FlipFixedPointUint16(InterpState &S) {
19672 Flip<PT_FixedPoint, PT_Uint16>(S);
19673#if USE_TAILCALLS
19674 MUSTTAIL return InterpNext(S);
19675#else
19676 return true;
19677#endif
19678}
19679PRESERVE_NONE
19680static bool Interp_FlipFixedPointSint32(InterpState &S) {
19681 Flip<PT_FixedPoint, PT_Sint32>(S);
19682#if USE_TAILCALLS
19683 MUSTTAIL return InterpNext(S);
19684#else
19685 return true;
19686#endif
19687}
19688PRESERVE_NONE
19689static bool Interp_FlipFixedPointUint32(InterpState &S) {
19690 Flip<PT_FixedPoint, PT_Uint32>(S);
19691#if USE_TAILCALLS
19692 MUSTTAIL return InterpNext(S);
19693#else
19694 return true;
19695#endif
19696}
19697PRESERVE_NONE
19698static bool Interp_FlipFixedPointSint64(InterpState &S) {
19699 Flip<PT_FixedPoint, PT_Sint64>(S);
19700#if USE_TAILCALLS
19701 MUSTTAIL return InterpNext(S);
19702#else
19703 return true;
19704#endif
19705}
19706PRESERVE_NONE
19707static bool Interp_FlipFixedPointUint64(InterpState &S) {
19708 Flip<PT_FixedPoint, PT_Uint64>(S);
19709#if USE_TAILCALLS
19710 MUSTTAIL return InterpNext(S);
19711#else
19712 return true;
19713#endif
19714}
19715PRESERVE_NONE
19716static bool Interp_FlipFixedPointIntAP(InterpState &S) {
19717 Flip<PT_FixedPoint, PT_IntAP>(S);
19718#if USE_TAILCALLS
19719 MUSTTAIL return InterpNext(S);
19720#else
19721 return true;
19722#endif
19723}
19724PRESERVE_NONE
19725static bool Interp_FlipFixedPointIntAPS(InterpState &S) {
19726 Flip<PT_FixedPoint, PT_IntAPS>(S);
19727#if USE_TAILCALLS
19728 MUSTTAIL return InterpNext(S);
19729#else
19730 return true;
19731#endif
19732}
19733PRESERVE_NONE
19734static bool Interp_FlipFixedPointBool(InterpState &S) {
19735 Flip<PT_FixedPoint, PT_Bool>(S);
19736#if USE_TAILCALLS
19737 MUSTTAIL return InterpNext(S);
19738#else
19739 return true;
19740#endif
19741}
19742PRESERVE_NONE
19743static bool Interp_FlipFixedPointFixedPoint(InterpState &S) {
19744 Flip<PT_FixedPoint, PT_FixedPoint>(S);
19745#if USE_TAILCALLS
19746 MUSTTAIL return InterpNext(S);
19747#else
19748 return true;
19749#endif
19750}
19751PRESERVE_NONE
19752static bool Interp_FlipFixedPointPtr(InterpState &S) {
19753 Flip<PT_FixedPoint, PT_Ptr>(S);
19754#if USE_TAILCALLS
19755 MUSTTAIL return InterpNext(S);
19756#else
19757 return true;
19758#endif
19759}
19760PRESERVE_NONE
19761static bool Interp_FlipFixedPointMemberPtr(InterpState &S) {
19762 Flip<PT_FixedPoint, PT_MemberPtr>(S);
19763#if USE_TAILCALLS
19764 MUSTTAIL return InterpNext(S);
19765#else
19766 return true;
19767#endif
19768}
19769PRESERVE_NONE
19770static bool Interp_FlipFixedPointFloat(InterpState &S) {
19771 Flip<PT_FixedPoint, PT_Float>(S);
19772#if USE_TAILCALLS
19773 MUSTTAIL return InterpNext(S);
19774#else
19775 return true;
19776#endif
19777}
19778PRESERVE_NONE
19779static bool Interp_FlipPtrSint8(InterpState &S) {
19780 Flip<PT_Ptr, PT_Sint8>(S);
19781#if USE_TAILCALLS
19782 MUSTTAIL return InterpNext(S);
19783#else
19784 return true;
19785#endif
19786}
19787PRESERVE_NONE
19788static bool Interp_FlipPtrUint8(InterpState &S) {
19789 Flip<PT_Ptr, PT_Uint8>(S);
19790#if USE_TAILCALLS
19791 MUSTTAIL return InterpNext(S);
19792#else
19793 return true;
19794#endif
19795}
19796PRESERVE_NONE
19797static bool Interp_FlipPtrSint16(InterpState &S) {
19798 Flip<PT_Ptr, PT_Sint16>(S);
19799#if USE_TAILCALLS
19800 MUSTTAIL return InterpNext(S);
19801#else
19802 return true;
19803#endif
19804}
19805PRESERVE_NONE
19806static bool Interp_FlipPtrUint16(InterpState &S) {
19807 Flip<PT_Ptr, PT_Uint16>(S);
19808#if USE_TAILCALLS
19809 MUSTTAIL return InterpNext(S);
19810#else
19811 return true;
19812#endif
19813}
19814PRESERVE_NONE
19815static bool Interp_FlipPtrSint32(InterpState &S) {
19816 Flip<PT_Ptr, PT_Sint32>(S);
19817#if USE_TAILCALLS
19818 MUSTTAIL return InterpNext(S);
19819#else
19820 return true;
19821#endif
19822}
19823PRESERVE_NONE
19824static bool Interp_FlipPtrUint32(InterpState &S) {
19825 Flip<PT_Ptr, PT_Uint32>(S);
19826#if USE_TAILCALLS
19827 MUSTTAIL return InterpNext(S);
19828#else
19829 return true;
19830#endif
19831}
19832PRESERVE_NONE
19833static bool Interp_FlipPtrSint64(InterpState &S) {
19834 Flip<PT_Ptr, PT_Sint64>(S);
19835#if USE_TAILCALLS
19836 MUSTTAIL return InterpNext(S);
19837#else
19838 return true;
19839#endif
19840}
19841PRESERVE_NONE
19842static bool Interp_FlipPtrUint64(InterpState &S) {
19843 Flip<PT_Ptr, PT_Uint64>(S);
19844#if USE_TAILCALLS
19845 MUSTTAIL return InterpNext(S);
19846#else
19847 return true;
19848#endif
19849}
19850PRESERVE_NONE
19851static bool Interp_FlipPtrIntAP(InterpState &S) {
19852 Flip<PT_Ptr, PT_IntAP>(S);
19853#if USE_TAILCALLS
19854 MUSTTAIL return InterpNext(S);
19855#else
19856 return true;
19857#endif
19858}
19859PRESERVE_NONE
19860static bool Interp_FlipPtrIntAPS(InterpState &S) {
19861 Flip<PT_Ptr, PT_IntAPS>(S);
19862#if USE_TAILCALLS
19863 MUSTTAIL return InterpNext(S);
19864#else
19865 return true;
19866#endif
19867}
19868PRESERVE_NONE
19869static bool Interp_FlipPtrBool(InterpState &S) {
19870 Flip<PT_Ptr, PT_Bool>(S);
19871#if USE_TAILCALLS
19872 MUSTTAIL return InterpNext(S);
19873#else
19874 return true;
19875#endif
19876}
19877PRESERVE_NONE
19878static bool Interp_FlipPtrFixedPoint(InterpState &S) {
19879 Flip<PT_Ptr, PT_FixedPoint>(S);
19880#if USE_TAILCALLS
19881 MUSTTAIL return InterpNext(S);
19882#else
19883 return true;
19884#endif
19885}
19886PRESERVE_NONE
19887static bool Interp_FlipPtrPtr(InterpState &S) {
19888 Flip<PT_Ptr, PT_Ptr>(S);
19889#if USE_TAILCALLS
19890 MUSTTAIL return InterpNext(S);
19891#else
19892 return true;
19893#endif
19894}
19895PRESERVE_NONE
19896static bool Interp_FlipPtrMemberPtr(InterpState &S) {
19897 Flip<PT_Ptr, PT_MemberPtr>(S);
19898#if USE_TAILCALLS
19899 MUSTTAIL return InterpNext(S);
19900#else
19901 return true;
19902#endif
19903}
19904PRESERVE_NONE
19905static bool Interp_FlipPtrFloat(InterpState &S) {
19906 Flip<PT_Ptr, PT_Float>(S);
19907#if USE_TAILCALLS
19908 MUSTTAIL return InterpNext(S);
19909#else
19910 return true;
19911#endif
19912}
19913PRESERVE_NONE
19914static bool Interp_FlipMemberPtrSint8(InterpState &S) {
19915 Flip<PT_MemberPtr, PT_Sint8>(S);
19916#if USE_TAILCALLS
19917 MUSTTAIL return InterpNext(S);
19918#else
19919 return true;
19920#endif
19921}
19922PRESERVE_NONE
19923static bool Interp_FlipMemberPtrUint8(InterpState &S) {
19924 Flip<PT_MemberPtr, PT_Uint8>(S);
19925#if USE_TAILCALLS
19926 MUSTTAIL return InterpNext(S);
19927#else
19928 return true;
19929#endif
19930}
19931PRESERVE_NONE
19932static bool Interp_FlipMemberPtrSint16(InterpState &S) {
19933 Flip<PT_MemberPtr, PT_Sint16>(S);
19934#if USE_TAILCALLS
19935 MUSTTAIL return InterpNext(S);
19936#else
19937 return true;
19938#endif
19939}
19940PRESERVE_NONE
19941static bool Interp_FlipMemberPtrUint16(InterpState &S) {
19942 Flip<PT_MemberPtr, PT_Uint16>(S);
19943#if USE_TAILCALLS
19944 MUSTTAIL return InterpNext(S);
19945#else
19946 return true;
19947#endif
19948}
19949PRESERVE_NONE
19950static bool Interp_FlipMemberPtrSint32(InterpState &S) {
19951 Flip<PT_MemberPtr, PT_Sint32>(S);
19952#if USE_TAILCALLS
19953 MUSTTAIL return InterpNext(S);
19954#else
19955 return true;
19956#endif
19957}
19958PRESERVE_NONE
19959static bool Interp_FlipMemberPtrUint32(InterpState &S) {
19960 Flip<PT_MemberPtr, PT_Uint32>(S);
19961#if USE_TAILCALLS
19962 MUSTTAIL return InterpNext(S);
19963#else
19964 return true;
19965#endif
19966}
19967PRESERVE_NONE
19968static bool Interp_FlipMemberPtrSint64(InterpState &S) {
19969 Flip<PT_MemberPtr, PT_Sint64>(S);
19970#if USE_TAILCALLS
19971 MUSTTAIL return InterpNext(S);
19972#else
19973 return true;
19974#endif
19975}
19976PRESERVE_NONE
19977static bool Interp_FlipMemberPtrUint64(InterpState &S) {
19978 Flip<PT_MemberPtr, PT_Uint64>(S);
19979#if USE_TAILCALLS
19980 MUSTTAIL return InterpNext(S);
19981#else
19982 return true;
19983#endif
19984}
19985PRESERVE_NONE
19986static bool Interp_FlipMemberPtrIntAP(InterpState &S) {
19987 Flip<PT_MemberPtr, PT_IntAP>(S);
19988#if USE_TAILCALLS
19989 MUSTTAIL return InterpNext(S);
19990#else
19991 return true;
19992#endif
19993}
19994PRESERVE_NONE
19995static bool Interp_FlipMemberPtrIntAPS(InterpState &S) {
19996 Flip<PT_MemberPtr, PT_IntAPS>(S);
19997#if USE_TAILCALLS
19998 MUSTTAIL return InterpNext(S);
19999#else
20000 return true;
20001#endif
20002}
20003PRESERVE_NONE
20004static bool Interp_FlipMemberPtrBool(InterpState &S) {
20005 Flip<PT_MemberPtr, PT_Bool>(S);
20006#if USE_TAILCALLS
20007 MUSTTAIL return InterpNext(S);
20008#else
20009 return true;
20010#endif
20011}
20012PRESERVE_NONE
20013static bool Interp_FlipMemberPtrFixedPoint(InterpState &S) {
20014 Flip<PT_MemberPtr, PT_FixedPoint>(S);
20015#if USE_TAILCALLS
20016 MUSTTAIL return InterpNext(S);
20017#else
20018 return true;
20019#endif
20020}
20021PRESERVE_NONE
20022static bool Interp_FlipMemberPtrPtr(InterpState &S) {
20023 Flip<PT_MemberPtr, PT_Ptr>(S);
20024#if USE_TAILCALLS
20025 MUSTTAIL return InterpNext(S);
20026#else
20027 return true;
20028#endif
20029}
20030PRESERVE_NONE
20031static bool Interp_FlipMemberPtrMemberPtr(InterpState &S) {
20032 Flip<PT_MemberPtr, PT_MemberPtr>(S);
20033#if USE_TAILCALLS
20034 MUSTTAIL return InterpNext(S);
20035#else
20036 return true;
20037#endif
20038}
20039PRESERVE_NONE
20040static bool Interp_FlipMemberPtrFloat(InterpState &S) {
20041 Flip<PT_MemberPtr, PT_Float>(S);
20042#if USE_TAILCALLS
20043 MUSTTAIL return InterpNext(S);
20044#else
20045 return true;
20046#endif
20047}
20048PRESERVE_NONE
20049static bool Interp_FlipFloatSint8(InterpState &S) {
20050 Flip<PT_Float, PT_Sint8>(S);
20051#if USE_TAILCALLS
20052 MUSTTAIL return InterpNext(S);
20053#else
20054 return true;
20055#endif
20056}
20057PRESERVE_NONE
20058static bool Interp_FlipFloatUint8(InterpState &S) {
20059 Flip<PT_Float, PT_Uint8>(S);
20060#if USE_TAILCALLS
20061 MUSTTAIL return InterpNext(S);
20062#else
20063 return true;
20064#endif
20065}
20066PRESERVE_NONE
20067static bool Interp_FlipFloatSint16(InterpState &S) {
20068 Flip<PT_Float, PT_Sint16>(S);
20069#if USE_TAILCALLS
20070 MUSTTAIL return InterpNext(S);
20071#else
20072 return true;
20073#endif
20074}
20075PRESERVE_NONE
20076static bool Interp_FlipFloatUint16(InterpState &S) {
20077 Flip<PT_Float, PT_Uint16>(S);
20078#if USE_TAILCALLS
20079 MUSTTAIL return InterpNext(S);
20080#else
20081 return true;
20082#endif
20083}
20084PRESERVE_NONE
20085static bool Interp_FlipFloatSint32(InterpState &S) {
20086 Flip<PT_Float, PT_Sint32>(S);
20087#if USE_TAILCALLS
20088 MUSTTAIL return InterpNext(S);
20089#else
20090 return true;
20091#endif
20092}
20093PRESERVE_NONE
20094static bool Interp_FlipFloatUint32(InterpState &S) {
20095 Flip<PT_Float, PT_Uint32>(S);
20096#if USE_TAILCALLS
20097 MUSTTAIL return InterpNext(S);
20098#else
20099 return true;
20100#endif
20101}
20102PRESERVE_NONE
20103static bool Interp_FlipFloatSint64(InterpState &S) {
20104 Flip<PT_Float, PT_Sint64>(S);
20105#if USE_TAILCALLS
20106 MUSTTAIL return InterpNext(S);
20107#else
20108 return true;
20109#endif
20110}
20111PRESERVE_NONE
20112static bool Interp_FlipFloatUint64(InterpState &S) {
20113 Flip<PT_Float, PT_Uint64>(S);
20114#if USE_TAILCALLS
20115 MUSTTAIL return InterpNext(S);
20116#else
20117 return true;
20118#endif
20119}
20120PRESERVE_NONE
20121static bool Interp_FlipFloatIntAP(InterpState &S) {
20122 Flip<PT_Float, PT_IntAP>(S);
20123#if USE_TAILCALLS
20124 MUSTTAIL return InterpNext(S);
20125#else
20126 return true;
20127#endif
20128}
20129PRESERVE_NONE
20130static bool Interp_FlipFloatIntAPS(InterpState &S) {
20131 Flip<PT_Float, PT_IntAPS>(S);
20132#if USE_TAILCALLS
20133 MUSTTAIL return InterpNext(S);
20134#else
20135 return true;
20136#endif
20137}
20138PRESERVE_NONE
20139static bool Interp_FlipFloatBool(InterpState &S) {
20140 Flip<PT_Float, PT_Bool>(S);
20141#if USE_TAILCALLS
20142 MUSTTAIL return InterpNext(S);
20143#else
20144 return true;
20145#endif
20146}
20147PRESERVE_NONE
20148static bool Interp_FlipFloatFixedPoint(InterpState &S) {
20149 Flip<PT_Float, PT_FixedPoint>(S);
20150#if USE_TAILCALLS
20151 MUSTTAIL return InterpNext(S);
20152#else
20153 return true;
20154#endif
20155}
20156PRESERVE_NONE
20157static bool Interp_FlipFloatPtr(InterpState &S) {
20158 Flip<PT_Float, PT_Ptr>(S);
20159#if USE_TAILCALLS
20160 MUSTTAIL return InterpNext(S);
20161#else
20162 return true;
20163#endif
20164}
20165PRESERVE_NONE
20166static bool Interp_FlipFloatMemberPtr(InterpState &S) {
20167 Flip<PT_Float, PT_MemberPtr>(S);
20168#if USE_TAILCALLS
20169 MUSTTAIL return InterpNext(S);
20170#else
20171 return true;
20172#endif
20173}
20174PRESERVE_NONE
20175static bool Interp_FlipFloatFloat(InterpState &S) {
20176 Flip<PT_Float, PT_Float>(S);
20177#if USE_TAILCALLS
20178 MUSTTAIL return InterpNext(S);
20179#else
20180 return true;
20181#endif
20182}
20183#endif
20184#ifdef GET_DISASM
20185case OP_FlipSint8Sint8:
20186 Text.Op = PrintName("FlipSint8Sint8");
20187 break;
20188case OP_FlipSint8Uint8:
20189 Text.Op = PrintName("FlipSint8Uint8");
20190 break;
20191case OP_FlipSint8Sint16:
20192 Text.Op = PrintName("FlipSint8Sint16");
20193 break;
20194case OP_FlipSint8Uint16:
20195 Text.Op = PrintName("FlipSint8Uint16");
20196 break;
20197case OP_FlipSint8Sint32:
20198 Text.Op = PrintName("FlipSint8Sint32");
20199 break;
20200case OP_FlipSint8Uint32:
20201 Text.Op = PrintName("FlipSint8Uint32");
20202 break;
20203case OP_FlipSint8Sint64:
20204 Text.Op = PrintName("FlipSint8Sint64");
20205 break;
20206case OP_FlipSint8Uint64:
20207 Text.Op = PrintName("FlipSint8Uint64");
20208 break;
20209case OP_FlipSint8IntAP:
20210 Text.Op = PrintName("FlipSint8IntAP");
20211 break;
20212case OP_FlipSint8IntAPS:
20213 Text.Op = PrintName("FlipSint8IntAPS");
20214 break;
20215case OP_FlipSint8Bool:
20216 Text.Op = PrintName("FlipSint8Bool");
20217 break;
20218case OP_FlipSint8FixedPoint:
20219 Text.Op = PrintName("FlipSint8FixedPoint");
20220 break;
20221case OP_FlipSint8Ptr:
20222 Text.Op = PrintName("FlipSint8Ptr");
20223 break;
20224case OP_FlipSint8MemberPtr:
20225 Text.Op = PrintName("FlipSint8MemberPtr");
20226 break;
20227case OP_FlipSint8Float:
20228 Text.Op = PrintName("FlipSint8Float");
20229 break;
20230case OP_FlipUint8Sint8:
20231 Text.Op = PrintName("FlipUint8Sint8");
20232 break;
20233case OP_FlipUint8Uint8:
20234 Text.Op = PrintName("FlipUint8Uint8");
20235 break;
20236case OP_FlipUint8Sint16:
20237 Text.Op = PrintName("FlipUint8Sint16");
20238 break;
20239case OP_FlipUint8Uint16:
20240 Text.Op = PrintName("FlipUint8Uint16");
20241 break;
20242case OP_FlipUint8Sint32:
20243 Text.Op = PrintName("FlipUint8Sint32");
20244 break;
20245case OP_FlipUint8Uint32:
20246 Text.Op = PrintName("FlipUint8Uint32");
20247 break;
20248case OP_FlipUint8Sint64:
20249 Text.Op = PrintName("FlipUint8Sint64");
20250 break;
20251case OP_FlipUint8Uint64:
20252 Text.Op = PrintName("FlipUint8Uint64");
20253 break;
20254case OP_FlipUint8IntAP:
20255 Text.Op = PrintName("FlipUint8IntAP");
20256 break;
20257case OP_FlipUint8IntAPS:
20258 Text.Op = PrintName("FlipUint8IntAPS");
20259 break;
20260case OP_FlipUint8Bool:
20261 Text.Op = PrintName("FlipUint8Bool");
20262 break;
20263case OP_FlipUint8FixedPoint:
20264 Text.Op = PrintName("FlipUint8FixedPoint");
20265 break;
20266case OP_FlipUint8Ptr:
20267 Text.Op = PrintName("FlipUint8Ptr");
20268 break;
20269case OP_FlipUint8MemberPtr:
20270 Text.Op = PrintName("FlipUint8MemberPtr");
20271 break;
20272case OP_FlipUint8Float:
20273 Text.Op = PrintName("FlipUint8Float");
20274 break;
20275case OP_FlipSint16Sint8:
20276 Text.Op = PrintName("FlipSint16Sint8");
20277 break;
20278case OP_FlipSint16Uint8:
20279 Text.Op = PrintName("FlipSint16Uint8");
20280 break;
20281case OP_FlipSint16Sint16:
20282 Text.Op = PrintName("FlipSint16Sint16");
20283 break;
20284case OP_FlipSint16Uint16:
20285 Text.Op = PrintName("FlipSint16Uint16");
20286 break;
20287case OP_FlipSint16Sint32:
20288 Text.Op = PrintName("FlipSint16Sint32");
20289 break;
20290case OP_FlipSint16Uint32:
20291 Text.Op = PrintName("FlipSint16Uint32");
20292 break;
20293case OP_FlipSint16Sint64:
20294 Text.Op = PrintName("FlipSint16Sint64");
20295 break;
20296case OP_FlipSint16Uint64:
20297 Text.Op = PrintName("FlipSint16Uint64");
20298 break;
20299case OP_FlipSint16IntAP:
20300 Text.Op = PrintName("FlipSint16IntAP");
20301 break;
20302case OP_FlipSint16IntAPS:
20303 Text.Op = PrintName("FlipSint16IntAPS");
20304 break;
20305case OP_FlipSint16Bool:
20306 Text.Op = PrintName("FlipSint16Bool");
20307 break;
20308case OP_FlipSint16FixedPoint:
20309 Text.Op = PrintName("FlipSint16FixedPoint");
20310 break;
20311case OP_FlipSint16Ptr:
20312 Text.Op = PrintName("FlipSint16Ptr");
20313 break;
20314case OP_FlipSint16MemberPtr:
20315 Text.Op = PrintName("FlipSint16MemberPtr");
20316 break;
20317case OP_FlipSint16Float:
20318 Text.Op = PrintName("FlipSint16Float");
20319 break;
20320case OP_FlipUint16Sint8:
20321 Text.Op = PrintName("FlipUint16Sint8");
20322 break;
20323case OP_FlipUint16Uint8:
20324 Text.Op = PrintName("FlipUint16Uint8");
20325 break;
20326case OP_FlipUint16Sint16:
20327 Text.Op = PrintName("FlipUint16Sint16");
20328 break;
20329case OP_FlipUint16Uint16:
20330 Text.Op = PrintName("FlipUint16Uint16");
20331 break;
20332case OP_FlipUint16Sint32:
20333 Text.Op = PrintName("FlipUint16Sint32");
20334 break;
20335case OP_FlipUint16Uint32:
20336 Text.Op = PrintName("FlipUint16Uint32");
20337 break;
20338case OP_FlipUint16Sint64:
20339 Text.Op = PrintName("FlipUint16Sint64");
20340 break;
20341case OP_FlipUint16Uint64:
20342 Text.Op = PrintName("FlipUint16Uint64");
20343 break;
20344case OP_FlipUint16IntAP:
20345 Text.Op = PrintName("FlipUint16IntAP");
20346 break;
20347case OP_FlipUint16IntAPS:
20348 Text.Op = PrintName("FlipUint16IntAPS");
20349 break;
20350case OP_FlipUint16Bool:
20351 Text.Op = PrintName("FlipUint16Bool");
20352 break;
20353case OP_FlipUint16FixedPoint:
20354 Text.Op = PrintName("FlipUint16FixedPoint");
20355 break;
20356case OP_FlipUint16Ptr:
20357 Text.Op = PrintName("FlipUint16Ptr");
20358 break;
20359case OP_FlipUint16MemberPtr:
20360 Text.Op = PrintName("FlipUint16MemberPtr");
20361 break;
20362case OP_FlipUint16Float:
20363 Text.Op = PrintName("FlipUint16Float");
20364 break;
20365case OP_FlipSint32Sint8:
20366 Text.Op = PrintName("FlipSint32Sint8");
20367 break;
20368case OP_FlipSint32Uint8:
20369 Text.Op = PrintName("FlipSint32Uint8");
20370 break;
20371case OP_FlipSint32Sint16:
20372 Text.Op = PrintName("FlipSint32Sint16");
20373 break;
20374case OP_FlipSint32Uint16:
20375 Text.Op = PrintName("FlipSint32Uint16");
20376 break;
20377case OP_FlipSint32Sint32:
20378 Text.Op = PrintName("FlipSint32Sint32");
20379 break;
20380case OP_FlipSint32Uint32:
20381 Text.Op = PrintName("FlipSint32Uint32");
20382 break;
20383case OP_FlipSint32Sint64:
20384 Text.Op = PrintName("FlipSint32Sint64");
20385 break;
20386case OP_FlipSint32Uint64:
20387 Text.Op = PrintName("FlipSint32Uint64");
20388 break;
20389case OP_FlipSint32IntAP:
20390 Text.Op = PrintName("FlipSint32IntAP");
20391 break;
20392case OP_FlipSint32IntAPS:
20393 Text.Op = PrintName("FlipSint32IntAPS");
20394 break;
20395case OP_FlipSint32Bool:
20396 Text.Op = PrintName("FlipSint32Bool");
20397 break;
20398case OP_FlipSint32FixedPoint:
20399 Text.Op = PrintName("FlipSint32FixedPoint");
20400 break;
20401case OP_FlipSint32Ptr:
20402 Text.Op = PrintName("FlipSint32Ptr");
20403 break;
20404case OP_FlipSint32MemberPtr:
20405 Text.Op = PrintName("FlipSint32MemberPtr");
20406 break;
20407case OP_FlipSint32Float:
20408 Text.Op = PrintName("FlipSint32Float");
20409 break;
20410case OP_FlipUint32Sint8:
20411 Text.Op = PrintName("FlipUint32Sint8");
20412 break;
20413case OP_FlipUint32Uint8:
20414 Text.Op = PrintName("FlipUint32Uint8");
20415 break;
20416case OP_FlipUint32Sint16:
20417 Text.Op = PrintName("FlipUint32Sint16");
20418 break;
20419case OP_FlipUint32Uint16:
20420 Text.Op = PrintName("FlipUint32Uint16");
20421 break;
20422case OP_FlipUint32Sint32:
20423 Text.Op = PrintName("FlipUint32Sint32");
20424 break;
20425case OP_FlipUint32Uint32:
20426 Text.Op = PrintName("FlipUint32Uint32");
20427 break;
20428case OP_FlipUint32Sint64:
20429 Text.Op = PrintName("FlipUint32Sint64");
20430 break;
20431case OP_FlipUint32Uint64:
20432 Text.Op = PrintName("FlipUint32Uint64");
20433 break;
20434case OP_FlipUint32IntAP:
20435 Text.Op = PrintName("FlipUint32IntAP");
20436 break;
20437case OP_FlipUint32IntAPS:
20438 Text.Op = PrintName("FlipUint32IntAPS");
20439 break;
20440case OP_FlipUint32Bool:
20441 Text.Op = PrintName("FlipUint32Bool");
20442 break;
20443case OP_FlipUint32FixedPoint:
20444 Text.Op = PrintName("FlipUint32FixedPoint");
20445 break;
20446case OP_FlipUint32Ptr:
20447 Text.Op = PrintName("FlipUint32Ptr");
20448 break;
20449case OP_FlipUint32MemberPtr:
20450 Text.Op = PrintName("FlipUint32MemberPtr");
20451 break;
20452case OP_FlipUint32Float:
20453 Text.Op = PrintName("FlipUint32Float");
20454 break;
20455case OP_FlipSint64Sint8:
20456 Text.Op = PrintName("FlipSint64Sint8");
20457 break;
20458case OP_FlipSint64Uint8:
20459 Text.Op = PrintName("FlipSint64Uint8");
20460 break;
20461case OP_FlipSint64Sint16:
20462 Text.Op = PrintName("FlipSint64Sint16");
20463 break;
20464case OP_FlipSint64Uint16:
20465 Text.Op = PrintName("FlipSint64Uint16");
20466 break;
20467case OP_FlipSint64Sint32:
20468 Text.Op = PrintName("FlipSint64Sint32");
20469 break;
20470case OP_FlipSint64Uint32:
20471 Text.Op = PrintName("FlipSint64Uint32");
20472 break;
20473case OP_FlipSint64Sint64:
20474 Text.Op = PrintName("FlipSint64Sint64");
20475 break;
20476case OP_FlipSint64Uint64:
20477 Text.Op = PrintName("FlipSint64Uint64");
20478 break;
20479case OP_FlipSint64IntAP:
20480 Text.Op = PrintName("FlipSint64IntAP");
20481 break;
20482case OP_FlipSint64IntAPS:
20483 Text.Op = PrintName("FlipSint64IntAPS");
20484 break;
20485case OP_FlipSint64Bool:
20486 Text.Op = PrintName("FlipSint64Bool");
20487 break;
20488case OP_FlipSint64FixedPoint:
20489 Text.Op = PrintName("FlipSint64FixedPoint");
20490 break;
20491case OP_FlipSint64Ptr:
20492 Text.Op = PrintName("FlipSint64Ptr");
20493 break;
20494case OP_FlipSint64MemberPtr:
20495 Text.Op = PrintName("FlipSint64MemberPtr");
20496 break;
20497case OP_FlipSint64Float:
20498 Text.Op = PrintName("FlipSint64Float");
20499 break;
20500case OP_FlipUint64Sint8:
20501 Text.Op = PrintName("FlipUint64Sint8");
20502 break;
20503case OP_FlipUint64Uint8:
20504 Text.Op = PrintName("FlipUint64Uint8");
20505 break;
20506case OP_FlipUint64Sint16:
20507 Text.Op = PrintName("FlipUint64Sint16");
20508 break;
20509case OP_FlipUint64Uint16:
20510 Text.Op = PrintName("FlipUint64Uint16");
20511 break;
20512case OP_FlipUint64Sint32:
20513 Text.Op = PrintName("FlipUint64Sint32");
20514 break;
20515case OP_FlipUint64Uint32:
20516 Text.Op = PrintName("FlipUint64Uint32");
20517 break;
20518case OP_FlipUint64Sint64:
20519 Text.Op = PrintName("FlipUint64Sint64");
20520 break;
20521case OP_FlipUint64Uint64:
20522 Text.Op = PrintName("FlipUint64Uint64");
20523 break;
20524case OP_FlipUint64IntAP:
20525 Text.Op = PrintName("FlipUint64IntAP");
20526 break;
20527case OP_FlipUint64IntAPS:
20528 Text.Op = PrintName("FlipUint64IntAPS");
20529 break;
20530case OP_FlipUint64Bool:
20531 Text.Op = PrintName("FlipUint64Bool");
20532 break;
20533case OP_FlipUint64FixedPoint:
20534 Text.Op = PrintName("FlipUint64FixedPoint");
20535 break;
20536case OP_FlipUint64Ptr:
20537 Text.Op = PrintName("FlipUint64Ptr");
20538 break;
20539case OP_FlipUint64MemberPtr:
20540 Text.Op = PrintName("FlipUint64MemberPtr");
20541 break;
20542case OP_FlipUint64Float:
20543 Text.Op = PrintName("FlipUint64Float");
20544 break;
20545case OP_FlipIntAPSint8:
20546 Text.Op = PrintName("FlipIntAPSint8");
20547 break;
20548case OP_FlipIntAPUint8:
20549 Text.Op = PrintName("FlipIntAPUint8");
20550 break;
20551case OP_FlipIntAPSint16:
20552 Text.Op = PrintName("FlipIntAPSint16");
20553 break;
20554case OP_FlipIntAPUint16:
20555 Text.Op = PrintName("FlipIntAPUint16");
20556 break;
20557case OP_FlipIntAPSint32:
20558 Text.Op = PrintName("FlipIntAPSint32");
20559 break;
20560case OP_FlipIntAPUint32:
20561 Text.Op = PrintName("FlipIntAPUint32");
20562 break;
20563case OP_FlipIntAPSint64:
20564 Text.Op = PrintName("FlipIntAPSint64");
20565 break;
20566case OP_FlipIntAPUint64:
20567 Text.Op = PrintName("FlipIntAPUint64");
20568 break;
20569case OP_FlipIntAPIntAP:
20570 Text.Op = PrintName("FlipIntAPIntAP");
20571 break;
20572case OP_FlipIntAPIntAPS:
20573 Text.Op = PrintName("FlipIntAPIntAPS");
20574 break;
20575case OP_FlipIntAPBool:
20576 Text.Op = PrintName("FlipIntAPBool");
20577 break;
20578case OP_FlipIntAPFixedPoint:
20579 Text.Op = PrintName("FlipIntAPFixedPoint");
20580 break;
20581case OP_FlipIntAPPtr:
20582 Text.Op = PrintName("FlipIntAPPtr");
20583 break;
20584case OP_FlipIntAPMemberPtr:
20585 Text.Op = PrintName("FlipIntAPMemberPtr");
20586 break;
20587case OP_FlipIntAPFloat:
20588 Text.Op = PrintName("FlipIntAPFloat");
20589 break;
20590case OP_FlipIntAPSSint8:
20591 Text.Op = PrintName("FlipIntAPSSint8");
20592 break;
20593case OP_FlipIntAPSUint8:
20594 Text.Op = PrintName("FlipIntAPSUint8");
20595 break;
20596case OP_FlipIntAPSSint16:
20597 Text.Op = PrintName("FlipIntAPSSint16");
20598 break;
20599case OP_FlipIntAPSUint16:
20600 Text.Op = PrintName("FlipIntAPSUint16");
20601 break;
20602case OP_FlipIntAPSSint32:
20603 Text.Op = PrintName("FlipIntAPSSint32");
20604 break;
20605case OP_FlipIntAPSUint32:
20606 Text.Op = PrintName("FlipIntAPSUint32");
20607 break;
20608case OP_FlipIntAPSSint64:
20609 Text.Op = PrintName("FlipIntAPSSint64");
20610 break;
20611case OP_FlipIntAPSUint64:
20612 Text.Op = PrintName("FlipIntAPSUint64");
20613 break;
20614case OP_FlipIntAPSIntAP:
20615 Text.Op = PrintName("FlipIntAPSIntAP");
20616 break;
20617case OP_FlipIntAPSIntAPS:
20618 Text.Op = PrintName("FlipIntAPSIntAPS");
20619 break;
20620case OP_FlipIntAPSBool:
20621 Text.Op = PrintName("FlipIntAPSBool");
20622 break;
20623case OP_FlipIntAPSFixedPoint:
20624 Text.Op = PrintName("FlipIntAPSFixedPoint");
20625 break;
20626case OP_FlipIntAPSPtr:
20627 Text.Op = PrintName("FlipIntAPSPtr");
20628 break;
20629case OP_FlipIntAPSMemberPtr:
20630 Text.Op = PrintName("FlipIntAPSMemberPtr");
20631 break;
20632case OP_FlipIntAPSFloat:
20633 Text.Op = PrintName("FlipIntAPSFloat");
20634 break;
20635case OP_FlipBoolSint8:
20636 Text.Op = PrintName("FlipBoolSint8");
20637 break;
20638case OP_FlipBoolUint8:
20639 Text.Op = PrintName("FlipBoolUint8");
20640 break;
20641case OP_FlipBoolSint16:
20642 Text.Op = PrintName("FlipBoolSint16");
20643 break;
20644case OP_FlipBoolUint16:
20645 Text.Op = PrintName("FlipBoolUint16");
20646 break;
20647case OP_FlipBoolSint32:
20648 Text.Op = PrintName("FlipBoolSint32");
20649 break;
20650case OP_FlipBoolUint32:
20651 Text.Op = PrintName("FlipBoolUint32");
20652 break;
20653case OP_FlipBoolSint64:
20654 Text.Op = PrintName("FlipBoolSint64");
20655 break;
20656case OP_FlipBoolUint64:
20657 Text.Op = PrintName("FlipBoolUint64");
20658 break;
20659case OP_FlipBoolIntAP:
20660 Text.Op = PrintName("FlipBoolIntAP");
20661 break;
20662case OP_FlipBoolIntAPS:
20663 Text.Op = PrintName("FlipBoolIntAPS");
20664 break;
20665case OP_FlipBoolBool:
20666 Text.Op = PrintName("FlipBoolBool");
20667 break;
20668case OP_FlipBoolFixedPoint:
20669 Text.Op = PrintName("FlipBoolFixedPoint");
20670 break;
20671case OP_FlipBoolPtr:
20672 Text.Op = PrintName("FlipBoolPtr");
20673 break;
20674case OP_FlipBoolMemberPtr:
20675 Text.Op = PrintName("FlipBoolMemberPtr");
20676 break;
20677case OP_FlipBoolFloat:
20678 Text.Op = PrintName("FlipBoolFloat");
20679 break;
20680case OP_FlipFixedPointSint8:
20681 Text.Op = PrintName("FlipFixedPointSint8");
20682 break;
20683case OP_FlipFixedPointUint8:
20684 Text.Op = PrintName("FlipFixedPointUint8");
20685 break;
20686case OP_FlipFixedPointSint16:
20687 Text.Op = PrintName("FlipFixedPointSint16");
20688 break;
20689case OP_FlipFixedPointUint16:
20690 Text.Op = PrintName("FlipFixedPointUint16");
20691 break;
20692case OP_FlipFixedPointSint32:
20693 Text.Op = PrintName("FlipFixedPointSint32");
20694 break;
20695case OP_FlipFixedPointUint32:
20696 Text.Op = PrintName("FlipFixedPointUint32");
20697 break;
20698case OP_FlipFixedPointSint64:
20699 Text.Op = PrintName("FlipFixedPointSint64");
20700 break;
20701case OP_FlipFixedPointUint64:
20702 Text.Op = PrintName("FlipFixedPointUint64");
20703 break;
20704case OP_FlipFixedPointIntAP:
20705 Text.Op = PrintName("FlipFixedPointIntAP");
20706 break;
20707case OP_FlipFixedPointIntAPS:
20708 Text.Op = PrintName("FlipFixedPointIntAPS");
20709 break;
20710case OP_FlipFixedPointBool:
20711 Text.Op = PrintName("FlipFixedPointBool");
20712 break;
20713case OP_FlipFixedPointFixedPoint:
20714 Text.Op = PrintName("FlipFixedPointFixedPoint");
20715 break;
20716case OP_FlipFixedPointPtr:
20717 Text.Op = PrintName("FlipFixedPointPtr");
20718 break;
20719case OP_FlipFixedPointMemberPtr:
20720 Text.Op = PrintName("FlipFixedPointMemberPtr");
20721 break;
20722case OP_FlipFixedPointFloat:
20723 Text.Op = PrintName("FlipFixedPointFloat");
20724 break;
20725case OP_FlipPtrSint8:
20726 Text.Op = PrintName("FlipPtrSint8");
20727 break;
20728case OP_FlipPtrUint8:
20729 Text.Op = PrintName("FlipPtrUint8");
20730 break;
20731case OP_FlipPtrSint16:
20732 Text.Op = PrintName("FlipPtrSint16");
20733 break;
20734case OP_FlipPtrUint16:
20735 Text.Op = PrintName("FlipPtrUint16");
20736 break;
20737case OP_FlipPtrSint32:
20738 Text.Op = PrintName("FlipPtrSint32");
20739 break;
20740case OP_FlipPtrUint32:
20741 Text.Op = PrintName("FlipPtrUint32");
20742 break;
20743case OP_FlipPtrSint64:
20744 Text.Op = PrintName("FlipPtrSint64");
20745 break;
20746case OP_FlipPtrUint64:
20747 Text.Op = PrintName("FlipPtrUint64");
20748 break;
20749case OP_FlipPtrIntAP:
20750 Text.Op = PrintName("FlipPtrIntAP");
20751 break;
20752case OP_FlipPtrIntAPS:
20753 Text.Op = PrintName("FlipPtrIntAPS");
20754 break;
20755case OP_FlipPtrBool:
20756 Text.Op = PrintName("FlipPtrBool");
20757 break;
20758case OP_FlipPtrFixedPoint:
20759 Text.Op = PrintName("FlipPtrFixedPoint");
20760 break;
20761case OP_FlipPtrPtr:
20762 Text.Op = PrintName("FlipPtrPtr");
20763 break;
20764case OP_FlipPtrMemberPtr:
20765 Text.Op = PrintName("FlipPtrMemberPtr");
20766 break;
20767case OP_FlipPtrFloat:
20768 Text.Op = PrintName("FlipPtrFloat");
20769 break;
20770case OP_FlipMemberPtrSint8:
20771 Text.Op = PrintName("FlipMemberPtrSint8");
20772 break;
20773case OP_FlipMemberPtrUint8:
20774 Text.Op = PrintName("FlipMemberPtrUint8");
20775 break;
20776case OP_FlipMemberPtrSint16:
20777 Text.Op = PrintName("FlipMemberPtrSint16");
20778 break;
20779case OP_FlipMemberPtrUint16:
20780 Text.Op = PrintName("FlipMemberPtrUint16");
20781 break;
20782case OP_FlipMemberPtrSint32:
20783 Text.Op = PrintName("FlipMemberPtrSint32");
20784 break;
20785case OP_FlipMemberPtrUint32:
20786 Text.Op = PrintName("FlipMemberPtrUint32");
20787 break;
20788case OP_FlipMemberPtrSint64:
20789 Text.Op = PrintName("FlipMemberPtrSint64");
20790 break;
20791case OP_FlipMemberPtrUint64:
20792 Text.Op = PrintName("FlipMemberPtrUint64");
20793 break;
20794case OP_FlipMemberPtrIntAP:
20795 Text.Op = PrintName("FlipMemberPtrIntAP");
20796 break;
20797case OP_FlipMemberPtrIntAPS:
20798 Text.Op = PrintName("FlipMemberPtrIntAPS");
20799 break;
20800case OP_FlipMemberPtrBool:
20801 Text.Op = PrintName("FlipMemberPtrBool");
20802 break;
20803case OP_FlipMemberPtrFixedPoint:
20804 Text.Op = PrintName("FlipMemberPtrFixedPoint");
20805 break;
20806case OP_FlipMemberPtrPtr:
20807 Text.Op = PrintName("FlipMemberPtrPtr");
20808 break;
20809case OP_FlipMemberPtrMemberPtr:
20810 Text.Op = PrintName("FlipMemberPtrMemberPtr");
20811 break;
20812case OP_FlipMemberPtrFloat:
20813 Text.Op = PrintName("FlipMemberPtrFloat");
20814 break;
20815case OP_FlipFloatSint8:
20816 Text.Op = PrintName("FlipFloatSint8");
20817 break;
20818case OP_FlipFloatUint8:
20819 Text.Op = PrintName("FlipFloatUint8");
20820 break;
20821case OP_FlipFloatSint16:
20822 Text.Op = PrintName("FlipFloatSint16");
20823 break;
20824case OP_FlipFloatUint16:
20825 Text.Op = PrintName("FlipFloatUint16");
20826 break;
20827case OP_FlipFloatSint32:
20828 Text.Op = PrintName("FlipFloatSint32");
20829 break;
20830case OP_FlipFloatUint32:
20831 Text.Op = PrintName("FlipFloatUint32");
20832 break;
20833case OP_FlipFloatSint64:
20834 Text.Op = PrintName("FlipFloatSint64");
20835 break;
20836case OP_FlipFloatUint64:
20837 Text.Op = PrintName("FlipFloatUint64");
20838 break;
20839case OP_FlipFloatIntAP:
20840 Text.Op = PrintName("FlipFloatIntAP");
20841 break;
20842case OP_FlipFloatIntAPS:
20843 Text.Op = PrintName("FlipFloatIntAPS");
20844 break;
20845case OP_FlipFloatBool:
20846 Text.Op = PrintName("FlipFloatBool");
20847 break;
20848case OP_FlipFloatFixedPoint:
20849 Text.Op = PrintName("FlipFloatFixedPoint");
20850 break;
20851case OP_FlipFloatPtr:
20852 Text.Op = PrintName("FlipFloatPtr");
20853 break;
20854case OP_FlipFloatMemberPtr:
20855 Text.Op = PrintName("FlipFloatMemberPtr");
20856 break;
20857case OP_FlipFloatFloat:
20858 Text.Op = PrintName("FlipFloatFloat");
20859 break;
20860#endif
20861#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
20862bool emitFlipSint8Sint8(SourceInfo);
20863bool emitFlipSint8Uint8(SourceInfo);
20864bool emitFlipSint8Sint16(SourceInfo);
20865bool emitFlipSint8Uint16(SourceInfo);
20866bool emitFlipSint8Sint32(SourceInfo);
20867bool emitFlipSint8Uint32(SourceInfo);
20868bool emitFlipSint8Sint64(SourceInfo);
20869bool emitFlipSint8Uint64(SourceInfo);
20870bool emitFlipSint8IntAP(SourceInfo);
20871bool emitFlipSint8IntAPS(SourceInfo);
20872bool emitFlipSint8Bool(SourceInfo);
20873bool emitFlipSint8FixedPoint(SourceInfo);
20874bool emitFlipSint8Ptr(SourceInfo);
20875bool emitFlipSint8MemberPtr(SourceInfo);
20876bool emitFlipSint8Float(SourceInfo);
20877bool emitFlipUint8Sint8(SourceInfo);
20878bool emitFlipUint8Uint8(SourceInfo);
20879bool emitFlipUint8Sint16(SourceInfo);
20880bool emitFlipUint8Uint16(SourceInfo);
20881bool emitFlipUint8Sint32(SourceInfo);
20882bool emitFlipUint8Uint32(SourceInfo);
20883bool emitFlipUint8Sint64(SourceInfo);
20884bool emitFlipUint8Uint64(SourceInfo);
20885bool emitFlipUint8IntAP(SourceInfo);
20886bool emitFlipUint8IntAPS(SourceInfo);
20887bool emitFlipUint8Bool(SourceInfo);
20888bool emitFlipUint8FixedPoint(SourceInfo);
20889bool emitFlipUint8Ptr(SourceInfo);
20890bool emitFlipUint8MemberPtr(SourceInfo);
20891bool emitFlipUint8Float(SourceInfo);
20892bool emitFlipSint16Sint8(SourceInfo);
20893bool emitFlipSint16Uint8(SourceInfo);
20894bool emitFlipSint16Sint16(SourceInfo);
20895bool emitFlipSint16Uint16(SourceInfo);
20896bool emitFlipSint16Sint32(SourceInfo);
20897bool emitFlipSint16Uint32(SourceInfo);
20898bool emitFlipSint16Sint64(SourceInfo);
20899bool emitFlipSint16Uint64(SourceInfo);
20900bool emitFlipSint16IntAP(SourceInfo);
20901bool emitFlipSint16IntAPS(SourceInfo);
20902bool emitFlipSint16Bool(SourceInfo);
20903bool emitFlipSint16FixedPoint(SourceInfo);
20904bool emitFlipSint16Ptr(SourceInfo);
20905bool emitFlipSint16MemberPtr(SourceInfo);
20906bool emitFlipSint16Float(SourceInfo);
20907bool emitFlipUint16Sint8(SourceInfo);
20908bool emitFlipUint16Uint8(SourceInfo);
20909bool emitFlipUint16Sint16(SourceInfo);
20910bool emitFlipUint16Uint16(SourceInfo);
20911bool emitFlipUint16Sint32(SourceInfo);
20912bool emitFlipUint16Uint32(SourceInfo);
20913bool emitFlipUint16Sint64(SourceInfo);
20914bool emitFlipUint16Uint64(SourceInfo);
20915bool emitFlipUint16IntAP(SourceInfo);
20916bool emitFlipUint16IntAPS(SourceInfo);
20917bool emitFlipUint16Bool(SourceInfo);
20918bool emitFlipUint16FixedPoint(SourceInfo);
20919bool emitFlipUint16Ptr(SourceInfo);
20920bool emitFlipUint16MemberPtr(SourceInfo);
20921bool emitFlipUint16Float(SourceInfo);
20922bool emitFlipSint32Sint8(SourceInfo);
20923bool emitFlipSint32Uint8(SourceInfo);
20924bool emitFlipSint32Sint16(SourceInfo);
20925bool emitFlipSint32Uint16(SourceInfo);
20926bool emitFlipSint32Sint32(SourceInfo);
20927bool emitFlipSint32Uint32(SourceInfo);
20928bool emitFlipSint32Sint64(SourceInfo);
20929bool emitFlipSint32Uint64(SourceInfo);
20930bool emitFlipSint32IntAP(SourceInfo);
20931bool emitFlipSint32IntAPS(SourceInfo);
20932bool emitFlipSint32Bool(SourceInfo);
20933bool emitFlipSint32FixedPoint(SourceInfo);
20934bool emitFlipSint32Ptr(SourceInfo);
20935bool emitFlipSint32MemberPtr(SourceInfo);
20936bool emitFlipSint32Float(SourceInfo);
20937bool emitFlipUint32Sint8(SourceInfo);
20938bool emitFlipUint32Uint8(SourceInfo);
20939bool emitFlipUint32Sint16(SourceInfo);
20940bool emitFlipUint32Uint16(SourceInfo);
20941bool emitFlipUint32Sint32(SourceInfo);
20942bool emitFlipUint32Uint32(SourceInfo);
20943bool emitFlipUint32Sint64(SourceInfo);
20944bool emitFlipUint32Uint64(SourceInfo);
20945bool emitFlipUint32IntAP(SourceInfo);
20946bool emitFlipUint32IntAPS(SourceInfo);
20947bool emitFlipUint32Bool(SourceInfo);
20948bool emitFlipUint32FixedPoint(SourceInfo);
20949bool emitFlipUint32Ptr(SourceInfo);
20950bool emitFlipUint32MemberPtr(SourceInfo);
20951bool emitFlipUint32Float(SourceInfo);
20952bool emitFlipSint64Sint8(SourceInfo);
20953bool emitFlipSint64Uint8(SourceInfo);
20954bool emitFlipSint64Sint16(SourceInfo);
20955bool emitFlipSint64Uint16(SourceInfo);
20956bool emitFlipSint64Sint32(SourceInfo);
20957bool emitFlipSint64Uint32(SourceInfo);
20958bool emitFlipSint64Sint64(SourceInfo);
20959bool emitFlipSint64Uint64(SourceInfo);
20960bool emitFlipSint64IntAP(SourceInfo);
20961bool emitFlipSint64IntAPS(SourceInfo);
20962bool emitFlipSint64Bool(SourceInfo);
20963bool emitFlipSint64FixedPoint(SourceInfo);
20964bool emitFlipSint64Ptr(SourceInfo);
20965bool emitFlipSint64MemberPtr(SourceInfo);
20966bool emitFlipSint64Float(SourceInfo);
20967bool emitFlipUint64Sint8(SourceInfo);
20968bool emitFlipUint64Uint8(SourceInfo);
20969bool emitFlipUint64Sint16(SourceInfo);
20970bool emitFlipUint64Uint16(SourceInfo);
20971bool emitFlipUint64Sint32(SourceInfo);
20972bool emitFlipUint64Uint32(SourceInfo);
20973bool emitFlipUint64Sint64(SourceInfo);
20974bool emitFlipUint64Uint64(SourceInfo);
20975bool emitFlipUint64IntAP(SourceInfo);
20976bool emitFlipUint64IntAPS(SourceInfo);
20977bool emitFlipUint64Bool(SourceInfo);
20978bool emitFlipUint64FixedPoint(SourceInfo);
20979bool emitFlipUint64Ptr(SourceInfo);
20980bool emitFlipUint64MemberPtr(SourceInfo);
20981bool emitFlipUint64Float(SourceInfo);
20982bool emitFlipIntAPSint8(SourceInfo);
20983bool emitFlipIntAPUint8(SourceInfo);
20984bool emitFlipIntAPSint16(SourceInfo);
20985bool emitFlipIntAPUint16(SourceInfo);
20986bool emitFlipIntAPSint32(SourceInfo);
20987bool emitFlipIntAPUint32(SourceInfo);
20988bool emitFlipIntAPSint64(SourceInfo);
20989bool emitFlipIntAPUint64(SourceInfo);
20990bool emitFlipIntAPIntAP(SourceInfo);
20991bool emitFlipIntAPIntAPS(SourceInfo);
20992bool emitFlipIntAPBool(SourceInfo);
20993bool emitFlipIntAPFixedPoint(SourceInfo);
20994bool emitFlipIntAPPtr(SourceInfo);
20995bool emitFlipIntAPMemberPtr(SourceInfo);
20996bool emitFlipIntAPFloat(SourceInfo);
20997bool emitFlipIntAPSSint8(SourceInfo);
20998bool emitFlipIntAPSUint8(SourceInfo);
20999bool emitFlipIntAPSSint16(SourceInfo);
21000bool emitFlipIntAPSUint16(SourceInfo);
21001bool emitFlipIntAPSSint32(SourceInfo);
21002bool emitFlipIntAPSUint32(SourceInfo);
21003bool emitFlipIntAPSSint64(SourceInfo);
21004bool emitFlipIntAPSUint64(SourceInfo);
21005bool emitFlipIntAPSIntAP(SourceInfo);
21006bool emitFlipIntAPSIntAPS(SourceInfo);
21007bool emitFlipIntAPSBool(SourceInfo);
21008bool emitFlipIntAPSFixedPoint(SourceInfo);
21009bool emitFlipIntAPSPtr(SourceInfo);
21010bool emitFlipIntAPSMemberPtr(SourceInfo);
21011bool emitFlipIntAPSFloat(SourceInfo);
21012bool emitFlipBoolSint8(SourceInfo);
21013bool emitFlipBoolUint8(SourceInfo);
21014bool emitFlipBoolSint16(SourceInfo);
21015bool emitFlipBoolUint16(SourceInfo);
21016bool emitFlipBoolSint32(SourceInfo);
21017bool emitFlipBoolUint32(SourceInfo);
21018bool emitFlipBoolSint64(SourceInfo);
21019bool emitFlipBoolUint64(SourceInfo);
21020bool emitFlipBoolIntAP(SourceInfo);
21021bool emitFlipBoolIntAPS(SourceInfo);
21022bool emitFlipBoolBool(SourceInfo);
21023bool emitFlipBoolFixedPoint(SourceInfo);
21024bool emitFlipBoolPtr(SourceInfo);
21025bool emitFlipBoolMemberPtr(SourceInfo);
21026bool emitFlipBoolFloat(SourceInfo);
21027bool emitFlipFixedPointSint8(SourceInfo);
21028bool emitFlipFixedPointUint8(SourceInfo);
21029bool emitFlipFixedPointSint16(SourceInfo);
21030bool emitFlipFixedPointUint16(SourceInfo);
21031bool emitFlipFixedPointSint32(SourceInfo);
21032bool emitFlipFixedPointUint32(SourceInfo);
21033bool emitFlipFixedPointSint64(SourceInfo);
21034bool emitFlipFixedPointUint64(SourceInfo);
21035bool emitFlipFixedPointIntAP(SourceInfo);
21036bool emitFlipFixedPointIntAPS(SourceInfo);
21037bool emitFlipFixedPointBool(SourceInfo);
21038bool emitFlipFixedPointFixedPoint(SourceInfo);
21039bool emitFlipFixedPointPtr(SourceInfo);
21040bool emitFlipFixedPointMemberPtr(SourceInfo);
21041bool emitFlipFixedPointFloat(SourceInfo);
21042bool emitFlipPtrSint8(SourceInfo);
21043bool emitFlipPtrUint8(SourceInfo);
21044bool emitFlipPtrSint16(SourceInfo);
21045bool emitFlipPtrUint16(SourceInfo);
21046bool emitFlipPtrSint32(SourceInfo);
21047bool emitFlipPtrUint32(SourceInfo);
21048bool emitFlipPtrSint64(SourceInfo);
21049bool emitFlipPtrUint64(SourceInfo);
21050bool emitFlipPtrIntAP(SourceInfo);
21051bool emitFlipPtrIntAPS(SourceInfo);
21052bool emitFlipPtrBool(SourceInfo);
21053bool emitFlipPtrFixedPoint(SourceInfo);
21054bool emitFlipPtrPtr(SourceInfo);
21055bool emitFlipPtrMemberPtr(SourceInfo);
21056bool emitFlipPtrFloat(SourceInfo);
21057bool emitFlipMemberPtrSint8(SourceInfo);
21058bool emitFlipMemberPtrUint8(SourceInfo);
21059bool emitFlipMemberPtrSint16(SourceInfo);
21060bool emitFlipMemberPtrUint16(SourceInfo);
21061bool emitFlipMemberPtrSint32(SourceInfo);
21062bool emitFlipMemberPtrUint32(SourceInfo);
21063bool emitFlipMemberPtrSint64(SourceInfo);
21064bool emitFlipMemberPtrUint64(SourceInfo);
21065bool emitFlipMemberPtrIntAP(SourceInfo);
21066bool emitFlipMemberPtrIntAPS(SourceInfo);
21067bool emitFlipMemberPtrBool(SourceInfo);
21068bool emitFlipMemberPtrFixedPoint(SourceInfo);
21069bool emitFlipMemberPtrPtr(SourceInfo);
21070bool emitFlipMemberPtrMemberPtr(SourceInfo);
21071bool emitFlipMemberPtrFloat(SourceInfo);
21072bool emitFlipFloatSint8(SourceInfo);
21073bool emitFlipFloatUint8(SourceInfo);
21074bool emitFlipFloatSint16(SourceInfo);
21075bool emitFlipFloatUint16(SourceInfo);
21076bool emitFlipFloatSint32(SourceInfo);
21077bool emitFlipFloatUint32(SourceInfo);
21078bool emitFlipFloatSint64(SourceInfo);
21079bool emitFlipFloatUint64(SourceInfo);
21080bool emitFlipFloatIntAP(SourceInfo);
21081bool emitFlipFloatIntAPS(SourceInfo);
21082bool emitFlipFloatBool(SourceInfo);
21083bool emitFlipFloatFixedPoint(SourceInfo);
21084bool emitFlipFloatPtr(SourceInfo);
21085bool emitFlipFloatMemberPtr(SourceInfo);
21086bool emitFlipFloatFloat(SourceInfo);
21087#endif
21088#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21089[[nodiscard]] bool emitFlip(PrimType, PrimType, SourceInfo I);
21090#endif
21091#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
21092bool
21093#if defined(GET_EVAL_IMPL)
21094EvalEmitter
21095#else
21096ByteCodeEmitter
21097#endif
21098::emitFlip(PrimType T0, PrimType T1, SourceInfo I) {
21099 switch (T0) {
21100 case PT_Sint8:
21101 switch (T1) {
21102 case PT_Sint8:
21103 return emitFlipSint8Sint8(I);
21104 case PT_Uint8:
21105 return emitFlipSint8Uint8(I);
21106 case PT_Sint16:
21107 return emitFlipSint8Sint16(I);
21108 case PT_Uint16:
21109 return emitFlipSint8Uint16(I);
21110 case PT_Sint32:
21111 return emitFlipSint8Sint32(I);
21112 case PT_Uint32:
21113 return emitFlipSint8Uint32(I);
21114 case PT_Sint64:
21115 return emitFlipSint8Sint64(I);
21116 case PT_Uint64:
21117 return emitFlipSint8Uint64(I);
21118 case PT_IntAP:
21119 return emitFlipSint8IntAP(I);
21120 case PT_IntAPS:
21121 return emitFlipSint8IntAPS(I);
21122 case PT_Bool:
21123 return emitFlipSint8Bool(I);
21124 case PT_FixedPoint:
21125 return emitFlipSint8FixedPoint(I);
21126 case PT_Ptr:
21127 return emitFlipSint8Ptr(I);
21128 case PT_MemberPtr:
21129 return emitFlipSint8MemberPtr(I);
21130 case PT_Float:
21131 return emitFlipSint8Float(I);
21132 }
21133 llvm_unreachable("invalid enum value");
21134 case PT_Uint8:
21135 switch (T1) {
21136 case PT_Sint8:
21137 return emitFlipUint8Sint8(I);
21138 case PT_Uint8:
21139 return emitFlipUint8Uint8(I);
21140 case PT_Sint16:
21141 return emitFlipUint8Sint16(I);
21142 case PT_Uint16:
21143 return emitFlipUint8Uint16(I);
21144 case PT_Sint32:
21145 return emitFlipUint8Sint32(I);
21146 case PT_Uint32:
21147 return emitFlipUint8Uint32(I);
21148 case PT_Sint64:
21149 return emitFlipUint8Sint64(I);
21150 case PT_Uint64:
21151 return emitFlipUint8Uint64(I);
21152 case PT_IntAP:
21153 return emitFlipUint8IntAP(I);
21154 case PT_IntAPS:
21155 return emitFlipUint8IntAPS(I);
21156 case PT_Bool:
21157 return emitFlipUint8Bool(I);
21158 case PT_FixedPoint:
21159 return emitFlipUint8FixedPoint(I);
21160 case PT_Ptr:
21161 return emitFlipUint8Ptr(I);
21162 case PT_MemberPtr:
21163 return emitFlipUint8MemberPtr(I);
21164 case PT_Float:
21165 return emitFlipUint8Float(I);
21166 }
21167 llvm_unreachable("invalid enum value");
21168 case PT_Sint16:
21169 switch (T1) {
21170 case PT_Sint8:
21171 return emitFlipSint16Sint8(I);
21172 case PT_Uint8:
21173 return emitFlipSint16Uint8(I);
21174 case PT_Sint16:
21175 return emitFlipSint16Sint16(I);
21176 case PT_Uint16:
21177 return emitFlipSint16Uint16(I);
21178 case PT_Sint32:
21179 return emitFlipSint16Sint32(I);
21180 case PT_Uint32:
21181 return emitFlipSint16Uint32(I);
21182 case PT_Sint64:
21183 return emitFlipSint16Sint64(I);
21184 case PT_Uint64:
21185 return emitFlipSint16Uint64(I);
21186 case PT_IntAP:
21187 return emitFlipSint16IntAP(I);
21188 case PT_IntAPS:
21189 return emitFlipSint16IntAPS(I);
21190 case PT_Bool:
21191 return emitFlipSint16Bool(I);
21192 case PT_FixedPoint:
21193 return emitFlipSint16FixedPoint(I);
21194 case PT_Ptr:
21195 return emitFlipSint16Ptr(I);
21196 case PT_MemberPtr:
21197 return emitFlipSint16MemberPtr(I);
21198 case PT_Float:
21199 return emitFlipSint16Float(I);
21200 }
21201 llvm_unreachable("invalid enum value");
21202 case PT_Uint16:
21203 switch (T1) {
21204 case PT_Sint8:
21205 return emitFlipUint16Sint8(I);
21206 case PT_Uint8:
21207 return emitFlipUint16Uint8(I);
21208 case PT_Sint16:
21209 return emitFlipUint16Sint16(I);
21210 case PT_Uint16:
21211 return emitFlipUint16Uint16(I);
21212 case PT_Sint32:
21213 return emitFlipUint16Sint32(I);
21214 case PT_Uint32:
21215 return emitFlipUint16Uint32(I);
21216 case PT_Sint64:
21217 return emitFlipUint16Sint64(I);
21218 case PT_Uint64:
21219 return emitFlipUint16Uint64(I);
21220 case PT_IntAP:
21221 return emitFlipUint16IntAP(I);
21222 case PT_IntAPS:
21223 return emitFlipUint16IntAPS(I);
21224 case PT_Bool:
21225 return emitFlipUint16Bool(I);
21226 case PT_FixedPoint:
21227 return emitFlipUint16FixedPoint(I);
21228 case PT_Ptr:
21229 return emitFlipUint16Ptr(I);
21230 case PT_MemberPtr:
21231 return emitFlipUint16MemberPtr(I);
21232 case PT_Float:
21233 return emitFlipUint16Float(I);
21234 }
21235 llvm_unreachable("invalid enum value");
21236 case PT_Sint32:
21237 switch (T1) {
21238 case PT_Sint8:
21239 return emitFlipSint32Sint8(I);
21240 case PT_Uint8:
21241 return emitFlipSint32Uint8(I);
21242 case PT_Sint16:
21243 return emitFlipSint32Sint16(I);
21244 case PT_Uint16:
21245 return emitFlipSint32Uint16(I);
21246 case PT_Sint32:
21247 return emitFlipSint32Sint32(I);
21248 case PT_Uint32:
21249 return emitFlipSint32Uint32(I);
21250 case PT_Sint64:
21251 return emitFlipSint32Sint64(I);
21252 case PT_Uint64:
21253 return emitFlipSint32Uint64(I);
21254 case PT_IntAP:
21255 return emitFlipSint32IntAP(I);
21256 case PT_IntAPS:
21257 return emitFlipSint32IntAPS(I);
21258 case PT_Bool:
21259 return emitFlipSint32Bool(I);
21260 case PT_FixedPoint:
21261 return emitFlipSint32FixedPoint(I);
21262 case PT_Ptr:
21263 return emitFlipSint32Ptr(I);
21264 case PT_MemberPtr:
21265 return emitFlipSint32MemberPtr(I);
21266 case PT_Float:
21267 return emitFlipSint32Float(I);
21268 }
21269 llvm_unreachable("invalid enum value");
21270 case PT_Uint32:
21271 switch (T1) {
21272 case PT_Sint8:
21273 return emitFlipUint32Sint8(I);
21274 case PT_Uint8:
21275 return emitFlipUint32Uint8(I);
21276 case PT_Sint16:
21277 return emitFlipUint32Sint16(I);
21278 case PT_Uint16:
21279 return emitFlipUint32Uint16(I);
21280 case PT_Sint32:
21281 return emitFlipUint32Sint32(I);
21282 case PT_Uint32:
21283 return emitFlipUint32Uint32(I);
21284 case PT_Sint64:
21285 return emitFlipUint32Sint64(I);
21286 case PT_Uint64:
21287 return emitFlipUint32Uint64(I);
21288 case PT_IntAP:
21289 return emitFlipUint32IntAP(I);
21290 case PT_IntAPS:
21291 return emitFlipUint32IntAPS(I);
21292 case PT_Bool:
21293 return emitFlipUint32Bool(I);
21294 case PT_FixedPoint:
21295 return emitFlipUint32FixedPoint(I);
21296 case PT_Ptr:
21297 return emitFlipUint32Ptr(I);
21298 case PT_MemberPtr:
21299 return emitFlipUint32MemberPtr(I);
21300 case PT_Float:
21301 return emitFlipUint32Float(I);
21302 }
21303 llvm_unreachable("invalid enum value");
21304 case PT_Sint64:
21305 switch (T1) {
21306 case PT_Sint8:
21307 return emitFlipSint64Sint8(I);
21308 case PT_Uint8:
21309 return emitFlipSint64Uint8(I);
21310 case PT_Sint16:
21311 return emitFlipSint64Sint16(I);
21312 case PT_Uint16:
21313 return emitFlipSint64Uint16(I);
21314 case PT_Sint32:
21315 return emitFlipSint64Sint32(I);
21316 case PT_Uint32:
21317 return emitFlipSint64Uint32(I);
21318 case PT_Sint64:
21319 return emitFlipSint64Sint64(I);
21320 case PT_Uint64:
21321 return emitFlipSint64Uint64(I);
21322 case PT_IntAP:
21323 return emitFlipSint64IntAP(I);
21324 case PT_IntAPS:
21325 return emitFlipSint64IntAPS(I);
21326 case PT_Bool:
21327 return emitFlipSint64Bool(I);
21328 case PT_FixedPoint:
21329 return emitFlipSint64FixedPoint(I);
21330 case PT_Ptr:
21331 return emitFlipSint64Ptr(I);
21332 case PT_MemberPtr:
21333 return emitFlipSint64MemberPtr(I);
21334 case PT_Float:
21335 return emitFlipSint64Float(I);
21336 }
21337 llvm_unreachable("invalid enum value");
21338 case PT_Uint64:
21339 switch (T1) {
21340 case PT_Sint8:
21341 return emitFlipUint64Sint8(I);
21342 case PT_Uint8:
21343 return emitFlipUint64Uint8(I);
21344 case PT_Sint16:
21345 return emitFlipUint64Sint16(I);
21346 case PT_Uint16:
21347 return emitFlipUint64Uint16(I);
21348 case PT_Sint32:
21349 return emitFlipUint64Sint32(I);
21350 case PT_Uint32:
21351 return emitFlipUint64Uint32(I);
21352 case PT_Sint64:
21353 return emitFlipUint64Sint64(I);
21354 case PT_Uint64:
21355 return emitFlipUint64Uint64(I);
21356 case PT_IntAP:
21357 return emitFlipUint64IntAP(I);
21358 case PT_IntAPS:
21359 return emitFlipUint64IntAPS(I);
21360 case PT_Bool:
21361 return emitFlipUint64Bool(I);
21362 case PT_FixedPoint:
21363 return emitFlipUint64FixedPoint(I);
21364 case PT_Ptr:
21365 return emitFlipUint64Ptr(I);
21366 case PT_MemberPtr:
21367 return emitFlipUint64MemberPtr(I);
21368 case PT_Float:
21369 return emitFlipUint64Float(I);
21370 }
21371 llvm_unreachable("invalid enum value");
21372 case PT_IntAP:
21373 switch (T1) {
21374 case PT_Sint8:
21375 return emitFlipIntAPSint8(I);
21376 case PT_Uint8:
21377 return emitFlipIntAPUint8(I);
21378 case PT_Sint16:
21379 return emitFlipIntAPSint16(I);
21380 case PT_Uint16:
21381 return emitFlipIntAPUint16(I);
21382 case PT_Sint32:
21383 return emitFlipIntAPSint32(I);
21384 case PT_Uint32:
21385 return emitFlipIntAPUint32(I);
21386 case PT_Sint64:
21387 return emitFlipIntAPSint64(I);
21388 case PT_Uint64:
21389 return emitFlipIntAPUint64(I);
21390 case PT_IntAP:
21391 return emitFlipIntAPIntAP(I);
21392 case PT_IntAPS:
21393 return emitFlipIntAPIntAPS(I);
21394 case PT_Bool:
21395 return emitFlipIntAPBool(I);
21396 case PT_FixedPoint:
21397 return emitFlipIntAPFixedPoint(I);
21398 case PT_Ptr:
21399 return emitFlipIntAPPtr(I);
21400 case PT_MemberPtr:
21401 return emitFlipIntAPMemberPtr(I);
21402 case PT_Float:
21403 return emitFlipIntAPFloat(I);
21404 }
21405 llvm_unreachable("invalid enum value");
21406 case PT_IntAPS:
21407 switch (T1) {
21408 case PT_Sint8:
21409 return emitFlipIntAPSSint8(I);
21410 case PT_Uint8:
21411 return emitFlipIntAPSUint8(I);
21412 case PT_Sint16:
21413 return emitFlipIntAPSSint16(I);
21414 case PT_Uint16:
21415 return emitFlipIntAPSUint16(I);
21416 case PT_Sint32:
21417 return emitFlipIntAPSSint32(I);
21418 case PT_Uint32:
21419 return emitFlipIntAPSUint32(I);
21420 case PT_Sint64:
21421 return emitFlipIntAPSSint64(I);
21422 case PT_Uint64:
21423 return emitFlipIntAPSUint64(I);
21424 case PT_IntAP:
21425 return emitFlipIntAPSIntAP(I);
21426 case PT_IntAPS:
21427 return emitFlipIntAPSIntAPS(I);
21428 case PT_Bool:
21429 return emitFlipIntAPSBool(I);
21430 case PT_FixedPoint:
21431 return emitFlipIntAPSFixedPoint(I);
21432 case PT_Ptr:
21433 return emitFlipIntAPSPtr(I);
21434 case PT_MemberPtr:
21435 return emitFlipIntAPSMemberPtr(I);
21436 case PT_Float:
21437 return emitFlipIntAPSFloat(I);
21438 }
21439 llvm_unreachable("invalid enum value");
21440 case PT_Bool:
21441 switch (T1) {
21442 case PT_Sint8:
21443 return emitFlipBoolSint8(I);
21444 case PT_Uint8:
21445 return emitFlipBoolUint8(I);
21446 case PT_Sint16:
21447 return emitFlipBoolSint16(I);
21448 case PT_Uint16:
21449 return emitFlipBoolUint16(I);
21450 case PT_Sint32:
21451 return emitFlipBoolSint32(I);
21452 case PT_Uint32:
21453 return emitFlipBoolUint32(I);
21454 case PT_Sint64:
21455 return emitFlipBoolSint64(I);
21456 case PT_Uint64:
21457 return emitFlipBoolUint64(I);
21458 case PT_IntAP:
21459 return emitFlipBoolIntAP(I);
21460 case PT_IntAPS:
21461 return emitFlipBoolIntAPS(I);
21462 case PT_Bool:
21463 return emitFlipBoolBool(I);
21464 case PT_FixedPoint:
21465 return emitFlipBoolFixedPoint(I);
21466 case PT_Ptr:
21467 return emitFlipBoolPtr(I);
21468 case PT_MemberPtr:
21469 return emitFlipBoolMemberPtr(I);
21470 case PT_Float:
21471 return emitFlipBoolFloat(I);
21472 }
21473 llvm_unreachable("invalid enum value");
21474 case PT_FixedPoint:
21475 switch (T1) {
21476 case PT_Sint8:
21477 return emitFlipFixedPointSint8(I);
21478 case PT_Uint8:
21479 return emitFlipFixedPointUint8(I);
21480 case PT_Sint16:
21481 return emitFlipFixedPointSint16(I);
21482 case PT_Uint16:
21483 return emitFlipFixedPointUint16(I);
21484 case PT_Sint32:
21485 return emitFlipFixedPointSint32(I);
21486 case PT_Uint32:
21487 return emitFlipFixedPointUint32(I);
21488 case PT_Sint64:
21489 return emitFlipFixedPointSint64(I);
21490 case PT_Uint64:
21491 return emitFlipFixedPointUint64(I);
21492 case PT_IntAP:
21493 return emitFlipFixedPointIntAP(I);
21494 case PT_IntAPS:
21495 return emitFlipFixedPointIntAPS(I);
21496 case PT_Bool:
21497 return emitFlipFixedPointBool(I);
21498 case PT_FixedPoint:
21499 return emitFlipFixedPointFixedPoint(I);
21500 case PT_Ptr:
21501 return emitFlipFixedPointPtr(I);
21502 case PT_MemberPtr:
21503 return emitFlipFixedPointMemberPtr(I);
21504 case PT_Float:
21505 return emitFlipFixedPointFloat(I);
21506 }
21507 llvm_unreachable("invalid enum value");
21508 case PT_Ptr:
21509 switch (T1) {
21510 case PT_Sint8:
21511 return emitFlipPtrSint8(I);
21512 case PT_Uint8:
21513 return emitFlipPtrUint8(I);
21514 case PT_Sint16:
21515 return emitFlipPtrSint16(I);
21516 case PT_Uint16:
21517 return emitFlipPtrUint16(I);
21518 case PT_Sint32:
21519 return emitFlipPtrSint32(I);
21520 case PT_Uint32:
21521 return emitFlipPtrUint32(I);
21522 case PT_Sint64:
21523 return emitFlipPtrSint64(I);
21524 case PT_Uint64:
21525 return emitFlipPtrUint64(I);
21526 case PT_IntAP:
21527 return emitFlipPtrIntAP(I);
21528 case PT_IntAPS:
21529 return emitFlipPtrIntAPS(I);
21530 case PT_Bool:
21531 return emitFlipPtrBool(I);
21532 case PT_FixedPoint:
21533 return emitFlipPtrFixedPoint(I);
21534 case PT_Ptr:
21535 return emitFlipPtrPtr(I);
21536 case PT_MemberPtr:
21537 return emitFlipPtrMemberPtr(I);
21538 case PT_Float:
21539 return emitFlipPtrFloat(I);
21540 }
21541 llvm_unreachable("invalid enum value");
21542 case PT_MemberPtr:
21543 switch (T1) {
21544 case PT_Sint8:
21545 return emitFlipMemberPtrSint8(I);
21546 case PT_Uint8:
21547 return emitFlipMemberPtrUint8(I);
21548 case PT_Sint16:
21549 return emitFlipMemberPtrSint16(I);
21550 case PT_Uint16:
21551 return emitFlipMemberPtrUint16(I);
21552 case PT_Sint32:
21553 return emitFlipMemberPtrSint32(I);
21554 case PT_Uint32:
21555 return emitFlipMemberPtrUint32(I);
21556 case PT_Sint64:
21557 return emitFlipMemberPtrSint64(I);
21558 case PT_Uint64:
21559 return emitFlipMemberPtrUint64(I);
21560 case PT_IntAP:
21561 return emitFlipMemberPtrIntAP(I);
21562 case PT_IntAPS:
21563 return emitFlipMemberPtrIntAPS(I);
21564 case PT_Bool:
21565 return emitFlipMemberPtrBool(I);
21566 case PT_FixedPoint:
21567 return emitFlipMemberPtrFixedPoint(I);
21568 case PT_Ptr:
21569 return emitFlipMemberPtrPtr(I);
21570 case PT_MemberPtr:
21571 return emitFlipMemberPtrMemberPtr(I);
21572 case PT_Float:
21573 return emitFlipMemberPtrFloat(I);
21574 }
21575 llvm_unreachable("invalid enum value");
21576 case PT_Float:
21577 switch (T1) {
21578 case PT_Sint8:
21579 return emitFlipFloatSint8(I);
21580 case PT_Uint8:
21581 return emitFlipFloatUint8(I);
21582 case PT_Sint16:
21583 return emitFlipFloatSint16(I);
21584 case PT_Uint16:
21585 return emitFlipFloatUint16(I);
21586 case PT_Sint32:
21587 return emitFlipFloatSint32(I);
21588 case PT_Uint32:
21589 return emitFlipFloatUint32(I);
21590 case PT_Sint64:
21591 return emitFlipFloatSint64(I);
21592 case PT_Uint64:
21593 return emitFlipFloatUint64(I);
21594 case PT_IntAP:
21595 return emitFlipFloatIntAP(I);
21596 case PT_IntAPS:
21597 return emitFlipFloatIntAPS(I);
21598 case PT_Bool:
21599 return emitFlipFloatBool(I);
21600 case PT_FixedPoint:
21601 return emitFlipFloatFixedPoint(I);
21602 case PT_Ptr:
21603 return emitFlipFloatPtr(I);
21604 case PT_MemberPtr:
21605 return emitFlipFloatMemberPtr(I);
21606 case PT_Float:
21607 return emitFlipFloatFloat(I);
21608 }
21609 llvm_unreachable("invalid enum value");
21610 }
21611 llvm_unreachable("invalid enum value");
21612}
21613#endif
21614#ifdef GET_LINK_IMPL
21615bool ByteCodeEmitter::emitFlipSint8Sint8(SourceInfo L) {
21616 return emitOp<>(OP_FlipSint8Sint8, L);
21617}
21618bool ByteCodeEmitter::emitFlipSint8Uint8(SourceInfo L) {
21619 return emitOp<>(OP_FlipSint8Uint8, L);
21620}
21621bool ByteCodeEmitter::emitFlipSint8Sint16(SourceInfo L) {
21622 return emitOp<>(OP_FlipSint8Sint16, L);
21623}
21624bool ByteCodeEmitter::emitFlipSint8Uint16(SourceInfo L) {
21625 return emitOp<>(OP_FlipSint8Uint16, L);
21626}
21627bool ByteCodeEmitter::emitFlipSint8Sint32(SourceInfo L) {
21628 return emitOp<>(OP_FlipSint8Sint32, L);
21629}
21630bool ByteCodeEmitter::emitFlipSint8Uint32(SourceInfo L) {
21631 return emitOp<>(OP_FlipSint8Uint32, L);
21632}
21633bool ByteCodeEmitter::emitFlipSint8Sint64(SourceInfo L) {
21634 return emitOp<>(OP_FlipSint8Sint64, L);
21635}
21636bool ByteCodeEmitter::emitFlipSint8Uint64(SourceInfo L) {
21637 return emitOp<>(OP_FlipSint8Uint64, L);
21638}
21639bool ByteCodeEmitter::emitFlipSint8IntAP(SourceInfo L) {
21640 return emitOp<>(OP_FlipSint8IntAP, L);
21641}
21642bool ByteCodeEmitter::emitFlipSint8IntAPS(SourceInfo L) {
21643 return emitOp<>(OP_FlipSint8IntAPS, L);
21644}
21645bool ByteCodeEmitter::emitFlipSint8Bool(SourceInfo L) {
21646 return emitOp<>(OP_FlipSint8Bool, L);
21647}
21648bool ByteCodeEmitter::emitFlipSint8FixedPoint(SourceInfo L) {
21649 return emitOp<>(OP_FlipSint8FixedPoint, L);
21650}
21651bool ByteCodeEmitter::emitFlipSint8Ptr(SourceInfo L) {
21652 return emitOp<>(OP_FlipSint8Ptr, L);
21653}
21654bool ByteCodeEmitter::emitFlipSint8MemberPtr(SourceInfo L) {
21655 return emitOp<>(OP_FlipSint8MemberPtr, L);
21656}
21657bool ByteCodeEmitter::emitFlipSint8Float(SourceInfo L) {
21658 return emitOp<>(OP_FlipSint8Float, L);
21659}
21660bool ByteCodeEmitter::emitFlipUint8Sint8(SourceInfo L) {
21661 return emitOp<>(OP_FlipUint8Sint8, L);
21662}
21663bool ByteCodeEmitter::emitFlipUint8Uint8(SourceInfo L) {
21664 return emitOp<>(OP_FlipUint8Uint8, L);
21665}
21666bool ByteCodeEmitter::emitFlipUint8Sint16(SourceInfo L) {
21667 return emitOp<>(OP_FlipUint8Sint16, L);
21668}
21669bool ByteCodeEmitter::emitFlipUint8Uint16(SourceInfo L) {
21670 return emitOp<>(OP_FlipUint8Uint16, L);
21671}
21672bool ByteCodeEmitter::emitFlipUint8Sint32(SourceInfo L) {
21673 return emitOp<>(OP_FlipUint8Sint32, L);
21674}
21675bool ByteCodeEmitter::emitFlipUint8Uint32(SourceInfo L) {
21676 return emitOp<>(OP_FlipUint8Uint32, L);
21677}
21678bool ByteCodeEmitter::emitFlipUint8Sint64(SourceInfo L) {
21679 return emitOp<>(OP_FlipUint8Sint64, L);
21680}
21681bool ByteCodeEmitter::emitFlipUint8Uint64(SourceInfo L) {
21682 return emitOp<>(OP_FlipUint8Uint64, L);
21683}
21684bool ByteCodeEmitter::emitFlipUint8IntAP(SourceInfo L) {
21685 return emitOp<>(OP_FlipUint8IntAP, L);
21686}
21687bool ByteCodeEmitter::emitFlipUint8IntAPS(SourceInfo L) {
21688 return emitOp<>(OP_FlipUint8IntAPS, L);
21689}
21690bool ByteCodeEmitter::emitFlipUint8Bool(SourceInfo L) {
21691 return emitOp<>(OP_FlipUint8Bool, L);
21692}
21693bool ByteCodeEmitter::emitFlipUint8FixedPoint(SourceInfo L) {
21694 return emitOp<>(OP_FlipUint8FixedPoint, L);
21695}
21696bool ByteCodeEmitter::emitFlipUint8Ptr(SourceInfo L) {
21697 return emitOp<>(OP_FlipUint8Ptr, L);
21698}
21699bool ByteCodeEmitter::emitFlipUint8MemberPtr(SourceInfo L) {
21700 return emitOp<>(OP_FlipUint8MemberPtr, L);
21701}
21702bool ByteCodeEmitter::emitFlipUint8Float(SourceInfo L) {
21703 return emitOp<>(OP_FlipUint8Float, L);
21704}
21705bool ByteCodeEmitter::emitFlipSint16Sint8(SourceInfo L) {
21706 return emitOp<>(OP_FlipSint16Sint8, L);
21707}
21708bool ByteCodeEmitter::emitFlipSint16Uint8(SourceInfo L) {
21709 return emitOp<>(OP_FlipSint16Uint8, L);
21710}
21711bool ByteCodeEmitter::emitFlipSint16Sint16(SourceInfo L) {
21712 return emitOp<>(OP_FlipSint16Sint16, L);
21713}
21714bool ByteCodeEmitter::emitFlipSint16Uint16(SourceInfo L) {
21715 return emitOp<>(OP_FlipSint16Uint16, L);
21716}
21717bool ByteCodeEmitter::emitFlipSint16Sint32(SourceInfo L) {
21718 return emitOp<>(OP_FlipSint16Sint32, L);
21719}
21720bool ByteCodeEmitter::emitFlipSint16Uint32(SourceInfo L) {
21721 return emitOp<>(OP_FlipSint16Uint32, L);
21722}
21723bool ByteCodeEmitter::emitFlipSint16Sint64(SourceInfo L) {
21724 return emitOp<>(OP_FlipSint16Sint64, L);
21725}
21726bool ByteCodeEmitter::emitFlipSint16Uint64(SourceInfo L) {
21727 return emitOp<>(OP_FlipSint16Uint64, L);
21728}
21729bool ByteCodeEmitter::emitFlipSint16IntAP(SourceInfo L) {
21730 return emitOp<>(OP_FlipSint16IntAP, L);
21731}
21732bool ByteCodeEmitter::emitFlipSint16IntAPS(SourceInfo L) {
21733 return emitOp<>(OP_FlipSint16IntAPS, L);
21734}
21735bool ByteCodeEmitter::emitFlipSint16Bool(SourceInfo L) {
21736 return emitOp<>(OP_FlipSint16Bool, L);
21737}
21738bool ByteCodeEmitter::emitFlipSint16FixedPoint(SourceInfo L) {
21739 return emitOp<>(OP_FlipSint16FixedPoint, L);
21740}
21741bool ByteCodeEmitter::emitFlipSint16Ptr(SourceInfo L) {
21742 return emitOp<>(OP_FlipSint16Ptr, L);
21743}
21744bool ByteCodeEmitter::emitFlipSint16MemberPtr(SourceInfo L) {
21745 return emitOp<>(OP_FlipSint16MemberPtr, L);
21746}
21747bool ByteCodeEmitter::emitFlipSint16Float(SourceInfo L) {
21748 return emitOp<>(OP_FlipSint16Float, L);
21749}
21750bool ByteCodeEmitter::emitFlipUint16Sint8(SourceInfo L) {
21751 return emitOp<>(OP_FlipUint16Sint8, L);
21752}
21753bool ByteCodeEmitter::emitFlipUint16Uint8(SourceInfo L) {
21754 return emitOp<>(OP_FlipUint16Uint8, L);
21755}
21756bool ByteCodeEmitter::emitFlipUint16Sint16(SourceInfo L) {
21757 return emitOp<>(OP_FlipUint16Sint16, L);
21758}
21759bool ByteCodeEmitter::emitFlipUint16Uint16(SourceInfo L) {
21760 return emitOp<>(OP_FlipUint16Uint16, L);
21761}
21762bool ByteCodeEmitter::emitFlipUint16Sint32(SourceInfo L) {
21763 return emitOp<>(OP_FlipUint16Sint32, L);
21764}
21765bool ByteCodeEmitter::emitFlipUint16Uint32(SourceInfo L) {
21766 return emitOp<>(OP_FlipUint16Uint32, L);
21767}
21768bool ByteCodeEmitter::emitFlipUint16Sint64(SourceInfo L) {
21769 return emitOp<>(OP_FlipUint16Sint64, L);
21770}
21771bool ByteCodeEmitter::emitFlipUint16Uint64(SourceInfo L) {
21772 return emitOp<>(OP_FlipUint16Uint64, L);
21773}
21774bool ByteCodeEmitter::emitFlipUint16IntAP(SourceInfo L) {
21775 return emitOp<>(OP_FlipUint16IntAP, L);
21776}
21777bool ByteCodeEmitter::emitFlipUint16IntAPS(SourceInfo L) {
21778 return emitOp<>(OP_FlipUint16IntAPS, L);
21779}
21780bool ByteCodeEmitter::emitFlipUint16Bool(SourceInfo L) {
21781 return emitOp<>(OP_FlipUint16Bool, L);
21782}
21783bool ByteCodeEmitter::emitFlipUint16FixedPoint(SourceInfo L) {
21784 return emitOp<>(OP_FlipUint16FixedPoint, L);
21785}
21786bool ByteCodeEmitter::emitFlipUint16Ptr(SourceInfo L) {
21787 return emitOp<>(OP_FlipUint16Ptr, L);
21788}
21789bool ByteCodeEmitter::emitFlipUint16MemberPtr(SourceInfo L) {
21790 return emitOp<>(OP_FlipUint16MemberPtr, L);
21791}
21792bool ByteCodeEmitter::emitFlipUint16Float(SourceInfo L) {
21793 return emitOp<>(OP_FlipUint16Float, L);
21794}
21795bool ByteCodeEmitter::emitFlipSint32Sint8(SourceInfo L) {
21796 return emitOp<>(OP_FlipSint32Sint8, L);
21797}
21798bool ByteCodeEmitter::emitFlipSint32Uint8(SourceInfo L) {
21799 return emitOp<>(OP_FlipSint32Uint8, L);
21800}
21801bool ByteCodeEmitter::emitFlipSint32Sint16(SourceInfo L) {
21802 return emitOp<>(OP_FlipSint32Sint16, L);
21803}
21804bool ByteCodeEmitter::emitFlipSint32Uint16(SourceInfo L) {
21805 return emitOp<>(OP_FlipSint32Uint16, L);
21806}
21807bool ByteCodeEmitter::emitFlipSint32Sint32(SourceInfo L) {
21808 return emitOp<>(OP_FlipSint32Sint32, L);
21809}
21810bool ByteCodeEmitter::emitFlipSint32Uint32(SourceInfo L) {
21811 return emitOp<>(OP_FlipSint32Uint32, L);
21812}
21813bool ByteCodeEmitter::emitFlipSint32Sint64(SourceInfo L) {
21814 return emitOp<>(OP_FlipSint32Sint64, L);
21815}
21816bool ByteCodeEmitter::emitFlipSint32Uint64(SourceInfo L) {
21817 return emitOp<>(OP_FlipSint32Uint64, L);
21818}
21819bool ByteCodeEmitter::emitFlipSint32IntAP(SourceInfo L) {
21820 return emitOp<>(OP_FlipSint32IntAP, L);
21821}
21822bool ByteCodeEmitter::emitFlipSint32IntAPS(SourceInfo L) {
21823 return emitOp<>(OP_FlipSint32IntAPS, L);
21824}
21825bool ByteCodeEmitter::emitFlipSint32Bool(SourceInfo L) {
21826 return emitOp<>(OP_FlipSint32Bool, L);
21827}
21828bool ByteCodeEmitter::emitFlipSint32FixedPoint(SourceInfo L) {
21829 return emitOp<>(OP_FlipSint32FixedPoint, L);
21830}
21831bool ByteCodeEmitter::emitFlipSint32Ptr(SourceInfo L) {
21832 return emitOp<>(OP_FlipSint32Ptr, L);
21833}
21834bool ByteCodeEmitter::emitFlipSint32MemberPtr(SourceInfo L) {
21835 return emitOp<>(OP_FlipSint32MemberPtr, L);
21836}
21837bool ByteCodeEmitter::emitFlipSint32Float(SourceInfo L) {
21838 return emitOp<>(OP_FlipSint32Float, L);
21839}
21840bool ByteCodeEmitter::emitFlipUint32Sint8(SourceInfo L) {
21841 return emitOp<>(OP_FlipUint32Sint8, L);
21842}
21843bool ByteCodeEmitter::emitFlipUint32Uint8(SourceInfo L) {
21844 return emitOp<>(OP_FlipUint32Uint8, L);
21845}
21846bool ByteCodeEmitter::emitFlipUint32Sint16(SourceInfo L) {
21847 return emitOp<>(OP_FlipUint32Sint16, L);
21848}
21849bool ByteCodeEmitter::emitFlipUint32Uint16(SourceInfo L) {
21850 return emitOp<>(OP_FlipUint32Uint16, L);
21851}
21852bool ByteCodeEmitter::emitFlipUint32Sint32(SourceInfo L) {
21853 return emitOp<>(OP_FlipUint32Sint32, L);
21854}
21855bool ByteCodeEmitter::emitFlipUint32Uint32(SourceInfo L) {
21856 return emitOp<>(OP_FlipUint32Uint32, L);
21857}
21858bool ByteCodeEmitter::emitFlipUint32Sint64(SourceInfo L) {
21859 return emitOp<>(OP_FlipUint32Sint64, L);
21860}
21861bool ByteCodeEmitter::emitFlipUint32Uint64(SourceInfo L) {
21862 return emitOp<>(OP_FlipUint32Uint64, L);
21863}
21864bool ByteCodeEmitter::emitFlipUint32IntAP(SourceInfo L) {
21865 return emitOp<>(OP_FlipUint32IntAP, L);
21866}
21867bool ByteCodeEmitter::emitFlipUint32IntAPS(SourceInfo L) {
21868 return emitOp<>(OP_FlipUint32IntAPS, L);
21869}
21870bool ByteCodeEmitter::emitFlipUint32Bool(SourceInfo L) {
21871 return emitOp<>(OP_FlipUint32Bool, L);
21872}
21873bool ByteCodeEmitter::emitFlipUint32FixedPoint(SourceInfo L) {
21874 return emitOp<>(OP_FlipUint32FixedPoint, L);
21875}
21876bool ByteCodeEmitter::emitFlipUint32Ptr(SourceInfo L) {
21877 return emitOp<>(OP_FlipUint32Ptr, L);
21878}
21879bool ByteCodeEmitter::emitFlipUint32MemberPtr(SourceInfo L) {
21880 return emitOp<>(OP_FlipUint32MemberPtr, L);
21881}
21882bool ByteCodeEmitter::emitFlipUint32Float(SourceInfo L) {
21883 return emitOp<>(OP_FlipUint32Float, L);
21884}
21885bool ByteCodeEmitter::emitFlipSint64Sint8(SourceInfo L) {
21886 return emitOp<>(OP_FlipSint64Sint8, L);
21887}
21888bool ByteCodeEmitter::emitFlipSint64Uint8(SourceInfo L) {
21889 return emitOp<>(OP_FlipSint64Uint8, L);
21890}
21891bool ByteCodeEmitter::emitFlipSint64Sint16(SourceInfo L) {
21892 return emitOp<>(OP_FlipSint64Sint16, L);
21893}
21894bool ByteCodeEmitter::emitFlipSint64Uint16(SourceInfo L) {
21895 return emitOp<>(OP_FlipSint64Uint16, L);
21896}
21897bool ByteCodeEmitter::emitFlipSint64Sint32(SourceInfo L) {
21898 return emitOp<>(OP_FlipSint64Sint32, L);
21899}
21900bool ByteCodeEmitter::emitFlipSint64Uint32(SourceInfo L) {
21901 return emitOp<>(OP_FlipSint64Uint32, L);
21902}
21903bool ByteCodeEmitter::emitFlipSint64Sint64(SourceInfo L) {
21904 return emitOp<>(OP_FlipSint64Sint64, L);
21905}
21906bool ByteCodeEmitter::emitFlipSint64Uint64(SourceInfo L) {
21907 return emitOp<>(OP_FlipSint64Uint64, L);
21908}
21909bool ByteCodeEmitter::emitFlipSint64IntAP(SourceInfo L) {
21910 return emitOp<>(OP_FlipSint64IntAP, L);
21911}
21912bool ByteCodeEmitter::emitFlipSint64IntAPS(SourceInfo L) {
21913 return emitOp<>(OP_FlipSint64IntAPS, L);
21914}
21915bool ByteCodeEmitter::emitFlipSint64Bool(SourceInfo L) {
21916 return emitOp<>(OP_FlipSint64Bool, L);
21917}
21918bool ByteCodeEmitter::emitFlipSint64FixedPoint(SourceInfo L) {
21919 return emitOp<>(OP_FlipSint64FixedPoint, L);
21920}
21921bool ByteCodeEmitter::emitFlipSint64Ptr(SourceInfo L) {
21922 return emitOp<>(OP_FlipSint64Ptr, L);
21923}
21924bool ByteCodeEmitter::emitFlipSint64MemberPtr(SourceInfo L) {
21925 return emitOp<>(OP_FlipSint64MemberPtr, L);
21926}
21927bool ByteCodeEmitter::emitFlipSint64Float(SourceInfo L) {
21928 return emitOp<>(OP_FlipSint64Float, L);
21929}
21930bool ByteCodeEmitter::emitFlipUint64Sint8(SourceInfo L) {
21931 return emitOp<>(OP_FlipUint64Sint8, L);
21932}
21933bool ByteCodeEmitter::emitFlipUint64Uint8(SourceInfo L) {
21934 return emitOp<>(OP_FlipUint64Uint8, L);
21935}
21936bool ByteCodeEmitter::emitFlipUint64Sint16(SourceInfo L) {
21937 return emitOp<>(OP_FlipUint64Sint16, L);
21938}
21939bool ByteCodeEmitter::emitFlipUint64Uint16(SourceInfo L) {
21940 return emitOp<>(OP_FlipUint64Uint16, L);
21941}
21942bool ByteCodeEmitter::emitFlipUint64Sint32(SourceInfo L) {
21943 return emitOp<>(OP_FlipUint64Sint32, L);
21944}
21945bool ByteCodeEmitter::emitFlipUint64Uint32(SourceInfo L) {
21946 return emitOp<>(OP_FlipUint64Uint32, L);
21947}
21948bool ByteCodeEmitter::emitFlipUint64Sint64(SourceInfo L) {
21949 return emitOp<>(OP_FlipUint64Sint64, L);
21950}
21951bool ByteCodeEmitter::emitFlipUint64Uint64(SourceInfo L) {
21952 return emitOp<>(OP_FlipUint64Uint64, L);
21953}
21954bool ByteCodeEmitter::emitFlipUint64IntAP(SourceInfo L) {
21955 return emitOp<>(OP_FlipUint64IntAP, L);
21956}
21957bool ByteCodeEmitter::emitFlipUint64IntAPS(SourceInfo L) {
21958 return emitOp<>(OP_FlipUint64IntAPS, L);
21959}
21960bool ByteCodeEmitter::emitFlipUint64Bool(SourceInfo L) {
21961 return emitOp<>(OP_FlipUint64Bool, L);
21962}
21963bool ByteCodeEmitter::emitFlipUint64FixedPoint(SourceInfo L) {
21964 return emitOp<>(OP_FlipUint64FixedPoint, L);
21965}
21966bool ByteCodeEmitter::emitFlipUint64Ptr(SourceInfo L) {
21967 return emitOp<>(OP_FlipUint64Ptr, L);
21968}
21969bool ByteCodeEmitter::emitFlipUint64MemberPtr(SourceInfo L) {
21970 return emitOp<>(OP_FlipUint64MemberPtr, L);
21971}
21972bool ByteCodeEmitter::emitFlipUint64Float(SourceInfo L) {
21973 return emitOp<>(OP_FlipUint64Float, L);
21974}
21975bool ByteCodeEmitter::emitFlipIntAPSint8(SourceInfo L) {
21976 return emitOp<>(OP_FlipIntAPSint8, L);
21977}
21978bool ByteCodeEmitter::emitFlipIntAPUint8(SourceInfo L) {
21979 return emitOp<>(OP_FlipIntAPUint8, L);
21980}
21981bool ByteCodeEmitter::emitFlipIntAPSint16(SourceInfo L) {
21982 return emitOp<>(OP_FlipIntAPSint16, L);
21983}
21984bool ByteCodeEmitter::emitFlipIntAPUint16(SourceInfo L) {
21985 return emitOp<>(OP_FlipIntAPUint16, L);
21986}
21987bool ByteCodeEmitter::emitFlipIntAPSint32(SourceInfo L) {
21988 return emitOp<>(OP_FlipIntAPSint32, L);
21989}
21990bool ByteCodeEmitter::emitFlipIntAPUint32(SourceInfo L) {
21991 return emitOp<>(OP_FlipIntAPUint32, L);
21992}
21993bool ByteCodeEmitter::emitFlipIntAPSint64(SourceInfo L) {
21994 return emitOp<>(OP_FlipIntAPSint64, L);
21995}
21996bool ByteCodeEmitter::emitFlipIntAPUint64(SourceInfo L) {
21997 return emitOp<>(OP_FlipIntAPUint64, L);
21998}
21999bool ByteCodeEmitter::emitFlipIntAPIntAP(SourceInfo L) {
22000 return emitOp<>(OP_FlipIntAPIntAP, L);
22001}
22002bool ByteCodeEmitter::emitFlipIntAPIntAPS(SourceInfo L) {
22003 return emitOp<>(OP_FlipIntAPIntAPS, L);
22004}
22005bool ByteCodeEmitter::emitFlipIntAPBool(SourceInfo L) {
22006 return emitOp<>(OP_FlipIntAPBool, L);
22007}
22008bool ByteCodeEmitter::emitFlipIntAPFixedPoint(SourceInfo L) {
22009 return emitOp<>(OP_FlipIntAPFixedPoint, L);
22010}
22011bool ByteCodeEmitter::emitFlipIntAPPtr(SourceInfo L) {
22012 return emitOp<>(OP_FlipIntAPPtr, L);
22013}
22014bool ByteCodeEmitter::emitFlipIntAPMemberPtr(SourceInfo L) {
22015 return emitOp<>(OP_FlipIntAPMemberPtr, L);
22016}
22017bool ByteCodeEmitter::emitFlipIntAPFloat(SourceInfo L) {
22018 return emitOp<>(OP_FlipIntAPFloat, L);
22019}
22020bool ByteCodeEmitter::emitFlipIntAPSSint8(SourceInfo L) {
22021 return emitOp<>(OP_FlipIntAPSSint8, L);
22022}
22023bool ByteCodeEmitter::emitFlipIntAPSUint8(SourceInfo L) {
22024 return emitOp<>(OP_FlipIntAPSUint8, L);
22025}
22026bool ByteCodeEmitter::emitFlipIntAPSSint16(SourceInfo L) {
22027 return emitOp<>(OP_FlipIntAPSSint16, L);
22028}
22029bool ByteCodeEmitter::emitFlipIntAPSUint16(SourceInfo L) {
22030 return emitOp<>(OP_FlipIntAPSUint16, L);
22031}
22032bool ByteCodeEmitter::emitFlipIntAPSSint32(SourceInfo L) {
22033 return emitOp<>(OP_FlipIntAPSSint32, L);
22034}
22035bool ByteCodeEmitter::emitFlipIntAPSUint32(SourceInfo L) {
22036 return emitOp<>(OP_FlipIntAPSUint32, L);
22037}
22038bool ByteCodeEmitter::emitFlipIntAPSSint64(SourceInfo L) {
22039 return emitOp<>(OP_FlipIntAPSSint64, L);
22040}
22041bool ByteCodeEmitter::emitFlipIntAPSUint64(SourceInfo L) {
22042 return emitOp<>(OP_FlipIntAPSUint64, L);
22043}
22044bool ByteCodeEmitter::emitFlipIntAPSIntAP(SourceInfo L) {
22045 return emitOp<>(OP_FlipIntAPSIntAP, L);
22046}
22047bool ByteCodeEmitter::emitFlipIntAPSIntAPS(SourceInfo L) {
22048 return emitOp<>(OP_FlipIntAPSIntAPS, L);
22049}
22050bool ByteCodeEmitter::emitFlipIntAPSBool(SourceInfo L) {
22051 return emitOp<>(OP_FlipIntAPSBool, L);
22052}
22053bool ByteCodeEmitter::emitFlipIntAPSFixedPoint(SourceInfo L) {
22054 return emitOp<>(OP_FlipIntAPSFixedPoint, L);
22055}
22056bool ByteCodeEmitter::emitFlipIntAPSPtr(SourceInfo L) {
22057 return emitOp<>(OP_FlipIntAPSPtr, L);
22058}
22059bool ByteCodeEmitter::emitFlipIntAPSMemberPtr(SourceInfo L) {
22060 return emitOp<>(OP_FlipIntAPSMemberPtr, L);
22061}
22062bool ByteCodeEmitter::emitFlipIntAPSFloat(SourceInfo L) {
22063 return emitOp<>(OP_FlipIntAPSFloat, L);
22064}
22065bool ByteCodeEmitter::emitFlipBoolSint8(SourceInfo L) {
22066 return emitOp<>(OP_FlipBoolSint8, L);
22067}
22068bool ByteCodeEmitter::emitFlipBoolUint8(SourceInfo L) {
22069 return emitOp<>(OP_FlipBoolUint8, L);
22070}
22071bool ByteCodeEmitter::emitFlipBoolSint16(SourceInfo L) {
22072 return emitOp<>(OP_FlipBoolSint16, L);
22073}
22074bool ByteCodeEmitter::emitFlipBoolUint16(SourceInfo L) {
22075 return emitOp<>(OP_FlipBoolUint16, L);
22076}
22077bool ByteCodeEmitter::emitFlipBoolSint32(SourceInfo L) {
22078 return emitOp<>(OP_FlipBoolSint32, L);
22079}
22080bool ByteCodeEmitter::emitFlipBoolUint32(SourceInfo L) {
22081 return emitOp<>(OP_FlipBoolUint32, L);
22082}
22083bool ByteCodeEmitter::emitFlipBoolSint64(SourceInfo L) {
22084 return emitOp<>(OP_FlipBoolSint64, L);
22085}
22086bool ByteCodeEmitter::emitFlipBoolUint64(SourceInfo L) {
22087 return emitOp<>(OP_FlipBoolUint64, L);
22088}
22089bool ByteCodeEmitter::emitFlipBoolIntAP(SourceInfo L) {
22090 return emitOp<>(OP_FlipBoolIntAP, L);
22091}
22092bool ByteCodeEmitter::emitFlipBoolIntAPS(SourceInfo L) {
22093 return emitOp<>(OP_FlipBoolIntAPS, L);
22094}
22095bool ByteCodeEmitter::emitFlipBoolBool(SourceInfo L) {
22096 return emitOp<>(OP_FlipBoolBool, L);
22097}
22098bool ByteCodeEmitter::emitFlipBoolFixedPoint(SourceInfo L) {
22099 return emitOp<>(OP_FlipBoolFixedPoint, L);
22100}
22101bool ByteCodeEmitter::emitFlipBoolPtr(SourceInfo L) {
22102 return emitOp<>(OP_FlipBoolPtr, L);
22103}
22104bool ByteCodeEmitter::emitFlipBoolMemberPtr(SourceInfo L) {
22105 return emitOp<>(OP_FlipBoolMemberPtr, L);
22106}
22107bool ByteCodeEmitter::emitFlipBoolFloat(SourceInfo L) {
22108 return emitOp<>(OP_FlipBoolFloat, L);
22109}
22110bool ByteCodeEmitter::emitFlipFixedPointSint8(SourceInfo L) {
22111 return emitOp<>(OP_FlipFixedPointSint8, L);
22112}
22113bool ByteCodeEmitter::emitFlipFixedPointUint8(SourceInfo L) {
22114 return emitOp<>(OP_FlipFixedPointUint8, L);
22115}
22116bool ByteCodeEmitter::emitFlipFixedPointSint16(SourceInfo L) {
22117 return emitOp<>(OP_FlipFixedPointSint16, L);
22118}
22119bool ByteCodeEmitter::emitFlipFixedPointUint16(SourceInfo L) {
22120 return emitOp<>(OP_FlipFixedPointUint16, L);
22121}
22122bool ByteCodeEmitter::emitFlipFixedPointSint32(SourceInfo L) {
22123 return emitOp<>(OP_FlipFixedPointSint32, L);
22124}
22125bool ByteCodeEmitter::emitFlipFixedPointUint32(SourceInfo L) {
22126 return emitOp<>(OP_FlipFixedPointUint32, L);
22127}
22128bool ByteCodeEmitter::emitFlipFixedPointSint64(SourceInfo L) {
22129 return emitOp<>(OP_FlipFixedPointSint64, L);
22130}
22131bool ByteCodeEmitter::emitFlipFixedPointUint64(SourceInfo L) {
22132 return emitOp<>(OP_FlipFixedPointUint64, L);
22133}
22134bool ByteCodeEmitter::emitFlipFixedPointIntAP(SourceInfo L) {
22135 return emitOp<>(OP_FlipFixedPointIntAP, L);
22136}
22137bool ByteCodeEmitter::emitFlipFixedPointIntAPS(SourceInfo L) {
22138 return emitOp<>(OP_FlipFixedPointIntAPS, L);
22139}
22140bool ByteCodeEmitter::emitFlipFixedPointBool(SourceInfo L) {
22141 return emitOp<>(OP_FlipFixedPointBool, L);
22142}
22143bool ByteCodeEmitter::emitFlipFixedPointFixedPoint(SourceInfo L) {
22144 return emitOp<>(OP_FlipFixedPointFixedPoint, L);
22145}
22146bool ByteCodeEmitter::emitFlipFixedPointPtr(SourceInfo L) {
22147 return emitOp<>(OP_FlipFixedPointPtr, L);
22148}
22149bool ByteCodeEmitter::emitFlipFixedPointMemberPtr(SourceInfo L) {
22150 return emitOp<>(OP_FlipFixedPointMemberPtr, L);
22151}
22152bool ByteCodeEmitter::emitFlipFixedPointFloat(SourceInfo L) {
22153 return emitOp<>(OP_FlipFixedPointFloat, L);
22154}
22155bool ByteCodeEmitter::emitFlipPtrSint8(SourceInfo L) {
22156 return emitOp<>(OP_FlipPtrSint8, L);
22157}
22158bool ByteCodeEmitter::emitFlipPtrUint8(SourceInfo L) {
22159 return emitOp<>(OP_FlipPtrUint8, L);
22160}
22161bool ByteCodeEmitter::emitFlipPtrSint16(SourceInfo L) {
22162 return emitOp<>(OP_FlipPtrSint16, L);
22163}
22164bool ByteCodeEmitter::emitFlipPtrUint16(SourceInfo L) {
22165 return emitOp<>(OP_FlipPtrUint16, L);
22166}
22167bool ByteCodeEmitter::emitFlipPtrSint32(SourceInfo L) {
22168 return emitOp<>(OP_FlipPtrSint32, L);
22169}
22170bool ByteCodeEmitter::emitFlipPtrUint32(SourceInfo L) {
22171 return emitOp<>(OP_FlipPtrUint32, L);
22172}
22173bool ByteCodeEmitter::emitFlipPtrSint64(SourceInfo L) {
22174 return emitOp<>(OP_FlipPtrSint64, L);
22175}
22176bool ByteCodeEmitter::emitFlipPtrUint64(SourceInfo L) {
22177 return emitOp<>(OP_FlipPtrUint64, L);
22178}
22179bool ByteCodeEmitter::emitFlipPtrIntAP(SourceInfo L) {
22180 return emitOp<>(OP_FlipPtrIntAP, L);
22181}
22182bool ByteCodeEmitter::emitFlipPtrIntAPS(SourceInfo L) {
22183 return emitOp<>(OP_FlipPtrIntAPS, L);
22184}
22185bool ByteCodeEmitter::emitFlipPtrBool(SourceInfo L) {
22186 return emitOp<>(OP_FlipPtrBool, L);
22187}
22188bool ByteCodeEmitter::emitFlipPtrFixedPoint(SourceInfo L) {
22189 return emitOp<>(OP_FlipPtrFixedPoint, L);
22190}
22191bool ByteCodeEmitter::emitFlipPtrPtr(SourceInfo L) {
22192 return emitOp<>(OP_FlipPtrPtr, L);
22193}
22194bool ByteCodeEmitter::emitFlipPtrMemberPtr(SourceInfo L) {
22195 return emitOp<>(OP_FlipPtrMemberPtr, L);
22196}
22197bool ByteCodeEmitter::emitFlipPtrFloat(SourceInfo L) {
22198 return emitOp<>(OP_FlipPtrFloat, L);
22199}
22200bool ByteCodeEmitter::emitFlipMemberPtrSint8(SourceInfo L) {
22201 return emitOp<>(OP_FlipMemberPtrSint8, L);
22202}
22203bool ByteCodeEmitter::emitFlipMemberPtrUint8(SourceInfo L) {
22204 return emitOp<>(OP_FlipMemberPtrUint8, L);
22205}
22206bool ByteCodeEmitter::emitFlipMemberPtrSint16(SourceInfo L) {
22207 return emitOp<>(OP_FlipMemberPtrSint16, L);
22208}
22209bool ByteCodeEmitter::emitFlipMemberPtrUint16(SourceInfo L) {
22210 return emitOp<>(OP_FlipMemberPtrUint16, L);
22211}
22212bool ByteCodeEmitter::emitFlipMemberPtrSint32(SourceInfo L) {
22213 return emitOp<>(OP_FlipMemberPtrSint32, L);
22214}
22215bool ByteCodeEmitter::emitFlipMemberPtrUint32(SourceInfo L) {
22216 return emitOp<>(OP_FlipMemberPtrUint32, L);
22217}
22218bool ByteCodeEmitter::emitFlipMemberPtrSint64(SourceInfo L) {
22219 return emitOp<>(OP_FlipMemberPtrSint64, L);
22220}
22221bool ByteCodeEmitter::emitFlipMemberPtrUint64(SourceInfo L) {
22222 return emitOp<>(OP_FlipMemberPtrUint64, L);
22223}
22224bool ByteCodeEmitter::emitFlipMemberPtrIntAP(SourceInfo L) {
22225 return emitOp<>(OP_FlipMemberPtrIntAP, L);
22226}
22227bool ByteCodeEmitter::emitFlipMemberPtrIntAPS(SourceInfo L) {
22228 return emitOp<>(OP_FlipMemberPtrIntAPS, L);
22229}
22230bool ByteCodeEmitter::emitFlipMemberPtrBool(SourceInfo L) {
22231 return emitOp<>(OP_FlipMemberPtrBool, L);
22232}
22233bool ByteCodeEmitter::emitFlipMemberPtrFixedPoint(SourceInfo L) {
22234 return emitOp<>(OP_FlipMemberPtrFixedPoint, L);
22235}
22236bool ByteCodeEmitter::emitFlipMemberPtrPtr(SourceInfo L) {
22237 return emitOp<>(OP_FlipMemberPtrPtr, L);
22238}
22239bool ByteCodeEmitter::emitFlipMemberPtrMemberPtr(SourceInfo L) {
22240 return emitOp<>(OP_FlipMemberPtrMemberPtr, L);
22241}
22242bool ByteCodeEmitter::emitFlipMemberPtrFloat(SourceInfo L) {
22243 return emitOp<>(OP_FlipMemberPtrFloat, L);
22244}
22245bool ByteCodeEmitter::emitFlipFloatSint8(SourceInfo L) {
22246 return emitOp<>(OP_FlipFloatSint8, L);
22247}
22248bool ByteCodeEmitter::emitFlipFloatUint8(SourceInfo L) {
22249 return emitOp<>(OP_FlipFloatUint8, L);
22250}
22251bool ByteCodeEmitter::emitFlipFloatSint16(SourceInfo L) {
22252 return emitOp<>(OP_FlipFloatSint16, L);
22253}
22254bool ByteCodeEmitter::emitFlipFloatUint16(SourceInfo L) {
22255 return emitOp<>(OP_FlipFloatUint16, L);
22256}
22257bool ByteCodeEmitter::emitFlipFloatSint32(SourceInfo L) {
22258 return emitOp<>(OP_FlipFloatSint32, L);
22259}
22260bool ByteCodeEmitter::emitFlipFloatUint32(SourceInfo L) {
22261 return emitOp<>(OP_FlipFloatUint32, L);
22262}
22263bool ByteCodeEmitter::emitFlipFloatSint64(SourceInfo L) {
22264 return emitOp<>(OP_FlipFloatSint64, L);
22265}
22266bool ByteCodeEmitter::emitFlipFloatUint64(SourceInfo L) {
22267 return emitOp<>(OP_FlipFloatUint64, L);
22268}
22269bool ByteCodeEmitter::emitFlipFloatIntAP(SourceInfo L) {
22270 return emitOp<>(OP_FlipFloatIntAP, L);
22271}
22272bool ByteCodeEmitter::emitFlipFloatIntAPS(SourceInfo L) {
22273 return emitOp<>(OP_FlipFloatIntAPS, L);
22274}
22275bool ByteCodeEmitter::emitFlipFloatBool(SourceInfo L) {
22276 return emitOp<>(OP_FlipFloatBool, L);
22277}
22278bool ByteCodeEmitter::emitFlipFloatFixedPoint(SourceInfo L) {
22279 return emitOp<>(OP_FlipFloatFixedPoint, L);
22280}
22281bool ByteCodeEmitter::emitFlipFloatPtr(SourceInfo L) {
22282 return emitOp<>(OP_FlipFloatPtr, L);
22283}
22284bool ByteCodeEmitter::emitFlipFloatMemberPtr(SourceInfo L) {
22285 return emitOp<>(OP_FlipFloatMemberPtr, L);
22286}
22287bool ByteCodeEmitter::emitFlipFloatFloat(SourceInfo L) {
22288 return emitOp<>(OP_FlipFloatFloat, L);
22289}
22290#endif
22291#ifdef GET_EVAL_IMPL
22292bool EvalEmitter::emitFlipSint8Sint8(SourceInfo L) {
22293 if (!isActive()) return true;
22294 CurrentSource = L;
22295 return Flip<PT_Sint8, PT_Sint8>(S);
22296}
22297bool EvalEmitter::emitFlipSint8Uint8(SourceInfo L) {
22298 if (!isActive()) return true;
22299 CurrentSource = L;
22300 return Flip<PT_Sint8, PT_Uint8>(S);
22301}
22302bool EvalEmitter::emitFlipSint8Sint16(SourceInfo L) {
22303 if (!isActive()) return true;
22304 CurrentSource = L;
22305 return Flip<PT_Sint8, PT_Sint16>(S);
22306}
22307bool EvalEmitter::emitFlipSint8Uint16(SourceInfo L) {
22308 if (!isActive()) return true;
22309 CurrentSource = L;
22310 return Flip<PT_Sint8, PT_Uint16>(S);
22311}
22312bool EvalEmitter::emitFlipSint8Sint32(SourceInfo L) {
22313 if (!isActive()) return true;
22314 CurrentSource = L;
22315 return Flip<PT_Sint8, PT_Sint32>(S);
22316}
22317bool EvalEmitter::emitFlipSint8Uint32(SourceInfo L) {
22318 if (!isActive()) return true;
22319 CurrentSource = L;
22320 return Flip<PT_Sint8, PT_Uint32>(S);
22321}
22322bool EvalEmitter::emitFlipSint8Sint64(SourceInfo L) {
22323 if (!isActive()) return true;
22324 CurrentSource = L;
22325 return Flip<PT_Sint8, PT_Sint64>(S);
22326}
22327bool EvalEmitter::emitFlipSint8Uint64(SourceInfo L) {
22328 if (!isActive()) return true;
22329 CurrentSource = L;
22330 return Flip<PT_Sint8, PT_Uint64>(S);
22331}
22332bool EvalEmitter::emitFlipSint8IntAP(SourceInfo L) {
22333 if (!isActive()) return true;
22334 CurrentSource = L;
22335 return Flip<PT_Sint8, PT_IntAP>(S);
22336}
22337bool EvalEmitter::emitFlipSint8IntAPS(SourceInfo L) {
22338 if (!isActive()) return true;
22339 CurrentSource = L;
22340 return Flip<PT_Sint8, PT_IntAPS>(S);
22341}
22342bool EvalEmitter::emitFlipSint8Bool(SourceInfo L) {
22343 if (!isActive()) return true;
22344 CurrentSource = L;
22345 return Flip<PT_Sint8, PT_Bool>(S);
22346}
22347bool EvalEmitter::emitFlipSint8FixedPoint(SourceInfo L) {
22348 if (!isActive()) return true;
22349 CurrentSource = L;
22350 return Flip<PT_Sint8, PT_FixedPoint>(S);
22351}
22352bool EvalEmitter::emitFlipSint8Ptr(SourceInfo L) {
22353 if (!isActive()) return true;
22354 CurrentSource = L;
22355 return Flip<PT_Sint8, PT_Ptr>(S);
22356}
22357bool EvalEmitter::emitFlipSint8MemberPtr(SourceInfo L) {
22358 if (!isActive()) return true;
22359 CurrentSource = L;
22360 return Flip<PT_Sint8, PT_MemberPtr>(S);
22361}
22362bool EvalEmitter::emitFlipSint8Float(SourceInfo L) {
22363 if (!isActive()) return true;
22364 CurrentSource = L;
22365 return Flip<PT_Sint8, PT_Float>(S);
22366}
22367bool EvalEmitter::emitFlipUint8Sint8(SourceInfo L) {
22368 if (!isActive()) return true;
22369 CurrentSource = L;
22370 return Flip<PT_Uint8, PT_Sint8>(S);
22371}
22372bool EvalEmitter::emitFlipUint8Uint8(SourceInfo L) {
22373 if (!isActive()) return true;
22374 CurrentSource = L;
22375 return Flip<PT_Uint8, PT_Uint8>(S);
22376}
22377bool EvalEmitter::emitFlipUint8Sint16(SourceInfo L) {
22378 if (!isActive()) return true;
22379 CurrentSource = L;
22380 return Flip<PT_Uint8, PT_Sint16>(S);
22381}
22382bool EvalEmitter::emitFlipUint8Uint16(SourceInfo L) {
22383 if (!isActive()) return true;
22384 CurrentSource = L;
22385 return Flip<PT_Uint8, PT_Uint16>(S);
22386}
22387bool EvalEmitter::emitFlipUint8Sint32(SourceInfo L) {
22388 if (!isActive()) return true;
22389 CurrentSource = L;
22390 return Flip<PT_Uint8, PT_Sint32>(S);
22391}
22392bool EvalEmitter::emitFlipUint8Uint32(SourceInfo L) {
22393 if (!isActive()) return true;
22394 CurrentSource = L;
22395 return Flip<PT_Uint8, PT_Uint32>(S);
22396}
22397bool EvalEmitter::emitFlipUint8Sint64(SourceInfo L) {
22398 if (!isActive()) return true;
22399 CurrentSource = L;
22400 return Flip<PT_Uint8, PT_Sint64>(S);
22401}
22402bool EvalEmitter::emitFlipUint8Uint64(SourceInfo L) {
22403 if (!isActive()) return true;
22404 CurrentSource = L;
22405 return Flip<PT_Uint8, PT_Uint64>(S);
22406}
22407bool EvalEmitter::emitFlipUint8IntAP(SourceInfo L) {
22408 if (!isActive()) return true;
22409 CurrentSource = L;
22410 return Flip<PT_Uint8, PT_IntAP>(S);
22411}
22412bool EvalEmitter::emitFlipUint8IntAPS(SourceInfo L) {
22413 if (!isActive()) return true;
22414 CurrentSource = L;
22415 return Flip<PT_Uint8, PT_IntAPS>(S);
22416}
22417bool EvalEmitter::emitFlipUint8Bool(SourceInfo L) {
22418 if (!isActive()) return true;
22419 CurrentSource = L;
22420 return Flip<PT_Uint8, PT_Bool>(S);
22421}
22422bool EvalEmitter::emitFlipUint8FixedPoint(SourceInfo L) {
22423 if (!isActive()) return true;
22424 CurrentSource = L;
22425 return Flip<PT_Uint8, PT_FixedPoint>(S);
22426}
22427bool EvalEmitter::emitFlipUint8Ptr(SourceInfo L) {
22428 if (!isActive()) return true;
22429 CurrentSource = L;
22430 return Flip<PT_Uint8, PT_Ptr>(S);
22431}
22432bool EvalEmitter::emitFlipUint8MemberPtr(SourceInfo L) {
22433 if (!isActive()) return true;
22434 CurrentSource = L;
22435 return Flip<PT_Uint8, PT_MemberPtr>(S);
22436}
22437bool EvalEmitter::emitFlipUint8Float(SourceInfo L) {
22438 if (!isActive()) return true;
22439 CurrentSource = L;
22440 return Flip<PT_Uint8, PT_Float>(S);
22441}
22442bool EvalEmitter::emitFlipSint16Sint8(SourceInfo L) {
22443 if (!isActive()) return true;
22444 CurrentSource = L;
22445 return Flip<PT_Sint16, PT_Sint8>(S);
22446}
22447bool EvalEmitter::emitFlipSint16Uint8(SourceInfo L) {
22448 if (!isActive()) return true;
22449 CurrentSource = L;
22450 return Flip<PT_Sint16, PT_Uint8>(S);
22451}
22452bool EvalEmitter::emitFlipSint16Sint16(SourceInfo L) {
22453 if (!isActive()) return true;
22454 CurrentSource = L;
22455 return Flip<PT_Sint16, PT_Sint16>(S);
22456}
22457bool EvalEmitter::emitFlipSint16Uint16(SourceInfo L) {
22458 if (!isActive()) return true;
22459 CurrentSource = L;
22460 return Flip<PT_Sint16, PT_Uint16>(S);
22461}
22462bool EvalEmitter::emitFlipSint16Sint32(SourceInfo L) {
22463 if (!isActive()) return true;
22464 CurrentSource = L;
22465 return Flip<PT_Sint16, PT_Sint32>(S);
22466}
22467bool EvalEmitter::emitFlipSint16Uint32(SourceInfo L) {
22468 if (!isActive()) return true;
22469 CurrentSource = L;
22470 return Flip<PT_Sint16, PT_Uint32>(S);
22471}
22472bool EvalEmitter::emitFlipSint16Sint64(SourceInfo L) {
22473 if (!isActive()) return true;
22474 CurrentSource = L;
22475 return Flip<PT_Sint16, PT_Sint64>(S);
22476}
22477bool EvalEmitter::emitFlipSint16Uint64(SourceInfo L) {
22478 if (!isActive()) return true;
22479 CurrentSource = L;
22480 return Flip<PT_Sint16, PT_Uint64>(S);
22481}
22482bool EvalEmitter::emitFlipSint16IntAP(SourceInfo L) {
22483 if (!isActive()) return true;
22484 CurrentSource = L;
22485 return Flip<PT_Sint16, PT_IntAP>(S);
22486}
22487bool EvalEmitter::emitFlipSint16IntAPS(SourceInfo L) {
22488 if (!isActive()) return true;
22489 CurrentSource = L;
22490 return Flip<PT_Sint16, PT_IntAPS>(S);
22491}
22492bool EvalEmitter::emitFlipSint16Bool(SourceInfo L) {
22493 if (!isActive()) return true;
22494 CurrentSource = L;
22495 return Flip<PT_Sint16, PT_Bool>(S);
22496}
22497bool EvalEmitter::emitFlipSint16FixedPoint(SourceInfo L) {
22498 if (!isActive()) return true;
22499 CurrentSource = L;
22500 return Flip<PT_Sint16, PT_FixedPoint>(S);
22501}
22502bool EvalEmitter::emitFlipSint16Ptr(SourceInfo L) {
22503 if (!isActive()) return true;
22504 CurrentSource = L;
22505 return Flip<PT_Sint16, PT_Ptr>(S);
22506}
22507bool EvalEmitter::emitFlipSint16MemberPtr(SourceInfo L) {
22508 if (!isActive()) return true;
22509 CurrentSource = L;
22510 return Flip<PT_Sint16, PT_MemberPtr>(S);
22511}
22512bool EvalEmitter::emitFlipSint16Float(SourceInfo L) {
22513 if (!isActive()) return true;
22514 CurrentSource = L;
22515 return Flip<PT_Sint16, PT_Float>(S);
22516}
22517bool EvalEmitter::emitFlipUint16Sint8(SourceInfo L) {
22518 if (!isActive()) return true;
22519 CurrentSource = L;
22520 return Flip<PT_Uint16, PT_Sint8>(S);
22521}
22522bool EvalEmitter::emitFlipUint16Uint8(SourceInfo L) {
22523 if (!isActive()) return true;
22524 CurrentSource = L;
22525 return Flip<PT_Uint16, PT_Uint8>(S);
22526}
22527bool EvalEmitter::emitFlipUint16Sint16(SourceInfo L) {
22528 if (!isActive()) return true;
22529 CurrentSource = L;
22530 return Flip<PT_Uint16, PT_Sint16>(S);
22531}
22532bool EvalEmitter::emitFlipUint16Uint16(SourceInfo L) {
22533 if (!isActive()) return true;
22534 CurrentSource = L;
22535 return Flip<PT_Uint16, PT_Uint16>(S);
22536}
22537bool EvalEmitter::emitFlipUint16Sint32(SourceInfo L) {
22538 if (!isActive()) return true;
22539 CurrentSource = L;
22540 return Flip<PT_Uint16, PT_Sint32>(S);
22541}
22542bool EvalEmitter::emitFlipUint16Uint32(SourceInfo L) {
22543 if (!isActive()) return true;
22544 CurrentSource = L;
22545 return Flip<PT_Uint16, PT_Uint32>(S);
22546}
22547bool EvalEmitter::emitFlipUint16Sint64(SourceInfo L) {
22548 if (!isActive()) return true;
22549 CurrentSource = L;
22550 return Flip<PT_Uint16, PT_Sint64>(S);
22551}
22552bool EvalEmitter::emitFlipUint16Uint64(SourceInfo L) {
22553 if (!isActive()) return true;
22554 CurrentSource = L;
22555 return Flip<PT_Uint16, PT_Uint64>(S);
22556}
22557bool EvalEmitter::emitFlipUint16IntAP(SourceInfo L) {
22558 if (!isActive()) return true;
22559 CurrentSource = L;
22560 return Flip<PT_Uint16, PT_IntAP>(S);
22561}
22562bool EvalEmitter::emitFlipUint16IntAPS(SourceInfo L) {
22563 if (!isActive()) return true;
22564 CurrentSource = L;
22565 return Flip<PT_Uint16, PT_IntAPS>(S);
22566}
22567bool EvalEmitter::emitFlipUint16Bool(SourceInfo L) {
22568 if (!isActive()) return true;
22569 CurrentSource = L;
22570 return Flip<PT_Uint16, PT_Bool>(S);
22571}
22572bool EvalEmitter::emitFlipUint16FixedPoint(SourceInfo L) {
22573 if (!isActive()) return true;
22574 CurrentSource = L;
22575 return Flip<PT_Uint16, PT_FixedPoint>(S);
22576}
22577bool EvalEmitter::emitFlipUint16Ptr(SourceInfo L) {
22578 if (!isActive()) return true;
22579 CurrentSource = L;
22580 return Flip<PT_Uint16, PT_Ptr>(S);
22581}
22582bool EvalEmitter::emitFlipUint16MemberPtr(SourceInfo L) {
22583 if (!isActive()) return true;
22584 CurrentSource = L;
22585 return Flip<PT_Uint16, PT_MemberPtr>(S);
22586}
22587bool EvalEmitter::emitFlipUint16Float(SourceInfo L) {
22588 if (!isActive()) return true;
22589 CurrentSource = L;
22590 return Flip<PT_Uint16, PT_Float>(S);
22591}
22592bool EvalEmitter::emitFlipSint32Sint8(SourceInfo L) {
22593 if (!isActive()) return true;
22594 CurrentSource = L;
22595 return Flip<PT_Sint32, PT_Sint8>(S);
22596}
22597bool EvalEmitter::emitFlipSint32Uint8(SourceInfo L) {
22598 if (!isActive()) return true;
22599 CurrentSource = L;
22600 return Flip<PT_Sint32, PT_Uint8>(S);
22601}
22602bool EvalEmitter::emitFlipSint32Sint16(SourceInfo L) {
22603 if (!isActive()) return true;
22604 CurrentSource = L;
22605 return Flip<PT_Sint32, PT_Sint16>(S);
22606}
22607bool EvalEmitter::emitFlipSint32Uint16(SourceInfo L) {
22608 if (!isActive()) return true;
22609 CurrentSource = L;
22610 return Flip<PT_Sint32, PT_Uint16>(S);
22611}
22612bool EvalEmitter::emitFlipSint32Sint32(SourceInfo L) {
22613 if (!isActive()) return true;
22614 CurrentSource = L;
22615 return Flip<PT_Sint32, PT_Sint32>(S);
22616}
22617bool EvalEmitter::emitFlipSint32Uint32(SourceInfo L) {
22618 if (!isActive()) return true;
22619 CurrentSource = L;
22620 return Flip<PT_Sint32, PT_Uint32>(S);
22621}
22622bool EvalEmitter::emitFlipSint32Sint64(SourceInfo L) {
22623 if (!isActive()) return true;
22624 CurrentSource = L;
22625 return Flip<PT_Sint32, PT_Sint64>(S);
22626}
22627bool EvalEmitter::emitFlipSint32Uint64(SourceInfo L) {
22628 if (!isActive()) return true;
22629 CurrentSource = L;
22630 return Flip<PT_Sint32, PT_Uint64>(S);
22631}
22632bool EvalEmitter::emitFlipSint32IntAP(SourceInfo L) {
22633 if (!isActive()) return true;
22634 CurrentSource = L;
22635 return Flip<PT_Sint32, PT_IntAP>(S);
22636}
22637bool EvalEmitter::emitFlipSint32IntAPS(SourceInfo L) {
22638 if (!isActive()) return true;
22639 CurrentSource = L;
22640 return Flip<PT_Sint32, PT_IntAPS>(S);
22641}
22642bool EvalEmitter::emitFlipSint32Bool(SourceInfo L) {
22643 if (!isActive()) return true;
22644 CurrentSource = L;
22645 return Flip<PT_Sint32, PT_Bool>(S);
22646}
22647bool EvalEmitter::emitFlipSint32FixedPoint(SourceInfo L) {
22648 if (!isActive()) return true;
22649 CurrentSource = L;
22650 return Flip<PT_Sint32, PT_FixedPoint>(S);
22651}
22652bool EvalEmitter::emitFlipSint32Ptr(SourceInfo L) {
22653 if (!isActive()) return true;
22654 CurrentSource = L;
22655 return Flip<PT_Sint32, PT_Ptr>(S);
22656}
22657bool EvalEmitter::emitFlipSint32MemberPtr(SourceInfo L) {
22658 if (!isActive()) return true;
22659 CurrentSource = L;
22660 return Flip<PT_Sint32, PT_MemberPtr>(S);
22661}
22662bool EvalEmitter::emitFlipSint32Float(SourceInfo L) {
22663 if (!isActive()) return true;
22664 CurrentSource = L;
22665 return Flip<PT_Sint32, PT_Float>(S);
22666}
22667bool EvalEmitter::emitFlipUint32Sint8(SourceInfo L) {
22668 if (!isActive()) return true;
22669 CurrentSource = L;
22670 return Flip<PT_Uint32, PT_Sint8>(S);
22671}
22672bool EvalEmitter::emitFlipUint32Uint8(SourceInfo L) {
22673 if (!isActive()) return true;
22674 CurrentSource = L;
22675 return Flip<PT_Uint32, PT_Uint8>(S);
22676}
22677bool EvalEmitter::emitFlipUint32Sint16(SourceInfo L) {
22678 if (!isActive()) return true;
22679 CurrentSource = L;
22680 return Flip<PT_Uint32, PT_Sint16>(S);
22681}
22682bool EvalEmitter::emitFlipUint32Uint16(SourceInfo L) {
22683 if (!isActive()) return true;
22684 CurrentSource = L;
22685 return Flip<PT_Uint32, PT_Uint16>(S);
22686}
22687bool EvalEmitter::emitFlipUint32Sint32(SourceInfo L) {
22688 if (!isActive()) return true;
22689 CurrentSource = L;
22690 return Flip<PT_Uint32, PT_Sint32>(S);
22691}
22692bool EvalEmitter::emitFlipUint32Uint32(SourceInfo L) {
22693 if (!isActive()) return true;
22694 CurrentSource = L;
22695 return Flip<PT_Uint32, PT_Uint32>(S);
22696}
22697bool EvalEmitter::emitFlipUint32Sint64(SourceInfo L) {
22698 if (!isActive()) return true;
22699 CurrentSource = L;
22700 return Flip<PT_Uint32, PT_Sint64>(S);
22701}
22702bool EvalEmitter::emitFlipUint32Uint64(SourceInfo L) {
22703 if (!isActive()) return true;
22704 CurrentSource = L;
22705 return Flip<PT_Uint32, PT_Uint64>(S);
22706}
22707bool EvalEmitter::emitFlipUint32IntAP(SourceInfo L) {
22708 if (!isActive()) return true;
22709 CurrentSource = L;
22710 return Flip<PT_Uint32, PT_IntAP>(S);
22711}
22712bool EvalEmitter::emitFlipUint32IntAPS(SourceInfo L) {
22713 if (!isActive()) return true;
22714 CurrentSource = L;
22715 return Flip<PT_Uint32, PT_IntAPS>(S);
22716}
22717bool EvalEmitter::emitFlipUint32Bool(SourceInfo L) {
22718 if (!isActive()) return true;
22719 CurrentSource = L;
22720 return Flip<PT_Uint32, PT_Bool>(S);
22721}
22722bool EvalEmitter::emitFlipUint32FixedPoint(SourceInfo L) {
22723 if (!isActive()) return true;
22724 CurrentSource = L;
22725 return Flip<PT_Uint32, PT_FixedPoint>(S);
22726}
22727bool EvalEmitter::emitFlipUint32Ptr(SourceInfo L) {
22728 if (!isActive()) return true;
22729 CurrentSource = L;
22730 return Flip<PT_Uint32, PT_Ptr>(S);
22731}
22732bool EvalEmitter::emitFlipUint32MemberPtr(SourceInfo L) {
22733 if (!isActive()) return true;
22734 CurrentSource = L;
22735 return Flip<PT_Uint32, PT_MemberPtr>(S);
22736}
22737bool EvalEmitter::emitFlipUint32Float(SourceInfo L) {
22738 if (!isActive()) return true;
22739 CurrentSource = L;
22740 return Flip<PT_Uint32, PT_Float>(S);
22741}
22742bool EvalEmitter::emitFlipSint64Sint8(SourceInfo L) {
22743 if (!isActive()) return true;
22744 CurrentSource = L;
22745 return Flip<PT_Sint64, PT_Sint8>(S);
22746}
22747bool EvalEmitter::emitFlipSint64Uint8(SourceInfo L) {
22748 if (!isActive()) return true;
22749 CurrentSource = L;
22750 return Flip<PT_Sint64, PT_Uint8>(S);
22751}
22752bool EvalEmitter::emitFlipSint64Sint16(SourceInfo L) {
22753 if (!isActive()) return true;
22754 CurrentSource = L;
22755 return Flip<PT_Sint64, PT_Sint16>(S);
22756}
22757bool EvalEmitter::emitFlipSint64Uint16(SourceInfo L) {
22758 if (!isActive()) return true;
22759 CurrentSource = L;
22760 return Flip<PT_Sint64, PT_Uint16>(S);
22761}
22762bool EvalEmitter::emitFlipSint64Sint32(SourceInfo L) {
22763 if (!isActive()) return true;
22764 CurrentSource = L;
22765 return Flip<PT_Sint64, PT_Sint32>(S);
22766}
22767bool EvalEmitter::emitFlipSint64Uint32(SourceInfo L) {
22768 if (!isActive()) return true;
22769 CurrentSource = L;
22770 return Flip<PT_Sint64, PT_Uint32>(S);
22771}
22772bool EvalEmitter::emitFlipSint64Sint64(SourceInfo L) {
22773 if (!isActive()) return true;
22774 CurrentSource = L;
22775 return Flip<PT_Sint64, PT_Sint64>(S);
22776}
22777bool EvalEmitter::emitFlipSint64Uint64(SourceInfo L) {
22778 if (!isActive()) return true;
22779 CurrentSource = L;
22780 return Flip<PT_Sint64, PT_Uint64>(S);
22781}
22782bool EvalEmitter::emitFlipSint64IntAP(SourceInfo L) {
22783 if (!isActive()) return true;
22784 CurrentSource = L;
22785 return Flip<PT_Sint64, PT_IntAP>(S);
22786}
22787bool EvalEmitter::emitFlipSint64IntAPS(SourceInfo L) {
22788 if (!isActive()) return true;
22789 CurrentSource = L;
22790 return Flip<PT_Sint64, PT_IntAPS>(S);
22791}
22792bool EvalEmitter::emitFlipSint64Bool(SourceInfo L) {
22793 if (!isActive()) return true;
22794 CurrentSource = L;
22795 return Flip<PT_Sint64, PT_Bool>(S);
22796}
22797bool EvalEmitter::emitFlipSint64FixedPoint(SourceInfo L) {
22798 if (!isActive()) return true;
22799 CurrentSource = L;
22800 return Flip<PT_Sint64, PT_FixedPoint>(S);
22801}
22802bool EvalEmitter::emitFlipSint64Ptr(SourceInfo L) {
22803 if (!isActive()) return true;
22804 CurrentSource = L;
22805 return Flip<PT_Sint64, PT_Ptr>(S);
22806}
22807bool EvalEmitter::emitFlipSint64MemberPtr(SourceInfo L) {
22808 if (!isActive()) return true;
22809 CurrentSource = L;
22810 return Flip<PT_Sint64, PT_MemberPtr>(S);
22811}
22812bool EvalEmitter::emitFlipSint64Float(SourceInfo L) {
22813 if (!isActive()) return true;
22814 CurrentSource = L;
22815 return Flip<PT_Sint64, PT_Float>(S);
22816}
22817bool EvalEmitter::emitFlipUint64Sint8(SourceInfo L) {
22818 if (!isActive()) return true;
22819 CurrentSource = L;
22820 return Flip<PT_Uint64, PT_Sint8>(S);
22821}
22822bool EvalEmitter::emitFlipUint64Uint8(SourceInfo L) {
22823 if (!isActive()) return true;
22824 CurrentSource = L;
22825 return Flip<PT_Uint64, PT_Uint8>(S);
22826}
22827bool EvalEmitter::emitFlipUint64Sint16(SourceInfo L) {
22828 if (!isActive()) return true;
22829 CurrentSource = L;
22830 return Flip<PT_Uint64, PT_Sint16>(S);
22831}
22832bool EvalEmitter::emitFlipUint64Uint16(SourceInfo L) {
22833 if (!isActive()) return true;
22834 CurrentSource = L;
22835 return Flip<PT_Uint64, PT_Uint16>(S);
22836}
22837bool EvalEmitter::emitFlipUint64Sint32(SourceInfo L) {
22838 if (!isActive()) return true;
22839 CurrentSource = L;
22840 return Flip<PT_Uint64, PT_Sint32>(S);
22841}
22842bool EvalEmitter::emitFlipUint64Uint32(SourceInfo L) {
22843 if (!isActive()) return true;
22844 CurrentSource = L;
22845 return Flip<PT_Uint64, PT_Uint32>(S);
22846}
22847bool EvalEmitter::emitFlipUint64Sint64(SourceInfo L) {
22848 if (!isActive()) return true;
22849 CurrentSource = L;
22850 return Flip<PT_Uint64, PT_Sint64>(S);
22851}
22852bool EvalEmitter::emitFlipUint64Uint64(SourceInfo L) {
22853 if (!isActive()) return true;
22854 CurrentSource = L;
22855 return Flip<PT_Uint64, PT_Uint64>(S);
22856}
22857bool EvalEmitter::emitFlipUint64IntAP(SourceInfo L) {
22858 if (!isActive()) return true;
22859 CurrentSource = L;
22860 return Flip<PT_Uint64, PT_IntAP>(S);
22861}
22862bool EvalEmitter::emitFlipUint64IntAPS(SourceInfo L) {
22863 if (!isActive()) return true;
22864 CurrentSource = L;
22865 return Flip<PT_Uint64, PT_IntAPS>(S);
22866}
22867bool EvalEmitter::emitFlipUint64Bool(SourceInfo L) {
22868 if (!isActive()) return true;
22869 CurrentSource = L;
22870 return Flip<PT_Uint64, PT_Bool>(S);
22871}
22872bool EvalEmitter::emitFlipUint64FixedPoint(SourceInfo L) {
22873 if (!isActive()) return true;
22874 CurrentSource = L;
22875 return Flip<PT_Uint64, PT_FixedPoint>(S);
22876}
22877bool EvalEmitter::emitFlipUint64Ptr(SourceInfo L) {
22878 if (!isActive()) return true;
22879 CurrentSource = L;
22880 return Flip<PT_Uint64, PT_Ptr>(S);
22881}
22882bool EvalEmitter::emitFlipUint64MemberPtr(SourceInfo L) {
22883 if (!isActive()) return true;
22884 CurrentSource = L;
22885 return Flip<PT_Uint64, PT_MemberPtr>(S);
22886}
22887bool EvalEmitter::emitFlipUint64Float(SourceInfo L) {
22888 if (!isActive()) return true;
22889 CurrentSource = L;
22890 return Flip<PT_Uint64, PT_Float>(S);
22891}
22892bool EvalEmitter::emitFlipIntAPSint8(SourceInfo L) {
22893 if (!isActive()) return true;
22894 CurrentSource = L;
22895 return Flip<PT_IntAP, PT_Sint8>(S);
22896}
22897bool EvalEmitter::emitFlipIntAPUint8(SourceInfo L) {
22898 if (!isActive()) return true;
22899 CurrentSource = L;
22900 return Flip<PT_IntAP, PT_Uint8>(S);
22901}
22902bool EvalEmitter::emitFlipIntAPSint16(SourceInfo L) {
22903 if (!isActive()) return true;
22904 CurrentSource = L;
22905 return Flip<PT_IntAP, PT_Sint16>(S);
22906}
22907bool EvalEmitter::emitFlipIntAPUint16(SourceInfo L) {
22908 if (!isActive()) return true;
22909 CurrentSource = L;
22910 return Flip<PT_IntAP, PT_Uint16>(S);
22911}
22912bool EvalEmitter::emitFlipIntAPSint32(SourceInfo L) {
22913 if (!isActive()) return true;
22914 CurrentSource = L;
22915 return Flip<PT_IntAP, PT_Sint32>(S);
22916}
22917bool EvalEmitter::emitFlipIntAPUint32(SourceInfo L) {
22918 if (!isActive()) return true;
22919 CurrentSource = L;
22920 return Flip<PT_IntAP, PT_Uint32>(S);
22921}
22922bool EvalEmitter::emitFlipIntAPSint64(SourceInfo L) {
22923 if (!isActive()) return true;
22924 CurrentSource = L;
22925 return Flip<PT_IntAP, PT_Sint64>(S);
22926}
22927bool EvalEmitter::emitFlipIntAPUint64(SourceInfo L) {
22928 if (!isActive()) return true;
22929 CurrentSource = L;
22930 return Flip<PT_IntAP, PT_Uint64>(S);
22931}
22932bool EvalEmitter::emitFlipIntAPIntAP(SourceInfo L) {
22933 if (!isActive()) return true;
22934 CurrentSource = L;
22935 return Flip<PT_IntAP, PT_IntAP>(S);
22936}
22937bool EvalEmitter::emitFlipIntAPIntAPS(SourceInfo L) {
22938 if (!isActive()) return true;
22939 CurrentSource = L;
22940 return Flip<PT_IntAP, PT_IntAPS>(S);
22941}
22942bool EvalEmitter::emitFlipIntAPBool(SourceInfo L) {
22943 if (!isActive()) return true;
22944 CurrentSource = L;
22945 return Flip<PT_IntAP, PT_Bool>(S);
22946}
22947bool EvalEmitter::emitFlipIntAPFixedPoint(SourceInfo L) {
22948 if (!isActive()) return true;
22949 CurrentSource = L;
22950 return Flip<PT_IntAP, PT_FixedPoint>(S);
22951}
22952bool EvalEmitter::emitFlipIntAPPtr(SourceInfo L) {
22953 if (!isActive()) return true;
22954 CurrentSource = L;
22955 return Flip<PT_IntAP, PT_Ptr>(S);
22956}
22957bool EvalEmitter::emitFlipIntAPMemberPtr(SourceInfo L) {
22958 if (!isActive()) return true;
22959 CurrentSource = L;
22960 return Flip<PT_IntAP, PT_MemberPtr>(S);
22961}
22962bool EvalEmitter::emitFlipIntAPFloat(SourceInfo L) {
22963 if (!isActive()) return true;
22964 CurrentSource = L;
22965 return Flip<PT_IntAP, PT_Float>(S);
22966}
22967bool EvalEmitter::emitFlipIntAPSSint8(SourceInfo L) {
22968 if (!isActive()) return true;
22969 CurrentSource = L;
22970 return Flip<PT_IntAPS, PT_Sint8>(S);
22971}
22972bool EvalEmitter::emitFlipIntAPSUint8(SourceInfo L) {
22973 if (!isActive()) return true;
22974 CurrentSource = L;
22975 return Flip<PT_IntAPS, PT_Uint8>(S);
22976}
22977bool EvalEmitter::emitFlipIntAPSSint16(SourceInfo L) {
22978 if (!isActive()) return true;
22979 CurrentSource = L;
22980 return Flip<PT_IntAPS, PT_Sint16>(S);
22981}
22982bool EvalEmitter::emitFlipIntAPSUint16(SourceInfo L) {
22983 if (!isActive()) return true;
22984 CurrentSource = L;
22985 return Flip<PT_IntAPS, PT_Uint16>(S);
22986}
22987bool EvalEmitter::emitFlipIntAPSSint32(SourceInfo L) {
22988 if (!isActive()) return true;
22989 CurrentSource = L;
22990 return Flip<PT_IntAPS, PT_Sint32>(S);
22991}
22992bool EvalEmitter::emitFlipIntAPSUint32(SourceInfo L) {
22993 if (!isActive()) return true;
22994 CurrentSource = L;
22995 return Flip<PT_IntAPS, PT_Uint32>(S);
22996}
22997bool EvalEmitter::emitFlipIntAPSSint64(SourceInfo L) {
22998 if (!isActive()) return true;
22999 CurrentSource = L;
23000 return Flip<PT_IntAPS, PT_Sint64>(S);
23001}
23002bool EvalEmitter::emitFlipIntAPSUint64(SourceInfo L) {
23003 if (!isActive()) return true;
23004 CurrentSource = L;
23005 return Flip<PT_IntAPS, PT_Uint64>(S);
23006}
23007bool EvalEmitter::emitFlipIntAPSIntAP(SourceInfo L) {
23008 if (!isActive()) return true;
23009 CurrentSource = L;
23010 return Flip<PT_IntAPS, PT_IntAP>(S);
23011}
23012bool EvalEmitter::emitFlipIntAPSIntAPS(SourceInfo L) {
23013 if (!isActive()) return true;
23014 CurrentSource = L;
23015 return Flip<PT_IntAPS, PT_IntAPS>(S);
23016}
23017bool EvalEmitter::emitFlipIntAPSBool(SourceInfo L) {
23018 if (!isActive()) return true;
23019 CurrentSource = L;
23020 return Flip<PT_IntAPS, PT_Bool>(S);
23021}
23022bool EvalEmitter::emitFlipIntAPSFixedPoint(SourceInfo L) {
23023 if (!isActive()) return true;
23024 CurrentSource = L;
23025 return Flip<PT_IntAPS, PT_FixedPoint>(S);
23026}
23027bool EvalEmitter::emitFlipIntAPSPtr(SourceInfo L) {
23028 if (!isActive()) return true;
23029 CurrentSource = L;
23030 return Flip<PT_IntAPS, PT_Ptr>(S);
23031}
23032bool EvalEmitter::emitFlipIntAPSMemberPtr(SourceInfo L) {
23033 if (!isActive()) return true;
23034 CurrentSource = L;
23035 return Flip<PT_IntAPS, PT_MemberPtr>(S);
23036}
23037bool EvalEmitter::emitFlipIntAPSFloat(SourceInfo L) {
23038 if (!isActive()) return true;
23039 CurrentSource = L;
23040 return Flip<PT_IntAPS, PT_Float>(S);
23041}
23042bool EvalEmitter::emitFlipBoolSint8(SourceInfo L) {
23043 if (!isActive()) return true;
23044 CurrentSource = L;
23045 return Flip<PT_Bool, PT_Sint8>(S);
23046}
23047bool EvalEmitter::emitFlipBoolUint8(SourceInfo L) {
23048 if (!isActive()) return true;
23049 CurrentSource = L;
23050 return Flip<PT_Bool, PT_Uint8>(S);
23051}
23052bool EvalEmitter::emitFlipBoolSint16(SourceInfo L) {
23053 if (!isActive()) return true;
23054 CurrentSource = L;
23055 return Flip<PT_Bool, PT_Sint16>(S);
23056}
23057bool EvalEmitter::emitFlipBoolUint16(SourceInfo L) {
23058 if (!isActive()) return true;
23059 CurrentSource = L;
23060 return Flip<PT_Bool, PT_Uint16>(S);
23061}
23062bool EvalEmitter::emitFlipBoolSint32(SourceInfo L) {
23063 if (!isActive()) return true;
23064 CurrentSource = L;
23065 return Flip<PT_Bool, PT_Sint32>(S);
23066}
23067bool EvalEmitter::emitFlipBoolUint32(SourceInfo L) {
23068 if (!isActive()) return true;
23069 CurrentSource = L;
23070 return Flip<PT_Bool, PT_Uint32>(S);
23071}
23072bool EvalEmitter::emitFlipBoolSint64(SourceInfo L) {
23073 if (!isActive()) return true;
23074 CurrentSource = L;
23075 return Flip<PT_Bool, PT_Sint64>(S);
23076}
23077bool EvalEmitter::emitFlipBoolUint64(SourceInfo L) {
23078 if (!isActive()) return true;
23079 CurrentSource = L;
23080 return Flip<PT_Bool, PT_Uint64>(S);
23081}
23082bool EvalEmitter::emitFlipBoolIntAP(SourceInfo L) {
23083 if (!isActive()) return true;
23084 CurrentSource = L;
23085 return Flip<PT_Bool, PT_IntAP>(S);
23086}
23087bool EvalEmitter::emitFlipBoolIntAPS(SourceInfo L) {
23088 if (!isActive()) return true;
23089 CurrentSource = L;
23090 return Flip<PT_Bool, PT_IntAPS>(S);
23091}
23092bool EvalEmitter::emitFlipBoolBool(SourceInfo L) {
23093 if (!isActive()) return true;
23094 CurrentSource = L;
23095 return Flip<PT_Bool, PT_Bool>(S);
23096}
23097bool EvalEmitter::emitFlipBoolFixedPoint(SourceInfo L) {
23098 if (!isActive()) return true;
23099 CurrentSource = L;
23100 return Flip<PT_Bool, PT_FixedPoint>(S);
23101}
23102bool EvalEmitter::emitFlipBoolPtr(SourceInfo L) {
23103 if (!isActive()) return true;
23104 CurrentSource = L;
23105 return Flip<PT_Bool, PT_Ptr>(S);
23106}
23107bool EvalEmitter::emitFlipBoolMemberPtr(SourceInfo L) {
23108 if (!isActive()) return true;
23109 CurrentSource = L;
23110 return Flip<PT_Bool, PT_MemberPtr>(S);
23111}
23112bool EvalEmitter::emitFlipBoolFloat(SourceInfo L) {
23113 if (!isActive()) return true;
23114 CurrentSource = L;
23115 return Flip<PT_Bool, PT_Float>(S);
23116}
23117bool EvalEmitter::emitFlipFixedPointSint8(SourceInfo L) {
23118 if (!isActive()) return true;
23119 CurrentSource = L;
23120 return Flip<PT_FixedPoint, PT_Sint8>(S);
23121}
23122bool EvalEmitter::emitFlipFixedPointUint8(SourceInfo L) {
23123 if (!isActive()) return true;
23124 CurrentSource = L;
23125 return Flip<PT_FixedPoint, PT_Uint8>(S);
23126}
23127bool EvalEmitter::emitFlipFixedPointSint16(SourceInfo L) {
23128 if (!isActive()) return true;
23129 CurrentSource = L;
23130 return Flip<PT_FixedPoint, PT_Sint16>(S);
23131}
23132bool EvalEmitter::emitFlipFixedPointUint16(SourceInfo L) {
23133 if (!isActive()) return true;
23134 CurrentSource = L;
23135 return Flip<PT_FixedPoint, PT_Uint16>(S);
23136}
23137bool EvalEmitter::emitFlipFixedPointSint32(SourceInfo L) {
23138 if (!isActive()) return true;
23139 CurrentSource = L;
23140 return Flip<PT_FixedPoint, PT_Sint32>(S);
23141}
23142bool EvalEmitter::emitFlipFixedPointUint32(SourceInfo L) {
23143 if (!isActive()) return true;
23144 CurrentSource = L;
23145 return Flip<PT_FixedPoint, PT_Uint32>(S);
23146}
23147bool EvalEmitter::emitFlipFixedPointSint64(SourceInfo L) {
23148 if (!isActive()) return true;
23149 CurrentSource = L;
23150 return Flip<PT_FixedPoint, PT_Sint64>(S);
23151}
23152bool EvalEmitter::emitFlipFixedPointUint64(SourceInfo L) {
23153 if (!isActive()) return true;
23154 CurrentSource = L;
23155 return Flip<PT_FixedPoint, PT_Uint64>(S);
23156}
23157bool EvalEmitter::emitFlipFixedPointIntAP(SourceInfo L) {
23158 if (!isActive()) return true;
23159 CurrentSource = L;
23160 return Flip<PT_FixedPoint, PT_IntAP>(S);
23161}
23162bool EvalEmitter::emitFlipFixedPointIntAPS(SourceInfo L) {
23163 if (!isActive()) return true;
23164 CurrentSource = L;
23165 return Flip<PT_FixedPoint, PT_IntAPS>(S);
23166}
23167bool EvalEmitter::emitFlipFixedPointBool(SourceInfo L) {
23168 if (!isActive()) return true;
23169 CurrentSource = L;
23170 return Flip<PT_FixedPoint, PT_Bool>(S);
23171}
23172bool EvalEmitter::emitFlipFixedPointFixedPoint(SourceInfo L) {
23173 if (!isActive()) return true;
23174 CurrentSource = L;
23175 return Flip<PT_FixedPoint, PT_FixedPoint>(S);
23176}
23177bool EvalEmitter::emitFlipFixedPointPtr(SourceInfo L) {
23178 if (!isActive()) return true;
23179 CurrentSource = L;
23180 return Flip<PT_FixedPoint, PT_Ptr>(S);
23181}
23182bool EvalEmitter::emitFlipFixedPointMemberPtr(SourceInfo L) {
23183 if (!isActive()) return true;
23184 CurrentSource = L;
23185 return Flip<PT_FixedPoint, PT_MemberPtr>(S);
23186}
23187bool EvalEmitter::emitFlipFixedPointFloat(SourceInfo L) {
23188 if (!isActive()) return true;
23189 CurrentSource = L;
23190 return Flip<PT_FixedPoint, PT_Float>(S);
23191}
23192bool EvalEmitter::emitFlipPtrSint8(SourceInfo L) {
23193 if (!isActive()) return true;
23194 CurrentSource = L;
23195 return Flip<PT_Ptr, PT_Sint8>(S);
23196}
23197bool EvalEmitter::emitFlipPtrUint8(SourceInfo L) {
23198 if (!isActive()) return true;
23199 CurrentSource = L;
23200 return Flip<PT_Ptr, PT_Uint8>(S);
23201}
23202bool EvalEmitter::emitFlipPtrSint16(SourceInfo L) {
23203 if (!isActive()) return true;
23204 CurrentSource = L;
23205 return Flip<PT_Ptr, PT_Sint16>(S);
23206}
23207bool EvalEmitter::emitFlipPtrUint16(SourceInfo L) {
23208 if (!isActive()) return true;
23209 CurrentSource = L;
23210 return Flip<PT_Ptr, PT_Uint16>(S);
23211}
23212bool EvalEmitter::emitFlipPtrSint32(SourceInfo L) {
23213 if (!isActive()) return true;
23214 CurrentSource = L;
23215 return Flip<PT_Ptr, PT_Sint32>(S);
23216}
23217bool EvalEmitter::emitFlipPtrUint32(SourceInfo L) {
23218 if (!isActive()) return true;
23219 CurrentSource = L;
23220 return Flip<PT_Ptr, PT_Uint32>(S);
23221}
23222bool EvalEmitter::emitFlipPtrSint64(SourceInfo L) {
23223 if (!isActive()) return true;
23224 CurrentSource = L;
23225 return Flip<PT_Ptr, PT_Sint64>(S);
23226}
23227bool EvalEmitter::emitFlipPtrUint64(SourceInfo L) {
23228 if (!isActive()) return true;
23229 CurrentSource = L;
23230 return Flip<PT_Ptr, PT_Uint64>(S);
23231}
23232bool EvalEmitter::emitFlipPtrIntAP(SourceInfo L) {
23233 if (!isActive()) return true;
23234 CurrentSource = L;
23235 return Flip<PT_Ptr, PT_IntAP>(S);
23236}
23237bool EvalEmitter::emitFlipPtrIntAPS(SourceInfo L) {
23238 if (!isActive()) return true;
23239 CurrentSource = L;
23240 return Flip<PT_Ptr, PT_IntAPS>(S);
23241}
23242bool EvalEmitter::emitFlipPtrBool(SourceInfo L) {
23243 if (!isActive()) return true;
23244 CurrentSource = L;
23245 return Flip<PT_Ptr, PT_Bool>(S);
23246}
23247bool EvalEmitter::emitFlipPtrFixedPoint(SourceInfo L) {
23248 if (!isActive()) return true;
23249 CurrentSource = L;
23250 return Flip<PT_Ptr, PT_FixedPoint>(S);
23251}
23252bool EvalEmitter::emitFlipPtrPtr(SourceInfo L) {
23253 if (!isActive()) return true;
23254 CurrentSource = L;
23255 return Flip<PT_Ptr, PT_Ptr>(S);
23256}
23257bool EvalEmitter::emitFlipPtrMemberPtr(SourceInfo L) {
23258 if (!isActive()) return true;
23259 CurrentSource = L;
23260 return Flip<PT_Ptr, PT_MemberPtr>(S);
23261}
23262bool EvalEmitter::emitFlipPtrFloat(SourceInfo L) {
23263 if (!isActive()) return true;
23264 CurrentSource = L;
23265 return Flip<PT_Ptr, PT_Float>(S);
23266}
23267bool EvalEmitter::emitFlipMemberPtrSint8(SourceInfo L) {
23268 if (!isActive()) return true;
23269 CurrentSource = L;
23270 return Flip<PT_MemberPtr, PT_Sint8>(S);
23271}
23272bool EvalEmitter::emitFlipMemberPtrUint8(SourceInfo L) {
23273 if (!isActive()) return true;
23274 CurrentSource = L;
23275 return Flip<PT_MemberPtr, PT_Uint8>(S);
23276}
23277bool EvalEmitter::emitFlipMemberPtrSint16(SourceInfo L) {
23278 if (!isActive()) return true;
23279 CurrentSource = L;
23280 return Flip<PT_MemberPtr, PT_Sint16>(S);
23281}
23282bool EvalEmitter::emitFlipMemberPtrUint16(SourceInfo L) {
23283 if (!isActive()) return true;
23284 CurrentSource = L;
23285 return Flip<PT_MemberPtr, PT_Uint16>(S);
23286}
23287bool EvalEmitter::emitFlipMemberPtrSint32(SourceInfo L) {
23288 if (!isActive()) return true;
23289 CurrentSource = L;
23290 return Flip<PT_MemberPtr, PT_Sint32>(S);
23291}
23292bool EvalEmitter::emitFlipMemberPtrUint32(SourceInfo L) {
23293 if (!isActive()) return true;
23294 CurrentSource = L;
23295 return Flip<PT_MemberPtr, PT_Uint32>(S);
23296}
23297bool EvalEmitter::emitFlipMemberPtrSint64(SourceInfo L) {
23298 if (!isActive()) return true;
23299 CurrentSource = L;
23300 return Flip<PT_MemberPtr, PT_Sint64>(S);
23301}
23302bool EvalEmitter::emitFlipMemberPtrUint64(SourceInfo L) {
23303 if (!isActive()) return true;
23304 CurrentSource = L;
23305 return Flip<PT_MemberPtr, PT_Uint64>(S);
23306}
23307bool EvalEmitter::emitFlipMemberPtrIntAP(SourceInfo L) {
23308 if (!isActive()) return true;
23309 CurrentSource = L;
23310 return Flip<PT_MemberPtr, PT_IntAP>(S);
23311}
23312bool EvalEmitter::emitFlipMemberPtrIntAPS(SourceInfo L) {
23313 if (!isActive()) return true;
23314 CurrentSource = L;
23315 return Flip<PT_MemberPtr, PT_IntAPS>(S);
23316}
23317bool EvalEmitter::emitFlipMemberPtrBool(SourceInfo L) {
23318 if (!isActive()) return true;
23319 CurrentSource = L;
23320 return Flip<PT_MemberPtr, PT_Bool>(S);
23321}
23322bool EvalEmitter::emitFlipMemberPtrFixedPoint(SourceInfo L) {
23323 if (!isActive()) return true;
23324 CurrentSource = L;
23325 return Flip<PT_MemberPtr, PT_FixedPoint>(S);
23326}
23327bool EvalEmitter::emitFlipMemberPtrPtr(SourceInfo L) {
23328 if (!isActive()) return true;
23329 CurrentSource = L;
23330 return Flip<PT_MemberPtr, PT_Ptr>(S);
23331}
23332bool EvalEmitter::emitFlipMemberPtrMemberPtr(SourceInfo L) {
23333 if (!isActive()) return true;
23334 CurrentSource = L;
23335 return Flip<PT_MemberPtr, PT_MemberPtr>(S);
23336}
23337bool EvalEmitter::emitFlipMemberPtrFloat(SourceInfo L) {
23338 if (!isActive()) return true;
23339 CurrentSource = L;
23340 return Flip<PT_MemberPtr, PT_Float>(S);
23341}
23342bool EvalEmitter::emitFlipFloatSint8(SourceInfo L) {
23343 if (!isActive()) return true;
23344 CurrentSource = L;
23345 return Flip<PT_Float, PT_Sint8>(S);
23346}
23347bool EvalEmitter::emitFlipFloatUint8(SourceInfo L) {
23348 if (!isActive()) return true;
23349 CurrentSource = L;
23350 return Flip<PT_Float, PT_Uint8>(S);
23351}
23352bool EvalEmitter::emitFlipFloatSint16(SourceInfo L) {
23353 if (!isActive()) return true;
23354 CurrentSource = L;
23355 return Flip<PT_Float, PT_Sint16>(S);
23356}
23357bool EvalEmitter::emitFlipFloatUint16(SourceInfo L) {
23358 if (!isActive()) return true;
23359 CurrentSource = L;
23360 return Flip<PT_Float, PT_Uint16>(S);
23361}
23362bool EvalEmitter::emitFlipFloatSint32(SourceInfo L) {
23363 if (!isActive()) return true;
23364 CurrentSource = L;
23365 return Flip<PT_Float, PT_Sint32>(S);
23366}
23367bool EvalEmitter::emitFlipFloatUint32(SourceInfo L) {
23368 if (!isActive()) return true;
23369 CurrentSource = L;
23370 return Flip<PT_Float, PT_Uint32>(S);
23371}
23372bool EvalEmitter::emitFlipFloatSint64(SourceInfo L) {
23373 if (!isActive()) return true;
23374 CurrentSource = L;
23375 return Flip<PT_Float, PT_Sint64>(S);
23376}
23377bool EvalEmitter::emitFlipFloatUint64(SourceInfo L) {
23378 if (!isActive()) return true;
23379 CurrentSource = L;
23380 return Flip<PT_Float, PT_Uint64>(S);
23381}
23382bool EvalEmitter::emitFlipFloatIntAP(SourceInfo L) {
23383 if (!isActive()) return true;
23384 CurrentSource = L;
23385 return Flip<PT_Float, PT_IntAP>(S);
23386}
23387bool EvalEmitter::emitFlipFloatIntAPS(SourceInfo L) {
23388 if (!isActive()) return true;
23389 CurrentSource = L;
23390 return Flip<PT_Float, PT_IntAPS>(S);
23391}
23392bool EvalEmitter::emitFlipFloatBool(SourceInfo L) {
23393 if (!isActive()) return true;
23394 CurrentSource = L;
23395 return Flip<PT_Float, PT_Bool>(S);
23396}
23397bool EvalEmitter::emitFlipFloatFixedPoint(SourceInfo L) {
23398 if (!isActive()) return true;
23399 CurrentSource = L;
23400 return Flip<PT_Float, PT_FixedPoint>(S);
23401}
23402bool EvalEmitter::emitFlipFloatPtr(SourceInfo L) {
23403 if (!isActive()) return true;
23404 CurrentSource = L;
23405 return Flip<PT_Float, PT_Ptr>(S);
23406}
23407bool EvalEmitter::emitFlipFloatMemberPtr(SourceInfo L) {
23408 if (!isActive()) return true;
23409 CurrentSource = L;
23410 return Flip<PT_Float, PT_MemberPtr>(S);
23411}
23412bool EvalEmitter::emitFlipFloatFloat(SourceInfo L) {
23413 if (!isActive()) return true;
23414 CurrentSource = L;
23415 return Flip<PT_Float, PT_Float>(S);
23416}
23417#endif
23418#ifdef GET_OPCODE_NAMES
23419OP_FnPtrCast,
23420#endif
23421#ifdef GET_INTERPFN_LIST
23422&Interp_FnPtrCast,
23423#endif
23424#ifdef GET_INTERPFN_DISPATCHERS
23425PRESERVE_NONE
23426static bool Interp_FnPtrCast(InterpState &S) {
23427 if (!FnPtrCast(S, S.PC)) return false;
23428#if USE_TAILCALLS
23429 MUSTTAIL return InterpNext(S);
23430#else
23431 return true;
23432#endif
23433}
23434#endif
23435#ifdef GET_DISASM
23436case OP_FnPtrCast:
23437 Text.Op = PrintName("FnPtrCast");
23438 break;
23439#endif
23440#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23441bool emitFnPtrCast(SourceInfo);
23442#endif
23443#ifdef GET_LINK_IMPL
23444bool ByteCodeEmitter::emitFnPtrCast(SourceInfo L) {
23445 return emitOp<>(OP_FnPtrCast, L);
23446}
23447#endif
23448#ifdef GET_EVAL_IMPL
23449bool EvalEmitter::emitFnPtrCast(SourceInfo L) {
23450 if (!isActive()) return true;
23451 CurrentSource = L;
23452 return FnPtrCast(S, CodePtr());
23453}
23454#endif
23455#ifdef GET_OPCODE_NAMES
23456OP_Free,
23457#endif
23458#ifdef GET_INTERPFN_LIST
23459&Interp_Free,
23460#endif
23461#ifdef GET_INTERPFN_DISPATCHERS
23462PRESERVE_NONE
23463static bool Interp_Free(InterpState &S) {
23464 {
23465 CodePtr OpPC = S.PC;
23466 const auto V0 = ReadArg<bool>(S, S.PC);
23467 const auto V1 = ReadArg<bool>(S, S.PC);
23468 if (!Free(S, OpPC, V0, V1)) return false;
23469 }
23470#if USE_TAILCALLS
23471 MUSTTAIL return InterpNext(S);
23472#else
23473 return true;
23474#endif
23475}
23476#endif
23477#ifdef GET_DISASM
23478case OP_Free:
23479 Text.Op = PrintName("Free");
23480 Text.Args.push_back(printArg<bool>(PC));
23481 Text.Args.push_back(printArg<bool>(PC));
23482 break;
23483#endif
23484#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23485bool emitFree( bool , bool , SourceInfo);
23486#endif
23487#ifdef GET_LINK_IMPL
23488bool ByteCodeEmitter::emitFree( bool A0, bool A1, SourceInfo L) {
23489 return emitOp<bool, bool>(OP_Free, A0, A1, L);
23490}
23491#endif
23492#ifdef GET_EVAL_IMPL
23493bool EvalEmitter::emitFree( bool A0, bool A1, SourceInfo L) {
23494 if (!isActive()) return true;
23495 CurrentSource = L;
23496 return Free(S, CodePtr(), A0, A1);
23497}
23498#endif
23499#ifdef GET_OPCODE_NAMES
23500OP_GESint8,
23501OP_GEUint8,
23502OP_GESint16,
23503OP_GEUint16,
23504OP_GESint32,
23505OP_GEUint32,
23506OP_GESint64,
23507OP_GEUint64,
23508OP_GEIntAP,
23509OP_GEIntAPS,
23510OP_GEBool,
23511OP_GEFixedPoint,
23512OP_GEPtr,
23513OP_GEFloat,
23514#endif
23515#ifdef GET_INTERPFN_LIST
23516&Interp_GESint8,
23517&Interp_GEUint8,
23518&Interp_GESint16,
23519&Interp_GEUint16,
23520&Interp_GESint32,
23521&Interp_GEUint32,
23522&Interp_GESint64,
23523&Interp_GEUint64,
23524&Interp_GEIntAP,
23525&Interp_GEIntAPS,
23526&Interp_GEBool,
23527&Interp_GEFixedPoint,
23528&Interp_GEPtr,
23529&Interp_GEFloat,
23530#endif
23531#ifdef GET_INTERPFN_DISPATCHERS
23532PRESERVE_NONE
23533static bool Interp_GESint8(InterpState &S) {
23534 if (!GE<PT_Sint8>(S, S.PC)) return false;
23535#if USE_TAILCALLS
23536 MUSTTAIL return InterpNext(S);
23537#else
23538 return true;
23539#endif
23540}
23541PRESERVE_NONE
23542static bool Interp_GEUint8(InterpState &S) {
23543 if (!GE<PT_Uint8>(S, S.PC)) return false;
23544#if USE_TAILCALLS
23545 MUSTTAIL return InterpNext(S);
23546#else
23547 return true;
23548#endif
23549}
23550PRESERVE_NONE
23551static bool Interp_GESint16(InterpState &S) {
23552 if (!GE<PT_Sint16>(S, S.PC)) return false;
23553#if USE_TAILCALLS
23554 MUSTTAIL return InterpNext(S);
23555#else
23556 return true;
23557#endif
23558}
23559PRESERVE_NONE
23560static bool Interp_GEUint16(InterpState &S) {
23561 if (!GE<PT_Uint16>(S, S.PC)) return false;
23562#if USE_TAILCALLS
23563 MUSTTAIL return InterpNext(S);
23564#else
23565 return true;
23566#endif
23567}
23568PRESERVE_NONE
23569static bool Interp_GESint32(InterpState &S) {
23570 if (!GE<PT_Sint32>(S, S.PC)) return false;
23571#if USE_TAILCALLS
23572 MUSTTAIL return InterpNext(S);
23573#else
23574 return true;
23575#endif
23576}
23577PRESERVE_NONE
23578static bool Interp_GEUint32(InterpState &S) {
23579 if (!GE<PT_Uint32>(S, S.PC)) return false;
23580#if USE_TAILCALLS
23581 MUSTTAIL return InterpNext(S);
23582#else
23583 return true;
23584#endif
23585}
23586PRESERVE_NONE
23587static bool Interp_GESint64(InterpState &S) {
23588 if (!GE<PT_Sint64>(S, S.PC)) return false;
23589#if USE_TAILCALLS
23590 MUSTTAIL return InterpNext(S);
23591#else
23592 return true;
23593#endif
23594}
23595PRESERVE_NONE
23596static bool Interp_GEUint64(InterpState &S) {
23597 if (!GE<PT_Uint64>(S, S.PC)) return false;
23598#if USE_TAILCALLS
23599 MUSTTAIL return InterpNext(S);
23600#else
23601 return true;
23602#endif
23603}
23604PRESERVE_NONE
23605static bool Interp_GEIntAP(InterpState &S) {
23606 if (!GE<PT_IntAP>(S, S.PC)) return false;
23607#if USE_TAILCALLS
23608 MUSTTAIL return InterpNext(S);
23609#else
23610 return true;
23611#endif
23612}
23613PRESERVE_NONE
23614static bool Interp_GEIntAPS(InterpState &S) {
23615 if (!GE<PT_IntAPS>(S, S.PC)) return false;
23616#if USE_TAILCALLS
23617 MUSTTAIL return InterpNext(S);
23618#else
23619 return true;
23620#endif
23621}
23622PRESERVE_NONE
23623static bool Interp_GEBool(InterpState &S) {
23624 if (!GE<PT_Bool>(S, S.PC)) return false;
23625#if USE_TAILCALLS
23626 MUSTTAIL return InterpNext(S);
23627#else
23628 return true;
23629#endif
23630}
23631PRESERVE_NONE
23632static bool Interp_GEFixedPoint(InterpState &S) {
23633 if (!GE<PT_FixedPoint>(S, S.PC)) return false;
23634#if USE_TAILCALLS
23635 MUSTTAIL return InterpNext(S);
23636#else
23637 return true;
23638#endif
23639}
23640PRESERVE_NONE
23641static bool Interp_GEPtr(InterpState &S) {
23642 if (!GE<PT_Ptr>(S, S.PC)) return false;
23643#if USE_TAILCALLS
23644 MUSTTAIL return InterpNext(S);
23645#else
23646 return true;
23647#endif
23648}
23649PRESERVE_NONE
23650static bool Interp_GEFloat(InterpState &S) {
23651 if (!GE<PT_Float>(S, S.PC)) return false;
23652#if USE_TAILCALLS
23653 MUSTTAIL return InterpNext(S);
23654#else
23655 return true;
23656#endif
23657}
23658#endif
23659#ifdef GET_DISASM
23660case OP_GESint8:
23661 Text.Op = PrintName("GESint8");
23662 break;
23663case OP_GEUint8:
23664 Text.Op = PrintName("GEUint8");
23665 break;
23666case OP_GESint16:
23667 Text.Op = PrintName("GESint16");
23668 break;
23669case OP_GEUint16:
23670 Text.Op = PrintName("GEUint16");
23671 break;
23672case OP_GESint32:
23673 Text.Op = PrintName("GESint32");
23674 break;
23675case OP_GEUint32:
23676 Text.Op = PrintName("GEUint32");
23677 break;
23678case OP_GESint64:
23679 Text.Op = PrintName("GESint64");
23680 break;
23681case OP_GEUint64:
23682 Text.Op = PrintName("GEUint64");
23683 break;
23684case OP_GEIntAP:
23685 Text.Op = PrintName("GEIntAP");
23686 break;
23687case OP_GEIntAPS:
23688 Text.Op = PrintName("GEIntAPS");
23689 break;
23690case OP_GEBool:
23691 Text.Op = PrintName("GEBool");
23692 break;
23693case OP_GEFixedPoint:
23694 Text.Op = PrintName("GEFixedPoint");
23695 break;
23696case OP_GEPtr:
23697 Text.Op = PrintName("GEPtr");
23698 break;
23699case OP_GEFloat:
23700 Text.Op = PrintName("GEFloat");
23701 break;
23702#endif
23703#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23704bool emitGESint8(SourceInfo);
23705bool emitGEUint8(SourceInfo);
23706bool emitGESint16(SourceInfo);
23707bool emitGEUint16(SourceInfo);
23708bool emitGESint32(SourceInfo);
23709bool emitGEUint32(SourceInfo);
23710bool emitGESint64(SourceInfo);
23711bool emitGEUint64(SourceInfo);
23712bool emitGEIntAP(SourceInfo);
23713bool emitGEIntAPS(SourceInfo);
23714bool emitGEBool(SourceInfo);
23715bool emitGEFixedPoint(SourceInfo);
23716bool emitGEPtr(SourceInfo);
23717bool emitGEFloat(SourceInfo);
23718#endif
23719#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23720[[nodiscard]] bool emitGE(PrimType, SourceInfo I);
23721#endif
23722#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
23723bool
23724#if defined(GET_EVAL_IMPL)
23725EvalEmitter
23726#else
23727ByteCodeEmitter
23728#endif
23729::emitGE(PrimType T0, SourceInfo I) {
23730 switch (T0) {
23731 case PT_Sint8:
23732 return emitGESint8(I);
23733 case PT_Uint8:
23734 return emitGEUint8(I);
23735 case PT_Sint16:
23736 return emitGESint16(I);
23737 case PT_Uint16:
23738 return emitGEUint16(I);
23739 case PT_Sint32:
23740 return emitGESint32(I);
23741 case PT_Uint32:
23742 return emitGEUint32(I);
23743 case PT_Sint64:
23744 return emitGESint64(I);
23745 case PT_Uint64:
23746 return emitGEUint64(I);
23747 case PT_IntAP:
23748 return emitGEIntAP(I);
23749 case PT_IntAPS:
23750 return emitGEIntAPS(I);
23751 case PT_Bool:
23752 return emitGEBool(I);
23753 case PT_FixedPoint:
23754 return emitGEFixedPoint(I);
23755 case PT_Ptr:
23756 return emitGEPtr(I);
23757 case PT_Float:
23758 return emitGEFloat(I);
23759 default: llvm_unreachable("invalid type: emitGE");
23760 }
23761 llvm_unreachable("invalid enum value");
23762}
23763#endif
23764#ifdef GET_LINK_IMPL
23765bool ByteCodeEmitter::emitGESint8(SourceInfo L) {
23766 return emitOp<>(OP_GESint8, L);
23767}
23768bool ByteCodeEmitter::emitGEUint8(SourceInfo L) {
23769 return emitOp<>(OP_GEUint8, L);
23770}
23771bool ByteCodeEmitter::emitGESint16(SourceInfo L) {
23772 return emitOp<>(OP_GESint16, L);
23773}
23774bool ByteCodeEmitter::emitGEUint16(SourceInfo L) {
23775 return emitOp<>(OP_GEUint16, L);
23776}
23777bool ByteCodeEmitter::emitGESint32(SourceInfo L) {
23778 return emitOp<>(OP_GESint32, L);
23779}
23780bool ByteCodeEmitter::emitGEUint32(SourceInfo L) {
23781 return emitOp<>(OP_GEUint32, L);
23782}
23783bool ByteCodeEmitter::emitGESint64(SourceInfo L) {
23784 return emitOp<>(OP_GESint64, L);
23785}
23786bool ByteCodeEmitter::emitGEUint64(SourceInfo L) {
23787 return emitOp<>(OP_GEUint64, L);
23788}
23789bool ByteCodeEmitter::emitGEIntAP(SourceInfo L) {
23790 return emitOp<>(OP_GEIntAP, L);
23791}
23792bool ByteCodeEmitter::emitGEIntAPS(SourceInfo L) {
23793 return emitOp<>(OP_GEIntAPS, L);
23794}
23795bool ByteCodeEmitter::emitGEBool(SourceInfo L) {
23796 return emitOp<>(OP_GEBool, L);
23797}
23798bool ByteCodeEmitter::emitGEFixedPoint(SourceInfo L) {
23799 return emitOp<>(OP_GEFixedPoint, L);
23800}
23801bool ByteCodeEmitter::emitGEPtr(SourceInfo L) {
23802 return emitOp<>(OP_GEPtr, L);
23803}
23804bool ByteCodeEmitter::emitGEFloat(SourceInfo L) {
23805 return emitOp<>(OP_GEFloat, L);
23806}
23807#endif
23808#ifdef GET_EVAL_IMPL
23809bool EvalEmitter::emitGESint8(SourceInfo L) {
23810 if (!isActive()) return true;
23811 CurrentSource = L;
23812 return GE<PT_Sint8>(S, CodePtr());
23813}
23814bool EvalEmitter::emitGEUint8(SourceInfo L) {
23815 if (!isActive()) return true;
23816 CurrentSource = L;
23817 return GE<PT_Uint8>(S, CodePtr());
23818}
23819bool EvalEmitter::emitGESint16(SourceInfo L) {
23820 if (!isActive()) return true;
23821 CurrentSource = L;
23822 return GE<PT_Sint16>(S, CodePtr());
23823}
23824bool EvalEmitter::emitGEUint16(SourceInfo L) {
23825 if (!isActive()) return true;
23826 CurrentSource = L;
23827 return GE<PT_Uint16>(S, CodePtr());
23828}
23829bool EvalEmitter::emitGESint32(SourceInfo L) {
23830 if (!isActive()) return true;
23831 CurrentSource = L;
23832 return GE<PT_Sint32>(S, CodePtr());
23833}
23834bool EvalEmitter::emitGEUint32(SourceInfo L) {
23835 if (!isActive()) return true;
23836 CurrentSource = L;
23837 return GE<PT_Uint32>(S, CodePtr());
23838}
23839bool EvalEmitter::emitGESint64(SourceInfo L) {
23840 if (!isActive()) return true;
23841 CurrentSource = L;
23842 return GE<PT_Sint64>(S, CodePtr());
23843}
23844bool EvalEmitter::emitGEUint64(SourceInfo L) {
23845 if (!isActive()) return true;
23846 CurrentSource = L;
23847 return GE<PT_Uint64>(S, CodePtr());
23848}
23849bool EvalEmitter::emitGEIntAP(SourceInfo L) {
23850 if (!isActive()) return true;
23851 CurrentSource = L;
23852 return GE<PT_IntAP>(S, CodePtr());
23853}
23854bool EvalEmitter::emitGEIntAPS(SourceInfo L) {
23855 if (!isActive()) return true;
23856 CurrentSource = L;
23857 return GE<PT_IntAPS>(S, CodePtr());
23858}
23859bool EvalEmitter::emitGEBool(SourceInfo L) {
23860 if (!isActive()) return true;
23861 CurrentSource = L;
23862 return GE<PT_Bool>(S, CodePtr());
23863}
23864bool EvalEmitter::emitGEFixedPoint(SourceInfo L) {
23865 if (!isActive()) return true;
23866 CurrentSource = L;
23867 return GE<PT_FixedPoint>(S, CodePtr());
23868}
23869bool EvalEmitter::emitGEPtr(SourceInfo L) {
23870 if (!isActive()) return true;
23871 CurrentSource = L;
23872 return GE<PT_Ptr>(S, CodePtr());
23873}
23874bool EvalEmitter::emitGEFloat(SourceInfo L) {
23875 if (!isActive()) return true;
23876 CurrentSource = L;
23877 return GE<PT_Float>(S, CodePtr());
23878}
23879#endif
23880#ifdef GET_OPCODE_NAMES
23881OP_GTSint8,
23882OP_GTUint8,
23883OP_GTSint16,
23884OP_GTUint16,
23885OP_GTSint32,
23886OP_GTUint32,
23887OP_GTSint64,
23888OP_GTUint64,
23889OP_GTIntAP,
23890OP_GTIntAPS,
23891OP_GTBool,
23892OP_GTFixedPoint,
23893OP_GTPtr,
23894OP_GTFloat,
23895#endif
23896#ifdef GET_INTERPFN_LIST
23897&Interp_GTSint8,
23898&Interp_GTUint8,
23899&Interp_GTSint16,
23900&Interp_GTUint16,
23901&Interp_GTSint32,
23902&Interp_GTUint32,
23903&Interp_GTSint64,
23904&Interp_GTUint64,
23905&Interp_GTIntAP,
23906&Interp_GTIntAPS,
23907&Interp_GTBool,
23908&Interp_GTFixedPoint,
23909&Interp_GTPtr,
23910&Interp_GTFloat,
23911#endif
23912#ifdef GET_INTERPFN_DISPATCHERS
23913PRESERVE_NONE
23914static bool Interp_GTSint8(InterpState &S) {
23915 if (!GT<PT_Sint8>(S, S.PC)) return false;
23916#if USE_TAILCALLS
23917 MUSTTAIL return InterpNext(S);
23918#else
23919 return true;
23920#endif
23921}
23922PRESERVE_NONE
23923static bool Interp_GTUint8(InterpState &S) {
23924 if (!GT<PT_Uint8>(S, S.PC)) return false;
23925#if USE_TAILCALLS
23926 MUSTTAIL return InterpNext(S);
23927#else
23928 return true;
23929#endif
23930}
23931PRESERVE_NONE
23932static bool Interp_GTSint16(InterpState &S) {
23933 if (!GT<PT_Sint16>(S, S.PC)) return false;
23934#if USE_TAILCALLS
23935 MUSTTAIL return InterpNext(S);
23936#else
23937 return true;
23938#endif
23939}
23940PRESERVE_NONE
23941static bool Interp_GTUint16(InterpState &S) {
23942 if (!GT<PT_Uint16>(S, S.PC)) return false;
23943#if USE_TAILCALLS
23944 MUSTTAIL return InterpNext(S);
23945#else
23946 return true;
23947#endif
23948}
23949PRESERVE_NONE
23950static bool Interp_GTSint32(InterpState &S) {
23951 if (!GT<PT_Sint32>(S, S.PC)) return false;
23952#if USE_TAILCALLS
23953 MUSTTAIL return InterpNext(S);
23954#else
23955 return true;
23956#endif
23957}
23958PRESERVE_NONE
23959static bool Interp_GTUint32(InterpState &S) {
23960 if (!GT<PT_Uint32>(S, S.PC)) return false;
23961#if USE_TAILCALLS
23962 MUSTTAIL return InterpNext(S);
23963#else
23964 return true;
23965#endif
23966}
23967PRESERVE_NONE
23968static bool Interp_GTSint64(InterpState &S) {
23969 if (!GT<PT_Sint64>(S, S.PC)) return false;
23970#if USE_TAILCALLS
23971 MUSTTAIL return InterpNext(S);
23972#else
23973 return true;
23974#endif
23975}
23976PRESERVE_NONE
23977static bool Interp_GTUint64(InterpState &S) {
23978 if (!GT<PT_Uint64>(S, S.PC)) return false;
23979#if USE_TAILCALLS
23980 MUSTTAIL return InterpNext(S);
23981#else
23982 return true;
23983#endif
23984}
23985PRESERVE_NONE
23986static bool Interp_GTIntAP(InterpState &S) {
23987 if (!GT<PT_IntAP>(S, S.PC)) return false;
23988#if USE_TAILCALLS
23989 MUSTTAIL return InterpNext(S);
23990#else
23991 return true;
23992#endif
23993}
23994PRESERVE_NONE
23995static bool Interp_GTIntAPS(InterpState &S) {
23996 if (!GT<PT_IntAPS>(S, S.PC)) return false;
23997#if USE_TAILCALLS
23998 MUSTTAIL return InterpNext(S);
23999#else
24000 return true;
24001#endif
24002}
24003PRESERVE_NONE
24004static bool Interp_GTBool(InterpState &S) {
24005 if (!GT<PT_Bool>(S, S.PC)) return false;
24006#if USE_TAILCALLS
24007 MUSTTAIL return InterpNext(S);
24008#else
24009 return true;
24010#endif
24011}
24012PRESERVE_NONE
24013static bool Interp_GTFixedPoint(InterpState &S) {
24014 if (!GT<PT_FixedPoint>(S, S.PC)) return false;
24015#if USE_TAILCALLS
24016 MUSTTAIL return InterpNext(S);
24017#else
24018 return true;
24019#endif
24020}
24021PRESERVE_NONE
24022static bool Interp_GTPtr(InterpState &S) {
24023 if (!GT<PT_Ptr>(S, S.PC)) return false;
24024#if USE_TAILCALLS
24025 MUSTTAIL return InterpNext(S);
24026#else
24027 return true;
24028#endif
24029}
24030PRESERVE_NONE
24031static bool Interp_GTFloat(InterpState &S) {
24032 if (!GT<PT_Float>(S, S.PC)) return false;
24033#if USE_TAILCALLS
24034 MUSTTAIL return InterpNext(S);
24035#else
24036 return true;
24037#endif
24038}
24039#endif
24040#ifdef GET_DISASM
24041case OP_GTSint8:
24042 Text.Op = PrintName("GTSint8");
24043 break;
24044case OP_GTUint8:
24045 Text.Op = PrintName("GTUint8");
24046 break;
24047case OP_GTSint16:
24048 Text.Op = PrintName("GTSint16");
24049 break;
24050case OP_GTUint16:
24051 Text.Op = PrintName("GTUint16");
24052 break;
24053case OP_GTSint32:
24054 Text.Op = PrintName("GTSint32");
24055 break;
24056case OP_GTUint32:
24057 Text.Op = PrintName("GTUint32");
24058 break;
24059case OP_GTSint64:
24060 Text.Op = PrintName("GTSint64");
24061 break;
24062case OP_GTUint64:
24063 Text.Op = PrintName("GTUint64");
24064 break;
24065case OP_GTIntAP:
24066 Text.Op = PrintName("GTIntAP");
24067 break;
24068case OP_GTIntAPS:
24069 Text.Op = PrintName("GTIntAPS");
24070 break;
24071case OP_GTBool:
24072 Text.Op = PrintName("GTBool");
24073 break;
24074case OP_GTFixedPoint:
24075 Text.Op = PrintName("GTFixedPoint");
24076 break;
24077case OP_GTPtr:
24078 Text.Op = PrintName("GTPtr");
24079 break;
24080case OP_GTFloat:
24081 Text.Op = PrintName("GTFloat");
24082 break;
24083#endif
24084#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24085bool emitGTSint8(SourceInfo);
24086bool emitGTUint8(SourceInfo);
24087bool emitGTSint16(SourceInfo);
24088bool emitGTUint16(SourceInfo);
24089bool emitGTSint32(SourceInfo);
24090bool emitGTUint32(SourceInfo);
24091bool emitGTSint64(SourceInfo);
24092bool emitGTUint64(SourceInfo);
24093bool emitGTIntAP(SourceInfo);
24094bool emitGTIntAPS(SourceInfo);
24095bool emitGTBool(SourceInfo);
24096bool emitGTFixedPoint(SourceInfo);
24097bool emitGTPtr(SourceInfo);
24098bool emitGTFloat(SourceInfo);
24099#endif
24100#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24101[[nodiscard]] bool emitGT(PrimType, SourceInfo I);
24102#endif
24103#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
24104bool
24105#if defined(GET_EVAL_IMPL)
24106EvalEmitter
24107#else
24108ByteCodeEmitter
24109#endif
24110::emitGT(PrimType T0, SourceInfo I) {
24111 switch (T0) {
24112 case PT_Sint8:
24113 return emitGTSint8(I);
24114 case PT_Uint8:
24115 return emitGTUint8(I);
24116 case PT_Sint16:
24117 return emitGTSint16(I);
24118 case PT_Uint16:
24119 return emitGTUint16(I);
24120 case PT_Sint32:
24121 return emitGTSint32(I);
24122 case PT_Uint32:
24123 return emitGTUint32(I);
24124 case PT_Sint64:
24125 return emitGTSint64(I);
24126 case PT_Uint64:
24127 return emitGTUint64(I);
24128 case PT_IntAP:
24129 return emitGTIntAP(I);
24130 case PT_IntAPS:
24131 return emitGTIntAPS(I);
24132 case PT_Bool:
24133 return emitGTBool(I);
24134 case PT_FixedPoint:
24135 return emitGTFixedPoint(I);
24136 case PT_Ptr:
24137 return emitGTPtr(I);
24138 case PT_Float:
24139 return emitGTFloat(I);
24140 default: llvm_unreachable("invalid type: emitGT");
24141 }
24142 llvm_unreachable("invalid enum value");
24143}
24144#endif
24145#ifdef GET_LINK_IMPL
24146bool ByteCodeEmitter::emitGTSint8(SourceInfo L) {
24147 return emitOp<>(OP_GTSint8, L);
24148}
24149bool ByteCodeEmitter::emitGTUint8(SourceInfo L) {
24150 return emitOp<>(OP_GTUint8, L);
24151}
24152bool ByteCodeEmitter::emitGTSint16(SourceInfo L) {
24153 return emitOp<>(OP_GTSint16, L);
24154}
24155bool ByteCodeEmitter::emitGTUint16(SourceInfo L) {
24156 return emitOp<>(OP_GTUint16, L);
24157}
24158bool ByteCodeEmitter::emitGTSint32(SourceInfo L) {
24159 return emitOp<>(OP_GTSint32, L);
24160}
24161bool ByteCodeEmitter::emitGTUint32(SourceInfo L) {
24162 return emitOp<>(OP_GTUint32, L);
24163}
24164bool ByteCodeEmitter::emitGTSint64(SourceInfo L) {
24165 return emitOp<>(OP_GTSint64, L);
24166}
24167bool ByteCodeEmitter::emitGTUint64(SourceInfo L) {
24168 return emitOp<>(OP_GTUint64, L);
24169}
24170bool ByteCodeEmitter::emitGTIntAP(SourceInfo L) {
24171 return emitOp<>(OP_GTIntAP, L);
24172}
24173bool ByteCodeEmitter::emitGTIntAPS(SourceInfo L) {
24174 return emitOp<>(OP_GTIntAPS, L);
24175}
24176bool ByteCodeEmitter::emitGTBool(SourceInfo L) {
24177 return emitOp<>(OP_GTBool, L);
24178}
24179bool ByteCodeEmitter::emitGTFixedPoint(SourceInfo L) {
24180 return emitOp<>(OP_GTFixedPoint, L);
24181}
24182bool ByteCodeEmitter::emitGTPtr(SourceInfo L) {
24183 return emitOp<>(OP_GTPtr, L);
24184}
24185bool ByteCodeEmitter::emitGTFloat(SourceInfo L) {
24186 return emitOp<>(OP_GTFloat, L);
24187}
24188#endif
24189#ifdef GET_EVAL_IMPL
24190bool EvalEmitter::emitGTSint8(SourceInfo L) {
24191 if (!isActive()) return true;
24192 CurrentSource = L;
24193 return GT<PT_Sint8>(S, CodePtr());
24194}
24195bool EvalEmitter::emitGTUint8(SourceInfo L) {
24196 if (!isActive()) return true;
24197 CurrentSource = L;
24198 return GT<PT_Uint8>(S, CodePtr());
24199}
24200bool EvalEmitter::emitGTSint16(SourceInfo L) {
24201 if (!isActive()) return true;
24202 CurrentSource = L;
24203 return GT<PT_Sint16>(S, CodePtr());
24204}
24205bool EvalEmitter::emitGTUint16(SourceInfo L) {
24206 if (!isActive()) return true;
24207 CurrentSource = L;
24208 return GT<PT_Uint16>(S, CodePtr());
24209}
24210bool EvalEmitter::emitGTSint32(SourceInfo L) {
24211 if (!isActive()) return true;
24212 CurrentSource = L;
24213 return GT<PT_Sint32>(S, CodePtr());
24214}
24215bool EvalEmitter::emitGTUint32(SourceInfo L) {
24216 if (!isActive()) return true;
24217 CurrentSource = L;
24218 return GT<PT_Uint32>(S, CodePtr());
24219}
24220bool EvalEmitter::emitGTSint64(SourceInfo L) {
24221 if (!isActive()) return true;
24222 CurrentSource = L;
24223 return GT<PT_Sint64>(S, CodePtr());
24224}
24225bool EvalEmitter::emitGTUint64(SourceInfo L) {
24226 if (!isActive()) return true;
24227 CurrentSource = L;
24228 return GT<PT_Uint64>(S, CodePtr());
24229}
24230bool EvalEmitter::emitGTIntAP(SourceInfo L) {
24231 if (!isActive()) return true;
24232 CurrentSource = L;
24233 return GT<PT_IntAP>(S, CodePtr());
24234}
24235bool EvalEmitter::emitGTIntAPS(SourceInfo L) {
24236 if (!isActive()) return true;
24237 CurrentSource = L;
24238 return GT<PT_IntAPS>(S, CodePtr());
24239}
24240bool EvalEmitter::emitGTBool(SourceInfo L) {
24241 if (!isActive()) return true;
24242 CurrentSource = L;
24243 return GT<PT_Bool>(S, CodePtr());
24244}
24245bool EvalEmitter::emitGTFixedPoint(SourceInfo L) {
24246 if (!isActive()) return true;
24247 CurrentSource = L;
24248 return GT<PT_FixedPoint>(S, CodePtr());
24249}
24250bool EvalEmitter::emitGTPtr(SourceInfo L) {
24251 if (!isActive()) return true;
24252 CurrentSource = L;
24253 return GT<PT_Ptr>(S, CodePtr());
24254}
24255bool EvalEmitter::emitGTFloat(SourceInfo L) {
24256 if (!isActive()) return true;
24257 CurrentSource = L;
24258 return GT<PT_Float>(S, CodePtr());
24259}
24260#endif
24261#ifdef GET_OPCODE_NAMES
24262OP_GetFieldSint8,
24263OP_GetFieldUint8,
24264OP_GetFieldSint16,
24265OP_GetFieldUint16,
24266OP_GetFieldSint32,
24267OP_GetFieldUint32,
24268OP_GetFieldSint64,
24269OP_GetFieldUint64,
24270OP_GetFieldIntAP,
24271OP_GetFieldIntAPS,
24272OP_GetFieldBool,
24273OP_GetFieldFixedPoint,
24274OP_GetFieldPtr,
24275OP_GetFieldMemberPtr,
24276OP_GetFieldFloat,
24277#endif
24278#ifdef GET_INTERPFN_LIST
24279&Interp_GetFieldSint8,
24280&Interp_GetFieldUint8,
24281&Interp_GetFieldSint16,
24282&Interp_GetFieldUint16,
24283&Interp_GetFieldSint32,
24284&Interp_GetFieldUint32,
24285&Interp_GetFieldSint64,
24286&Interp_GetFieldUint64,
24287&Interp_GetFieldIntAP,
24288&Interp_GetFieldIntAPS,
24289&Interp_GetFieldBool,
24290&Interp_GetFieldFixedPoint,
24291&Interp_GetFieldPtr,
24292&Interp_GetFieldMemberPtr,
24293&Interp_GetFieldFloat,
24294#endif
24295#ifdef GET_INTERPFN_DISPATCHERS
24296PRESERVE_NONE
24297static bool Interp_GetFieldSint8(InterpState &S) {
24298 {
24299 CodePtr OpPC = S.PC;
24300 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24301 if (!GetField<PT_Sint8>(S, OpPC, V0)) return false;
24302 }
24303#if USE_TAILCALLS
24304 MUSTTAIL return InterpNext(S);
24305#else
24306 return true;
24307#endif
24308}
24309PRESERVE_NONE
24310static bool Interp_GetFieldUint8(InterpState &S) {
24311 {
24312 CodePtr OpPC = S.PC;
24313 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24314 if (!GetField<PT_Uint8>(S, OpPC, V0)) return false;
24315 }
24316#if USE_TAILCALLS
24317 MUSTTAIL return InterpNext(S);
24318#else
24319 return true;
24320#endif
24321}
24322PRESERVE_NONE
24323static bool Interp_GetFieldSint16(InterpState &S) {
24324 {
24325 CodePtr OpPC = S.PC;
24326 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24327 if (!GetField<PT_Sint16>(S, OpPC, V0)) return false;
24328 }
24329#if USE_TAILCALLS
24330 MUSTTAIL return InterpNext(S);
24331#else
24332 return true;
24333#endif
24334}
24335PRESERVE_NONE
24336static bool Interp_GetFieldUint16(InterpState &S) {
24337 {
24338 CodePtr OpPC = S.PC;
24339 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24340 if (!GetField<PT_Uint16>(S, OpPC, V0)) return false;
24341 }
24342#if USE_TAILCALLS
24343 MUSTTAIL return InterpNext(S);
24344#else
24345 return true;
24346#endif
24347}
24348PRESERVE_NONE
24349static bool Interp_GetFieldSint32(InterpState &S) {
24350 {
24351 CodePtr OpPC = S.PC;
24352 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24353 if (!GetField<PT_Sint32>(S, OpPC, V0)) return false;
24354 }
24355#if USE_TAILCALLS
24356 MUSTTAIL return InterpNext(S);
24357#else
24358 return true;
24359#endif
24360}
24361PRESERVE_NONE
24362static bool Interp_GetFieldUint32(InterpState &S) {
24363 {
24364 CodePtr OpPC = S.PC;
24365 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24366 if (!GetField<PT_Uint32>(S, OpPC, V0)) return false;
24367 }
24368#if USE_TAILCALLS
24369 MUSTTAIL return InterpNext(S);
24370#else
24371 return true;
24372#endif
24373}
24374PRESERVE_NONE
24375static bool Interp_GetFieldSint64(InterpState &S) {
24376 {
24377 CodePtr OpPC = S.PC;
24378 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24379 if (!GetField<PT_Sint64>(S, OpPC, V0)) return false;
24380 }
24381#if USE_TAILCALLS
24382 MUSTTAIL return InterpNext(S);
24383#else
24384 return true;
24385#endif
24386}
24387PRESERVE_NONE
24388static bool Interp_GetFieldUint64(InterpState &S) {
24389 {
24390 CodePtr OpPC = S.PC;
24391 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24392 if (!GetField<PT_Uint64>(S, OpPC, V0)) return false;
24393 }
24394#if USE_TAILCALLS
24395 MUSTTAIL return InterpNext(S);
24396#else
24397 return true;
24398#endif
24399}
24400PRESERVE_NONE
24401static bool Interp_GetFieldIntAP(InterpState &S) {
24402 {
24403 CodePtr OpPC = S.PC;
24404 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24405 if (!GetField<PT_IntAP>(S, OpPC, V0)) return false;
24406 }
24407#if USE_TAILCALLS
24408 MUSTTAIL return InterpNext(S);
24409#else
24410 return true;
24411#endif
24412}
24413PRESERVE_NONE
24414static bool Interp_GetFieldIntAPS(InterpState &S) {
24415 {
24416 CodePtr OpPC = S.PC;
24417 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24418 if (!GetField<PT_IntAPS>(S, OpPC, V0)) return false;
24419 }
24420#if USE_TAILCALLS
24421 MUSTTAIL return InterpNext(S);
24422#else
24423 return true;
24424#endif
24425}
24426PRESERVE_NONE
24427static bool Interp_GetFieldBool(InterpState &S) {
24428 {
24429 CodePtr OpPC = S.PC;
24430 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24431 if (!GetField<PT_Bool>(S, OpPC, V0)) return false;
24432 }
24433#if USE_TAILCALLS
24434 MUSTTAIL return InterpNext(S);
24435#else
24436 return true;
24437#endif
24438}
24439PRESERVE_NONE
24440static bool Interp_GetFieldFixedPoint(InterpState &S) {
24441 {
24442 CodePtr OpPC = S.PC;
24443 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24444 if (!GetField<PT_FixedPoint>(S, OpPC, V0)) return false;
24445 }
24446#if USE_TAILCALLS
24447 MUSTTAIL return InterpNext(S);
24448#else
24449 return true;
24450#endif
24451}
24452PRESERVE_NONE
24453static bool Interp_GetFieldPtr(InterpState &S) {
24454 {
24455 CodePtr OpPC = S.PC;
24456 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24457 if (!GetField<PT_Ptr>(S, OpPC, V0)) return false;
24458 }
24459#if USE_TAILCALLS
24460 MUSTTAIL return InterpNext(S);
24461#else
24462 return true;
24463#endif
24464}
24465PRESERVE_NONE
24466static bool Interp_GetFieldMemberPtr(InterpState &S) {
24467 {
24468 CodePtr OpPC = S.PC;
24469 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24470 if (!GetField<PT_MemberPtr>(S, OpPC, V0)) return false;
24471 }
24472#if USE_TAILCALLS
24473 MUSTTAIL return InterpNext(S);
24474#else
24475 return true;
24476#endif
24477}
24478PRESERVE_NONE
24479static bool Interp_GetFieldFloat(InterpState &S) {
24480 {
24481 CodePtr OpPC = S.PC;
24482 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24483 if (!GetField<PT_Float>(S, OpPC, V0)) return false;
24484 }
24485#if USE_TAILCALLS
24486 MUSTTAIL return InterpNext(S);
24487#else
24488 return true;
24489#endif
24490}
24491#endif
24492#ifdef GET_DISASM
24493case OP_GetFieldSint8:
24494 Text.Op = PrintName("GetFieldSint8");
24495 Text.Args.push_back(printArg<uint32_t>(PC));
24496 break;
24497case OP_GetFieldUint8:
24498 Text.Op = PrintName("GetFieldUint8");
24499 Text.Args.push_back(printArg<uint32_t>(PC));
24500 break;
24501case OP_GetFieldSint16:
24502 Text.Op = PrintName("GetFieldSint16");
24503 Text.Args.push_back(printArg<uint32_t>(PC));
24504 break;
24505case OP_GetFieldUint16:
24506 Text.Op = PrintName("GetFieldUint16");
24507 Text.Args.push_back(printArg<uint32_t>(PC));
24508 break;
24509case OP_GetFieldSint32:
24510 Text.Op = PrintName("GetFieldSint32");
24511 Text.Args.push_back(printArg<uint32_t>(PC));
24512 break;
24513case OP_GetFieldUint32:
24514 Text.Op = PrintName("GetFieldUint32");
24515 Text.Args.push_back(printArg<uint32_t>(PC));
24516 break;
24517case OP_GetFieldSint64:
24518 Text.Op = PrintName("GetFieldSint64");
24519 Text.Args.push_back(printArg<uint32_t>(PC));
24520 break;
24521case OP_GetFieldUint64:
24522 Text.Op = PrintName("GetFieldUint64");
24523 Text.Args.push_back(printArg<uint32_t>(PC));
24524 break;
24525case OP_GetFieldIntAP:
24526 Text.Op = PrintName("GetFieldIntAP");
24527 Text.Args.push_back(printArg<uint32_t>(PC));
24528 break;
24529case OP_GetFieldIntAPS:
24530 Text.Op = PrintName("GetFieldIntAPS");
24531 Text.Args.push_back(printArg<uint32_t>(PC));
24532 break;
24533case OP_GetFieldBool:
24534 Text.Op = PrintName("GetFieldBool");
24535 Text.Args.push_back(printArg<uint32_t>(PC));
24536 break;
24537case OP_GetFieldFixedPoint:
24538 Text.Op = PrintName("GetFieldFixedPoint");
24539 Text.Args.push_back(printArg<uint32_t>(PC));
24540 break;
24541case OP_GetFieldPtr:
24542 Text.Op = PrintName("GetFieldPtr");
24543 Text.Args.push_back(printArg<uint32_t>(PC));
24544 break;
24545case OP_GetFieldMemberPtr:
24546 Text.Op = PrintName("GetFieldMemberPtr");
24547 Text.Args.push_back(printArg<uint32_t>(PC));
24548 break;
24549case OP_GetFieldFloat:
24550 Text.Op = PrintName("GetFieldFloat");
24551 Text.Args.push_back(printArg<uint32_t>(PC));
24552 break;
24553#endif
24554#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24555bool emitGetFieldSint8( uint32_t , SourceInfo);
24556bool emitGetFieldUint8( uint32_t , SourceInfo);
24557bool emitGetFieldSint16( uint32_t , SourceInfo);
24558bool emitGetFieldUint16( uint32_t , SourceInfo);
24559bool emitGetFieldSint32( uint32_t , SourceInfo);
24560bool emitGetFieldUint32( uint32_t , SourceInfo);
24561bool emitGetFieldSint64( uint32_t , SourceInfo);
24562bool emitGetFieldUint64( uint32_t , SourceInfo);
24563bool emitGetFieldIntAP( uint32_t , SourceInfo);
24564bool emitGetFieldIntAPS( uint32_t , SourceInfo);
24565bool emitGetFieldBool( uint32_t , SourceInfo);
24566bool emitGetFieldFixedPoint( uint32_t , SourceInfo);
24567bool emitGetFieldPtr( uint32_t , SourceInfo);
24568bool emitGetFieldMemberPtr( uint32_t , SourceInfo);
24569bool emitGetFieldFloat( uint32_t , SourceInfo);
24570#endif
24571#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24572[[nodiscard]] bool emitGetField(PrimType, uint32_t, SourceInfo I);
24573#endif
24574#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
24575bool
24576#if defined(GET_EVAL_IMPL)
24577EvalEmitter
24578#else
24579ByteCodeEmitter
24580#endif
24581::emitGetField(PrimType T0, uint32_t A0, SourceInfo I) {
24582 switch (T0) {
24583 case PT_Sint8:
24584 return emitGetFieldSint8(A0, I);
24585 case PT_Uint8:
24586 return emitGetFieldUint8(A0, I);
24587 case PT_Sint16:
24588 return emitGetFieldSint16(A0, I);
24589 case PT_Uint16:
24590 return emitGetFieldUint16(A0, I);
24591 case PT_Sint32:
24592 return emitGetFieldSint32(A0, I);
24593 case PT_Uint32:
24594 return emitGetFieldUint32(A0, I);
24595 case PT_Sint64:
24596 return emitGetFieldSint64(A0, I);
24597 case PT_Uint64:
24598 return emitGetFieldUint64(A0, I);
24599 case PT_IntAP:
24600 return emitGetFieldIntAP(A0, I);
24601 case PT_IntAPS:
24602 return emitGetFieldIntAPS(A0, I);
24603 case PT_Bool:
24604 return emitGetFieldBool(A0, I);
24605 case PT_FixedPoint:
24606 return emitGetFieldFixedPoint(A0, I);
24607 case PT_Ptr:
24608 return emitGetFieldPtr(A0, I);
24609 case PT_MemberPtr:
24610 return emitGetFieldMemberPtr(A0, I);
24611 case PT_Float:
24612 return emitGetFieldFloat(A0, I);
24613 }
24614 llvm_unreachable("invalid enum value");
24615}
24616#endif
24617#ifdef GET_LINK_IMPL
24618bool ByteCodeEmitter::emitGetFieldSint8( uint32_t A0, SourceInfo L) {
24619 return emitOp<uint32_t>(OP_GetFieldSint8, A0, L);
24620}
24621bool ByteCodeEmitter::emitGetFieldUint8( uint32_t A0, SourceInfo L) {
24622 return emitOp<uint32_t>(OP_GetFieldUint8, A0, L);
24623}
24624bool ByteCodeEmitter::emitGetFieldSint16( uint32_t A0, SourceInfo L) {
24625 return emitOp<uint32_t>(OP_GetFieldSint16, A0, L);
24626}
24627bool ByteCodeEmitter::emitGetFieldUint16( uint32_t A0, SourceInfo L) {
24628 return emitOp<uint32_t>(OP_GetFieldUint16, A0, L);
24629}
24630bool ByteCodeEmitter::emitGetFieldSint32( uint32_t A0, SourceInfo L) {
24631 return emitOp<uint32_t>(OP_GetFieldSint32, A0, L);
24632}
24633bool ByteCodeEmitter::emitGetFieldUint32( uint32_t A0, SourceInfo L) {
24634 return emitOp<uint32_t>(OP_GetFieldUint32, A0, L);
24635}
24636bool ByteCodeEmitter::emitGetFieldSint64( uint32_t A0, SourceInfo L) {
24637 return emitOp<uint32_t>(OP_GetFieldSint64, A0, L);
24638}
24639bool ByteCodeEmitter::emitGetFieldUint64( uint32_t A0, SourceInfo L) {
24640 return emitOp<uint32_t>(OP_GetFieldUint64, A0, L);
24641}
24642bool ByteCodeEmitter::emitGetFieldIntAP( uint32_t A0, SourceInfo L) {
24643 return emitOp<uint32_t>(OP_GetFieldIntAP, A0, L);
24644}
24645bool ByteCodeEmitter::emitGetFieldIntAPS( uint32_t A0, SourceInfo L) {
24646 return emitOp<uint32_t>(OP_GetFieldIntAPS, A0, L);
24647}
24648bool ByteCodeEmitter::emitGetFieldBool( uint32_t A0, SourceInfo L) {
24649 return emitOp<uint32_t>(OP_GetFieldBool, A0, L);
24650}
24651bool ByteCodeEmitter::emitGetFieldFixedPoint( uint32_t A0, SourceInfo L) {
24652 return emitOp<uint32_t>(OP_GetFieldFixedPoint, A0, L);
24653}
24654bool ByteCodeEmitter::emitGetFieldPtr( uint32_t A0, SourceInfo L) {
24655 return emitOp<uint32_t>(OP_GetFieldPtr, A0, L);
24656}
24657bool ByteCodeEmitter::emitGetFieldMemberPtr( uint32_t A0, SourceInfo L) {
24658 return emitOp<uint32_t>(OP_GetFieldMemberPtr, A0, L);
24659}
24660bool ByteCodeEmitter::emitGetFieldFloat( uint32_t A0, SourceInfo L) {
24661 return emitOp<uint32_t>(OP_GetFieldFloat, A0, L);
24662}
24663#endif
24664#ifdef GET_EVAL_IMPL
24665bool EvalEmitter::emitGetFieldSint8( uint32_t A0, SourceInfo L) {
24666 if (!isActive()) return true;
24667 CurrentSource = L;
24668 return GetField<PT_Sint8>(S, CodePtr(), A0);
24669}
24670bool EvalEmitter::emitGetFieldUint8( uint32_t A0, SourceInfo L) {
24671 if (!isActive()) return true;
24672 CurrentSource = L;
24673 return GetField<PT_Uint8>(S, CodePtr(), A0);
24674}
24675bool EvalEmitter::emitGetFieldSint16( uint32_t A0, SourceInfo L) {
24676 if (!isActive()) return true;
24677 CurrentSource = L;
24678 return GetField<PT_Sint16>(S, CodePtr(), A0);
24679}
24680bool EvalEmitter::emitGetFieldUint16( uint32_t A0, SourceInfo L) {
24681 if (!isActive()) return true;
24682 CurrentSource = L;
24683 return GetField<PT_Uint16>(S, CodePtr(), A0);
24684}
24685bool EvalEmitter::emitGetFieldSint32( uint32_t A0, SourceInfo L) {
24686 if (!isActive()) return true;
24687 CurrentSource = L;
24688 return GetField<PT_Sint32>(S, CodePtr(), A0);
24689}
24690bool EvalEmitter::emitGetFieldUint32( uint32_t A0, SourceInfo L) {
24691 if (!isActive()) return true;
24692 CurrentSource = L;
24693 return GetField<PT_Uint32>(S, CodePtr(), A0);
24694}
24695bool EvalEmitter::emitGetFieldSint64( uint32_t A0, SourceInfo L) {
24696 if (!isActive()) return true;
24697 CurrentSource = L;
24698 return GetField<PT_Sint64>(S, CodePtr(), A0);
24699}
24700bool EvalEmitter::emitGetFieldUint64( uint32_t A0, SourceInfo L) {
24701 if (!isActive()) return true;
24702 CurrentSource = L;
24703 return GetField<PT_Uint64>(S, CodePtr(), A0);
24704}
24705bool EvalEmitter::emitGetFieldIntAP( uint32_t A0, SourceInfo L) {
24706 if (!isActive()) return true;
24707 CurrentSource = L;
24708 return GetField<PT_IntAP>(S, CodePtr(), A0);
24709}
24710bool EvalEmitter::emitGetFieldIntAPS( uint32_t A0, SourceInfo L) {
24711 if (!isActive()) return true;
24712 CurrentSource = L;
24713 return GetField<PT_IntAPS>(S, CodePtr(), A0);
24714}
24715bool EvalEmitter::emitGetFieldBool( uint32_t A0, SourceInfo L) {
24716 if (!isActive()) return true;
24717 CurrentSource = L;
24718 return GetField<PT_Bool>(S, CodePtr(), A0);
24719}
24720bool EvalEmitter::emitGetFieldFixedPoint( uint32_t A0, SourceInfo L) {
24721 if (!isActive()) return true;
24722 CurrentSource = L;
24723 return GetField<PT_FixedPoint>(S, CodePtr(), A0);
24724}
24725bool EvalEmitter::emitGetFieldPtr( uint32_t A0, SourceInfo L) {
24726 if (!isActive()) return true;
24727 CurrentSource = L;
24728 return GetField<PT_Ptr>(S, CodePtr(), A0);
24729}
24730bool EvalEmitter::emitGetFieldMemberPtr( uint32_t A0, SourceInfo L) {
24731 if (!isActive()) return true;
24732 CurrentSource = L;
24733 return GetField<PT_MemberPtr>(S, CodePtr(), A0);
24734}
24735bool EvalEmitter::emitGetFieldFloat( uint32_t A0, SourceInfo L) {
24736 if (!isActive()) return true;
24737 CurrentSource = L;
24738 return GetField<PT_Float>(S, CodePtr(), A0);
24739}
24740#endif
24741#ifdef GET_OPCODE_NAMES
24742OP_GetFieldPopSint8,
24743OP_GetFieldPopUint8,
24744OP_GetFieldPopSint16,
24745OP_GetFieldPopUint16,
24746OP_GetFieldPopSint32,
24747OP_GetFieldPopUint32,
24748OP_GetFieldPopSint64,
24749OP_GetFieldPopUint64,
24750OP_GetFieldPopIntAP,
24751OP_GetFieldPopIntAPS,
24752OP_GetFieldPopBool,
24753OP_GetFieldPopFixedPoint,
24754OP_GetFieldPopPtr,
24755OP_GetFieldPopMemberPtr,
24756OP_GetFieldPopFloat,
24757#endif
24758#ifdef GET_INTERPFN_LIST
24759&Interp_GetFieldPopSint8,
24760&Interp_GetFieldPopUint8,
24761&Interp_GetFieldPopSint16,
24762&Interp_GetFieldPopUint16,
24763&Interp_GetFieldPopSint32,
24764&Interp_GetFieldPopUint32,
24765&Interp_GetFieldPopSint64,
24766&Interp_GetFieldPopUint64,
24767&Interp_GetFieldPopIntAP,
24768&Interp_GetFieldPopIntAPS,
24769&Interp_GetFieldPopBool,
24770&Interp_GetFieldPopFixedPoint,
24771&Interp_GetFieldPopPtr,
24772&Interp_GetFieldPopMemberPtr,
24773&Interp_GetFieldPopFloat,
24774#endif
24775#ifdef GET_INTERPFN_DISPATCHERS
24776PRESERVE_NONE
24777static bool Interp_GetFieldPopSint8(InterpState &S) {
24778 {
24779 CodePtr OpPC = S.PC;
24780 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24781 if (!GetFieldPop<PT_Sint8>(S, OpPC, V0)) return false;
24782 }
24783#if USE_TAILCALLS
24784 MUSTTAIL return InterpNext(S);
24785#else
24786 return true;
24787#endif
24788}
24789PRESERVE_NONE
24790static bool Interp_GetFieldPopUint8(InterpState &S) {
24791 {
24792 CodePtr OpPC = S.PC;
24793 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24794 if (!GetFieldPop<PT_Uint8>(S, OpPC, V0)) return false;
24795 }
24796#if USE_TAILCALLS
24797 MUSTTAIL return InterpNext(S);
24798#else
24799 return true;
24800#endif
24801}
24802PRESERVE_NONE
24803static bool Interp_GetFieldPopSint16(InterpState &S) {
24804 {
24805 CodePtr OpPC = S.PC;
24806 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24807 if (!GetFieldPop<PT_Sint16>(S, OpPC, V0)) return false;
24808 }
24809#if USE_TAILCALLS
24810 MUSTTAIL return InterpNext(S);
24811#else
24812 return true;
24813#endif
24814}
24815PRESERVE_NONE
24816static bool Interp_GetFieldPopUint16(InterpState &S) {
24817 {
24818 CodePtr OpPC = S.PC;
24819 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24820 if (!GetFieldPop<PT_Uint16>(S, OpPC, V0)) return false;
24821 }
24822#if USE_TAILCALLS
24823 MUSTTAIL return InterpNext(S);
24824#else
24825 return true;
24826#endif
24827}
24828PRESERVE_NONE
24829static bool Interp_GetFieldPopSint32(InterpState &S) {
24830 {
24831 CodePtr OpPC = S.PC;
24832 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24833 if (!GetFieldPop<PT_Sint32>(S, OpPC, V0)) return false;
24834 }
24835#if USE_TAILCALLS
24836 MUSTTAIL return InterpNext(S);
24837#else
24838 return true;
24839#endif
24840}
24841PRESERVE_NONE
24842static bool Interp_GetFieldPopUint32(InterpState &S) {
24843 {
24844 CodePtr OpPC = S.PC;
24845 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24846 if (!GetFieldPop<PT_Uint32>(S, OpPC, V0)) return false;
24847 }
24848#if USE_TAILCALLS
24849 MUSTTAIL return InterpNext(S);
24850#else
24851 return true;
24852#endif
24853}
24854PRESERVE_NONE
24855static bool Interp_GetFieldPopSint64(InterpState &S) {
24856 {
24857 CodePtr OpPC = S.PC;
24858 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24859 if (!GetFieldPop<PT_Sint64>(S, OpPC, V0)) return false;
24860 }
24861#if USE_TAILCALLS
24862 MUSTTAIL return InterpNext(S);
24863#else
24864 return true;
24865#endif
24866}
24867PRESERVE_NONE
24868static bool Interp_GetFieldPopUint64(InterpState &S) {
24869 {
24870 CodePtr OpPC = S.PC;
24871 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24872 if (!GetFieldPop<PT_Uint64>(S, OpPC, V0)) return false;
24873 }
24874#if USE_TAILCALLS
24875 MUSTTAIL return InterpNext(S);
24876#else
24877 return true;
24878#endif
24879}
24880PRESERVE_NONE
24881static bool Interp_GetFieldPopIntAP(InterpState &S) {
24882 {
24883 CodePtr OpPC = S.PC;
24884 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24885 if (!GetFieldPop<PT_IntAP>(S, OpPC, V0)) return false;
24886 }
24887#if USE_TAILCALLS
24888 MUSTTAIL return InterpNext(S);
24889#else
24890 return true;
24891#endif
24892}
24893PRESERVE_NONE
24894static bool Interp_GetFieldPopIntAPS(InterpState &S) {
24895 {
24896 CodePtr OpPC = S.PC;
24897 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24898 if (!GetFieldPop<PT_IntAPS>(S, OpPC, V0)) return false;
24899 }
24900#if USE_TAILCALLS
24901 MUSTTAIL return InterpNext(S);
24902#else
24903 return true;
24904#endif
24905}
24906PRESERVE_NONE
24907static bool Interp_GetFieldPopBool(InterpState &S) {
24908 {
24909 CodePtr OpPC = S.PC;
24910 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24911 if (!GetFieldPop<PT_Bool>(S, OpPC, V0)) return false;
24912 }
24913#if USE_TAILCALLS
24914 MUSTTAIL return InterpNext(S);
24915#else
24916 return true;
24917#endif
24918}
24919PRESERVE_NONE
24920static bool Interp_GetFieldPopFixedPoint(InterpState &S) {
24921 {
24922 CodePtr OpPC = S.PC;
24923 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24924 if (!GetFieldPop<PT_FixedPoint>(S, OpPC, V0)) return false;
24925 }
24926#if USE_TAILCALLS
24927 MUSTTAIL return InterpNext(S);
24928#else
24929 return true;
24930#endif
24931}
24932PRESERVE_NONE
24933static bool Interp_GetFieldPopPtr(InterpState &S) {
24934 {
24935 CodePtr OpPC = S.PC;
24936 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24937 if (!GetFieldPop<PT_Ptr>(S, OpPC, V0)) return false;
24938 }
24939#if USE_TAILCALLS
24940 MUSTTAIL return InterpNext(S);
24941#else
24942 return true;
24943#endif
24944}
24945PRESERVE_NONE
24946static bool Interp_GetFieldPopMemberPtr(InterpState &S) {
24947 {
24948 CodePtr OpPC = S.PC;
24949 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24950 if (!GetFieldPop<PT_MemberPtr>(S, OpPC, V0)) return false;
24951 }
24952#if USE_TAILCALLS
24953 MUSTTAIL return InterpNext(S);
24954#else
24955 return true;
24956#endif
24957}
24958PRESERVE_NONE
24959static bool Interp_GetFieldPopFloat(InterpState &S) {
24960 {
24961 CodePtr OpPC = S.PC;
24962 const auto V0 = ReadArg<uint32_t>(S, S.PC);
24963 if (!GetFieldPop<PT_Float>(S, OpPC, V0)) return false;
24964 }
24965#if USE_TAILCALLS
24966 MUSTTAIL return InterpNext(S);
24967#else
24968 return true;
24969#endif
24970}
24971#endif
24972#ifdef GET_DISASM
24973case OP_GetFieldPopSint8:
24974 Text.Op = PrintName("GetFieldPopSint8");
24975 Text.Args.push_back(printArg<uint32_t>(PC));
24976 break;
24977case OP_GetFieldPopUint8:
24978 Text.Op = PrintName("GetFieldPopUint8");
24979 Text.Args.push_back(printArg<uint32_t>(PC));
24980 break;
24981case OP_GetFieldPopSint16:
24982 Text.Op = PrintName("GetFieldPopSint16");
24983 Text.Args.push_back(printArg<uint32_t>(PC));
24984 break;
24985case OP_GetFieldPopUint16:
24986 Text.Op = PrintName("GetFieldPopUint16");
24987 Text.Args.push_back(printArg<uint32_t>(PC));
24988 break;
24989case OP_GetFieldPopSint32:
24990 Text.Op = PrintName("GetFieldPopSint32");
24991 Text.Args.push_back(printArg<uint32_t>(PC));
24992 break;
24993case OP_GetFieldPopUint32:
24994 Text.Op = PrintName("GetFieldPopUint32");
24995 Text.Args.push_back(printArg<uint32_t>(PC));
24996 break;
24997case OP_GetFieldPopSint64:
24998 Text.Op = PrintName("GetFieldPopSint64");
24999 Text.Args.push_back(printArg<uint32_t>(PC));
25000 break;
25001case OP_GetFieldPopUint64:
25002 Text.Op = PrintName("GetFieldPopUint64");
25003 Text.Args.push_back(printArg<uint32_t>(PC));
25004 break;
25005case OP_GetFieldPopIntAP:
25006 Text.Op = PrintName("GetFieldPopIntAP");
25007 Text.Args.push_back(printArg<uint32_t>(PC));
25008 break;
25009case OP_GetFieldPopIntAPS:
25010 Text.Op = PrintName("GetFieldPopIntAPS");
25011 Text.Args.push_back(printArg<uint32_t>(PC));
25012 break;
25013case OP_GetFieldPopBool:
25014 Text.Op = PrintName("GetFieldPopBool");
25015 Text.Args.push_back(printArg<uint32_t>(PC));
25016 break;
25017case OP_GetFieldPopFixedPoint:
25018 Text.Op = PrintName("GetFieldPopFixedPoint");
25019 Text.Args.push_back(printArg<uint32_t>(PC));
25020 break;
25021case OP_GetFieldPopPtr:
25022 Text.Op = PrintName("GetFieldPopPtr");
25023 Text.Args.push_back(printArg<uint32_t>(PC));
25024 break;
25025case OP_GetFieldPopMemberPtr:
25026 Text.Op = PrintName("GetFieldPopMemberPtr");
25027 Text.Args.push_back(printArg<uint32_t>(PC));
25028 break;
25029case OP_GetFieldPopFloat:
25030 Text.Op = PrintName("GetFieldPopFloat");
25031 Text.Args.push_back(printArg<uint32_t>(PC));
25032 break;
25033#endif
25034#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25035bool emitGetFieldPopSint8( uint32_t , SourceInfo);
25036bool emitGetFieldPopUint8( uint32_t , SourceInfo);
25037bool emitGetFieldPopSint16( uint32_t , SourceInfo);
25038bool emitGetFieldPopUint16( uint32_t , SourceInfo);
25039bool emitGetFieldPopSint32( uint32_t , SourceInfo);
25040bool emitGetFieldPopUint32( uint32_t , SourceInfo);
25041bool emitGetFieldPopSint64( uint32_t , SourceInfo);
25042bool emitGetFieldPopUint64( uint32_t , SourceInfo);
25043bool emitGetFieldPopIntAP( uint32_t , SourceInfo);
25044bool emitGetFieldPopIntAPS( uint32_t , SourceInfo);
25045bool emitGetFieldPopBool( uint32_t , SourceInfo);
25046bool emitGetFieldPopFixedPoint( uint32_t , SourceInfo);
25047bool emitGetFieldPopPtr( uint32_t , SourceInfo);
25048bool emitGetFieldPopMemberPtr( uint32_t , SourceInfo);
25049bool emitGetFieldPopFloat( uint32_t , SourceInfo);
25050#endif
25051#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25052[[nodiscard]] bool emitGetFieldPop(PrimType, uint32_t, SourceInfo I);
25053#endif
25054#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
25055bool
25056#if defined(GET_EVAL_IMPL)
25057EvalEmitter
25058#else
25059ByteCodeEmitter
25060#endif
25061::emitGetFieldPop(PrimType T0, uint32_t A0, SourceInfo I) {
25062 switch (T0) {
25063 case PT_Sint8:
25064 return emitGetFieldPopSint8(A0, I);
25065 case PT_Uint8:
25066 return emitGetFieldPopUint8(A0, I);
25067 case PT_Sint16:
25068 return emitGetFieldPopSint16(A0, I);
25069 case PT_Uint16:
25070 return emitGetFieldPopUint16(A0, I);
25071 case PT_Sint32:
25072 return emitGetFieldPopSint32(A0, I);
25073 case PT_Uint32:
25074 return emitGetFieldPopUint32(A0, I);
25075 case PT_Sint64:
25076 return emitGetFieldPopSint64(A0, I);
25077 case PT_Uint64:
25078 return emitGetFieldPopUint64(A0, I);
25079 case PT_IntAP:
25080 return emitGetFieldPopIntAP(A0, I);
25081 case PT_IntAPS:
25082 return emitGetFieldPopIntAPS(A0, I);
25083 case PT_Bool:
25084 return emitGetFieldPopBool(A0, I);
25085 case PT_FixedPoint:
25086 return emitGetFieldPopFixedPoint(A0, I);
25087 case PT_Ptr:
25088 return emitGetFieldPopPtr(A0, I);
25089 case PT_MemberPtr:
25090 return emitGetFieldPopMemberPtr(A0, I);
25091 case PT_Float:
25092 return emitGetFieldPopFloat(A0, I);
25093 }
25094 llvm_unreachable("invalid enum value");
25095}
25096#endif
25097#ifdef GET_LINK_IMPL
25098bool ByteCodeEmitter::emitGetFieldPopSint8( uint32_t A0, SourceInfo L) {
25099 return emitOp<uint32_t>(OP_GetFieldPopSint8, A0, L);
25100}
25101bool ByteCodeEmitter::emitGetFieldPopUint8( uint32_t A0, SourceInfo L) {
25102 return emitOp<uint32_t>(OP_GetFieldPopUint8, A0, L);
25103}
25104bool ByteCodeEmitter::emitGetFieldPopSint16( uint32_t A0, SourceInfo L) {
25105 return emitOp<uint32_t>(OP_GetFieldPopSint16, A0, L);
25106}
25107bool ByteCodeEmitter::emitGetFieldPopUint16( uint32_t A0, SourceInfo L) {
25108 return emitOp<uint32_t>(OP_GetFieldPopUint16, A0, L);
25109}
25110bool ByteCodeEmitter::emitGetFieldPopSint32( uint32_t A0, SourceInfo L) {
25111 return emitOp<uint32_t>(OP_GetFieldPopSint32, A0, L);
25112}
25113bool ByteCodeEmitter::emitGetFieldPopUint32( uint32_t A0, SourceInfo L) {
25114 return emitOp<uint32_t>(OP_GetFieldPopUint32, A0, L);
25115}
25116bool ByteCodeEmitter::emitGetFieldPopSint64( uint32_t A0, SourceInfo L) {
25117 return emitOp<uint32_t>(OP_GetFieldPopSint64, A0, L);
25118}
25119bool ByteCodeEmitter::emitGetFieldPopUint64( uint32_t A0, SourceInfo L) {
25120 return emitOp<uint32_t>(OP_GetFieldPopUint64, A0, L);
25121}
25122bool ByteCodeEmitter::emitGetFieldPopIntAP( uint32_t A0, SourceInfo L) {
25123 return emitOp<uint32_t>(OP_GetFieldPopIntAP, A0, L);
25124}
25125bool ByteCodeEmitter::emitGetFieldPopIntAPS( uint32_t A0, SourceInfo L) {
25126 return emitOp<uint32_t>(OP_GetFieldPopIntAPS, A0, L);
25127}
25128bool ByteCodeEmitter::emitGetFieldPopBool( uint32_t A0, SourceInfo L) {
25129 return emitOp<uint32_t>(OP_GetFieldPopBool, A0, L);
25130}
25131bool ByteCodeEmitter::emitGetFieldPopFixedPoint( uint32_t A0, SourceInfo L) {
25132 return emitOp<uint32_t>(OP_GetFieldPopFixedPoint, A0, L);
25133}
25134bool ByteCodeEmitter::emitGetFieldPopPtr( uint32_t A0, SourceInfo L) {
25135 return emitOp<uint32_t>(OP_GetFieldPopPtr, A0, L);
25136}
25137bool ByteCodeEmitter::emitGetFieldPopMemberPtr( uint32_t A0, SourceInfo L) {
25138 return emitOp<uint32_t>(OP_GetFieldPopMemberPtr, A0, L);
25139}
25140bool ByteCodeEmitter::emitGetFieldPopFloat( uint32_t A0, SourceInfo L) {
25141 return emitOp<uint32_t>(OP_GetFieldPopFloat, A0, L);
25142}
25143#endif
25144#ifdef GET_EVAL_IMPL
25145bool EvalEmitter::emitGetFieldPopSint8( uint32_t A0, SourceInfo L) {
25146 if (!isActive()) return true;
25147 CurrentSource = L;
25148 return GetFieldPop<PT_Sint8>(S, CodePtr(), A0);
25149}
25150bool EvalEmitter::emitGetFieldPopUint8( uint32_t A0, SourceInfo L) {
25151 if (!isActive()) return true;
25152 CurrentSource = L;
25153 return GetFieldPop<PT_Uint8>(S, CodePtr(), A0);
25154}
25155bool EvalEmitter::emitGetFieldPopSint16( uint32_t A0, SourceInfo L) {
25156 if (!isActive()) return true;
25157 CurrentSource = L;
25158 return GetFieldPop<PT_Sint16>(S, CodePtr(), A0);
25159}
25160bool EvalEmitter::emitGetFieldPopUint16( uint32_t A0, SourceInfo L) {
25161 if (!isActive()) return true;
25162 CurrentSource = L;
25163 return GetFieldPop<PT_Uint16>(S, CodePtr(), A0);
25164}
25165bool EvalEmitter::emitGetFieldPopSint32( uint32_t A0, SourceInfo L) {
25166 if (!isActive()) return true;
25167 CurrentSource = L;
25168 return GetFieldPop<PT_Sint32>(S, CodePtr(), A0);
25169}
25170bool EvalEmitter::emitGetFieldPopUint32( uint32_t A0, SourceInfo L) {
25171 if (!isActive()) return true;
25172 CurrentSource = L;
25173 return GetFieldPop<PT_Uint32>(S, CodePtr(), A0);
25174}
25175bool EvalEmitter::emitGetFieldPopSint64( uint32_t A0, SourceInfo L) {
25176 if (!isActive()) return true;
25177 CurrentSource = L;
25178 return GetFieldPop<PT_Sint64>(S, CodePtr(), A0);
25179}
25180bool EvalEmitter::emitGetFieldPopUint64( uint32_t A0, SourceInfo L) {
25181 if (!isActive()) return true;
25182 CurrentSource = L;
25183 return GetFieldPop<PT_Uint64>(S, CodePtr(), A0);
25184}
25185bool EvalEmitter::emitGetFieldPopIntAP( uint32_t A0, SourceInfo L) {
25186 if (!isActive()) return true;
25187 CurrentSource = L;
25188 return GetFieldPop<PT_IntAP>(S, CodePtr(), A0);
25189}
25190bool EvalEmitter::emitGetFieldPopIntAPS( uint32_t A0, SourceInfo L) {
25191 if (!isActive()) return true;
25192 CurrentSource = L;
25193 return GetFieldPop<PT_IntAPS>(S, CodePtr(), A0);
25194}
25195bool EvalEmitter::emitGetFieldPopBool( uint32_t A0, SourceInfo L) {
25196 if (!isActive()) return true;
25197 CurrentSource = L;
25198 return GetFieldPop<PT_Bool>(S, CodePtr(), A0);
25199}
25200bool EvalEmitter::emitGetFieldPopFixedPoint( uint32_t A0, SourceInfo L) {
25201 if (!isActive()) return true;
25202 CurrentSource = L;
25203 return GetFieldPop<PT_FixedPoint>(S, CodePtr(), A0);
25204}
25205bool EvalEmitter::emitGetFieldPopPtr( uint32_t A0, SourceInfo L) {
25206 if (!isActive()) return true;
25207 CurrentSource = L;
25208 return GetFieldPop<PT_Ptr>(S, CodePtr(), A0);
25209}
25210bool EvalEmitter::emitGetFieldPopMemberPtr( uint32_t A0, SourceInfo L) {
25211 if (!isActive()) return true;
25212 CurrentSource = L;
25213 return GetFieldPop<PT_MemberPtr>(S, CodePtr(), A0);
25214}
25215bool EvalEmitter::emitGetFieldPopFloat( uint32_t A0, SourceInfo L) {
25216 if (!isActive()) return true;
25217 CurrentSource = L;
25218 return GetFieldPop<PT_Float>(S, CodePtr(), A0);
25219}
25220#endif
25221#ifdef GET_OPCODE_NAMES
25222OP_GetFnPtr,
25223#endif
25224#ifdef GET_INTERPFN_LIST
25225&Interp_GetFnPtr,
25226#endif
25227#ifdef GET_INTERPFN_DISPATCHERS
25228PRESERVE_NONE
25229static bool Interp_GetFnPtr(InterpState &S) {
25230 {
25231 const auto V0 = ReadArg<const Function *>(S, S.PC);
25232 GetFnPtr(S, V0);
25233 }
25234#if USE_TAILCALLS
25235 MUSTTAIL return InterpNext(S);
25236#else
25237 return true;
25238#endif
25239}
25240#endif
25241#ifdef GET_DISASM
25242case OP_GetFnPtr:
25243 Text.Op = PrintName("GetFnPtr");
25244 Text.Args.push_back(printArg<const Function *>(PC));
25245 break;
25246#endif
25247#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25248bool emitGetFnPtr( const Function * , SourceInfo);
25249#endif
25250#ifdef GET_LINK_IMPL
25251bool ByteCodeEmitter::emitGetFnPtr( const Function * A0, SourceInfo L) {
25252 return emitOp<const Function *>(OP_GetFnPtr, A0, L);
25253}
25254#endif
25255#ifdef GET_EVAL_IMPL
25256bool EvalEmitter::emitGetFnPtr( const Function * A0, SourceInfo L) {
25257 if (!isActive()) return true;
25258 CurrentSource = L;
25259 return GetFnPtr(S, A0);
25260}
25261#endif
25262#ifdef GET_OPCODE_NAMES
25263OP_GetGlobalSint8,
25264OP_GetGlobalUint8,
25265OP_GetGlobalSint16,
25266OP_GetGlobalUint16,
25267OP_GetGlobalSint32,
25268OP_GetGlobalUint32,
25269OP_GetGlobalSint64,
25270OP_GetGlobalUint64,
25271OP_GetGlobalIntAP,
25272OP_GetGlobalIntAPS,
25273OP_GetGlobalBool,
25274OP_GetGlobalFixedPoint,
25275OP_GetGlobalPtr,
25276OP_GetGlobalMemberPtr,
25277OP_GetGlobalFloat,
25278#endif
25279#ifdef GET_INTERPFN_LIST
25280&Interp_GetGlobalSint8,
25281&Interp_GetGlobalUint8,
25282&Interp_GetGlobalSint16,
25283&Interp_GetGlobalUint16,
25284&Interp_GetGlobalSint32,
25285&Interp_GetGlobalUint32,
25286&Interp_GetGlobalSint64,
25287&Interp_GetGlobalUint64,
25288&Interp_GetGlobalIntAP,
25289&Interp_GetGlobalIntAPS,
25290&Interp_GetGlobalBool,
25291&Interp_GetGlobalFixedPoint,
25292&Interp_GetGlobalPtr,
25293&Interp_GetGlobalMemberPtr,
25294&Interp_GetGlobalFloat,
25295#endif
25296#ifdef GET_INTERPFN_DISPATCHERS
25297PRESERVE_NONE
25298static bool Interp_GetGlobalSint8(InterpState &S) {
25299 {
25300 CodePtr OpPC = S.PC;
25301 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25302 if (!GetGlobal<PT_Sint8>(S, OpPC, V0)) return false;
25303 }
25304#if USE_TAILCALLS
25305 MUSTTAIL return InterpNext(S);
25306#else
25307 return true;
25308#endif
25309}
25310PRESERVE_NONE
25311static bool Interp_GetGlobalUint8(InterpState &S) {
25312 {
25313 CodePtr OpPC = S.PC;
25314 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25315 if (!GetGlobal<PT_Uint8>(S, OpPC, V0)) return false;
25316 }
25317#if USE_TAILCALLS
25318 MUSTTAIL return InterpNext(S);
25319#else
25320 return true;
25321#endif
25322}
25323PRESERVE_NONE
25324static bool Interp_GetGlobalSint16(InterpState &S) {
25325 {
25326 CodePtr OpPC = S.PC;
25327 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25328 if (!GetGlobal<PT_Sint16>(S, OpPC, V0)) return false;
25329 }
25330#if USE_TAILCALLS
25331 MUSTTAIL return InterpNext(S);
25332#else
25333 return true;
25334#endif
25335}
25336PRESERVE_NONE
25337static bool Interp_GetGlobalUint16(InterpState &S) {
25338 {
25339 CodePtr OpPC = S.PC;
25340 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25341 if (!GetGlobal<PT_Uint16>(S, OpPC, V0)) return false;
25342 }
25343#if USE_TAILCALLS
25344 MUSTTAIL return InterpNext(S);
25345#else
25346 return true;
25347#endif
25348}
25349PRESERVE_NONE
25350static bool Interp_GetGlobalSint32(InterpState &S) {
25351 {
25352 CodePtr OpPC = S.PC;
25353 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25354 if (!GetGlobal<PT_Sint32>(S, OpPC, V0)) return false;
25355 }
25356#if USE_TAILCALLS
25357 MUSTTAIL return InterpNext(S);
25358#else
25359 return true;
25360#endif
25361}
25362PRESERVE_NONE
25363static bool Interp_GetGlobalUint32(InterpState &S) {
25364 {
25365 CodePtr OpPC = S.PC;
25366 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25367 if (!GetGlobal<PT_Uint32>(S, OpPC, V0)) return false;
25368 }
25369#if USE_TAILCALLS
25370 MUSTTAIL return InterpNext(S);
25371#else
25372 return true;
25373#endif
25374}
25375PRESERVE_NONE
25376static bool Interp_GetGlobalSint64(InterpState &S) {
25377 {
25378 CodePtr OpPC = S.PC;
25379 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25380 if (!GetGlobal<PT_Sint64>(S, OpPC, V0)) return false;
25381 }
25382#if USE_TAILCALLS
25383 MUSTTAIL return InterpNext(S);
25384#else
25385 return true;
25386#endif
25387}
25388PRESERVE_NONE
25389static bool Interp_GetGlobalUint64(InterpState &S) {
25390 {
25391 CodePtr OpPC = S.PC;
25392 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25393 if (!GetGlobal<PT_Uint64>(S, OpPC, V0)) return false;
25394 }
25395#if USE_TAILCALLS
25396 MUSTTAIL return InterpNext(S);
25397#else
25398 return true;
25399#endif
25400}
25401PRESERVE_NONE
25402static bool Interp_GetGlobalIntAP(InterpState &S) {
25403 {
25404 CodePtr OpPC = S.PC;
25405 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25406 if (!GetGlobal<PT_IntAP>(S, OpPC, V0)) return false;
25407 }
25408#if USE_TAILCALLS
25409 MUSTTAIL return InterpNext(S);
25410#else
25411 return true;
25412#endif
25413}
25414PRESERVE_NONE
25415static bool Interp_GetGlobalIntAPS(InterpState &S) {
25416 {
25417 CodePtr OpPC = S.PC;
25418 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25419 if (!GetGlobal<PT_IntAPS>(S, OpPC, V0)) return false;
25420 }
25421#if USE_TAILCALLS
25422 MUSTTAIL return InterpNext(S);
25423#else
25424 return true;
25425#endif
25426}
25427PRESERVE_NONE
25428static bool Interp_GetGlobalBool(InterpState &S) {
25429 {
25430 CodePtr OpPC = S.PC;
25431 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25432 if (!GetGlobal<PT_Bool>(S, OpPC, V0)) return false;
25433 }
25434#if USE_TAILCALLS
25435 MUSTTAIL return InterpNext(S);
25436#else
25437 return true;
25438#endif
25439}
25440PRESERVE_NONE
25441static bool Interp_GetGlobalFixedPoint(InterpState &S) {
25442 {
25443 CodePtr OpPC = S.PC;
25444 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25445 if (!GetGlobal<PT_FixedPoint>(S, OpPC, V0)) return false;
25446 }
25447#if USE_TAILCALLS
25448 MUSTTAIL return InterpNext(S);
25449#else
25450 return true;
25451#endif
25452}
25453PRESERVE_NONE
25454static bool Interp_GetGlobalPtr(InterpState &S) {
25455 {
25456 CodePtr OpPC = S.PC;
25457 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25458 if (!GetGlobal<PT_Ptr>(S, OpPC, V0)) return false;
25459 }
25460#if USE_TAILCALLS
25461 MUSTTAIL return InterpNext(S);
25462#else
25463 return true;
25464#endif
25465}
25466PRESERVE_NONE
25467static bool Interp_GetGlobalMemberPtr(InterpState &S) {
25468 {
25469 CodePtr OpPC = S.PC;
25470 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25471 if (!GetGlobal<PT_MemberPtr>(S, OpPC, V0)) return false;
25472 }
25473#if USE_TAILCALLS
25474 MUSTTAIL return InterpNext(S);
25475#else
25476 return true;
25477#endif
25478}
25479PRESERVE_NONE
25480static bool Interp_GetGlobalFloat(InterpState &S) {
25481 {
25482 CodePtr OpPC = S.PC;
25483 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25484 if (!GetGlobal<PT_Float>(S, OpPC, V0)) return false;
25485 }
25486#if USE_TAILCALLS
25487 MUSTTAIL return InterpNext(S);
25488#else
25489 return true;
25490#endif
25491}
25492#endif
25493#ifdef GET_DISASM
25494case OP_GetGlobalSint8:
25495 Text.Op = PrintName("GetGlobalSint8");
25496 Text.Args.push_back(printArg<uint32_t>(PC));
25497 break;
25498case OP_GetGlobalUint8:
25499 Text.Op = PrintName("GetGlobalUint8");
25500 Text.Args.push_back(printArg<uint32_t>(PC));
25501 break;
25502case OP_GetGlobalSint16:
25503 Text.Op = PrintName("GetGlobalSint16");
25504 Text.Args.push_back(printArg<uint32_t>(PC));
25505 break;
25506case OP_GetGlobalUint16:
25507 Text.Op = PrintName("GetGlobalUint16");
25508 Text.Args.push_back(printArg<uint32_t>(PC));
25509 break;
25510case OP_GetGlobalSint32:
25511 Text.Op = PrintName("GetGlobalSint32");
25512 Text.Args.push_back(printArg<uint32_t>(PC));
25513 break;
25514case OP_GetGlobalUint32:
25515 Text.Op = PrintName("GetGlobalUint32");
25516 Text.Args.push_back(printArg<uint32_t>(PC));
25517 break;
25518case OP_GetGlobalSint64:
25519 Text.Op = PrintName("GetGlobalSint64");
25520 Text.Args.push_back(printArg<uint32_t>(PC));
25521 break;
25522case OP_GetGlobalUint64:
25523 Text.Op = PrintName("GetGlobalUint64");
25524 Text.Args.push_back(printArg<uint32_t>(PC));
25525 break;
25526case OP_GetGlobalIntAP:
25527 Text.Op = PrintName("GetGlobalIntAP");
25528 Text.Args.push_back(printArg<uint32_t>(PC));
25529 break;
25530case OP_GetGlobalIntAPS:
25531 Text.Op = PrintName("GetGlobalIntAPS");
25532 Text.Args.push_back(printArg<uint32_t>(PC));
25533 break;
25534case OP_GetGlobalBool:
25535 Text.Op = PrintName("GetGlobalBool");
25536 Text.Args.push_back(printArg<uint32_t>(PC));
25537 break;
25538case OP_GetGlobalFixedPoint:
25539 Text.Op = PrintName("GetGlobalFixedPoint");
25540 Text.Args.push_back(printArg<uint32_t>(PC));
25541 break;
25542case OP_GetGlobalPtr:
25543 Text.Op = PrintName("GetGlobalPtr");
25544 Text.Args.push_back(printArg<uint32_t>(PC));
25545 break;
25546case OP_GetGlobalMemberPtr:
25547 Text.Op = PrintName("GetGlobalMemberPtr");
25548 Text.Args.push_back(printArg<uint32_t>(PC));
25549 break;
25550case OP_GetGlobalFloat:
25551 Text.Op = PrintName("GetGlobalFloat");
25552 Text.Args.push_back(printArg<uint32_t>(PC));
25553 break;
25554#endif
25555#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25556bool emitGetGlobalSint8( uint32_t , SourceInfo);
25557bool emitGetGlobalUint8( uint32_t , SourceInfo);
25558bool emitGetGlobalSint16( uint32_t , SourceInfo);
25559bool emitGetGlobalUint16( uint32_t , SourceInfo);
25560bool emitGetGlobalSint32( uint32_t , SourceInfo);
25561bool emitGetGlobalUint32( uint32_t , SourceInfo);
25562bool emitGetGlobalSint64( uint32_t , SourceInfo);
25563bool emitGetGlobalUint64( uint32_t , SourceInfo);
25564bool emitGetGlobalIntAP( uint32_t , SourceInfo);
25565bool emitGetGlobalIntAPS( uint32_t , SourceInfo);
25566bool emitGetGlobalBool( uint32_t , SourceInfo);
25567bool emitGetGlobalFixedPoint( uint32_t , SourceInfo);
25568bool emitGetGlobalPtr( uint32_t , SourceInfo);
25569bool emitGetGlobalMemberPtr( uint32_t , SourceInfo);
25570bool emitGetGlobalFloat( uint32_t , SourceInfo);
25571#endif
25572#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25573[[nodiscard]] bool emitGetGlobal(PrimType, uint32_t, SourceInfo I);
25574#endif
25575#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
25576bool
25577#if defined(GET_EVAL_IMPL)
25578EvalEmitter
25579#else
25580ByteCodeEmitter
25581#endif
25582::emitGetGlobal(PrimType T0, uint32_t A0, SourceInfo I) {
25583 switch (T0) {
25584 case PT_Sint8:
25585 return emitGetGlobalSint8(A0, I);
25586 case PT_Uint8:
25587 return emitGetGlobalUint8(A0, I);
25588 case PT_Sint16:
25589 return emitGetGlobalSint16(A0, I);
25590 case PT_Uint16:
25591 return emitGetGlobalUint16(A0, I);
25592 case PT_Sint32:
25593 return emitGetGlobalSint32(A0, I);
25594 case PT_Uint32:
25595 return emitGetGlobalUint32(A0, I);
25596 case PT_Sint64:
25597 return emitGetGlobalSint64(A0, I);
25598 case PT_Uint64:
25599 return emitGetGlobalUint64(A0, I);
25600 case PT_IntAP:
25601 return emitGetGlobalIntAP(A0, I);
25602 case PT_IntAPS:
25603 return emitGetGlobalIntAPS(A0, I);
25604 case PT_Bool:
25605 return emitGetGlobalBool(A0, I);
25606 case PT_FixedPoint:
25607 return emitGetGlobalFixedPoint(A0, I);
25608 case PT_Ptr:
25609 return emitGetGlobalPtr(A0, I);
25610 case PT_MemberPtr:
25611 return emitGetGlobalMemberPtr(A0, I);
25612 case PT_Float:
25613 return emitGetGlobalFloat(A0, I);
25614 }
25615 llvm_unreachable("invalid enum value");
25616}
25617#endif
25618#ifdef GET_LINK_IMPL
25619bool ByteCodeEmitter::emitGetGlobalSint8( uint32_t A0, SourceInfo L) {
25620 return emitOp<uint32_t>(OP_GetGlobalSint8, A0, L);
25621}
25622bool ByteCodeEmitter::emitGetGlobalUint8( uint32_t A0, SourceInfo L) {
25623 return emitOp<uint32_t>(OP_GetGlobalUint8, A0, L);
25624}
25625bool ByteCodeEmitter::emitGetGlobalSint16( uint32_t A0, SourceInfo L) {
25626 return emitOp<uint32_t>(OP_GetGlobalSint16, A0, L);
25627}
25628bool ByteCodeEmitter::emitGetGlobalUint16( uint32_t A0, SourceInfo L) {
25629 return emitOp<uint32_t>(OP_GetGlobalUint16, A0, L);
25630}
25631bool ByteCodeEmitter::emitGetGlobalSint32( uint32_t A0, SourceInfo L) {
25632 return emitOp<uint32_t>(OP_GetGlobalSint32, A0, L);
25633}
25634bool ByteCodeEmitter::emitGetGlobalUint32( uint32_t A0, SourceInfo L) {
25635 return emitOp<uint32_t>(OP_GetGlobalUint32, A0, L);
25636}
25637bool ByteCodeEmitter::emitGetGlobalSint64( uint32_t A0, SourceInfo L) {
25638 return emitOp<uint32_t>(OP_GetGlobalSint64, A0, L);
25639}
25640bool ByteCodeEmitter::emitGetGlobalUint64( uint32_t A0, SourceInfo L) {
25641 return emitOp<uint32_t>(OP_GetGlobalUint64, A0, L);
25642}
25643bool ByteCodeEmitter::emitGetGlobalIntAP( uint32_t A0, SourceInfo L) {
25644 return emitOp<uint32_t>(OP_GetGlobalIntAP, A0, L);
25645}
25646bool ByteCodeEmitter::emitGetGlobalIntAPS( uint32_t A0, SourceInfo L) {
25647 return emitOp<uint32_t>(OP_GetGlobalIntAPS, A0, L);
25648}
25649bool ByteCodeEmitter::emitGetGlobalBool( uint32_t A0, SourceInfo L) {
25650 return emitOp<uint32_t>(OP_GetGlobalBool, A0, L);
25651}
25652bool ByteCodeEmitter::emitGetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
25653 return emitOp<uint32_t>(OP_GetGlobalFixedPoint, A0, L);
25654}
25655bool ByteCodeEmitter::emitGetGlobalPtr( uint32_t A0, SourceInfo L) {
25656 return emitOp<uint32_t>(OP_GetGlobalPtr, A0, L);
25657}
25658bool ByteCodeEmitter::emitGetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
25659 return emitOp<uint32_t>(OP_GetGlobalMemberPtr, A0, L);
25660}
25661bool ByteCodeEmitter::emitGetGlobalFloat( uint32_t A0, SourceInfo L) {
25662 return emitOp<uint32_t>(OP_GetGlobalFloat, A0, L);
25663}
25664#endif
25665#ifdef GET_EVAL_IMPL
25666bool EvalEmitter::emitGetGlobalSint8( uint32_t A0, SourceInfo L) {
25667 if (!isActive()) return true;
25668 CurrentSource = L;
25669 return GetGlobal<PT_Sint8>(S, CodePtr(), A0);
25670}
25671bool EvalEmitter::emitGetGlobalUint8( uint32_t A0, SourceInfo L) {
25672 if (!isActive()) return true;
25673 CurrentSource = L;
25674 return GetGlobal<PT_Uint8>(S, CodePtr(), A0);
25675}
25676bool EvalEmitter::emitGetGlobalSint16( uint32_t A0, SourceInfo L) {
25677 if (!isActive()) return true;
25678 CurrentSource = L;
25679 return GetGlobal<PT_Sint16>(S, CodePtr(), A0);
25680}
25681bool EvalEmitter::emitGetGlobalUint16( uint32_t A0, SourceInfo L) {
25682 if (!isActive()) return true;
25683 CurrentSource = L;
25684 return GetGlobal<PT_Uint16>(S, CodePtr(), A0);
25685}
25686bool EvalEmitter::emitGetGlobalSint32( uint32_t A0, SourceInfo L) {
25687 if (!isActive()) return true;
25688 CurrentSource = L;
25689 return GetGlobal<PT_Sint32>(S, CodePtr(), A0);
25690}
25691bool EvalEmitter::emitGetGlobalUint32( uint32_t A0, SourceInfo L) {
25692 if (!isActive()) return true;
25693 CurrentSource = L;
25694 return GetGlobal<PT_Uint32>(S, CodePtr(), A0);
25695}
25696bool EvalEmitter::emitGetGlobalSint64( uint32_t A0, SourceInfo L) {
25697 if (!isActive()) return true;
25698 CurrentSource = L;
25699 return GetGlobal<PT_Sint64>(S, CodePtr(), A0);
25700}
25701bool EvalEmitter::emitGetGlobalUint64( uint32_t A0, SourceInfo L) {
25702 if (!isActive()) return true;
25703 CurrentSource = L;
25704 return GetGlobal<PT_Uint64>(S, CodePtr(), A0);
25705}
25706bool EvalEmitter::emitGetGlobalIntAP( uint32_t A0, SourceInfo L) {
25707 if (!isActive()) return true;
25708 CurrentSource = L;
25709 return GetGlobal<PT_IntAP>(S, CodePtr(), A0);
25710}
25711bool EvalEmitter::emitGetGlobalIntAPS( uint32_t A0, SourceInfo L) {
25712 if (!isActive()) return true;
25713 CurrentSource = L;
25714 return GetGlobal<PT_IntAPS>(S, CodePtr(), A0);
25715}
25716bool EvalEmitter::emitGetGlobalBool( uint32_t A0, SourceInfo L) {
25717 if (!isActive()) return true;
25718 CurrentSource = L;
25719 return GetGlobal<PT_Bool>(S, CodePtr(), A0);
25720}
25721bool EvalEmitter::emitGetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
25722 if (!isActive()) return true;
25723 CurrentSource = L;
25724 return GetGlobal<PT_FixedPoint>(S, CodePtr(), A0);
25725}
25726bool EvalEmitter::emitGetGlobalPtr( uint32_t A0, SourceInfo L) {
25727 if (!isActive()) return true;
25728 CurrentSource = L;
25729 return GetGlobal<PT_Ptr>(S, CodePtr(), A0);
25730}
25731bool EvalEmitter::emitGetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
25732 if (!isActive()) return true;
25733 CurrentSource = L;
25734 return GetGlobal<PT_MemberPtr>(S, CodePtr(), A0);
25735}
25736bool EvalEmitter::emitGetGlobalFloat( uint32_t A0, SourceInfo L) {
25737 if (!isActive()) return true;
25738 CurrentSource = L;
25739 return GetGlobal<PT_Float>(S, CodePtr(), A0);
25740}
25741#endif
25742#ifdef GET_OPCODE_NAMES
25743OP_GetGlobalUncheckedSint8,
25744OP_GetGlobalUncheckedUint8,
25745OP_GetGlobalUncheckedSint16,
25746OP_GetGlobalUncheckedUint16,
25747OP_GetGlobalUncheckedSint32,
25748OP_GetGlobalUncheckedUint32,
25749OP_GetGlobalUncheckedSint64,
25750OP_GetGlobalUncheckedUint64,
25751OP_GetGlobalUncheckedIntAP,
25752OP_GetGlobalUncheckedIntAPS,
25753OP_GetGlobalUncheckedBool,
25754OP_GetGlobalUncheckedFixedPoint,
25755OP_GetGlobalUncheckedPtr,
25756OP_GetGlobalUncheckedMemberPtr,
25757OP_GetGlobalUncheckedFloat,
25758#endif
25759#ifdef GET_INTERPFN_LIST
25760&Interp_GetGlobalUncheckedSint8,
25761&Interp_GetGlobalUncheckedUint8,
25762&Interp_GetGlobalUncheckedSint16,
25763&Interp_GetGlobalUncheckedUint16,
25764&Interp_GetGlobalUncheckedSint32,
25765&Interp_GetGlobalUncheckedUint32,
25766&Interp_GetGlobalUncheckedSint64,
25767&Interp_GetGlobalUncheckedUint64,
25768&Interp_GetGlobalUncheckedIntAP,
25769&Interp_GetGlobalUncheckedIntAPS,
25770&Interp_GetGlobalUncheckedBool,
25771&Interp_GetGlobalUncheckedFixedPoint,
25772&Interp_GetGlobalUncheckedPtr,
25773&Interp_GetGlobalUncheckedMemberPtr,
25774&Interp_GetGlobalUncheckedFloat,
25775#endif
25776#ifdef GET_INTERPFN_DISPATCHERS
25777PRESERVE_NONE
25778static bool Interp_GetGlobalUncheckedSint8(InterpState &S) {
25779 {
25780 CodePtr OpPC = S.PC;
25781 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25782 if (!GetGlobalUnchecked<PT_Sint8>(S, OpPC, V0)) return false;
25783 }
25784#if USE_TAILCALLS
25785 MUSTTAIL return InterpNext(S);
25786#else
25787 return true;
25788#endif
25789}
25790PRESERVE_NONE
25791static bool Interp_GetGlobalUncheckedUint8(InterpState &S) {
25792 {
25793 CodePtr OpPC = S.PC;
25794 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25795 if (!GetGlobalUnchecked<PT_Uint8>(S, OpPC, V0)) return false;
25796 }
25797#if USE_TAILCALLS
25798 MUSTTAIL return InterpNext(S);
25799#else
25800 return true;
25801#endif
25802}
25803PRESERVE_NONE
25804static bool Interp_GetGlobalUncheckedSint16(InterpState &S) {
25805 {
25806 CodePtr OpPC = S.PC;
25807 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25808 if (!GetGlobalUnchecked<PT_Sint16>(S, OpPC, V0)) return false;
25809 }
25810#if USE_TAILCALLS
25811 MUSTTAIL return InterpNext(S);
25812#else
25813 return true;
25814#endif
25815}
25816PRESERVE_NONE
25817static bool Interp_GetGlobalUncheckedUint16(InterpState &S) {
25818 {
25819 CodePtr OpPC = S.PC;
25820 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25821 if (!GetGlobalUnchecked<PT_Uint16>(S, OpPC, V0)) return false;
25822 }
25823#if USE_TAILCALLS
25824 MUSTTAIL return InterpNext(S);
25825#else
25826 return true;
25827#endif
25828}
25829PRESERVE_NONE
25830static bool Interp_GetGlobalUncheckedSint32(InterpState &S) {
25831 {
25832 CodePtr OpPC = S.PC;
25833 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25834 if (!GetGlobalUnchecked<PT_Sint32>(S, OpPC, V0)) return false;
25835 }
25836#if USE_TAILCALLS
25837 MUSTTAIL return InterpNext(S);
25838#else
25839 return true;
25840#endif
25841}
25842PRESERVE_NONE
25843static bool Interp_GetGlobalUncheckedUint32(InterpState &S) {
25844 {
25845 CodePtr OpPC = S.PC;
25846 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25847 if (!GetGlobalUnchecked<PT_Uint32>(S, OpPC, V0)) return false;
25848 }
25849#if USE_TAILCALLS
25850 MUSTTAIL return InterpNext(S);
25851#else
25852 return true;
25853#endif
25854}
25855PRESERVE_NONE
25856static bool Interp_GetGlobalUncheckedSint64(InterpState &S) {
25857 {
25858 CodePtr OpPC = S.PC;
25859 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25860 if (!GetGlobalUnchecked<PT_Sint64>(S, OpPC, V0)) return false;
25861 }
25862#if USE_TAILCALLS
25863 MUSTTAIL return InterpNext(S);
25864#else
25865 return true;
25866#endif
25867}
25868PRESERVE_NONE
25869static bool Interp_GetGlobalUncheckedUint64(InterpState &S) {
25870 {
25871 CodePtr OpPC = S.PC;
25872 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25873 if (!GetGlobalUnchecked<PT_Uint64>(S, OpPC, V0)) return false;
25874 }
25875#if USE_TAILCALLS
25876 MUSTTAIL return InterpNext(S);
25877#else
25878 return true;
25879#endif
25880}
25881PRESERVE_NONE
25882static bool Interp_GetGlobalUncheckedIntAP(InterpState &S) {
25883 {
25884 CodePtr OpPC = S.PC;
25885 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25886 if (!GetGlobalUnchecked<PT_IntAP>(S, OpPC, V0)) return false;
25887 }
25888#if USE_TAILCALLS
25889 MUSTTAIL return InterpNext(S);
25890#else
25891 return true;
25892#endif
25893}
25894PRESERVE_NONE
25895static bool Interp_GetGlobalUncheckedIntAPS(InterpState &S) {
25896 {
25897 CodePtr OpPC = S.PC;
25898 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25899 if (!GetGlobalUnchecked<PT_IntAPS>(S, OpPC, V0)) return false;
25900 }
25901#if USE_TAILCALLS
25902 MUSTTAIL return InterpNext(S);
25903#else
25904 return true;
25905#endif
25906}
25907PRESERVE_NONE
25908static bool Interp_GetGlobalUncheckedBool(InterpState &S) {
25909 {
25910 CodePtr OpPC = S.PC;
25911 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25912 if (!GetGlobalUnchecked<PT_Bool>(S, OpPC, V0)) return false;
25913 }
25914#if USE_TAILCALLS
25915 MUSTTAIL return InterpNext(S);
25916#else
25917 return true;
25918#endif
25919}
25920PRESERVE_NONE
25921static bool Interp_GetGlobalUncheckedFixedPoint(InterpState &S) {
25922 {
25923 CodePtr OpPC = S.PC;
25924 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25925 if (!GetGlobalUnchecked<PT_FixedPoint>(S, OpPC, V0)) return false;
25926 }
25927#if USE_TAILCALLS
25928 MUSTTAIL return InterpNext(S);
25929#else
25930 return true;
25931#endif
25932}
25933PRESERVE_NONE
25934static bool Interp_GetGlobalUncheckedPtr(InterpState &S) {
25935 {
25936 CodePtr OpPC = S.PC;
25937 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25938 if (!GetGlobalUnchecked<PT_Ptr>(S, OpPC, V0)) return false;
25939 }
25940#if USE_TAILCALLS
25941 MUSTTAIL return InterpNext(S);
25942#else
25943 return true;
25944#endif
25945}
25946PRESERVE_NONE
25947static bool Interp_GetGlobalUncheckedMemberPtr(InterpState &S) {
25948 {
25949 CodePtr OpPC = S.PC;
25950 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25951 if (!GetGlobalUnchecked<PT_MemberPtr>(S, OpPC, V0)) return false;
25952 }
25953#if USE_TAILCALLS
25954 MUSTTAIL return InterpNext(S);
25955#else
25956 return true;
25957#endif
25958}
25959PRESERVE_NONE
25960static bool Interp_GetGlobalUncheckedFloat(InterpState &S) {
25961 {
25962 CodePtr OpPC = S.PC;
25963 const auto V0 = ReadArg<uint32_t>(S, S.PC);
25964 if (!GetGlobalUnchecked<PT_Float>(S, OpPC, V0)) return false;
25965 }
25966#if USE_TAILCALLS
25967 MUSTTAIL return InterpNext(S);
25968#else
25969 return true;
25970#endif
25971}
25972#endif
25973#ifdef GET_DISASM
25974case OP_GetGlobalUncheckedSint8:
25975 Text.Op = PrintName("GetGlobalUncheckedSint8");
25976 Text.Args.push_back(printArg<uint32_t>(PC));
25977 break;
25978case OP_GetGlobalUncheckedUint8:
25979 Text.Op = PrintName("GetGlobalUncheckedUint8");
25980 Text.Args.push_back(printArg<uint32_t>(PC));
25981 break;
25982case OP_GetGlobalUncheckedSint16:
25983 Text.Op = PrintName("GetGlobalUncheckedSint16");
25984 Text.Args.push_back(printArg<uint32_t>(PC));
25985 break;
25986case OP_GetGlobalUncheckedUint16:
25987 Text.Op = PrintName("GetGlobalUncheckedUint16");
25988 Text.Args.push_back(printArg<uint32_t>(PC));
25989 break;
25990case OP_GetGlobalUncheckedSint32:
25991 Text.Op = PrintName("GetGlobalUncheckedSint32");
25992 Text.Args.push_back(printArg<uint32_t>(PC));
25993 break;
25994case OP_GetGlobalUncheckedUint32:
25995 Text.Op = PrintName("GetGlobalUncheckedUint32");
25996 Text.Args.push_back(printArg<uint32_t>(PC));
25997 break;
25998case OP_GetGlobalUncheckedSint64:
25999 Text.Op = PrintName("GetGlobalUncheckedSint64");
26000 Text.Args.push_back(printArg<uint32_t>(PC));
26001 break;
26002case OP_GetGlobalUncheckedUint64:
26003 Text.Op = PrintName("GetGlobalUncheckedUint64");
26004 Text.Args.push_back(printArg<uint32_t>(PC));
26005 break;
26006case OP_GetGlobalUncheckedIntAP:
26007 Text.Op = PrintName("GetGlobalUncheckedIntAP");
26008 Text.Args.push_back(printArg<uint32_t>(PC));
26009 break;
26010case OP_GetGlobalUncheckedIntAPS:
26011 Text.Op = PrintName("GetGlobalUncheckedIntAPS");
26012 Text.Args.push_back(printArg<uint32_t>(PC));
26013 break;
26014case OP_GetGlobalUncheckedBool:
26015 Text.Op = PrintName("GetGlobalUncheckedBool");
26016 Text.Args.push_back(printArg<uint32_t>(PC));
26017 break;
26018case OP_GetGlobalUncheckedFixedPoint:
26019 Text.Op = PrintName("GetGlobalUncheckedFixedPoint");
26020 Text.Args.push_back(printArg<uint32_t>(PC));
26021 break;
26022case OP_GetGlobalUncheckedPtr:
26023 Text.Op = PrintName("GetGlobalUncheckedPtr");
26024 Text.Args.push_back(printArg<uint32_t>(PC));
26025 break;
26026case OP_GetGlobalUncheckedMemberPtr:
26027 Text.Op = PrintName("GetGlobalUncheckedMemberPtr");
26028 Text.Args.push_back(printArg<uint32_t>(PC));
26029 break;
26030case OP_GetGlobalUncheckedFloat:
26031 Text.Op = PrintName("GetGlobalUncheckedFloat");
26032 Text.Args.push_back(printArg<uint32_t>(PC));
26033 break;
26034#endif
26035#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26036bool emitGetGlobalUncheckedSint8( uint32_t , SourceInfo);
26037bool emitGetGlobalUncheckedUint8( uint32_t , SourceInfo);
26038bool emitGetGlobalUncheckedSint16( uint32_t , SourceInfo);
26039bool emitGetGlobalUncheckedUint16( uint32_t , SourceInfo);
26040bool emitGetGlobalUncheckedSint32( uint32_t , SourceInfo);
26041bool emitGetGlobalUncheckedUint32( uint32_t , SourceInfo);
26042bool emitGetGlobalUncheckedSint64( uint32_t , SourceInfo);
26043bool emitGetGlobalUncheckedUint64( uint32_t , SourceInfo);
26044bool emitGetGlobalUncheckedIntAP( uint32_t , SourceInfo);
26045bool emitGetGlobalUncheckedIntAPS( uint32_t , SourceInfo);
26046bool emitGetGlobalUncheckedBool( uint32_t , SourceInfo);
26047bool emitGetGlobalUncheckedFixedPoint( uint32_t , SourceInfo);
26048bool emitGetGlobalUncheckedPtr( uint32_t , SourceInfo);
26049bool emitGetGlobalUncheckedMemberPtr( uint32_t , SourceInfo);
26050bool emitGetGlobalUncheckedFloat( uint32_t , SourceInfo);
26051#endif
26052#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26053[[nodiscard]] bool emitGetGlobalUnchecked(PrimType, uint32_t, SourceInfo I);
26054#endif
26055#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
26056bool
26057#if defined(GET_EVAL_IMPL)
26058EvalEmitter
26059#else
26060ByteCodeEmitter
26061#endif
26062::emitGetGlobalUnchecked(PrimType T0, uint32_t A0, SourceInfo I) {
26063 switch (T0) {
26064 case PT_Sint8:
26065 return emitGetGlobalUncheckedSint8(A0, I);
26066 case PT_Uint8:
26067 return emitGetGlobalUncheckedUint8(A0, I);
26068 case PT_Sint16:
26069 return emitGetGlobalUncheckedSint16(A0, I);
26070 case PT_Uint16:
26071 return emitGetGlobalUncheckedUint16(A0, I);
26072 case PT_Sint32:
26073 return emitGetGlobalUncheckedSint32(A0, I);
26074 case PT_Uint32:
26075 return emitGetGlobalUncheckedUint32(A0, I);
26076 case PT_Sint64:
26077 return emitGetGlobalUncheckedSint64(A0, I);
26078 case PT_Uint64:
26079 return emitGetGlobalUncheckedUint64(A0, I);
26080 case PT_IntAP:
26081 return emitGetGlobalUncheckedIntAP(A0, I);
26082 case PT_IntAPS:
26083 return emitGetGlobalUncheckedIntAPS(A0, I);
26084 case PT_Bool:
26085 return emitGetGlobalUncheckedBool(A0, I);
26086 case PT_FixedPoint:
26087 return emitGetGlobalUncheckedFixedPoint(A0, I);
26088 case PT_Ptr:
26089 return emitGetGlobalUncheckedPtr(A0, I);
26090 case PT_MemberPtr:
26091 return emitGetGlobalUncheckedMemberPtr(A0, I);
26092 case PT_Float:
26093 return emitGetGlobalUncheckedFloat(A0, I);
26094 }
26095 llvm_unreachable("invalid enum value");
26096}
26097#endif
26098#ifdef GET_LINK_IMPL
26099bool ByteCodeEmitter::emitGetGlobalUncheckedSint8( uint32_t A0, SourceInfo L) {
26100 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint8, A0, L);
26101}
26102bool ByteCodeEmitter::emitGetGlobalUncheckedUint8( uint32_t A0, SourceInfo L) {
26103 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint8, A0, L);
26104}
26105bool ByteCodeEmitter::emitGetGlobalUncheckedSint16( uint32_t A0, SourceInfo L) {
26106 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint16, A0, L);
26107}
26108bool ByteCodeEmitter::emitGetGlobalUncheckedUint16( uint32_t A0, SourceInfo L) {
26109 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint16, A0, L);
26110}
26111bool ByteCodeEmitter::emitGetGlobalUncheckedSint32( uint32_t A0, SourceInfo L) {
26112 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint32, A0, L);
26113}
26114bool ByteCodeEmitter::emitGetGlobalUncheckedUint32( uint32_t A0, SourceInfo L) {
26115 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint32, A0, L);
26116}
26117bool ByteCodeEmitter::emitGetGlobalUncheckedSint64( uint32_t A0, SourceInfo L) {
26118 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint64, A0, L);
26119}
26120bool ByteCodeEmitter::emitGetGlobalUncheckedUint64( uint32_t A0, SourceInfo L) {
26121 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint64, A0, L);
26122}
26123bool ByteCodeEmitter::emitGetGlobalUncheckedIntAP( uint32_t A0, SourceInfo L) {
26124 return emitOp<uint32_t>(OP_GetGlobalUncheckedIntAP, A0, L);
26125}
26126bool ByteCodeEmitter::emitGetGlobalUncheckedIntAPS( uint32_t A0, SourceInfo L) {
26127 return emitOp<uint32_t>(OP_GetGlobalUncheckedIntAPS, A0, L);
26128}
26129bool ByteCodeEmitter::emitGetGlobalUncheckedBool( uint32_t A0, SourceInfo L) {
26130 return emitOp<uint32_t>(OP_GetGlobalUncheckedBool, A0, L);
26131}
26132bool ByteCodeEmitter::emitGetGlobalUncheckedFixedPoint( uint32_t A0, SourceInfo L) {
26133 return emitOp<uint32_t>(OP_GetGlobalUncheckedFixedPoint, A0, L);
26134}
26135bool ByteCodeEmitter::emitGetGlobalUncheckedPtr( uint32_t A0, SourceInfo L) {
26136 return emitOp<uint32_t>(OP_GetGlobalUncheckedPtr, A0, L);
26137}
26138bool ByteCodeEmitter::emitGetGlobalUncheckedMemberPtr( uint32_t A0, SourceInfo L) {
26139 return emitOp<uint32_t>(OP_GetGlobalUncheckedMemberPtr, A0, L);
26140}
26141bool ByteCodeEmitter::emitGetGlobalUncheckedFloat( uint32_t A0, SourceInfo L) {
26142 return emitOp<uint32_t>(OP_GetGlobalUncheckedFloat, A0, L);
26143}
26144#endif
26145#ifdef GET_EVAL_IMPL
26146bool EvalEmitter::emitGetGlobalUncheckedSint8( uint32_t A0, SourceInfo L) {
26147 if (!isActive()) return true;
26148 CurrentSource = L;
26149 return GetGlobalUnchecked<PT_Sint8>(S, CodePtr(), A0);
26150}
26151bool EvalEmitter::emitGetGlobalUncheckedUint8( uint32_t A0, SourceInfo L) {
26152 if (!isActive()) return true;
26153 CurrentSource = L;
26154 return GetGlobalUnchecked<PT_Uint8>(S, CodePtr(), A0);
26155}
26156bool EvalEmitter::emitGetGlobalUncheckedSint16( uint32_t A0, SourceInfo L) {
26157 if (!isActive()) return true;
26158 CurrentSource = L;
26159 return GetGlobalUnchecked<PT_Sint16>(S, CodePtr(), A0);
26160}
26161bool EvalEmitter::emitGetGlobalUncheckedUint16( uint32_t A0, SourceInfo L) {
26162 if (!isActive()) return true;
26163 CurrentSource = L;
26164 return GetGlobalUnchecked<PT_Uint16>(S, CodePtr(), A0);
26165}
26166bool EvalEmitter::emitGetGlobalUncheckedSint32( uint32_t A0, SourceInfo L) {
26167 if (!isActive()) return true;
26168 CurrentSource = L;
26169 return GetGlobalUnchecked<PT_Sint32>(S, CodePtr(), A0);
26170}
26171bool EvalEmitter::emitGetGlobalUncheckedUint32( uint32_t A0, SourceInfo L) {
26172 if (!isActive()) return true;
26173 CurrentSource = L;
26174 return GetGlobalUnchecked<PT_Uint32>(S, CodePtr(), A0);
26175}
26176bool EvalEmitter::emitGetGlobalUncheckedSint64( uint32_t A0, SourceInfo L) {
26177 if (!isActive()) return true;
26178 CurrentSource = L;
26179 return GetGlobalUnchecked<PT_Sint64>(S, CodePtr(), A0);
26180}
26181bool EvalEmitter::emitGetGlobalUncheckedUint64( uint32_t A0, SourceInfo L) {
26182 if (!isActive()) return true;
26183 CurrentSource = L;
26184 return GetGlobalUnchecked<PT_Uint64>(S, CodePtr(), A0);
26185}
26186bool EvalEmitter::emitGetGlobalUncheckedIntAP( uint32_t A0, SourceInfo L) {
26187 if (!isActive()) return true;
26188 CurrentSource = L;
26189 return GetGlobalUnchecked<PT_IntAP>(S, CodePtr(), A0);
26190}
26191bool EvalEmitter::emitGetGlobalUncheckedIntAPS( uint32_t A0, SourceInfo L) {
26192 if (!isActive()) return true;
26193 CurrentSource = L;
26194 return GetGlobalUnchecked<PT_IntAPS>(S, CodePtr(), A0);
26195}
26196bool EvalEmitter::emitGetGlobalUncheckedBool( uint32_t A0, SourceInfo L) {
26197 if (!isActive()) return true;
26198 CurrentSource = L;
26199 return GetGlobalUnchecked<PT_Bool>(S, CodePtr(), A0);
26200}
26201bool EvalEmitter::emitGetGlobalUncheckedFixedPoint( uint32_t A0, SourceInfo L) {
26202 if (!isActive()) return true;
26203 CurrentSource = L;
26204 return GetGlobalUnchecked<PT_FixedPoint>(S, CodePtr(), A0);
26205}
26206bool EvalEmitter::emitGetGlobalUncheckedPtr( uint32_t A0, SourceInfo L) {
26207 if (!isActive()) return true;
26208 CurrentSource = L;
26209 return GetGlobalUnchecked<PT_Ptr>(S, CodePtr(), A0);
26210}
26211bool EvalEmitter::emitGetGlobalUncheckedMemberPtr( uint32_t A0, SourceInfo L) {
26212 if (!isActive()) return true;
26213 CurrentSource = L;
26214 return GetGlobalUnchecked<PT_MemberPtr>(S, CodePtr(), A0);
26215}
26216bool EvalEmitter::emitGetGlobalUncheckedFloat( uint32_t A0, SourceInfo L) {
26217 if (!isActive()) return true;
26218 CurrentSource = L;
26219 return GetGlobalUnchecked<PT_Float>(S, CodePtr(), A0);
26220}
26221#endif
26222#ifdef GET_OPCODE_NAMES
26223OP_GetIntPtrSint8,
26224OP_GetIntPtrUint8,
26225OP_GetIntPtrSint16,
26226OP_GetIntPtrUint16,
26227OP_GetIntPtrSint32,
26228OP_GetIntPtrUint32,
26229OP_GetIntPtrSint64,
26230OP_GetIntPtrUint64,
26231OP_GetIntPtrIntAP,
26232OP_GetIntPtrIntAPS,
26233OP_GetIntPtrBool,
26234OP_GetIntPtrFixedPoint,
26235#endif
26236#ifdef GET_INTERPFN_LIST
26237&Interp_GetIntPtrSint8,
26238&Interp_GetIntPtrUint8,
26239&Interp_GetIntPtrSint16,
26240&Interp_GetIntPtrUint16,
26241&Interp_GetIntPtrSint32,
26242&Interp_GetIntPtrUint32,
26243&Interp_GetIntPtrSint64,
26244&Interp_GetIntPtrUint64,
26245&Interp_GetIntPtrIntAP,
26246&Interp_GetIntPtrIntAPS,
26247&Interp_GetIntPtrBool,
26248&Interp_GetIntPtrFixedPoint,
26249#endif
26250#ifdef GET_INTERPFN_DISPATCHERS
26251PRESERVE_NONE
26252static bool Interp_GetIntPtrSint8(InterpState &S) {
26253 {
26254 CodePtr OpPC = S.PC;
26255 const auto V0 = ReadArg<const Type *>(S, S.PC);
26256 if (!GetIntPtr<PT_Sint8>(S, OpPC, V0)) return false;
26257 }
26258#if USE_TAILCALLS
26259 MUSTTAIL return InterpNext(S);
26260#else
26261 return true;
26262#endif
26263}
26264PRESERVE_NONE
26265static bool Interp_GetIntPtrUint8(InterpState &S) {
26266 {
26267 CodePtr OpPC = S.PC;
26268 const auto V0 = ReadArg<const Type *>(S, S.PC);
26269 if (!GetIntPtr<PT_Uint8>(S, OpPC, V0)) return false;
26270 }
26271#if USE_TAILCALLS
26272 MUSTTAIL return InterpNext(S);
26273#else
26274 return true;
26275#endif
26276}
26277PRESERVE_NONE
26278static bool Interp_GetIntPtrSint16(InterpState &S) {
26279 {
26280 CodePtr OpPC = S.PC;
26281 const auto V0 = ReadArg<const Type *>(S, S.PC);
26282 if (!GetIntPtr<PT_Sint16>(S, OpPC, V0)) return false;
26283 }
26284#if USE_TAILCALLS
26285 MUSTTAIL return InterpNext(S);
26286#else
26287 return true;
26288#endif
26289}
26290PRESERVE_NONE
26291static bool Interp_GetIntPtrUint16(InterpState &S) {
26292 {
26293 CodePtr OpPC = S.PC;
26294 const auto V0 = ReadArg<const Type *>(S, S.PC);
26295 if (!GetIntPtr<PT_Uint16>(S, OpPC, V0)) return false;
26296 }
26297#if USE_TAILCALLS
26298 MUSTTAIL return InterpNext(S);
26299#else
26300 return true;
26301#endif
26302}
26303PRESERVE_NONE
26304static bool Interp_GetIntPtrSint32(InterpState &S) {
26305 {
26306 CodePtr OpPC = S.PC;
26307 const auto V0 = ReadArg<const Type *>(S, S.PC);
26308 if (!GetIntPtr<PT_Sint32>(S, OpPC, V0)) return false;
26309 }
26310#if USE_TAILCALLS
26311 MUSTTAIL return InterpNext(S);
26312#else
26313 return true;
26314#endif
26315}
26316PRESERVE_NONE
26317static bool Interp_GetIntPtrUint32(InterpState &S) {
26318 {
26319 CodePtr OpPC = S.PC;
26320 const auto V0 = ReadArg<const Type *>(S, S.PC);
26321 if (!GetIntPtr<PT_Uint32>(S, OpPC, V0)) return false;
26322 }
26323#if USE_TAILCALLS
26324 MUSTTAIL return InterpNext(S);
26325#else
26326 return true;
26327#endif
26328}
26329PRESERVE_NONE
26330static bool Interp_GetIntPtrSint64(InterpState &S) {
26331 {
26332 CodePtr OpPC = S.PC;
26333 const auto V0 = ReadArg<const Type *>(S, S.PC);
26334 if (!GetIntPtr<PT_Sint64>(S, OpPC, V0)) return false;
26335 }
26336#if USE_TAILCALLS
26337 MUSTTAIL return InterpNext(S);
26338#else
26339 return true;
26340#endif
26341}
26342PRESERVE_NONE
26343static bool Interp_GetIntPtrUint64(InterpState &S) {
26344 {
26345 CodePtr OpPC = S.PC;
26346 const auto V0 = ReadArg<const Type *>(S, S.PC);
26347 if (!GetIntPtr<PT_Uint64>(S, OpPC, V0)) return false;
26348 }
26349#if USE_TAILCALLS
26350 MUSTTAIL return InterpNext(S);
26351#else
26352 return true;
26353#endif
26354}
26355PRESERVE_NONE
26356static bool Interp_GetIntPtrIntAP(InterpState &S) {
26357 {
26358 CodePtr OpPC = S.PC;
26359 const auto V0 = ReadArg<const Type *>(S, S.PC);
26360 if (!GetIntPtr<PT_IntAP>(S, OpPC, V0)) return false;
26361 }
26362#if USE_TAILCALLS
26363 MUSTTAIL return InterpNext(S);
26364#else
26365 return true;
26366#endif
26367}
26368PRESERVE_NONE
26369static bool Interp_GetIntPtrIntAPS(InterpState &S) {
26370 {
26371 CodePtr OpPC = S.PC;
26372 const auto V0 = ReadArg<const Type *>(S, S.PC);
26373 if (!GetIntPtr<PT_IntAPS>(S, OpPC, V0)) return false;
26374 }
26375#if USE_TAILCALLS
26376 MUSTTAIL return InterpNext(S);
26377#else
26378 return true;
26379#endif
26380}
26381PRESERVE_NONE
26382static bool Interp_GetIntPtrBool(InterpState &S) {
26383 {
26384 CodePtr OpPC = S.PC;
26385 const auto V0 = ReadArg<const Type *>(S, S.PC);
26386 if (!GetIntPtr<PT_Bool>(S, OpPC, V0)) return false;
26387 }
26388#if USE_TAILCALLS
26389 MUSTTAIL return InterpNext(S);
26390#else
26391 return true;
26392#endif
26393}
26394PRESERVE_NONE
26395static bool Interp_GetIntPtrFixedPoint(InterpState &S) {
26396 {
26397 CodePtr OpPC = S.PC;
26398 const auto V0 = ReadArg<const Type *>(S, S.PC);
26399 if (!GetIntPtr<PT_FixedPoint>(S, OpPC, V0)) return false;
26400 }
26401#if USE_TAILCALLS
26402 MUSTTAIL return InterpNext(S);
26403#else
26404 return true;
26405#endif
26406}
26407#endif
26408#ifdef GET_DISASM
26409case OP_GetIntPtrSint8:
26410 Text.Op = PrintName("GetIntPtrSint8");
26411 Text.Args.push_back(printArg<const Type *>(PC));
26412 break;
26413case OP_GetIntPtrUint8:
26414 Text.Op = PrintName("GetIntPtrUint8");
26415 Text.Args.push_back(printArg<const Type *>(PC));
26416 break;
26417case OP_GetIntPtrSint16:
26418 Text.Op = PrintName("GetIntPtrSint16");
26419 Text.Args.push_back(printArg<const Type *>(PC));
26420 break;
26421case OP_GetIntPtrUint16:
26422 Text.Op = PrintName("GetIntPtrUint16");
26423 Text.Args.push_back(printArg<const Type *>(PC));
26424 break;
26425case OP_GetIntPtrSint32:
26426 Text.Op = PrintName("GetIntPtrSint32");
26427 Text.Args.push_back(printArg<const Type *>(PC));
26428 break;
26429case OP_GetIntPtrUint32:
26430 Text.Op = PrintName("GetIntPtrUint32");
26431 Text.Args.push_back(printArg<const Type *>(PC));
26432 break;
26433case OP_GetIntPtrSint64:
26434 Text.Op = PrintName("GetIntPtrSint64");
26435 Text.Args.push_back(printArg<const Type *>(PC));
26436 break;
26437case OP_GetIntPtrUint64:
26438 Text.Op = PrintName("GetIntPtrUint64");
26439 Text.Args.push_back(printArg<const Type *>(PC));
26440 break;
26441case OP_GetIntPtrIntAP:
26442 Text.Op = PrintName("GetIntPtrIntAP");
26443 Text.Args.push_back(printArg<const Type *>(PC));
26444 break;
26445case OP_GetIntPtrIntAPS:
26446 Text.Op = PrintName("GetIntPtrIntAPS");
26447 Text.Args.push_back(printArg<const Type *>(PC));
26448 break;
26449case OP_GetIntPtrBool:
26450 Text.Op = PrintName("GetIntPtrBool");
26451 Text.Args.push_back(printArg<const Type *>(PC));
26452 break;
26453case OP_GetIntPtrFixedPoint:
26454 Text.Op = PrintName("GetIntPtrFixedPoint");
26455 Text.Args.push_back(printArg<const Type *>(PC));
26456 break;
26457#endif
26458#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26459bool emitGetIntPtrSint8( const Type * , SourceInfo);
26460bool emitGetIntPtrUint8( const Type * , SourceInfo);
26461bool emitGetIntPtrSint16( const Type * , SourceInfo);
26462bool emitGetIntPtrUint16( const Type * , SourceInfo);
26463bool emitGetIntPtrSint32( const Type * , SourceInfo);
26464bool emitGetIntPtrUint32( const Type * , SourceInfo);
26465bool emitGetIntPtrSint64( const Type * , SourceInfo);
26466bool emitGetIntPtrUint64( const Type * , SourceInfo);
26467bool emitGetIntPtrIntAP( const Type * , SourceInfo);
26468bool emitGetIntPtrIntAPS( const Type * , SourceInfo);
26469bool emitGetIntPtrBool( const Type * , SourceInfo);
26470bool emitGetIntPtrFixedPoint( const Type * , SourceInfo);
26471#endif
26472#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26473[[nodiscard]] bool emitGetIntPtr(PrimType, const Type *, SourceInfo I);
26474#endif
26475#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
26476bool
26477#if defined(GET_EVAL_IMPL)
26478EvalEmitter
26479#else
26480ByteCodeEmitter
26481#endif
26482::emitGetIntPtr(PrimType T0, const Type * A0, SourceInfo I) {
26483 switch (T0) {
26484 case PT_Sint8:
26485 return emitGetIntPtrSint8(A0, I);
26486 case PT_Uint8:
26487 return emitGetIntPtrUint8(A0, I);
26488 case PT_Sint16:
26489 return emitGetIntPtrSint16(A0, I);
26490 case PT_Uint16:
26491 return emitGetIntPtrUint16(A0, I);
26492 case PT_Sint32:
26493 return emitGetIntPtrSint32(A0, I);
26494 case PT_Uint32:
26495 return emitGetIntPtrUint32(A0, I);
26496 case PT_Sint64:
26497 return emitGetIntPtrSint64(A0, I);
26498 case PT_Uint64:
26499 return emitGetIntPtrUint64(A0, I);
26500 case PT_IntAP:
26501 return emitGetIntPtrIntAP(A0, I);
26502 case PT_IntAPS:
26503 return emitGetIntPtrIntAPS(A0, I);
26504 case PT_Bool:
26505 return emitGetIntPtrBool(A0, I);
26506 case PT_FixedPoint:
26507 return emitGetIntPtrFixedPoint(A0, I);
26508 default: llvm_unreachable("invalid type: emitGetIntPtr");
26509 }
26510 llvm_unreachable("invalid enum value");
26511}
26512#endif
26513#ifdef GET_LINK_IMPL
26514bool ByteCodeEmitter::emitGetIntPtrSint8( const Type * A0, SourceInfo L) {
26515 return emitOp<const Type *>(OP_GetIntPtrSint8, A0, L);
26516}
26517bool ByteCodeEmitter::emitGetIntPtrUint8( const Type * A0, SourceInfo L) {
26518 return emitOp<const Type *>(OP_GetIntPtrUint8, A0, L);
26519}
26520bool ByteCodeEmitter::emitGetIntPtrSint16( const Type * A0, SourceInfo L) {
26521 return emitOp<const Type *>(OP_GetIntPtrSint16, A0, L);
26522}
26523bool ByteCodeEmitter::emitGetIntPtrUint16( const Type * A0, SourceInfo L) {
26524 return emitOp<const Type *>(OP_GetIntPtrUint16, A0, L);
26525}
26526bool ByteCodeEmitter::emitGetIntPtrSint32( const Type * A0, SourceInfo L) {
26527 return emitOp<const Type *>(OP_GetIntPtrSint32, A0, L);
26528}
26529bool ByteCodeEmitter::emitGetIntPtrUint32( const Type * A0, SourceInfo L) {
26530 return emitOp<const Type *>(OP_GetIntPtrUint32, A0, L);
26531}
26532bool ByteCodeEmitter::emitGetIntPtrSint64( const Type * A0, SourceInfo L) {
26533 return emitOp<const Type *>(OP_GetIntPtrSint64, A0, L);
26534}
26535bool ByteCodeEmitter::emitGetIntPtrUint64( const Type * A0, SourceInfo L) {
26536 return emitOp<const Type *>(OP_GetIntPtrUint64, A0, L);
26537}
26538bool ByteCodeEmitter::emitGetIntPtrIntAP( const Type * A0, SourceInfo L) {
26539 return emitOp<const Type *>(OP_GetIntPtrIntAP, A0, L);
26540}
26541bool ByteCodeEmitter::emitGetIntPtrIntAPS( const Type * A0, SourceInfo L) {
26542 return emitOp<const Type *>(OP_GetIntPtrIntAPS, A0, L);
26543}
26544bool ByteCodeEmitter::emitGetIntPtrBool( const Type * A0, SourceInfo L) {
26545 return emitOp<const Type *>(OP_GetIntPtrBool, A0, L);
26546}
26547bool ByteCodeEmitter::emitGetIntPtrFixedPoint( const Type * A0, SourceInfo L) {
26548 return emitOp<const Type *>(OP_GetIntPtrFixedPoint, A0, L);
26549}
26550#endif
26551#ifdef GET_EVAL_IMPL
26552bool EvalEmitter::emitGetIntPtrSint8( const Type * A0, SourceInfo L) {
26553 if (!isActive()) return true;
26554 CurrentSource = L;
26555 return GetIntPtr<PT_Sint8>(S, CodePtr(), A0);
26556}
26557bool EvalEmitter::emitGetIntPtrUint8( const Type * A0, SourceInfo L) {
26558 if (!isActive()) return true;
26559 CurrentSource = L;
26560 return GetIntPtr<PT_Uint8>(S, CodePtr(), A0);
26561}
26562bool EvalEmitter::emitGetIntPtrSint16( const Type * A0, SourceInfo L) {
26563 if (!isActive()) return true;
26564 CurrentSource = L;
26565 return GetIntPtr<PT_Sint16>(S, CodePtr(), A0);
26566}
26567bool EvalEmitter::emitGetIntPtrUint16( const Type * A0, SourceInfo L) {
26568 if (!isActive()) return true;
26569 CurrentSource = L;
26570 return GetIntPtr<PT_Uint16>(S, CodePtr(), A0);
26571}
26572bool EvalEmitter::emitGetIntPtrSint32( const Type * A0, SourceInfo L) {
26573 if (!isActive()) return true;
26574 CurrentSource = L;
26575 return GetIntPtr<PT_Sint32>(S, CodePtr(), A0);
26576}
26577bool EvalEmitter::emitGetIntPtrUint32( const Type * A0, SourceInfo L) {
26578 if (!isActive()) return true;
26579 CurrentSource = L;
26580 return GetIntPtr<PT_Uint32>(S, CodePtr(), A0);
26581}
26582bool EvalEmitter::emitGetIntPtrSint64( const Type * A0, SourceInfo L) {
26583 if (!isActive()) return true;
26584 CurrentSource = L;
26585 return GetIntPtr<PT_Sint64>(S, CodePtr(), A0);
26586}
26587bool EvalEmitter::emitGetIntPtrUint64( const Type * A0, SourceInfo L) {
26588 if (!isActive()) return true;
26589 CurrentSource = L;
26590 return GetIntPtr<PT_Uint64>(S, CodePtr(), A0);
26591}
26592bool EvalEmitter::emitGetIntPtrIntAP( const Type * A0, SourceInfo L) {
26593 if (!isActive()) return true;
26594 CurrentSource = L;
26595 return GetIntPtr<PT_IntAP>(S, CodePtr(), A0);
26596}
26597bool EvalEmitter::emitGetIntPtrIntAPS( const Type * A0, SourceInfo L) {
26598 if (!isActive()) return true;
26599 CurrentSource = L;
26600 return GetIntPtr<PT_IntAPS>(S, CodePtr(), A0);
26601}
26602bool EvalEmitter::emitGetIntPtrBool( const Type * A0, SourceInfo L) {
26603 if (!isActive()) return true;
26604 CurrentSource = L;
26605 return GetIntPtr<PT_Bool>(S, CodePtr(), A0);
26606}
26607bool EvalEmitter::emitGetIntPtrFixedPoint( const Type * A0, SourceInfo L) {
26608 if (!isActive()) return true;
26609 CurrentSource = L;
26610 return GetIntPtr<PT_FixedPoint>(S, CodePtr(), A0);
26611}
26612#endif
26613#ifdef GET_OPCODE_NAMES
26614OP_GetLocalSint8,
26615OP_GetLocalUint8,
26616OP_GetLocalSint16,
26617OP_GetLocalUint16,
26618OP_GetLocalSint32,
26619OP_GetLocalUint32,
26620OP_GetLocalSint64,
26621OP_GetLocalUint64,
26622OP_GetLocalIntAP,
26623OP_GetLocalIntAPS,
26624OP_GetLocalBool,
26625OP_GetLocalFixedPoint,
26626OP_GetLocalPtr,
26627OP_GetLocalMemberPtr,
26628OP_GetLocalFloat,
26629#endif
26630#ifdef GET_INTERPFN_LIST
26631&Interp_GetLocalSint8,
26632&Interp_GetLocalUint8,
26633&Interp_GetLocalSint16,
26634&Interp_GetLocalUint16,
26635&Interp_GetLocalSint32,
26636&Interp_GetLocalUint32,
26637&Interp_GetLocalSint64,
26638&Interp_GetLocalUint64,
26639&Interp_GetLocalIntAP,
26640&Interp_GetLocalIntAPS,
26641&Interp_GetLocalBool,
26642&Interp_GetLocalFixedPoint,
26643&Interp_GetLocalPtr,
26644&Interp_GetLocalMemberPtr,
26645&Interp_GetLocalFloat,
26646#endif
26647#ifdef GET_INTERPFN_DISPATCHERS
26648PRESERVE_NONE
26649static bool Interp_GetLocalSint8(InterpState &S) {
26650 {
26651 CodePtr OpPC = S.PC;
26652 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26653 if (!GetLocal<PT_Sint8>(S, OpPC, V0)) return false;
26654 }
26655#if USE_TAILCALLS
26656 MUSTTAIL return InterpNext(S);
26657#else
26658 return true;
26659#endif
26660}
26661PRESERVE_NONE
26662static bool Interp_GetLocalUint8(InterpState &S) {
26663 {
26664 CodePtr OpPC = S.PC;
26665 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26666 if (!GetLocal<PT_Uint8>(S, OpPC, V0)) return false;
26667 }
26668#if USE_TAILCALLS
26669 MUSTTAIL return InterpNext(S);
26670#else
26671 return true;
26672#endif
26673}
26674PRESERVE_NONE
26675static bool Interp_GetLocalSint16(InterpState &S) {
26676 {
26677 CodePtr OpPC = S.PC;
26678 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26679 if (!GetLocal<PT_Sint16>(S, OpPC, V0)) return false;
26680 }
26681#if USE_TAILCALLS
26682 MUSTTAIL return InterpNext(S);
26683#else
26684 return true;
26685#endif
26686}
26687PRESERVE_NONE
26688static bool Interp_GetLocalUint16(InterpState &S) {
26689 {
26690 CodePtr OpPC = S.PC;
26691 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26692 if (!GetLocal<PT_Uint16>(S, OpPC, V0)) return false;
26693 }
26694#if USE_TAILCALLS
26695 MUSTTAIL return InterpNext(S);
26696#else
26697 return true;
26698#endif
26699}
26700PRESERVE_NONE
26701static bool Interp_GetLocalSint32(InterpState &S) {
26702 {
26703 CodePtr OpPC = S.PC;
26704 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26705 if (!GetLocal<PT_Sint32>(S, OpPC, V0)) return false;
26706 }
26707#if USE_TAILCALLS
26708 MUSTTAIL return InterpNext(S);
26709#else
26710 return true;
26711#endif
26712}
26713PRESERVE_NONE
26714static bool Interp_GetLocalUint32(InterpState &S) {
26715 {
26716 CodePtr OpPC = S.PC;
26717 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26718 if (!GetLocal<PT_Uint32>(S, OpPC, V0)) return false;
26719 }
26720#if USE_TAILCALLS
26721 MUSTTAIL return InterpNext(S);
26722#else
26723 return true;
26724#endif
26725}
26726PRESERVE_NONE
26727static bool Interp_GetLocalSint64(InterpState &S) {
26728 {
26729 CodePtr OpPC = S.PC;
26730 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26731 if (!GetLocal<PT_Sint64>(S, OpPC, V0)) return false;
26732 }
26733#if USE_TAILCALLS
26734 MUSTTAIL return InterpNext(S);
26735#else
26736 return true;
26737#endif
26738}
26739PRESERVE_NONE
26740static bool Interp_GetLocalUint64(InterpState &S) {
26741 {
26742 CodePtr OpPC = S.PC;
26743 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26744 if (!GetLocal<PT_Uint64>(S, OpPC, V0)) return false;
26745 }
26746#if USE_TAILCALLS
26747 MUSTTAIL return InterpNext(S);
26748#else
26749 return true;
26750#endif
26751}
26752PRESERVE_NONE
26753static bool Interp_GetLocalIntAP(InterpState &S) {
26754 {
26755 CodePtr OpPC = S.PC;
26756 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26757 if (!GetLocal<PT_IntAP>(S, OpPC, V0)) return false;
26758 }
26759#if USE_TAILCALLS
26760 MUSTTAIL return InterpNext(S);
26761#else
26762 return true;
26763#endif
26764}
26765PRESERVE_NONE
26766static bool Interp_GetLocalIntAPS(InterpState &S) {
26767 {
26768 CodePtr OpPC = S.PC;
26769 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26770 if (!GetLocal<PT_IntAPS>(S, OpPC, V0)) return false;
26771 }
26772#if USE_TAILCALLS
26773 MUSTTAIL return InterpNext(S);
26774#else
26775 return true;
26776#endif
26777}
26778PRESERVE_NONE
26779static bool Interp_GetLocalBool(InterpState &S) {
26780 {
26781 CodePtr OpPC = S.PC;
26782 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26783 if (!GetLocal<PT_Bool>(S, OpPC, V0)) return false;
26784 }
26785#if USE_TAILCALLS
26786 MUSTTAIL return InterpNext(S);
26787#else
26788 return true;
26789#endif
26790}
26791PRESERVE_NONE
26792static bool Interp_GetLocalFixedPoint(InterpState &S) {
26793 {
26794 CodePtr OpPC = S.PC;
26795 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26796 if (!GetLocal<PT_FixedPoint>(S, OpPC, V0)) return false;
26797 }
26798#if USE_TAILCALLS
26799 MUSTTAIL return InterpNext(S);
26800#else
26801 return true;
26802#endif
26803}
26804PRESERVE_NONE
26805static bool Interp_GetLocalPtr(InterpState &S) {
26806 {
26807 CodePtr OpPC = S.PC;
26808 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26809 if (!GetLocal<PT_Ptr>(S, OpPC, V0)) return false;
26810 }
26811#if USE_TAILCALLS
26812 MUSTTAIL return InterpNext(S);
26813#else
26814 return true;
26815#endif
26816}
26817PRESERVE_NONE
26818static bool Interp_GetLocalMemberPtr(InterpState &S) {
26819 {
26820 CodePtr OpPC = S.PC;
26821 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26822 if (!GetLocal<PT_MemberPtr>(S, OpPC, V0)) return false;
26823 }
26824#if USE_TAILCALLS
26825 MUSTTAIL return InterpNext(S);
26826#else
26827 return true;
26828#endif
26829}
26830PRESERVE_NONE
26831static bool Interp_GetLocalFloat(InterpState &S) {
26832 {
26833 CodePtr OpPC = S.PC;
26834 const auto V0 = ReadArg<uint32_t>(S, S.PC);
26835 if (!GetLocal<PT_Float>(S, OpPC, V0)) return false;
26836 }
26837#if USE_TAILCALLS
26838 MUSTTAIL return InterpNext(S);
26839#else
26840 return true;
26841#endif
26842}
26843#endif
26844#ifdef GET_DISASM
26845case OP_GetLocalSint8:
26846 Text.Op = PrintName("GetLocalSint8");
26847 Text.Args.push_back(printArg<uint32_t>(PC));
26848 break;
26849case OP_GetLocalUint8:
26850 Text.Op = PrintName("GetLocalUint8");
26851 Text.Args.push_back(printArg<uint32_t>(PC));
26852 break;
26853case OP_GetLocalSint16:
26854 Text.Op = PrintName("GetLocalSint16");
26855 Text.Args.push_back(printArg<uint32_t>(PC));
26856 break;
26857case OP_GetLocalUint16:
26858 Text.Op = PrintName("GetLocalUint16");
26859 Text.Args.push_back(printArg<uint32_t>(PC));
26860 break;
26861case OP_GetLocalSint32:
26862 Text.Op = PrintName("GetLocalSint32");
26863 Text.Args.push_back(printArg<uint32_t>(PC));
26864 break;
26865case OP_GetLocalUint32:
26866 Text.Op = PrintName("GetLocalUint32");
26867 Text.Args.push_back(printArg<uint32_t>(PC));
26868 break;
26869case OP_GetLocalSint64:
26870 Text.Op = PrintName("GetLocalSint64");
26871 Text.Args.push_back(printArg<uint32_t>(PC));
26872 break;
26873case OP_GetLocalUint64:
26874 Text.Op = PrintName("GetLocalUint64");
26875 Text.Args.push_back(printArg<uint32_t>(PC));
26876 break;
26877case OP_GetLocalIntAP:
26878 Text.Op = PrintName("GetLocalIntAP");
26879 Text.Args.push_back(printArg<uint32_t>(PC));
26880 break;
26881case OP_GetLocalIntAPS:
26882 Text.Op = PrintName("GetLocalIntAPS");
26883 Text.Args.push_back(printArg<uint32_t>(PC));
26884 break;
26885case OP_GetLocalBool:
26886 Text.Op = PrintName("GetLocalBool");
26887 Text.Args.push_back(printArg<uint32_t>(PC));
26888 break;
26889case OP_GetLocalFixedPoint:
26890 Text.Op = PrintName("GetLocalFixedPoint");
26891 Text.Args.push_back(printArg<uint32_t>(PC));
26892 break;
26893case OP_GetLocalPtr:
26894 Text.Op = PrintName("GetLocalPtr");
26895 Text.Args.push_back(printArg<uint32_t>(PC));
26896 break;
26897case OP_GetLocalMemberPtr:
26898 Text.Op = PrintName("GetLocalMemberPtr");
26899 Text.Args.push_back(printArg<uint32_t>(PC));
26900 break;
26901case OP_GetLocalFloat:
26902 Text.Op = PrintName("GetLocalFloat");
26903 Text.Args.push_back(printArg<uint32_t>(PC));
26904 break;
26905#endif
26906#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26907bool emitGetLocalSint8( uint32_t , SourceInfo);
26908bool emitGetLocalUint8( uint32_t , SourceInfo);
26909bool emitGetLocalSint16( uint32_t , SourceInfo);
26910bool emitGetLocalUint16( uint32_t , SourceInfo);
26911bool emitGetLocalSint32( uint32_t , SourceInfo);
26912bool emitGetLocalUint32( uint32_t , SourceInfo);
26913bool emitGetLocalSint64( uint32_t , SourceInfo);
26914bool emitGetLocalUint64( uint32_t , SourceInfo);
26915bool emitGetLocalIntAP( uint32_t , SourceInfo);
26916bool emitGetLocalIntAPS( uint32_t , SourceInfo);
26917bool emitGetLocalBool( uint32_t , SourceInfo);
26918bool emitGetLocalFixedPoint( uint32_t , SourceInfo);
26919bool emitGetLocalPtr( uint32_t , SourceInfo);
26920bool emitGetLocalMemberPtr( uint32_t , SourceInfo);
26921bool emitGetLocalFloat( uint32_t , SourceInfo);
26922#if defined(GET_EVAL_PROTO)
26923template<PrimType>
26924bool emitGetLocal(uint32_t, SourceInfo);
26925#endif
26926#endif
26927#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26928[[nodiscard]] bool emitGetLocal(PrimType, uint32_t, SourceInfo I);
26929#endif
26930#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
26931bool
26932#if defined(GET_EVAL_IMPL)
26933EvalEmitter
26934#else
26935ByteCodeEmitter
26936#endif
26937::emitGetLocal(PrimType T0, uint32_t A0, SourceInfo I) {
26938 switch (T0) {
26939 case PT_Sint8:
26940#ifdef GET_LINK_IMPL
26941 return emitGetLocalSint8
26942#else
26943 return emitGetLocal<PT_Sint8>
26944#endif
26945 (A0, I);
26946 case PT_Uint8:
26947#ifdef GET_LINK_IMPL
26948 return emitGetLocalUint8
26949#else
26950 return emitGetLocal<PT_Uint8>
26951#endif
26952 (A0, I);
26953 case PT_Sint16:
26954#ifdef GET_LINK_IMPL
26955 return emitGetLocalSint16
26956#else
26957 return emitGetLocal<PT_Sint16>
26958#endif
26959 (A0, I);
26960 case PT_Uint16:
26961#ifdef GET_LINK_IMPL
26962 return emitGetLocalUint16
26963#else
26964 return emitGetLocal<PT_Uint16>
26965#endif
26966 (A0, I);
26967 case PT_Sint32:
26968#ifdef GET_LINK_IMPL
26969 return emitGetLocalSint32
26970#else
26971 return emitGetLocal<PT_Sint32>
26972#endif
26973 (A0, I);
26974 case PT_Uint32:
26975#ifdef GET_LINK_IMPL
26976 return emitGetLocalUint32
26977#else
26978 return emitGetLocal<PT_Uint32>
26979#endif
26980 (A0, I);
26981 case PT_Sint64:
26982#ifdef GET_LINK_IMPL
26983 return emitGetLocalSint64
26984#else
26985 return emitGetLocal<PT_Sint64>
26986#endif
26987 (A0, I);
26988 case PT_Uint64:
26989#ifdef GET_LINK_IMPL
26990 return emitGetLocalUint64
26991#else
26992 return emitGetLocal<PT_Uint64>
26993#endif
26994 (A0, I);
26995 case PT_IntAP:
26996#ifdef GET_LINK_IMPL
26997 return emitGetLocalIntAP
26998#else
26999 return emitGetLocal<PT_IntAP>
27000#endif
27001 (A0, I);
27002 case PT_IntAPS:
27003#ifdef GET_LINK_IMPL
27004 return emitGetLocalIntAPS
27005#else
27006 return emitGetLocal<PT_IntAPS>
27007#endif
27008 (A0, I);
27009 case PT_Bool:
27010#ifdef GET_LINK_IMPL
27011 return emitGetLocalBool
27012#else
27013 return emitGetLocal<PT_Bool>
27014#endif
27015 (A0, I);
27016 case PT_FixedPoint:
27017#ifdef GET_LINK_IMPL
27018 return emitGetLocalFixedPoint
27019#else
27020 return emitGetLocal<PT_FixedPoint>
27021#endif
27022 (A0, I);
27023 case PT_Ptr:
27024#ifdef GET_LINK_IMPL
27025 return emitGetLocalPtr
27026#else
27027 return emitGetLocal<PT_Ptr>
27028#endif
27029 (A0, I);
27030 case PT_MemberPtr:
27031#ifdef GET_LINK_IMPL
27032 return emitGetLocalMemberPtr
27033#else
27034 return emitGetLocal<PT_MemberPtr>
27035#endif
27036 (A0, I);
27037 case PT_Float:
27038#ifdef GET_LINK_IMPL
27039 return emitGetLocalFloat
27040#else
27041 return emitGetLocal<PT_Float>
27042#endif
27043 (A0, I);
27044 }
27045 llvm_unreachable("invalid enum value");
27046}
27047#endif
27048#ifdef GET_LINK_IMPL
27049bool ByteCodeEmitter::emitGetLocalSint8( uint32_t A0, SourceInfo L) {
27050 return emitOp<uint32_t>(OP_GetLocalSint8, A0, L);
27051}
27052bool ByteCodeEmitter::emitGetLocalUint8( uint32_t A0, SourceInfo L) {
27053 return emitOp<uint32_t>(OP_GetLocalUint8, A0, L);
27054}
27055bool ByteCodeEmitter::emitGetLocalSint16( uint32_t A0, SourceInfo L) {
27056 return emitOp<uint32_t>(OP_GetLocalSint16, A0, L);
27057}
27058bool ByteCodeEmitter::emitGetLocalUint16( uint32_t A0, SourceInfo L) {
27059 return emitOp<uint32_t>(OP_GetLocalUint16, A0, L);
27060}
27061bool ByteCodeEmitter::emitGetLocalSint32( uint32_t A0, SourceInfo L) {
27062 return emitOp<uint32_t>(OP_GetLocalSint32, A0, L);
27063}
27064bool ByteCodeEmitter::emitGetLocalUint32( uint32_t A0, SourceInfo L) {
27065 return emitOp<uint32_t>(OP_GetLocalUint32, A0, L);
27066}
27067bool ByteCodeEmitter::emitGetLocalSint64( uint32_t A0, SourceInfo L) {
27068 return emitOp<uint32_t>(OP_GetLocalSint64, A0, L);
27069}
27070bool ByteCodeEmitter::emitGetLocalUint64( uint32_t A0, SourceInfo L) {
27071 return emitOp<uint32_t>(OP_GetLocalUint64, A0, L);
27072}
27073bool ByteCodeEmitter::emitGetLocalIntAP( uint32_t A0, SourceInfo L) {
27074 return emitOp<uint32_t>(OP_GetLocalIntAP, A0, L);
27075}
27076bool ByteCodeEmitter::emitGetLocalIntAPS( uint32_t A0, SourceInfo L) {
27077 return emitOp<uint32_t>(OP_GetLocalIntAPS, A0, L);
27078}
27079bool ByteCodeEmitter::emitGetLocalBool( uint32_t A0, SourceInfo L) {
27080 return emitOp<uint32_t>(OP_GetLocalBool, A0, L);
27081}
27082bool ByteCodeEmitter::emitGetLocalFixedPoint( uint32_t A0, SourceInfo L) {
27083 return emitOp<uint32_t>(OP_GetLocalFixedPoint, A0, L);
27084}
27085bool ByteCodeEmitter::emitGetLocalPtr( uint32_t A0, SourceInfo L) {
27086 return emitOp<uint32_t>(OP_GetLocalPtr, A0, L);
27087}
27088bool ByteCodeEmitter::emitGetLocalMemberPtr( uint32_t A0, SourceInfo L) {
27089 return emitOp<uint32_t>(OP_GetLocalMemberPtr, A0, L);
27090}
27091bool ByteCodeEmitter::emitGetLocalFloat( uint32_t A0, SourceInfo L) {
27092 return emitOp<uint32_t>(OP_GetLocalFloat, A0, L);
27093}
27094#endif
27095#ifdef GET_OPCODE_NAMES
27096OP_GetLocalEnabled,
27097#endif
27098#ifdef GET_INTERPFN_LIST
27099&Interp_GetLocalEnabled,
27100#endif
27101#ifdef GET_INTERPFN_DISPATCHERS
27102PRESERVE_NONE
27103static bool Interp_GetLocalEnabled(InterpState &S) {
27104 {
27105 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27106 GetLocalEnabled(S, V0);
27107 }
27108#if USE_TAILCALLS
27109 MUSTTAIL return InterpNext(S);
27110#else
27111 return true;
27112#endif
27113}
27114#endif
27115#ifdef GET_DISASM
27116case OP_GetLocalEnabled:
27117 Text.Op = PrintName("GetLocalEnabled");
27118 Text.Args.push_back(printArg<uint32_t>(PC));
27119 break;
27120#endif
27121#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27122bool emitGetLocalEnabled( uint32_t , SourceInfo);
27123#endif
27124#ifdef GET_LINK_IMPL
27125bool ByteCodeEmitter::emitGetLocalEnabled( uint32_t A0, SourceInfo L) {
27126 return emitOp<uint32_t>(OP_GetLocalEnabled, A0, L);
27127}
27128#endif
27129#ifdef GET_OPCODE_NAMES
27130OP_GetMemberPtr,
27131#endif
27132#ifdef GET_INTERPFN_LIST
27133&Interp_GetMemberPtr,
27134#endif
27135#ifdef GET_INTERPFN_DISPATCHERS
27136PRESERVE_NONE
27137static bool Interp_GetMemberPtr(InterpState &S) {
27138 {
27139 const auto V0 = ReadArg<const ValueDecl*>(S, S.PC);
27140 GetMemberPtr(S, V0);
27141 }
27142#if USE_TAILCALLS
27143 MUSTTAIL return InterpNext(S);
27144#else
27145 return true;
27146#endif
27147}
27148#endif
27149#ifdef GET_DISASM
27150case OP_GetMemberPtr:
27151 Text.Op = PrintName("GetMemberPtr");
27152 Text.Args.push_back(printArg<const ValueDecl*>(PC));
27153 break;
27154#endif
27155#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27156bool emitGetMemberPtr( const ValueDecl* , SourceInfo);
27157#endif
27158#ifdef GET_LINK_IMPL
27159bool ByteCodeEmitter::emitGetMemberPtr( const ValueDecl* A0, SourceInfo L) {
27160 return emitOp<const ValueDecl*>(OP_GetMemberPtr, A0, L);
27161}
27162#endif
27163#ifdef GET_EVAL_IMPL
27164bool EvalEmitter::emitGetMemberPtr( const ValueDecl* A0, SourceInfo L) {
27165 if (!isActive()) return true;
27166 CurrentSource = L;
27167 return GetMemberPtr(S, A0);
27168}
27169#endif
27170#ifdef GET_OPCODE_NAMES
27171OP_GetMemberPtrBase,
27172#endif
27173#ifdef GET_INTERPFN_LIST
27174&Interp_GetMemberPtrBase,
27175#endif
27176#ifdef GET_INTERPFN_DISPATCHERS
27177PRESERVE_NONE
27178static bool Interp_GetMemberPtrBase(InterpState &S) {
27179 if (!GetMemberPtrBase(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_GetMemberPtrBase:
27189 Text.Op = PrintName("GetMemberPtrBase");
27190 break;
27191#endif
27192#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27193bool emitGetMemberPtrBase(SourceInfo);
27194#endif
27195#ifdef GET_LINK_IMPL
27196bool ByteCodeEmitter::emitGetMemberPtrBase(SourceInfo L) {
27197 return emitOp<>(OP_GetMemberPtrBase, L);
27198}
27199#endif
27200#ifdef GET_EVAL_IMPL
27201bool EvalEmitter::emitGetMemberPtrBase(SourceInfo L) {
27202 if (!isActive()) return true;
27203 CurrentSource = L;
27204 return GetMemberPtrBase(S);
27205}
27206#endif
27207#ifdef GET_OPCODE_NAMES
27208OP_GetMemberPtrDecl,
27209#endif
27210#ifdef GET_INTERPFN_LIST
27211&Interp_GetMemberPtrDecl,
27212#endif
27213#ifdef GET_INTERPFN_DISPATCHERS
27214PRESERVE_NONE
27215static bool Interp_GetMemberPtrDecl(InterpState &S) {
27216 if (!GetMemberPtrDecl(S)) return false;
27217#if USE_TAILCALLS
27218 MUSTTAIL return InterpNext(S);
27219#else
27220 return true;
27221#endif
27222}
27223#endif
27224#ifdef GET_DISASM
27225case OP_GetMemberPtrDecl:
27226 Text.Op = PrintName("GetMemberPtrDecl");
27227 break;
27228#endif
27229#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27230bool emitGetMemberPtrDecl(SourceInfo);
27231#endif
27232#ifdef GET_LINK_IMPL
27233bool ByteCodeEmitter::emitGetMemberPtrDecl(SourceInfo L) {
27234 return emitOp<>(OP_GetMemberPtrDecl, L);
27235}
27236#endif
27237#ifdef GET_EVAL_IMPL
27238bool EvalEmitter::emitGetMemberPtrDecl(SourceInfo L) {
27239 if (!isActive()) return true;
27240 CurrentSource = L;
27241 return GetMemberPtrDecl(S);
27242}
27243#endif
27244#ifdef GET_OPCODE_NAMES
27245OP_GetOpaquePtr,
27246#endif
27247#ifdef GET_INTERPFN_LIST
27248&Interp_GetOpaquePtr,
27249#endif
27250#ifdef GET_INTERPFN_DISPATCHERS
27251PRESERVE_NONE
27252static bool Interp_GetOpaquePtr(InterpState &S) {
27253 {
27254 const auto V0 = ReadArg<DeclOrExpr>(S, S.PC);
27255 const auto V1 = ReadArg<bool>(S, S.PC);
27256 GetOpaquePtr(S, V0, V1);
27257 }
27258#if USE_TAILCALLS
27259 MUSTTAIL return InterpNext(S);
27260#else
27261 return true;
27262#endif
27263}
27264#endif
27265#ifdef GET_DISASM
27266case OP_GetOpaquePtr:
27267 Text.Op = PrintName("GetOpaquePtr");
27268 Text.Args.push_back(printArg<DeclOrExpr>(PC));
27269 Text.Args.push_back(printArg<bool>(PC));
27270 break;
27271#endif
27272#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27273bool emitGetOpaquePtr( DeclOrExpr , bool , SourceInfo);
27274#endif
27275#ifdef GET_LINK_IMPL
27276bool ByteCodeEmitter::emitGetOpaquePtr( DeclOrExpr A0, bool A1, SourceInfo L) {
27277 return emitOp<DeclOrExpr, bool>(OP_GetOpaquePtr, A0, A1, L);
27278}
27279#endif
27280#ifdef GET_EVAL_IMPL
27281bool EvalEmitter::emitGetOpaquePtr( DeclOrExpr A0, bool A1, SourceInfo L) {
27282 if (!isActive()) return true;
27283 CurrentSource = L;
27284 return GetOpaquePtr(S, A0, A1);
27285}
27286#endif
27287#ifdef GET_OPCODE_NAMES
27288OP_GetParamSint8,
27289OP_GetParamUint8,
27290OP_GetParamSint16,
27291OP_GetParamUint16,
27292OP_GetParamSint32,
27293OP_GetParamUint32,
27294OP_GetParamSint64,
27295OP_GetParamUint64,
27296OP_GetParamIntAP,
27297OP_GetParamIntAPS,
27298OP_GetParamBool,
27299OP_GetParamFixedPoint,
27300OP_GetParamPtr,
27301OP_GetParamMemberPtr,
27302OP_GetParamFloat,
27303#endif
27304#ifdef GET_INTERPFN_LIST
27305&Interp_GetParamSint8,
27306&Interp_GetParamUint8,
27307&Interp_GetParamSint16,
27308&Interp_GetParamUint16,
27309&Interp_GetParamSint32,
27310&Interp_GetParamUint32,
27311&Interp_GetParamSint64,
27312&Interp_GetParamUint64,
27313&Interp_GetParamIntAP,
27314&Interp_GetParamIntAPS,
27315&Interp_GetParamBool,
27316&Interp_GetParamFixedPoint,
27317&Interp_GetParamPtr,
27318&Interp_GetParamMemberPtr,
27319&Interp_GetParamFloat,
27320#endif
27321#ifdef GET_INTERPFN_DISPATCHERS
27322PRESERVE_NONE
27323static bool Interp_GetParamSint8(InterpState &S) {
27324 {
27325 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27326 if (!GetParam<PT_Sint8>(S, V0)) return false;
27327 }
27328#if USE_TAILCALLS
27329 MUSTTAIL return InterpNext(S);
27330#else
27331 return true;
27332#endif
27333}
27334PRESERVE_NONE
27335static bool Interp_GetParamUint8(InterpState &S) {
27336 {
27337 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27338 if (!GetParam<PT_Uint8>(S, V0)) return false;
27339 }
27340#if USE_TAILCALLS
27341 MUSTTAIL return InterpNext(S);
27342#else
27343 return true;
27344#endif
27345}
27346PRESERVE_NONE
27347static bool Interp_GetParamSint16(InterpState &S) {
27348 {
27349 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27350 if (!GetParam<PT_Sint16>(S, V0)) return false;
27351 }
27352#if USE_TAILCALLS
27353 MUSTTAIL return InterpNext(S);
27354#else
27355 return true;
27356#endif
27357}
27358PRESERVE_NONE
27359static bool Interp_GetParamUint16(InterpState &S) {
27360 {
27361 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27362 if (!GetParam<PT_Uint16>(S, V0)) return false;
27363 }
27364#if USE_TAILCALLS
27365 MUSTTAIL return InterpNext(S);
27366#else
27367 return true;
27368#endif
27369}
27370PRESERVE_NONE
27371static bool Interp_GetParamSint32(InterpState &S) {
27372 {
27373 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27374 if (!GetParam<PT_Sint32>(S, V0)) return false;
27375 }
27376#if USE_TAILCALLS
27377 MUSTTAIL return InterpNext(S);
27378#else
27379 return true;
27380#endif
27381}
27382PRESERVE_NONE
27383static bool Interp_GetParamUint32(InterpState &S) {
27384 {
27385 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27386 if (!GetParam<PT_Uint32>(S, V0)) return false;
27387 }
27388#if USE_TAILCALLS
27389 MUSTTAIL return InterpNext(S);
27390#else
27391 return true;
27392#endif
27393}
27394PRESERVE_NONE
27395static bool Interp_GetParamSint64(InterpState &S) {
27396 {
27397 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27398 if (!GetParam<PT_Sint64>(S, V0)) return false;
27399 }
27400#if USE_TAILCALLS
27401 MUSTTAIL return InterpNext(S);
27402#else
27403 return true;
27404#endif
27405}
27406PRESERVE_NONE
27407static bool Interp_GetParamUint64(InterpState &S) {
27408 {
27409 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27410 if (!GetParam<PT_Uint64>(S, V0)) return false;
27411 }
27412#if USE_TAILCALLS
27413 MUSTTAIL return InterpNext(S);
27414#else
27415 return true;
27416#endif
27417}
27418PRESERVE_NONE
27419static bool Interp_GetParamIntAP(InterpState &S) {
27420 {
27421 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27422 if (!GetParam<PT_IntAP>(S, V0)) return false;
27423 }
27424#if USE_TAILCALLS
27425 MUSTTAIL return InterpNext(S);
27426#else
27427 return true;
27428#endif
27429}
27430PRESERVE_NONE
27431static bool Interp_GetParamIntAPS(InterpState &S) {
27432 {
27433 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27434 if (!GetParam<PT_IntAPS>(S, V0)) return false;
27435 }
27436#if USE_TAILCALLS
27437 MUSTTAIL return InterpNext(S);
27438#else
27439 return true;
27440#endif
27441}
27442PRESERVE_NONE
27443static bool Interp_GetParamBool(InterpState &S) {
27444 {
27445 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27446 if (!GetParam<PT_Bool>(S, V0)) return false;
27447 }
27448#if USE_TAILCALLS
27449 MUSTTAIL return InterpNext(S);
27450#else
27451 return true;
27452#endif
27453}
27454PRESERVE_NONE
27455static bool Interp_GetParamFixedPoint(InterpState &S) {
27456 {
27457 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27458 if (!GetParam<PT_FixedPoint>(S, V0)) return false;
27459 }
27460#if USE_TAILCALLS
27461 MUSTTAIL return InterpNext(S);
27462#else
27463 return true;
27464#endif
27465}
27466PRESERVE_NONE
27467static bool Interp_GetParamPtr(InterpState &S) {
27468 {
27469 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27470 if (!GetParam<PT_Ptr>(S, V0)) return false;
27471 }
27472#if USE_TAILCALLS
27473 MUSTTAIL return InterpNext(S);
27474#else
27475 return true;
27476#endif
27477}
27478PRESERVE_NONE
27479static bool Interp_GetParamMemberPtr(InterpState &S) {
27480 {
27481 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27482 if (!GetParam<PT_MemberPtr>(S, V0)) return false;
27483 }
27484#if USE_TAILCALLS
27485 MUSTTAIL return InterpNext(S);
27486#else
27487 return true;
27488#endif
27489}
27490PRESERVE_NONE
27491static bool Interp_GetParamFloat(InterpState &S) {
27492 {
27493 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27494 if (!GetParam<PT_Float>(S, V0)) return false;
27495 }
27496#if USE_TAILCALLS
27497 MUSTTAIL return InterpNext(S);
27498#else
27499 return true;
27500#endif
27501}
27502#endif
27503#ifdef GET_DISASM
27504case OP_GetParamSint8:
27505 Text.Op = PrintName("GetParamSint8");
27506 Text.Args.push_back(printArg<uint32_t>(PC));
27507 break;
27508case OP_GetParamUint8:
27509 Text.Op = PrintName("GetParamUint8");
27510 Text.Args.push_back(printArg<uint32_t>(PC));
27511 break;
27512case OP_GetParamSint16:
27513 Text.Op = PrintName("GetParamSint16");
27514 Text.Args.push_back(printArg<uint32_t>(PC));
27515 break;
27516case OP_GetParamUint16:
27517 Text.Op = PrintName("GetParamUint16");
27518 Text.Args.push_back(printArg<uint32_t>(PC));
27519 break;
27520case OP_GetParamSint32:
27521 Text.Op = PrintName("GetParamSint32");
27522 Text.Args.push_back(printArg<uint32_t>(PC));
27523 break;
27524case OP_GetParamUint32:
27525 Text.Op = PrintName("GetParamUint32");
27526 Text.Args.push_back(printArg<uint32_t>(PC));
27527 break;
27528case OP_GetParamSint64:
27529 Text.Op = PrintName("GetParamSint64");
27530 Text.Args.push_back(printArg<uint32_t>(PC));
27531 break;
27532case OP_GetParamUint64:
27533 Text.Op = PrintName("GetParamUint64");
27534 Text.Args.push_back(printArg<uint32_t>(PC));
27535 break;
27536case OP_GetParamIntAP:
27537 Text.Op = PrintName("GetParamIntAP");
27538 Text.Args.push_back(printArg<uint32_t>(PC));
27539 break;
27540case OP_GetParamIntAPS:
27541 Text.Op = PrintName("GetParamIntAPS");
27542 Text.Args.push_back(printArg<uint32_t>(PC));
27543 break;
27544case OP_GetParamBool:
27545 Text.Op = PrintName("GetParamBool");
27546 Text.Args.push_back(printArg<uint32_t>(PC));
27547 break;
27548case OP_GetParamFixedPoint:
27549 Text.Op = PrintName("GetParamFixedPoint");
27550 Text.Args.push_back(printArg<uint32_t>(PC));
27551 break;
27552case OP_GetParamPtr:
27553 Text.Op = PrintName("GetParamPtr");
27554 Text.Args.push_back(printArg<uint32_t>(PC));
27555 break;
27556case OP_GetParamMemberPtr:
27557 Text.Op = PrintName("GetParamMemberPtr");
27558 Text.Args.push_back(printArg<uint32_t>(PC));
27559 break;
27560case OP_GetParamFloat:
27561 Text.Op = PrintName("GetParamFloat");
27562 Text.Args.push_back(printArg<uint32_t>(PC));
27563 break;
27564#endif
27565#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27566bool emitGetParamSint8( uint32_t , SourceInfo);
27567bool emitGetParamUint8( uint32_t , SourceInfo);
27568bool emitGetParamSint16( uint32_t , SourceInfo);
27569bool emitGetParamUint16( uint32_t , SourceInfo);
27570bool emitGetParamSint32( uint32_t , SourceInfo);
27571bool emitGetParamUint32( uint32_t , SourceInfo);
27572bool emitGetParamSint64( uint32_t , SourceInfo);
27573bool emitGetParamUint64( uint32_t , SourceInfo);
27574bool emitGetParamIntAP( uint32_t , SourceInfo);
27575bool emitGetParamIntAPS( uint32_t , SourceInfo);
27576bool emitGetParamBool( uint32_t , SourceInfo);
27577bool emitGetParamFixedPoint( uint32_t , SourceInfo);
27578bool emitGetParamPtr( uint32_t , SourceInfo);
27579bool emitGetParamMemberPtr( uint32_t , SourceInfo);
27580bool emitGetParamFloat( uint32_t , SourceInfo);
27581#endif
27582#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27583[[nodiscard]] bool emitGetParam(PrimType, uint32_t, SourceInfo I);
27584#endif
27585#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
27586bool
27587#if defined(GET_EVAL_IMPL)
27588EvalEmitter
27589#else
27590ByteCodeEmitter
27591#endif
27592::emitGetParam(PrimType T0, uint32_t A0, SourceInfo I) {
27593 switch (T0) {
27594 case PT_Sint8:
27595 return emitGetParamSint8(A0, I);
27596 case PT_Uint8:
27597 return emitGetParamUint8(A0, I);
27598 case PT_Sint16:
27599 return emitGetParamSint16(A0, I);
27600 case PT_Uint16:
27601 return emitGetParamUint16(A0, I);
27602 case PT_Sint32:
27603 return emitGetParamSint32(A0, I);
27604 case PT_Uint32:
27605 return emitGetParamUint32(A0, I);
27606 case PT_Sint64:
27607 return emitGetParamSint64(A0, I);
27608 case PT_Uint64:
27609 return emitGetParamUint64(A0, I);
27610 case PT_IntAP:
27611 return emitGetParamIntAP(A0, I);
27612 case PT_IntAPS:
27613 return emitGetParamIntAPS(A0, I);
27614 case PT_Bool:
27615 return emitGetParamBool(A0, I);
27616 case PT_FixedPoint:
27617 return emitGetParamFixedPoint(A0, I);
27618 case PT_Ptr:
27619 return emitGetParamPtr(A0, I);
27620 case PT_MemberPtr:
27621 return emitGetParamMemberPtr(A0, I);
27622 case PT_Float:
27623 return emitGetParamFloat(A0, I);
27624 }
27625 llvm_unreachable("invalid enum value");
27626}
27627#endif
27628#ifdef GET_LINK_IMPL
27629bool ByteCodeEmitter::emitGetParamSint8( uint32_t A0, SourceInfo L) {
27630 return emitOp<uint32_t>(OP_GetParamSint8, A0, L);
27631}
27632bool ByteCodeEmitter::emitGetParamUint8( uint32_t A0, SourceInfo L) {
27633 return emitOp<uint32_t>(OP_GetParamUint8, A0, L);
27634}
27635bool ByteCodeEmitter::emitGetParamSint16( uint32_t A0, SourceInfo L) {
27636 return emitOp<uint32_t>(OP_GetParamSint16, A0, L);
27637}
27638bool ByteCodeEmitter::emitGetParamUint16( uint32_t A0, SourceInfo L) {
27639 return emitOp<uint32_t>(OP_GetParamUint16, A0, L);
27640}
27641bool ByteCodeEmitter::emitGetParamSint32( uint32_t A0, SourceInfo L) {
27642 return emitOp<uint32_t>(OP_GetParamSint32, A0, L);
27643}
27644bool ByteCodeEmitter::emitGetParamUint32( uint32_t A0, SourceInfo L) {
27645 return emitOp<uint32_t>(OP_GetParamUint32, A0, L);
27646}
27647bool ByteCodeEmitter::emitGetParamSint64( uint32_t A0, SourceInfo L) {
27648 return emitOp<uint32_t>(OP_GetParamSint64, A0, L);
27649}
27650bool ByteCodeEmitter::emitGetParamUint64( uint32_t A0, SourceInfo L) {
27651 return emitOp<uint32_t>(OP_GetParamUint64, A0, L);
27652}
27653bool ByteCodeEmitter::emitGetParamIntAP( uint32_t A0, SourceInfo L) {
27654 return emitOp<uint32_t>(OP_GetParamIntAP, A0, L);
27655}
27656bool ByteCodeEmitter::emitGetParamIntAPS( uint32_t A0, SourceInfo L) {
27657 return emitOp<uint32_t>(OP_GetParamIntAPS, A0, L);
27658}
27659bool ByteCodeEmitter::emitGetParamBool( uint32_t A0, SourceInfo L) {
27660 return emitOp<uint32_t>(OP_GetParamBool, A0, L);
27661}
27662bool ByteCodeEmitter::emitGetParamFixedPoint( uint32_t A0, SourceInfo L) {
27663 return emitOp<uint32_t>(OP_GetParamFixedPoint, A0, L);
27664}
27665bool ByteCodeEmitter::emitGetParamPtr( uint32_t A0, SourceInfo L) {
27666 return emitOp<uint32_t>(OP_GetParamPtr, A0, L);
27667}
27668bool ByteCodeEmitter::emitGetParamMemberPtr( uint32_t A0, SourceInfo L) {
27669 return emitOp<uint32_t>(OP_GetParamMemberPtr, A0, L);
27670}
27671bool ByteCodeEmitter::emitGetParamFloat( uint32_t A0, SourceInfo L) {
27672 return emitOp<uint32_t>(OP_GetParamFloat, A0, L);
27673}
27674#endif
27675#ifdef GET_EVAL_IMPL
27676bool EvalEmitter::emitGetParamSint8( uint32_t A0, SourceInfo L) {
27677 if (!isActive()) return true;
27678 CurrentSource = L;
27679 return GetParam<PT_Sint8>(S, A0);
27680}
27681bool EvalEmitter::emitGetParamUint8( uint32_t A0, SourceInfo L) {
27682 if (!isActive()) return true;
27683 CurrentSource = L;
27684 return GetParam<PT_Uint8>(S, A0);
27685}
27686bool EvalEmitter::emitGetParamSint16( uint32_t A0, SourceInfo L) {
27687 if (!isActive()) return true;
27688 CurrentSource = L;
27689 return GetParam<PT_Sint16>(S, A0);
27690}
27691bool EvalEmitter::emitGetParamUint16( uint32_t A0, SourceInfo L) {
27692 if (!isActive()) return true;
27693 CurrentSource = L;
27694 return GetParam<PT_Uint16>(S, A0);
27695}
27696bool EvalEmitter::emitGetParamSint32( uint32_t A0, SourceInfo L) {
27697 if (!isActive()) return true;
27698 CurrentSource = L;
27699 return GetParam<PT_Sint32>(S, A0);
27700}
27701bool EvalEmitter::emitGetParamUint32( uint32_t A0, SourceInfo L) {
27702 if (!isActive()) return true;
27703 CurrentSource = L;
27704 return GetParam<PT_Uint32>(S, A0);
27705}
27706bool EvalEmitter::emitGetParamSint64( uint32_t A0, SourceInfo L) {
27707 if (!isActive()) return true;
27708 CurrentSource = L;
27709 return GetParam<PT_Sint64>(S, A0);
27710}
27711bool EvalEmitter::emitGetParamUint64( uint32_t A0, SourceInfo L) {
27712 if (!isActive()) return true;
27713 CurrentSource = L;
27714 return GetParam<PT_Uint64>(S, A0);
27715}
27716bool EvalEmitter::emitGetParamIntAP( uint32_t A0, SourceInfo L) {
27717 if (!isActive()) return true;
27718 CurrentSource = L;
27719 return GetParam<PT_IntAP>(S, A0);
27720}
27721bool EvalEmitter::emitGetParamIntAPS( uint32_t A0, SourceInfo L) {
27722 if (!isActive()) return true;
27723 CurrentSource = L;
27724 return GetParam<PT_IntAPS>(S, A0);
27725}
27726bool EvalEmitter::emitGetParamBool( uint32_t A0, SourceInfo L) {
27727 if (!isActive()) return true;
27728 CurrentSource = L;
27729 return GetParam<PT_Bool>(S, A0);
27730}
27731bool EvalEmitter::emitGetParamFixedPoint( uint32_t A0, SourceInfo L) {
27732 if (!isActive()) return true;
27733 CurrentSource = L;
27734 return GetParam<PT_FixedPoint>(S, A0);
27735}
27736bool EvalEmitter::emitGetParamPtr( uint32_t A0, SourceInfo L) {
27737 if (!isActive()) return true;
27738 CurrentSource = L;
27739 return GetParam<PT_Ptr>(S, A0);
27740}
27741bool EvalEmitter::emitGetParamMemberPtr( uint32_t A0, SourceInfo L) {
27742 if (!isActive()) return true;
27743 CurrentSource = L;
27744 return GetParam<PT_MemberPtr>(S, A0);
27745}
27746bool EvalEmitter::emitGetParamFloat( uint32_t A0, SourceInfo L) {
27747 if (!isActive()) return true;
27748 CurrentSource = L;
27749 return GetParam<PT_Float>(S, A0);
27750}
27751#endif
27752#ifdef GET_OPCODE_NAMES
27753OP_GetPtrBase,
27754#endif
27755#ifdef GET_INTERPFN_LIST
27756&Interp_GetPtrBase,
27757#endif
27758#ifdef GET_INTERPFN_DISPATCHERS
27759PRESERVE_NONE
27760static bool Interp_GetPtrBase(InterpState &S) {
27761 {
27762 CodePtr OpPC = S.PC;
27763 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27764 if (!GetPtrBase(S, OpPC, V0)) return false;
27765 }
27766#if USE_TAILCALLS
27767 MUSTTAIL return InterpNext(S);
27768#else
27769 return true;
27770#endif
27771}
27772#endif
27773#ifdef GET_DISASM
27774case OP_GetPtrBase:
27775 Text.Op = PrintName("GetPtrBase");
27776 Text.Args.push_back(printArg<uint32_t>(PC));
27777 break;
27778#endif
27779#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27780bool emitGetPtrBase( uint32_t , SourceInfo);
27781#endif
27782#ifdef GET_LINK_IMPL
27783bool ByteCodeEmitter::emitGetPtrBase( uint32_t A0, SourceInfo L) {
27784 return emitOp<uint32_t>(OP_GetPtrBase, A0, L);
27785}
27786#endif
27787#ifdef GET_EVAL_IMPL
27788bool EvalEmitter::emitGetPtrBase( uint32_t A0, SourceInfo L) {
27789 if (!isActive()) return true;
27790 CurrentSource = L;
27791 return GetPtrBase(S, CodePtr(), A0);
27792}
27793#endif
27794#ifdef GET_OPCODE_NAMES
27795OP_GetPtrBasePop,
27796#endif
27797#ifdef GET_INTERPFN_LIST
27798&Interp_GetPtrBasePop,
27799#endif
27800#ifdef GET_INTERPFN_DISPATCHERS
27801PRESERVE_NONE
27802static bool Interp_GetPtrBasePop(InterpState &S) {
27803 {
27804 CodePtr OpPC = S.PC;
27805 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27806 const auto V1 = ReadArg<bool>(S, S.PC);
27807 if (!GetPtrBasePop(S, OpPC, V0, V1)) return false;
27808 }
27809#if USE_TAILCALLS
27810 MUSTTAIL return InterpNext(S);
27811#else
27812 return true;
27813#endif
27814}
27815#endif
27816#ifdef GET_DISASM
27817case OP_GetPtrBasePop:
27818 Text.Op = PrintName("GetPtrBasePop");
27819 Text.Args.push_back(printArg<uint32_t>(PC));
27820 Text.Args.push_back(printArg<bool>(PC));
27821 break;
27822#endif
27823#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27824bool emitGetPtrBasePop( uint32_t , bool , SourceInfo);
27825#endif
27826#ifdef GET_LINK_IMPL
27827bool ByteCodeEmitter::emitGetPtrBasePop( uint32_t A0, bool A1, SourceInfo L) {
27828 return emitOp<uint32_t, bool>(OP_GetPtrBasePop, A0, A1, L);
27829}
27830#endif
27831#ifdef GET_EVAL_IMPL
27832bool EvalEmitter::emitGetPtrBasePop( uint32_t A0, bool A1, SourceInfo L) {
27833 if (!isActive()) return true;
27834 CurrentSource = L;
27835 return GetPtrBasePop(S, CodePtr(), A0, A1);
27836}
27837#endif
27838#ifdef GET_OPCODE_NAMES
27839OP_GetPtrDerivedPop,
27840#endif
27841#ifdef GET_INTERPFN_LIST
27842&Interp_GetPtrDerivedPop,
27843#endif
27844#ifdef GET_INTERPFN_DISPATCHERS
27845PRESERVE_NONE
27846static bool Interp_GetPtrDerivedPop(InterpState &S) {
27847 {
27848 CodePtr OpPC = S.PC;
27849 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27850 const auto V1 = ReadArg<bool>(S, S.PC);
27851 const auto V2 = ReadArg<const Type *>(S, S.PC);
27852 if (!GetPtrDerivedPop(S, OpPC, V0, V1, V2)) return false;
27853 }
27854#if USE_TAILCALLS
27855 MUSTTAIL return InterpNext(S);
27856#else
27857 return true;
27858#endif
27859}
27860#endif
27861#ifdef GET_DISASM
27862case OP_GetPtrDerivedPop:
27863 Text.Op = PrintName("GetPtrDerivedPop");
27864 Text.Args.push_back(printArg<uint32_t>(PC));
27865 Text.Args.push_back(printArg<bool>(PC));
27866 Text.Args.push_back(printArg<const Type *>(PC));
27867 break;
27868#endif
27869#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27870bool emitGetPtrDerivedPop( uint32_t , bool , const Type * , SourceInfo);
27871#endif
27872#ifdef GET_LINK_IMPL
27873bool ByteCodeEmitter::emitGetPtrDerivedPop( uint32_t A0, bool A1, const Type * A2, SourceInfo L) {
27874 return emitOp<uint32_t, bool, const Type *>(OP_GetPtrDerivedPop, A0, A1, A2, L);
27875}
27876#endif
27877#ifdef GET_EVAL_IMPL
27878bool EvalEmitter::emitGetPtrDerivedPop( uint32_t A0, bool A1, const Type * A2, SourceInfo L) {
27879 if (!isActive()) return true;
27880 CurrentSource = L;
27881 return GetPtrDerivedPop(S, CodePtr(), A0, A1, A2);
27882}
27883#endif
27884#ifdef GET_OPCODE_NAMES
27885OP_GetPtrField,
27886#endif
27887#ifdef GET_INTERPFN_LIST
27888&Interp_GetPtrField,
27889#endif
27890#ifdef GET_INTERPFN_DISPATCHERS
27891PRESERVE_NONE
27892static bool Interp_GetPtrField(InterpState &S) {
27893 {
27894 CodePtr OpPC = S.PC;
27895 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27896 if (!GetPtrField(S, OpPC, V0)) return false;
27897 }
27898#if USE_TAILCALLS
27899 MUSTTAIL return InterpNext(S);
27900#else
27901 return true;
27902#endif
27903}
27904#endif
27905#ifdef GET_DISASM
27906case OP_GetPtrField:
27907 Text.Op = PrintName("GetPtrField");
27908 Text.Args.push_back(printArg<uint32_t>(PC));
27909 break;
27910#endif
27911#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27912bool emitGetPtrField( uint32_t , SourceInfo);
27913#endif
27914#ifdef GET_LINK_IMPL
27915bool ByteCodeEmitter::emitGetPtrField( uint32_t A0, SourceInfo L) {
27916 return emitOp<uint32_t>(OP_GetPtrField, A0, L);
27917}
27918#endif
27919#ifdef GET_EVAL_IMPL
27920bool EvalEmitter::emitGetPtrField( uint32_t A0, SourceInfo L) {
27921 if (!isActive()) return true;
27922 CurrentSource = L;
27923 return GetPtrField(S, CodePtr(), A0);
27924}
27925#endif
27926#ifdef GET_OPCODE_NAMES
27927OP_GetPtrFieldPop,
27928#endif
27929#ifdef GET_INTERPFN_LIST
27930&Interp_GetPtrFieldPop,
27931#endif
27932#ifdef GET_INTERPFN_DISPATCHERS
27933PRESERVE_NONE
27934static bool Interp_GetPtrFieldPop(InterpState &S) {
27935 {
27936 CodePtr OpPC = S.PC;
27937 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27938 if (!GetPtrFieldPop(S, OpPC, V0)) return false;
27939 }
27940#if USE_TAILCALLS
27941 MUSTTAIL return InterpNext(S);
27942#else
27943 return true;
27944#endif
27945}
27946#endif
27947#ifdef GET_DISASM
27948case OP_GetPtrFieldPop:
27949 Text.Op = PrintName("GetPtrFieldPop");
27950 Text.Args.push_back(printArg<uint32_t>(PC));
27951 break;
27952#endif
27953#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27954bool emitGetPtrFieldPop( uint32_t , SourceInfo);
27955#endif
27956#ifdef GET_LINK_IMPL
27957bool ByteCodeEmitter::emitGetPtrFieldPop( uint32_t A0, SourceInfo L) {
27958 return emitOp<uint32_t>(OP_GetPtrFieldPop, A0, L);
27959}
27960#endif
27961#ifdef GET_EVAL_IMPL
27962bool EvalEmitter::emitGetPtrFieldPop( uint32_t A0, SourceInfo L) {
27963 if (!isActive()) return true;
27964 CurrentSource = L;
27965 return GetPtrFieldPop(S, CodePtr(), A0);
27966}
27967#endif
27968#ifdef GET_OPCODE_NAMES
27969OP_GetPtrGlobal,
27970#endif
27971#ifdef GET_INTERPFN_LIST
27972&Interp_GetPtrGlobal,
27973#endif
27974#ifdef GET_INTERPFN_DISPATCHERS
27975PRESERVE_NONE
27976static bool Interp_GetPtrGlobal(InterpState &S) {
27977 {
27978 const auto V0 = ReadArg<uint32_t>(S, S.PC);
27979 if (!GetPtrGlobal(S, V0)) return false;
27980 }
27981#if USE_TAILCALLS
27982 MUSTTAIL return InterpNext(S);
27983#else
27984 return true;
27985#endif
27986}
27987#endif
27988#ifdef GET_DISASM
27989case OP_GetPtrGlobal:
27990 Text.Op = PrintName("GetPtrGlobal");
27991 Text.Args.push_back(printArg<uint32_t>(PC));
27992 break;
27993#endif
27994#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27995bool emitGetPtrGlobal( uint32_t , SourceInfo);
27996#endif
27997#ifdef GET_LINK_IMPL
27998bool ByteCodeEmitter::emitGetPtrGlobal( uint32_t A0, SourceInfo L) {
27999 return emitOp<uint32_t>(OP_GetPtrGlobal, A0, L);
28000}
28001#endif
28002#ifdef GET_EVAL_IMPL
28003bool EvalEmitter::emitGetPtrGlobal( uint32_t A0, SourceInfo L) {
28004 if (!isActive()) return true;
28005 CurrentSource = L;
28006 return GetPtrGlobal(S, A0);
28007}
28008#endif
28009#ifdef GET_OPCODE_NAMES
28010OP_GetPtrLocal,
28011#endif
28012#ifdef GET_INTERPFN_LIST
28013&Interp_GetPtrLocal,
28014#endif
28015#ifdef GET_INTERPFN_DISPATCHERS
28016PRESERVE_NONE
28017static bool Interp_GetPtrLocal(InterpState &S) {
28018 {
28019 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28020 if (!GetPtrLocal(S, V0)) return false;
28021 }
28022#if USE_TAILCALLS
28023 MUSTTAIL return InterpNext(S);
28024#else
28025 return true;
28026#endif
28027}
28028#endif
28029#ifdef GET_DISASM
28030case OP_GetPtrLocal:
28031 Text.Op = PrintName("GetPtrLocal");
28032 Text.Args.push_back(printArg<uint32_t>(PC));
28033 break;
28034#endif
28035#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28036bool emitGetPtrLocal( uint32_t , SourceInfo);
28037#endif
28038#ifdef GET_LINK_IMPL
28039bool ByteCodeEmitter::emitGetPtrLocal( uint32_t A0, SourceInfo L) {
28040 return emitOp<uint32_t>(OP_GetPtrLocal, A0, L);
28041}
28042#endif
28043#ifdef GET_OPCODE_NAMES
28044OP_GetPtrParam,
28045#endif
28046#ifdef GET_INTERPFN_LIST
28047&Interp_GetPtrParam,
28048#endif
28049#ifdef GET_INTERPFN_DISPATCHERS
28050PRESERVE_NONE
28051static bool Interp_GetPtrParam(InterpState &S) {
28052 {
28053 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28054 if (!GetPtrParam(S, V0)) return false;
28055 }
28056#if USE_TAILCALLS
28057 MUSTTAIL return InterpNext(S);
28058#else
28059 return true;
28060#endif
28061}
28062#endif
28063#ifdef GET_DISASM
28064case OP_GetPtrParam:
28065 Text.Op = PrintName("GetPtrParam");
28066 Text.Args.push_back(printArg<uint32_t>(PC));
28067 break;
28068#endif
28069#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28070bool emitGetPtrParam( uint32_t , SourceInfo);
28071#endif
28072#ifdef GET_LINK_IMPL
28073bool ByteCodeEmitter::emitGetPtrParam( uint32_t A0, SourceInfo L) {
28074 return emitOp<uint32_t>(OP_GetPtrParam, A0, L);
28075}
28076#endif
28077#ifdef GET_EVAL_IMPL
28078bool EvalEmitter::emitGetPtrParam( uint32_t A0, SourceInfo L) {
28079 if (!isActive()) return true;
28080 CurrentSource = L;
28081 return GetPtrParam(S, A0);
28082}
28083#endif
28084#ifdef GET_OPCODE_NAMES
28085OP_GetPtrThisBase,
28086#endif
28087#ifdef GET_INTERPFN_LIST
28088&Interp_GetPtrThisBase,
28089#endif
28090#ifdef GET_INTERPFN_DISPATCHERS
28091PRESERVE_NONE
28092static bool Interp_GetPtrThisBase(InterpState &S) {
28093 {
28094 CodePtr OpPC = S.PC;
28095 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28096 if (!GetPtrThisBase(S, OpPC, V0)) return false;
28097 }
28098#if USE_TAILCALLS
28099 MUSTTAIL return InterpNext(S);
28100#else
28101 return true;
28102#endif
28103}
28104#endif
28105#ifdef GET_DISASM
28106case OP_GetPtrThisBase:
28107 Text.Op = PrintName("GetPtrThisBase");
28108 Text.Args.push_back(printArg<uint32_t>(PC));
28109 break;
28110#endif
28111#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28112bool emitGetPtrThisBase( uint32_t , SourceInfo);
28113#endif
28114#ifdef GET_LINK_IMPL
28115bool ByteCodeEmitter::emitGetPtrThisBase( uint32_t A0, SourceInfo L) {
28116 return emitOp<uint32_t>(OP_GetPtrThisBase, A0, L);
28117}
28118#endif
28119#ifdef GET_EVAL_IMPL
28120bool EvalEmitter::emitGetPtrThisBase( uint32_t A0, SourceInfo L) {
28121 if (!isActive()) return true;
28122 CurrentSource = L;
28123 return GetPtrThisBase(S, CodePtr(), A0);
28124}
28125#endif
28126#ifdef GET_OPCODE_NAMES
28127OP_GetPtrThisField,
28128#endif
28129#ifdef GET_INTERPFN_LIST
28130&Interp_GetPtrThisField,
28131#endif
28132#ifdef GET_INTERPFN_DISPATCHERS
28133PRESERVE_NONE
28134static bool Interp_GetPtrThisField(InterpState &S) {
28135 {
28136 CodePtr OpPC = S.PC;
28137 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28138 if (!GetPtrThisField(S, OpPC, V0)) return false;
28139 }
28140#if USE_TAILCALLS
28141 MUSTTAIL return InterpNext(S);
28142#else
28143 return true;
28144#endif
28145}
28146#endif
28147#ifdef GET_DISASM
28148case OP_GetPtrThisField:
28149 Text.Op = PrintName("GetPtrThisField");
28150 Text.Args.push_back(printArg<uint32_t>(PC));
28151 break;
28152#endif
28153#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28154bool emitGetPtrThisField( uint32_t , SourceInfo);
28155#endif
28156#ifdef GET_LINK_IMPL
28157bool ByteCodeEmitter::emitGetPtrThisField( uint32_t A0, SourceInfo L) {
28158 return emitOp<uint32_t>(OP_GetPtrThisField, A0, L);
28159}
28160#endif
28161#ifdef GET_EVAL_IMPL
28162bool EvalEmitter::emitGetPtrThisField( uint32_t A0, SourceInfo L) {
28163 if (!isActive()) return true;
28164 CurrentSource = L;
28165 return GetPtrThisField(S, CodePtr(), A0);
28166}
28167#endif
28168#ifdef GET_OPCODE_NAMES
28169OP_GetPtrThisVirtBase,
28170#endif
28171#ifdef GET_INTERPFN_LIST
28172&Interp_GetPtrThisVirtBase,
28173#endif
28174#ifdef GET_INTERPFN_DISPATCHERS
28175PRESERVE_NONE
28176static bool Interp_GetPtrThisVirtBase(InterpState &S) {
28177 {
28178 CodePtr OpPC = S.PC;
28179 const auto V0 = ReadArg<const CXXRecordDecl *>(S, S.PC);
28180 if (!GetPtrThisVirtBase(S, OpPC, V0)) return false;
28181 }
28182#if USE_TAILCALLS
28183 MUSTTAIL return InterpNext(S);
28184#else
28185 return true;
28186#endif
28187}
28188#endif
28189#ifdef GET_DISASM
28190case OP_GetPtrThisVirtBase:
28191 Text.Op = PrintName("GetPtrThisVirtBase");
28192 Text.Args.push_back(printArg<const CXXRecordDecl *>(PC));
28193 break;
28194#endif
28195#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28196bool emitGetPtrThisVirtBase( const CXXRecordDecl * , SourceInfo);
28197#endif
28198#ifdef GET_LINK_IMPL
28199bool ByteCodeEmitter::emitGetPtrThisVirtBase( const CXXRecordDecl * A0, SourceInfo L) {
28200 return emitOp<const CXXRecordDecl *>(OP_GetPtrThisVirtBase, A0, L);
28201}
28202#endif
28203#ifdef GET_EVAL_IMPL
28204bool EvalEmitter::emitGetPtrThisVirtBase( const CXXRecordDecl * A0, SourceInfo L) {
28205 if (!isActive()) return true;
28206 CurrentSource = L;
28207 return GetPtrThisVirtBase(S, CodePtr(), A0);
28208}
28209#endif
28210#ifdef GET_OPCODE_NAMES
28211OP_GetPtrVirtBase,
28212#endif
28213#ifdef GET_INTERPFN_LIST
28214&Interp_GetPtrVirtBase,
28215#endif
28216#ifdef GET_INTERPFN_DISPATCHERS
28217PRESERVE_NONE
28218static bool Interp_GetPtrVirtBase(InterpState &S) {
28219 {
28220 CodePtr OpPC = S.PC;
28221 const auto V0 = ReadArg<const CXXRecordDecl *>(S, S.PC);
28222 if (!GetPtrVirtBase(S, OpPC, V0)) return false;
28223 }
28224#if USE_TAILCALLS
28225 MUSTTAIL return InterpNext(S);
28226#else
28227 return true;
28228#endif
28229}
28230#endif
28231#ifdef GET_DISASM
28232case OP_GetPtrVirtBase:
28233 Text.Op = PrintName("GetPtrVirtBase");
28234 Text.Args.push_back(printArg<const CXXRecordDecl *>(PC));
28235 break;
28236#endif
28237#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28238bool emitGetPtrVirtBase( const CXXRecordDecl * , SourceInfo);
28239#endif
28240#ifdef GET_LINK_IMPL
28241bool ByteCodeEmitter::emitGetPtrVirtBase( const CXXRecordDecl * A0, SourceInfo L) {
28242 return emitOp<const CXXRecordDecl *>(OP_GetPtrVirtBase, A0, L);
28243}
28244#endif
28245#ifdef GET_EVAL_IMPL
28246bool EvalEmitter::emitGetPtrVirtBase( const CXXRecordDecl * A0, SourceInfo L) {
28247 if (!isActive()) return true;
28248 CurrentSource = L;
28249 return GetPtrVirtBase(S, CodePtr(), A0);
28250}
28251#endif
28252#ifdef GET_OPCODE_NAMES
28253OP_GetPtrVirtBasePop,
28254#endif
28255#ifdef GET_INTERPFN_LIST
28256&Interp_GetPtrVirtBasePop,
28257#endif
28258#ifdef GET_INTERPFN_DISPATCHERS
28259PRESERVE_NONE
28260static bool Interp_GetPtrVirtBasePop(InterpState &S) {
28261 {
28262 CodePtr OpPC = S.PC;
28263 const auto V0 = ReadArg<const CXXRecordDecl *>(S, S.PC);
28264 if (!GetPtrVirtBasePop(S, OpPC, V0)) return false;
28265 }
28266#if USE_TAILCALLS
28267 MUSTTAIL return InterpNext(S);
28268#else
28269 return true;
28270#endif
28271}
28272#endif
28273#ifdef GET_DISASM
28274case OP_GetPtrVirtBasePop:
28275 Text.Op = PrintName("GetPtrVirtBasePop");
28276 Text.Args.push_back(printArg<const CXXRecordDecl *>(PC));
28277 break;
28278#endif
28279#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28280bool emitGetPtrVirtBasePop( const CXXRecordDecl * , SourceInfo);
28281#endif
28282#ifdef GET_LINK_IMPL
28283bool ByteCodeEmitter::emitGetPtrVirtBasePop( const CXXRecordDecl * A0, SourceInfo L) {
28284 return emitOp<const CXXRecordDecl *>(OP_GetPtrVirtBasePop, A0, L);
28285}
28286#endif
28287#ifdef GET_EVAL_IMPL
28288bool EvalEmitter::emitGetPtrVirtBasePop( const CXXRecordDecl * A0, SourceInfo L) {
28289 if (!isActive()) return true;
28290 CurrentSource = L;
28291 return GetPtrVirtBasePop(S, CodePtr(), A0);
28292}
28293#endif
28294#ifdef GET_OPCODE_NAMES
28295OP_GetRefGlobal,
28296#endif
28297#ifdef GET_INTERPFN_LIST
28298&Interp_GetRefGlobal,
28299#endif
28300#ifdef GET_INTERPFN_DISPATCHERS
28301PRESERVE_NONE
28302static bool Interp_GetRefGlobal(InterpState &S) {
28303 {
28304 CodePtr OpPC = S.PC;
28305 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28306 if (!GetRefGlobal(S, OpPC, V0)) return false;
28307 }
28308#if USE_TAILCALLS
28309 MUSTTAIL return InterpNext(S);
28310#else
28311 return true;
28312#endif
28313}
28314#endif
28315#ifdef GET_DISASM
28316case OP_GetRefGlobal:
28317 Text.Op = PrintName("GetRefGlobal");
28318 Text.Args.push_back(printArg<uint32_t>(PC));
28319 break;
28320#endif
28321#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28322bool emitGetRefGlobal( uint32_t , SourceInfo);
28323#endif
28324#ifdef GET_LINK_IMPL
28325bool ByteCodeEmitter::emitGetRefGlobal( uint32_t A0, SourceInfo L) {
28326 return emitOp<uint32_t>(OP_GetRefGlobal, A0, L);
28327}
28328#endif
28329#ifdef GET_EVAL_IMPL
28330bool EvalEmitter::emitGetRefGlobal( uint32_t A0, SourceInfo L) {
28331 if (!isActive()) return true;
28332 CurrentSource = L;
28333 return GetRefGlobal(S, CodePtr(), A0);
28334}
28335#endif
28336#ifdef GET_OPCODE_NAMES
28337OP_GetRefLocal,
28338#endif
28339#ifdef GET_INTERPFN_LIST
28340&Interp_GetRefLocal,
28341#endif
28342#ifdef GET_INTERPFN_DISPATCHERS
28343PRESERVE_NONE
28344static bool Interp_GetRefLocal(InterpState &S) {
28345 {
28346 CodePtr OpPC = S.PC;
28347 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28348 if (!GetRefLocal(S, OpPC, V0)) return false;
28349 }
28350#if USE_TAILCALLS
28351 MUSTTAIL return InterpNext(S);
28352#else
28353 return true;
28354#endif
28355}
28356#endif
28357#ifdef GET_DISASM
28358case OP_GetRefLocal:
28359 Text.Op = PrintName("GetRefLocal");
28360 Text.Args.push_back(printArg<uint32_t>(PC));
28361 break;
28362#endif
28363#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28364bool emitGetRefLocal( uint32_t , SourceInfo);
28365#endif
28366#ifdef GET_LINK_IMPL
28367bool ByteCodeEmitter::emitGetRefLocal( uint32_t A0, SourceInfo L) {
28368 return emitOp<uint32_t>(OP_GetRefLocal, A0, L);
28369}
28370#endif
28371#ifdef GET_OPCODE_NAMES
28372OP_GetStringPtr,
28373#endif
28374#ifdef GET_INTERPFN_LIST
28375&Interp_GetStringPtr,
28376#endif
28377#ifdef GET_INTERPFN_DISPATCHERS
28378PRESERVE_NONE
28379static bool Interp_GetStringPtr(InterpState &S) {
28380 {
28381 const auto V0 = ReadArg<const Expr *>(S, S.PC);
28382 GetStringPtr(S, V0);
28383 }
28384#if USE_TAILCALLS
28385 MUSTTAIL return InterpNext(S);
28386#else
28387 return true;
28388#endif
28389}
28390#endif
28391#ifdef GET_DISASM
28392case OP_GetStringPtr:
28393 Text.Op = PrintName("GetStringPtr");
28394 Text.Args.push_back(printArg<const Expr *>(PC));
28395 break;
28396#endif
28397#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28398bool emitGetStringPtr( const Expr * , SourceInfo);
28399#endif
28400#ifdef GET_LINK_IMPL
28401bool ByteCodeEmitter::emitGetStringPtr( const Expr * A0, SourceInfo L) {
28402 return emitOp<const Expr *>(OP_GetStringPtr, A0, L);
28403}
28404#endif
28405#ifdef GET_EVAL_IMPL
28406bool EvalEmitter::emitGetStringPtr( const Expr * A0, SourceInfo L) {
28407 if (!isActive()) return true;
28408 CurrentSource = L;
28409 return GetStringPtr(S, A0);
28410}
28411#endif
28412#ifdef GET_OPCODE_NAMES
28413OP_GetThisFieldSint8,
28414OP_GetThisFieldUint8,
28415OP_GetThisFieldSint16,
28416OP_GetThisFieldUint16,
28417OP_GetThisFieldSint32,
28418OP_GetThisFieldUint32,
28419OP_GetThisFieldSint64,
28420OP_GetThisFieldUint64,
28421OP_GetThisFieldIntAP,
28422OP_GetThisFieldIntAPS,
28423OP_GetThisFieldBool,
28424OP_GetThisFieldFixedPoint,
28425OP_GetThisFieldPtr,
28426OP_GetThisFieldMemberPtr,
28427OP_GetThisFieldFloat,
28428#endif
28429#ifdef GET_INTERPFN_LIST
28430&Interp_GetThisFieldSint8,
28431&Interp_GetThisFieldUint8,
28432&Interp_GetThisFieldSint16,
28433&Interp_GetThisFieldUint16,
28434&Interp_GetThisFieldSint32,
28435&Interp_GetThisFieldUint32,
28436&Interp_GetThisFieldSint64,
28437&Interp_GetThisFieldUint64,
28438&Interp_GetThisFieldIntAP,
28439&Interp_GetThisFieldIntAPS,
28440&Interp_GetThisFieldBool,
28441&Interp_GetThisFieldFixedPoint,
28442&Interp_GetThisFieldPtr,
28443&Interp_GetThisFieldMemberPtr,
28444&Interp_GetThisFieldFloat,
28445#endif
28446#ifdef GET_INTERPFN_DISPATCHERS
28447PRESERVE_NONE
28448static bool Interp_GetThisFieldSint8(InterpState &S) {
28449 {
28450 CodePtr OpPC = S.PC;
28451 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28452 if (!GetThisField<PT_Sint8>(S, OpPC, V0)) return false;
28453 }
28454#if USE_TAILCALLS
28455 MUSTTAIL return InterpNext(S);
28456#else
28457 return true;
28458#endif
28459}
28460PRESERVE_NONE
28461static bool Interp_GetThisFieldUint8(InterpState &S) {
28462 {
28463 CodePtr OpPC = S.PC;
28464 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28465 if (!GetThisField<PT_Uint8>(S, OpPC, V0)) return false;
28466 }
28467#if USE_TAILCALLS
28468 MUSTTAIL return InterpNext(S);
28469#else
28470 return true;
28471#endif
28472}
28473PRESERVE_NONE
28474static bool Interp_GetThisFieldSint16(InterpState &S) {
28475 {
28476 CodePtr OpPC = S.PC;
28477 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28478 if (!GetThisField<PT_Sint16>(S, OpPC, V0)) return false;
28479 }
28480#if USE_TAILCALLS
28481 MUSTTAIL return InterpNext(S);
28482#else
28483 return true;
28484#endif
28485}
28486PRESERVE_NONE
28487static bool Interp_GetThisFieldUint16(InterpState &S) {
28488 {
28489 CodePtr OpPC = S.PC;
28490 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28491 if (!GetThisField<PT_Uint16>(S, OpPC, V0)) return false;
28492 }
28493#if USE_TAILCALLS
28494 MUSTTAIL return InterpNext(S);
28495#else
28496 return true;
28497#endif
28498}
28499PRESERVE_NONE
28500static bool Interp_GetThisFieldSint32(InterpState &S) {
28501 {
28502 CodePtr OpPC = S.PC;
28503 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28504 if (!GetThisField<PT_Sint32>(S, OpPC, V0)) return false;
28505 }
28506#if USE_TAILCALLS
28507 MUSTTAIL return InterpNext(S);
28508#else
28509 return true;
28510#endif
28511}
28512PRESERVE_NONE
28513static bool Interp_GetThisFieldUint32(InterpState &S) {
28514 {
28515 CodePtr OpPC = S.PC;
28516 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28517 if (!GetThisField<PT_Uint32>(S, OpPC, V0)) return false;
28518 }
28519#if USE_TAILCALLS
28520 MUSTTAIL return InterpNext(S);
28521#else
28522 return true;
28523#endif
28524}
28525PRESERVE_NONE
28526static bool Interp_GetThisFieldSint64(InterpState &S) {
28527 {
28528 CodePtr OpPC = S.PC;
28529 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28530 if (!GetThisField<PT_Sint64>(S, OpPC, V0)) return false;
28531 }
28532#if USE_TAILCALLS
28533 MUSTTAIL return InterpNext(S);
28534#else
28535 return true;
28536#endif
28537}
28538PRESERVE_NONE
28539static bool Interp_GetThisFieldUint64(InterpState &S) {
28540 {
28541 CodePtr OpPC = S.PC;
28542 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28543 if (!GetThisField<PT_Uint64>(S, OpPC, V0)) return false;
28544 }
28545#if USE_TAILCALLS
28546 MUSTTAIL return InterpNext(S);
28547#else
28548 return true;
28549#endif
28550}
28551PRESERVE_NONE
28552static bool Interp_GetThisFieldIntAP(InterpState &S) {
28553 {
28554 CodePtr OpPC = S.PC;
28555 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28556 if (!GetThisField<PT_IntAP>(S, OpPC, V0)) return false;
28557 }
28558#if USE_TAILCALLS
28559 MUSTTAIL return InterpNext(S);
28560#else
28561 return true;
28562#endif
28563}
28564PRESERVE_NONE
28565static bool Interp_GetThisFieldIntAPS(InterpState &S) {
28566 {
28567 CodePtr OpPC = S.PC;
28568 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28569 if (!GetThisField<PT_IntAPS>(S, OpPC, V0)) return false;
28570 }
28571#if USE_TAILCALLS
28572 MUSTTAIL return InterpNext(S);
28573#else
28574 return true;
28575#endif
28576}
28577PRESERVE_NONE
28578static bool Interp_GetThisFieldBool(InterpState &S) {
28579 {
28580 CodePtr OpPC = S.PC;
28581 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28582 if (!GetThisField<PT_Bool>(S, OpPC, V0)) return false;
28583 }
28584#if USE_TAILCALLS
28585 MUSTTAIL return InterpNext(S);
28586#else
28587 return true;
28588#endif
28589}
28590PRESERVE_NONE
28591static bool Interp_GetThisFieldFixedPoint(InterpState &S) {
28592 {
28593 CodePtr OpPC = S.PC;
28594 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28595 if (!GetThisField<PT_FixedPoint>(S, OpPC, V0)) return false;
28596 }
28597#if USE_TAILCALLS
28598 MUSTTAIL return InterpNext(S);
28599#else
28600 return true;
28601#endif
28602}
28603PRESERVE_NONE
28604static bool Interp_GetThisFieldPtr(InterpState &S) {
28605 {
28606 CodePtr OpPC = S.PC;
28607 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28608 if (!GetThisField<PT_Ptr>(S, OpPC, V0)) return false;
28609 }
28610#if USE_TAILCALLS
28611 MUSTTAIL return InterpNext(S);
28612#else
28613 return true;
28614#endif
28615}
28616PRESERVE_NONE
28617static bool Interp_GetThisFieldMemberPtr(InterpState &S) {
28618 {
28619 CodePtr OpPC = S.PC;
28620 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28621 if (!GetThisField<PT_MemberPtr>(S, OpPC, V0)) return false;
28622 }
28623#if USE_TAILCALLS
28624 MUSTTAIL return InterpNext(S);
28625#else
28626 return true;
28627#endif
28628}
28629PRESERVE_NONE
28630static bool Interp_GetThisFieldFloat(InterpState &S) {
28631 {
28632 CodePtr OpPC = S.PC;
28633 const auto V0 = ReadArg<uint32_t>(S, S.PC);
28634 if (!GetThisField<PT_Float>(S, OpPC, V0)) return false;
28635 }
28636#if USE_TAILCALLS
28637 MUSTTAIL return InterpNext(S);
28638#else
28639 return true;
28640#endif
28641}
28642#endif
28643#ifdef GET_DISASM
28644case OP_GetThisFieldSint8:
28645 Text.Op = PrintName("GetThisFieldSint8");
28646 Text.Args.push_back(printArg<uint32_t>(PC));
28647 break;
28648case OP_GetThisFieldUint8:
28649 Text.Op = PrintName("GetThisFieldUint8");
28650 Text.Args.push_back(printArg<uint32_t>(PC));
28651 break;
28652case OP_GetThisFieldSint16:
28653 Text.Op = PrintName("GetThisFieldSint16");
28654 Text.Args.push_back(printArg<uint32_t>(PC));
28655 break;
28656case OP_GetThisFieldUint16:
28657 Text.Op = PrintName("GetThisFieldUint16");
28658 Text.Args.push_back(printArg<uint32_t>(PC));
28659 break;
28660case OP_GetThisFieldSint32:
28661 Text.Op = PrintName("GetThisFieldSint32");
28662 Text.Args.push_back(printArg<uint32_t>(PC));
28663 break;
28664case OP_GetThisFieldUint32:
28665 Text.Op = PrintName("GetThisFieldUint32");
28666 Text.Args.push_back(printArg<uint32_t>(PC));
28667 break;
28668case OP_GetThisFieldSint64:
28669 Text.Op = PrintName("GetThisFieldSint64");
28670 Text.Args.push_back(printArg<uint32_t>(PC));
28671 break;
28672case OP_GetThisFieldUint64:
28673 Text.Op = PrintName("GetThisFieldUint64");
28674 Text.Args.push_back(printArg<uint32_t>(PC));
28675 break;
28676case OP_GetThisFieldIntAP:
28677 Text.Op = PrintName("GetThisFieldIntAP");
28678 Text.Args.push_back(printArg<uint32_t>(PC));
28679 break;
28680case OP_GetThisFieldIntAPS:
28681 Text.Op = PrintName("GetThisFieldIntAPS");
28682 Text.Args.push_back(printArg<uint32_t>(PC));
28683 break;
28684case OP_GetThisFieldBool:
28685 Text.Op = PrintName("GetThisFieldBool");
28686 Text.Args.push_back(printArg<uint32_t>(PC));
28687 break;
28688case OP_GetThisFieldFixedPoint:
28689 Text.Op = PrintName("GetThisFieldFixedPoint");
28690 Text.Args.push_back(printArg<uint32_t>(PC));
28691 break;
28692case OP_GetThisFieldPtr:
28693 Text.Op = PrintName("GetThisFieldPtr");
28694 Text.Args.push_back(printArg<uint32_t>(PC));
28695 break;
28696case OP_GetThisFieldMemberPtr:
28697 Text.Op = PrintName("GetThisFieldMemberPtr");
28698 Text.Args.push_back(printArg<uint32_t>(PC));
28699 break;
28700case OP_GetThisFieldFloat:
28701 Text.Op = PrintName("GetThisFieldFloat");
28702 Text.Args.push_back(printArg<uint32_t>(PC));
28703 break;
28704#endif
28705#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28706bool emitGetThisFieldSint8( uint32_t , SourceInfo);
28707bool emitGetThisFieldUint8( uint32_t , SourceInfo);
28708bool emitGetThisFieldSint16( uint32_t , SourceInfo);
28709bool emitGetThisFieldUint16( uint32_t , SourceInfo);
28710bool emitGetThisFieldSint32( uint32_t , SourceInfo);
28711bool emitGetThisFieldUint32( uint32_t , SourceInfo);
28712bool emitGetThisFieldSint64( uint32_t , SourceInfo);
28713bool emitGetThisFieldUint64( uint32_t , SourceInfo);
28714bool emitGetThisFieldIntAP( uint32_t , SourceInfo);
28715bool emitGetThisFieldIntAPS( uint32_t , SourceInfo);
28716bool emitGetThisFieldBool( uint32_t , SourceInfo);
28717bool emitGetThisFieldFixedPoint( uint32_t , SourceInfo);
28718bool emitGetThisFieldPtr( uint32_t , SourceInfo);
28719bool emitGetThisFieldMemberPtr( uint32_t , SourceInfo);
28720bool emitGetThisFieldFloat( uint32_t , SourceInfo);
28721#endif
28722#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28723[[nodiscard]] bool emitGetThisField(PrimType, uint32_t, SourceInfo I);
28724#endif
28725#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
28726bool
28727#if defined(GET_EVAL_IMPL)
28728EvalEmitter
28729#else
28730ByteCodeEmitter
28731#endif
28732::emitGetThisField(PrimType T0, uint32_t A0, SourceInfo I) {
28733 switch (T0) {
28734 case PT_Sint8:
28735 return emitGetThisFieldSint8(A0, I);
28736 case PT_Uint8:
28737 return emitGetThisFieldUint8(A0, I);
28738 case PT_Sint16:
28739 return emitGetThisFieldSint16(A0, I);
28740 case PT_Uint16:
28741 return emitGetThisFieldUint16(A0, I);
28742 case PT_Sint32:
28743 return emitGetThisFieldSint32(A0, I);
28744 case PT_Uint32:
28745 return emitGetThisFieldUint32(A0, I);
28746 case PT_Sint64:
28747 return emitGetThisFieldSint64(A0, I);
28748 case PT_Uint64:
28749 return emitGetThisFieldUint64(A0, I);
28750 case PT_IntAP:
28751 return emitGetThisFieldIntAP(A0, I);
28752 case PT_IntAPS:
28753 return emitGetThisFieldIntAPS(A0, I);
28754 case PT_Bool:
28755 return emitGetThisFieldBool(A0, I);
28756 case PT_FixedPoint:
28757 return emitGetThisFieldFixedPoint(A0, I);
28758 case PT_Ptr:
28759 return emitGetThisFieldPtr(A0, I);
28760 case PT_MemberPtr:
28761 return emitGetThisFieldMemberPtr(A0, I);
28762 case PT_Float:
28763 return emitGetThisFieldFloat(A0, I);
28764 }
28765 llvm_unreachable("invalid enum value");
28766}
28767#endif
28768#ifdef GET_LINK_IMPL
28769bool ByteCodeEmitter::emitGetThisFieldSint8( uint32_t A0, SourceInfo L) {
28770 return emitOp<uint32_t>(OP_GetThisFieldSint8, A0, L);
28771}
28772bool ByteCodeEmitter::emitGetThisFieldUint8( uint32_t A0, SourceInfo L) {
28773 return emitOp<uint32_t>(OP_GetThisFieldUint8, A0, L);
28774}
28775bool ByteCodeEmitter::emitGetThisFieldSint16( uint32_t A0, SourceInfo L) {
28776 return emitOp<uint32_t>(OP_GetThisFieldSint16, A0, L);
28777}
28778bool ByteCodeEmitter::emitGetThisFieldUint16( uint32_t A0, SourceInfo L) {
28779 return emitOp<uint32_t>(OP_GetThisFieldUint16, A0, L);
28780}
28781bool ByteCodeEmitter::emitGetThisFieldSint32( uint32_t A0, SourceInfo L) {
28782 return emitOp<uint32_t>(OP_GetThisFieldSint32, A0, L);
28783}
28784bool ByteCodeEmitter::emitGetThisFieldUint32( uint32_t A0, SourceInfo L) {
28785 return emitOp<uint32_t>(OP_GetThisFieldUint32, A0, L);
28786}
28787bool ByteCodeEmitter::emitGetThisFieldSint64( uint32_t A0, SourceInfo L) {
28788 return emitOp<uint32_t>(OP_GetThisFieldSint64, A0, L);
28789}
28790bool ByteCodeEmitter::emitGetThisFieldUint64( uint32_t A0, SourceInfo L) {
28791 return emitOp<uint32_t>(OP_GetThisFieldUint64, A0, L);
28792}
28793bool ByteCodeEmitter::emitGetThisFieldIntAP( uint32_t A0, SourceInfo L) {
28794 return emitOp<uint32_t>(OP_GetThisFieldIntAP, A0, L);
28795}
28796bool ByteCodeEmitter::emitGetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
28797 return emitOp<uint32_t>(OP_GetThisFieldIntAPS, A0, L);
28798}
28799bool ByteCodeEmitter::emitGetThisFieldBool( uint32_t A0, SourceInfo L) {
28800 return emitOp<uint32_t>(OP_GetThisFieldBool, A0, L);
28801}
28802bool ByteCodeEmitter::emitGetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
28803 return emitOp<uint32_t>(OP_GetThisFieldFixedPoint, A0, L);
28804}
28805bool ByteCodeEmitter::emitGetThisFieldPtr( uint32_t A0, SourceInfo L) {
28806 return emitOp<uint32_t>(OP_GetThisFieldPtr, A0, L);
28807}
28808bool ByteCodeEmitter::emitGetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
28809 return emitOp<uint32_t>(OP_GetThisFieldMemberPtr, A0, L);
28810}
28811bool ByteCodeEmitter::emitGetThisFieldFloat( uint32_t A0, SourceInfo L) {
28812 return emitOp<uint32_t>(OP_GetThisFieldFloat, A0, L);
28813}
28814#endif
28815#ifdef GET_EVAL_IMPL
28816bool EvalEmitter::emitGetThisFieldSint8( uint32_t A0, SourceInfo L) {
28817 if (!isActive()) return true;
28818 CurrentSource = L;
28819 return GetThisField<PT_Sint8>(S, CodePtr(), A0);
28820}
28821bool EvalEmitter::emitGetThisFieldUint8( uint32_t A0, SourceInfo L) {
28822 if (!isActive()) return true;
28823 CurrentSource = L;
28824 return GetThisField<PT_Uint8>(S, CodePtr(), A0);
28825}
28826bool EvalEmitter::emitGetThisFieldSint16( uint32_t A0, SourceInfo L) {
28827 if (!isActive()) return true;
28828 CurrentSource = L;
28829 return GetThisField<PT_Sint16>(S, CodePtr(), A0);
28830}
28831bool EvalEmitter::emitGetThisFieldUint16( uint32_t A0, SourceInfo L) {
28832 if (!isActive()) return true;
28833 CurrentSource = L;
28834 return GetThisField<PT_Uint16>(S, CodePtr(), A0);
28835}
28836bool EvalEmitter::emitGetThisFieldSint32( uint32_t A0, SourceInfo L) {
28837 if (!isActive()) return true;
28838 CurrentSource = L;
28839 return GetThisField<PT_Sint32>(S, CodePtr(), A0);
28840}
28841bool EvalEmitter::emitGetThisFieldUint32( uint32_t A0, SourceInfo L) {
28842 if (!isActive()) return true;
28843 CurrentSource = L;
28844 return GetThisField<PT_Uint32>(S, CodePtr(), A0);
28845}
28846bool EvalEmitter::emitGetThisFieldSint64( uint32_t A0, SourceInfo L) {
28847 if (!isActive()) return true;
28848 CurrentSource = L;
28849 return GetThisField<PT_Sint64>(S, CodePtr(), A0);
28850}
28851bool EvalEmitter::emitGetThisFieldUint64( uint32_t A0, SourceInfo L) {
28852 if (!isActive()) return true;
28853 CurrentSource = L;
28854 return GetThisField<PT_Uint64>(S, CodePtr(), A0);
28855}
28856bool EvalEmitter::emitGetThisFieldIntAP( uint32_t A0, SourceInfo L) {
28857 if (!isActive()) return true;
28858 CurrentSource = L;
28859 return GetThisField<PT_IntAP>(S, CodePtr(), A0);
28860}
28861bool EvalEmitter::emitGetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
28862 if (!isActive()) return true;
28863 CurrentSource = L;
28864 return GetThisField<PT_IntAPS>(S, CodePtr(), A0);
28865}
28866bool EvalEmitter::emitGetThisFieldBool( uint32_t A0, SourceInfo L) {
28867 if (!isActive()) return true;
28868 CurrentSource = L;
28869 return GetThisField<PT_Bool>(S, CodePtr(), A0);
28870}
28871bool EvalEmitter::emitGetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
28872 if (!isActive()) return true;
28873 CurrentSource = L;
28874 return GetThisField<PT_FixedPoint>(S, CodePtr(), A0);
28875}
28876bool EvalEmitter::emitGetThisFieldPtr( uint32_t A0, SourceInfo L) {
28877 if (!isActive()) return true;
28878 CurrentSource = L;
28879 return GetThisField<PT_Ptr>(S, CodePtr(), A0);
28880}
28881bool EvalEmitter::emitGetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
28882 if (!isActive()) return true;
28883 CurrentSource = L;
28884 return GetThisField<PT_MemberPtr>(S, CodePtr(), A0);
28885}
28886bool EvalEmitter::emitGetThisFieldFloat( uint32_t A0, SourceInfo L) {
28887 if (!isActive()) return true;
28888 CurrentSource = L;
28889 return GetThisField<PT_Float>(S, CodePtr(), A0);
28890}
28891#endif
28892#ifdef GET_OPCODE_NAMES
28893OP_GetTypeid,
28894#endif
28895#ifdef GET_INTERPFN_LIST
28896&Interp_GetTypeid,
28897#endif
28898#ifdef GET_INTERPFN_DISPATCHERS
28899PRESERVE_NONE
28900static bool Interp_GetTypeid(InterpState &S) {
28901 {
28902 const auto V0 = ReadArg<const Type *>(S, S.PC);
28903 const auto V1 = ReadArg<const Type *>(S, S.PC);
28904 GetTypeid(S, V0, V1);
28905 }
28906#if USE_TAILCALLS
28907 MUSTTAIL return InterpNext(S);
28908#else
28909 return true;
28910#endif
28911}
28912#endif
28913#ifdef GET_DISASM
28914case OP_GetTypeid:
28915 Text.Op = PrintName("GetTypeid");
28916 Text.Args.push_back(printArg<const Type *>(PC));
28917 Text.Args.push_back(printArg<const Type *>(PC));
28918 break;
28919#endif
28920#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28921bool emitGetTypeid( const Type * , const Type * , SourceInfo);
28922#endif
28923#ifdef GET_LINK_IMPL
28924bool ByteCodeEmitter::emitGetTypeid( const Type * A0, const Type * A1, SourceInfo L) {
28925 return emitOp<const Type *, const Type *>(OP_GetTypeid, A0, A1, L);
28926}
28927#endif
28928#ifdef GET_EVAL_IMPL
28929bool EvalEmitter::emitGetTypeid( const Type * A0, const Type * A1, SourceInfo L) {
28930 if (!isActive()) return true;
28931 CurrentSource = L;
28932 return GetTypeid(S, A0, A1);
28933}
28934#endif
28935#ifdef GET_OPCODE_NAMES
28936OP_GetTypeidPtr,
28937#endif
28938#ifdef GET_INTERPFN_LIST
28939&Interp_GetTypeidPtr,
28940#endif
28941#ifdef GET_INTERPFN_DISPATCHERS
28942PRESERVE_NONE
28943static bool Interp_GetTypeidPtr(InterpState &S) {
28944 {
28945 CodePtr OpPC = S.PC;
28946 const auto V0 = ReadArg<const Type *>(S, S.PC);
28947 if (!GetTypeidPtr(S, OpPC, V0)) return false;
28948 }
28949#if USE_TAILCALLS
28950 MUSTTAIL return InterpNext(S);
28951#else
28952 return true;
28953#endif
28954}
28955#endif
28956#ifdef GET_DISASM
28957case OP_GetTypeidPtr:
28958 Text.Op = PrintName("GetTypeidPtr");
28959 Text.Args.push_back(printArg<const Type *>(PC));
28960 break;
28961#endif
28962#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28963bool emitGetTypeidPtr( const Type * , SourceInfo);
28964#endif
28965#ifdef GET_LINK_IMPL
28966bool ByteCodeEmitter::emitGetTypeidPtr( const Type * A0, SourceInfo L) {
28967 return emitOp<const Type *>(OP_GetTypeidPtr, A0, L);
28968}
28969#endif
28970#ifdef GET_EVAL_IMPL
28971bool EvalEmitter::emitGetTypeidPtr( const Type * A0, SourceInfo L) {
28972 if (!isActive()) return true;
28973 CurrentSource = L;
28974 return GetTypeidPtr(S, CodePtr(), A0);
28975}
28976#endif
28977#ifdef GET_OPCODE_NAMES
28978OP_IncSint8,
28979OP_IncUint8,
28980OP_IncSint16,
28981OP_IncUint16,
28982OP_IncSint32,
28983OP_IncUint32,
28984OP_IncSint64,
28985OP_IncUint64,
28986OP_IncIntAP,
28987OP_IncIntAPS,
28988OP_IncBool,
28989OP_IncFixedPoint,
28990#endif
28991#ifdef GET_INTERPFN_LIST
28992&Interp_IncSint8,
28993&Interp_IncUint8,
28994&Interp_IncSint16,
28995&Interp_IncUint16,
28996&Interp_IncSint32,
28997&Interp_IncUint32,
28998&Interp_IncSint64,
28999&Interp_IncUint64,
29000&Interp_IncIntAP,
29001&Interp_IncIntAPS,
29002&Interp_IncBool,
29003&Interp_IncFixedPoint,
29004#endif
29005#ifdef GET_INTERPFN_DISPATCHERS
29006PRESERVE_NONE
29007static bool Interp_IncSint8(InterpState &S) {
29008 {
29009 CodePtr OpPC = S.PC;
29010 const auto V0 = ReadArg<bool>(S, S.PC);
29011 if (!Inc<PT_Sint8>(S, OpPC, V0)) return false;
29012 }
29013#if USE_TAILCALLS
29014 MUSTTAIL return InterpNext(S);
29015#else
29016 return true;
29017#endif
29018}
29019PRESERVE_NONE
29020static bool Interp_IncUint8(InterpState &S) {
29021 {
29022 CodePtr OpPC = S.PC;
29023 const auto V0 = ReadArg<bool>(S, S.PC);
29024 if (!Inc<PT_Uint8>(S, OpPC, V0)) return false;
29025 }
29026#if USE_TAILCALLS
29027 MUSTTAIL return InterpNext(S);
29028#else
29029 return true;
29030#endif
29031}
29032PRESERVE_NONE
29033static bool Interp_IncSint16(InterpState &S) {
29034 {
29035 CodePtr OpPC = S.PC;
29036 const auto V0 = ReadArg<bool>(S, S.PC);
29037 if (!Inc<PT_Sint16>(S, OpPC, V0)) return false;
29038 }
29039#if USE_TAILCALLS
29040 MUSTTAIL return InterpNext(S);
29041#else
29042 return true;
29043#endif
29044}
29045PRESERVE_NONE
29046static bool Interp_IncUint16(InterpState &S) {
29047 {
29048 CodePtr OpPC = S.PC;
29049 const auto V0 = ReadArg<bool>(S, S.PC);
29050 if (!Inc<PT_Uint16>(S, OpPC, V0)) return false;
29051 }
29052#if USE_TAILCALLS
29053 MUSTTAIL return InterpNext(S);
29054#else
29055 return true;
29056#endif
29057}
29058PRESERVE_NONE
29059static bool Interp_IncSint32(InterpState &S) {
29060 {
29061 CodePtr OpPC = S.PC;
29062 const auto V0 = ReadArg<bool>(S, S.PC);
29063 if (!Inc<PT_Sint32>(S, OpPC, V0)) return false;
29064 }
29065#if USE_TAILCALLS
29066 MUSTTAIL return InterpNext(S);
29067#else
29068 return true;
29069#endif
29070}
29071PRESERVE_NONE
29072static bool Interp_IncUint32(InterpState &S) {
29073 {
29074 CodePtr OpPC = S.PC;
29075 const auto V0 = ReadArg<bool>(S, S.PC);
29076 if (!Inc<PT_Uint32>(S, OpPC, V0)) return false;
29077 }
29078#if USE_TAILCALLS
29079 MUSTTAIL return InterpNext(S);
29080#else
29081 return true;
29082#endif
29083}
29084PRESERVE_NONE
29085static bool Interp_IncSint64(InterpState &S) {
29086 {
29087 CodePtr OpPC = S.PC;
29088 const auto V0 = ReadArg<bool>(S, S.PC);
29089 if (!Inc<PT_Sint64>(S, OpPC, V0)) return false;
29090 }
29091#if USE_TAILCALLS
29092 MUSTTAIL return InterpNext(S);
29093#else
29094 return true;
29095#endif
29096}
29097PRESERVE_NONE
29098static bool Interp_IncUint64(InterpState &S) {
29099 {
29100 CodePtr OpPC = S.PC;
29101 const auto V0 = ReadArg<bool>(S, S.PC);
29102 if (!Inc<PT_Uint64>(S, OpPC, V0)) return false;
29103 }
29104#if USE_TAILCALLS
29105 MUSTTAIL return InterpNext(S);
29106#else
29107 return true;
29108#endif
29109}
29110PRESERVE_NONE
29111static bool Interp_IncIntAP(InterpState &S) {
29112 {
29113 CodePtr OpPC = S.PC;
29114 const auto V0 = ReadArg<bool>(S, S.PC);
29115 if (!Inc<PT_IntAP>(S, OpPC, V0)) return false;
29116 }
29117#if USE_TAILCALLS
29118 MUSTTAIL return InterpNext(S);
29119#else
29120 return true;
29121#endif
29122}
29123PRESERVE_NONE
29124static bool Interp_IncIntAPS(InterpState &S) {
29125 {
29126 CodePtr OpPC = S.PC;
29127 const auto V0 = ReadArg<bool>(S, S.PC);
29128 if (!Inc<PT_IntAPS>(S, OpPC, V0)) return false;
29129 }
29130#if USE_TAILCALLS
29131 MUSTTAIL return InterpNext(S);
29132#else
29133 return true;
29134#endif
29135}
29136PRESERVE_NONE
29137static bool Interp_IncBool(InterpState &S) {
29138 {
29139 CodePtr OpPC = S.PC;
29140 const auto V0 = ReadArg<bool>(S, S.PC);
29141 if (!Inc<PT_Bool>(S, OpPC, V0)) return false;
29142 }
29143#if USE_TAILCALLS
29144 MUSTTAIL return InterpNext(S);
29145#else
29146 return true;
29147#endif
29148}
29149PRESERVE_NONE
29150static bool Interp_IncFixedPoint(InterpState &S) {
29151 {
29152 CodePtr OpPC = S.PC;
29153 const auto V0 = ReadArg<bool>(S, S.PC);
29154 if (!Inc<PT_FixedPoint>(S, OpPC, V0)) return false;
29155 }
29156#if USE_TAILCALLS
29157 MUSTTAIL return InterpNext(S);
29158#else
29159 return true;
29160#endif
29161}
29162#endif
29163#ifdef GET_DISASM
29164case OP_IncSint8:
29165 Text.Op = PrintName("IncSint8");
29166 Text.Args.push_back(printArg<bool>(PC));
29167 break;
29168case OP_IncUint8:
29169 Text.Op = PrintName("IncUint8");
29170 Text.Args.push_back(printArg<bool>(PC));
29171 break;
29172case OP_IncSint16:
29173 Text.Op = PrintName("IncSint16");
29174 Text.Args.push_back(printArg<bool>(PC));
29175 break;
29176case OP_IncUint16:
29177 Text.Op = PrintName("IncUint16");
29178 Text.Args.push_back(printArg<bool>(PC));
29179 break;
29180case OP_IncSint32:
29181 Text.Op = PrintName("IncSint32");
29182 Text.Args.push_back(printArg<bool>(PC));
29183 break;
29184case OP_IncUint32:
29185 Text.Op = PrintName("IncUint32");
29186 Text.Args.push_back(printArg<bool>(PC));
29187 break;
29188case OP_IncSint64:
29189 Text.Op = PrintName("IncSint64");
29190 Text.Args.push_back(printArg<bool>(PC));
29191 break;
29192case OP_IncUint64:
29193 Text.Op = PrintName("IncUint64");
29194 Text.Args.push_back(printArg<bool>(PC));
29195 break;
29196case OP_IncIntAP:
29197 Text.Op = PrintName("IncIntAP");
29198 Text.Args.push_back(printArg<bool>(PC));
29199 break;
29200case OP_IncIntAPS:
29201 Text.Op = PrintName("IncIntAPS");
29202 Text.Args.push_back(printArg<bool>(PC));
29203 break;
29204case OP_IncBool:
29205 Text.Op = PrintName("IncBool");
29206 Text.Args.push_back(printArg<bool>(PC));
29207 break;
29208case OP_IncFixedPoint:
29209 Text.Op = PrintName("IncFixedPoint");
29210 Text.Args.push_back(printArg<bool>(PC));
29211 break;
29212#endif
29213#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29214bool emitIncSint8( bool , SourceInfo);
29215bool emitIncUint8( bool , SourceInfo);
29216bool emitIncSint16( bool , SourceInfo);
29217bool emitIncUint16( bool , SourceInfo);
29218bool emitIncSint32( bool , SourceInfo);
29219bool emitIncUint32( bool , SourceInfo);
29220bool emitIncSint64( bool , SourceInfo);
29221bool emitIncUint64( bool , SourceInfo);
29222bool emitIncIntAP( bool , SourceInfo);
29223bool emitIncIntAPS( bool , SourceInfo);
29224bool emitIncBool( bool , SourceInfo);
29225bool emitIncFixedPoint( bool , SourceInfo);
29226#endif
29227#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29228[[nodiscard]] bool emitInc(PrimType, bool, SourceInfo I);
29229#endif
29230#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
29231bool
29232#if defined(GET_EVAL_IMPL)
29233EvalEmitter
29234#else
29235ByteCodeEmitter
29236#endif
29237::emitInc(PrimType T0, bool A0, SourceInfo I) {
29238 switch (T0) {
29239 case PT_Sint8:
29240 return emitIncSint8(A0, I);
29241 case PT_Uint8:
29242 return emitIncUint8(A0, I);
29243 case PT_Sint16:
29244 return emitIncSint16(A0, I);
29245 case PT_Uint16:
29246 return emitIncUint16(A0, I);
29247 case PT_Sint32:
29248 return emitIncSint32(A0, I);
29249 case PT_Uint32:
29250 return emitIncUint32(A0, I);
29251 case PT_Sint64:
29252 return emitIncSint64(A0, I);
29253 case PT_Uint64:
29254 return emitIncUint64(A0, I);
29255 case PT_IntAP:
29256 return emitIncIntAP(A0, I);
29257 case PT_IntAPS:
29258 return emitIncIntAPS(A0, I);
29259 case PT_Bool:
29260 return emitIncBool(A0, I);
29261 case PT_FixedPoint:
29262 return emitIncFixedPoint(A0, I);
29263 default: llvm_unreachable("invalid type: emitInc");
29264 }
29265 llvm_unreachable("invalid enum value");
29266}
29267#endif
29268#ifdef GET_LINK_IMPL
29269bool ByteCodeEmitter::emitIncSint8( bool A0, SourceInfo L) {
29270 return emitOp<bool>(OP_IncSint8, A0, L);
29271}
29272bool ByteCodeEmitter::emitIncUint8( bool A0, SourceInfo L) {
29273 return emitOp<bool>(OP_IncUint8, A0, L);
29274}
29275bool ByteCodeEmitter::emitIncSint16( bool A0, SourceInfo L) {
29276 return emitOp<bool>(OP_IncSint16, A0, L);
29277}
29278bool ByteCodeEmitter::emitIncUint16( bool A0, SourceInfo L) {
29279 return emitOp<bool>(OP_IncUint16, A0, L);
29280}
29281bool ByteCodeEmitter::emitIncSint32( bool A0, SourceInfo L) {
29282 return emitOp<bool>(OP_IncSint32, A0, L);
29283}
29284bool ByteCodeEmitter::emitIncUint32( bool A0, SourceInfo L) {
29285 return emitOp<bool>(OP_IncUint32, A0, L);
29286}
29287bool ByteCodeEmitter::emitIncSint64( bool A0, SourceInfo L) {
29288 return emitOp<bool>(OP_IncSint64, A0, L);
29289}
29290bool ByteCodeEmitter::emitIncUint64( bool A0, SourceInfo L) {
29291 return emitOp<bool>(OP_IncUint64, A0, L);
29292}
29293bool ByteCodeEmitter::emitIncIntAP( bool A0, SourceInfo L) {
29294 return emitOp<bool>(OP_IncIntAP, A0, L);
29295}
29296bool ByteCodeEmitter::emitIncIntAPS( bool A0, SourceInfo L) {
29297 return emitOp<bool>(OP_IncIntAPS, A0, L);
29298}
29299bool ByteCodeEmitter::emitIncBool( bool A0, SourceInfo L) {
29300 return emitOp<bool>(OP_IncBool, A0, L);
29301}
29302bool ByteCodeEmitter::emitIncFixedPoint( bool A0, SourceInfo L) {
29303 return emitOp<bool>(OP_IncFixedPoint, A0, L);
29304}
29305#endif
29306#ifdef GET_EVAL_IMPL
29307bool EvalEmitter::emitIncSint8( bool A0, SourceInfo L) {
29308 if (!isActive()) return true;
29309 CurrentSource = L;
29310 return Inc<PT_Sint8>(S, CodePtr(), A0);
29311}
29312bool EvalEmitter::emitIncUint8( bool A0, SourceInfo L) {
29313 if (!isActive()) return true;
29314 CurrentSource = L;
29315 return Inc<PT_Uint8>(S, CodePtr(), A0);
29316}
29317bool EvalEmitter::emitIncSint16( bool A0, SourceInfo L) {
29318 if (!isActive()) return true;
29319 CurrentSource = L;
29320 return Inc<PT_Sint16>(S, CodePtr(), A0);
29321}
29322bool EvalEmitter::emitIncUint16( bool A0, SourceInfo L) {
29323 if (!isActive()) return true;
29324 CurrentSource = L;
29325 return Inc<PT_Uint16>(S, CodePtr(), A0);
29326}
29327bool EvalEmitter::emitIncSint32( bool A0, SourceInfo L) {
29328 if (!isActive()) return true;
29329 CurrentSource = L;
29330 return Inc<PT_Sint32>(S, CodePtr(), A0);
29331}
29332bool EvalEmitter::emitIncUint32( bool A0, SourceInfo L) {
29333 if (!isActive()) return true;
29334 CurrentSource = L;
29335 return Inc<PT_Uint32>(S, CodePtr(), A0);
29336}
29337bool EvalEmitter::emitIncSint64( bool A0, SourceInfo L) {
29338 if (!isActive()) return true;
29339 CurrentSource = L;
29340 return Inc<PT_Sint64>(S, CodePtr(), A0);
29341}
29342bool EvalEmitter::emitIncUint64( bool A0, SourceInfo L) {
29343 if (!isActive()) return true;
29344 CurrentSource = L;
29345 return Inc<PT_Uint64>(S, CodePtr(), A0);
29346}
29347bool EvalEmitter::emitIncIntAP( bool A0, SourceInfo L) {
29348 if (!isActive()) return true;
29349 CurrentSource = L;
29350 return Inc<PT_IntAP>(S, CodePtr(), A0);
29351}
29352bool EvalEmitter::emitIncIntAPS( bool A0, SourceInfo L) {
29353 if (!isActive()) return true;
29354 CurrentSource = L;
29355 return Inc<PT_IntAPS>(S, CodePtr(), A0);
29356}
29357bool EvalEmitter::emitIncBool( bool A0, SourceInfo L) {
29358 if (!isActive()) return true;
29359 CurrentSource = L;
29360 return Inc<PT_Bool>(S, CodePtr(), A0);
29361}
29362bool EvalEmitter::emitIncFixedPoint( bool A0, SourceInfo L) {
29363 if (!isActive()) return true;
29364 CurrentSource = L;
29365 return Inc<PT_FixedPoint>(S, CodePtr(), A0);
29366}
29367#endif
29368#ifdef GET_OPCODE_NAMES
29369OP_IncBitfieldSint8,
29370OP_IncBitfieldUint8,
29371OP_IncBitfieldSint16,
29372OP_IncBitfieldUint16,
29373OP_IncBitfieldSint32,
29374OP_IncBitfieldUint32,
29375OP_IncBitfieldSint64,
29376OP_IncBitfieldUint64,
29377OP_IncBitfieldIntAP,
29378OP_IncBitfieldIntAPS,
29379OP_IncBitfieldBool,
29380OP_IncBitfieldFixedPoint,
29381#endif
29382#ifdef GET_INTERPFN_LIST
29383&Interp_IncBitfieldSint8,
29384&Interp_IncBitfieldUint8,
29385&Interp_IncBitfieldSint16,
29386&Interp_IncBitfieldUint16,
29387&Interp_IncBitfieldSint32,
29388&Interp_IncBitfieldUint32,
29389&Interp_IncBitfieldSint64,
29390&Interp_IncBitfieldUint64,
29391&Interp_IncBitfieldIntAP,
29392&Interp_IncBitfieldIntAPS,
29393&Interp_IncBitfieldBool,
29394&Interp_IncBitfieldFixedPoint,
29395#endif
29396#ifdef GET_INTERPFN_DISPATCHERS
29397PRESERVE_NONE
29398static bool Interp_IncBitfieldSint8(InterpState &S) {
29399 {
29400 CodePtr OpPC = S.PC;
29401 const auto V0 = ReadArg<bool>(S, S.PC);
29402 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29403 if (!IncBitfield<PT_Sint8>(S, OpPC, V0, V1)) return false;
29404 }
29405#if USE_TAILCALLS
29406 MUSTTAIL return InterpNext(S);
29407#else
29408 return true;
29409#endif
29410}
29411PRESERVE_NONE
29412static bool Interp_IncBitfieldUint8(InterpState &S) {
29413 {
29414 CodePtr OpPC = S.PC;
29415 const auto V0 = ReadArg<bool>(S, S.PC);
29416 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29417 if (!IncBitfield<PT_Uint8>(S, OpPC, V0, V1)) return false;
29418 }
29419#if USE_TAILCALLS
29420 MUSTTAIL return InterpNext(S);
29421#else
29422 return true;
29423#endif
29424}
29425PRESERVE_NONE
29426static bool Interp_IncBitfieldSint16(InterpState &S) {
29427 {
29428 CodePtr OpPC = S.PC;
29429 const auto V0 = ReadArg<bool>(S, S.PC);
29430 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29431 if (!IncBitfield<PT_Sint16>(S, OpPC, V0, V1)) return false;
29432 }
29433#if USE_TAILCALLS
29434 MUSTTAIL return InterpNext(S);
29435#else
29436 return true;
29437#endif
29438}
29439PRESERVE_NONE
29440static bool Interp_IncBitfieldUint16(InterpState &S) {
29441 {
29442 CodePtr OpPC = S.PC;
29443 const auto V0 = ReadArg<bool>(S, S.PC);
29444 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29445 if (!IncBitfield<PT_Uint16>(S, OpPC, V0, V1)) return false;
29446 }
29447#if USE_TAILCALLS
29448 MUSTTAIL return InterpNext(S);
29449#else
29450 return true;
29451#endif
29452}
29453PRESERVE_NONE
29454static bool Interp_IncBitfieldSint32(InterpState &S) {
29455 {
29456 CodePtr OpPC = S.PC;
29457 const auto V0 = ReadArg<bool>(S, S.PC);
29458 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29459 if (!IncBitfield<PT_Sint32>(S, OpPC, V0, V1)) return false;
29460 }
29461#if USE_TAILCALLS
29462 MUSTTAIL return InterpNext(S);
29463#else
29464 return true;
29465#endif
29466}
29467PRESERVE_NONE
29468static bool Interp_IncBitfieldUint32(InterpState &S) {
29469 {
29470 CodePtr OpPC = S.PC;
29471 const auto V0 = ReadArg<bool>(S, S.PC);
29472 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29473 if (!IncBitfield<PT_Uint32>(S, OpPC, V0, V1)) return false;
29474 }
29475#if USE_TAILCALLS
29476 MUSTTAIL return InterpNext(S);
29477#else
29478 return true;
29479#endif
29480}
29481PRESERVE_NONE
29482static bool Interp_IncBitfieldSint64(InterpState &S) {
29483 {
29484 CodePtr OpPC = S.PC;
29485 const auto V0 = ReadArg<bool>(S, S.PC);
29486 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29487 if (!IncBitfield<PT_Sint64>(S, OpPC, V0, V1)) return false;
29488 }
29489#if USE_TAILCALLS
29490 MUSTTAIL return InterpNext(S);
29491#else
29492 return true;
29493#endif
29494}
29495PRESERVE_NONE
29496static bool Interp_IncBitfieldUint64(InterpState &S) {
29497 {
29498 CodePtr OpPC = S.PC;
29499 const auto V0 = ReadArg<bool>(S, S.PC);
29500 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29501 if (!IncBitfield<PT_Uint64>(S, OpPC, V0, V1)) return false;
29502 }
29503#if USE_TAILCALLS
29504 MUSTTAIL return InterpNext(S);
29505#else
29506 return true;
29507#endif
29508}
29509PRESERVE_NONE
29510static bool Interp_IncBitfieldIntAP(InterpState &S) {
29511 {
29512 CodePtr OpPC = S.PC;
29513 const auto V0 = ReadArg<bool>(S, S.PC);
29514 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29515 if (!IncBitfield<PT_IntAP>(S, OpPC, V0, V1)) return false;
29516 }
29517#if USE_TAILCALLS
29518 MUSTTAIL return InterpNext(S);
29519#else
29520 return true;
29521#endif
29522}
29523PRESERVE_NONE
29524static bool Interp_IncBitfieldIntAPS(InterpState &S) {
29525 {
29526 CodePtr OpPC = S.PC;
29527 const auto V0 = ReadArg<bool>(S, S.PC);
29528 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29529 if (!IncBitfield<PT_IntAPS>(S, OpPC, V0, V1)) return false;
29530 }
29531#if USE_TAILCALLS
29532 MUSTTAIL return InterpNext(S);
29533#else
29534 return true;
29535#endif
29536}
29537PRESERVE_NONE
29538static bool Interp_IncBitfieldBool(InterpState &S) {
29539 {
29540 CodePtr OpPC = S.PC;
29541 const auto V0 = ReadArg<bool>(S, S.PC);
29542 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29543 if (!IncBitfield<PT_Bool>(S, OpPC, V0, V1)) return false;
29544 }
29545#if USE_TAILCALLS
29546 MUSTTAIL return InterpNext(S);
29547#else
29548 return true;
29549#endif
29550}
29551PRESERVE_NONE
29552static bool Interp_IncBitfieldFixedPoint(InterpState &S) {
29553 {
29554 CodePtr OpPC = S.PC;
29555 const auto V0 = ReadArg<bool>(S, S.PC);
29556 const auto V1 = ReadArg<uint32_t>(S, S.PC);
29557 if (!IncBitfield<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
29558 }
29559#if USE_TAILCALLS
29560 MUSTTAIL return InterpNext(S);
29561#else
29562 return true;
29563#endif
29564}
29565#endif
29566#ifdef GET_DISASM
29567case OP_IncBitfieldSint8:
29568 Text.Op = PrintName("IncBitfieldSint8");
29569 Text.Args.push_back(printArg<bool>(PC));
29570 Text.Args.push_back(printArg<uint32_t>(PC));
29571 break;
29572case OP_IncBitfieldUint8:
29573 Text.Op = PrintName("IncBitfieldUint8");
29574 Text.Args.push_back(printArg<bool>(PC));
29575 Text.Args.push_back(printArg<uint32_t>(PC));
29576 break;
29577case OP_IncBitfieldSint16:
29578 Text.Op = PrintName("IncBitfieldSint16");
29579 Text.Args.push_back(printArg<bool>(PC));
29580 Text.Args.push_back(printArg<uint32_t>(PC));
29581 break;
29582case OP_IncBitfieldUint16:
29583 Text.Op = PrintName("IncBitfieldUint16");
29584 Text.Args.push_back(printArg<bool>(PC));
29585 Text.Args.push_back(printArg<uint32_t>(PC));
29586 break;
29587case OP_IncBitfieldSint32:
29588 Text.Op = PrintName("IncBitfieldSint32");
29589 Text.Args.push_back(printArg<bool>(PC));
29590 Text.Args.push_back(printArg<uint32_t>(PC));
29591 break;
29592case OP_IncBitfieldUint32:
29593 Text.Op = PrintName("IncBitfieldUint32");
29594 Text.Args.push_back(printArg<bool>(PC));
29595 Text.Args.push_back(printArg<uint32_t>(PC));
29596 break;
29597case OP_IncBitfieldSint64:
29598 Text.Op = PrintName("IncBitfieldSint64");
29599 Text.Args.push_back(printArg<bool>(PC));
29600 Text.Args.push_back(printArg<uint32_t>(PC));
29601 break;
29602case OP_IncBitfieldUint64:
29603 Text.Op = PrintName("IncBitfieldUint64");
29604 Text.Args.push_back(printArg<bool>(PC));
29605 Text.Args.push_back(printArg<uint32_t>(PC));
29606 break;
29607case OP_IncBitfieldIntAP:
29608 Text.Op = PrintName("IncBitfieldIntAP");
29609 Text.Args.push_back(printArg<bool>(PC));
29610 Text.Args.push_back(printArg<uint32_t>(PC));
29611 break;
29612case OP_IncBitfieldIntAPS:
29613 Text.Op = PrintName("IncBitfieldIntAPS");
29614 Text.Args.push_back(printArg<bool>(PC));
29615 Text.Args.push_back(printArg<uint32_t>(PC));
29616 break;
29617case OP_IncBitfieldBool:
29618 Text.Op = PrintName("IncBitfieldBool");
29619 Text.Args.push_back(printArg<bool>(PC));
29620 Text.Args.push_back(printArg<uint32_t>(PC));
29621 break;
29622case OP_IncBitfieldFixedPoint:
29623 Text.Op = PrintName("IncBitfieldFixedPoint");
29624 Text.Args.push_back(printArg<bool>(PC));
29625 Text.Args.push_back(printArg<uint32_t>(PC));
29626 break;
29627#endif
29628#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29629bool emitIncBitfieldSint8( bool , uint32_t , SourceInfo);
29630bool emitIncBitfieldUint8( bool , uint32_t , SourceInfo);
29631bool emitIncBitfieldSint16( bool , uint32_t , SourceInfo);
29632bool emitIncBitfieldUint16( bool , uint32_t , SourceInfo);
29633bool emitIncBitfieldSint32( bool , uint32_t , SourceInfo);
29634bool emitIncBitfieldUint32( bool , uint32_t , SourceInfo);
29635bool emitIncBitfieldSint64( bool , uint32_t , SourceInfo);
29636bool emitIncBitfieldUint64( bool , uint32_t , SourceInfo);
29637bool emitIncBitfieldIntAP( bool , uint32_t , SourceInfo);
29638bool emitIncBitfieldIntAPS( bool , uint32_t , SourceInfo);
29639bool emitIncBitfieldBool( bool , uint32_t , SourceInfo);
29640bool emitIncBitfieldFixedPoint( bool , uint32_t , SourceInfo);
29641#endif
29642#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29643[[nodiscard]] bool emitIncBitfield(PrimType, bool, uint32_t, SourceInfo I);
29644#endif
29645#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
29646bool
29647#if defined(GET_EVAL_IMPL)
29648EvalEmitter
29649#else
29650ByteCodeEmitter
29651#endif
29652::emitIncBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
29653 switch (T0) {
29654 case PT_Sint8:
29655 return emitIncBitfieldSint8(A0, A1, I);
29656 case PT_Uint8:
29657 return emitIncBitfieldUint8(A0, A1, I);
29658 case PT_Sint16:
29659 return emitIncBitfieldSint16(A0, A1, I);
29660 case PT_Uint16:
29661 return emitIncBitfieldUint16(A0, A1, I);
29662 case PT_Sint32:
29663 return emitIncBitfieldSint32(A0, A1, I);
29664 case PT_Uint32:
29665 return emitIncBitfieldUint32(A0, A1, I);
29666 case PT_Sint64:
29667 return emitIncBitfieldSint64(A0, A1, I);
29668 case PT_Uint64:
29669 return emitIncBitfieldUint64(A0, A1, I);
29670 case PT_IntAP:
29671 return emitIncBitfieldIntAP(A0, A1, I);
29672 case PT_IntAPS:
29673 return emitIncBitfieldIntAPS(A0, A1, I);
29674 case PT_Bool:
29675 return emitIncBitfieldBool(A0, A1, I);
29676 case PT_FixedPoint:
29677 return emitIncBitfieldFixedPoint(A0, A1, I);
29678 default: llvm_unreachable("invalid type: emitIncBitfield");
29679 }
29680 llvm_unreachable("invalid enum value");
29681}
29682#endif
29683#ifdef GET_LINK_IMPL
29684bool ByteCodeEmitter::emitIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
29685 return emitOp<bool, uint32_t>(OP_IncBitfieldSint8, A0, A1, L);
29686}
29687bool ByteCodeEmitter::emitIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
29688 return emitOp<bool, uint32_t>(OP_IncBitfieldUint8, A0, A1, L);
29689}
29690bool ByteCodeEmitter::emitIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
29691 return emitOp<bool, uint32_t>(OP_IncBitfieldSint16, A0, A1, L);
29692}
29693bool ByteCodeEmitter::emitIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
29694 return emitOp<bool, uint32_t>(OP_IncBitfieldUint16, A0, A1, L);
29695}
29696bool ByteCodeEmitter::emitIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
29697 return emitOp<bool, uint32_t>(OP_IncBitfieldSint32, A0, A1, L);
29698}
29699bool ByteCodeEmitter::emitIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
29700 return emitOp<bool, uint32_t>(OP_IncBitfieldUint32, A0, A1, L);
29701}
29702bool ByteCodeEmitter::emitIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
29703 return emitOp<bool, uint32_t>(OP_IncBitfieldSint64, A0, A1, L);
29704}
29705bool ByteCodeEmitter::emitIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
29706 return emitOp<bool, uint32_t>(OP_IncBitfieldUint64, A0, A1, L);
29707}
29708bool ByteCodeEmitter::emitIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
29709 return emitOp<bool, uint32_t>(OP_IncBitfieldIntAP, A0, A1, L);
29710}
29711bool ByteCodeEmitter::emitIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
29712 return emitOp<bool, uint32_t>(OP_IncBitfieldIntAPS, A0, A1, L);
29713}
29714bool ByteCodeEmitter::emitIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
29715 return emitOp<bool, uint32_t>(OP_IncBitfieldBool, A0, A1, L);
29716}
29717bool ByteCodeEmitter::emitIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
29718 return emitOp<bool, uint32_t>(OP_IncBitfieldFixedPoint, A0, A1, L);
29719}
29720#endif
29721#ifdef GET_EVAL_IMPL
29722bool EvalEmitter::emitIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
29723 if (!isActive()) return true;
29724 CurrentSource = L;
29725 return IncBitfield<PT_Sint8>(S, CodePtr(), A0, A1);
29726}
29727bool EvalEmitter::emitIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
29728 if (!isActive()) return true;
29729 CurrentSource = L;
29730 return IncBitfield<PT_Uint8>(S, CodePtr(), A0, A1);
29731}
29732bool EvalEmitter::emitIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
29733 if (!isActive()) return true;
29734 CurrentSource = L;
29735 return IncBitfield<PT_Sint16>(S, CodePtr(), A0, A1);
29736}
29737bool EvalEmitter::emitIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
29738 if (!isActive()) return true;
29739 CurrentSource = L;
29740 return IncBitfield<PT_Uint16>(S, CodePtr(), A0, A1);
29741}
29742bool EvalEmitter::emitIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
29743 if (!isActive()) return true;
29744 CurrentSource = L;
29745 return IncBitfield<PT_Sint32>(S, CodePtr(), A0, A1);
29746}
29747bool EvalEmitter::emitIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
29748 if (!isActive()) return true;
29749 CurrentSource = L;
29750 return IncBitfield<PT_Uint32>(S, CodePtr(), A0, A1);
29751}
29752bool EvalEmitter::emitIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
29753 if (!isActive()) return true;
29754 CurrentSource = L;
29755 return IncBitfield<PT_Sint64>(S, CodePtr(), A0, A1);
29756}
29757bool EvalEmitter::emitIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
29758 if (!isActive()) return true;
29759 CurrentSource = L;
29760 return IncBitfield<PT_Uint64>(S, CodePtr(), A0, A1);
29761}
29762bool EvalEmitter::emitIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
29763 if (!isActive()) return true;
29764 CurrentSource = L;
29765 return IncBitfield<PT_IntAP>(S, CodePtr(), A0, A1);
29766}
29767bool EvalEmitter::emitIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
29768 if (!isActive()) return true;
29769 CurrentSource = L;
29770 return IncBitfield<PT_IntAPS>(S, CodePtr(), A0, A1);
29771}
29772bool EvalEmitter::emitIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
29773 if (!isActive()) return true;
29774 CurrentSource = L;
29775 return IncBitfield<PT_Bool>(S, CodePtr(), A0, A1);
29776}
29777bool EvalEmitter::emitIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
29778 if (!isActive()) return true;
29779 CurrentSource = L;
29780 return IncBitfield<PT_FixedPoint>(S, CodePtr(), A0, A1);
29781}
29782#endif
29783#ifdef GET_OPCODE_NAMES
29784OP_IncPopSint8,
29785OP_IncPopUint8,
29786OP_IncPopSint16,
29787OP_IncPopUint16,
29788OP_IncPopSint32,
29789OP_IncPopUint32,
29790OP_IncPopSint64,
29791OP_IncPopUint64,
29792OP_IncPopIntAP,
29793OP_IncPopIntAPS,
29794OP_IncPopBool,
29795OP_IncPopFixedPoint,
29796#endif
29797#ifdef GET_INTERPFN_LIST
29798&Interp_IncPopSint8,
29799&Interp_IncPopUint8,
29800&Interp_IncPopSint16,
29801&Interp_IncPopUint16,
29802&Interp_IncPopSint32,
29803&Interp_IncPopUint32,
29804&Interp_IncPopSint64,
29805&Interp_IncPopUint64,
29806&Interp_IncPopIntAP,
29807&Interp_IncPopIntAPS,
29808&Interp_IncPopBool,
29809&Interp_IncPopFixedPoint,
29810#endif
29811#ifdef GET_INTERPFN_DISPATCHERS
29812PRESERVE_NONE
29813static bool Interp_IncPopSint8(InterpState &S) {
29814 {
29815 CodePtr OpPC = S.PC;
29816 const auto V0 = ReadArg<bool>(S, S.PC);
29817 if (!IncPop<PT_Sint8>(S, OpPC, V0)) return false;
29818 }
29819#if USE_TAILCALLS
29820 MUSTTAIL return InterpNext(S);
29821#else
29822 return true;
29823#endif
29824}
29825PRESERVE_NONE
29826static bool Interp_IncPopUint8(InterpState &S) {
29827 {
29828 CodePtr OpPC = S.PC;
29829 const auto V0 = ReadArg<bool>(S, S.PC);
29830 if (!IncPop<PT_Uint8>(S, OpPC, V0)) return false;
29831 }
29832#if USE_TAILCALLS
29833 MUSTTAIL return InterpNext(S);
29834#else
29835 return true;
29836#endif
29837}
29838PRESERVE_NONE
29839static bool Interp_IncPopSint16(InterpState &S) {
29840 {
29841 CodePtr OpPC = S.PC;
29842 const auto V0 = ReadArg<bool>(S, S.PC);
29843 if (!IncPop<PT_Sint16>(S, OpPC, V0)) return false;
29844 }
29845#if USE_TAILCALLS
29846 MUSTTAIL return InterpNext(S);
29847#else
29848 return true;
29849#endif
29850}
29851PRESERVE_NONE
29852static bool Interp_IncPopUint16(InterpState &S) {
29853 {
29854 CodePtr OpPC = S.PC;
29855 const auto V0 = ReadArg<bool>(S, S.PC);
29856 if (!IncPop<PT_Uint16>(S, OpPC, V0)) return false;
29857 }
29858#if USE_TAILCALLS
29859 MUSTTAIL return InterpNext(S);
29860#else
29861 return true;
29862#endif
29863}
29864PRESERVE_NONE
29865static bool Interp_IncPopSint32(InterpState &S) {
29866 {
29867 CodePtr OpPC = S.PC;
29868 const auto V0 = ReadArg<bool>(S, S.PC);
29869 if (!IncPop<PT_Sint32>(S, OpPC, V0)) return false;
29870 }
29871#if USE_TAILCALLS
29872 MUSTTAIL return InterpNext(S);
29873#else
29874 return true;
29875#endif
29876}
29877PRESERVE_NONE
29878static bool Interp_IncPopUint32(InterpState &S) {
29879 {
29880 CodePtr OpPC = S.PC;
29881 const auto V0 = ReadArg<bool>(S, S.PC);
29882 if (!IncPop<PT_Uint32>(S, OpPC, V0)) return false;
29883 }
29884#if USE_TAILCALLS
29885 MUSTTAIL return InterpNext(S);
29886#else
29887 return true;
29888#endif
29889}
29890PRESERVE_NONE
29891static bool Interp_IncPopSint64(InterpState &S) {
29892 {
29893 CodePtr OpPC = S.PC;
29894 const auto V0 = ReadArg<bool>(S, S.PC);
29895 if (!IncPop<PT_Sint64>(S, OpPC, V0)) return false;
29896 }
29897#if USE_TAILCALLS
29898 MUSTTAIL return InterpNext(S);
29899#else
29900 return true;
29901#endif
29902}
29903PRESERVE_NONE
29904static bool Interp_IncPopUint64(InterpState &S) {
29905 {
29906 CodePtr OpPC = S.PC;
29907 const auto V0 = ReadArg<bool>(S, S.PC);
29908 if (!IncPop<PT_Uint64>(S, OpPC, V0)) return false;
29909 }
29910#if USE_TAILCALLS
29911 MUSTTAIL return InterpNext(S);
29912#else
29913 return true;
29914#endif
29915}
29916PRESERVE_NONE
29917static bool Interp_IncPopIntAP(InterpState &S) {
29918 {
29919 CodePtr OpPC = S.PC;
29920 const auto V0 = ReadArg<bool>(S, S.PC);
29921 if (!IncPop<PT_IntAP>(S, OpPC, V0)) return false;
29922 }
29923#if USE_TAILCALLS
29924 MUSTTAIL return InterpNext(S);
29925#else
29926 return true;
29927#endif
29928}
29929PRESERVE_NONE
29930static bool Interp_IncPopIntAPS(InterpState &S) {
29931 {
29932 CodePtr OpPC = S.PC;
29933 const auto V0 = ReadArg<bool>(S, S.PC);
29934 if (!IncPop<PT_IntAPS>(S, OpPC, V0)) return false;
29935 }
29936#if USE_TAILCALLS
29937 MUSTTAIL return InterpNext(S);
29938#else
29939 return true;
29940#endif
29941}
29942PRESERVE_NONE
29943static bool Interp_IncPopBool(InterpState &S) {
29944 {
29945 CodePtr OpPC = S.PC;
29946 const auto V0 = ReadArg<bool>(S, S.PC);
29947 if (!IncPop<PT_Bool>(S, OpPC, V0)) return false;
29948 }
29949#if USE_TAILCALLS
29950 MUSTTAIL return InterpNext(S);
29951#else
29952 return true;
29953#endif
29954}
29955PRESERVE_NONE
29956static bool Interp_IncPopFixedPoint(InterpState &S) {
29957 {
29958 CodePtr OpPC = S.PC;
29959 const auto V0 = ReadArg<bool>(S, S.PC);
29960 if (!IncPop<PT_FixedPoint>(S, OpPC, V0)) return false;
29961 }
29962#if USE_TAILCALLS
29963 MUSTTAIL return InterpNext(S);
29964#else
29965 return true;
29966#endif
29967}
29968#endif
29969#ifdef GET_DISASM
29970case OP_IncPopSint8:
29971 Text.Op = PrintName("IncPopSint8");
29972 Text.Args.push_back(printArg<bool>(PC));
29973 break;
29974case OP_IncPopUint8:
29975 Text.Op = PrintName("IncPopUint8");
29976 Text.Args.push_back(printArg<bool>(PC));
29977 break;
29978case OP_IncPopSint16:
29979 Text.Op = PrintName("IncPopSint16");
29980 Text.Args.push_back(printArg<bool>(PC));
29981 break;
29982case OP_IncPopUint16:
29983 Text.Op = PrintName("IncPopUint16");
29984 Text.Args.push_back(printArg<bool>(PC));
29985 break;
29986case OP_IncPopSint32:
29987 Text.Op = PrintName("IncPopSint32");
29988 Text.Args.push_back(printArg<bool>(PC));
29989 break;
29990case OP_IncPopUint32:
29991 Text.Op = PrintName("IncPopUint32");
29992 Text.Args.push_back(printArg<bool>(PC));
29993 break;
29994case OP_IncPopSint64:
29995 Text.Op = PrintName("IncPopSint64");
29996 Text.Args.push_back(printArg<bool>(PC));
29997 break;
29998case OP_IncPopUint64:
29999 Text.Op = PrintName("IncPopUint64");
30000 Text.Args.push_back(printArg<bool>(PC));
30001 break;
30002case OP_IncPopIntAP:
30003 Text.Op = PrintName("IncPopIntAP");
30004 Text.Args.push_back(printArg<bool>(PC));
30005 break;
30006case OP_IncPopIntAPS:
30007 Text.Op = PrintName("IncPopIntAPS");
30008 Text.Args.push_back(printArg<bool>(PC));
30009 break;
30010case OP_IncPopBool:
30011 Text.Op = PrintName("IncPopBool");
30012 Text.Args.push_back(printArg<bool>(PC));
30013 break;
30014case OP_IncPopFixedPoint:
30015 Text.Op = PrintName("IncPopFixedPoint");
30016 Text.Args.push_back(printArg<bool>(PC));
30017 break;
30018#endif
30019#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30020bool emitIncPopSint8( bool , SourceInfo);
30021bool emitIncPopUint8( bool , SourceInfo);
30022bool emitIncPopSint16( bool , SourceInfo);
30023bool emitIncPopUint16( bool , SourceInfo);
30024bool emitIncPopSint32( bool , SourceInfo);
30025bool emitIncPopUint32( bool , SourceInfo);
30026bool emitIncPopSint64( bool , SourceInfo);
30027bool emitIncPopUint64( bool , SourceInfo);
30028bool emitIncPopIntAP( bool , SourceInfo);
30029bool emitIncPopIntAPS( bool , SourceInfo);
30030bool emitIncPopBool( bool , SourceInfo);
30031bool emitIncPopFixedPoint( bool , SourceInfo);
30032#endif
30033#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30034[[nodiscard]] bool emitIncPop(PrimType, bool, SourceInfo I);
30035#endif
30036#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
30037bool
30038#if defined(GET_EVAL_IMPL)
30039EvalEmitter
30040#else
30041ByteCodeEmitter
30042#endif
30043::emitIncPop(PrimType T0, bool A0, SourceInfo I) {
30044 switch (T0) {
30045 case PT_Sint8:
30046 return emitIncPopSint8(A0, I);
30047 case PT_Uint8:
30048 return emitIncPopUint8(A0, I);
30049 case PT_Sint16:
30050 return emitIncPopSint16(A0, I);
30051 case PT_Uint16:
30052 return emitIncPopUint16(A0, I);
30053 case PT_Sint32:
30054 return emitIncPopSint32(A0, I);
30055 case PT_Uint32:
30056 return emitIncPopUint32(A0, I);
30057 case PT_Sint64:
30058 return emitIncPopSint64(A0, I);
30059 case PT_Uint64:
30060 return emitIncPopUint64(A0, I);
30061 case PT_IntAP:
30062 return emitIncPopIntAP(A0, I);
30063 case PT_IntAPS:
30064 return emitIncPopIntAPS(A0, I);
30065 case PT_Bool:
30066 return emitIncPopBool(A0, I);
30067 case PT_FixedPoint:
30068 return emitIncPopFixedPoint(A0, I);
30069 default: llvm_unreachable("invalid type: emitIncPop");
30070 }
30071 llvm_unreachable("invalid enum value");
30072}
30073#endif
30074#ifdef GET_LINK_IMPL
30075bool ByteCodeEmitter::emitIncPopSint8( bool A0, SourceInfo L) {
30076 return emitOp<bool>(OP_IncPopSint8, A0, L);
30077}
30078bool ByteCodeEmitter::emitIncPopUint8( bool A0, SourceInfo L) {
30079 return emitOp<bool>(OP_IncPopUint8, A0, L);
30080}
30081bool ByteCodeEmitter::emitIncPopSint16( bool A0, SourceInfo L) {
30082 return emitOp<bool>(OP_IncPopSint16, A0, L);
30083}
30084bool ByteCodeEmitter::emitIncPopUint16( bool A0, SourceInfo L) {
30085 return emitOp<bool>(OP_IncPopUint16, A0, L);
30086}
30087bool ByteCodeEmitter::emitIncPopSint32( bool A0, SourceInfo L) {
30088 return emitOp<bool>(OP_IncPopSint32, A0, L);
30089}
30090bool ByteCodeEmitter::emitIncPopUint32( bool A0, SourceInfo L) {
30091 return emitOp<bool>(OP_IncPopUint32, A0, L);
30092}
30093bool ByteCodeEmitter::emitIncPopSint64( bool A0, SourceInfo L) {
30094 return emitOp<bool>(OP_IncPopSint64, A0, L);
30095}
30096bool ByteCodeEmitter::emitIncPopUint64( bool A0, SourceInfo L) {
30097 return emitOp<bool>(OP_IncPopUint64, A0, L);
30098}
30099bool ByteCodeEmitter::emitIncPopIntAP( bool A0, SourceInfo L) {
30100 return emitOp<bool>(OP_IncPopIntAP, A0, L);
30101}
30102bool ByteCodeEmitter::emitIncPopIntAPS( bool A0, SourceInfo L) {
30103 return emitOp<bool>(OP_IncPopIntAPS, A0, L);
30104}
30105bool ByteCodeEmitter::emitIncPopBool( bool A0, SourceInfo L) {
30106 return emitOp<bool>(OP_IncPopBool, A0, L);
30107}
30108bool ByteCodeEmitter::emitIncPopFixedPoint( bool A0, SourceInfo L) {
30109 return emitOp<bool>(OP_IncPopFixedPoint, A0, L);
30110}
30111#endif
30112#ifdef GET_EVAL_IMPL
30113bool EvalEmitter::emitIncPopSint8( bool A0, SourceInfo L) {
30114 if (!isActive()) return true;
30115 CurrentSource = L;
30116 return IncPop<PT_Sint8>(S, CodePtr(), A0);
30117}
30118bool EvalEmitter::emitIncPopUint8( bool A0, SourceInfo L) {
30119 if (!isActive()) return true;
30120 CurrentSource = L;
30121 return IncPop<PT_Uint8>(S, CodePtr(), A0);
30122}
30123bool EvalEmitter::emitIncPopSint16( bool A0, SourceInfo L) {
30124 if (!isActive()) return true;
30125 CurrentSource = L;
30126 return IncPop<PT_Sint16>(S, CodePtr(), A0);
30127}
30128bool EvalEmitter::emitIncPopUint16( bool A0, SourceInfo L) {
30129 if (!isActive()) return true;
30130 CurrentSource = L;
30131 return IncPop<PT_Uint16>(S, CodePtr(), A0);
30132}
30133bool EvalEmitter::emitIncPopSint32( bool A0, SourceInfo L) {
30134 if (!isActive()) return true;
30135 CurrentSource = L;
30136 return IncPop<PT_Sint32>(S, CodePtr(), A0);
30137}
30138bool EvalEmitter::emitIncPopUint32( bool A0, SourceInfo L) {
30139 if (!isActive()) return true;
30140 CurrentSource = L;
30141 return IncPop<PT_Uint32>(S, CodePtr(), A0);
30142}
30143bool EvalEmitter::emitIncPopSint64( bool A0, SourceInfo L) {
30144 if (!isActive()) return true;
30145 CurrentSource = L;
30146 return IncPop<PT_Sint64>(S, CodePtr(), A0);
30147}
30148bool EvalEmitter::emitIncPopUint64( bool A0, SourceInfo L) {
30149 if (!isActive()) return true;
30150 CurrentSource = L;
30151 return IncPop<PT_Uint64>(S, CodePtr(), A0);
30152}
30153bool EvalEmitter::emitIncPopIntAP( bool A0, SourceInfo L) {
30154 if (!isActive()) return true;
30155 CurrentSource = L;
30156 return IncPop<PT_IntAP>(S, CodePtr(), A0);
30157}
30158bool EvalEmitter::emitIncPopIntAPS( bool A0, SourceInfo L) {
30159 if (!isActive()) return true;
30160 CurrentSource = L;
30161 return IncPop<PT_IntAPS>(S, CodePtr(), A0);
30162}
30163bool EvalEmitter::emitIncPopBool( bool A0, SourceInfo L) {
30164 if (!isActive()) return true;
30165 CurrentSource = L;
30166 return IncPop<PT_Bool>(S, CodePtr(), A0);
30167}
30168bool EvalEmitter::emitIncPopFixedPoint( bool A0, SourceInfo L) {
30169 if (!isActive()) return true;
30170 CurrentSource = L;
30171 return IncPop<PT_FixedPoint>(S, CodePtr(), A0);
30172}
30173#endif
30174#ifdef GET_OPCODE_NAMES
30175OP_IncPopBitfieldSint8,
30176OP_IncPopBitfieldUint8,
30177OP_IncPopBitfieldSint16,
30178OP_IncPopBitfieldUint16,
30179OP_IncPopBitfieldSint32,
30180OP_IncPopBitfieldUint32,
30181OP_IncPopBitfieldSint64,
30182OP_IncPopBitfieldUint64,
30183OP_IncPopBitfieldIntAP,
30184OP_IncPopBitfieldIntAPS,
30185OP_IncPopBitfieldBool,
30186OP_IncPopBitfieldFixedPoint,
30187#endif
30188#ifdef GET_INTERPFN_LIST
30189&Interp_IncPopBitfieldSint8,
30190&Interp_IncPopBitfieldUint8,
30191&Interp_IncPopBitfieldSint16,
30192&Interp_IncPopBitfieldUint16,
30193&Interp_IncPopBitfieldSint32,
30194&Interp_IncPopBitfieldUint32,
30195&Interp_IncPopBitfieldSint64,
30196&Interp_IncPopBitfieldUint64,
30197&Interp_IncPopBitfieldIntAP,
30198&Interp_IncPopBitfieldIntAPS,
30199&Interp_IncPopBitfieldBool,
30200&Interp_IncPopBitfieldFixedPoint,
30201#endif
30202#ifdef GET_INTERPFN_DISPATCHERS
30203PRESERVE_NONE
30204static bool Interp_IncPopBitfieldSint8(InterpState &S) {
30205 {
30206 CodePtr OpPC = S.PC;
30207 const auto V0 = ReadArg<bool>(S, S.PC);
30208 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30209 if (!IncPopBitfield<PT_Sint8>(S, OpPC, V0, V1)) return false;
30210 }
30211#if USE_TAILCALLS
30212 MUSTTAIL return InterpNext(S);
30213#else
30214 return true;
30215#endif
30216}
30217PRESERVE_NONE
30218static bool Interp_IncPopBitfieldUint8(InterpState &S) {
30219 {
30220 CodePtr OpPC = S.PC;
30221 const auto V0 = ReadArg<bool>(S, S.PC);
30222 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30223 if (!IncPopBitfield<PT_Uint8>(S, OpPC, V0, V1)) return false;
30224 }
30225#if USE_TAILCALLS
30226 MUSTTAIL return InterpNext(S);
30227#else
30228 return true;
30229#endif
30230}
30231PRESERVE_NONE
30232static bool Interp_IncPopBitfieldSint16(InterpState &S) {
30233 {
30234 CodePtr OpPC = S.PC;
30235 const auto V0 = ReadArg<bool>(S, S.PC);
30236 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30237 if (!IncPopBitfield<PT_Sint16>(S, OpPC, V0, V1)) return false;
30238 }
30239#if USE_TAILCALLS
30240 MUSTTAIL return InterpNext(S);
30241#else
30242 return true;
30243#endif
30244}
30245PRESERVE_NONE
30246static bool Interp_IncPopBitfieldUint16(InterpState &S) {
30247 {
30248 CodePtr OpPC = S.PC;
30249 const auto V0 = ReadArg<bool>(S, S.PC);
30250 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30251 if (!IncPopBitfield<PT_Uint16>(S, OpPC, V0, V1)) return false;
30252 }
30253#if USE_TAILCALLS
30254 MUSTTAIL return InterpNext(S);
30255#else
30256 return true;
30257#endif
30258}
30259PRESERVE_NONE
30260static bool Interp_IncPopBitfieldSint32(InterpState &S) {
30261 {
30262 CodePtr OpPC = S.PC;
30263 const auto V0 = ReadArg<bool>(S, S.PC);
30264 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30265 if (!IncPopBitfield<PT_Sint32>(S, OpPC, V0, V1)) return false;
30266 }
30267#if USE_TAILCALLS
30268 MUSTTAIL return InterpNext(S);
30269#else
30270 return true;
30271#endif
30272}
30273PRESERVE_NONE
30274static bool Interp_IncPopBitfieldUint32(InterpState &S) {
30275 {
30276 CodePtr OpPC = S.PC;
30277 const auto V0 = ReadArg<bool>(S, S.PC);
30278 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30279 if (!IncPopBitfield<PT_Uint32>(S, OpPC, V0, V1)) return false;
30280 }
30281#if USE_TAILCALLS
30282 MUSTTAIL return InterpNext(S);
30283#else
30284 return true;
30285#endif
30286}
30287PRESERVE_NONE
30288static bool Interp_IncPopBitfieldSint64(InterpState &S) {
30289 {
30290 CodePtr OpPC = S.PC;
30291 const auto V0 = ReadArg<bool>(S, S.PC);
30292 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30293 if (!IncPopBitfield<PT_Sint64>(S, OpPC, V0, V1)) return false;
30294 }
30295#if USE_TAILCALLS
30296 MUSTTAIL return InterpNext(S);
30297#else
30298 return true;
30299#endif
30300}
30301PRESERVE_NONE
30302static bool Interp_IncPopBitfieldUint64(InterpState &S) {
30303 {
30304 CodePtr OpPC = S.PC;
30305 const auto V0 = ReadArg<bool>(S, S.PC);
30306 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30307 if (!IncPopBitfield<PT_Uint64>(S, OpPC, V0, V1)) return false;
30308 }
30309#if USE_TAILCALLS
30310 MUSTTAIL return InterpNext(S);
30311#else
30312 return true;
30313#endif
30314}
30315PRESERVE_NONE
30316static bool Interp_IncPopBitfieldIntAP(InterpState &S) {
30317 {
30318 CodePtr OpPC = S.PC;
30319 const auto V0 = ReadArg<bool>(S, S.PC);
30320 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30321 if (!IncPopBitfield<PT_IntAP>(S, OpPC, V0, V1)) return false;
30322 }
30323#if USE_TAILCALLS
30324 MUSTTAIL return InterpNext(S);
30325#else
30326 return true;
30327#endif
30328}
30329PRESERVE_NONE
30330static bool Interp_IncPopBitfieldIntAPS(InterpState &S) {
30331 {
30332 CodePtr OpPC = S.PC;
30333 const auto V0 = ReadArg<bool>(S, S.PC);
30334 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30335 if (!IncPopBitfield<PT_IntAPS>(S, OpPC, V0, V1)) return false;
30336 }
30337#if USE_TAILCALLS
30338 MUSTTAIL return InterpNext(S);
30339#else
30340 return true;
30341#endif
30342}
30343PRESERVE_NONE
30344static bool Interp_IncPopBitfieldBool(InterpState &S) {
30345 {
30346 CodePtr OpPC = S.PC;
30347 const auto V0 = ReadArg<bool>(S, S.PC);
30348 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30349 if (!IncPopBitfield<PT_Bool>(S, OpPC, V0, V1)) return false;
30350 }
30351#if USE_TAILCALLS
30352 MUSTTAIL return InterpNext(S);
30353#else
30354 return true;
30355#endif
30356}
30357PRESERVE_NONE
30358static bool Interp_IncPopBitfieldFixedPoint(InterpState &S) {
30359 {
30360 CodePtr OpPC = S.PC;
30361 const auto V0 = ReadArg<bool>(S, S.PC);
30362 const auto V1 = ReadArg<uint32_t>(S, S.PC);
30363 if (!IncPopBitfield<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
30364 }
30365#if USE_TAILCALLS
30366 MUSTTAIL return InterpNext(S);
30367#else
30368 return true;
30369#endif
30370}
30371#endif
30372#ifdef GET_DISASM
30373case OP_IncPopBitfieldSint8:
30374 Text.Op = PrintName("IncPopBitfieldSint8");
30375 Text.Args.push_back(printArg<bool>(PC));
30376 Text.Args.push_back(printArg<uint32_t>(PC));
30377 break;
30378case OP_IncPopBitfieldUint8:
30379 Text.Op = PrintName("IncPopBitfieldUint8");
30380 Text.Args.push_back(printArg<bool>(PC));
30381 Text.Args.push_back(printArg<uint32_t>(PC));
30382 break;
30383case OP_IncPopBitfieldSint16:
30384 Text.Op = PrintName("IncPopBitfieldSint16");
30385 Text.Args.push_back(printArg<bool>(PC));
30386 Text.Args.push_back(printArg<uint32_t>(PC));
30387 break;
30388case OP_IncPopBitfieldUint16:
30389 Text.Op = PrintName("IncPopBitfieldUint16");
30390 Text.Args.push_back(printArg<bool>(PC));
30391 Text.Args.push_back(printArg<uint32_t>(PC));
30392 break;
30393case OP_IncPopBitfieldSint32:
30394 Text.Op = PrintName("IncPopBitfieldSint32");
30395 Text.Args.push_back(printArg<bool>(PC));
30396 Text.Args.push_back(printArg<uint32_t>(PC));
30397 break;
30398case OP_IncPopBitfieldUint32:
30399 Text.Op = PrintName("IncPopBitfieldUint32");
30400 Text.Args.push_back(printArg<bool>(PC));
30401 Text.Args.push_back(printArg<uint32_t>(PC));
30402 break;
30403case OP_IncPopBitfieldSint64:
30404 Text.Op = PrintName("IncPopBitfieldSint64");
30405 Text.Args.push_back(printArg<bool>(PC));
30406 Text.Args.push_back(printArg<uint32_t>(PC));
30407 break;
30408case OP_IncPopBitfieldUint64:
30409 Text.Op = PrintName("IncPopBitfieldUint64");
30410 Text.Args.push_back(printArg<bool>(PC));
30411 Text.Args.push_back(printArg<uint32_t>(PC));
30412 break;
30413case OP_IncPopBitfieldIntAP:
30414 Text.Op = PrintName("IncPopBitfieldIntAP");
30415 Text.Args.push_back(printArg<bool>(PC));
30416 Text.Args.push_back(printArg<uint32_t>(PC));
30417 break;
30418case OP_IncPopBitfieldIntAPS:
30419 Text.Op = PrintName("IncPopBitfieldIntAPS");
30420 Text.Args.push_back(printArg<bool>(PC));
30421 Text.Args.push_back(printArg<uint32_t>(PC));
30422 break;
30423case OP_IncPopBitfieldBool:
30424 Text.Op = PrintName("IncPopBitfieldBool");
30425 Text.Args.push_back(printArg<bool>(PC));
30426 Text.Args.push_back(printArg<uint32_t>(PC));
30427 break;
30428case OP_IncPopBitfieldFixedPoint:
30429 Text.Op = PrintName("IncPopBitfieldFixedPoint");
30430 Text.Args.push_back(printArg<bool>(PC));
30431 Text.Args.push_back(printArg<uint32_t>(PC));
30432 break;
30433#endif
30434#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30435bool emitIncPopBitfieldSint8( bool , uint32_t , SourceInfo);
30436bool emitIncPopBitfieldUint8( bool , uint32_t , SourceInfo);
30437bool emitIncPopBitfieldSint16( bool , uint32_t , SourceInfo);
30438bool emitIncPopBitfieldUint16( bool , uint32_t , SourceInfo);
30439bool emitIncPopBitfieldSint32( bool , uint32_t , SourceInfo);
30440bool emitIncPopBitfieldUint32( bool , uint32_t , SourceInfo);
30441bool emitIncPopBitfieldSint64( bool , uint32_t , SourceInfo);
30442bool emitIncPopBitfieldUint64( bool , uint32_t , SourceInfo);
30443bool emitIncPopBitfieldIntAP( bool , uint32_t , SourceInfo);
30444bool emitIncPopBitfieldIntAPS( bool , uint32_t , SourceInfo);
30445bool emitIncPopBitfieldBool( bool , uint32_t , SourceInfo);
30446bool emitIncPopBitfieldFixedPoint( bool , uint32_t , SourceInfo);
30447#endif
30448#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30449[[nodiscard]] bool emitIncPopBitfield(PrimType, bool, uint32_t, SourceInfo I);
30450#endif
30451#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
30452bool
30453#if defined(GET_EVAL_IMPL)
30454EvalEmitter
30455#else
30456ByteCodeEmitter
30457#endif
30458::emitIncPopBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
30459 switch (T0) {
30460 case PT_Sint8:
30461 return emitIncPopBitfieldSint8(A0, A1, I);
30462 case PT_Uint8:
30463 return emitIncPopBitfieldUint8(A0, A1, I);
30464 case PT_Sint16:
30465 return emitIncPopBitfieldSint16(A0, A1, I);
30466 case PT_Uint16:
30467 return emitIncPopBitfieldUint16(A0, A1, I);
30468 case PT_Sint32:
30469 return emitIncPopBitfieldSint32(A0, A1, I);
30470 case PT_Uint32:
30471 return emitIncPopBitfieldUint32(A0, A1, I);
30472 case PT_Sint64:
30473 return emitIncPopBitfieldSint64(A0, A1, I);
30474 case PT_Uint64:
30475 return emitIncPopBitfieldUint64(A0, A1, I);
30476 case PT_IntAP:
30477 return emitIncPopBitfieldIntAP(A0, A1, I);
30478 case PT_IntAPS:
30479 return emitIncPopBitfieldIntAPS(A0, A1, I);
30480 case PT_Bool:
30481 return emitIncPopBitfieldBool(A0, A1, I);
30482 case PT_FixedPoint:
30483 return emitIncPopBitfieldFixedPoint(A0, A1, I);
30484 default: llvm_unreachable("invalid type: emitIncPopBitfield");
30485 }
30486 llvm_unreachable("invalid enum value");
30487}
30488#endif
30489#ifdef GET_LINK_IMPL
30490bool ByteCodeEmitter::emitIncPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
30491 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint8, A0, A1, L);
30492}
30493bool ByteCodeEmitter::emitIncPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
30494 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint8, A0, A1, L);
30495}
30496bool ByteCodeEmitter::emitIncPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
30497 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint16, A0, A1, L);
30498}
30499bool ByteCodeEmitter::emitIncPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
30500 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint16, A0, A1, L);
30501}
30502bool ByteCodeEmitter::emitIncPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
30503 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint32, A0, A1, L);
30504}
30505bool ByteCodeEmitter::emitIncPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
30506 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint32, A0, A1, L);
30507}
30508bool ByteCodeEmitter::emitIncPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
30509 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint64, A0, A1, L);
30510}
30511bool ByteCodeEmitter::emitIncPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
30512 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint64, A0, A1, L);
30513}
30514bool ByteCodeEmitter::emitIncPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
30515 return emitOp<bool, uint32_t>(OP_IncPopBitfieldIntAP, A0, A1, L);
30516}
30517bool ByteCodeEmitter::emitIncPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
30518 return emitOp<bool, uint32_t>(OP_IncPopBitfieldIntAPS, A0, A1, L);
30519}
30520bool ByteCodeEmitter::emitIncPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
30521 return emitOp<bool, uint32_t>(OP_IncPopBitfieldBool, A0, A1, L);
30522}
30523bool ByteCodeEmitter::emitIncPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
30524 return emitOp<bool, uint32_t>(OP_IncPopBitfieldFixedPoint, A0, A1, L);
30525}
30526#endif
30527#ifdef GET_EVAL_IMPL
30528bool EvalEmitter::emitIncPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
30529 if (!isActive()) return true;
30530 CurrentSource = L;
30531 return IncPopBitfield<PT_Sint8>(S, CodePtr(), A0, A1);
30532}
30533bool EvalEmitter::emitIncPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
30534 if (!isActive()) return true;
30535 CurrentSource = L;
30536 return IncPopBitfield<PT_Uint8>(S, CodePtr(), A0, A1);
30537}
30538bool EvalEmitter::emitIncPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
30539 if (!isActive()) return true;
30540 CurrentSource = L;
30541 return IncPopBitfield<PT_Sint16>(S, CodePtr(), A0, A1);
30542}
30543bool EvalEmitter::emitIncPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
30544 if (!isActive()) return true;
30545 CurrentSource = L;
30546 return IncPopBitfield<PT_Uint16>(S, CodePtr(), A0, A1);
30547}
30548bool EvalEmitter::emitIncPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
30549 if (!isActive()) return true;
30550 CurrentSource = L;
30551 return IncPopBitfield<PT_Sint32>(S, CodePtr(), A0, A1);
30552}
30553bool EvalEmitter::emitIncPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
30554 if (!isActive()) return true;
30555 CurrentSource = L;
30556 return IncPopBitfield<PT_Uint32>(S, CodePtr(), A0, A1);
30557}
30558bool EvalEmitter::emitIncPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
30559 if (!isActive()) return true;
30560 CurrentSource = L;
30561 return IncPopBitfield<PT_Sint64>(S, CodePtr(), A0, A1);
30562}
30563bool EvalEmitter::emitIncPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
30564 if (!isActive()) return true;
30565 CurrentSource = L;
30566 return IncPopBitfield<PT_Uint64>(S, CodePtr(), A0, A1);
30567}
30568bool EvalEmitter::emitIncPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
30569 if (!isActive()) return true;
30570 CurrentSource = L;
30571 return IncPopBitfield<PT_IntAP>(S, CodePtr(), A0, A1);
30572}
30573bool EvalEmitter::emitIncPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
30574 if (!isActive()) return true;
30575 CurrentSource = L;
30576 return IncPopBitfield<PT_IntAPS>(S, CodePtr(), A0, A1);
30577}
30578bool EvalEmitter::emitIncPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
30579 if (!isActive()) return true;
30580 CurrentSource = L;
30581 return IncPopBitfield<PT_Bool>(S, CodePtr(), A0, A1);
30582}
30583bool EvalEmitter::emitIncPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
30584 if (!isActive()) return true;
30585 CurrentSource = L;
30586 return IncPopBitfield<PT_FixedPoint>(S, CodePtr(), A0, A1);
30587}
30588#endif
30589#ifdef GET_OPCODE_NAMES
30590OP_IncPtr,
30591#endif
30592#ifdef GET_INTERPFN_LIST
30593&Interp_IncPtr,
30594#endif
30595#ifdef GET_INTERPFN_DISPATCHERS
30596PRESERVE_NONE
30597static bool Interp_IncPtr(InterpState &S) {
30598 if (!IncPtr(S, S.PC)) return false;
30599#if USE_TAILCALLS
30600 MUSTTAIL return InterpNext(S);
30601#else
30602 return true;
30603#endif
30604}
30605#endif
30606#ifdef GET_DISASM
30607case OP_IncPtr:
30608 Text.Op = PrintName("IncPtr");
30609 break;
30610#endif
30611#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30612bool emitIncPtr(SourceInfo);
30613#endif
30614#ifdef GET_LINK_IMPL
30615bool ByteCodeEmitter::emitIncPtr(SourceInfo L) {
30616 return emitOp<>(OP_IncPtr, L);
30617}
30618#endif
30619#ifdef GET_EVAL_IMPL
30620bool EvalEmitter::emitIncPtr(SourceInfo L) {
30621 if (!isActive()) return true;
30622 CurrentSource = L;
30623 return IncPtr(S, CodePtr());
30624}
30625#endif
30626#ifdef GET_OPCODE_NAMES
30627OP_Incf,
30628#endif
30629#ifdef GET_INTERPFN_LIST
30630&Interp_Incf,
30631#endif
30632#ifdef GET_INTERPFN_DISPATCHERS
30633PRESERVE_NONE
30634static bool Interp_Incf(InterpState &S) {
30635 {
30636 CodePtr OpPC = S.PC;
30637 const auto V0 = ReadArg<uint32_t>(S, S.PC);
30638 if (!Incf(S, OpPC, V0)) return false;
30639 }
30640#if USE_TAILCALLS
30641 MUSTTAIL return InterpNext(S);
30642#else
30643 return true;
30644#endif
30645}
30646#endif
30647#ifdef GET_DISASM
30648case OP_Incf:
30649 Text.Op = PrintName("Incf");
30650 Text.Args.push_back(printArg<uint32_t>(PC));
30651 break;
30652#endif
30653#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30654bool emitIncf( uint32_t , SourceInfo);
30655#endif
30656#ifdef GET_LINK_IMPL
30657bool ByteCodeEmitter::emitIncf( uint32_t A0, SourceInfo L) {
30658 return emitOp<uint32_t>(OP_Incf, A0, L);
30659}
30660#endif
30661#ifdef GET_EVAL_IMPL
30662bool EvalEmitter::emitIncf( uint32_t A0, SourceInfo L) {
30663 if (!isActive()) return true;
30664 CurrentSource = L;
30665 return Incf(S, CodePtr(), A0);
30666}
30667#endif
30668#ifdef GET_OPCODE_NAMES
30669OP_IncfPop,
30670#endif
30671#ifdef GET_INTERPFN_LIST
30672&Interp_IncfPop,
30673#endif
30674#ifdef GET_INTERPFN_DISPATCHERS
30675PRESERVE_NONE
30676static bool Interp_IncfPop(InterpState &S) {
30677 {
30678 CodePtr OpPC = S.PC;
30679 const auto V0 = ReadArg<uint32_t>(S, S.PC);
30680 if (!IncfPop(S, OpPC, V0)) return false;
30681 }
30682#if USE_TAILCALLS
30683 MUSTTAIL return InterpNext(S);
30684#else
30685 return true;
30686#endif
30687}
30688#endif
30689#ifdef GET_DISASM
30690case OP_IncfPop:
30691 Text.Op = PrintName("IncfPop");
30692 Text.Args.push_back(printArg<uint32_t>(PC));
30693 break;
30694#endif
30695#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30696bool emitIncfPop( uint32_t , SourceInfo);
30697#endif
30698#ifdef GET_LINK_IMPL
30699bool ByteCodeEmitter::emitIncfPop( uint32_t A0, SourceInfo L) {
30700 return emitOp<uint32_t>(OP_IncfPop, A0, L);
30701}
30702#endif
30703#ifdef GET_EVAL_IMPL
30704bool EvalEmitter::emitIncfPop( uint32_t A0, SourceInfo L) {
30705 if (!isActive()) return true;
30706 CurrentSource = L;
30707 return IncfPop(S, CodePtr(), A0);
30708}
30709#endif
30710#ifdef GET_OPCODE_NAMES
30711OP_InitSint8,
30712OP_InitUint8,
30713OP_InitSint16,
30714OP_InitUint16,
30715OP_InitSint32,
30716OP_InitUint32,
30717OP_InitSint64,
30718OP_InitUint64,
30719OP_InitIntAP,
30720OP_InitIntAPS,
30721OP_InitBool,
30722OP_InitFixedPoint,
30723OP_InitPtr,
30724OP_InitMemberPtr,
30725OP_InitFloat,
30726#endif
30727#ifdef GET_INTERPFN_LIST
30728&Interp_InitSint8,
30729&Interp_InitUint8,
30730&Interp_InitSint16,
30731&Interp_InitUint16,
30732&Interp_InitSint32,
30733&Interp_InitUint32,
30734&Interp_InitSint64,
30735&Interp_InitUint64,
30736&Interp_InitIntAP,
30737&Interp_InitIntAPS,
30738&Interp_InitBool,
30739&Interp_InitFixedPoint,
30740&Interp_InitPtr,
30741&Interp_InitMemberPtr,
30742&Interp_InitFloat,
30743#endif
30744#ifdef GET_INTERPFN_DISPATCHERS
30745PRESERVE_NONE
30746static bool Interp_InitSint8(InterpState &S) {
30747 if (!Init<PT_Sint8>(S, S.PC)) return false;
30748#if USE_TAILCALLS
30749 MUSTTAIL return InterpNext(S);
30750#else
30751 return true;
30752#endif
30753}
30754PRESERVE_NONE
30755static bool Interp_InitUint8(InterpState &S) {
30756 if (!Init<PT_Uint8>(S, S.PC)) return false;
30757#if USE_TAILCALLS
30758 MUSTTAIL return InterpNext(S);
30759#else
30760 return true;
30761#endif
30762}
30763PRESERVE_NONE
30764static bool Interp_InitSint16(InterpState &S) {
30765 if (!Init<PT_Sint16>(S, S.PC)) return false;
30766#if USE_TAILCALLS
30767 MUSTTAIL return InterpNext(S);
30768#else
30769 return true;
30770#endif
30771}
30772PRESERVE_NONE
30773static bool Interp_InitUint16(InterpState &S) {
30774 if (!Init<PT_Uint16>(S, S.PC)) return false;
30775#if USE_TAILCALLS
30776 MUSTTAIL return InterpNext(S);
30777#else
30778 return true;
30779#endif
30780}
30781PRESERVE_NONE
30782static bool Interp_InitSint32(InterpState &S) {
30783 if (!Init<PT_Sint32>(S, S.PC)) return false;
30784#if USE_TAILCALLS
30785 MUSTTAIL return InterpNext(S);
30786#else
30787 return true;
30788#endif
30789}
30790PRESERVE_NONE
30791static bool Interp_InitUint32(InterpState &S) {
30792 if (!Init<PT_Uint32>(S, S.PC)) return false;
30793#if USE_TAILCALLS
30794 MUSTTAIL return InterpNext(S);
30795#else
30796 return true;
30797#endif
30798}
30799PRESERVE_NONE
30800static bool Interp_InitSint64(InterpState &S) {
30801 if (!Init<PT_Sint64>(S, S.PC)) return false;
30802#if USE_TAILCALLS
30803 MUSTTAIL return InterpNext(S);
30804#else
30805 return true;
30806#endif
30807}
30808PRESERVE_NONE
30809static bool Interp_InitUint64(InterpState &S) {
30810 if (!Init<PT_Uint64>(S, S.PC)) return false;
30811#if USE_TAILCALLS
30812 MUSTTAIL return InterpNext(S);
30813#else
30814 return true;
30815#endif
30816}
30817PRESERVE_NONE
30818static bool Interp_InitIntAP(InterpState &S) {
30819 if (!Init<PT_IntAP>(S, S.PC)) return false;
30820#if USE_TAILCALLS
30821 MUSTTAIL return InterpNext(S);
30822#else
30823 return true;
30824#endif
30825}
30826PRESERVE_NONE
30827static bool Interp_InitIntAPS(InterpState &S) {
30828 if (!Init<PT_IntAPS>(S, S.PC)) return false;
30829#if USE_TAILCALLS
30830 MUSTTAIL return InterpNext(S);
30831#else
30832 return true;
30833#endif
30834}
30835PRESERVE_NONE
30836static bool Interp_InitBool(InterpState &S) {
30837 if (!Init<PT_Bool>(S, S.PC)) return false;
30838#if USE_TAILCALLS
30839 MUSTTAIL return InterpNext(S);
30840#else
30841 return true;
30842#endif
30843}
30844PRESERVE_NONE
30845static bool Interp_InitFixedPoint(InterpState &S) {
30846 if (!Init<PT_FixedPoint>(S, S.PC)) return false;
30847#if USE_TAILCALLS
30848 MUSTTAIL return InterpNext(S);
30849#else
30850 return true;
30851#endif
30852}
30853PRESERVE_NONE
30854static bool Interp_InitPtr(InterpState &S) {
30855 if (!Init<PT_Ptr>(S, S.PC)) return false;
30856#if USE_TAILCALLS
30857 MUSTTAIL return InterpNext(S);
30858#else
30859 return true;
30860#endif
30861}
30862PRESERVE_NONE
30863static bool Interp_InitMemberPtr(InterpState &S) {
30864 if (!Init<PT_MemberPtr>(S, S.PC)) return false;
30865#if USE_TAILCALLS
30866 MUSTTAIL return InterpNext(S);
30867#else
30868 return true;
30869#endif
30870}
30871PRESERVE_NONE
30872static bool Interp_InitFloat(InterpState &S) {
30873 if (!Init<PT_Float>(S, S.PC)) return false;
30874#if USE_TAILCALLS
30875 MUSTTAIL return InterpNext(S);
30876#else
30877 return true;
30878#endif
30879}
30880#endif
30881#ifdef GET_DISASM
30882case OP_InitSint8:
30883 Text.Op = PrintName("InitSint8");
30884 break;
30885case OP_InitUint8:
30886 Text.Op = PrintName("InitUint8");
30887 break;
30888case OP_InitSint16:
30889 Text.Op = PrintName("InitSint16");
30890 break;
30891case OP_InitUint16:
30892 Text.Op = PrintName("InitUint16");
30893 break;
30894case OP_InitSint32:
30895 Text.Op = PrintName("InitSint32");
30896 break;
30897case OP_InitUint32:
30898 Text.Op = PrintName("InitUint32");
30899 break;
30900case OP_InitSint64:
30901 Text.Op = PrintName("InitSint64");
30902 break;
30903case OP_InitUint64:
30904 Text.Op = PrintName("InitUint64");
30905 break;
30906case OP_InitIntAP:
30907 Text.Op = PrintName("InitIntAP");
30908 break;
30909case OP_InitIntAPS:
30910 Text.Op = PrintName("InitIntAPS");
30911 break;
30912case OP_InitBool:
30913 Text.Op = PrintName("InitBool");
30914 break;
30915case OP_InitFixedPoint:
30916 Text.Op = PrintName("InitFixedPoint");
30917 break;
30918case OP_InitPtr:
30919 Text.Op = PrintName("InitPtr");
30920 break;
30921case OP_InitMemberPtr:
30922 Text.Op = PrintName("InitMemberPtr");
30923 break;
30924case OP_InitFloat:
30925 Text.Op = PrintName("InitFloat");
30926 break;
30927#endif
30928#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30929bool emitInitSint8(SourceInfo);
30930bool emitInitUint8(SourceInfo);
30931bool emitInitSint16(SourceInfo);
30932bool emitInitUint16(SourceInfo);
30933bool emitInitSint32(SourceInfo);
30934bool emitInitUint32(SourceInfo);
30935bool emitInitSint64(SourceInfo);
30936bool emitInitUint64(SourceInfo);
30937bool emitInitIntAP(SourceInfo);
30938bool emitInitIntAPS(SourceInfo);
30939bool emitInitBool(SourceInfo);
30940bool emitInitFixedPoint(SourceInfo);
30941bool emitInitPtr(SourceInfo);
30942bool emitInitMemberPtr(SourceInfo);
30943bool emitInitFloat(SourceInfo);
30944#endif
30945#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30946[[nodiscard]] bool emitInit(PrimType, SourceInfo I);
30947#endif
30948#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
30949bool
30950#if defined(GET_EVAL_IMPL)
30951EvalEmitter
30952#else
30953ByteCodeEmitter
30954#endif
30955::emitInit(PrimType T0, SourceInfo I) {
30956 switch (T0) {
30957 case PT_Sint8:
30958 return emitInitSint8(I);
30959 case PT_Uint8:
30960 return emitInitUint8(I);
30961 case PT_Sint16:
30962 return emitInitSint16(I);
30963 case PT_Uint16:
30964 return emitInitUint16(I);
30965 case PT_Sint32:
30966 return emitInitSint32(I);
30967 case PT_Uint32:
30968 return emitInitUint32(I);
30969 case PT_Sint64:
30970 return emitInitSint64(I);
30971 case PT_Uint64:
30972 return emitInitUint64(I);
30973 case PT_IntAP:
30974 return emitInitIntAP(I);
30975 case PT_IntAPS:
30976 return emitInitIntAPS(I);
30977 case PT_Bool:
30978 return emitInitBool(I);
30979 case PT_FixedPoint:
30980 return emitInitFixedPoint(I);
30981 case PT_Ptr:
30982 return emitInitPtr(I);
30983 case PT_MemberPtr:
30984 return emitInitMemberPtr(I);
30985 case PT_Float:
30986 return emitInitFloat(I);
30987 }
30988 llvm_unreachable("invalid enum value");
30989}
30990#endif
30991#ifdef GET_LINK_IMPL
30992bool ByteCodeEmitter::emitInitSint8(SourceInfo L) {
30993 return emitOp<>(OP_InitSint8, L);
30994}
30995bool ByteCodeEmitter::emitInitUint8(SourceInfo L) {
30996 return emitOp<>(OP_InitUint8, L);
30997}
30998bool ByteCodeEmitter::emitInitSint16(SourceInfo L) {
30999 return emitOp<>(OP_InitSint16, L);
31000}
31001bool ByteCodeEmitter::emitInitUint16(SourceInfo L) {
31002 return emitOp<>(OP_InitUint16, L);
31003}
31004bool ByteCodeEmitter::emitInitSint32(SourceInfo L) {
31005 return emitOp<>(OP_InitSint32, L);
31006}
31007bool ByteCodeEmitter::emitInitUint32(SourceInfo L) {
31008 return emitOp<>(OP_InitUint32, L);
31009}
31010bool ByteCodeEmitter::emitInitSint64(SourceInfo L) {
31011 return emitOp<>(OP_InitSint64, L);
31012}
31013bool ByteCodeEmitter::emitInitUint64(SourceInfo L) {
31014 return emitOp<>(OP_InitUint64, L);
31015}
31016bool ByteCodeEmitter::emitInitIntAP(SourceInfo L) {
31017 return emitOp<>(OP_InitIntAP, L);
31018}
31019bool ByteCodeEmitter::emitInitIntAPS(SourceInfo L) {
31020 return emitOp<>(OP_InitIntAPS, L);
31021}
31022bool ByteCodeEmitter::emitInitBool(SourceInfo L) {
31023 return emitOp<>(OP_InitBool, L);
31024}
31025bool ByteCodeEmitter::emitInitFixedPoint(SourceInfo L) {
31026 return emitOp<>(OP_InitFixedPoint, L);
31027}
31028bool ByteCodeEmitter::emitInitPtr(SourceInfo L) {
31029 return emitOp<>(OP_InitPtr, L);
31030}
31031bool ByteCodeEmitter::emitInitMemberPtr(SourceInfo L) {
31032 return emitOp<>(OP_InitMemberPtr, L);
31033}
31034bool ByteCodeEmitter::emitInitFloat(SourceInfo L) {
31035 return emitOp<>(OP_InitFloat, L);
31036}
31037#endif
31038#ifdef GET_EVAL_IMPL
31039bool EvalEmitter::emitInitSint8(SourceInfo L) {
31040 if (!isActive()) return true;
31041 CurrentSource = L;
31042 return Init<PT_Sint8>(S, CodePtr());
31043}
31044bool EvalEmitter::emitInitUint8(SourceInfo L) {
31045 if (!isActive()) return true;
31046 CurrentSource = L;
31047 return Init<PT_Uint8>(S, CodePtr());
31048}
31049bool EvalEmitter::emitInitSint16(SourceInfo L) {
31050 if (!isActive()) return true;
31051 CurrentSource = L;
31052 return Init<PT_Sint16>(S, CodePtr());
31053}
31054bool EvalEmitter::emitInitUint16(SourceInfo L) {
31055 if (!isActive()) return true;
31056 CurrentSource = L;
31057 return Init<PT_Uint16>(S, CodePtr());
31058}
31059bool EvalEmitter::emitInitSint32(SourceInfo L) {
31060 if (!isActive()) return true;
31061 CurrentSource = L;
31062 return Init<PT_Sint32>(S, CodePtr());
31063}
31064bool EvalEmitter::emitInitUint32(SourceInfo L) {
31065 if (!isActive()) return true;
31066 CurrentSource = L;
31067 return Init<PT_Uint32>(S, CodePtr());
31068}
31069bool EvalEmitter::emitInitSint64(SourceInfo L) {
31070 if (!isActive()) return true;
31071 CurrentSource = L;
31072 return Init<PT_Sint64>(S, CodePtr());
31073}
31074bool EvalEmitter::emitInitUint64(SourceInfo L) {
31075 if (!isActive()) return true;
31076 CurrentSource = L;
31077 return Init<PT_Uint64>(S, CodePtr());
31078}
31079bool EvalEmitter::emitInitIntAP(SourceInfo L) {
31080 if (!isActive()) return true;
31081 CurrentSource = L;
31082 return Init<PT_IntAP>(S, CodePtr());
31083}
31084bool EvalEmitter::emitInitIntAPS(SourceInfo L) {
31085 if (!isActive()) return true;
31086 CurrentSource = L;
31087 return Init<PT_IntAPS>(S, CodePtr());
31088}
31089bool EvalEmitter::emitInitBool(SourceInfo L) {
31090 if (!isActive()) return true;
31091 CurrentSource = L;
31092 return Init<PT_Bool>(S, CodePtr());
31093}
31094bool EvalEmitter::emitInitFixedPoint(SourceInfo L) {
31095 if (!isActive()) return true;
31096 CurrentSource = L;
31097 return Init<PT_FixedPoint>(S, CodePtr());
31098}
31099bool EvalEmitter::emitInitPtr(SourceInfo L) {
31100 if (!isActive()) return true;
31101 CurrentSource = L;
31102 return Init<PT_Ptr>(S, CodePtr());
31103}
31104bool EvalEmitter::emitInitMemberPtr(SourceInfo L) {
31105 if (!isActive()) return true;
31106 CurrentSource = L;
31107 return Init<PT_MemberPtr>(S, CodePtr());
31108}
31109bool EvalEmitter::emitInitFloat(SourceInfo L) {
31110 if (!isActive()) return true;
31111 CurrentSource = L;
31112 return Init<PT_Float>(S, CodePtr());
31113}
31114#endif
31115#ifdef GET_OPCODE_NAMES
31116OP_InitBitFieldSint8,
31117OP_InitBitFieldUint8,
31118OP_InitBitFieldSint16,
31119OP_InitBitFieldUint16,
31120OP_InitBitFieldSint32,
31121OP_InitBitFieldUint32,
31122OP_InitBitFieldSint64,
31123OP_InitBitFieldUint64,
31124OP_InitBitFieldIntAP,
31125OP_InitBitFieldIntAPS,
31126OP_InitBitFieldBool,
31127#endif
31128#ifdef GET_INTERPFN_LIST
31129&Interp_InitBitFieldSint8,
31130&Interp_InitBitFieldUint8,
31131&Interp_InitBitFieldSint16,
31132&Interp_InitBitFieldUint16,
31133&Interp_InitBitFieldSint32,
31134&Interp_InitBitFieldUint32,
31135&Interp_InitBitFieldSint64,
31136&Interp_InitBitFieldUint64,
31137&Interp_InitBitFieldIntAP,
31138&Interp_InitBitFieldIntAPS,
31139&Interp_InitBitFieldBool,
31140#endif
31141#ifdef GET_INTERPFN_DISPATCHERS
31142PRESERVE_NONE
31143static bool Interp_InitBitFieldSint8(InterpState &S) {
31144 {
31145 CodePtr OpPC = S.PC;
31146 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31147 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31148 if (!InitBitField<PT_Sint8>(S, OpPC, V0, V1)) return false;
31149 }
31150#if USE_TAILCALLS
31151 MUSTTAIL return InterpNext(S);
31152#else
31153 return true;
31154#endif
31155}
31156PRESERVE_NONE
31157static bool Interp_InitBitFieldUint8(InterpState &S) {
31158 {
31159 CodePtr OpPC = S.PC;
31160 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31161 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31162 if (!InitBitField<PT_Uint8>(S, OpPC, V0, V1)) return false;
31163 }
31164#if USE_TAILCALLS
31165 MUSTTAIL return InterpNext(S);
31166#else
31167 return true;
31168#endif
31169}
31170PRESERVE_NONE
31171static bool Interp_InitBitFieldSint16(InterpState &S) {
31172 {
31173 CodePtr OpPC = S.PC;
31174 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31175 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31176 if (!InitBitField<PT_Sint16>(S, OpPC, V0, V1)) return false;
31177 }
31178#if USE_TAILCALLS
31179 MUSTTAIL return InterpNext(S);
31180#else
31181 return true;
31182#endif
31183}
31184PRESERVE_NONE
31185static bool Interp_InitBitFieldUint16(InterpState &S) {
31186 {
31187 CodePtr OpPC = S.PC;
31188 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31189 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31190 if (!InitBitField<PT_Uint16>(S, OpPC, V0, V1)) return false;
31191 }
31192#if USE_TAILCALLS
31193 MUSTTAIL return InterpNext(S);
31194#else
31195 return true;
31196#endif
31197}
31198PRESERVE_NONE
31199static bool Interp_InitBitFieldSint32(InterpState &S) {
31200 {
31201 CodePtr OpPC = S.PC;
31202 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31203 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31204 if (!InitBitField<PT_Sint32>(S, OpPC, V0, V1)) return false;
31205 }
31206#if USE_TAILCALLS
31207 MUSTTAIL return InterpNext(S);
31208#else
31209 return true;
31210#endif
31211}
31212PRESERVE_NONE
31213static bool Interp_InitBitFieldUint32(InterpState &S) {
31214 {
31215 CodePtr OpPC = S.PC;
31216 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31217 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31218 if (!InitBitField<PT_Uint32>(S, OpPC, V0, V1)) return false;
31219 }
31220#if USE_TAILCALLS
31221 MUSTTAIL return InterpNext(S);
31222#else
31223 return true;
31224#endif
31225}
31226PRESERVE_NONE
31227static bool Interp_InitBitFieldSint64(InterpState &S) {
31228 {
31229 CodePtr OpPC = S.PC;
31230 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31231 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31232 if (!InitBitField<PT_Sint64>(S, OpPC, V0, V1)) return false;
31233 }
31234#if USE_TAILCALLS
31235 MUSTTAIL return InterpNext(S);
31236#else
31237 return true;
31238#endif
31239}
31240PRESERVE_NONE
31241static bool Interp_InitBitFieldUint64(InterpState &S) {
31242 {
31243 CodePtr OpPC = S.PC;
31244 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31245 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31246 if (!InitBitField<PT_Uint64>(S, OpPC, V0, V1)) return false;
31247 }
31248#if USE_TAILCALLS
31249 MUSTTAIL return InterpNext(S);
31250#else
31251 return true;
31252#endif
31253}
31254PRESERVE_NONE
31255static bool Interp_InitBitFieldIntAP(InterpState &S) {
31256 {
31257 CodePtr OpPC = S.PC;
31258 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31259 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31260 if (!InitBitField<PT_IntAP>(S, OpPC, V0, V1)) return false;
31261 }
31262#if USE_TAILCALLS
31263 MUSTTAIL return InterpNext(S);
31264#else
31265 return true;
31266#endif
31267}
31268PRESERVE_NONE
31269static bool Interp_InitBitFieldIntAPS(InterpState &S) {
31270 {
31271 CodePtr OpPC = S.PC;
31272 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31273 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31274 if (!InitBitField<PT_IntAPS>(S, OpPC, V0, V1)) return false;
31275 }
31276#if USE_TAILCALLS
31277 MUSTTAIL return InterpNext(S);
31278#else
31279 return true;
31280#endif
31281}
31282PRESERVE_NONE
31283static bool Interp_InitBitFieldBool(InterpState &S) {
31284 {
31285 CodePtr OpPC = S.PC;
31286 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31287 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31288 if (!InitBitField<PT_Bool>(S, OpPC, V0, V1)) return false;
31289 }
31290#if USE_TAILCALLS
31291 MUSTTAIL return InterpNext(S);
31292#else
31293 return true;
31294#endif
31295}
31296#endif
31297#ifdef GET_DISASM
31298case OP_InitBitFieldSint8:
31299 Text.Op = PrintName("InitBitFieldSint8");
31300 Text.Args.push_back(printArg<uint32_t>(PC));
31301 Text.Args.push_back(printArg<uint32_t>(PC));
31302 break;
31303case OP_InitBitFieldUint8:
31304 Text.Op = PrintName("InitBitFieldUint8");
31305 Text.Args.push_back(printArg<uint32_t>(PC));
31306 Text.Args.push_back(printArg<uint32_t>(PC));
31307 break;
31308case OP_InitBitFieldSint16:
31309 Text.Op = PrintName("InitBitFieldSint16");
31310 Text.Args.push_back(printArg<uint32_t>(PC));
31311 Text.Args.push_back(printArg<uint32_t>(PC));
31312 break;
31313case OP_InitBitFieldUint16:
31314 Text.Op = PrintName("InitBitFieldUint16");
31315 Text.Args.push_back(printArg<uint32_t>(PC));
31316 Text.Args.push_back(printArg<uint32_t>(PC));
31317 break;
31318case OP_InitBitFieldSint32:
31319 Text.Op = PrintName("InitBitFieldSint32");
31320 Text.Args.push_back(printArg<uint32_t>(PC));
31321 Text.Args.push_back(printArg<uint32_t>(PC));
31322 break;
31323case OP_InitBitFieldUint32:
31324 Text.Op = PrintName("InitBitFieldUint32");
31325 Text.Args.push_back(printArg<uint32_t>(PC));
31326 Text.Args.push_back(printArg<uint32_t>(PC));
31327 break;
31328case OP_InitBitFieldSint64:
31329 Text.Op = PrintName("InitBitFieldSint64");
31330 Text.Args.push_back(printArg<uint32_t>(PC));
31331 Text.Args.push_back(printArg<uint32_t>(PC));
31332 break;
31333case OP_InitBitFieldUint64:
31334 Text.Op = PrintName("InitBitFieldUint64");
31335 Text.Args.push_back(printArg<uint32_t>(PC));
31336 Text.Args.push_back(printArg<uint32_t>(PC));
31337 break;
31338case OP_InitBitFieldIntAP:
31339 Text.Op = PrintName("InitBitFieldIntAP");
31340 Text.Args.push_back(printArg<uint32_t>(PC));
31341 Text.Args.push_back(printArg<uint32_t>(PC));
31342 break;
31343case OP_InitBitFieldIntAPS:
31344 Text.Op = PrintName("InitBitFieldIntAPS");
31345 Text.Args.push_back(printArg<uint32_t>(PC));
31346 Text.Args.push_back(printArg<uint32_t>(PC));
31347 break;
31348case OP_InitBitFieldBool:
31349 Text.Op = PrintName("InitBitFieldBool");
31350 Text.Args.push_back(printArg<uint32_t>(PC));
31351 Text.Args.push_back(printArg<uint32_t>(PC));
31352 break;
31353#endif
31354#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31355bool emitInitBitFieldSint8( uint32_t , uint32_t , SourceInfo);
31356bool emitInitBitFieldUint8( uint32_t , uint32_t , SourceInfo);
31357bool emitInitBitFieldSint16( uint32_t , uint32_t , SourceInfo);
31358bool emitInitBitFieldUint16( uint32_t , uint32_t , SourceInfo);
31359bool emitInitBitFieldSint32( uint32_t , uint32_t , SourceInfo);
31360bool emitInitBitFieldUint32( uint32_t , uint32_t , SourceInfo);
31361bool emitInitBitFieldSint64( uint32_t , uint32_t , SourceInfo);
31362bool emitInitBitFieldUint64( uint32_t , uint32_t , SourceInfo);
31363bool emitInitBitFieldIntAP( uint32_t , uint32_t , SourceInfo);
31364bool emitInitBitFieldIntAPS( uint32_t , uint32_t , SourceInfo);
31365bool emitInitBitFieldBool( uint32_t , uint32_t , SourceInfo);
31366#endif
31367#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31368[[nodiscard]] bool emitInitBitField(PrimType, uint32_t, uint32_t, SourceInfo I);
31369#endif
31370#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
31371bool
31372#if defined(GET_EVAL_IMPL)
31373EvalEmitter
31374#else
31375ByteCodeEmitter
31376#endif
31377::emitInitBitField(PrimType T0, uint32_t A0, uint32_t A1, SourceInfo I) {
31378 switch (T0) {
31379 case PT_Sint8:
31380 return emitInitBitFieldSint8(A0, A1, I);
31381 case PT_Uint8:
31382 return emitInitBitFieldUint8(A0, A1, I);
31383 case PT_Sint16:
31384 return emitInitBitFieldSint16(A0, A1, I);
31385 case PT_Uint16:
31386 return emitInitBitFieldUint16(A0, A1, I);
31387 case PT_Sint32:
31388 return emitInitBitFieldSint32(A0, A1, I);
31389 case PT_Uint32:
31390 return emitInitBitFieldUint32(A0, A1, I);
31391 case PT_Sint64:
31392 return emitInitBitFieldSint64(A0, A1, I);
31393 case PT_Uint64:
31394 return emitInitBitFieldUint64(A0, A1, I);
31395 case PT_IntAP:
31396 return emitInitBitFieldIntAP(A0, A1, I);
31397 case PT_IntAPS:
31398 return emitInitBitFieldIntAPS(A0, A1, I);
31399 case PT_Bool:
31400 return emitInitBitFieldBool(A0, A1, I);
31401 default: llvm_unreachable("invalid type: emitInitBitField");
31402 }
31403 llvm_unreachable("invalid enum value");
31404}
31405#endif
31406#ifdef GET_LINK_IMPL
31407bool ByteCodeEmitter::emitInitBitFieldSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31408 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldSint8, A0, A1, L);
31409}
31410bool ByteCodeEmitter::emitInitBitFieldUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31411 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldUint8, A0, A1, L);
31412}
31413bool ByteCodeEmitter::emitInitBitFieldSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31414 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldSint16, A0, A1, L);
31415}
31416bool ByteCodeEmitter::emitInitBitFieldUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31417 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldUint16, A0, A1, L);
31418}
31419bool ByteCodeEmitter::emitInitBitFieldSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31420 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldSint32, A0, A1, L);
31421}
31422bool ByteCodeEmitter::emitInitBitFieldUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31423 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldUint32, A0, A1, L);
31424}
31425bool ByteCodeEmitter::emitInitBitFieldSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31426 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldSint64, A0, A1, L);
31427}
31428bool ByteCodeEmitter::emitInitBitFieldUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31429 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldUint64, A0, A1, L);
31430}
31431bool ByteCodeEmitter::emitInitBitFieldIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
31432 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldIntAP, A0, A1, L);
31433}
31434bool ByteCodeEmitter::emitInitBitFieldIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
31435 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldIntAPS, A0, A1, L);
31436}
31437bool ByteCodeEmitter::emitInitBitFieldBool( uint32_t A0, uint32_t A1, SourceInfo L) {
31438 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldBool, A0, A1, L);
31439}
31440#endif
31441#ifdef GET_EVAL_IMPL
31442bool EvalEmitter::emitInitBitFieldSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31443 if (!isActive()) return true;
31444 CurrentSource = L;
31445 return InitBitField<PT_Sint8>(S, CodePtr(), A0, A1);
31446}
31447bool EvalEmitter::emitInitBitFieldUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31448 if (!isActive()) return true;
31449 CurrentSource = L;
31450 return InitBitField<PT_Uint8>(S, CodePtr(), A0, A1);
31451}
31452bool EvalEmitter::emitInitBitFieldSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31453 if (!isActive()) return true;
31454 CurrentSource = L;
31455 return InitBitField<PT_Sint16>(S, CodePtr(), A0, A1);
31456}
31457bool EvalEmitter::emitInitBitFieldUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31458 if (!isActive()) return true;
31459 CurrentSource = L;
31460 return InitBitField<PT_Uint16>(S, CodePtr(), A0, A1);
31461}
31462bool EvalEmitter::emitInitBitFieldSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31463 if (!isActive()) return true;
31464 CurrentSource = L;
31465 return InitBitField<PT_Sint32>(S, CodePtr(), A0, A1);
31466}
31467bool EvalEmitter::emitInitBitFieldUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31468 if (!isActive()) return true;
31469 CurrentSource = L;
31470 return InitBitField<PT_Uint32>(S, CodePtr(), A0, A1);
31471}
31472bool EvalEmitter::emitInitBitFieldSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31473 if (!isActive()) return true;
31474 CurrentSource = L;
31475 return InitBitField<PT_Sint64>(S, CodePtr(), A0, A1);
31476}
31477bool EvalEmitter::emitInitBitFieldUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31478 if (!isActive()) return true;
31479 CurrentSource = L;
31480 return InitBitField<PT_Uint64>(S, CodePtr(), A0, A1);
31481}
31482bool EvalEmitter::emitInitBitFieldIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
31483 if (!isActive()) return true;
31484 CurrentSource = L;
31485 return InitBitField<PT_IntAP>(S, CodePtr(), A0, A1);
31486}
31487bool EvalEmitter::emitInitBitFieldIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
31488 if (!isActive()) return true;
31489 CurrentSource = L;
31490 return InitBitField<PT_IntAPS>(S, CodePtr(), A0, A1);
31491}
31492bool EvalEmitter::emitInitBitFieldBool( uint32_t A0, uint32_t A1, SourceInfo L) {
31493 if (!isActive()) return true;
31494 CurrentSource = L;
31495 return InitBitField<PT_Bool>(S, CodePtr(), A0, A1);
31496}
31497#endif
31498#ifdef GET_OPCODE_NAMES
31499OP_InitBitFieldActivateSint8,
31500OP_InitBitFieldActivateUint8,
31501OP_InitBitFieldActivateSint16,
31502OP_InitBitFieldActivateUint16,
31503OP_InitBitFieldActivateSint32,
31504OP_InitBitFieldActivateUint32,
31505OP_InitBitFieldActivateSint64,
31506OP_InitBitFieldActivateUint64,
31507OP_InitBitFieldActivateIntAP,
31508OP_InitBitFieldActivateIntAPS,
31509OP_InitBitFieldActivateBool,
31510#endif
31511#ifdef GET_INTERPFN_LIST
31512&Interp_InitBitFieldActivateSint8,
31513&Interp_InitBitFieldActivateUint8,
31514&Interp_InitBitFieldActivateSint16,
31515&Interp_InitBitFieldActivateUint16,
31516&Interp_InitBitFieldActivateSint32,
31517&Interp_InitBitFieldActivateUint32,
31518&Interp_InitBitFieldActivateSint64,
31519&Interp_InitBitFieldActivateUint64,
31520&Interp_InitBitFieldActivateIntAP,
31521&Interp_InitBitFieldActivateIntAPS,
31522&Interp_InitBitFieldActivateBool,
31523#endif
31524#ifdef GET_INTERPFN_DISPATCHERS
31525PRESERVE_NONE
31526static bool Interp_InitBitFieldActivateSint8(InterpState &S) {
31527 {
31528 CodePtr OpPC = S.PC;
31529 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31530 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31531 if (!InitBitFieldActivate<PT_Sint8>(S, OpPC, V0, V1)) return false;
31532 }
31533#if USE_TAILCALLS
31534 MUSTTAIL return InterpNext(S);
31535#else
31536 return true;
31537#endif
31538}
31539PRESERVE_NONE
31540static bool Interp_InitBitFieldActivateUint8(InterpState &S) {
31541 {
31542 CodePtr OpPC = S.PC;
31543 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31544 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31545 if (!InitBitFieldActivate<PT_Uint8>(S, OpPC, V0, V1)) return false;
31546 }
31547#if USE_TAILCALLS
31548 MUSTTAIL return InterpNext(S);
31549#else
31550 return true;
31551#endif
31552}
31553PRESERVE_NONE
31554static bool Interp_InitBitFieldActivateSint16(InterpState &S) {
31555 {
31556 CodePtr OpPC = S.PC;
31557 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31558 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31559 if (!InitBitFieldActivate<PT_Sint16>(S, OpPC, V0, V1)) return false;
31560 }
31561#if USE_TAILCALLS
31562 MUSTTAIL return InterpNext(S);
31563#else
31564 return true;
31565#endif
31566}
31567PRESERVE_NONE
31568static bool Interp_InitBitFieldActivateUint16(InterpState &S) {
31569 {
31570 CodePtr OpPC = S.PC;
31571 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31572 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31573 if (!InitBitFieldActivate<PT_Uint16>(S, OpPC, V0, V1)) return false;
31574 }
31575#if USE_TAILCALLS
31576 MUSTTAIL return InterpNext(S);
31577#else
31578 return true;
31579#endif
31580}
31581PRESERVE_NONE
31582static bool Interp_InitBitFieldActivateSint32(InterpState &S) {
31583 {
31584 CodePtr OpPC = S.PC;
31585 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31586 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31587 if (!InitBitFieldActivate<PT_Sint32>(S, OpPC, V0, V1)) return false;
31588 }
31589#if USE_TAILCALLS
31590 MUSTTAIL return InterpNext(S);
31591#else
31592 return true;
31593#endif
31594}
31595PRESERVE_NONE
31596static bool Interp_InitBitFieldActivateUint32(InterpState &S) {
31597 {
31598 CodePtr OpPC = S.PC;
31599 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31600 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31601 if (!InitBitFieldActivate<PT_Uint32>(S, OpPC, V0, V1)) return false;
31602 }
31603#if USE_TAILCALLS
31604 MUSTTAIL return InterpNext(S);
31605#else
31606 return true;
31607#endif
31608}
31609PRESERVE_NONE
31610static bool Interp_InitBitFieldActivateSint64(InterpState &S) {
31611 {
31612 CodePtr OpPC = S.PC;
31613 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31614 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31615 if (!InitBitFieldActivate<PT_Sint64>(S, OpPC, V0, V1)) return false;
31616 }
31617#if USE_TAILCALLS
31618 MUSTTAIL return InterpNext(S);
31619#else
31620 return true;
31621#endif
31622}
31623PRESERVE_NONE
31624static bool Interp_InitBitFieldActivateUint64(InterpState &S) {
31625 {
31626 CodePtr OpPC = S.PC;
31627 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31628 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31629 if (!InitBitFieldActivate<PT_Uint64>(S, OpPC, V0, V1)) return false;
31630 }
31631#if USE_TAILCALLS
31632 MUSTTAIL return InterpNext(S);
31633#else
31634 return true;
31635#endif
31636}
31637PRESERVE_NONE
31638static bool Interp_InitBitFieldActivateIntAP(InterpState &S) {
31639 {
31640 CodePtr OpPC = S.PC;
31641 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31642 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31643 if (!InitBitFieldActivate<PT_IntAP>(S, OpPC, V0, V1)) return false;
31644 }
31645#if USE_TAILCALLS
31646 MUSTTAIL return InterpNext(S);
31647#else
31648 return true;
31649#endif
31650}
31651PRESERVE_NONE
31652static bool Interp_InitBitFieldActivateIntAPS(InterpState &S) {
31653 {
31654 CodePtr OpPC = S.PC;
31655 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31656 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31657 if (!InitBitFieldActivate<PT_IntAPS>(S, OpPC, V0, V1)) return false;
31658 }
31659#if USE_TAILCALLS
31660 MUSTTAIL return InterpNext(S);
31661#else
31662 return true;
31663#endif
31664}
31665PRESERVE_NONE
31666static bool Interp_InitBitFieldActivateBool(InterpState &S) {
31667 {
31668 CodePtr OpPC = S.PC;
31669 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31670 const auto V1 = ReadArg<uint32_t>(S, S.PC);
31671 if (!InitBitFieldActivate<PT_Bool>(S, OpPC, V0, V1)) return false;
31672 }
31673#if USE_TAILCALLS
31674 MUSTTAIL return InterpNext(S);
31675#else
31676 return true;
31677#endif
31678}
31679#endif
31680#ifdef GET_DISASM
31681case OP_InitBitFieldActivateSint8:
31682 Text.Op = PrintName("InitBitFieldActivateSint8");
31683 Text.Args.push_back(printArg<uint32_t>(PC));
31684 Text.Args.push_back(printArg<uint32_t>(PC));
31685 break;
31686case OP_InitBitFieldActivateUint8:
31687 Text.Op = PrintName("InitBitFieldActivateUint8");
31688 Text.Args.push_back(printArg<uint32_t>(PC));
31689 Text.Args.push_back(printArg<uint32_t>(PC));
31690 break;
31691case OP_InitBitFieldActivateSint16:
31692 Text.Op = PrintName("InitBitFieldActivateSint16");
31693 Text.Args.push_back(printArg<uint32_t>(PC));
31694 Text.Args.push_back(printArg<uint32_t>(PC));
31695 break;
31696case OP_InitBitFieldActivateUint16:
31697 Text.Op = PrintName("InitBitFieldActivateUint16");
31698 Text.Args.push_back(printArg<uint32_t>(PC));
31699 Text.Args.push_back(printArg<uint32_t>(PC));
31700 break;
31701case OP_InitBitFieldActivateSint32:
31702 Text.Op = PrintName("InitBitFieldActivateSint32");
31703 Text.Args.push_back(printArg<uint32_t>(PC));
31704 Text.Args.push_back(printArg<uint32_t>(PC));
31705 break;
31706case OP_InitBitFieldActivateUint32:
31707 Text.Op = PrintName("InitBitFieldActivateUint32");
31708 Text.Args.push_back(printArg<uint32_t>(PC));
31709 Text.Args.push_back(printArg<uint32_t>(PC));
31710 break;
31711case OP_InitBitFieldActivateSint64:
31712 Text.Op = PrintName("InitBitFieldActivateSint64");
31713 Text.Args.push_back(printArg<uint32_t>(PC));
31714 Text.Args.push_back(printArg<uint32_t>(PC));
31715 break;
31716case OP_InitBitFieldActivateUint64:
31717 Text.Op = PrintName("InitBitFieldActivateUint64");
31718 Text.Args.push_back(printArg<uint32_t>(PC));
31719 Text.Args.push_back(printArg<uint32_t>(PC));
31720 break;
31721case OP_InitBitFieldActivateIntAP:
31722 Text.Op = PrintName("InitBitFieldActivateIntAP");
31723 Text.Args.push_back(printArg<uint32_t>(PC));
31724 Text.Args.push_back(printArg<uint32_t>(PC));
31725 break;
31726case OP_InitBitFieldActivateIntAPS:
31727 Text.Op = PrintName("InitBitFieldActivateIntAPS");
31728 Text.Args.push_back(printArg<uint32_t>(PC));
31729 Text.Args.push_back(printArg<uint32_t>(PC));
31730 break;
31731case OP_InitBitFieldActivateBool:
31732 Text.Op = PrintName("InitBitFieldActivateBool");
31733 Text.Args.push_back(printArg<uint32_t>(PC));
31734 Text.Args.push_back(printArg<uint32_t>(PC));
31735 break;
31736#endif
31737#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31738bool emitInitBitFieldActivateSint8( uint32_t , uint32_t , SourceInfo);
31739bool emitInitBitFieldActivateUint8( uint32_t , uint32_t , SourceInfo);
31740bool emitInitBitFieldActivateSint16( uint32_t , uint32_t , SourceInfo);
31741bool emitInitBitFieldActivateUint16( uint32_t , uint32_t , SourceInfo);
31742bool emitInitBitFieldActivateSint32( uint32_t , uint32_t , SourceInfo);
31743bool emitInitBitFieldActivateUint32( uint32_t , uint32_t , SourceInfo);
31744bool emitInitBitFieldActivateSint64( uint32_t , uint32_t , SourceInfo);
31745bool emitInitBitFieldActivateUint64( uint32_t , uint32_t , SourceInfo);
31746bool emitInitBitFieldActivateIntAP( uint32_t , uint32_t , SourceInfo);
31747bool emitInitBitFieldActivateIntAPS( uint32_t , uint32_t , SourceInfo);
31748bool emitInitBitFieldActivateBool( uint32_t , uint32_t , SourceInfo);
31749#endif
31750#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31751[[nodiscard]] bool emitInitBitFieldActivate(PrimType, uint32_t, uint32_t, SourceInfo I);
31752#endif
31753#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
31754bool
31755#if defined(GET_EVAL_IMPL)
31756EvalEmitter
31757#else
31758ByteCodeEmitter
31759#endif
31760::emitInitBitFieldActivate(PrimType T0, uint32_t A0, uint32_t A1, SourceInfo I) {
31761 switch (T0) {
31762 case PT_Sint8:
31763 return emitInitBitFieldActivateSint8(A0, A1, I);
31764 case PT_Uint8:
31765 return emitInitBitFieldActivateUint8(A0, A1, I);
31766 case PT_Sint16:
31767 return emitInitBitFieldActivateSint16(A0, A1, I);
31768 case PT_Uint16:
31769 return emitInitBitFieldActivateUint16(A0, A1, I);
31770 case PT_Sint32:
31771 return emitInitBitFieldActivateSint32(A0, A1, I);
31772 case PT_Uint32:
31773 return emitInitBitFieldActivateUint32(A0, A1, I);
31774 case PT_Sint64:
31775 return emitInitBitFieldActivateSint64(A0, A1, I);
31776 case PT_Uint64:
31777 return emitInitBitFieldActivateUint64(A0, A1, I);
31778 case PT_IntAP:
31779 return emitInitBitFieldActivateIntAP(A0, A1, I);
31780 case PT_IntAPS:
31781 return emitInitBitFieldActivateIntAPS(A0, A1, I);
31782 case PT_Bool:
31783 return emitInitBitFieldActivateBool(A0, A1, I);
31784 default: llvm_unreachable("invalid type: emitInitBitFieldActivate");
31785 }
31786 llvm_unreachable("invalid enum value");
31787}
31788#endif
31789#ifdef GET_LINK_IMPL
31790bool ByteCodeEmitter::emitInitBitFieldActivateSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31791 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateSint8, A0, A1, L);
31792}
31793bool ByteCodeEmitter::emitInitBitFieldActivateUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31794 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateUint8, A0, A1, L);
31795}
31796bool ByteCodeEmitter::emitInitBitFieldActivateSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31797 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateSint16, A0, A1, L);
31798}
31799bool ByteCodeEmitter::emitInitBitFieldActivateUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31800 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateUint16, A0, A1, L);
31801}
31802bool ByteCodeEmitter::emitInitBitFieldActivateSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31803 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateSint32, A0, A1, L);
31804}
31805bool ByteCodeEmitter::emitInitBitFieldActivateUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31806 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateUint32, A0, A1, L);
31807}
31808bool ByteCodeEmitter::emitInitBitFieldActivateSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31809 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateSint64, A0, A1, L);
31810}
31811bool ByteCodeEmitter::emitInitBitFieldActivateUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31812 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateUint64, A0, A1, L);
31813}
31814bool ByteCodeEmitter::emitInitBitFieldActivateIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
31815 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateIntAP, A0, A1, L);
31816}
31817bool ByteCodeEmitter::emitInitBitFieldActivateIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
31818 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateIntAPS, A0, A1, L);
31819}
31820bool ByteCodeEmitter::emitInitBitFieldActivateBool( uint32_t A0, uint32_t A1, SourceInfo L) {
31821 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateBool, A0, A1, L);
31822}
31823#endif
31824#ifdef GET_EVAL_IMPL
31825bool EvalEmitter::emitInitBitFieldActivateSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31826 if (!isActive()) return true;
31827 CurrentSource = L;
31828 return InitBitFieldActivate<PT_Sint8>(S, CodePtr(), A0, A1);
31829}
31830bool EvalEmitter::emitInitBitFieldActivateUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31831 if (!isActive()) return true;
31832 CurrentSource = L;
31833 return InitBitFieldActivate<PT_Uint8>(S, CodePtr(), A0, A1);
31834}
31835bool EvalEmitter::emitInitBitFieldActivateSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31836 if (!isActive()) return true;
31837 CurrentSource = L;
31838 return InitBitFieldActivate<PT_Sint16>(S, CodePtr(), A0, A1);
31839}
31840bool EvalEmitter::emitInitBitFieldActivateUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31841 if (!isActive()) return true;
31842 CurrentSource = L;
31843 return InitBitFieldActivate<PT_Uint16>(S, CodePtr(), A0, A1);
31844}
31845bool EvalEmitter::emitInitBitFieldActivateSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31846 if (!isActive()) return true;
31847 CurrentSource = L;
31848 return InitBitFieldActivate<PT_Sint32>(S, CodePtr(), A0, A1);
31849}
31850bool EvalEmitter::emitInitBitFieldActivateUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31851 if (!isActive()) return true;
31852 CurrentSource = L;
31853 return InitBitFieldActivate<PT_Uint32>(S, CodePtr(), A0, A1);
31854}
31855bool EvalEmitter::emitInitBitFieldActivateSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31856 if (!isActive()) return true;
31857 CurrentSource = L;
31858 return InitBitFieldActivate<PT_Sint64>(S, CodePtr(), A0, A1);
31859}
31860bool EvalEmitter::emitInitBitFieldActivateUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31861 if (!isActive()) return true;
31862 CurrentSource = L;
31863 return InitBitFieldActivate<PT_Uint64>(S, CodePtr(), A0, A1);
31864}
31865bool EvalEmitter::emitInitBitFieldActivateIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
31866 if (!isActive()) return true;
31867 CurrentSource = L;
31868 return InitBitFieldActivate<PT_IntAP>(S, CodePtr(), A0, A1);
31869}
31870bool EvalEmitter::emitInitBitFieldActivateIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
31871 if (!isActive()) return true;
31872 CurrentSource = L;
31873 return InitBitFieldActivate<PT_IntAPS>(S, CodePtr(), A0, A1);
31874}
31875bool EvalEmitter::emitInitBitFieldActivateBool( uint32_t A0, uint32_t A1, SourceInfo L) {
31876 if (!isActive()) return true;
31877 CurrentSource = L;
31878 return InitBitFieldActivate<PT_Bool>(S, CodePtr(), A0, A1);
31879}
31880#endif
31881#ifdef GET_OPCODE_NAMES
31882OP_InitElemSint8,
31883OP_InitElemUint8,
31884OP_InitElemSint16,
31885OP_InitElemUint16,
31886OP_InitElemSint32,
31887OP_InitElemUint32,
31888OP_InitElemSint64,
31889OP_InitElemUint64,
31890OP_InitElemIntAP,
31891OP_InitElemIntAPS,
31892OP_InitElemBool,
31893OP_InitElemFixedPoint,
31894OP_InitElemPtr,
31895OP_InitElemMemberPtr,
31896OP_InitElemFloat,
31897#endif
31898#ifdef GET_INTERPFN_LIST
31899&Interp_InitElemSint8,
31900&Interp_InitElemUint8,
31901&Interp_InitElemSint16,
31902&Interp_InitElemUint16,
31903&Interp_InitElemSint32,
31904&Interp_InitElemUint32,
31905&Interp_InitElemSint64,
31906&Interp_InitElemUint64,
31907&Interp_InitElemIntAP,
31908&Interp_InitElemIntAPS,
31909&Interp_InitElemBool,
31910&Interp_InitElemFixedPoint,
31911&Interp_InitElemPtr,
31912&Interp_InitElemMemberPtr,
31913&Interp_InitElemFloat,
31914#endif
31915#ifdef GET_INTERPFN_DISPATCHERS
31916PRESERVE_NONE
31917static bool Interp_InitElemSint8(InterpState &S) {
31918 {
31919 CodePtr OpPC = S.PC;
31920 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31921 if (!InitElem<PT_Sint8>(S, OpPC, V0)) return false;
31922 }
31923#if USE_TAILCALLS
31924 MUSTTAIL return InterpNext(S);
31925#else
31926 return true;
31927#endif
31928}
31929PRESERVE_NONE
31930static bool Interp_InitElemUint8(InterpState &S) {
31931 {
31932 CodePtr OpPC = S.PC;
31933 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31934 if (!InitElem<PT_Uint8>(S, OpPC, V0)) return false;
31935 }
31936#if USE_TAILCALLS
31937 MUSTTAIL return InterpNext(S);
31938#else
31939 return true;
31940#endif
31941}
31942PRESERVE_NONE
31943static bool Interp_InitElemSint16(InterpState &S) {
31944 {
31945 CodePtr OpPC = S.PC;
31946 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31947 if (!InitElem<PT_Sint16>(S, OpPC, V0)) return false;
31948 }
31949#if USE_TAILCALLS
31950 MUSTTAIL return InterpNext(S);
31951#else
31952 return true;
31953#endif
31954}
31955PRESERVE_NONE
31956static bool Interp_InitElemUint16(InterpState &S) {
31957 {
31958 CodePtr OpPC = S.PC;
31959 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31960 if (!InitElem<PT_Uint16>(S, OpPC, V0)) return false;
31961 }
31962#if USE_TAILCALLS
31963 MUSTTAIL return InterpNext(S);
31964#else
31965 return true;
31966#endif
31967}
31968PRESERVE_NONE
31969static bool Interp_InitElemSint32(InterpState &S) {
31970 {
31971 CodePtr OpPC = S.PC;
31972 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31973 if (!InitElem<PT_Sint32>(S, OpPC, V0)) return false;
31974 }
31975#if USE_TAILCALLS
31976 MUSTTAIL return InterpNext(S);
31977#else
31978 return true;
31979#endif
31980}
31981PRESERVE_NONE
31982static bool Interp_InitElemUint32(InterpState &S) {
31983 {
31984 CodePtr OpPC = S.PC;
31985 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31986 if (!InitElem<PT_Uint32>(S, OpPC, V0)) return false;
31987 }
31988#if USE_TAILCALLS
31989 MUSTTAIL return InterpNext(S);
31990#else
31991 return true;
31992#endif
31993}
31994PRESERVE_NONE
31995static bool Interp_InitElemSint64(InterpState &S) {
31996 {
31997 CodePtr OpPC = S.PC;
31998 const auto V0 = ReadArg<uint32_t>(S, S.PC);
31999 if (!InitElem<PT_Sint64>(S, OpPC, V0)) return false;
32000 }
32001#if USE_TAILCALLS
32002 MUSTTAIL return InterpNext(S);
32003#else
32004 return true;
32005#endif
32006}
32007PRESERVE_NONE
32008static bool Interp_InitElemUint64(InterpState &S) {
32009 {
32010 CodePtr OpPC = S.PC;
32011 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32012 if (!InitElem<PT_Uint64>(S, OpPC, V0)) return false;
32013 }
32014#if USE_TAILCALLS
32015 MUSTTAIL return InterpNext(S);
32016#else
32017 return true;
32018#endif
32019}
32020PRESERVE_NONE
32021static bool Interp_InitElemIntAP(InterpState &S) {
32022 {
32023 CodePtr OpPC = S.PC;
32024 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32025 if (!InitElem<PT_IntAP>(S, OpPC, V0)) return false;
32026 }
32027#if USE_TAILCALLS
32028 MUSTTAIL return InterpNext(S);
32029#else
32030 return true;
32031#endif
32032}
32033PRESERVE_NONE
32034static bool Interp_InitElemIntAPS(InterpState &S) {
32035 {
32036 CodePtr OpPC = S.PC;
32037 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32038 if (!InitElem<PT_IntAPS>(S, OpPC, V0)) return false;
32039 }
32040#if USE_TAILCALLS
32041 MUSTTAIL return InterpNext(S);
32042#else
32043 return true;
32044#endif
32045}
32046PRESERVE_NONE
32047static bool Interp_InitElemBool(InterpState &S) {
32048 {
32049 CodePtr OpPC = S.PC;
32050 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32051 if (!InitElem<PT_Bool>(S, OpPC, V0)) return false;
32052 }
32053#if USE_TAILCALLS
32054 MUSTTAIL return InterpNext(S);
32055#else
32056 return true;
32057#endif
32058}
32059PRESERVE_NONE
32060static bool Interp_InitElemFixedPoint(InterpState &S) {
32061 {
32062 CodePtr OpPC = S.PC;
32063 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32064 if (!InitElem<PT_FixedPoint>(S, OpPC, V0)) return false;
32065 }
32066#if USE_TAILCALLS
32067 MUSTTAIL return InterpNext(S);
32068#else
32069 return true;
32070#endif
32071}
32072PRESERVE_NONE
32073static bool Interp_InitElemPtr(InterpState &S) {
32074 {
32075 CodePtr OpPC = S.PC;
32076 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32077 if (!InitElem<PT_Ptr>(S, OpPC, V0)) return false;
32078 }
32079#if USE_TAILCALLS
32080 MUSTTAIL return InterpNext(S);
32081#else
32082 return true;
32083#endif
32084}
32085PRESERVE_NONE
32086static bool Interp_InitElemMemberPtr(InterpState &S) {
32087 {
32088 CodePtr OpPC = S.PC;
32089 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32090 if (!InitElem<PT_MemberPtr>(S, OpPC, V0)) return false;
32091 }
32092#if USE_TAILCALLS
32093 MUSTTAIL return InterpNext(S);
32094#else
32095 return true;
32096#endif
32097}
32098PRESERVE_NONE
32099static bool Interp_InitElemFloat(InterpState &S) {
32100 {
32101 CodePtr OpPC = S.PC;
32102 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32103 if (!InitElem<PT_Float>(S, OpPC, V0)) return false;
32104 }
32105#if USE_TAILCALLS
32106 MUSTTAIL return InterpNext(S);
32107#else
32108 return true;
32109#endif
32110}
32111#endif
32112#ifdef GET_DISASM
32113case OP_InitElemSint8:
32114 Text.Op = PrintName("InitElemSint8");
32115 Text.Args.push_back(printArg<uint32_t>(PC));
32116 break;
32117case OP_InitElemUint8:
32118 Text.Op = PrintName("InitElemUint8");
32119 Text.Args.push_back(printArg<uint32_t>(PC));
32120 break;
32121case OP_InitElemSint16:
32122 Text.Op = PrintName("InitElemSint16");
32123 Text.Args.push_back(printArg<uint32_t>(PC));
32124 break;
32125case OP_InitElemUint16:
32126 Text.Op = PrintName("InitElemUint16");
32127 Text.Args.push_back(printArg<uint32_t>(PC));
32128 break;
32129case OP_InitElemSint32:
32130 Text.Op = PrintName("InitElemSint32");
32131 Text.Args.push_back(printArg<uint32_t>(PC));
32132 break;
32133case OP_InitElemUint32:
32134 Text.Op = PrintName("InitElemUint32");
32135 Text.Args.push_back(printArg<uint32_t>(PC));
32136 break;
32137case OP_InitElemSint64:
32138 Text.Op = PrintName("InitElemSint64");
32139 Text.Args.push_back(printArg<uint32_t>(PC));
32140 break;
32141case OP_InitElemUint64:
32142 Text.Op = PrintName("InitElemUint64");
32143 Text.Args.push_back(printArg<uint32_t>(PC));
32144 break;
32145case OP_InitElemIntAP:
32146 Text.Op = PrintName("InitElemIntAP");
32147 Text.Args.push_back(printArg<uint32_t>(PC));
32148 break;
32149case OP_InitElemIntAPS:
32150 Text.Op = PrintName("InitElemIntAPS");
32151 Text.Args.push_back(printArg<uint32_t>(PC));
32152 break;
32153case OP_InitElemBool:
32154 Text.Op = PrintName("InitElemBool");
32155 Text.Args.push_back(printArg<uint32_t>(PC));
32156 break;
32157case OP_InitElemFixedPoint:
32158 Text.Op = PrintName("InitElemFixedPoint");
32159 Text.Args.push_back(printArg<uint32_t>(PC));
32160 break;
32161case OP_InitElemPtr:
32162 Text.Op = PrintName("InitElemPtr");
32163 Text.Args.push_back(printArg<uint32_t>(PC));
32164 break;
32165case OP_InitElemMemberPtr:
32166 Text.Op = PrintName("InitElemMemberPtr");
32167 Text.Args.push_back(printArg<uint32_t>(PC));
32168 break;
32169case OP_InitElemFloat:
32170 Text.Op = PrintName("InitElemFloat");
32171 Text.Args.push_back(printArg<uint32_t>(PC));
32172 break;
32173#endif
32174#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32175bool emitInitElemSint8( uint32_t , SourceInfo);
32176bool emitInitElemUint8( uint32_t , SourceInfo);
32177bool emitInitElemSint16( uint32_t , SourceInfo);
32178bool emitInitElemUint16( uint32_t , SourceInfo);
32179bool emitInitElemSint32( uint32_t , SourceInfo);
32180bool emitInitElemUint32( uint32_t , SourceInfo);
32181bool emitInitElemSint64( uint32_t , SourceInfo);
32182bool emitInitElemUint64( uint32_t , SourceInfo);
32183bool emitInitElemIntAP( uint32_t , SourceInfo);
32184bool emitInitElemIntAPS( uint32_t , SourceInfo);
32185bool emitInitElemBool( uint32_t , SourceInfo);
32186bool emitInitElemFixedPoint( uint32_t , SourceInfo);
32187bool emitInitElemPtr( uint32_t , SourceInfo);
32188bool emitInitElemMemberPtr( uint32_t , SourceInfo);
32189bool emitInitElemFloat( uint32_t , SourceInfo);
32190#endif
32191#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32192[[nodiscard]] bool emitInitElem(PrimType, uint32_t, SourceInfo I);
32193#endif
32194#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
32195bool
32196#if defined(GET_EVAL_IMPL)
32197EvalEmitter
32198#else
32199ByteCodeEmitter
32200#endif
32201::emitInitElem(PrimType T0, uint32_t A0, SourceInfo I) {
32202 switch (T0) {
32203 case PT_Sint8:
32204 return emitInitElemSint8(A0, I);
32205 case PT_Uint8:
32206 return emitInitElemUint8(A0, I);
32207 case PT_Sint16:
32208 return emitInitElemSint16(A0, I);
32209 case PT_Uint16:
32210 return emitInitElemUint16(A0, I);
32211 case PT_Sint32:
32212 return emitInitElemSint32(A0, I);
32213 case PT_Uint32:
32214 return emitInitElemUint32(A0, I);
32215 case PT_Sint64:
32216 return emitInitElemSint64(A0, I);
32217 case PT_Uint64:
32218 return emitInitElemUint64(A0, I);
32219 case PT_IntAP:
32220 return emitInitElemIntAP(A0, I);
32221 case PT_IntAPS:
32222 return emitInitElemIntAPS(A0, I);
32223 case PT_Bool:
32224 return emitInitElemBool(A0, I);
32225 case PT_FixedPoint:
32226 return emitInitElemFixedPoint(A0, I);
32227 case PT_Ptr:
32228 return emitInitElemPtr(A0, I);
32229 case PT_MemberPtr:
32230 return emitInitElemMemberPtr(A0, I);
32231 case PT_Float:
32232 return emitInitElemFloat(A0, I);
32233 }
32234 llvm_unreachable("invalid enum value");
32235}
32236#endif
32237#ifdef GET_LINK_IMPL
32238bool ByteCodeEmitter::emitInitElemSint8( uint32_t A0, SourceInfo L) {
32239 return emitOp<uint32_t>(OP_InitElemSint8, A0, L);
32240}
32241bool ByteCodeEmitter::emitInitElemUint8( uint32_t A0, SourceInfo L) {
32242 return emitOp<uint32_t>(OP_InitElemUint8, A0, L);
32243}
32244bool ByteCodeEmitter::emitInitElemSint16( uint32_t A0, SourceInfo L) {
32245 return emitOp<uint32_t>(OP_InitElemSint16, A0, L);
32246}
32247bool ByteCodeEmitter::emitInitElemUint16( uint32_t A0, SourceInfo L) {
32248 return emitOp<uint32_t>(OP_InitElemUint16, A0, L);
32249}
32250bool ByteCodeEmitter::emitInitElemSint32( uint32_t A0, SourceInfo L) {
32251 return emitOp<uint32_t>(OP_InitElemSint32, A0, L);
32252}
32253bool ByteCodeEmitter::emitInitElemUint32( uint32_t A0, SourceInfo L) {
32254 return emitOp<uint32_t>(OP_InitElemUint32, A0, L);
32255}
32256bool ByteCodeEmitter::emitInitElemSint64( uint32_t A0, SourceInfo L) {
32257 return emitOp<uint32_t>(OP_InitElemSint64, A0, L);
32258}
32259bool ByteCodeEmitter::emitInitElemUint64( uint32_t A0, SourceInfo L) {
32260 return emitOp<uint32_t>(OP_InitElemUint64, A0, L);
32261}
32262bool ByteCodeEmitter::emitInitElemIntAP( uint32_t A0, SourceInfo L) {
32263 return emitOp<uint32_t>(OP_InitElemIntAP, A0, L);
32264}
32265bool ByteCodeEmitter::emitInitElemIntAPS( uint32_t A0, SourceInfo L) {
32266 return emitOp<uint32_t>(OP_InitElemIntAPS, A0, L);
32267}
32268bool ByteCodeEmitter::emitInitElemBool( uint32_t A0, SourceInfo L) {
32269 return emitOp<uint32_t>(OP_InitElemBool, A0, L);
32270}
32271bool ByteCodeEmitter::emitInitElemFixedPoint( uint32_t A0, SourceInfo L) {
32272 return emitOp<uint32_t>(OP_InitElemFixedPoint, A0, L);
32273}
32274bool ByteCodeEmitter::emitInitElemPtr( uint32_t A0, SourceInfo L) {
32275 return emitOp<uint32_t>(OP_InitElemPtr, A0, L);
32276}
32277bool ByteCodeEmitter::emitInitElemMemberPtr( uint32_t A0, SourceInfo L) {
32278 return emitOp<uint32_t>(OP_InitElemMemberPtr, A0, L);
32279}
32280bool ByteCodeEmitter::emitInitElemFloat( uint32_t A0, SourceInfo L) {
32281 return emitOp<uint32_t>(OP_InitElemFloat, A0, L);
32282}
32283#endif
32284#ifdef GET_EVAL_IMPL
32285bool EvalEmitter::emitInitElemSint8( uint32_t A0, SourceInfo L) {
32286 if (!isActive()) return true;
32287 CurrentSource = L;
32288 return InitElem<PT_Sint8>(S, CodePtr(), A0);
32289}
32290bool EvalEmitter::emitInitElemUint8( uint32_t A0, SourceInfo L) {
32291 if (!isActive()) return true;
32292 CurrentSource = L;
32293 return InitElem<PT_Uint8>(S, CodePtr(), A0);
32294}
32295bool EvalEmitter::emitInitElemSint16( uint32_t A0, SourceInfo L) {
32296 if (!isActive()) return true;
32297 CurrentSource = L;
32298 return InitElem<PT_Sint16>(S, CodePtr(), A0);
32299}
32300bool EvalEmitter::emitInitElemUint16( uint32_t A0, SourceInfo L) {
32301 if (!isActive()) return true;
32302 CurrentSource = L;
32303 return InitElem<PT_Uint16>(S, CodePtr(), A0);
32304}
32305bool EvalEmitter::emitInitElemSint32( uint32_t A0, SourceInfo L) {
32306 if (!isActive()) return true;
32307 CurrentSource = L;
32308 return InitElem<PT_Sint32>(S, CodePtr(), A0);
32309}
32310bool EvalEmitter::emitInitElemUint32( uint32_t A0, SourceInfo L) {
32311 if (!isActive()) return true;
32312 CurrentSource = L;
32313 return InitElem<PT_Uint32>(S, CodePtr(), A0);
32314}
32315bool EvalEmitter::emitInitElemSint64( uint32_t A0, SourceInfo L) {
32316 if (!isActive()) return true;
32317 CurrentSource = L;
32318 return InitElem<PT_Sint64>(S, CodePtr(), A0);
32319}
32320bool EvalEmitter::emitInitElemUint64( uint32_t A0, SourceInfo L) {
32321 if (!isActive()) return true;
32322 CurrentSource = L;
32323 return InitElem<PT_Uint64>(S, CodePtr(), A0);
32324}
32325bool EvalEmitter::emitInitElemIntAP( uint32_t A0, SourceInfo L) {
32326 if (!isActive()) return true;
32327 CurrentSource = L;
32328 return InitElem<PT_IntAP>(S, CodePtr(), A0);
32329}
32330bool EvalEmitter::emitInitElemIntAPS( uint32_t A0, SourceInfo L) {
32331 if (!isActive()) return true;
32332 CurrentSource = L;
32333 return InitElem<PT_IntAPS>(S, CodePtr(), A0);
32334}
32335bool EvalEmitter::emitInitElemBool( uint32_t A0, SourceInfo L) {
32336 if (!isActive()) return true;
32337 CurrentSource = L;
32338 return InitElem<PT_Bool>(S, CodePtr(), A0);
32339}
32340bool EvalEmitter::emitInitElemFixedPoint( uint32_t A0, SourceInfo L) {
32341 if (!isActive()) return true;
32342 CurrentSource = L;
32343 return InitElem<PT_FixedPoint>(S, CodePtr(), A0);
32344}
32345bool EvalEmitter::emitInitElemPtr( uint32_t A0, SourceInfo L) {
32346 if (!isActive()) return true;
32347 CurrentSource = L;
32348 return InitElem<PT_Ptr>(S, CodePtr(), A0);
32349}
32350bool EvalEmitter::emitInitElemMemberPtr( uint32_t A0, SourceInfo L) {
32351 if (!isActive()) return true;
32352 CurrentSource = L;
32353 return InitElem<PT_MemberPtr>(S, CodePtr(), A0);
32354}
32355bool EvalEmitter::emitInitElemFloat( uint32_t A0, SourceInfo L) {
32356 if (!isActive()) return true;
32357 CurrentSource = L;
32358 return InitElem<PT_Float>(S, CodePtr(), A0);
32359}
32360#endif
32361#ifdef GET_OPCODE_NAMES
32362OP_InitElemPopSint8,
32363OP_InitElemPopUint8,
32364OP_InitElemPopSint16,
32365OP_InitElemPopUint16,
32366OP_InitElemPopSint32,
32367OP_InitElemPopUint32,
32368OP_InitElemPopSint64,
32369OP_InitElemPopUint64,
32370OP_InitElemPopIntAP,
32371OP_InitElemPopIntAPS,
32372OP_InitElemPopBool,
32373OP_InitElemPopFixedPoint,
32374OP_InitElemPopPtr,
32375OP_InitElemPopMemberPtr,
32376OP_InitElemPopFloat,
32377#endif
32378#ifdef GET_INTERPFN_LIST
32379&Interp_InitElemPopSint8,
32380&Interp_InitElemPopUint8,
32381&Interp_InitElemPopSint16,
32382&Interp_InitElemPopUint16,
32383&Interp_InitElemPopSint32,
32384&Interp_InitElemPopUint32,
32385&Interp_InitElemPopSint64,
32386&Interp_InitElemPopUint64,
32387&Interp_InitElemPopIntAP,
32388&Interp_InitElemPopIntAPS,
32389&Interp_InitElemPopBool,
32390&Interp_InitElemPopFixedPoint,
32391&Interp_InitElemPopPtr,
32392&Interp_InitElemPopMemberPtr,
32393&Interp_InitElemPopFloat,
32394#endif
32395#ifdef GET_INTERPFN_DISPATCHERS
32396PRESERVE_NONE
32397static bool Interp_InitElemPopSint8(InterpState &S) {
32398 {
32399 CodePtr OpPC = S.PC;
32400 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32401 if (!InitElemPop<PT_Sint8>(S, OpPC, V0)) return false;
32402 }
32403#if USE_TAILCALLS
32404 MUSTTAIL return InterpNext(S);
32405#else
32406 return true;
32407#endif
32408}
32409PRESERVE_NONE
32410static bool Interp_InitElemPopUint8(InterpState &S) {
32411 {
32412 CodePtr OpPC = S.PC;
32413 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32414 if (!InitElemPop<PT_Uint8>(S, OpPC, V0)) return false;
32415 }
32416#if USE_TAILCALLS
32417 MUSTTAIL return InterpNext(S);
32418#else
32419 return true;
32420#endif
32421}
32422PRESERVE_NONE
32423static bool Interp_InitElemPopSint16(InterpState &S) {
32424 {
32425 CodePtr OpPC = S.PC;
32426 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32427 if (!InitElemPop<PT_Sint16>(S, OpPC, V0)) return false;
32428 }
32429#if USE_TAILCALLS
32430 MUSTTAIL return InterpNext(S);
32431#else
32432 return true;
32433#endif
32434}
32435PRESERVE_NONE
32436static bool Interp_InitElemPopUint16(InterpState &S) {
32437 {
32438 CodePtr OpPC = S.PC;
32439 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32440 if (!InitElemPop<PT_Uint16>(S, OpPC, V0)) return false;
32441 }
32442#if USE_TAILCALLS
32443 MUSTTAIL return InterpNext(S);
32444#else
32445 return true;
32446#endif
32447}
32448PRESERVE_NONE
32449static bool Interp_InitElemPopSint32(InterpState &S) {
32450 {
32451 CodePtr OpPC = S.PC;
32452 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32453 if (!InitElemPop<PT_Sint32>(S, OpPC, V0)) return false;
32454 }
32455#if USE_TAILCALLS
32456 MUSTTAIL return InterpNext(S);
32457#else
32458 return true;
32459#endif
32460}
32461PRESERVE_NONE
32462static bool Interp_InitElemPopUint32(InterpState &S) {
32463 {
32464 CodePtr OpPC = S.PC;
32465 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32466 if (!InitElemPop<PT_Uint32>(S, OpPC, V0)) return false;
32467 }
32468#if USE_TAILCALLS
32469 MUSTTAIL return InterpNext(S);
32470#else
32471 return true;
32472#endif
32473}
32474PRESERVE_NONE
32475static bool Interp_InitElemPopSint64(InterpState &S) {
32476 {
32477 CodePtr OpPC = S.PC;
32478 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32479 if (!InitElemPop<PT_Sint64>(S, OpPC, V0)) return false;
32480 }
32481#if USE_TAILCALLS
32482 MUSTTAIL return InterpNext(S);
32483#else
32484 return true;
32485#endif
32486}
32487PRESERVE_NONE
32488static bool Interp_InitElemPopUint64(InterpState &S) {
32489 {
32490 CodePtr OpPC = S.PC;
32491 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32492 if (!InitElemPop<PT_Uint64>(S, OpPC, V0)) return false;
32493 }
32494#if USE_TAILCALLS
32495 MUSTTAIL return InterpNext(S);
32496#else
32497 return true;
32498#endif
32499}
32500PRESERVE_NONE
32501static bool Interp_InitElemPopIntAP(InterpState &S) {
32502 {
32503 CodePtr OpPC = S.PC;
32504 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32505 if (!InitElemPop<PT_IntAP>(S, OpPC, V0)) return false;
32506 }
32507#if USE_TAILCALLS
32508 MUSTTAIL return InterpNext(S);
32509#else
32510 return true;
32511#endif
32512}
32513PRESERVE_NONE
32514static bool Interp_InitElemPopIntAPS(InterpState &S) {
32515 {
32516 CodePtr OpPC = S.PC;
32517 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32518 if (!InitElemPop<PT_IntAPS>(S, OpPC, V0)) return false;
32519 }
32520#if USE_TAILCALLS
32521 MUSTTAIL return InterpNext(S);
32522#else
32523 return true;
32524#endif
32525}
32526PRESERVE_NONE
32527static bool Interp_InitElemPopBool(InterpState &S) {
32528 {
32529 CodePtr OpPC = S.PC;
32530 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32531 if (!InitElemPop<PT_Bool>(S, OpPC, V0)) return false;
32532 }
32533#if USE_TAILCALLS
32534 MUSTTAIL return InterpNext(S);
32535#else
32536 return true;
32537#endif
32538}
32539PRESERVE_NONE
32540static bool Interp_InitElemPopFixedPoint(InterpState &S) {
32541 {
32542 CodePtr OpPC = S.PC;
32543 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32544 if (!InitElemPop<PT_FixedPoint>(S, OpPC, V0)) return false;
32545 }
32546#if USE_TAILCALLS
32547 MUSTTAIL return InterpNext(S);
32548#else
32549 return true;
32550#endif
32551}
32552PRESERVE_NONE
32553static bool Interp_InitElemPopPtr(InterpState &S) {
32554 {
32555 CodePtr OpPC = S.PC;
32556 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32557 if (!InitElemPop<PT_Ptr>(S, OpPC, V0)) return false;
32558 }
32559#if USE_TAILCALLS
32560 MUSTTAIL return InterpNext(S);
32561#else
32562 return true;
32563#endif
32564}
32565PRESERVE_NONE
32566static bool Interp_InitElemPopMemberPtr(InterpState &S) {
32567 {
32568 CodePtr OpPC = S.PC;
32569 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32570 if (!InitElemPop<PT_MemberPtr>(S, OpPC, V0)) return false;
32571 }
32572#if USE_TAILCALLS
32573 MUSTTAIL return InterpNext(S);
32574#else
32575 return true;
32576#endif
32577}
32578PRESERVE_NONE
32579static bool Interp_InitElemPopFloat(InterpState &S) {
32580 {
32581 CodePtr OpPC = S.PC;
32582 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32583 if (!InitElemPop<PT_Float>(S, OpPC, V0)) return false;
32584 }
32585#if USE_TAILCALLS
32586 MUSTTAIL return InterpNext(S);
32587#else
32588 return true;
32589#endif
32590}
32591#endif
32592#ifdef GET_DISASM
32593case OP_InitElemPopSint8:
32594 Text.Op = PrintName("InitElemPopSint8");
32595 Text.Args.push_back(printArg<uint32_t>(PC));
32596 break;
32597case OP_InitElemPopUint8:
32598 Text.Op = PrintName("InitElemPopUint8");
32599 Text.Args.push_back(printArg<uint32_t>(PC));
32600 break;
32601case OP_InitElemPopSint16:
32602 Text.Op = PrintName("InitElemPopSint16");
32603 Text.Args.push_back(printArg<uint32_t>(PC));
32604 break;
32605case OP_InitElemPopUint16:
32606 Text.Op = PrintName("InitElemPopUint16");
32607 Text.Args.push_back(printArg<uint32_t>(PC));
32608 break;
32609case OP_InitElemPopSint32:
32610 Text.Op = PrintName("InitElemPopSint32");
32611 Text.Args.push_back(printArg<uint32_t>(PC));
32612 break;
32613case OP_InitElemPopUint32:
32614 Text.Op = PrintName("InitElemPopUint32");
32615 Text.Args.push_back(printArg<uint32_t>(PC));
32616 break;
32617case OP_InitElemPopSint64:
32618 Text.Op = PrintName("InitElemPopSint64");
32619 Text.Args.push_back(printArg<uint32_t>(PC));
32620 break;
32621case OP_InitElemPopUint64:
32622 Text.Op = PrintName("InitElemPopUint64");
32623 Text.Args.push_back(printArg<uint32_t>(PC));
32624 break;
32625case OP_InitElemPopIntAP:
32626 Text.Op = PrintName("InitElemPopIntAP");
32627 Text.Args.push_back(printArg<uint32_t>(PC));
32628 break;
32629case OP_InitElemPopIntAPS:
32630 Text.Op = PrintName("InitElemPopIntAPS");
32631 Text.Args.push_back(printArg<uint32_t>(PC));
32632 break;
32633case OP_InitElemPopBool:
32634 Text.Op = PrintName("InitElemPopBool");
32635 Text.Args.push_back(printArg<uint32_t>(PC));
32636 break;
32637case OP_InitElemPopFixedPoint:
32638 Text.Op = PrintName("InitElemPopFixedPoint");
32639 Text.Args.push_back(printArg<uint32_t>(PC));
32640 break;
32641case OP_InitElemPopPtr:
32642 Text.Op = PrintName("InitElemPopPtr");
32643 Text.Args.push_back(printArg<uint32_t>(PC));
32644 break;
32645case OP_InitElemPopMemberPtr:
32646 Text.Op = PrintName("InitElemPopMemberPtr");
32647 Text.Args.push_back(printArg<uint32_t>(PC));
32648 break;
32649case OP_InitElemPopFloat:
32650 Text.Op = PrintName("InitElemPopFloat");
32651 Text.Args.push_back(printArg<uint32_t>(PC));
32652 break;
32653#endif
32654#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32655bool emitInitElemPopSint8( uint32_t , SourceInfo);
32656bool emitInitElemPopUint8( uint32_t , SourceInfo);
32657bool emitInitElemPopSint16( uint32_t , SourceInfo);
32658bool emitInitElemPopUint16( uint32_t , SourceInfo);
32659bool emitInitElemPopSint32( uint32_t , SourceInfo);
32660bool emitInitElemPopUint32( uint32_t , SourceInfo);
32661bool emitInitElemPopSint64( uint32_t , SourceInfo);
32662bool emitInitElemPopUint64( uint32_t , SourceInfo);
32663bool emitInitElemPopIntAP( uint32_t , SourceInfo);
32664bool emitInitElemPopIntAPS( uint32_t , SourceInfo);
32665bool emitInitElemPopBool( uint32_t , SourceInfo);
32666bool emitInitElemPopFixedPoint( uint32_t , SourceInfo);
32667bool emitInitElemPopPtr( uint32_t , SourceInfo);
32668bool emitInitElemPopMemberPtr( uint32_t , SourceInfo);
32669bool emitInitElemPopFloat( uint32_t , SourceInfo);
32670#endif
32671#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32672[[nodiscard]] bool emitInitElemPop(PrimType, uint32_t, SourceInfo I);
32673#endif
32674#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
32675bool
32676#if defined(GET_EVAL_IMPL)
32677EvalEmitter
32678#else
32679ByteCodeEmitter
32680#endif
32681::emitInitElemPop(PrimType T0, uint32_t A0, SourceInfo I) {
32682 switch (T0) {
32683 case PT_Sint8:
32684 return emitInitElemPopSint8(A0, I);
32685 case PT_Uint8:
32686 return emitInitElemPopUint8(A0, I);
32687 case PT_Sint16:
32688 return emitInitElemPopSint16(A0, I);
32689 case PT_Uint16:
32690 return emitInitElemPopUint16(A0, I);
32691 case PT_Sint32:
32692 return emitInitElemPopSint32(A0, I);
32693 case PT_Uint32:
32694 return emitInitElemPopUint32(A0, I);
32695 case PT_Sint64:
32696 return emitInitElemPopSint64(A0, I);
32697 case PT_Uint64:
32698 return emitInitElemPopUint64(A0, I);
32699 case PT_IntAP:
32700 return emitInitElemPopIntAP(A0, I);
32701 case PT_IntAPS:
32702 return emitInitElemPopIntAPS(A0, I);
32703 case PT_Bool:
32704 return emitInitElemPopBool(A0, I);
32705 case PT_FixedPoint:
32706 return emitInitElemPopFixedPoint(A0, I);
32707 case PT_Ptr:
32708 return emitInitElemPopPtr(A0, I);
32709 case PT_MemberPtr:
32710 return emitInitElemPopMemberPtr(A0, I);
32711 case PT_Float:
32712 return emitInitElemPopFloat(A0, I);
32713 }
32714 llvm_unreachable("invalid enum value");
32715}
32716#endif
32717#ifdef GET_LINK_IMPL
32718bool ByteCodeEmitter::emitInitElemPopSint8( uint32_t A0, SourceInfo L) {
32719 return emitOp<uint32_t>(OP_InitElemPopSint8, A0, L);
32720}
32721bool ByteCodeEmitter::emitInitElemPopUint8( uint32_t A0, SourceInfo L) {
32722 return emitOp<uint32_t>(OP_InitElemPopUint8, A0, L);
32723}
32724bool ByteCodeEmitter::emitInitElemPopSint16( uint32_t A0, SourceInfo L) {
32725 return emitOp<uint32_t>(OP_InitElemPopSint16, A0, L);
32726}
32727bool ByteCodeEmitter::emitInitElemPopUint16( uint32_t A0, SourceInfo L) {
32728 return emitOp<uint32_t>(OP_InitElemPopUint16, A0, L);
32729}
32730bool ByteCodeEmitter::emitInitElemPopSint32( uint32_t A0, SourceInfo L) {
32731 return emitOp<uint32_t>(OP_InitElemPopSint32, A0, L);
32732}
32733bool ByteCodeEmitter::emitInitElemPopUint32( uint32_t A0, SourceInfo L) {
32734 return emitOp<uint32_t>(OP_InitElemPopUint32, A0, L);
32735}
32736bool ByteCodeEmitter::emitInitElemPopSint64( uint32_t A0, SourceInfo L) {
32737 return emitOp<uint32_t>(OP_InitElemPopSint64, A0, L);
32738}
32739bool ByteCodeEmitter::emitInitElemPopUint64( uint32_t A0, SourceInfo L) {
32740 return emitOp<uint32_t>(OP_InitElemPopUint64, A0, L);
32741}
32742bool ByteCodeEmitter::emitInitElemPopIntAP( uint32_t A0, SourceInfo L) {
32743 return emitOp<uint32_t>(OP_InitElemPopIntAP, A0, L);
32744}
32745bool ByteCodeEmitter::emitInitElemPopIntAPS( uint32_t A0, SourceInfo L) {
32746 return emitOp<uint32_t>(OP_InitElemPopIntAPS, A0, L);
32747}
32748bool ByteCodeEmitter::emitInitElemPopBool( uint32_t A0, SourceInfo L) {
32749 return emitOp<uint32_t>(OP_InitElemPopBool, A0, L);
32750}
32751bool ByteCodeEmitter::emitInitElemPopFixedPoint( uint32_t A0, SourceInfo L) {
32752 return emitOp<uint32_t>(OP_InitElemPopFixedPoint, A0, L);
32753}
32754bool ByteCodeEmitter::emitInitElemPopPtr( uint32_t A0, SourceInfo L) {
32755 return emitOp<uint32_t>(OP_InitElemPopPtr, A0, L);
32756}
32757bool ByteCodeEmitter::emitInitElemPopMemberPtr( uint32_t A0, SourceInfo L) {
32758 return emitOp<uint32_t>(OP_InitElemPopMemberPtr, A0, L);
32759}
32760bool ByteCodeEmitter::emitInitElemPopFloat( uint32_t A0, SourceInfo L) {
32761 return emitOp<uint32_t>(OP_InitElemPopFloat, A0, L);
32762}
32763#endif
32764#ifdef GET_EVAL_IMPL
32765bool EvalEmitter::emitInitElemPopSint8( uint32_t A0, SourceInfo L) {
32766 if (!isActive()) return true;
32767 CurrentSource = L;
32768 return InitElemPop<PT_Sint8>(S, CodePtr(), A0);
32769}
32770bool EvalEmitter::emitInitElemPopUint8( uint32_t A0, SourceInfo L) {
32771 if (!isActive()) return true;
32772 CurrentSource = L;
32773 return InitElemPop<PT_Uint8>(S, CodePtr(), A0);
32774}
32775bool EvalEmitter::emitInitElemPopSint16( uint32_t A0, SourceInfo L) {
32776 if (!isActive()) return true;
32777 CurrentSource = L;
32778 return InitElemPop<PT_Sint16>(S, CodePtr(), A0);
32779}
32780bool EvalEmitter::emitInitElemPopUint16( uint32_t A0, SourceInfo L) {
32781 if (!isActive()) return true;
32782 CurrentSource = L;
32783 return InitElemPop<PT_Uint16>(S, CodePtr(), A0);
32784}
32785bool EvalEmitter::emitInitElemPopSint32( uint32_t A0, SourceInfo L) {
32786 if (!isActive()) return true;
32787 CurrentSource = L;
32788 return InitElemPop<PT_Sint32>(S, CodePtr(), A0);
32789}
32790bool EvalEmitter::emitInitElemPopUint32( uint32_t A0, SourceInfo L) {
32791 if (!isActive()) return true;
32792 CurrentSource = L;
32793 return InitElemPop<PT_Uint32>(S, CodePtr(), A0);
32794}
32795bool EvalEmitter::emitInitElemPopSint64( uint32_t A0, SourceInfo L) {
32796 if (!isActive()) return true;
32797 CurrentSource = L;
32798 return InitElemPop<PT_Sint64>(S, CodePtr(), A0);
32799}
32800bool EvalEmitter::emitInitElemPopUint64( uint32_t A0, SourceInfo L) {
32801 if (!isActive()) return true;
32802 CurrentSource = L;
32803 return InitElemPop<PT_Uint64>(S, CodePtr(), A0);
32804}
32805bool EvalEmitter::emitInitElemPopIntAP( uint32_t A0, SourceInfo L) {
32806 if (!isActive()) return true;
32807 CurrentSource = L;
32808 return InitElemPop<PT_IntAP>(S, CodePtr(), A0);
32809}
32810bool EvalEmitter::emitInitElemPopIntAPS( uint32_t A0, SourceInfo L) {
32811 if (!isActive()) return true;
32812 CurrentSource = L;
32813 return InitElemPop<PT_IntAPS>(S, CodePtr(), A0);
32814}
32815bool EvalEmitter::emitInitElemPopBool( uint32_t A0, SourceInfo L) {
32816 if (!isActive()) return true;
32817 CurrentSource = L;
32818 return InitElemPop<PT_Bool>(S, CodePtr(), A0);
32819}
32820bool EvalEmitter::emitInitElemPopFixedPoint( uint32_t A0, SourceInfo L) {
32821 if (!isActive()) return true;
32822 CurrentSource = L;
32823 return InitElemPop<PT_FixedPoint>(S, CodePtr(), A0);
32824}
32825bool EvalEmitter::emitInitElemPopPtr( uint32_t A0, SourceInfo L) {
32826 if (!isActive()) return true;
32827 CurrentSource = L;
32828 return InitElemPop<PT_Ptr>(S, CodePtr(), A0);
32829}
32830bool EvalEmitter::emitInitElemPopMemberPtr( uint32_t A0, SourceInfo L) {
32831 if (!isActive()) return true;
32832 CurrentSource = L;
32833 return InitElemPop<PT_MemberPtr>(S, CodePtr(), A0);
32834}
32835bool EvalEmitter::emitInitElemPopFloat( uint32_t A0, SourceInfo L) {
32836 if (!isActive()) return true;
32837 CurrentSource = L;
32838 return InitElemPop<PT_Float>(S, CodePtr(), A0);
32839}
32840#endif
32841#ifdef GET_OPCODE_NAMES
32842OP_InitFieldSint8,
32843OP_InitFieldUint8,
32844OP_InitFieldSint16,
32845OP_InitFieldUint16,
32846OP_InitFieldSint32,
32847OP_InitFieldUint32,
32848OP_InitFieldSint64,
32849OP_InitFieldUint64,
32850OP_InitFieldIntAP,
32851OP_InitFieldIntAPS,
32852OP_InitFieldBool,
32853OP_InitFieldFixedPoint,
32854OP_InitFieldPtr,
32855OP_InitFieldMemberPtr,
32856OP_InitFieldFloat,
32857#endif
32858#ifdef GET_INTERPFN_LIST
32859&Interp_InitFieldSint8,
32860&Interp_InitFieldUint8,
32861&Interp_InitFieldSint16,
32862&Interp_InitFieldUint16,
32863&Interp_InitFieldSint32,
32864&Interp_InitFieldUint32,
32865&Interp_InitFieldSint64,
32866&Interp_InitFieldUint64,
32867&Interp_InitFieldIntAP,
32868&Interp_InitFieldIntAPS,
32869&Interp_InitFieldBool,
32870&Interp_InitFieldFixedPoint,
32871&Interp_InitFieldPtr,
32872&Interp_InitFieldMemberPtr,
32873&Interp_InitFieldFloat,
32874#endif
32875#ifdef GET_INTERPFN_DISPATCHERS
32876PRESERVE_NONE
32877static bool Interp_InitFieldSint8(InterpState &S) {
32878 {
32879 CodePtr OpPC = S.PC;
32880 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32881 if (!InitField<PT_Sint8>(S, OpPC, V0)) return false;
32882 }
32883#if USE_TAILCALLS
32884 MUSTTAIL return InterpNext(S);
32885#else
32886 return true;
32887#endif
32888}
32889PRESERVE_NONE
32890static bool Interp_InitFieldUint8(InterpState &S) {
32891 {
32892 CodePtr OpPC = S.PC;
32893 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32894 if (!InitField<PT_Uint8>(S, OpPC, V0)) return false;
32895 }
32896#if USE_TAILCALLS
32897 MUSTTAIL return InterpNext(S);
32898#else
32899 return true;
32900#endif
32901}
32902PRESERVE_NONE
32903static bool Interp_InitFieldSint16(InterpState &S) {
32904 {
32905 CodePtr OpPC = S.PC;
32906 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32907 if (!InitField<PT_Sint16>(S, OpPC, V0)) return false;
32908 }
32909#if USE_TAILCALLS
32910 MUSTTAIL return InterpNext(S);
32911#else
32912 return true;
32913#endif
32914}
32915PRESERVE_NONE
32916static bool Interp_InitFieldUint16(InterpState &S) {
32917 {
32918 CodePtr OpPC = S.PC;
32919 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32920 if (!InitField<PT_Uint16>(S, OpPC, V0)) return false;
32921 }
32922#if USE_TAILCALLS
32923 MUSTTAIL return InterpNext(S);
32924#else
32925 return true;
32926#endif
32927}
32928PRESERVE_NONE
32929static bool Interp_InitFieldSint32(InterpState &S) {
32930 {
32931 CodePtr OpPC = S.PC;
32932 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32933 if (!InitField<PT_Sint32>(S, OpPC, V0)) return false;
32934 }
32935#if USE_TAILCALLS
32936 MUSTTAIL return InterpNext(S);
32937#else
32938 return true;
32939#endif
32940}
32941PRESERVE_NONE
32942static bool Interp_InitFieldUint32(InterpState &S) {
32943 {
32944 CodePtr OpPC = S.PC;
32945 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32946 if (!InitField<PT_Uint32>(S, OpPC, V0)) return false;
32947 }
32948#if USE_TAILCALLS
32949 MUSTTAIL return InterpNext(S);
32950#else
32951 return true;
32952#endif
32953}
32954PRESERVE_NONE
32955static bool Interp_InitFieldSint64(InterpState &S) {
32956 {
32957 CodePtr OpPC = S.PC;
32958 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32959 if (!InitField<PT_Sint64>(S, OpPC, V0)) return false;
32960 }
32961#if USE_TAILCALLS
32962 MUSTTAIL return InterpNext(S);
32963#else
32964 return true;
32965#endif
32966}
32967PRESERVE_NONE
32968static bool Interp_InitFieldUint64(InterpState &S) {
32969 {
32970 CodePtr OpPC = S.PC;
32971 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32972 if (!InitField<PT_Uint64>(S, OpPC, V0)) return false;
32973 }
32974#if USE_TAILCALLS
32975 MUSTTAIL return InterpNext(S);
32976#else
32977 return true;
32978#endif
32979}
32980PRESERVE_NONE
32981static bool Interp_InitFieldIntAP(InterpState &S) {
32982 {
32983 CodePtr OpPC = S.PC;
32984 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32985 if (!InitField<PT_IntAP>(S, OpPC, V0)) return false;
32986 }
32987#if USE_TAILCALLS
32988 MUSTTAIL return InterpNext(S);
32989#else
32990 return true;
32991#endif
32992}
32993PRESERVE_NONE
32994static bool Interp_InitFieldIntAPS(InterpState &S) {
32995 {
32996 CodePtr OpPC = S.PC;
32997 const auto V0 = ReadArg<uint32_t>(S, S.PC);
32998 if (!InitField<PT_IntAPS>(S, OpPC, V0)) return false;
32999 }
33000#if USE_TAILCALLS
33001 MUSTTAIL return InterpNext(S);
33002#else
33003 return true;
33004#endif
33005}
33006PRESERVE_NONE
33007static bool Interp_InitFieldBool(InterpState &S) {
33008 {
33009 CodePtr OpPC = S.PC;
33010 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33011 if (!InitField<PT_Bool>(S, OpPC, V0)) return false;
33012 }
33013#if USE_TAILCALLS
33014 MUSTTAIL return InterpNext(S);
33015#else
33016 return true;
33017#endif
33018}
33019PRESERVE_NONE
33020static bool Interp_InitFieldFixedPoint(InterpState &S) {
33021 {
33022 CodePtr OpPC = S.PC;
33023 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33024 if (!InitField<PT_FixedPoint>(S, OpPC, V0)) return false;
33025 }
33026#if USE_TAILCALLS
33027 MUSTTAIL return InterpNext(S);
33028#else
33029 return true;
33030#endif
33031}
33032PRESERVE_NONE
33033static bool Interp_InitFieldPtr(InterpState &S) {
33034 {
33035 CodePtr OpPC = S.PC;
33036 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33037 if (!InitField<PT_Ptr>(S, OpPC, V0)) return false;
33038 }
33039#if USE_TAILCALLS
33040 MUSTTAIL return InterpNext(S);
33041#else
33042 return true;
33043#endif
33044}
33045PRESERVE_NONE
33046static bool Interp_InitFieldMemberPtr(InterpState &S) {
33047 {
33048 CodePtr OpPC = S.PC;
33049 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33050 if (!InitField<PT_MemberPtr>(S, OpPC, V0)) return false;
33051 }
33052#if USE_TAILCALLS
33053 MUSTTAIL return InterpNext(S);
33054#else
33055 return true;
33056#endif
33057}
33058PRESERVE_NONE
33059static bool Interp_InitFieldFloat(InterpState &S) {
33060 {
33061 CodePtr OpPC = S.PC;
33062 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33063 if (!InitField<PT_Float>(S, OpPC, V0)) return false;
33064 }
33065#if USE_TAILCALLS
33066 MUSTTAIL return InterpNext(S);
33067#else
33068 return true;
33069#endif
33070}
33071#endif
33072#ifdef GET_DISASM
33073case OP_InitFieldSint8:
33074 Text.Op = PrintName("InitFieldSint8");
33075 Text.Args.push_back(printArg<uint32_t>(PC));
33076 break;
33077case OP_InitFieldUint8:
33078 Text.Op = PrintName("InitFieldUint8");
33079 Text.Args.push_back(printArg<uint32_t>(PC));
33080 break;
33081case OP_InitFieldSint16:
33082 Text.Op = PrintName("InitFieldSint16");
33083 Text.Args.push_back(printArg<uint32_t>(PC));
33084 break;
33085case OP_InitFieldUint16:
33086 Text.Op = PrintName("InitFieldUint16");
33087 Text.Args.push_back(printArg<uint32_t>(PC));
33088 break;
33089case OP_InitFieldSint32:
33090 Text.Op = PrintName("InitFieldSint32");
33091 Text.Args.push_back(printArg<uint32_t>(PC));
33092 break;
33093case OP_InitFieldUint32:
33094 Text.Op = PrintName("InitFieldUint32");
33095 Text.Args.push_back(printArg<uint32_t>(PC));
33096 break;
33097case OP_InitFieldSint64:
33098 Text.Op = PrintName("InitFieldSint64");
33099 Text.Args.push_back(printArg<uint32_t>(PC));
33100 break;
33101case OP_InitFieldUint64:
33102 Text.Op = PrintName("InitFieldUint64");
33103 Text.Args.push_back(printArg<uint32_t>(PC));
33104 break;
33105case OP_InitFieldIntAP:
33106 Text.Op = PrintName("InitFieldIntAP");
33107 Text.Args.push_back(printArg<uint32_t>(PC));
33108 break;
33109case OP_InitFieldIntAPS:
33110 Text.Op = PrintName("InitFieldIntAPS");
33111 Text.Args.push_back(printArg<uint32_t>(PC));
33112 break;
33113case OP_InitFieldBool:
33114 Text.Op = PrintName("InitFieldBool");
33115 Text.Args.push_back(printArg<uint32_t>(PC));
33116 break;
33117case OP_InitFieldFixedPoint:
33118 Text.Op = PrintName("InitFieldFixedPoint");
33119 Text.Args.push_back(printArg<uint32_t>(PC));
33120 break;
33121case OP_InitFieldPtr:
33122 Text.Op = PrintName("InitFieldPtr");
33123 Text.Args.push_back(printArg<uint32_t>(PC));
33124 break;
33125case OP_InitFieldMemberPtr:
33126 Text.Op = PrintName("InitFieldMemberPtr");
33127 Text.Args.push_back(printArg<uint32_t>(PC));
33128 break;
33129case OP_InitFieldFloat:
33130 Text.Op = PrintName("InitFieldFloat");
33131 Text.Args.push_back(printArg<uint32_t>(PC));
33132 break;
33133#endif
33134#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33135bool emitInitFieldSint8( uint32_t , SourceInfo);
33136bool emitInitFieldUint8( uint32_t , SourceInfo);
33137bool emitInitFieldSint16( uint32_t , SourceInfo);
33138bool emitInitFieldUint16( uint32_t , SourceInfo);
33139bool emitInitFieldSint32( uint32_t , SourceInfo);
33140bool emitInitFieldUint32( uint32_t , SourceInfo);
33141bool emitInitFieldSint64( uint32_t , SourceInfo);
33142bool emitInitFieldUint64( uint32_t , SourceInfo);
33143bool emitInitFieldIntAP( uint32_t , SourceInfo);
33144bool emitInitFieldIntAPS( uint32_t , SourceInfo);
33145bool emitInitFieldBool( uint32_t , SourceInfo);
33146bool emitInitFieldFixedPoint( uint32_t , SourceInfo);
33147bool emitInitFieldPtr( uint32_t , SourceInfo);
33148bool emitInitFieldMemberPtr( uint32_t , SourceInfo);
33149bool emitInitFieldFloat( uint32_t , SourceInfo);
33150#endif
33151#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33152[[nodiscard]] bool emitInitField(PrimType, uint32_t, SourceInfo I);
33153#endif
33154#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
33155bool
33156#if defined(GET_EVAL_IMPL)
33157EvalEmitter
33158#else
33159ByteCodeEmitter
33160#endif
33161::emitInitField(PrimType T0, uint32_t A0, SourceInfo I) {
33162 switch (T0) {
33163 case PT_Sint8:
33164 return emitInitFieldSint8(A0, I);
33165 case PT_Uint8:
33166 return emitInitFieldUint8(A0, I);
33167 case PT_Sint16:
33168 return emitInitFieldSint16(A0, I);
33169 case PT_Uint16:
33170 return emitInitFieldUint16(A0, I);
33171 case PT_Sint32:
33172 return emitInitFieldSint32(A0, I);
33173 case PT_Uint32:
33174 return emitInitFieldUint32(A0, I);
33175 case PT_Sint64:
33176 return emitInitFieldSint64(A0, I);
33177 case PT_Uint64:
33178 return emitInitFieldUint64(A0, I);
33179 case PT_IntAP:
33180 return emitInitFieldIntAP(A0, I);
33181 case PT_IntAPS:
33182 return emitInitFieldIntAPS(A0, I);
33183 case PT_Bool:
33184 return emitInitFieldBool(A0, I);
33185 case PT_FixedPoint:
33186 return emitInitFieldFixedPoint(A0, I);
33187 case PT_Ptr:
33188 return emitInitFieldPtr(A0, I);
33189 case PT_MemberPtr:
33190 return emitInitFieldMemberPtr(A0, I);
33191 case PT_Float:
33192 return emitInitFieldFloat(A0, I);
33193 }
33194 llvm_unreachable("invalid enum value");
33195}
33196#endif
33197#ifdef GET_LINK_IMPL
33198bool ByteCodeEmitter::emitInitFieldSint8( uint32_t A0, SourceInfo L) {
33199 return emitOp<uint32_t>(OP_InitFieldSint8, A0, L);
33200}
33201bool ByteCodeEmitter::emitInitFieldUint8( uint32_t A0, SourceInfo L) {
33202 return emitOp<uint32_t>(OP_InitFieldUint8, A0, L);
33203}
33204bool ByteCodeEmitter::emitInitFieldSint16( uint32_t A0, SourceInfo L) {
33205 return emitOp<uint32_t>(OP_InitFieldSint16, A0, L);
33206}
33207bool ByteCodeEmitter::emitInitFieldUint16( uint32_t A0, SourceInfo L) {
33208 return emitOp<uint32_t>(OP_InitFieldUint16, A0, L);
33209}
33210bool ByteCodeEmitter::emitInitFieldSint32( uint32_t A0, SourceInfo L) {
33211 return emitOp<uint32_t>(OP_InitFieldSint32, A0, L);
33212}
33213bool ByteCodeEmitter::emitInitFieldUint32( uint32_t A0, SourceInfo L) {
33214 return emitOp<uint32_t>(OP_InitFieldUint32, A0, L);
33215}
33216bool ByteCodeEmitter::emitInitFieldSint64( uint32_t A0, SourceInfo L) {
33217 return emitOp<uint32_t>(OP_InitFieldSint64, A0, L);
33218}
33219bool ByteCodeEmitter::emitInitFieldUint64( uint32_t A0, SourceInfo L) {
33220 return emitOp<uint32_t>(OP_InitFieldUint64, A0, L);
33221}
33222bool ByteCodeEmitter::emitInitFieldIntAP( uint32_t A0, SourceInfo L) {
33223 return emitOp<uint32_t>(OP_InitFieldIntAP, A0, L);
33224}
33225bool ByteCodeEmitter::emitInitFieldIntAPS( uint32_t A0, SourceInfo L) {
33226 return emitOp<uint32_t>(OP_InitFieldIntAPS, A0, L);
33227}
33228bool ByteCodeEmitter::emitInitFieldBool( uint32_t A0, SourceInfo L) {
33229 return emitOp<uint32_t>(OP_InitFieldBool, A0, L);
33230}
33231bool ByteCodeEmitter::emitInitFieldFixedPoint( uint32_t A0, SourceInfo L) {
33232 return emitOp<uint32_t>(OP_InitFieldFixedPoint, A0, L);
33233}
33234bool ByteCodeEmitter::emitInitFieldPtr( uint32_t A0, SourceInfo L) {
33235 return emitOp<uint32_t>(OP_InitFieldPtr, A0, L);
33236}
33237bool ByteCodeEmitter::emitInitFieldMemberPtr( uint32_t A0, SourceInfo L) {
33238 return emitOp<uint32_t>(OP_InitFieldMemberPtr, A0, L);
33239}
33240bool ByteCodeEmitter::emitInitFieldFloat( uint32_t A0, SourceInfo L) {
33241 return emitOp<uint32_t>(OP_InitFieldFloat, A0, L);
33242}
33243#endif
33244#ifdef GET_EVAL_IMPL
33245bool EvalEmitter::emitInitFieldSint8( uint32_t A0, SourceInfo L) {
33246 if (!isActive()) return true;
33247 CurrentSource = L;
33248 return InitField<PT_Sint8>(S, CodePtr(), A0);
33249}
33250bool EvalEmitter::emitInitFieldUint8( uint32_t A0, SourceInfo L) {
33251 if (!isActive()) return true;
33252 CurrentSource = L;
33253 return InitField<PT_Uint8>(S, CodePtr(), A0);
33254}
33255bool EvalEmitter::emitInitFieldSint16( uint32_t A0, SourceInfo L) {
33256 if (!isActive()) return true;
33257 CurrentSource = L;
33258 return InitField<PT_Sint16>(S, CodePtr(), A0);
33259}
33260bool EvalEmitter::emitInitFieldUint16( uint32_t A0, SourceInfo L) {
33261 if (!isActive()) return true;
33262 CurrentSource = L;
33263 return InitField<PT_Uint16>(S, CodePtr(), A0);
33264}
33265bool EvalEmitter::emitInitFieldSint32( uint32_t A0, SourceInfo L) {
33266 if (!isActive()) return true;
33267 CurrentSource = L;
33268 return InitField<PT_Sint32>(S, CodePtr(), A0);
33269}
33270bool EvalEmitter::emitInitFieldUint32( uint32_t A0, SourceInfo L) {
33271 if (!isActive()) return true;
33272 CurrentSource = L;
33273 return InitField<PT_Uint32>(S, CodePtr(), A0);
33274}
33275bool EvalEmitter::emitInitFieldSint64( uint32_t A0, SourceInfo L) {
33276 if (!isActive()) return true;
33277 CurrentSource = L;
33278 return InitField<PT_Sint64>(S, CodePtr(), A0);
33279}
33280bool EvalEmitter::emitInitFieldUint64( uint32_t A0, SourceInfo L) {
33281 if (!isActive()) return true;
33282 CurrentSource = L;
33283 return InitField<PT_Uint64>(S, CodePtr(), A0);
33284}
33285bool EvalEmitter::emitInitFieldIntAP( uint32_t A0, SourceInfo L) {
33286 if (!isActive()) return true;
33287 CurrentSource = L;
33288 return InitField<PT_IntAP>(S, CodePtr(), A0);
33289}
33290bool EvalEmitter::emitInitFieldIntAPS( uint32_t A0, SourceInfo L) {
33291 if (!isActive()) return true;
33292 CurrentSource = L;
33293 return InitField<PT_IntAPS>(S, CodePtr(), A0);
33294}
33295bool EvalEmitter::emitInitFieldBool( uint32_t A0, SourceInfo L) {
33296 if (!isActive()) return true;
33297 CurrentSource = L;
33298 return InitField<PT_Bool>(S, CodePtr(), A0);
33299}
33300bool EvalEmitter::emitInitFieldFixedPoint( uint32_t A0, SourceInfo L) {
33301 if (!isActive()) return true;
33302 CurrentSource = L;
33303 return InitField<PT_FixedPoint>(S, CodePtr(), A0);
33304}
33305bool EvalEmitter::emitInitFieldPtr( uint32_t A0, SourceInfo L) {
33306 if (!isActive()) return true;
33307 CurrentSource = L;
33308 return InitField<PT_Ptr>(S, CodePtr(), A0);
33309}
33310bool EvalEmitter::emitInitFieldMemberPtr( uint32_t A0, SourceInfo L) {
33311 if (!isActive()) return true;
33312 CurrentSource = L;
33313 return InitField<PT_MemberPtr>(S, CodePtr(), A0);
33314}
33315bool EvalEmitter::emitInitFieldFloat( uint32_t A0, SourceInfo L) {
33316 if (!isActive()) return true;
33317 CurrentSource = L;
33318 return InitField<PT_Float>(S, CodePtr(), A0);
33319}
33320#endif
33321#ifdef GET_OPCODE_NAMES
33322OP_InitFieldActivateSint8,
33323OP_InitFieldActivateUint8,
33324OP_InitFieldActivateSint16,
33325OP_InitFieldActivateUint16,
33326OP_InitFieldActivateSint32,
33327OP_InitFieldActivateUint32,
33328OP_InitFieldActivateSint64,
33329OP_InitFieldActivateUint64,
33330OP_InitFieldActivateIntAP,
33331OP_InitFieldActivateIntAPS,
33332OP_InitFieldActivateBool,
33333OP_InitFieldActivateFixedPoint,
33334OP_InitFieldActivatePtr,
33335OP_InitFieldActivateMemberPtr,
33336OP_InitFieldActivateFloat,
33337#endif
33338#ifdef GET_INTERPFN_LIST
33339&Interp_InitFieldActivateSint8,
33340&Interp_InitFieldActivateUint8,
33341&Interp_InitFieldActivateSint16,
33342&Interp_InitFieldActivateUint16,
33343&Interp_InitFieldActivateSint32,
33344&Interp_InitFieldActivateUint32,
33345&Interp_InitFieldActivateSint64,
33346&Interp_InitFieldActivateUint64,
33347&Interp_InitFieldActivateIntAP,
33348&Interp_InitFieldActivateIntAPS,
33349&Interp_InitFieldActivateBool,
33350&Interp_InitFieldActivateFixedPoint,
33351&Interp_InitFieldActivatePtr,
33352&Interp_InitFieldActivateMemberPtr,
33353&Interp_InitFieldActivateFloat,
33354#endif
33355#ifdef GET_INTERPFN_DISPATCHERS
33356PRESERVE_NONE
33357static bool Interp_InitFieldActivateSint8(InterpState &S) {
33358 {
33359 CodePtr OpPC = S.PC;
33360 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33361 if (!InitFieldActivate<PT_Sint8>(S, OpPC, V0)) return false;
33362 }
33363#if USE_TAILCALLS
33364 MUSTTAIL return InterpNext(S);
33365#else
33366 return true;
33367#endif
33368}
33369PRESERVE_NONE
33370static bool Interp_InitFieldActivateUint8(InterpState &S) {
33371 {
33372 CodePtr OpPC = S.PC;
33373 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33374 if (!InitFieldActivate<PT_Uint8>(S, OpPC, V0)) return false;
33375 }
33376#if USE_TAILCALLS
33377 MUSTTAIL return InterpNext(S);
33378#else
33379 return true;
33380#endif
33381}
33382PRESERVE_NONE
33383static bool Interp_InitFieldActivateSint16(InterpState &S) {
33384 {
33385 CodePtr OpPC = S.PC;
33386 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33387 if (!InitFieldActivate<PT_Sint16>(S, OpPC, V0)) return false;
33388 }
33389#if USE_TAILCALLS
33390 MUSTTAIL return InterpNext(S);
33391#else
33392 return true;
33393#endif
33394}
33395PRESERVE_NONE
33396static bool Interp_InitFieldActivateUint16(InterpState &S) {
33397 {
33398 CodePtr OpPC = S.PC;
33399 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33400 if (!InitFieldActivate<PT_Uint16>(S, OpPC, V0)) return false;
33401 }
33402#if USE_TAILCALLS
33403 MUSTTAIL return InterpNext(S);
33404#else
33405 return true;
33406#endif
33407}
33408PRESERVE_NONE
33409static bool Interp_InitFieldActivateSint32(InterpState &S) {
33410 {
33411 CodePtr OpPC = S.PC;
33412 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33413 if (!InitFieldActivate<PT_Sint32>(S, OpPC, V0)) return false;
33414 }
33415#if USE_TAILCALLS
33416 MUSTTAIL return InterpNext(S);
33417#else
33418 return true;
33419#endif
33420}
33421PRESERVE_NONE
33422static bool Interp_InitFieldActivateUint32(InterpState &S) {
33423 {
33424 CodePtr OpPC = S.PC;
33425 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33426 if (!InitFieldActivate<PT_Uint32>(S, OpPC, V0)) return false;
33427 }
33428#if USE_TAILCALLS
33429 MUSTTAIL return InterpNext(S);
33430#else
33431 return true;
33432#endif
33433}
33434PRESERVE_NONE
33435static bool Interp_InitFieldActivateSint64(InterpState &S) {
33436 {
33437 CodePtr OpPC = S.PC;
33438 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33439 if (!InitFieldActivate<PT_Sint64>(S, OpPC, V0)) return false;
33440 }
33441#if USE_TAILCALLS
33442 MUSTTAIL return InterpNext(S);
33443#else
33444 return true;
33445#endif
33446}
33447PRESERVE_NONE
33448static bool Interp_InitFieldActivateUint64(InterpState &S) {
33449 {
33450 CodePtr OpPC = S.PC;
33451 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33452 if (!InitFieldActivate<PT_Uint64>(S, OpPC, V0)) return false;
33453 }
33454#if USE_TAILCALLS
33455 MUSTTAIL return InterpNext(S);
33456#else
33457 return true;
33458#endif
33459}
33460PRESERVE_NONE
33461static bool Interp_InitFieldActivateIntAP(InterpState &S) {
33462 {
33463 CodePtr OpPC = S.PC;
33464 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33465 if (!InitFieldActivate<PT_IntAP>(S, OpPC, V0)) return false;
33466 }
33467#if USE_TAILCALLS
33468 MUSTTAIL return InterpNext(S);
33469#else
33470 return true;
33471#endif
33472}
33473PRESERVE_NONE
33474static bool Interp_InitFieldActivateIntAPS(InterpState &S) {
33475 {
33476 CodePtr OpPC = S.PC;
33477 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33478 if (!InitFieldActivate<PT_IntAPS>(S, OpPC, V0)) return false;
33479 }
33480#if USE_TAILCALLS
33481 MUSTTAIL return InterpNext(S);
33482#else
33483 return true;
33484#endif
33485}
33486PRESERVE_NONE
33487static bool Interp_InitFieldActivateBool(InterpState &S) {
33488 {
33489 CodePtr OpPC = S.PC;
33490 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33491 if (!InitFieldActivate<PT_Bool>(S, OpPC, V0)) return false;
33492 }
33493#if USE_TAILCALLS
33494 MUSTTAIL return InterpNext(S);
33495#else
33496 return true;
33497#endif
33498}
33499PRESERVE_NONE
33500static bool Interp_InitFieldActivateFixedPoint(InterpState &S) {
33501 {
33502 CodePtr OpPC = S.PC;
33503 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33504 if (!InitFieldActivate<PT_FixedPoint>(S, OpPC, V0)) return false;
33505 }
33506#if USE_TAILCALLS
33507 MUSTTAIL return InterpNext(S);
33508#else
33509 return true;
33510#endif
33511}
33512PRESERVE_NONE
33513static bool Interp_InitFieldActivatePtr(InterpState &S) {
33514 {
33515 CodePtr OpPC = S.PC;
33516 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33517 if (!InitFieldActivate<PT_Ptr>(S, OpPC, V0)) return false;
33518 }
33519#if USE_TAILCALLS
33520 MUSTTAIL return InterpNext(S);
33521#else
33522 return true;
33523#endif
33524}
33525PRESERVE_NONE
33526static bool Interp_InitFieldActivateMemberPtr(InterpState &S) {
33527 {
33528 CodePtr OpPC = S.PC;
33529 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33530 if (!InitFieldActivate<PT_MemberPtr>(S, OpPC, V0)) return false;
33531 }
33532#if USE_TAILCALLS
33533 MUSTTAIL return InterpNext(S);
33534#else
33535 return true;
33536#endif
33537}
33538PRESERVE_NONE
33539static bool Interp_InitFieldActivateFloat(InterpState &S) {
33540 {
33541 CodePtr OpPC = S.PC;
33542 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33543 if (!InitFieldActivate<PT_Float>(S, OpPC, V0)) return false;
33544 }
33545#if USE_TAILCALLS
33546 MUSTTAIL return InterpNext(S);
33547#else
33548 return true;
33549#endif
33550}
33551#endif
33552#ifdef GET_DISASM
33553case OP_InitFieldActivateSint8:
33554 Text.Op = PrintName("InitFieldActivateSint8");
33555 Text.Args.push_back(printArg<uint32_t>(PC));
33556 break;
33557case OP_InitFieldActivateUint8:
33558 Text.Op = PrintName("InitFieldActivateUint8");
33559 Text.Args.push_back(printArg<uint32_t>(PC));
33560 break;
33561case OP_InitFieldActivateSint16:
33562 Text.Op = PrintName("InitFieldActivateSint16");
33563 Text.Args.push_back(printArg<uint32_t>(PC));
33564 break;
33565case OP_InitFieldActivateUint16:
33566 Text.Op = PrintName("InitFieldActivateUint16");
33567 Text.Args.push_back(printArg<uint32_t>(PC));
33568 break;
33569case OP_InitFieldActivateSint32:
33570 Text.Op = PrintName("InitFieldActivateSint32");
33571 Text.Args.push_back(printArg<uint32_t>(PC));
33572 break;
33573case OP_InitFieldActivateUint32:
33574 Text.Op = PrintName("InitFieldActivateUint32");
33575 Text.Args.push_back(printArg<uint32_t>(PC));
33576 break;
33577case OP_InitFieldActivateSint64:
33578 Text.Op = PrintName("InitFieldActivateSint64");
33579 Text.Args.push_back(printArg<uint32_t>(PC));
33580 break;
33581case OP_InitFieldActivateUint64:
33582 Text.Op = PrintName("InitFieldActivateUint64");
33583 Text.Args.push_back(printArg<uint32_t>(PC));
33584 break;
33585case OP_InitFieldActivateIntAP:
33586 Text.Op = PrintName("InitFieldActivateIntAP");
33587 Text.Args.push_back(printArg<uint32_t>(PC));
33588 break;
33589case OP_InitFieldActivateIntAPS:
33590 Text.Op = PrintName("InitFieldActivateIntAPS");
33591 Text.Args.push_back(printArg<uint32_t>(PC));
33592 break;
33593case OP_InitFieldActivateBool:
33594 Text.Op = PrintName("InitFieldActivateBool");
33595 Text.Args.push_back(printArg<uint32_t>(PC));
33596 break;
33597case OP_InitFieldActivateFixedPoint:
33598 Text.Op = PrintName("InitFieldActivateFixedPoint");
33599 Text.Args.push_back(printArg<uint32_t>(PC));
33600 break;
33601case OP_InitFieldActivatePtr:
33602 Text.Op = PrintName("InitFieldActivatePtr");
33603 Text.Args.push_back(printArg<uint32_t>(PC));
33604 break;
33605case OP_InitFieldActivateMemberPtr:
33606 Text.Op = PrintName("InitFieldActivateMemberPtr");
33607 Text.Args.push_back(printArg<uint32_t>(PC));
33608 break;
33609case OP_InitFieldActivateFloat:
33610 Text.Op = PrintName("InitFieldActivateFloat");
33611 Text.Args.push_back(printArg<uint32_t>(PC));
33612 break;
33613#endif
33614#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33615bool emitInitFieldActivateSint8( uint32_t , SourceInfo);
33616bool emitInitFieldActivateUint8( uint32_t , SourceInfo);
33617bool emitInitFieldActivateSint16( uint32_t , SourceInfo);
33618bool emitInitFieldActivateUint16( uint32_t , SourceInfo);
33619bool emitInitFieldActivateSint32( uint32_t , SourceInfo);
33620bool emitInitFieldActivateUint32( uint32_t , SourceInfo);
33621bool emitInitFieldActivateSint64( uint32_t , SourceInfo);
33622bool emitInitFieldActivateUint64( uint32_t , SourceInfo);
33623bool emitInitFieldActivateIntAP( uint32_t , SourceInfo);
33624bool emitInitFieldActivateIntAPS( uint32_t , SourceInfo);
33625bool emitInitFieldActivateBool( uint32_t , SourceInfo);
33626bool emitInitFieldActivateFixedPoint( uint32_t , SourceInfo);
33627bool emitInitFieldActivatePtr( uint32_t , SourceInfo);
33628bool emitInitFieldActivateMemberPtr( uint32_t , SourceInfo);
33629bool emitInitFieldActivateFloat( uint32_t , SourceInfo);
33630#endif
33631#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33632[[nodiscard]] bool emitInitFieldActivate(PrimType, uint32_t, SourceInfo I);
33633#endif
33634#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
33635bool
33636#if defined(GET_EVAL_IMPL)
33637EvalEmitter
33638#else
33639ByteCodeEmitter
33640#endif
33641::emitInitFieldActivate(PrimType T0, uint32_t A0, SourceInfo I) {
33642 switch (T0) {
33643 case PT_Sint8:
33644 return emitInitFieldActivateSint8(A0, I);
33645 case PT_Uint8:
33646 return emitInitFieldActivateUint8(A0, I);
33647 case PT_Sint16:
33648 return emitInitFieldActivateSint16(A0, I);
33649 case PT_Uint16:
33650 return emitInitFieldActivateUint16(A0, I);
33651 case PT_Sint32:
33652 return emitInitFieldActivateSint32(A0, I);
33653 case PT_Uint32:
33654 return emitInitFieldActivateUint32(A0, I);
33655 case PT_Sint64:
33656 return emitInitFieldActivateSint64(A0, I);
33657 case PT_Uint64:
33658 return emitInitFieldActivateUint64(A0, I);
33659 case PT_IntAP:
33660 return emitInitFieldActivateIntAP(A0, I);
33661 case PT_IntAPS:
33662 return emitInitFieldActivateIntAPS(A0, I);
33663 case PT_Bool:
33664 return emitInitFieldActivateBool(A0, I);
33665 case PT_FixedPoint:
33666 return emitInitFieldActivateFixedPoint(A0, I);
33667 case PT_Ptr:
33668 return emitInitFieldActivatePtr(A0, I);
33669 case PT_MemberPtr:
33670 return emitInitFieldActivateMemberPtr(A0, I);
33671 case PT_Float:
33672 return emitInitFieldActivateFloat(A0, I);
33673 }
33674 llvm_unreachable("invalid enum value");
33675}
33676#endif
33677#ifdef GET_LINK_IMPL
33678bool ByteCodeEmitter::emitInitFieldActivateSint8( uint32_t A0, SourceInfo L) {
33679 return emitOp<uint32_t>(OP_InitFieldActivateSint8, A0, L);
33680}
33681bool ByteCodeEmitter::emitInitFieldActivateUint8( uint32_t A0, SourceInfo L) {
33682 return emitOp<uint32_t>(OP_InitFieldActivateUint8, A0, L);
33683}
33684bool ByteCodeEmitter::emitInitFieldActivateSint16( uint32_t A0, SourceInfo L) {
33685 return emitOp<uint32_t>(OP_InitFieldActivateSint16, A0, L);
33686}
33687bool ByteCodeEmitter::emitInitFieldActivateUint16( uint32_t A0, SourceInfo L) {
33688 return emitOp<uint32_t>(OP_InitFieldActivateUint16, A0, L);
33689}
33690bool ByteCodeEmitter::emitInitFieldActivateSint32( uint32_t A0, SourceInfo L) {
33691 return emitOp<uint32_t>(OP_InitFieldActivateSint32, A0, L);
33692}
33693bool ByteCodeEmitter::emitInitFieldActivateUint32( uint32_t A0, SourceInfo L) {
33694 return emitOp<uint32_t>(OP_InitFieldActivateUint32, A0, L);
33695}
33696bool ByteCodeEmitter::emitInitFieldActivateSint64( uint32_t A0, SourceInfo L) {
33697 return emitOp<uint32_t>(OP_InitFieldActivateSint64, A0, L);
33698}
33699bool ByteCodeEmitter::emitInitFieldActivateUint64( uint32_t A0, SourceInfo L) {
33700 return emitOp<uint32_t>(OP_InitFieldActivateUint64, A0, L);
33701}
33702bool ByteCodeEmitter::emitInitFieldActivateIntAP( uint32_t A0, SourceInfo L) {
33703 return emitOp<uint32_t>(OP_InitFieldActivateIntAP, A0, L);
33704}
33705bool ByteCodeEmitter::emitInitFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
33706 return emitOp<uint32_t>(OP_InitFieldActivateIntAPS, A0, L);
33707}
33708bool ByteCodeEmitter::emitInitFieldActivateBool( uint32_t A0, SourceInfo L) {
33709 return emitOp<uint32_t>(OP_InitFieldActivateBool, A0, L);
33710}
33711bool ByteCodeEmitter::emitInitFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
33712 return emitOp<uint32_t>(OP_InitFieldActivateFixedPoint, A0, L);
33713}
33714bool ByteCodeEmitter::emitInitFieldActivatePtr( uint32_t A0, SourceInfo L) {
33715 return emitOp<uint32_t>(OP_InitFieldActivatePtr, A0, L);
33716}
33717bool ByteCodeEmitter::emitInitFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
33718 return emitOp<uint32_t>(OP_InitFieldActivateMemberPtr, A0, L);
33719}
33720bool ByteCodeEmitter::emitInitFieldActivateFloat( uint32_t A0, SourceInfo L) {
33721 return emitOp<uint32_t>(OP_InitFieldActivateFloat, A0, L);
33722}
33723#endif
33724#ifdef GET_EVAL_IMPL
33725bool EvalEmitter::emitInitFieldActivateSint8( uint32_t A0, SourceInfo L) {
33726 if (!isActive()) return true;
33727 CurrentSource = L;
33728 return InitFieldActivate<PT_Sint8>(S, CodePtr(), A0);
33729}
33730bool EvalEmitter::emitInitFieldActivateUint8( uint32_t A0, SourceInfo L) {
33731 if (!isActive()) return true;
33732 CurrentSource = L;
33733 return InitFieldActivate<PT_Uint8>(S, CodePtr(), A0);
33734}
33735bool EvalEmitter::emitInitFieldActivateSint16( uint32_t A0, SourceInfo L) {
33736 if (!isActive()) return true;
33737 CurrentSource = L;
33738 return InitFieldActivate<PT_Sint16>(S, CodePtr(), A0);
33739}
33740bool EvalEmitter::emitInitFieldActivateUint16( uint32_t A0, SourceInfo L) {
33741 if (!isActive()) return true;
33742 CurrentSource = L;
33743 return InitFieldActivate<PT_Uint16>(S, CodePtr(), A0);
33744}
33745bool EvalEmitter::emitInitFieldActivateSint32( uint32_t A0, SourceInfo L) {
33746 if (!isActive()) return true;
33747 CurrentSource = L;
33748 return InitFieldActivate<PT_Sint32>(S, CodePtr(), A0);
33749}
33750bool EvalEmitter::emitInitFieldActivateUint32( uint32_t A0, SourceInfo L) {
33751 if (!isActive()) return true;
33752 CurrentSource = L;
33753 return InitFieldActivate<PT_Uint32>(S, CodePtr(), A0);
33754}
33755bool EvalEmitter::emitInitFieldActivateSint64( uint32_t A0, SourceInfo L) {
33756 if (!isActive()) return true;
33757 CurrentSource = L;
33758 return InitFieldActivate<PT_Sint64>(S, CodePtr(), A0);
33759}
33760bool EvalEmitter::emitInitFieldActivateUint64( uint32_t A0, SourceInfo L) {
33761 if (!isActive()) return true;
33762 CurrentSource = L;
33763 return InitFieldActivate<PT_Uint64>(S, CodePtr(), A0);
33764}
33765bool EvalEmitter::emitInitFieldActivateIntAP( uint32_t A0, SourceInfo L) {
33766 if (!isActive()) return true;
33767 CurrentSource = L;
33768 return InitFieldActivate<PT_IntAP>(S, CodePtr(), A0);
33769}
33770bool EvalEmitter::emitInitFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
33771 if (!isActive()) return true;
33772 CurrentSource = L;
33773 return InitFieldActivate<PT_IntAPS>(S, CodePtr(), A0);
33774}
33775bool EvalEmitter::emitInitFieldActivateBool( uint32_t A0, SourceInfo L) {
33776 if (!isActive()) return true;
33777 CurrentSource = L;
33778 return InitFieldActivate<PT_Bool>(S, CodePtr(), A0);
33779}
33780bool EvalEmitter::emitInitFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
33781 if (!isActive()) return true;
33782 CurrentSource = L;
33783 return InitFieldActivate<PT_FixedPoint>(S, CodePtr(), A0);
33784}
33785bool EvalEmitter::emitInitFieldActivatePtr( uint32_t A0, SourceInfo L) {
33786 if (!isActive()) return true;
33787 CurrentSource = L;
33788 return InitFieldActivate<PT_Ptr>(S, CodePtr(), A0);
33789}
33790bool EvalEmitter::emitInitFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
33791 if (!isActive()) return true;
33792 CurrentSource = L;
33793 return InitFieldActivate<PT_MemberPtr>(S, CodePtr(), A0);
33794}
33795bool EvalEmitter::emitInitFieldActivateFloat( uint32_t A0, SourceInfo L) {
33796 if (!isActive()) return true;
33797 CurrentSource = L;
33798 return InitFieldActivate<PT_Float>(S, CodePtr(), A0);
33799}
33800#endif
33801#ifdef GET_OPCODE_NAMES
33802OP_InitGlobalSint8,
33803OP_InitGlobalUint8,
33804OP_InitGlobalSint16,
33805OP_InitGlobalUint16,
33806OP_InitGlobalSint32,
33807OP_InitGlobalUint32,
33808OP_InitGlobalSint64,
33809OP_InitGlobalUint64,
33810OP_InitGlobalIntAP,
33811OP_InitGlobalIntAPS,
33812OP_InitGlobalBool,
33813OP_InitGlobalFixedPoint,
33814OP_InitGlobalPtr,
33815OP_InitGlobalMemberPtr,
33816OP_InitGlobalFloat,
33817#endif
33818#ifdef GET_INTERPFN_LIST
33819&Interp_InitGlobalSint8,
33820&Interp_InitGlobalUint8,
33821&Interp_InitGlobalSint16,
33822&Interp_InitGlobalUint16,
33823&Interp_InitGlobalSint32,
33824&Interp_InitGlobalUint32,
33825&Interp_InitGlobalSint64,
33826&Interp_InitGlobalUint64,
33827&Interp_InitGlobalIntAP,
33828&Interp_InitGlobalIntAPS,
33829&Interp_InitGlobalBool,
33830&Interp_InitGlobalFixedPoint,
33831&Interp_InitGlobalPtr,
33832&Interp_InitGlobalMemberPtr,
33833&Interp_InitGlobalFloat,
33834#endif
33835#ifdef GET_INTERPFN_DISPATCHERS
33836PRESERVE_NONE
33837static bool Interp_InitGlobalSint8(InterpState &S) {
33838 {
33839 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33840 InitGlobal<PT_Sint8>(S, V0);
33841 }
33842#if USE_TAILCALLS
33843 MUSTTAIL return InterpNext(S);
33844#else
33845 return true;
33846#endif
33847}
33848PRESERVE_NONE
33849static bool Interp_InitGlobalUint8(InterpState &S) {
33850 {
33851 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33852 InitGlobal<PT_Uint8>(S, V0);
33853 }
33854#if USE_TAILCALLS
33855 MUSTTAIL return InterpNext(S);
33856#else
33857 return true;
33858#endif
33859}
33860PRESERVE_NONE
33861static bool Interp_InitGlobalSint16(InterpState &S) {
33862 {
33863 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33864 InitGlobal<PT_Sint16>(S, V0);
33865 }
33866#if USE_TAILCALLS
33867 MUSTTAIL return InterpNext(S);
33868#else
33869 return true;
33870#endif
33871}
33872PRESERVE_NONE
33873static bool Interp_InitGlobalUint16(InterpState &S) {
33874 {
33875 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33876 InitGlobal<PT_Uint16>(S, V0);
33877 }
33878#if USE_TAILCALLS
33879 MUSTTAIL return InterpNext(S);
33880#else
33881 return true;
33882#endif
33883}
33884PRESERVE_NONE
33885static bool Interp_InitGlobalSint32(InterpState &S) {
33886 {
33887 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33888 InitGlobal<PT_Sint32>(S, V0);
33889 }
33890#if USE_TAILCALLS
33891 MUSTTAIL return InterpNext(S);
33892#else
33893 return true;
33894#endif
33895}
33896PRESERVE_NONE
33897static bool Interp_InitGlobalUint32(InterpState &S) {
33898 {
33899 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33900 InitGlobal<PT_Uint32>(S, V0);
33901 }
33902#if USE_TAILCALLS
33903 MUSTTAIL return InterpNext(S);
33904#else
33905 return true;
33906#endif
33907}
33908PRESERVE_NONE
33909static bool Interp_InitGlobalSint64(InterpState &S) {
33910 {
33911 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33912 InitGlobal<PT_Sint64>(S, V0);
33913 }
33914#if USE_TAILCALLS
33915 MUSTTAIL return InterpNext(S);
33916#else
33917 return true;
33918#endif
33919}
33920PRESERVE_NONE
33921static bool Interp_InitGlobalUint64(InterpState &S) {
33922 {
33923 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33924 InitGlobal<PT_Uint64>(S, V0);
33925 }
33926#if USE_TAILCALLS
33927 MUSTTAIL return InterpNext(S);
33928#else
33929 return true;
33930#endif
33931}
33932PRESERVE_NONE
33933static bool Interp_InitGlobalIntAP(InterpState &S) {
33934 {
33935 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33936 InitGlobal<PT_IntAP>(S, V0);
33937 }
33938#if USE_TAILCALLS
33939 MUSTTAIL return InterpNext(S);
33940#else
33941 return true;
33942#endif
33943}
33944PRESERVE_NONE
33945static bool Interp_InitGlobalIntAPS(InterpState &S) {
33946 {
33947 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33948 InitGlobal<PT_IntAPS>(S, V0);
33949 }
33950#if USE_TAILCALLS
33951 MUSTTAIL return InterpNext(S);
33952#else
33953 return true;
33954#endif
33955}
33956PRESERVE_NONE
33957static bool Interp_InitGlobalBool(InterpState &S) {
33958 {
33959 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33960 InitGlobal<PT_Bool>(S, V0);
33961 }
33962#if USE_TAILCALLS
33963 MUSTTAIL return InterpNext(S);
33964#else
33965 return true;
33966#endif
33967}
33968PRESERVE_NONE
33969static bool Interp_InitGlobalFixedPoint(InterpState &S) {
33970 {
33971 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33972 InitGlobal<PT_FixedPoint>(S, V0);
33973 }
33974#if USE_TAILCALLS
33975 MUSTTAIL return InterpNext(S);
33976#else
33977 return true;
33978#endif
33979}
33980PRESERVE_NONE
33981static bool Interp_InitGlobalPtr(InterpState &S) {
33982 {
33983 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33984 InitGlobal<PT_Ptr>(S, V0);
33985 }
33986#if USE_TAILCALLS
33987 MUSTTAIL return InterpNext(S);
33988#else
33989 return true;
33990#endif
33991}
33992PRESERVE_NONE
33993static bool Interp_InitGlobalMemberPtr(InterpState &S) {
33994 {
33995 const auto V0 = ReadArg<uint32_t>(S, S.PC);
33996 InitGlobal<PT_MemberPtr>(S, V0);
33997 }
33998#if USE_TAILCALLS
33999 MUSTTAIL return InterpNext(S);
34000#else
34001 return true;
34002#endif
34003}
34004PRESERVE_NONE
34005static bool Interp_InitGlobalFloat(InterpState &S) {
34006 {
34007 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34008 InitGlobal<PT_Float>(S, V0);
34009 }
34010#if USE_TAILCALLS
34011 MUSTTAIL return InterpNext(S);
34012#else
34013 return true;
34014#endif
34015}
34016#endif
34017#ifdef GET_DISASM
34018case OP_InitGlobalSint8:
34019 Text.Op = PrintName("InitGlobalSint8");
34020 Text.Args.push_back(printArg<uint32_t>(PC));
34021 break;
34022case OP_InitGlobalUint8:
34023 Text.Op = PrintName("InitGlobalUint8");
34024 Text.Args.push_back(printArg<uint32_t>(PC));
34025 break;
34026case OP_InitGlobalSint16:
34027 Text.Op = PrintName("InitGlobalSint16");
34028 Text.Args.push_back(printArg<uint32_t>(PC));
34029 break;
34030case OP_InitGlobalUint16:
34031 Text.Op = PrintName("InitGlobalUint16");
34032 Text.Args.push_back(printArg<uint32_t>(PC));
34033 break;
34034case OP_InitGlobalSint32:
34035 Text.Op = PrintName("InitGlobalSint32");
34036 Text.Args.push_back(printArg<uint32_t>(PC));
34037 break;
34038case OP_InitGlobalUint32:
34039 Text.Op = PrintName("InitGlobalUint32");
34040 Text.Args.push_back(printArg<uint32_t>(PC));
34041 break;
34042case OP_InitGlobalSint64:
34043 Text.Op = PrintName("InitGlobalSint64");
34044 Text.Args.push_back(printArg<uint32_t>(PC));
34045 break;
34046case OP_InitGlobalUint64:
34047 Text.Op = PrintName("InitGlobalUint64");
34048 Text.Args.push_back(printArg<uint32_t>(PC));
34049 break;
34050case OP_InitGlobalIntAP:
34051 Text.Op = PrintName("InitGlobalIntAP");
34052 Text.Args.push_back(printArg<uint32_t>(PC));
34053 break;
34054case OP_InitGlobalIntAPS:
34055 Text.Op = PrintName("InitGlobalIntAPS");
34056 Text.Args.push_back(printArg<uint32_t>(PC));
34057 break;
34058case OP_InitGlobalBool:
34059 Text.Op = PrintName("InitGlobalBool");
34060 Text.Args.push_back(printArg<uint32_t>(PC));
34061 break;
34062case OP_InitGlobalFixedPoint:
34063 Text.Op = PrintName("InitGlobalFixedPoint");
34064 Text.Args.push_back(printArg<uint32_t>(PC));
34065 break;
34066case OP_InitGlobalPtr:
34067 Text.Op = PrintName("InitGlobalPtr");
34068 Text.Args.push_back(printArg<uint32_t>(PC));
34069 break;
34070case OP_InitGlobalMemberPtr:
34071 Text.Op = PrintName("InitGlobalMemberPtr");
34072 Text.Args.push_back(printArg<uint32_t>(PC));
34073 break;
34074case OP_InitGlobalFloat:
34075 Text.Op = PrintName("InitGlobalFloat");
34076 Text.Args.push_back(printArg<uint32_t>(PC));
34077 break;
34078#endif
34079#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34080bool emitInitGlobalSint8( uint32_t , SourceInfo);
34081bool emitInitGlobalUint8( uint32_t , SourceInfo);
34082bool emitInitGlobalSint16( uint32_t , SourceInfo);
34083bool emitInitGlobalUint16( uint32_t , SourceInfo);
34084bool emitInitGlobalSint32( uint32_t , SourceInfo);
34085bool emitInitGlobalUint32( uint32_t , SourceInfo);
34086bool emitInitGlobalSint64( uint32_t , SourceInfo);
34087bool emitInitGlobalUint64( uint32_t , SourceInfo);
34088bool emitInitGlobalIntAP( uint32_t , SourceInfo);
34089bool emitInitGlobalIntAPS( uint32_t , SourceInfo);
34090bool emitInitGlobalBool( uint32_t , SourceInfo);
34091bool emitInitGlobalFixedPoint( uint32_t , SourceInfo);
34092bool emitInitGlobalPtr( uint32_t , SourceInfo);
34093bool emitInitGlobalMemberPtr( uint32_t , SourceInfo);
34094bool emitInitGlobalFloat( uint32_t , SourceInfo);
34095#endif
34096#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34097[[nodiscard]] bool emitInitGlobal(PrimType, uint32_t, SourceInfo I);
34098#endif
34099#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
34100bool
34101#if defined(GET_EVAL_IMPL)
34102EvalEmitter
34103#else
34104ByteCodeEmitter
34105#endif
34106::emitInitGlobal(PrimType T0, uint32_t A0, SourceInfo I) {
34107 switch (T0) {
34108 case PT_Sint8:
34109 return emitInitGlobalSint8(A0, I);
34110 case PT_Uint8:
34111 return emitInitGlobalUint8(A0, I);
34112 case PT_Sint16:
34113 return emitInitGlobalSint16(A0, I);
34114 case PT_Uint16:
34115 return emitInitGlobalUint16(A0, I);
34116 case PT_Sint32:
34117 return emitInitGlobalSint32(A0, I);
34118 case PT_Uint32:
34119 return emitInitGlobalUint32(A0, I);
34120 case PT_Sint64:
34121 return emitInitGlobalSint64(A0, I);
34122 case PT_Uint64:
34123 return emitInitGlobalUint64(A0, I);
34124 case PT_IntAP:
34125 return emitInitGlobalIntAP(A0, I);
34126 case PT_IntAPS:
34127 return emitInitGlobalIntAPS(A0, I);
34128 case PT_Bool:
34129 return emitInitGlobalBool(A0, I);
34130 case PT_FixedPoint:
34131 return emitInitGlobalFixedPoint(A0, I);
34132 case PT_Ptr:
34133 return emitInitGlobalPtr(A0, I);
34134 case PT_MemberPtr:
34135 return emitInitGlobalMemberPtr(A0, I);
34136 case PT_Float:
34137 return emitInitGlobalFloat(A0, I);
34138 }
34139 llvm_unreachable("invalid enum value");
34140}
34141#endif
34142#ifdef GET_LINK_IMPL
34143bool ByteCodeEmitter::emitInitGlobalSint8( uint32_t A0, SourceInfo L) {
34144 return emitOp<uint32_t>(OP_InitGlobalSint8, A0, L);
34145}
34146bool ByteCodeEmitter::emitInitGlobalUint8( uint32_t A0, SourceInfo L) {
34147 return emitOp<uint32_t>(OP_InitGlobalUint8, A0, L);
34148}
34149bool ByteCodeEmitter::emitInitGlobalSint16( uint32_t A0, SourceInfo L) {
34150 return emitOp<uint32_t>(OP_InitGlobalSint16, A0, L);
34151}
34152bool ByteCodeEmitter::emitInitGlobalUint16( uint32_t A0, SourceInfo L) {
34153 return emitOp<uint32_t>(OP_InitGlobalUint16, A0, L);
34154}
34155bool ByteCodeEmitter::emitInitGlobalSint32( uint32_t A0, SourceInfo L) {
34156 return emitOp<uint32_t>(OP_InitGlobalSint32, A0, L);
34157}
34158bool ByteCodeEmitter::emitInitGlobalUint32( uint32_t A0, SourceInfo L) {
34159 return emitOp<uint32_t>(OP_InitGlobalUint32, A0, L);
34160}
34161bool ByteCodeEmitter::emitInitGlobalSint64( uint32_t A0, SourceInfo L) {
34162 return emitOp<uint32_t>(OP_InitGlobalSint64, A0, L);
34163}
34164bool ByteCodeEmitter::emitInitGlobalUint64( uint32_t A0, SourceInfo L) {
34165 return emitOp<uint32_t>(OP_InitGlobalUint64, A0, L);
34166}
34167bool ByteCodeEmitter::emitInitGlobalIntAP( uint32_t A0, SourceInfo L) {
34168 return emitOp<uint32_t>(OP_InitGlobalIntAP, A0, L);
34169}
34170bool ByteCodeEmitter::emitInitGlobalIntAPS( uint32_t A0, SourceInfo L) {
34171 return emitOp<uint32_t>(OP_InitGlobalIntAPS, A0, L);
34172}
34173bool ByteCodeEmitter::emitInitGlobalBool( uint32_t A0, SourceInfo L) {
34174 return emitOp<uint32_t>(OP_InitGlobalBool, A0, L);
34175}
34176bool ByteCodeEmitter::emitInitGlobalFixedPoint( uint32_t A0, SourceInfo L) {
34177 return emitOp<uint32_t>(OP_InitGlobalFixedPoint, A0, L);
34178}
34179bool ByteCodeEmitter::emitInitGlobalPtr( uint32_t A0, SourceInfo L) {
34180 return emitOp<uint32_t>(OP_InitGlobalPtr, A0, L);
34181}
34182bool ByteCodeEmitter::emitInitGlobalMemberPtr( uint32_t A0, SourceInfo L) {
34183 return emitOp<uint32_t>(OP_InitGlobalMemberPtr, A0, L);
34184}
34185bool ByteCodeEmitter::emitInitGlobalFloat( uint32_t A0, SourceInfo L) {
34186 return emitOp<uint32_t>(OP_InitGlobalFloat, A0, L);
34187}
34188#endif
34189#ifdef GET_EVAL_IMPL
34190bool EvalEmitter::emitInitGlobalSint8( uint32_t A0, SourceInfo L) {
34191 if (!isActive()) return true;
34192 CurrentSource = L;
34193 return InitGlobal<PT_Sint8>(S, A0);
34194}
34195bool EvalEmitter::emitInitGlobalUint8( uint32_t A0, SourceInfo L) {
34196 if (!isActive()) return true;
34197 CurrentSource = L;
34198 return InitGlobal<PT_Uint8>(S, A0);
34199}
34200bool EvalEmitter::emitInitGlobalSint16( uint32_t A0, SourceInfo L) {
34201 if (!isActive()) return true;
34202 CurrentSource = L;
34203 return InitGlobal<PT_Sint16>(S, A0);
34204}
34205bool EvalEmitter::emitInitGlobalUint16( uint32_t A0, SourceInfo L) {
34206 if (!isActive()) return true;
34207 CurrentSource = L;
34208 return InitGlobal<PT_Uint16>(S, A0);
34209}
34210bool EvalEmitter::emitInitGlobalSint32( uint32_t A0, SourceInfo L) {
34211 if (!isActive()) return true;
34212 CurrentSource = L;
34213 return InitGlobal<PT_Sint32>(S, A0);
34214}
34215bool EvalEmitter::emitInitGlobalUint32( uint32_t A0, SourceInfo L) {
34216 if (!isActive()) return true;
34217 CurrentSource = L;
34218 return InitGlobal<PT_Uint32>(S, A0);
34219}
34220bool EvalEmitter::emitInitGlobalSint64( uint32_t A0, SourceInfo L) {
34221 if (!isActive()) return true;
34222 CurrentSource = L;
34223 return InitGlobal<PT_Sint64>(S, A0);
34224}
34225bool EvalEmitter::emitInitGlobalUint64( uint32_t A0, SourceInfo L) {
34226 if (!isActive()) return true;
34227 CurrentSource = L;
34228 return InitGlobal<PT_Uint64>(S, A0);
34229}
34230bool EvalEmitter::emitInitGlobalIntAP( uint32_t A0, SourceInfo L) {
34231 if (!isActive()) return true;
34232 CurrentSource = L;
34233 return InitGlobal<PT_IntAP>(S, A0);
34234}
34235bool EvalEmitter::emitInitGlobalIntAPS( uint32_t A0, SourceInfo L) {
34236 if (!isActive()) return true;
34237 CurrentSource = L;
34238 return InitGlobal<PT_IntAPS>(S, A0);
34239}
34240bool EvalEmitter::emitInitGlobalBool( uint32_t A0, SourceInfo L) {
34241 if (!isActive()) return true;
34242 CurrentSource = L;
34243 return InitGlobal<PT_Bool>(S, A0);
34244}
34245bool EvalEmitter::emitInitGlobalFixedPoint( uint32_t A0, SourceInfo L) {
34246 if (!isActive()) return true;
34247 CurrentSource = L;
34248 return InitGlobal<PT_FixedPoint>(S, A0);
34249}
34250bool EvalEmitter::emitInitGlobalPtr( uint32_t A0, SourceInfo L) {
34251 if (!isActive()) return true;
34252 CurrentSource = L;
34253 return InitGlobal<PT_Ptr>(S, A0);
34254}
34255bool EvalEmitter::emitInitGlobalMemberPtr( uint32_t A0, SourceInfo L) {
34256 if (!isActive()) return true;
34257 CurrentSource = L;
34258 return InitGlobal<PT_MemberPtr>(S, A0);
34259}
34260bool EvalEmitter::emitInitGlobalFloat( uint32_t A0, SourceInfo L) {
34261 if (!isActive()) return true;
34262 CurrentSource = L;
34263 return InitGlobal<PT_Float>(S, A0);
34264}
34265#endif
34266#ifdef GET_OPCODE_NAMES
34267OP_InitGlobalTempSint8,
34268OP_InitGlobalTempUint8,
34269OP_InitGlobalTempSint16,
34270OP_InitGlobalTempUint16,
34271OP_InitGlobalTempSint32,
34272OP_InitGlobalTempUint32,
34273OP_InitGlobalTempSint64,
34274OP_InitGlobalTempUint64,
34275OP_InitGlobalTempIntAP,
34276OP_InitGlobalTempIntAPS,
34277OP_InitGlobalTempBool,
34278OP_InitGlobalTempFixedPoint,
34279OP_InitGlobalTempPtr,
34280OP_InitGlobalTempMemberPtr,
34281OP_InitGlobalTempFloat,
34282#endif
34283#ifdef GET_INTERPFN_LIST
34284&Interp_InitGlobalTempSint8,
34285&Interp_InitGlobalTempUint8,
34286&Interp_InitGlobalTempSint16,
34287&Interp_InitGlobalTempUint16,
34288&Interp_InitGlobalTempSint32,
34289&Interp_InitGlobalTempUint32,
34290&Interp_InitGlobalTempSint64,
34291&Interp_InitGlobalTempUint64,
34292&Interp_InitGlobalTempIntAP,
34293&Interp_InitGlobalTempIntAPS,
34294&Interp_InitGlobalTempBool,
34295&Interp_InitGlobalTempFixedPoint,
34296&Interp_InitGlobalTempPtr,
34297&Interp_InitGlobalTempMemberPtr,
34298&Interp_InitGlobalTempFloat,
34299#endif
34300#ifdef GET_INTERPFN_DISPATCHERS
34301PRESERVE_NONE
34302static bool Interp_InitGlobalTempSint8(InterpState &S) {
34303 {
34304 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34305 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34306 if (!InitGlobalTemp<PT_Sint8>(S, V0, V1)) return false;
34307 }
34308#if USE_TAILCALLS
34309 MUSTTAIL return InterpNext(S);
34310#else
34311 return true;
34312#endif
34313}
34314PRESERVE_NONE
34315static bool Interp_InitGlobalTempUint8(InterpState &S) {
34316 {
34317 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34318 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34319 if (!InitGlobalTemp<PT_Uint8>(S, V0, V1)) return false;
34320 }
34321#if USE_TAILCALLS
34322 MUSTTAIL return InterpNext(S);
34323#else
34324 return true;
34325#endif
34326}
34327PRESERVE_NONE
34328static bool Interp_InitGlobalTempSint16(InterpState &S) {
34329 {
34330 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34331 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34332 if (!InitGlobalTemp<PT_Sint16>(S, V0, V1)) return false;
34333 }
34334#if USE_TAILCALLS
34335 MUSTTAIL return InterpNext(S);
34336#else
34337 return true;
34338#endif
34339}
34340PRESERVE_NONE
34341static bool Interp_InitGlobalTempUint16(InterpState &S) {
34342 {
34343 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34344 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34345 if (!InitGlobalTemp<PT_Uint16>(S, V0, V1)) return false;
34346 }
34347#if USE_TAILCALLS
34348 MUSTTAIL return InterpNext(S);
34349#else
34350 return true;
34351#endif
34352}
34353PRESERVE_NONE
34354static bool Interp_InitGlobalTempSint32(InterpState &S) {
34355 {
34356 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34357 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34358 if (!InitGlobalTemp<PT_Sint32>(S, V0, V1)) return false;
34359 }
34360#if USE_TAILCALLS
34361 MUSTTAIL return InterpNext(S);
34362#else
34363 return true;
34364#endif
34365}
34366PRESERVE_NONE
34367static bool Interp_InitGlobalTempUint32(InterpState &S) {
34368 {
34369 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34370 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34371 if (!InitGlobalTemp<PT_Uint32>(S, V0, V1)) return false;
34372 }
34373#if USE_TAILCALLS
34374 MUSTTAIL return InterpNext(S);
34375#else
34376 return true;
34377#endif
34378}
34379PRESERVE_NONE
34380static bool Interp_InitGlobalTempSint64(InterpState &S) {
34381 {
34382 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34383 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34384 if (!InitGlobalTemp<PT_Sint64>(S, V0, V1)) return false;
34385 }
34386#if USE_TAILCALLS
34387 MUSTTAIL return InterpNext(S);
34388#else
34389 return true;
34390#endif
34391}
34392PRESERVE_NONE
34393static bool Interp_InitGlobalTempUint64(InterpState &S) {
34394 {
34395 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34396 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34397 if (!InitGlobalTemp<PT_Uint64>(S, V0, V1)) return false;
34398 }
34399#if USE_TAILCALLS
34400 MUSTTAIL return InterpNext(S);
34401#else
34402 return true;
34403#endif
34404}
34405PRESERVE_NONE
34406static bool Interp_InitGlobalTempIntAP(InterpState &S) {
34407 {
34408 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34409 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34410 if (!InitGlobalTemp<PT_IntAP>(S, V0, V1)) return false;
34411 }
34412#if USE_TAILCALLS
34413 MUSTTAIL return InterpNext(S);
34414#else
34415 return true;
34416#endif
34417}
34418PRESERVE_NONE
34419static bool Interp_InitGlobalTempIntAPS(InterpState &S) {
34420 {
34421 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34422 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34423 if (!InitGlobalTemp<PT_IntAPS>(S, V0, V1)) return false;
34424 }
34425#if USE_TAILCALLS
34426 MUSTTAIL return InterpNext(S);
34427#else
34428 return true;
34429#endif
34430}
34431PRESERVE_NONE
34432static bool Interp_InitGlobalTempBool(InterpState &S) {
34433 {
34434 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34435 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34436 if (!InitGlobalTemp<PT_Bool>(S, V0, V1)) return false;
34437 }
34438#if USE_TAILCALLS
34439 MUSTTAIL return InterpNext(S);
34440#else
34441 return true;
34442#endif
34443}
34444PRESERVE_NONE
34445static bool Interp_InitGlobalTempFixedPoint(InterpState &S) {
34446 {
34447 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34448 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34449 if (!InitGlobalTemp<PT_FixedPoint>(S, V0, V1)) return false;
34450 }
34451#if USE_TAILCALLS
34452 MUSTTAIL return InterpNext(S);
34453#else
34454 return true;
34455#endif
34456}
34457PRESERVE_NONE
34458static bool Interp_InitGlobalTempPtr(InterpState &S) {
34459 {
34460 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34461 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34462 if (!InitGlobalTemp<PT_Ptr>(S, V0, V1)) return false;
34463 }
34464#if USE_TAILCALLS
34465 MUSTTAIL return InterpNext(S);
34466#else
34467 return true;
34468#endif
34469}
34470PRESERVE_NONE
34471static bool Interp_InitGlobalTempMemberPtr(InterpState &S) {
34472 {
34473 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34474 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34475 if (!InitGlobalTemp<PT_MemberPtr>(S, V0, V1)) return false;
34476 }
34477#if USE_TAILCALLS
34478 MUSTTAIL return InterpNext(S);
34479#else
34480 return true;
34481#endif
34482}
34483PRESERVE_NONE
34484static bool Interp_InitGlobalTempFloat(InterpState &S) {
34485 {
34486 const auto V0 = ReadArg<uint32_t>(S, S.PC);
34487 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34488 if (!InitGlobalTemp<PT_Float>(S, V0, V1)) return false;
34489 }
34490#if USE_TAILCALLS
34491 MUSTTAIL return InterpNext(S);
34492#else
34493 return true;
34494#endif
34495}
34496#endif
34497#ifdef GET_DISASM
34498case OP_InitGlobalTempSint8:
34499 Text.Op = PrintName("InitGlobalTempSint8");
34500 Text.Args.push_back(printArg<uint32_t>(PC));
34501 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34502 break;
34503case OP_InitGlobalTempUint8:
34504 Text.Op = PrintName("InitGlobalTempUint8");
34505 Text.Args.push_back(printArg<uint32_t>(PC));
34506 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34507 break;
34508case OP_InitGlobalTempSint16:
34509 Text.Op = PrintName("InitGlobalTempSint16");
34510 Text.Args.push_back(printArg<uint32_t>(PC));
34511 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34512 break;
34513case OP_InitGlobalTempUint16:
34514 Text.Op = PrintName("InitGlobalTempUint16");
34515 Text.Args.push_back(printArg<uint32_t>(PC));
34516 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34517 break;
34518case OP_InitGlobalTempSint32:
34519 Text.Op = PrintName("InitGlobalTempSint32");
34520 Text.Args.push_back(printArg<uint32_t>(PC));
34521 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34522 break;
34523case OP_InitGlobalTempUint32:
34524 Text.Op = PrintName("InitGlobalTempUint32");
34525 Text.Args.push_back(printArg<uint32_t>(PC));
34526 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34527 break;
34528case OP_InitGlobalTempSint64:
34529 Text.Op = PrintName("InitGlobalTempSint64");
34530 Text.Args.push_back(printArg<uint32_t>(PC));
34531 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34532 break;
34533case OP_InitGlobalTempUint64:
34534 Text.Op = PrintName("InitGlobalTempUint64");
34535 Text.Args.push_back(printArg<uint32_t>(PC));
34536 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34537 break;
34538case OP_InitGlobalTempIntAP:
34539 Text.Op = PrintName("InitGlobalTempIntAP");
34540 Text.Args.push_back(printArg<uint32_t>(PC));
34541 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34542 break;
34543case OP_InitGlobalTempIntAPS:
34544 Text.Op = PrintName("InitGlobalTempIntAPS");
34545 Text.Args.push_back(printArg<uint32_t>(PC));
34546 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34547 break;
34548case OP_InitGlobalTempBool:
34549 Text.Op = PrintName("InitGlobalTempBool");
34550 Text.Args.push_back(printArg<uint32_t>(PC));
34551 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34552 break;
34553case OP_InitGlobalTempFixedPoint:
34554 Text.Op = PrintName("InitGlobalTempFixedPoint");
34555 Text.Args.push_back(printArg<uint32_t>(PC));
34556 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34557 break;
34558case OP_InitGlobalTempPtr:
34559 Text.Op = PrintName("InitGlobalTempPtr");
34560 Text.Args.push_back(printArg<uint32_t>(PC));
34561 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34562 break;
34563case OP_InitGlobalTempMemberPtr:
34564 Text.Op = PrintName("InitGlobalTempMemberPtr");
34565 Text.Args.push_back(printArg<uint32_t>(PC));
34566 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34567 break;
34568case OP_InitGlobalTempFloat:
34569 Text.Op = PrintName("InitGlobalTempFloat");
34570 Text.Args.push_back(printArg<uint32_t>(PC));
34571 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34572 break;
34573#endif
34574#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34575bool emitInitGlobalTempSint8( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34576bool emitInitGlobalTempUint8( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34577bool emitInitGlobalTempSint16( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34578bool emitInitGlobalTempUint16( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34579bool emitInitGlobalTempSint32( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34580bool emitInitGlobalTempUint32( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34581bool emitInitGlobalTempSint64( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34582bool emitInitGlobalTempUint64( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34583bool emitInitGlobalTempIntAP( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34584bool emitInitGlobalTempIntAPS( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34585bool emitInitGlobalTempBool( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34586bool emitInitGlobalTempFixedPoint( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34587bool emitInitGlobalTempPtr( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34588bool emitInitGlobalTempMemberPtr( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34589bool emitInitGlobalTempFloat( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34590#endif
34591#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34592[[nodiscard]] bool emitInitGlobalTemp(PrimType, uint32_t, const LifetimeExtendedTemporaryDecl *, SourceInfo I);
34593#endif
34594#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
34595bool
34596#if defined(GET_EVAL_IMPL)
34597EvalEmitter
34598#else
34599ByteCodeEmitter
34600#endif
34601::emitInitGlobalTemp(PrimType T0, uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo I) {
34602 switch (T0) {
34603 case PT_Sint8:
34604 return emitInitGlobalTempSint8(A0, A1, I);
34605 case PT_Uint8:
34606 return emitInitGlobalTempUint8(A0, A1, I);
34607 case PT_Sint16:
34608 return emitInitGlobalTempSint16(A0, A1, I);
34609 case PT_Uint16:
34610 return emitInitGlobalTempUint16(A0, A1, I);
34611 case PT_Sint32:
34612 return emitInitGlobalTempSint32(A0, A1, I);
34613 case PT_Uint32:
34614 return emitInitGlobalTempUint32(A0, A1, I);
34615 case PT_Sint64:
34616 return emitInitGlobalTempSint64(A0, A1, I);
34617 case PT_Uint64:
34618 return emitInitGlobalTempUint64(A0, A1, I);
34619 case PT_IntAP:
34620 return emitInitGlobalTempIntAP(A0, A1, I);
34621 case PT_IntAPS:
34622 return emitInitGlobalTempIntAPS(A0, A1, I);
34623 case PT_Bool:
34624 return emitInitGlobalTempBool(A0, A1, I);
34625 case PT_FixedPoint:
34626 return emitInitGlobalTempFixedPoint(A0, A1, I);
34627 case PT_Ptr:
34628 return emitInitGlobalTempPtr(A0, A1, I);
34629 case PT_MemberPtr:
34630 return emitInitGlobalTempMemberPtr(A0, A1, I);
34631 case PT_Float:
34632 return emitInitGlobalTempFloat(A0, A1, I);
34633 }
34634 llvm_unreachable("invalid enum value");
34635}
34636#endif
34637#ifdef GET_LINK_IMPL
34638bool ByteCodeEmitter::emitInitGlobalTempSint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34639 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint8, A0, A1, L);
34640}
34641bool ByteCodeEmitter::emitInitGlobalTempUint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34642 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint8, A0, A1, L);
34643}
34644bool ByteCodeEmitter::emitInitGlobalTempSint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34645 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint16, A0, A1, L);
34646}
34647bool ByteCodeEmitter::emitInitGlobalTempUint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34648 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint16, A0, A1, L);
34649}
34650bool ByteCodeEmitter::emitInitGlobalTempSint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34651 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint32, A0, A1, L);
34652}
34653bool ByteCodeEmitter::emitInitGlobalTempUint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34654 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint32, A0, A1, L);
34655}
34656bool ByteCodeEmitter::emitInitGlobalTempSint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34657 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint64, A0, A1, L);
34658}
34659bool ByteCodeEmitter::emitInitGlobalTempUint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34660 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint64, A0, A1, L);
34661}
34662bool ByteCodeEmitter::emitInitGlobalTempIntAP( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34663 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempIntAP, A0, A1, L);
34664}
34665bool ByteCodeEmitter::emitInitGlobalTempIntAPS( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34666 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempIntAPS, A0, A1, L);
34667}
34668bool ByteCodeEmitter::emitInitGlobalTempBool( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34669 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempBool, A0, A1, L);
34670}
34671bool ByteCodeEmitter::emitInitGlobalTempFixedPoint( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34672 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempFixedPoint, A0, A1, L);
34673}
34674bool ByteCodeEmitter::emitInitGlobalTempPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34675 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempPtr, A0, A1, L);
34676}
34677bool ByteCodeEmitter::emitInitGlobalTempMemberPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34678 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempMemberPtr, A0, A1, L);
34679}
34680bool ByteCodeEmitter::emitInitGlobalTempFloat( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34681 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempFloat, A0, A1, L);
34682}
34683#endif
34684#ifdef GET_EVAL_IMPL
34685bool EvalEmitter::emitInitGlobalTempSint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34686 if (!isActive()) return true;
34687 CurrentSource = L;
34688 return InitGlobalTemp<PT_Sint8>(S, A0, A1);
34689}
34690bool EvalEmitter::emitInitGlobalTempUint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34691 if (!isActive()) return true;
34692 CurrentSource = L;
34693 return InitGlobalTemp<PT_Uint8>(S, A0, A1);
34694}
34695bool EvalEmitter::emitInitGlobalTempSint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34696 if (!isActive()) return true;
34697 CurrentSource = L;
34698 return InitGlobalTemp<PT_Sint16>(S, A0, A1);
34699}
34700bool EvalEmitter::emitInitGlobalTempUint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34701 if (!isActive()) return true;
34702 CurrentSource = L;
34703 return InitGlobalTemp<PT_Uint16>(S, A0, A1);
34704}
34705bool EvalEmitter::emitInitGlobalTempSint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34706 if (!isActive()) return true;
34707 CurrentSource = L;
34708 return InitGlobalTemp<PT_Sint32>(S, A0, A1);
34709}
34710bool EvalEmitter::emitInitGlobalTempUint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34711 if (!isActive()) return true;
34712 CurrentSource = L;
34713 return InitGlobalTemp<PT_Uint32>(S, A0, A1);
34714}
34715bool EvalEmitter::emitInitGlobalTempSint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34716 if (!isActive()) return true;
34717 CurrentSource = L;
34718 return InitGlobalTemp<PT_Sint64>(S, A0, A1);
34719}
34720bool EvalEmitter::emitInitGlobalTempUint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34721 if (!isActive()) return true;
34722 CurrentSource = L;
34723 return InitGlobalTemp<PT_Uint64>(S, A0, A1);
34724}
34725bool EvalEmitter::emitInitGlobalTempIntAP( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34726 if (!isActive()) return true;
34727 CurrentSource = L;
34728 return InitGlobalTemp<PT_IntAP>(S, A0, A1);
34729}
34730bool EvalEmitter::emitInitGlobalTempIntAPS( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34731 if (!isActive()) return true;
34732 CurrentSource = L;
34733 return InitGlobalTemp<PT_IntAPS>(S, A0, A1);
34734}
34735bool EvalEmitter::emitInitGlobalTempBool( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34736 if (!isActive()) return true;
34737 CurrentSource = L;
34738 return InitGlobalTemp<PT_Bool>(S, A0, A1);
34739}
34740bool EvalEmitter::emitInitGlobalTempFixedPoint( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34741 if (!isActive()) return true;
34742 CurrentSource = L;
34743 return InitGlobalTemp<PT_FixedPoint>(S, A0, A1);
34744}
34745bool EvalEmitter::emitInitGlobalTempPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34746 if (!isActive()) return true;
34747 CurrentSource = L;
34748 return InitGlobalTemp<PT_Ptr>(S, A0, A1);
34749}
34750bool EvalEmitter::emitInitGlobalTempMemberPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34751 if (!isActive()) return true;
34752 CurrentSource = L;
34753 return InitGlobalTemp<PT_MemberPtr>(S, A0, A1);
34754}
34755bool EvalEmitter::emitInitGlobalTempFloat( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34756 if (!isActive()) return true;
34757 CurrentSource = L;
34758 return InitGlobalTemp<PT_Float>(S, A0, A1);
34759}
34760#endif
34761#ifdef GET_OPCODE_NAMES
34762OP_InitGlobalTempComp,
34763#endif
34764#ifdef GET_INTERPFN_LIST
34765&Interp_InitGlobalTempComp,
34766#endif
34767#ifdef GET_INTERPFN_DISPATCHERS
34768PRESERVE_NONE
34769static bool Interp_InitGlobalTempComp(InterpState &S) {
34770 {
34771 const auto V0 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, S.PC);
34772 if (!InitGlobalTempComp(S, V0)) return false;
34773 }
34774#if USE_TAILCALLS
34775 MUSTTAIL return InterpNext(S);
34776#else
34777 return true;
34778#endif
34779}
34780#endif
34781#ifdef GET_DISASM
34782case OP_InitGlobalTempComp:
34783 Text.Op = PrintName("InitGlobalTempComp");
34784 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(PC));
34785 break;
34786#endif
34787#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34788bool emitInitGlobalTempComp( const LifetimeExtendedTemporaryDecl * , SourceInfo);
34789#endif
34790#ifdef GET_LINK_IMPL
34791bool ByteCodeEmitter::emitInitGlobalTempComp( const LifetimeExtendedTemporaryDecl * A0, SourceInfo L) {
34792 return emitOp<const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempComp, A0, L);
34793}
34794#endif
34795#ifdef GET_EVAL_IMPL
34796bool EvalEmitter::emitInitGlobalTempComp( const LifetimeExtendedTemporaryDecl * A0, SourceInfo L) {
34797 if (!isActive()) return true;
34798 CurrentSource = L;
34799 return InitGlobalTempComp(S, A0);
34800}
34801#endif
34802#ifdef GET_OPCODE_NAMES
34803OP_InitPopSint8,
34804OP_InitPopUint8,
34805OP_InitPopSint16,
34806OP_InitPopUint16,
34807OP_InitPopSint32,
34808OP_InitPopUint32,
34809OP_InitPopSint64,
34810OP_InitPopUint64,
34811OP_InitPopIntAP,
34812OP_InitPopIntAPS,
34813OP_InitPopBool,
34814OP_InitPopFixedPoint,
34815OP_InitPopPtr,
34816OP_InitPopMemberPtr,
34817OP_InitPopFloat,
34818#endif
34819#ifdef GET_INTERPFN_LIST
34820&Interp_InitPopSint8,
34821&Interp_InitPopUint8,
34822&Interp_InitPopSint16,
34823&Interp_InitPopUint16,
34824&Interp_InitPopSint32,
34825&Interp_InitPopUint32,
34826&Interp_InitPopSint64,
34827&Interp_InitPopUint64,
34828&Interp_InitPopIntAP,
34829&Interp_InitPopIntAPS,
34830&Interp_InitPopBool,
34831&Interp_InitPopFixedPoint,
34832&Interp_InitPopPtr,
34833&Interp_InitPopMemberPtr,
34834&Interp_InitPopFloat,
34835#endif
34836#ifdef GET_INTERPFN_DISPATCHERS
34837PRESERVE_NONE
34838static bool Interp_InitPopSint8(InterpState &S) {
34839 if (!InitPop<PT_Sint8>(S, S.PC)) return false;
34840#if USE_TAILCALLS
34841 MUSTTAIL return InterpNext(S);
34842#else
34843 return true;
34844#endif
34845}
34846PRESERVE_NONE
34847static bool Interp_InitPopUint8(InterpState &S) {
34848 if (!InitPop<PT_Uint8>(S, S.PC)) return false;
34849#if USE_TAILCALLS
34850 MUSTTAIL return InterpNext(S);
34851#else
34852 return true;
34853#endif
34854}
34855PRESERVE_NONE
34856static bool Interp_InitPopSint16(InterpState &S) {
34857 if (!InitPop<PT_Sint16>(S, S.PC)) return false;
34858#if USE_TAILCALLS
34859 MUSTTAIL return InterpNext(S);
34860#else
34861 return true;
34862#endif
34863}
34864PRESERVE_NONE
34865static bool Interp_InitPopUint16(InterpState &S) {
34866 if (!InitPop<PT_Uint16>(S, S.PC)) return false;
34867#if USE_TAILCALLS
34868 MUSTTAIL return InterpNext(S);
34869#else
34870 return true;
34871#endif
34872}
34873PRESERVE_NONE
34874static bool Interp_InitPopSint32(InterpState &S) {
34875 if (!InitPop<PT_Sint32>(S, S.PC)) return false;
34876#if USE_TAILCALLS
34877 MUSTTAIL return InterpNext(S);
34878#else
34879 return true;
34880#endif
34881}
34882PRESERVE_NONE
34883static bool Interp_InitPopUint32(InterpState &S) {
34884 if (!InitPop<PT_Uint32>(S, S.PC)) return false;
34885#if USE_TAILCALLS
34886 MUSTTAIL return InterpNext(S);
34887#else
34888 return true;
34889#endif
34890}
34891PRESERVE_NONE
34892static bool Interp_InitPopSint64(InterpState &S) {
34893 if (!InitPop<PT_Sint64>(S, S.PC)) return false;
34894#if USE_TAILCALLS
34895 MUSTTAIL return InterpNext(S);
34896#else
34897 return true;
34898#endif
34899}
34900PRESERVE_NONE
34901static bool Interp_InitPopUint64(InterpState &S) {
34902 if (!InitPop<PT_Uint64>(S, S.PC)) return false;
34903#if USE_TAILCALLS
34904 MUSTTAIL return InterpNext(S);
34905#else
34906 return true;
34907#endif
34908}
34909PRESERVE_NONE
34910static bool Interp_InitPopIntAP(InterpState &S) {
34911 if (!InitPop<PT_IntAP>(S, S.PC)) return false;
34912#if USE_TAILCALLS
34913 MUSTTAIL return InterpNext(S);
34914#else
34915 return true;
34916#endif
34917}
34918PRESERVE_NONE
34919static bool Interp_InitPopIntAPS(InterpState &S) {
34920 if (!InitPop<PT_IntAPS>(S, S.PC)) return false;
34921#if USE_TAILCALLS
34922 MUSTTAIL return InterpNext(S);
34923#else
34924 return true;
34925#endif
34926}
34927PRESERVE_NONE
34928static bool Interp_InitPopBool(InterpState &S) {
34929 if (!InitPop<PT_Bool>(S, S.PC)) return false;
34930#if USE_TAILCALLS
34931 MUSTTAIL return InterpNext(S);
34932#else
34933 return true;
34934#endif
34935}
34936PRESERVE_NONE
34937static bool Interp_InitPopFixedPoint(InterpState &S) {
34938 if (!InitPop<PT_FixedPoint>(S, S.PC)) return false;
34939#if USE_TAILCALLS
34940 MUSTTAIL return InterpNext(S);
34941#else
34942 return true;
34943#endif
34944}
34945PRESERVE_NONE
34946static bool Interp_InitPopPtr(InterpState &S) {
34947 if (!InitPop<PT_Ptr>(S, S.PC)) return false;
34948#if USE_TAILCALLS
34949 MUSTTAIL return InterpNext(S);
34950#else
34951 return true;
34952#endif
34953}
34954PRESERVE_NONE
34955static bool Interp_InitPopMemberPtr(InterpState &S) {
34956 if (!InitPop<PT_MemberPtr>(S, S.PC)) return false;
34957#if USE_TAILCALLS
34958 MUSTTAIL return InterpNext(S);
34959#else
34960 return true;
34961#endif
34962}
34963PRESERVE_NONE
34964static bool Interp_InitPopFloat(InterpState &S) {
34965 if (!InitPop<PT_Float>(S, S.PC)) return false;
34966#if USE_TAILCALLS
34967 MUSTTAIL return InterpNext(S);
34968#else
34969 return true;
34970#endif
34971}
34972#endif
34973#ifdef GET_DISASM
34974case OP_InitPopSint8:
34975 Text.Op = PrintName("InitPopSint8");
34976 break;
34977case OP_InitPopUint8:
34978 Text.Op = PrintName("InitPopUint8");
34979 break;
34980case OP_InitPopSint16:
34981 Text.Op = PrintName("InitPopSint16");
34982 break;
34983case OP_InitPopUint16:
34984 Text.Op = PrintName("InitPopUint16");
34985 break;
34986case OP_InitPopSint32:
34987 Text.Op = PrintName("InitPopSint32");
34988 break;
34989case OP_InitPopUint32:
34990 Text.Op = PrintName("InitPopUint32");
34991 break;
34992case OP_InitPopSint64:
34993 Text.Op = PrintName("InitPopSint64");
34994 break;
34995case OP_InitPopUint64:
34996 Text.Op = PrintName("InitPopUint64");
34997 break;
34998case OP_InitPopIntAP:
34999 Text.Op = PrintName("InitPopIntAP");
35000 break;
35001case OP_InitPopIntAPS:
35002 Text.Op = PrintName("InitPopIntAPS");
35003 break;
35004case OP_InitPopBool:
35005 Text.Op = PrintName("InitPopBool");
35006 break;
35007case OP_InitPopFixedPoint:
35008 Text.Op = PrintName("InitPopFixedPoint");
35009 break;
35010case OP_InitPopPtr:
35011 Text.Op = PrintName("InitPopPtr");
35012 break;
35013case OP_InitPopMemberPtr:
35014 Text.Op = PrintName("InitPopMemberPtr");
35015 break;
35016case OP_InitPopFloat:
35017 Text.Op = PrintName("InitPopFloat");
35018 break;
35019#endif
35020#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35021bool emitInitPopSint8(SourceInfo);
35022bool emitInitPopUint8(SourceInfo);
35023bool emitInitPopSint16(SourceInfo);
35024bool emitInitPopUint16(SourceInfo);
35025bool emitInitPopSint32(SourceInfo);
35026bool emitInitPopUint32(SourceInfo);
35027bool emitInitPopSint64(SourceInfo);
35028bool emitInitPopUint64(SourceInfo);
35029bool emitInitPopIntAP(SourceInfo);
35030bool emitInitPopIntAPS(SourceInfo);
35031bool emitInitPopBool(SourceInfo);
35032bool emitInitPopFixedPoint(SourceInfo);
35033bool emitInitPopPtr(SourceInfo);
35034bool emitInitPopMemberPtr(SourceInfo);
35035bool emitInitPopFloat(SourceInfo);
35036#endif
35037#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35038[[nodiscard]] bool emitInitPop(PrimType, SourceInfo I);
35039#endif
35040#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
35041bool
35042#if defined(GET_EVAL_IMPL)
35043EvalEmitter
35044#else
35045ByteCodeEmitter
35046#endif
35047::emitInitPop(PrimType T0, SourceInfo I) {
35048 switch (T0) {
35049 case PT_Sint8:
35050 return emitInitPopSint8(I);
35051 case PT_Uint8:
35052 return emitInitPopUint8(I);
35053 case PT_Sint16:
35054 return emitInitPopSint16(I);
35055 case PT_Uint16:
35056 return emitInitPopUint16(I);
35057 case PT_Sint32:
35058 return emitInitPopSint32(I);
35059 case PT_Uint32:
35060 return emitInitPopUint32(I);
35061 case PT_Sint64:
35062 return emitInitPopSint64(I);
35063 case PT_Uint64:
35064 return emitInitPopUint64(I);
35065 case PT_IntAP:
35066 return emitInitPopIntAP(I);
35067 case PT_IntAPS:
35068 return emitInitPopIntAPS(I);
35069 case PT_Bool:
35070 return emitInitPopBool(I);
35071 case PT_FixedPoint:
35072 return emitInitPopFixedPoint(I);
35073 case PT_Ptr:
35074 return emitInitPopPtr(I);
35075 case PT_MemberPtr:
35076 return emitInitPopMemberPtr(I);
35077 case PT_Float:
35078 return emitInitPopFloat(I);
35079 }
35080 llvm_unreachable("invalid enum value");
35081}
35082#endif
35083#ifdef GET_LINK_IMPL
35084bool ByteCodeEmitter::emitInitPopSint8(SourceInfo L) {
35085 return emitOp<>(OP_InitPopSint8, L);
35086}
35087bool ByteCodeEmitter::emitInitPopUint8(SourceInfo L) {
35088 return emitOp<>(OP_InitPopUint8, L);
35089}
35090bool ByteCodeEmitter::emitInitPopSint16(SourceInfo L) {
35091 return emitOp<>(OP_InitPopSint16, L);
35092}
35093bool ByteCodeEmitter::emitInitPopUint16(SourceInfo L) {
35094 return emitOp<>(OP_InitPopUint16, L);
35095}
35096bool ByteCodeEmitter::emitInitPopSint32(SourceInfo L) {
35097 return emitOp<>(OP_InitPopSint32, L);
35098}
35099bool ByteCodeEmitter::emitInitPopUint32(SourceInfo L) {
35100 return emitOp<>(OP_InitPopUint32, L);
35101}
35102bool ByteCodeEmitter::emitInitPopSint64(SourceInfo L) {
35103 return emitOp<>(OP_InitPopSint64, L);
35104}
35105bool ByteCodeEmitter::emitInitPopUint64(SourceInfo L) {
35106 return emitOp<>(OP_InitPopUint64, L);
35107}
35108bool ByteCodeEmitter::emitInitPopIntAP(SourceInfo L) {
35109 return emitOp<>(OP_InitPopIntAP, L);
35110}
35111bool ByteCodeEmitter::emitInitPopIntAPS(SourceInfo L) {
35112 return emitOp<>(OP_InitPopIntAPS, L);
35113}
35114bool ByteCodeEmitter::emitInitPopBool(SourceInfo L) {
35115 return emitOp<>(OP_InitPopBool, L);
35116}
35117bool ByteCodeEmitter::emitInitPopFixedPoint(SourceInfo L) {
35118 return emitOp<>(OP_InitPopFixedPoint, L);
35119}
35120bool ByteCodeEmitter::emitInitPopPtr(SourceInfo L) {
35121 return emitOp<>(OP_InitPopPtr, L);
35122}
35123bool ByteCodeEmitter::emitInitPopMemberPtr(SourceInfo L) {
35124 return emitOp<>(OP_InitPopMemberPtr, L);
35125}
35126bool ByteCodeEmitter::emitInitPopFloat(SourceInfo L) {
35127 return emitOp<>(OP_InitPopFloat, L);
35128}
35129#endif
35130#ifdef GET_EVAL_IMPL
35131bool EvalEmitter::emitInitPopSint8(SourceInfo L) {
35132 if (!isActive()) return true;
35133 CurrentSource = L;
35134 return InitPop<PT_Sint8>(S, CodePtr());
35135}
35136bool EvalEmitter::emitInitPopUint8(SourceInfo L) {
35137 if (!isActive()) return true;
35138 CurrentSource = L;
35139 return InitPop<PT_Uint8>(S, CodePtr());
35140}
35141bool EvalEmitter::emitInitPopSint16(SourceInfo L) {
35142 if (!isActive()) return true;
35143 CurrentSource = L;
35144 return InitPop<PT_Sint16>(S, CodePtr());
35145}
35146bool EvalEmitter::emitInitPopUint16(SourceInfo L) {
35147 if (!isActive()) return true;
35148 CurrentSource = L;
35149 return InitPop<PT_Uint16>(S, CodePtr());
35150}
35151bool EvalEmitter::emitInitPopSint32(SourceInfo L) {
35152 if (!isActive()) return true;
35153 CurrentSource = L;
35154 return InitPop<PT_Sint32>(S, CodePtr());
35155}
35156bool EvalEmitter::emitInitPopUint32(SourceInfo L) {
35157 if (!isActive()) return true;
35158 CurrentSource = L;
35159 return InitPop<PT_Uint32>(S, CodePtr());
35160}
35161bool EvalEmitter::emitInitPopSint64(SourceInfo L) {
35162 if (!isActive()) return true;
35163 CurrentSource = L;
35164 return InitPop<PT_Sint64>(S, CodePtr());
35165}
35166bool EvalEmitter::emitInitPopUint64(SourceInfo L) {
35167 if (!isActive()) return true;
35168 CurrentSource = L;
35169 return InitPop<PT_Uint64>(S, CodePtr());
35170}
35171bool EvalEmitter::emitInitPopIntAP(SourceInfo L) {
35172 if (!isActive()) return true;
35173 CurrentSource = L;
35174 return InitPop<PT_IntAP>(S, CodePtr());
35175}
35176bool EvalEmitter::emitInitPopIntAPS(SourceInfo L) {
35177 if (!isActive()) return true;
35178 CurrentSource = L;
35179 return InitPop<PT_IntAPS>(S, CodePtr());
35180}
35181bool EvalEmitter::emitInitPopBool(SourceInfo L) {
35182 if (!isActive()) return true;
35183 CurrentSource = L;
35184 return InitPop<PT_Bool>(S, CodePtr());
35185}
35186bool EvalEmitter::emitInitPopFixedPoint(SourceInfo L) {
35187 if (!isActive()) return true;
35188 CurrentSource = L;
35189 return InitPop<PT_FixedPoint>(S, CodePtr());
35190}
35191bool EvalEmitter::emitInitPopPtr(SourceInfo L) {
35192 if (!isActive()) return true;
35193 CurrentSource = L;
35194 return InitPop<PT_Ptr>(S, CodePtr());
35195}
35196bool EvalEmitter::emitInitPopMemberPtr(SourceInfo L) {
35197 if (!isActive()) return true;
35198 CurrentSource = L;
35199 return InitPop<PT_MemberPtr>(S, CodePtr());
35200}
35201bool EvalEmitter::emitInitPopFloat(SourceInfo L) {
35202 if (!isActive()) return true;
35203 CurrentSource = L;
35204 return InitPop<PT_Float>(S, CodePtr());
35205}
35206#endif
35207#ifdef GET_OPCODE_NAMES
35208OP_InitScope,
35209#endif
35210#ifdef GET_INTERPFN_LIST
35211&Interp_InitScope,
35212#endif
35213#ifdef GET_INTERPFN_DISPATCHERS
35214PRESERVE_NONE
35215static bool Interp_InitScope(InterpState &S) {
35216 {
35217 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35218 InitScope(S, V0);
35219 }
35220#if USE_TAILCALLS
35221 MUSTTAIL return InterpNext(S);
35222#else
35223 return true;
35224#endif
35225}
35226#endif
35227#ifdef GET_DISASM
35228case OP_InitScope:
35229 Text.Op = PrintName("InitScope");
35230 Text.Args.push_back(printArg<uint32_t>(PC));
35231 break;
35232#endif
35233#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35234bool emitInitScope( uint32_t , SourceInfo);
35235#endif
35236#ifdef GET_LINK_IMPL
35237bool ByteCodeEmitter::emitInitScope( uint32_t A0, SourceInfo L) {
35238 return emitOp<uint32_t>(OP_InitScope, A0, L);
35239}
35240#endif
35241#ifdef GET_EVAL_IMPL
35242bool EvalEmitter::emitInitScope( uint32_t A0, SourceInfo L) {
35243 if (!isActive()) return true;
35244 CurrentSource = L;
35245 return InitScope(S, A0);
35246}
35247#endif
35248#ifdef GET_OPCODE_NAMES
35249OP_InitThisBitFieldSint8,
35250OP_InitThisBitFieldUint8,
35251OP_InitThisBitFieldSint16,
35252OP_InitThisBitFieldUint16,
35253OP_InitThisBitFieldSint32,
35254OP_InitThisBitFieldUint32,
35255OP_InitThisBitFieldSint64,
35256OP_InitThisBitFieldUint64,
35257OP_InitThisBitFieldIntAP,
35258OP_InitThisBitFieldIntAPS,
35259OP_InitThisBitFieldBool,
35260#endif
35261#ifdef GET_INTERPFN_LIST
35262&Interp_InitThisBitFieldSint8,
35263&Interp_InitThisBitFieldUint8,
35264&Interp_InitThisBitFieldSint16,
35265&Interp_InitThisBitFieldUint16,
35266&Interp_InitThisBitFieldSint32,
35267&Interp_InitThisBitFieldUint32,
35268&Interp_InitThisBitFieldSint64,
35269&Interp_InitThisBitFieldUint64,
35270&Interp_InitThisBitFieldIntAP,
35271&Interp_InitThisBitFieldIntAPS,
35272&Interp_InitThisBitFieldBool,
35273#endif
35274#ifdef GET_INTERPFN_DISPATCHERS
35275PRESERVE_NONE
35276static bool Interp_InitThisBitFieldSint8(InterpState &S) {
35277 {
35278 CodePtr OpPC = S.PC;
35279 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35280 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35281 if (!InitThisBitField<PT_Sint8>(S, OpPC, V0, V1)) return false;
35282 }
35283#if USE_TAILCALLS
35284 MUSTTAIL return InterpNext(S);
35285#else
35286 return true;
35287#endif
35288}
35289PRESERVE_NONE
35290static bool Interp_InitThisBitFieldUint8(InterpState &S) {
35291 {
35292 CodePtr OpPC = S.PC;
35293 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35294 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35295 if (!InitThisBitField<PT_Uint8>(S, OpPC, V0, V1)) return false;
35296 }
35297#if USE_TAILCALLS
35298 MUSTTAIL return InterpNext(S);
35299#else
35300 return true;
35301#endif
35302}
35303PRESERVE_NONE
35304static bool Interp_InitThisBitFieldSint16(InterpState &S) {
35305 {
35306 CodePtr OpPC = S.PC;
35307 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35308 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35309 if (!InitThisBitField<PT_Sint16>(S, OpPC, V0, V1)) return false;
35310 }
35311#if USE_TAILCALLS
35312 MUSTTAIL return InterpNext(S);
35313#else
35314 return true;
35315#endif
35316}
35317PRESERVE_NONE
35318static bool Interp_InitThisBitFieldUint16(InterpState &S) {
35319 {
35320 CodePtr OpPC = S.PC;
35321 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35322 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35323 if (!InitThisBitField<PT_Uint16>(S, OpPC, V0, V1)) return false;
35324 }
35325#if USE_TAILCALLS
35326 MUSTTAIL return InterpNext(S);
35327#else
35328 return true;
35329#endif
35330}
35331PRESERVE_NONE
35332static bool Interp_InitThisBitFieldSint32(InterpState &S) {
35333 {
35334 CodePtr OpPC = S.PC;
35335 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35336 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35337 if (!InitThisBitField<PT_Sint32>(S, OpPC, V0, V1)) return false;
35338 }
35339#if USE_TAILCALLS
35340 MUSTTAIL return InterpNext(S);
35341#else
35342 return true;
35343#endif
35344}
35345PRESERVE_NONE
35346static bool Interp_InitThisBitFieldUint32(InterpState &S) {
35347 {
35348 CodePtr OpPC = S.PC;
35349 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35350 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35351 if (!InitThisBitField<PT_Uint32>(S, OpPC, V0, V1)) return false;
35352 }
35353#if USE_TAILCALLS
35354 MUSTTAIL return InterpNext(S);
35355#else
35356 return true;
35357#endif
35358}
35359PRESERVE_NONE
35360static bool Interp_InitThisBitFieldSint64(InterpState &S) {
35361 {
35362 CodePtr OpPC = S.PC;
35363 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35364 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35365 if (!InitThisBitField<PT_Sint64>(S, OpPC, V0, V1)) return false;
35366 }
35367#if USE_TAILCALLS
35368 MUSTTAIL return InterpNext(S);
35369#else
35370 return true;
35371#endif
35372}
35373PRESERVE_NONE
35374static bool Interp_InitThisBitFieldUint64(InterpState &S) {
35375 {
35376 CodePtr OpPC = S.PC;
35377 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35378 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35379 if (!InitThisBitField<PT_Uint64>(S, OpPC, V0, V1)) return false;
35380 }
35381#if USE_TAILCALLS
35382 MUSTTAIL return InterpNext(S);
35383#else
35384 return true;
35385#endif
35386}
35387PRESERVE_NONE
35388static bool Interp_InitThisBitFieldIntAP(InterpState &S) {
35389 {
35390 CodePtr OpPC = S.PC;
35391 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35392 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35393 if (!InitThisBitField<PT_IntAP>(S, OpPC, V0, V1)) return false;
35394 }
35395#if USE_TAILCALLS
35396 MUSTTAIL return InterpNext(S);
35397#else
35398 return true;
35399#endif
35400}
35401PRESERVE_NONE
35402static bool Interp_InitThisBitFieldIntAPS(InterpState &S) {
35403 {
35404 CodePtr OpPC = S.PC;
35405 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35406 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35407 if (!InitThisBitField<PT_IntAPS>(S, OpPC, V0, V1)) return false;
35408 }
35409#if USE_TAILCALLS
35410 MUSTTAIL return InterpNext(S);
35411#else
35412 return true;
35413#endif
35414}
35415PRESERVE_NONE
35416static bool Interp_InitThisBitFieldBool(InterpState &S) {
35417 {
35418 CodePtr OpPC = S.PC;
35419 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35420 const auto V1 = ReadArg<uint32_t>(S, S.PC);
35421 if (!InitThisBitField<PT_Bool>(S, OpPC, V0, V1)) return false;
35422 }
35423#if USE_TAILCALLS
35424 MUSTTAIL return InterpNext(S);
35425#else
35426 return true;
35427#endif
35428}
35429#endif
35430#ifdef GET_DISASM
35431case OP_InitThisBitFieldSint8:
35432 Text.Op = PrintName("InitThisBitFieldSint8");
35433 Text.Args.push_back(printArg<uint32_t>(PC));
35434 Text.Args.push_back(printArg<uint32_t>(PC));
35435 break;
35436case OP_InitThisBitFieldUint8:
35437 Text.Op = PrintName("InitThisBitFieldUint8");
35438 Text.Args.push_back(printArg<uint32_t>(PC));
35439 Text.Args.push_back(printArg<uint32_t>(PC));
35440 break;
35441case OP_InitThisBitFieldSint16:
35442 Text.Op = PrintName("InitThisBitFieldSint16");
35443 Text.Args.push_back(printArg<uint32_t>(PC));
35444 Text.Args.push_back(printArg<uint32_t>(PC));
35445 break;
35446case OP_InitThisBitFieldUint16:
35447 Text.Op = PrintName("InitThisBitFieldUint16");
35448 Text.Args.push_back(printArg<uint32_t>(PC));
35449 Text.Args.push_back(printArg<uint32_t>(PC));
35450 break;
35451case OP_InitThisBitFieldSint32:
35452 Text.Op = PrintName("InitThisBitFieldSint32");
35453 Text.Args.push_back(printArg<uint32_t>(PC));
35454 Text.Args.push_back(printArg<uint32_t>(PC));
35455 break;
35456case OP_InitThisBitFieldUint32:
35457 Text.Op = PrintName("InitThisBitFieldUint32");
35458 Text.Args.push_back(printArg<uint32_t>(PC));
35459 Text.Args.push_back(printArg<uint32_t>(PC));
35460 break;
35461case OP_InitThisBitFieldSint64:
35462 Text.Op = PrintName("InitThisBitFieldSint64");
35463 Text.Args.push_back(printArg<uint32_t>(PC));
35464 Text.Args.push_back(printArg<uint32_t>(PC));
35465 break;
35466case OP_InitThisBitFieldUint64:
35467 Text.Op = PrintName("InitThisBitFieldUint64");
35468 Text.Args.push_back(printArg<uint32_t>(PC));
35469 Text.Args.push_back(printArg<uint32_t>(PC));
35470 break;
35471case OP_InitThisBitFieldIntAP:
35472 Text.Op = PrintName("InitThisBitFieldIntAP");
35473 Text.Args.push_back(printArg<uint32_t>(PC));
35474 Text.Args.push_back(printArg<uint32_t>(PC));
35475 break;
35476case OP_InitThisBitFieldIntAPS:
35477 Text.Op = PrintName("InitThisBitFieldIntAPS");
35478 Text.Args.push_back(printArg<uint32_t>(PC));
35479 Text.Args.push_back(printArg<uint32_t>(PC));
35480 break;
35481case OP_InitThisBitFieldBool:
35482 Text.Op = PrintName("InitThisBitFieldBool");
35483 Text.Args.push_back(printArg<uint32_t>(PC));
35484 Text.Args.push_back(printArg<uint32_t>(PC));
35485 break;
35486#endif
35487#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35488bool emitInitThisBitFieldSint8( uint32_t , uint32_t , SourceInfo);
35489bool emitInitThisBitFieldUint8( uint32_t , uint32_t , SourceInfo);
35490bool emitInitThisBitFieldSint16( uint32_t , uint32_t , SourceInfo);
35491bool emitInitThisBitFieldUint16( uint32_t , uint32_t , SourceInfo);
35492bool emitInitThisBitFieldSint32( uint32_t , uint32_t , SourceInfo);
35493bool emitInitThisBitFieldUint32( uint32_t , uint32_t , SourceInfo);
35494bool emitInitThisBitFieldSint64( uint32_t , uint32_t , SourceInfo);
35495bool emitInitThisBitFieldUint64( uint32_t , uint32_t , SourceInfo);
35496bool emitInitThisBitFieldIntAP( uint32_t , uint32_t , SourceInfo);
35497bool emitInitThisBitFieldIntAPS( uint32_t , uint32_t , SourceInfo);
35498bool emitInitThisBitFieldBool( uint32_t , uint32_t , SourceInfo);
35499#endif
35500#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35501[[nodiscard]] bool emitInitThisBitField(PrimType, uint32_t, uint32_t, SourceInfo I);
35502#endif
35503#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
35504bool
35505#if defined(GET_EVAL_IMPL)
35506EvalEmitter
35507#else
35508ByteCodeEmitter
35509#endif
35510::emitInitThisBitField(PrimType T0, uint32_t A0, uint32_t A1, SourceInfo I) {
35511 switch (T0) {
35512 case PT_Sint8:
35513 return emitInitThisBitFieldSint8(A0, A1, I);
35514 case PT_Uint8:
35515 return emitInitThisBitFieldUint8(A0, A1, I);
35516 case PT_Sint16:
35517 return emitInitThisBitFieldSint16(A0, A1, I);
35518 case PT_Uint16:
35519 return emitInitThisBitFieldUint16(A0, A1, I);
35520 case PT_Sint32:
35521 return emitInitThisBitFieldSint32(A0, A1, I);
35522 case PT_Uint32:
35523 return emitInitThisBitFieldUint32(A0, A1, I);
35524 case PT_Sint64:
35525 return emitInitThisBitFieldSint64(A0, A1, I);
35526 case PT_Uint64:
35527 return emitInitThisBitFieldUint64(A0, A1, I);
35528 case PT_IntAP:
35529 return emitInitThisBitFieldIntAP(A0, A1, I);
35530 case PT_IntAPS:
35531 return emitInitThisBitFieldIntAPS(A0, A1, I);
35532 case PT_Bool:
35533 return emitInitThisBitFieldBool(A0, A1, I);
35534 default: llvm_unreachable("invalid type: emitInitThisBitField");
35535 }
35536 llvm_unreachable("invalid enum value");
35537}
35538#endif
35539#ifdef GET_LINK_IMPL
35540bool ByteCodeEmitter::emitInitThisBitFieldSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
35541 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldSint8, A0, A1, L);
35542}
35543bool ByteCodeEmitter::emitInitThisBitFieldUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
35544 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldUint8, A0, A1, L);
35545}
35546bool ByteCodeEmitter::emitInitThisBitFieldSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
35547 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldSint16, A0, A1, L);
35548}
35549bool ByteCodeEmitter::emitInitThisBitFieldUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
35550 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldUint16, A0, A1, L);
35551}
35552bool ByteCodeEmitter::emitInitThisBitFieldSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
35553 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldSint32, A0, A1, L);
35554}
35555bool ByteCodeEmitter::emitInitThisBitFieldUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
35556 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldUint32, A0, A1, L);
35557}
35558bool ByteCodeEmitter::emitInitThisBitFieldSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
35559 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldSint64, A0, A1, L);
35560}
35561bool ByteCodeEmitter::emitInitThisBitFieldUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
35562 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldUint64, A0, A1, L);
35563}
35564bool ByteCodeEmitter::emitInitThisBitFieldIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
35565 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldIntAP, A0, A1, L);
35566}
35567bool ByteCodeEmitter::emitInitThisBitFieldIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
35568 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldIntAPS, A0, A1, L);
35569}
35570bool ByteCodeEmitter::emitInitThisBitFieldBool( uint32_t A0, uint32_t A1, SourceInfo L) {
35571 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldBool, A0, A1, L);
35572}
35573#endif
35574#ifdef GET_EVAL_IMPL
35575bool EvalEmitter::emitInitThisBitFieldSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
35576 if (!isActive()) return true;
35577 CurrentSource = L;
35578 return InitThisBitField<PT_Sint8>(S, CodePtr(), A0, A1);
35579}
35580bool EvalEmitter::emitInitThisBitFieldUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
35581 if (!isActive()) return true;
35582 CurrentSource = L;
35583 return InitThisBitField<PT_Uint8>(S, CodePtr(), A0, A1);
35584}
35585bool EvalEmitter::emitInitThisBitFieldSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
35586 if (!isActive()) return true;
35587 CurrentSource = L;
35588 return InitThisBitField<PT_Sint16>(S, CodePtr(), A0, A1);
35589}
35590bool EvalEmitter::emitInitThisBitFieldUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
35591 if (!isActive()) return true;
35592 CurrentSource = L;
35593 return InitThisBitField<PT_Uint16>(S, CodePtr(), A0, A1);
35594}
35595bool EvalEmitter::emitInitThisBitFieldSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
35596 if (!isActive()) return true;
35597 CurrentSource = L;
35598 return InitThisBitField<PT_Sint32>(S, CodePtr(), A0, A1);
35599}
35600bool EvalEmitter::emitInitThisBitFieldUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
35601 if (!isActive()) return true;
35602 CurrentSource = L;
35603 return InitThisBitField<PT_Uint32>(S, CodePtr(), A0, A1);
35604}
35605bool EvalEmitter::emitInitThisBitFieldSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
35606 if (!isActive()) return true;
35607 CurrentSource = L;
35608 return InitThisBitField<PT_Sint64>(S, CodePtr(), A0, A1);
35609}
35610bool EvalEmitter::emitInitThisBitFieldUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
35611 if (!isActive()) return true;
35612 CurrentSource = L;
35613 return InitThisBitField<PT_Uint64>(S, CodePtr(), A0, A1);
35614}
35615bool EvalEmitter::emitInitThisBitFieldIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
35616 if (!isActive()) return true;
35617 CurrentSource = L;
35618 return InitThisBitField<PT_IntAP>(S, CodePtr(), A0, A1);
35619}
35620bool EvalEmitter::emitInitThisBitFieldIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
35621 if (!isActive()) return true;
35622 CurrentSource = L;
35623 return InitThisBitField<PT_IntAPS>(S, CodePtr(), A0, A1);
35624}
35625bool EvalEmitter::emitInitThisBitFieldBool( uint32_t A0, uint32_t A1, SourceInfo L) {
35626 if (!isActive()) return true;
35627 CurrentSource = L;
35628 return InitThisBitField<PT_Bool>(S, CodePtr(), A0, A1);
35629}
35630#endif
35631#ifdef GET_OPCODE_NAMES
35632OP_InitThisFieldSint8,
35633OP_InitThisFieldUint8,
35634OP_InitThisFieldSint16,
35635OP_InitThisFieldUint16,
35636OP_InitThisFieldSint32,
35637OP_InitThisFieldUint32,
35638OP_InitThisFieldSint64,
35639OP_InitThisFieldUint64,
35640OP_InitThisFieldIntAP,
35641OP_InitThisFieldIntAPS,
35642OP_InitThisFieldBool,
35643OP_InitThisFieldFixedPoint,
35644OP_InitThisFieldPtr,
35645OP_InitThisFieldMemberPtr,
35646OP_InitThisFieldFloat,
35647#endif
35648#ifdef GET_INTERPFN_LIST
35649&Interp_InitThisFieldSint8,
35650&Interp_InitThisFieldUint8,
35651&Interp_InitThisFieldSint16,
35652&Interp_InitThisFieldUint16,
35653&Interp_InitThisFieldSint32,
35654&Interp_InitThisFieldUint32,
35655&Interp_InitThisFieldSint64,
35656&Interp_InitThisFieldUint64,
35657&Interp_InitThisFieldIntAP,
35658&Interp_InitThisFieldIntAPS,
35659&Interp_InitThisFieldBool,
35660&Interp_InitThisFieldFixedPoint,
35661&Interp_InitThisFieldPtr,
35662&Interp_InitThisFieldMemberPtr,
35663&Interp_InitThisFieldFloat,
35664#endif
35665#ifdef GET_INTERPFN_DISPATCHERS
35666PRESERVE_NONE
35667static bool Interp_InitThisFieldSint8(InterpState &S) {
35668 {
35669 CodePtr OpPC = S.PC;
35670 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35671 if (!InitThisField<PT_Sint8>(S, OpPC, V0)) return false;
35672 }
35673#if USE_TAILCALLS
35674 MUSTTAIL return InterpNext(S);
35675#else
35676 return true;
35677#endif
35678}
35679PRESERVE_NONE
35680static bool Interp_InitThisFieldUint8(InterpState &S) {
35681 {
35682 CodePtr OpPC = S.PC;
35683 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35684 if (!InitThisField<PT_Uint8>(S, OpPC, V0)) return false;
35685 }
35686#if USE_TAILCALLS
35687 MUSTTAIL return InterpNext(S);
35688#else
35689 return true;
35690#endif
35691}
35692PRESERVE_NONE
35693static bool Interp_InitThisFieldSint16(InterpState &S) {
35694 {
35695 CodePtr OpPC = S.PC;
35696 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35697 if (!InitThisField<PT_Sint16>(S, OpPC, V0)) return false;
35698 }
35699#if USE_TAILCALLS
35700 MUSTTAIL return InterpNext(S);
35701#else
35702 return true;
35703#endif
35704}
35705PRESERVE_NONE
35706static bool Interp_InitThisFieldUint16(InterpState &S) {
35707 {
35708 CodePtr OpPC = S.PC;
35709 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35710 if (!InitThisField<PT_Uint16>(S, OpPC, V0)) return false;
35711 }
35712#if USE_TAILCALLS
35713 MUSTTAIL return InterpNext(S);
35714#else
35715 return true;
35716#endif
35717}
35718PRESERVE_NONE
35719static bool Interp_InitThisFieldSint32(InterpState &S) {
35720 {
35721 CodePtr OpPC = S.PC;
35722 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35723 if (!InitThisField<PT_Sint32>(S, OpPC, V0)) return false;
35724 }
35725#if USE_TAILCALLS
35726 MUSTTAIL return InterpNext(S);
35727#else
35728 return true;
35729#endif
35730}
35731PRESERVE_NONE
35732static bool Interp_InitThisFieldUint32(InterpState &S) {
35733 {
35734 CodePtr OpPC = S.PC;
35735 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35736 if (!InitThisField<PT_Uint32>(S, OpPC, V0)) return false;
35737 }
35738#if USE_TAILCALLS
35739 MUSTTAIL return InterpNext(S);
35740#else
35741 return true;
35742#endif
35743}
35744PRESERVE_NONE
35745static bool Interp_InitThisFieldSint64(InterpState &S) {
35746 {
35747 CodePtr OpPC = S.PC;
35748 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35749 if (!InitThisField<PT_Sint64>(S, OpPC, V0)) return false;
35750 }
35751#if USE_TAILCALLS
35752 MUSTTAIL return InterpNext(S);
35753#else
35754 return true;
35755#endif
35756}
35757PRESERVE_NONE
35758static bool Interp_InitThisFieldUint64(InterpState &S) {
35759 {
35760 CodePtr OpPC = S.PC;
35761 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35762 if (!InitThisField<PT_Uint64>(S, OpPC, V0)) return false;
35763 }
35764#if USE_TAILCALLS
35765 MUSTTAIL return InterpNext(S);
35766#else
35767 return true;
35768#endif
35769}
35770PRESERVE_NONE
35771static bool Interp_InitThisFieldIntAP(InterpState &S) {
35772 {
35773 CodePtr OpPC = S.PC;
35774 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35775 if (!InitThisField<PT_IntAP>(S, OpPC, V0)) return false;
35776 }
35777#if USE_TAILCALLS
35778 MUSTTAIL return InterpNext(S);
35779#else
35780 return true;
35781#endif
35782}
35783PRESERVE_NONE
35784static bool Interp_InitThisFieldIntAPS(InterpState &S) {
35785 {
35786 CodePtr OpPC = S.PC;
35787 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35788 if (!InitThisField<PT_IntAPS>(S, OpPC, V0)) return false;
35789 }
35790#if USE_TAILCALLS
35791 MUSTTAIL return InterpNext(S);
35792#else
35793 return true;
35794#endif
35795}
35796PRESERVE_NONE
35797static bool Interp_InitThisFieldBool(InterpState &S) {
35798 {
35799 CodePtr OpPC = S.PC;
35800 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35801 if (!InitThisField<PT_Bool>(S, OpPC, V0)) return false;
35802 }
35803#if USE_TAILCALLS
35804 MUSTTAIL return InterpNext(S);
35805#else
35806 return true;
35807#endif
35808}
35809PRESERVE_NONE
35810static bool Interp_InitThisFieldFixedPoint(InterpState &S) {
35811 {
35812 CodePtr OpPC = S.PC;
35813 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35814 if (!InitThisField<PT_FixedPoint>(S, OpPC, V0)) return false;
35815 }
35816#if USE_TAILCALLS
35817 MUSTTAIL return InterpNext(S);
35818#else
35819 return true;
35820#endif
35821}
35822PRESERVE_NONE
35823static bool Interp_InitThisFieldPtr(InterpState &S) {
35824 {
35825 CodePtr OpPC = S.PC;
35826 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35827 if (!InitThisField<PT_Ptr>(S, OpPC, V0)) return false;
35828 }
35829#if USE_TAILCALLS
35830 MUSTTAIL return InterpNext(S);
35831#else
35832 return true;
35833#endif
35834}
35835PRESERVE_NONE
35836static bool Interp_InitThisFieldMemberPtr(InterpState &S) {
35837 {
35838 CodePtr OpPC = S.PC;
35839 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35840 if (!InitThisField<PT_MemberPtr>(S, OpPC, V0)) return false;
35841 }
35842#if USE_TAILCALLS
35843 MUSTTAIL return InterpNext(S);
35844#else
35845 return true;
35846#endif
35847}
35848PRESERVE_NONE
35849static bool Interp_InitThisFieldFloat(InterpState &S) {
35850 {
35851 CodePtr OpPC = S.PC;
35852 const auto V0 = ReadArg<uint32_t>(S, S.PC);
35853 if (!InitThisField<PT_Float>(S, OpPC, V0)) return false;
35854 }
35855#if USE_TAILCALLS
35856 MUSTTAIL return InterpNext(S);
35857#else
35858 return true;
35859#endif
35860}
35861#endif
35862#ifdef GET_DISASM
35863case OP_InitThisFieldSint8:
35864 Text.Op = PrintName("InitThisFieldSint8");
35865 Text.Args.push_back(printArg<uint32_t>(PC));
35866 break;
35867case OP_InitThisFieldUint8:
35868 Text.Op = PrintName("InitThisFieldUint8");
35869 Text.Args.push_back(printArg<uint32_t>(PC));
35870 break;
35871case OP_InitThisFieldSint16:
35872 Text.Op = PrintName("InitThisFieldSint16");
35873 Text.Args.push_back(printArg<uint32_t>(PC));
35874 break;
35875case OP_InitThisFieldUint16:
35876 Text.Op = PrintName("InitThisFieldUint16");
35877 Text.Args.push_back(printArg<uint32_t>(PC));
35878 break;
35879case OP_InitThisFieldSint32:
35880 Text.Op = PrintName("InitThisFieldSint32");
35881 Text.Args.push_back(printArg<uint32_t>(PC));
35882 break;
35883case OP_InitThisFieldUint32:
35884 Text.Op = PrintName("InitThisFieldUint32");
35885 Text.Args.push_back(printArg<uint32_t>(PC));
35886 break;
35887case OP_InitThisFieldSint64:
35888 Text.Op = PrintName("InitThisFieldSint64");
35889 Text.Args.push_back(printArg<uint32_t>(PC));
35890 break;
35891case OP_InitThisFieldUint64:
35892 Text.Op = PrintName("InitThisFieldUint64");
35893 Text.Args.push_back(printArg<uint32_t>(PC));
35894 break;
35895case OP_InitThisFieldIntAP:
35896 Text.Op = PrintName("InitThisFieldIntAP");
35897 Text.Args.push_back(printArg<uint32_t>(PC));
35898 break;
35899case OP_InitThisFieldIntAPS:
35900 Text.Op = PrintName("InitThisFieldIntAPS");
35901 Text.Args.push_back(printArg<uint32_t>(PC));
35902 break;
35903case OP_InitThisFieldBool:
35904 Text.Op = PrintName("InitThisFieldBool");
35905 Text.Args.push_back(printArg<uint32_t>(PC));
35906 break;
35907case OP_InitThisFieldFixedPoint:
35908 Text.Op = PrintName("InitThisFieldFixedPoint");
35909 Text.Args.push_back(printArg<uint32_t>(PC));
35910 break;
35911case OP_InitThisFieldPtr:
35912 Text.Op = PrintName("InitThisFieldPtr");
35913 Text.Args.push_back(printArg<uint32_t>(PC));
35914 break;
35915case OP_InitThisFieldMemberPtr:
35916 Text.Op = PrintName("InitThisFieldMemberPtr");
35917 Text.Args.push_back(printArg<uint32_t>(PC));
35918 break;
35919case OP_InitThisFieldFloat:
35920 Text.Op = PrintName("InitThisFieldFloat");
35921 Text.Args.push_back(printArg<uint32_t>(PC));
35922 break;
35923#endif
35924#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35925bool emitInitThisFieldSint8( uint32_t , SourceInfo);
35926bool emitInitThisFieldUint8( uint32_t , SourceInfo);
35927bool emitInitThisFieldSint16( uint32_t , SourceInfo);
35928bool emitInitThisFieldUint16( uint32_t , SourceInfo);
35929bool emitInitThisFieldSint32( uint32_t , SourceInfo);
35930bool emitInitThisFieldUint32( uint32_t , SourceInfo);
35931bool emitInitThisFieldSint64( uint32_t , SourceInfo);
35932bool emitInitThisFieldUint64( uint32_t , SourceInfo);
35933bool emitInitThisFieldIntAP( uint32_t , SourceInfo);
35934bool emitInitThisFieldIntAPS( uint32_t , SourceInfo);
35935bool emitInitThisFieldBool( uint32_t , SourceInfo);
35936bool emitInitThisFieldFixedPoint( uint32_t , SourceInfo);
35937bool emitInitThisFieldPtr( uint32_t , SourceInfo);
35938bool emitInitThisFieldMemberPtr( uint32_t , SourceInfo);
35939bool emitInitThisFieldFloat( uint32_t , SourceInfo);
35940#endif
35941#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35942[[nodiscard]] bool emitInitThisField(PrimType, uint32_t, SourceInfo I);
35943#endif
35944#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
35945bool
35946#if defined(GET_EVAL_IMPL)
35947EvalEmitter
35948#else
35949ByteCodeEmitter
35950#endif
35951::emitInitThisField(PrimType T0, uint32_t A0, SourceInfo I) {
35952 switch (T0) {
35953 case PT_Sint8:
35954 return emitInitThisFieldSint8(A0, I);
35955 case PT_Uint8:
35956 return emitInitThisFieldUint8(A0, I);
35957 case PT_Sint16:
35958 return emitInitThisFieldSint16(A0, I);
35959 case PT_Uint16:
35960 return emitInitThisFieldUint16(A0, I);
35961 case PT_Sint32:
35962 return emitInitThisFieldSint32(A0, I);
35963 case PT_Uint32:
35964 return emitInitThisFieldUint32(A0, I);
35965 case PT_Sint64:
35966 return emitInitThisFieldSint64(A0, I);
35967 case PT_Uint64:
35968 return emitInitThisFieldUint64(A0, I);
35969 case PT_IntAP:
35970 return emitInitThisFieldIntAP(A0, I);
35971 case PT_IntAPS:
35972 return emitInitThisFieldIntAPS(A0, I);
35973 case PT_Bool:
35974 return emitInitThisFieldBool(A0, I);
35975 case PT_FixedPoint:
35976 return emitInitThisFieldFixedPoint(A0, I);
35977 case PT_Ptr:
35978 return emitInitThisFieldPtr(A0, I);
35979 case PT_MemberPtr:
35980 return emitInitThisFieldMemberPtr(A0, I);
35981 case PT_Float:
35982 return emitInitThisFieldFloat(A0, I);
35983 }
35984 llvm_unreachable("invalid enum value");
35985}
35986#endif
35987#ifdef GET_LINK_IMPL
35988bool ByteCodeEmitter::emitInitThisFieldSint8( uint32_t A0, SourceInfo L) {
35989 return emitOp<uint32_t>(OP_InitThisFieldSint8, A0, L);
35990}
35991bool ByteCodeEmitter::emitInitThisFieldUint8( uint32_t A0, SourceInfo L) {
35992 return emitOp<uint32_t>(OP_InitThisFieldUint8, A0, L);
35993}
35994bool ByteCodeEmitter::emitInitThisFieldSint16( uint32_t A0, SourceInfo L) {
35995 return emitOp<uint32_t>(OP_InitThisFieldSint16, A0, L);
35996}
35997bool ByteCodeEmitter::emitInitThisFieldUint16( uint32_t A0, SourceInfo L) {
35998 return emitOp<uint32_t>(OP_InitThisFieldUint16, A0, L);
35999}
36000bool ByteCodeEmitter::emitInitThisFieldSint32( uint32_t A0, SourceInfo L) {
36001 return emitOp<uint32_t>(OP_InitThisFieldSint32, A0, L);
36002}
36003bool ByteCodeEmitter::emitInitThisFieldUint32( uint32_t A0, SourceInfo L) {
36004 return emitOp<uint32_t>(OP_InitThisFieldUint32, A0, L);
36005}
36006bool ByteCodeEmitter::emitInitThisFieldSint64( uint32_t A0, SourceInfo L) {
36007 return emitOp<uint32_t>(OP_InitThisFieldSint64, A0, L);
36008}
36009bool ByteCodeEmitter::emitInitThisFieldUint64( uint32_t A0, SourceInfo L) {
36010 return emitOp<uint32_t>(OP_InitThisFieldUint64, A0, L);
36011}
36012bool ByteCodeEmitter::emitInitThisFieldIntAP( uint32_t A0, SourceInfo L) {
36013 return emitOp<uint32_t>(OP_InitThisFieldIntAP, A0, L);
36014}
36015bool ByteCodeEmitter::emitInitThisFieldIntAPS( uint32_t A0, SourceInfo L) {
36016 return emitOp<uint32_t>(OP_InitThisFieldIntAPS, A0, L);
36017}
36018bool ByteCodeEmitter::emitInitThisFieldBool( uint32_t A0, SourceInfo L) {
36019 return emitOp<uint32_t>(OP_InitThisFieldBool, A0, L);
36020}
36021bool ByteCodeEmitter::emitInitThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
36022 return emitOp<uint32_t>(OP_InitThisFieldFixedPoint, A0, L);
36023}
36024bool ByteCodeEmitter::emitInitThisFieldPtr( uint32_t A0, SourceInfo L) {
36025 return emitOp<uint32_t>(OP_InitThisFieldPtr, A0, L);
36026}
36027bool ByteCodeEmitter::emitInitThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
36028 return emitOp<uint32_t>(OP_InitThisFieldMemberPtr, A0, L);
36029}
36030bool ByteCodeEmitter::emitInitThisFieldFloat( uint32_t A0, SourceInfo L) {
36031 return emitOp<uint32_t>(OP_InitThisFieldFloat, A0, L);
36032}
36033#endif
36034#ifdef GET_EVAL_IMPL
36035bool EvalEmitter::emitInitThisFieldSint8( uint32_t A0, SourceInfo L) {
36036 if (!isActive()) return true;
36037 CurrentSource = L;
36038 return InitThisField<PT_Sint8>(S, CodePtr(), A0);
36039}
36040bool EvalEmitter::emitInitThisFieldUint8( uint32_t A0, SourceInfo L) {
36041 if (!isActive()) return true;
36042 CurrentSource = L;
36043 return InitThisField<PT_Uint8>(S, CodePtr(), A0);
36044}
36045bool EvalEmitter::emitInitThisFieldSint16( uint32_t A0, SourceInfo L) {
36046 if (!isActive()) return true;
36047 CurrentSource = L;
36048 return InitThisField<PT_Sint16>(S, CodePtr(), A0);
36049}
36050bool EvalEmitter::emitInitThisFieldUint16( uint32_t A0, SourceInfo L) {
36051 if (!isActive()) return true;
36052 CurrentSource = L;
36053 return InitThisField<PT_Uint16>(S, CodePtr(), A0);
36054}
36055bool EvalEmitter::emitInitThisFieldSint32( uint32_t A0, SourceInfo L) {
36056 if (!isActive()) return true;
36057 CurrentSource = L;
36058 return InitThisField<PT_Sint32>(S, CodePtr(), A0);
36059}
36060bool EvalEmitter::emitInitThisFieldUint32( uint32_t A0, SourceInfo L) {
36061 if (!isActive()) return true;
36062 CurrentSource = L;
36063 return InitThisField<PT_Uint32>(S, CodePtr(), A0);
36064}
36065bool EvalEmitter::emitInitThisFieldSint64( uint32_t A0, SourceInfo L) {
36066 if (!isActive()) return true;
36067 CurrentSource = L;
36068 return InitThisField<PT_Sint64>(S, CodePtr(), A0);
36069}
36070bool EvalEmitter::emitInitThisFieldUint64( uint32_t A0, SourceInfo L) {
36071 if (!isActive()) return true;
36072 CurrentSource = L;
36073 return InitThisField<PT_Uint64>(S, CodePtr(), A0);
36074}
36075bool EvalEmitter::emitInitThisFieldIntAP( uint32_t A0, SourceInfo L) {
36076 if (!isActive()) return true;
36077 CurrentSource = L;
36078 return InitThisField<PT_IntAP>(S, CodePtr(), A0);
36079}
36080bool EvalEmitter::emitInitThisFieldIntAPS( uint32_t A0, SourceInfo L) {
36081 if (!isActive()) return true;
36082 CurrentSource = L;
36083 return InitThisField<PT_IntAPS>(S, CodePtr(), A0);
36084}
36085bool EvalEmitter::emitInitThisFieldBool( uint32_t A0, SourceInfo L) {
36086 if (!isActive()) return true;
36087 CurrentSource = L;
36088 return InitThisField<PT_Bool>(S, CodePtr(), A0);
36089}
36090bool EvalEmitter::emitInitThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
36091 if (!isActive()) return true;
36092 CurrentSource = L;
36093 return InitThisField<PT_FixedPoint>(S, CodePtr(), A0);
36094}
36095bool EvalEmitter::emitInitThisFieldPtr( uint32_t A0, SourceInfo L) {
36096 if (!isActive()) return true;
36097 CurrentSource = L;
36098 return InitThisField<PT_Ptr>(S, CodePtr(), A0);
36099}
36100bool EvalEmitter::emitInitThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
36101 if (!isActive()) return true;
36102 CurrentSource = L;
36103 return InitThisField<PT_MemberPtr>(S, CodePtr(), A0);
36104}
36105bool EvalEmitter::emitInitThisFieldFloat( uint32_t A0, SourceInfo L) {
36106 if (!isActive()) return true;
36107 CurrentSource = L;
36108 return InitThisField<PT_Float>(S, CodePtr(), A0);
36109}
36110#endif
36111#ifdef GET_OPCODE_NAMES
36112OP_InitThisFieldActivateSint8,
36113OP_InitThisFieldActivateUint8,
36114OP_InitThisFieldActivateSint16,
36115OP_InitThisFieldActivateUint16,
36116OP_InitThisFieldActivateSint32,
36117OP_InitThisFieldActivateUint32,
36118OP_InitThisFieldActivateSint64,
36119OP_InitThisFieldActivateUint64,
36120OP_InitThisFieldActivateIntAP,
36121OP_InitThisFieldActivateIntAPS,
36122OP_InitThisFieldActivateBool,
36123OP_InitThisFieldActivateFixedPoint,
36124OP_InitThisFieldActivatePtr,
36125OP_InitThisFieldActivateMemberPtr,
36126OP_InitThisFieldActivateFloat,
36127#endif
36128#ifdef GET_INTERPFN_LIST
36129&Interp_InitThisFieldActivateSint8,
36130&Interp_InitThisFieldActivateUint8,
36131&Interp_InitThisFieldActivateSint16,
36132&Interp_InitThisFieldActivateUint16,
36133&Interp_InitThisFieldActivateSint32,
36134&Interp_InitThisFieldActivateUint32,
36135&Interp_InitThisFieldActivateSint64,
36136&Interp_InitThisFieldActivateUint64,
36137&Interp_InitThisFieldActivateIntAP,
36138&Interp_InitThisFieldActivateIntAPS,
36139&Interp_InitThisFieldActivateBool,
36140&Interp_InitThisFieldActivateFixedPoint,
36141&Interp_InitThisFieldActivatePtr,
36142&Interp_InitThisFieldActivateMemberPtr,
36143&Interp_InitThisFieldActivateFloat,
36144#endif
36145#ifdef GET_INTERPFN_DISPATCHERS
36146PRESERVE_NONE
36147static bool Interp_InitThisFieldActivateSint8(InterpState &S) {
36148 {
36149 CodePtr OpPC = S.PC;
36150 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36151 if (!InitThisFieldActivate<PT_Sint8>(S, OpPC, V0)) return false;
36152 }
36153#if USE_TAILCALLS
36154 MUSTTAIL return InterpNext(S);
36155#else
36156 return true;
36157#endif
36158}
36159PRESERVE_NONE
36160static bool Interp_InitThisFieldActivateUint8(InterpState &S) {
36161 {
36162 CodePtr OpPC = S.PC;
36163 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36164 if (!InitThisFieldActivate<PT_Uint8>(S, OpPC, V0)) return false;
36165 }
36166#if USE_TAILCALLS
36167 MUSTTAIL return InterpNext(S);
36168#else
36169 return true;
36170#endif
36171}
36172PRESERVE_NONE
36173static bool Interp_InitThisFieldActivateSint16(InterpState &S) {
36174 {
36175 CodePtr OpPC = S.PC;
36176 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36177 if (!InitThisFieldActivate<PT_Sint16>(S, OpPC, V0)) return false;
36178 }
36179#if USE_TAILCALLS
36180 MUSTTAIL return InterpNext(S);
36181#else
36182 return true;
36183#endif
36184}
36185PRESERVE_NONE
36186static bool Interp_InitThisFieldActivateUint16(InterpState &S) {
36187 {
36188 CodePtr OpPC = S.PC;
36189 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36190 if (!InitThisFieldActivate<PT_Uint16>(S, OpPC, V0)) return false;
36191 }
36192#if USE_TAILCALLS
36193 MUSTTAIL return InterpNext(S);
36194#else
36195 return true;
36196#endif
36197}
36198PRESERVE_NONE
36199static bool Interp_InitThisFieldActivateSint32(InterpState &S) {
36200 {
36201 CodePtr OpPC = S.PC;
36202 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36203 if (!InitThisFieldActivate<PT_Sint32>(S, OpPC, V0)) return false;
36204 }
36205#if USE_TAILCALLS
36206 MUSTTAIL return InterpNext(S);
36207#else
36208 return true;
36209#endif
36210}
36211PRESERVE_NONE
36212static bool Interp_InitThisFieldActivateUint32(InterpState &S) {
36213 {
36214 CodePtr OpPC = S.PC;
36215 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36216 if (!InitThisFieldActivate<PT_Uint32>(S, OpPC, V0)) return false;
36217 }
36218#if USE_TAILCALLS
36219 MUSTTAIL return InterpNext(S);
36220#else
36221 return true;
36222#endif
36223}
36224PRESERVE_NONE
36225static bool Interp_InitThisFieldActivateSint64(InterpState &S) {
36226 {
36227 CodePtr OpPC = S.PC;
36228 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36229 if (!InitThisFieldActivate<PT_Sint64>(S, OpPC, V0)) return false;
36230 }
36231#if USE_TAILCALLS
36232 MUSTTAIL return InterpNext(S);
36233#else
36234 return true;
36235#endif
36236}
36237PRESERVE_NONE
36238static bool Interp_InitThisFieldActivateUint64(InterpState &S) {
36239 {
36240 CodePtr OpPC = S.PC;
36241 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36242 if (!InitThisFieldActivate<PT_Uint64>(S, OpPC, V0)) return false;
36243 }
36244#if USE_TAILCALLS
36245 MUSTTAIL return InterpNext(S);
36246#else
36247 return true;
36248#endif
36249}
36250PRESERVE_NONE
36251static bool Interp_InitThisFieldActivateIntAP(InterpState &S) {
36252 {
36253 CodePtr OpPC = S.PC;
36254 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36255 if (!InitThisFieldActivate<PT_IntAP>(S, OpPC, V0)) return false;
36256 }
36257#if USE_TAILCALLS
36258 MUSTTAIL return InterpNext(S);
36259#else
36260 return true;
36261#endif
36262}
36263PRESERVE_NONE
36264static bool Interp_InitThisFieldActivateIntAPS(InterpState &S) {
36265 {
36266 CodePtr OpPC = S.PC;
36267 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36268 if (!InitThisFieldActivate<PT_IntAPS>(S, OpPC, V0)) return false;
36269 }
36270#if USE_TAILCALLS
36271 MUSTTAIL return InterpNext(S);
36272#else
36273 return true;
36274#endif
36275}
36276PRESERVE_NONE
36277static bool Interp_InitThisFieldActivateBool(InterpState &S) {
36278 {
36279 CodePtr OpPC = S.PC;
36280 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36281 if (!InitThisFieldActivate<PT_Bool>(S, OpPC, V0)) return false;
36282 }
36283#if USE_TAILCALLS
36284 MUSTTAIL return InterpNext(S);
36285#else
36286 return true;
36287#endif
36288}
36289PRESERVE_NONE
36290static bool Interp_InitThisFieldActivateFixedPoint(InterpState &S) {
36291 {
36292 CodePtr OpPC = S.PC;
36293 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36294 if (!InitThisFieldActivate<PT_FixedPoint>(S, OpPC, V0)) return false;
36295 }
36296#if USE_TAILCALLS
36297 MUSTTAIL return InterpNext(S);
36298#else
36299 return true;
36300#endif
36301}
36302PRESERVE_NONE
36303static bool Interp_InitThisFieldActivatePtr(InterpState &S) {
36304 {
36305 CodePtr OpPC = S.PC;
36306 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36307 if (!InitThisFieldActivate<PT_Ptr>(S, OpPC, V0)) return false;
36308 }
36309#if USE_TAILCALLS
36310 MUSTTAIL return InterpNext(S);
36311#else
36312 return true;
36313#endif
36314}
36315PRESERVE_NONE
36316static bool Interp_InitThisFieldActivateMemberPtr(InterpState &S) {
36317 {
36318 CodePtr OpPC = S.PC;
36319 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36320 if (!InitThisFieldActivate<PT_MemberPtr>(S, OpPC, V0)) return false;
36321 }
36322#if USE_TAILCALLS
36323 MUSTTAIL return InterpNext(S);
36324#else
36325 return true;
36326#endif
36327}
36328PRESERVE_NONE
36329static bool Interp_InitThisFieldActivateFloat(InterpState &S) {
36330 {
36331 CodePtr OpPC = S.PC;
36332 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36333 if (!InitThisFieldActivate<PT_Float>(S, OpPC, V0)) return false;
36334 }
36335#if USE_TAILCALLS
36336 MUSTTAIL return InterpNext(S);
36337#else
36338 return true;
36339#endif
36340}
36341#endif
36342#ifdef GET_DISASM
36343case OP_InitThisFieldActivateSint8:
36344 Text.Op = PrintName("InitThisFieldActivateSint8");
36345 Text.Args.push_back(printArg<uint32_t>(PC));
36346 break;
36347case OP_InitThisFieldActivateUint8:
36348 Text.Op = PrintName("InitThisFieldActivateUint8");
36349 Text.Args.push_back(printArg<uint32_t>(PC));
36350 break;
36351case OP_InitThisFieldActivateSint16:
36352 Text.Op = PrintName("InitThisFieldActivateSint16");
36353 Text.Args.push_back(printArg<uint32_t>(PC));
36354 break;
36355case OP_InitThisFieldActivateUint16:
36356 Text.Op = PrintName("InitThisFieldActivateUint16");
36357 Text.Args.push_back(printArg<uint32_t>(PC));
36358 break;
36359case OP_InitThisFieldActivateSint32:
36360 Text.Op = PrintName("InitThisFieldActivateSint32");
36361 Text.Args.push_back(printArg<uint32_t>(PC));
36362 break;
36363case OP_InitThisFieldActivateUint32:
36364 Text.Op = PrintName("InitThisFieldActivateUint32");
36365 Text.Args.push_back(printArg<uint32_t>(PC));
36366 break;
36367case OP_InitThisFieldActivateSint64:
36368 Text.Op = PrintName("InitThisFieldActivateSint64");
36369 Text.Args.push_back(printArg<uint32_t>(PC));
36370 break;
36371case OP_InitThisFieldActivateUint64:
36372 Text.Op = PrintName("InitThisFieldActivateUint64");
36373 Text.Args.push_back(printArg<uint32_t>(PC));
36374 break;
36375case OP_InitThisFieldActivateIntAP:
36376 Text.Op = PrintName("InitThisFieldActivateIntAP");
36377 Text.Args.push_back(printArg<uint32_t>(PC));
36378 break;
36379case OP_InitThisFieldActivateIntAPS:
36380 Text.Op = PrintName("InitThisFieldActivateIntAPS");
36381 Text.Args.push_back(printArg<uint32_t>(PC));
36382 break;
36383case OP_InitThisFieldActivateBool:
36384 Text.Op = PrintName("InitThisFieldActivateBool");
36385 Text.Args.push_back(printArg<uint32_t>(PC));
36386 break;
36387case OP_InitThisFieldActivateFixedPoint:
36388 Text.Op = PrintName("InitThisFieldActivateFixedPoint");
36389 Text.Args.push_back(printArg<uint32_t>(PC));
36390 break;
36391case OP_InitThisFieldActivatePtr:
36392 Text.Op = PrintName("InitThisFieldActivatePtr");
36393 Text.Args.push_back(printArg<uint32_t>(PC));
36394 break;
36395case OP_InitThisFieldActivateMemberPtr:
36396 Text.Op = PrintName("InitThisFieldActivateMemberPtr");
36397 Text.Args.push_back(printArg<uint32_t>(PC));
36398 break;
36399case OP_InitThisFieldActivateFloat:
36400 Text.Op = PrintName("InitThisFieldActivateFloat");
36401 Text.Args.push_back(printArg<uint32_t>(PC));
36402 break;
36403#endif
36404#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36405bool emitInitThisFieldActivateSint8( uint32_t , SourceInfo);
36406bool emitInitThisFieldActivateUint8( uint32_t , SourceInfo);
36407bool emitInitThisFieldActivateSint16( uint32_t , SourceInfo);
36408bool emitInitThisFieldActivateUint16( uint32_t , SourceInfo);
36409bool emitInitThisFieldActivateSint32( uint32_t , SourceInfo);
36410bool emitInitThisFieldActivateUint32( uint32_t , SourceInfo);
36411bool emitInitThisFieldActivateSint64( uint32_t , SourceInfo);
36412bool emitInitThisFieldActivateUint64( uint32_t , SourceInfo);
36413bool emitInitThisFieldActivateIntAP( uint32_t , SourceInfo);
36414bool emitInitThisFieldActivateIntAPS( uint32_t , SourceInfo);
36415bool emitInitThisFieldActivateBool( uint32_t , SourceInfo);
36416bool emitInitThisFieldActivateFixedPoint( uint32_t , SourceInfo);
36417bool emitInitThisFieldActivatePtr( uint32_t , SourceInfo);
36418bool emitInitThisFieldActivateMemberPtr( uint32_t , SourceInfo);
36419bool emitInitThisFieldActivateFloat( uint32_t , SourceInfo);
36420#endif
36421#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36422[[nodiscard]] bool emitInitThisFieldActivate(PrimType, uint32_t, SourceInfo I);
36423#endif
36424#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
36425bool
36426#if defined(GET_EVAL_IMPL)
36427EvalEmitter
36428#else
36429ByteCodeEmitter
36430#endif
36431::emitInitThisFieldActivate(PrimType T0, uint32_t A0, SourceInfo I) {
36432 switch (T0) {
36433 case PT_Sint8:
36434 return emitInitThisFieldActivateSint8(A0, I);
36435 case PT_Uint8:
36436 return emitInitThisFieldActivateUint8(A0, I);
36437 case PT_Sint16:
36438 return emitInitThisFieldActivateSint16(A0, I);
36439 case PT_Uint16:
36440 return emitInitThisFieldActivateUint16(A0, I);
36441 case PT_Sint32:
36442 return emitInitThisFieldActivateSint32(A0, I);
36443 case PT_Uint32:
36444 return emitInitThisFieldActivateUint32(A0, I);
36445 case PT_Sint64:
36446 return emitInitThisFieldActivateSint64(A0, I);
36447 case PT_Uint64:
36448 return emitInitThisFieldActivateUint64(A0, I);
36449 case PT_IntAP:
36450 return emitInitThisFieldActivateIntAP(A0, I);
36451 case PT_IntAPS:
36452 return emitInitThisFieldActivateIntAPS(A0, I);
36453 case PT_Bool:
36454 return emitInitThisFieldActivateBool(A0, I);
36455 case PT_FixedPoint:
36456 return emitInitThisFieldActivateFixedPoint(A0, I);
36457 case PT_Ptr:
36458 return emitInitThisFieldActivatePtr(A0, I);
36459 case PT_MemberPtr:
36460 return emitInitThisFieldActivateMemberPtr(A0, I);
36461 case PT_Float:
36462 return emitInitThisFieldActivateFloat(A0, I);
36463 }
36464 llvm_unreachable("invalid enum value");
36465}
36466#endif
36467#ifdef GET_LINK_IMPL
36468bool ByteCodeEmitter::emitInitThisFieldActivateSint8( uint32_t A0, SourceInfo L) {
36469 return emitOp<uint32_t>(OP_InitThisFieldActivateSint8, A0, L);
36470}
36471bool ByteCodeEmitter::emitInitThisFieldActivateUint8( uint32_t A0, SourceInfo L) {
36472 return emitOp<uint32_t>(OP_InitThisFieldActivateUint8, A0, L);
36473}
36474bool ByteCodeEmitter::emitInitThisFieldActivateSint16( uint32_t A0, SourceInfo L) {
36475 return emitOp<uint32_t>(OP_InitThisFieldActivateSint16, A0, L);
36476}
36477bool ByteCodeEmitter::emitInitThisFieldActivateUint16( uint32_t A0, SourceInfo L) {
36478 return emitOp<uint32_t>(OP_InitThisFieldActivateUint16, A0, L);
36479}
36480bool ByteCodeEmitter::emitInitThisFieldActivateSint32( uint32_t A0, SourceInfo L) {
36481 return emitOp<uint32_t>(OP_InitThisFieldActivateSint32, A0, L);
36482}
36483bool ByteCodeEmitter::emitInitThisFieldActivateUint32( uint32_t A0, SourceInfo L) {
36484 return emitOp<uint32_t>(OP_InitThisFieldActivateUint32, A0, L);
36485}
36486bool ByteCodeEmitter::emitInitThisFieldActivateSint64( uint32_t A0, SourceInfo L) {
36487 return emitOp<uint32_t>(OP_InitThisFieldActivateSint64, A0, L);
36488}
36489bool ByteCodeEmitter::emitInitThisFieldActivateUint64( uint32_t A0, SourceInfo L) {
36490 return emitOp<uint32_t>(OP_InitThisFieldActivateUint64, A0, L);
36491}
36492bool ByteCodeEmitter::emitInitThisFieldActivateIntAP( uint32_t A0, SourceInfo L) {
36493 return emitOp<uint32_t>(OP_InitThisFieldActivateIntAP, A0, L);
36494}
36495bool ByteCodeEmitter::emitInitThisFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
36496 return emitOp<uint32_t>(OP_InitThisFieldActivateIntAPS, A0, L);
36497}
36498bool ByteCodeEmitter::emitInitThisFieldActivateBool( uint32_t A0, SourceInfo L) {
36499 return emitOp<uint32_t>(OP_InitThisFieldActivateBool, A0, L);
36500}
36501bool ByteCodeEmitter::emitInitThisFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
36502 return emitOp<uint32_t>(OP_InitThisFieldActivateFixedPoint, A0, L);
36503}
36504bool ByteCodeEmitter::emitInitThisFieldActivatePtr( uint32_t A0, SourceInfo L) {
36505 return emitOp<uint32_t>(OP_InitThisFieldActivatePtr, A0, L);
36506}
36507bool ByteCodeEmitter::emitInitThisFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
36508 return emitOp<uint32_t>(OP_InitThisFieldActivateMemberPtr, A0, L);
36509}
36510bool ByteCodeEmitter::emitInitThisFieldActivateFloat( uint32_t A0, SourceInfo L) {
36511 return emitOp<uint32_t>(OP_InitThisFieldActivateFloat, A0, L);
36512}
36513#endif
36514#ifdef GET_EVAL_IMPL
36515bool EvalEmitter::emitInitThisFieldActivateSint8( uint32_t A0, SourceInfo L) {
36516 if (!isActive()) return true;
36517 CurrentSource = L;
36518 return InitThisFieldActivate<PT_Sint8>(S, CodePtr(), A0);
36519}
36520bool EvalEmitter::emitInitThisFieldActivateUint8( uint32_t A0, SourceInfo L) {
36521 if (!isActive()) return true;
36522 CurrentSource = L;
36523 return InitThisFieldActivate<PT_Uint8>(S, CodePtr(), A0);
36524}
36525bool EvalEmitter::emitInitThisFieldActivateSint16( uint32_t A0, SourceInfo L) {
36526 if (!isActive()) return true;
36527 CurrentSource = L;
36528 return InitThisFieldActivate<PT_Sint16>(S, CodePtr(), A0);
36529}
36530bool EvalEmitter::emitInitThisFieldActivateUint16( uint32_t A0, SourceInfo L) {
36531 if (!isActive()) return true;
36532 CurrentSource = L;
36533 return InitThisFieldActivate<PT_Uint16>(S, CodePtr(), A0);
36534}
36535bool EvalEmitter::emitInitThisFieldActivateSint32( uint32_t A0, SourceInfo L) {
36536 if (!isActive()) return true;
36537 CurrentSource = L;
36538 return InitThisFieldActivate<PT_Sint32>(S, CodePtr(), A0);
36539}
36540bool EvalEmitter::emitInitThisFieldActivateUint32( uint32_t A0, SourceInfo L) {
36541 if (!isActive()) return true;
36542 CurrentSource = L;
36543 return InitThisFieldActivate<PT_Uint32>(S, CodePtr(), A0);
36544}
36545bool EvalEmitter::emitInitThisFieldActivateSint64( uint32_t A0, SourceInfo L) {
36546 if (!isActive()) return true;
36547 CurrentSource = L;
36548 return InitThisFieldActivate<PT_Sint64>(S, CodePtr(), A0);
36549}
36550bool EvalEmitter::emitInitThisFieldActivateUint64( uint32_t A0, SourceInfo L) {
36551 if (!isActive()) return true;
36552 CurrentSource = L;
36553 return InitThisFieldActivate<PT_Uint64>(S, CodePtr(), A0);
36554}
36555bool EvalEmitter::emitInitThisFieldActivateIntAP( uint32_t A0, SourceInfo L) {
36556 if (!isActive()) return true;
36557 CurrentSource = L;
36558 return InitThisFieldActivate<PT_IntAP>(S, CodePtr(), A0);
36559}
36560bool EvalEmitter::emitInitThisFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
36561 if (!isActive()) return true;
36562 CurrentSource = L;
36563 return InitThisFieldActivate<PT_IntAPS>(S, CodePtr(), A0);
36564}
36565bool EvalEmitter::emitInitThisFieldActivateBool( uint32_t A0, SourceInfo L) {
36566 if (!isActive()) return true;
36567 CurrentSource = L;
36568 return InitThisFieldActivate<PT_Bool>(S, CodePtr(), A0);
36569}
36570bool EvalEmitter::emitInitThisFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
36571 if (!isActive()) return true;
36572 CurrentSource = L;
36573 return InitThisFieldActivate<PT_FixedPoint>(S, CodePtr(), A0);
36574}
36575bool EvalEmitter::emitInitThisFieldActivatePtr( uint32_t A0, SourceInfo L) {
36576 if (!isActive()) return true;
36577 CurrentSource = L;
36578 return InitThisFieldActivate<PT_Ptr>(S, CodePtr(), A0);
36579}
36580bool EvalEmitter::emitInitThisFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
36581 if (!isActive()) return true;
36582 CurrentSource = L;
36583 return InitThisFieldActivate<PT_MemberPtr>(S, CodePtr(), A0);
36584}
36585bool EvalEmitter::emitInitThisFieldActivateFloat( uint32_t A0, SourceInfo L) {
36586 if (!isActive()) return true;
36587 CurrentSource = L;
36588 return InitThisFieldActivate<PT_Float>(S, CodePtr(), A0);
36589}
36590#endif
36591#ifdef GET_OPCODE_NAMES
36592OP_Inv,
36593#endif
36594#ifdef GET_INTERPFN_LIST
36595&Interp_Inv,
36596#endif
36597#ifdef GET_INTERPFN_DISPATCHERS
36598PRESERVE_NONE
36599static bool Interp_Inv(InterpState &S) {
36600 Inv(S);
36601#if USE_TAILCALLS
36602 MUSTTAIL return InterpNext(S);
36603#else
36604 return true;
36605#endif
36606}
36607#endif
36608#ifdef GET_DISASM
36609case OP_Inv:
36610 Text.Op = PrintName("Inv");
36611 break;
36612#endif
36613#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36614bool emitInv(SourceInfo);
36615#endif
36616#ifdef GET_LINK_IMPL
36617bool ByteCodeEmitter::emitInv(SourceInfo L) {
36618 return emitOp<>(OP_Inv, L);
36619}
36620#endif
36621#ifdef GET_EVAL_IMPL
36622bool EvalEmitter::emitInv(SourceInfo L) {
36623 if (!isActive()) return true;
36624 CurrentSource = L;
36625 return Inv(S);
36626}
36627#endif
36628#ifdef GET_OPCODE_NAMES
36629OP_Invalid,
36630#endif
36631#ifdef GET_INTERPFN_LIST
36632&Interp_Invalid,
36633#endif
36634#ifdef GET_INTERPFN_DISPATCHERS
36635PRESERVE_NONE
36636static bool Interp_Invalid(InterpState &S) {
36637 if (!Invalid(S, S.PC)) return false;
36638#if USE_TAILCALLS
36639 MUSTTAIL return InterpNext(S);
36640#else
36641 return true;
36642#endif
36643}
36644#endif
36645#ifdef GET_DISASM
36646case OP_Invalid:
36647 Text.Op = PrintName("Invalid");
36648 break;
36649#endif
36650#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36651bool emitInvalid(SourceInfo);
36652#endif
36653#ifdef GET_LINK_IMPL
36654bool ByteCodeEmitter::emitInvalid(SourceInfo L) {
36655 return emitOp<>(OP_Invalid, L);
36656}
36657#endif
36658#ifdef GET_EVAL_IMPL
36659bool EvalEmitter::emitInvalid(SourceInfo L) {
36660 if (!isActive()) return true;
36661 CurrentSource = L;
36662 return Invalid(S, CodePtr());
36663}
36664#endif
36665#ifdef GET_OPCODE_NAMES
36666OP_InvalidCast,
36667#endif
36668#ifdef GET_INTERPFN_LIST
36669&Interp_InvalidCast,
36670#endif
36671#ifdef GET_INTERPFN_DISPATCHERS
36672PRESERVE_NONE
36673static bool Interp_InvalidCast(InterpState &S) {
36674 {
36675 CodePtr OpPC = S.PC;
36676 const auto V0 = ReadArg<interp::CastKind>(S, S.PC);
36677 const auto V1 = ReadArg<bool>(S, S.PC);
36678 if (!InvalidCast(S, OpPC, V0, V1)) return false;
36679 }
36680#if USE_TAILCALLS
36681 MUSTTAIL return InterpNext(S);
36682#else
36683 return true;
36684#endif
36685}
36686#endif
36687#ifdef GET_DISASM
36688case OP_InvalidCast:
36689 Text.Op = PrintName("InvalidCast");
36690 Text.Args.push_back(printArg<interp::CastKind>(PC));
36691 Text.Args.push_back(printArg<bool>(PC));
36692 break;
36693#endif
36694#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36695bool emitInvalidCast( interp::CastKind , bool , SourceInfo);
36696#endif
36697#ifdef GET_LINK_IMPL
36698bool ByteCodeEmitter::emitInvalidCast( interp::CastKind A0, bool A1, SourceInfo L) {
36699 return emitOp<interp::CastKind, bool>(OP_InvalidCast, A0, A1, L);
36700}
36701#endif
36702#ifdef GET_EVAL_IMPL
36703bool EvalEmitter::emitInvalidCast( interp::CastKind A0, bool A1, SourceInfo L) {
36704 if (!isActive()) return true;
36705 CurrentSource = L;
36706 return InvalidCast(S, CodePtr(), A0, A1);
36707}
36708#endif
36709#ifdef GET_OPCODE_NAMES
36710OP_InvalidDeclRef,
36711#endif
36712#ifdef GET_INTERPFN_LIST
36713&Interp_InvalidDeclRef,
36714#endif
36715#ifdef GET_INTERPFN_DISPATCHERS
36716PRESERVE_NONE
36717static bool Interp_InvalidDeclRef(InterpState &S) {
36718 {
36719 CodePtr OpPC = S.PC;
36720 const auto V0 = ReadArg<const DeclRefExpr *>(S, S.PC);
36721 const auto V1 = ReadArg<bool>(S, S.PC);
36722 if (!InvalidDeclRef(S, OpPC, V0, V1)) return false;
36723 }
36724#if USE_TAILCALLS
36725 MUSTTAIL return InterpNext(S);
36726#else
36727 return true;
36728#endif
36729}
36730#endif
36731#ifdef GET_DISASM
36732case OP_InvalidDeclRef:
36733 Text.Op = PrintName("InvalidDeclRef");
36734 Text.Args.push_back(printArg<const DeclRefExpr *>(PC));
36735 Text.Args.push_back(printArg<bool>(PC));
36736 break;
36737#endif
36738#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36739bool emitInvalidDeclRef( const DeclRefExpr * , bool , SourceInfo);
36740#endif
36741#ifdef GET_LINK_IMPL
36742bool ByteCodeEmitter::emitInvalidDeclRef( const DeclRefExpr * A0, bool A1, SourceInfo L) {
36743 return emitOp<const DeclRefExpr *, bool>(OP_InvalidDeclRef, A0, A1, L);
36744}
36745#endif
36746#ifdef GET_EVAL_IMPL
36747bool EvalEmitter::emitInvalidDeclRef( const DeclRefExpr * A0, bool A1, SourceInfo L) {
36748 if (!isActive()) return true;
36749 CurrentSource = L;
36750 return InvalidDeclRef(S, CodePtr(), A0, A1);
36751}
36752#endif
36753#ifdef GET_OPCODE_NAMES
36754OP_InvalidNewDeleteExpr,
36755#endif
36756#ifdef GET_INTERPFN_LIST
36757&Interp_InvalidNewDeleteExpr,
36758#endif
36759#ifdef GET_INTERPFN_DISPATCHERS
36760PRESERVE_NONE
36761static bool Interp_InvalidNewDeleteExpr(InterpState &S) {
36762 {
36763 CodePtr OpPC = S.PC;
36764 const auto V0 = ReadArg<const Expr *>(S, S.PC);
36765 if (!InvalidNewDeleteExpr(S, OpPC, V0)) return false;
36766 }
36767#if USE_TAILCALLS
36768 MUSTTAIL return InterpNext(S);
36769#else
36770 return true;
36771#endif
36772}
36773#endif
36774#ifdef GET_DISASM
36775case OP_InvalidNewDeleteExpr:
36776 Text.Op = PrintName("InvalidNewDeleteExpr");
36777 Text.Args.push_back(printArg<const Expr *>(PC));
36778 break;
36779#endif
36780#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36781bool emitInvalidNewDeleteExpr( const Expr * , SourceInfo);
36782#endif
36783#ifdef GET_LINK_IMPL
36784bool ByteCodeEmitter::emitInvalidNewDeleteExpr( const Expr * A0, SourceInfo L) {
36785 return emitOp<const Expr *>(OP_InvalidNewDeleteExpr, A0, L);
36786}
36787#endif
36788#ifdef GET_EVAL_IMPL
36789bool EvalEmitter::emitInvalidNewDeleteExpr( const Expr * A0, SourceInfo L) {
36790 if (!isActive()) return true;
36791 CurrentSource = L;
36792 return InvalidNewDeleteExpr(S, CodePtr(), A0);
36793}
36794#endif
36795#ifdef GET_OPCODE_NAMES
36796OP_InvalidShuffleVectorIndex,
36797#endif
36798#ifdef GET_INTERPFN_LIST
36799&Interp_InvalidShuffleVectorIndex,
36800#endif
36801#ifdef GET_INTERPFN_DISPATCHERS
36802PRESERVE_NONE
36803static bool Interp_InvalidShuffleVectorIndex(InterpState &S) {
36804 {
36805 CodePtr OpPC = S.PC;
36806 const auto V0 = ReadArg<uint32_t>(S, S.PC);
36807 if (!InvalidShuffleVectorIndex(S, OpPC, V0)) return false;
36808 }
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_InvalidShuffleVectorIndex:
36818 Text.Op = PrintName("InvalidShuffleVectorIndex");
36819 Text.Args.push_back(printArg<uint32_t>(PC));
36820 break;
36821#endif
36822#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36823bool emitInvalidShuffleVectorIndex( uint32_t , SourceInfo);
36824#endif
36825#ifdef GET_LINK_IMPL
36826bool ByteCodeEmitter::emitInvalidShuffleVectorIndex( uint32_t A0, SourceInfo L) {
36827 return emitOp<uint32_t>(OP_InvalidShuffleVectorIndex, A0, L);
36828}
36829#endif
36830#ifdef GET_EVAL_IMPL
36831bool EvalEmitter::emitInvalidShuffleVectorIndex( uint32_t A0, SourceInfo L) {
36832 if (!isActive()) return true;
36833 CurrentSource = L;
36834 return InvalidShuffleVectorIndex(S, CodePtr(), A0);
36835}
36836#endif
36837#ifdef GET_OPCODE_NAMES
36838OP_InvalidStore,
36839#endif
36840#ifdef GET_INTERPFN_LIST
36841&Interp_InvalidStore,
36842#endif
36843#ifdef GET_INTERPFN_DISPATCHERS
36844PRESERVE_NONE
36845static bool Interp_InvalidStore(InterpState &S) {
36846 {
36847 CodePtr OpPC = S.PC;
36848 const auto V0 = ReadArg<const Type *>(S, S.PC);
36849 if (!InvalidStore(S, OpPC, V0)) return false;
36850 }
36851#if USE_TAILCALLS
36852 MUSTTAIL return InterpNext(S);
36853#else
36854 return true;
36855#endif
36856}
36857#endif
36858#ifdef GET_DISASM
36859case OP_InvalidStore:
36860 Text.Op = PrintName("InvalidStore");
36861 Text.Args.push_back(printArg<const Type *>(PC));
36862 break;
36863#endif
36864#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36865bool emitInvalidStore( const Type * , SourceInfo);
36866#endif
36867#ifdef GET_LINK_IMPL
36868bool ByteCodeEmitter::emitInvalidStore( const Type * A0, SourceInfo L) {
36869 return emitOp<const Type *>(OP_InvalidStore, A0, L);
36870}
36871#endif
36872#ifdef GET_EVAL_IMPL
36873bool EvalEmitter::emitInvalidStore( const Type * A0, SourceInfo L) {
36874 if (!isActive()) return true;
36875 CurrentSource = L;
36876 return InvalidStore(S, CodePtr(), A0);
36877}
36878#endif
36879#ifdef GET_OPCODE_NAMES
36880OP_IsBaseClass,
36881#endif
36882#ifdef GET_INTERPFN_LIST
36883&Interp_IsBaseClass,
36884#endif
36885#ifdef GET_INTERPFN_DISPATCHERS
36886PRESERVE_NONE
36887static bool Interp_IsBaseClass(InterpState &S) {
36888 IsBaseClass(S);
36889#if USE_TAILCALLS
36890 MUSTTAIL return InterpNext(S);
36891#else
36892 return true;
36893#endif
36894}
36895#endif
36896#ifdef GET_DISASM
36897case OP_IsBaseClass:
36898 Text.Op = PrintName("IsBaseClass");
36899 break;
36900#endif
36901#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36902bool emitIsBaseClass(SourceInfo);
36903#endif
36904#ifdef GET_LINK_IMPL
36905bool ByteCodeEmitter::emitIsBaseClass(SourceInfo L) {
36906 return emitOp<>(OP_IsBaseClass, L);
36907}
36908#endif
36909#ifdef GET_EVAL_IMPL
36910bool EvalEmitter::emitIsBaseClass(SourceInfo L) {
36911 if (!isActive()) return true;
36912 CurrentSource = L;
36913 return IsBaseClass(S);
36914}
36915#endif
36916#ifdef GET_OPCODE_NAMES
36917OP_IsConstantContext,
36918#endif
36919#ifdef GET_INTERPFN_LIST
36920&Interp_IsConstantContext,
36921#endif
36922#ifdef GET_INTERPFN_DISPATCHERS
36923PRESERVE_NONE
36924static bool Interp_IsConstantContext(InterpState &S) {
36925 IsConstantContext(S);
36926#if USE_TAILCALLS
36927 MUSTTAIL return InterpNext(S);
36928#else
36929 return true;
36930#endif
36931}
36932#endif
36933#ifdef GET_DISASM
36934case OP_IsConstantContext:
36935 Text.Op = PrintName("IsConstantContext");
36936 break;
36937#endif
36938#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36939bool emitIsConstantContext(SourceInfo);
36940#endif
36941#ifdef GET_LINK_IMPL
36942bool ByteCodeEmitter::emitIsConstantContext(SourceInfo L) {
36943 return emitOp<>(OP_IsConstantContext, L);
36944}
36945#endif
36946#ifdef GET_EVAL_IMPL
36947bool EvalEmitter::emitIsConstantContext(SourceInfo L) {
36948 if (!isActive()) return true;
36949 CurrentSource = L;
36950 return IsConstantContext(S);
36951}
36952#endif
36953#ifdef GET_OPCODE_NAMES
36954OP_IsNonNullPtr,
36955OP_IsNonNullMemberPtr,
36956#endif
36957#ifdef GET_INTERPFN_LIST
36958&Interp_IsNonNullPtr,
36959&Interp_IsNonNullMemberPtr,
36960#endif
36961#ifdef GET_INTERPFN_DISPATCHERS
36962PRESERVE_NONE
36963static bool Interp_IsNonNullPtr(InterpState &S) {
36964 if (!IsNonNull<PT_Ptr>(S)) return false;
36965#if USE_TAILCALLS
36966 MUSTTAIL return InterpNext(S);
36967#else
36968 return true;
36969#endif
36970}
36971PRESERVE_NONE
36972static bool Interp_IsNonNullMemberPtr(InterpState &S) {
36973 if (!IsNonNull<PT_MemberPtr>(S)) return false;
36974#if USE_TAILCALLS
36975 MUSTTAIL return InterpNext(S);
36976#else
36977 return true;
36978#endif
36979}
36980#endif
36981#ifdef GET_DISASM
36982case OP_IsNonNullPtr:
36983 Text.Op = PrintName("IsNonNullPtr");
36984 break;
36985case OP_IsNonNullMemberPtr:
36986 Text.Op = PrintName("IsNonNullMemberPtr");
36987 break;
36988#endif
36989#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36990bool emitIsNonNullPtr(SourceInfo);
36991bool emitIsNonNullMemberPtr(SourceInfo);
36992#endif
36993#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36994[[nodiscard]] bool emitIsNonNull(PrimType, SourceInfo I);
36995#endif
36996#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
36997bool
36998#if defined(GET_EVAL_IMPL)
36999EvalEmitter
37000#else
37001ByteCodeEmitter
37002#endif
37003::emitIsNonNull(PrimType T0, SourceInfo I) {
37004 switch (T0) {
37005 case PT_Ptr:
37006 return emitIsNonNullPtr(I);
37007 case PT_MemberPtr:
37008 return emitIsNonNullMemberPtr(I);
37009 default: llvm_unreachable("invalid type: emitIsNonNull");
37010 }
37011 llvm_unreachable("invalid enum value");
37012}
37013#endif
37014#ifdef GET_LINK_IMPL
37015bool ByteCodeEmitter::emitIsNonNullPtr(SourceInfo L) {
37016 return emitOp<>(OP_IsNonNullPtr, L);
37017}
37018bool ByteCodeEmitter::emitIsNonNullMemberPtr(SourceInfo L) {
37019 return emitOp<>(OP_IsNonNullMemberPtr, L);
37020}
37021#endif
37022#ifdef GET_EVAL_IMPL
37023bool EvalEmitter::emitIsNonNullPtr(SourceInfo L) {
37024 if (!isActive()) return true;
37025 CurrentSource = L;
37026 return IsNonNull<PT_Ptr>(S);
37027}
37028bool EvalEmitter::emitIsNonNullMemberPtr(SourceInfo L) {
37029 if (!isActive()) return true;
37030 CurrentSource = L;
37031 return IsNonNull<PT_MemberPtr>(S);
37032}
37033#endif
37034#ifdef GET_OPCODE_NAMES
37035OP_Jf,
37036#endif
37037#ifdef GET_INTERPFN_LIST
37038&Interp_Jf,
37039#endif
37040#ifdef GET_INTERPFN_DISPATCHERS
37041PRESERVE_NONE
37042static bool Interp_Jf(InterpState &S) {
37043 {
37044 CodePtr OpPC = S.PC;
37045 const auto V0 = ReadArg<int32_t>(S, S.PC);
37046 if (!Jf(S, OpPC, V0)) return false;
37047 }
37048#if USE_TAILCALLS
37049 MUSTTAIL return InterpNext(S);
37050#else
37051 return true;
37052#endif
37053}
37054#endif
37055#ifdef GET_DISASM
37056case OP_Jf:
37057 Text.Op = PrintName("Jf");
37058 Text.Args.push_back(printArg<int32_t>(PC));
37059 break;
37060#endif
37061#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37062bool emitJf( int32_t , SourceInfo);
37063#endif
37064#ifdef GET_LINK_IMPL
37065bool ByteCodeEmitter::emitJf( int32_t A0, SourceInfo L) {
37066 return emitOp<int32_t>(OP_Jf, A0, L);
37067}
37068#endif
37069#ifdef GET_OPCODE_NAMES
37070OP_Jmp,
37071#endif
37072#ifdef GET_INTERPFN_LIST
37073&Interp_Jmp,
37074#endif
37075#ifdef GET_INTERPFN_DISPATCHERS
37076PRESERVE_NONE
37077static bool Interp_Jmp(InterpState &S) {
37078 {
37079 CodePtr OpPC = S.PC;
37080 const auto V0 = ReadArg<int32_t>(S, S.PC);
37081 if (!Jmp(S, OpPC, V0)) return false;
37082 }
37083#if USE_TAILCALLS
37084 MUSTTAIL return InterpNext(S);
37085#else
37086 return true;
37087#endif
37088}
37089#endif
37090#ifdef GET_DISASM
37091case OP_Jmp:
37092 Text.Op = PrintName("Jmp");
37093 Text.Args.push_back(printArg<int32_t>(PC));
37094 break;
37095#endif
37096#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37097bool emitJmp( int32_t , SourceInfo);
37098#endif
37099#ifdef GET_LINK_IMPL
37100bool ByteCodeEmitter::emitJmp( int32_t A0, SourceInfo L) {
37101 return emitOp<int32_t>(OP_Jmp, A0, L);
37102}
37103#endif
37104#ifdef GET_OPCODE_NAMES
37105OP_Jt,
37106#endif
37107#ifdef GET_INTERPFN_LIST
37108&Interp_Jt,
37109#endif
37110#ifdef GET_INTERPFN_DISPATCHERS
37111PRESERVE_NONE
37112static bool Interp_Jt(InterpState &S) {
37113 {
37114 CodePtr OpPC = S.PC;
37115 const auto V0 = ReadArg<int32_t>(S, S.PC);
37116 if (!Jt(S, OpPC, V0)) return false;
37117 }
37118#if USE_TAILCALLS
37119 MUSTTAIL return InterpNext(S);
37120#else
37121 return true;
37122#endif
37123}
37124#endif
37125#ifdef GET_DISASM
37126case OP_Jt:
37127 Text.Op = PrintName("Jt");
37128 Text.Args.push_back(printArg<int32_t>(PC));
37129 break;
37130#endif
37131#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37132bool emitJt( int32_t , SourceInfo);
37133#endif
37134#ifdef GET_LINK_IMPL
37135bool ByteCodeEmitter::emitJt( int32_t A0, SourceInfo L) {
37136 return emitOp<int32_t>(OP_Jt, A0, L);
37137}
37138#endif
37139#ifdef GET_OPCODE_NAMES
37140OP_LESint8,
37141OP_LEUint8,
37142OP_LESint16,
37143OP_LEUint16,
37144OP_LESint32,
37145OP_LEUint32,
37146OP_LESint64,
37147OP_LEUint64,
37148OP_LEIntAP,
37149OP_LEIntAPS,
37150OP_LEBool,
37151OP_LEFixedPoint,
37152OP_LEPtr,
37153OP_LEFloat,
37154#endif
37155#ifdef GET_INTERPFN_LIST
37156&Interp_LESint8,
37157&Interp_LEUint8,
37158&Interp_LESint16,
37159&Interp_LEUint16,
37160&Interp_LESint32,
37161&Interp_LEUint32,
37162&Interp_LESint64,
37163&Interp_LEUint64,
37164&Interp_LEIntAP,
37165&Interp_LEIntAPS,
37166&Interp_LEBool,
37167&Interp_LEFixedPoint,
37168&Interp_LEPtr,
37169&Interp_LEFloat,
37170#endif
37171#ifdef GET_INTERPFN_DISPATCHERS
37172PRESERVE_NONE
37173static bool Interp_LESint8(InterpState &S) {
37174 if (!LE<PT_Sint8>(S, S.PC)) return false;
37175#if USE_TAILCALLS
37176 MUSTTAIL return InterpNext(S);
37177#else
37178 return true;
37179#endif
37180}
37181PRESERVE_NONE
37182static bool Interp_LEUint8(InterpState &S) {
37183 if (!LE<PT_Uint8>(S, S.PC)) return false;
37184#if USE_TAILCALLS
37185 MUSTTAIL return InterpNext(S);
37186#else
37187 return true;
37188#endif
37189}
37190PRESERVE_NONE
37191static bool Interp_LESint16(InterpState &S) {
37192 if (!LE<PT_Sint16>(S, S.PC)) return false;
37193#if USE_TAILCALLS
37194 MUSTTAIL return InterpNext(S);
37195#else
37196 return true;
37197#endif
37198}
37199PRESERVE_NONE
37200static bool Interp_LEUint16(InterpState &S) {
37201 if (!LE<PT_Uint16>(S, S.PC)) return false;
37202#if USE_TAILCALLS
37203 MUSTTAIL return InterpNext(S);
37204#else
37205 return true;
37206#endif
37207}
37208PRESERVE_NONE
37209static bool Interp_LESint32(InterpState &S) {
37210 if (!LE<PT_Sint32>(S, S.PC)) return false;
37211#if USE_TAILCALLS
37212 MUSTTAIL return InterpNext(S);
37213#else
37214 return true;
37215#endif
37216}
37217PRESERVE_NONE
37218static bool Interp_LEUint32(InterpState &S) {
37219 if (!LE<PT_Uint32>(S, S.PC)) return false;
37220#if USE_TAILCALLS
37221 MUSTTAIL return InterpNext(S);
37222#else
37223 return true;
37224#endif
37225}
37226PRESERVE_NONE
37227static bool Interp_LESint64(InterpState &S) {
37228 if (!LE<PT_Sint64>(S, S.PC)) return false;
37229#if USE_TAILCALLS
37230 MUSTTAIL return InterpNext(S);
37231#else
37232 return true;
37233#endif
37234}
37235PRESERVE_NONE
37236static bool Interp_LEUint64(InterpState &S) {
37237 if (!LE<PT_Uint64>(S, S.PC)) return false;
37238#if USE_TAILCALLS
37239 MUSTTAIL return InterpNext(S);
37240#else
37241 return true;
37242#endif
37243}
37244PRESERVE_NONE
37245static bool Interp_LEIntAP(InterpState &S) {
37246 if (!LE<PT_IntAP>(S, S.PC)) return false;
37247#if USE_TAILCALLS
37248 MUSTTAIL return InterpNext(S);
37249#else
37250 return true;
37251#endif
37252}
37253PRESERVE_NONE
37254static bool Interp_LEIntAPS(InterpState &S) {
37255 if (!LE<PT_IntAPS>(S, S.PC)) return false;
37256#if USE_TAILCALLS
37257 MUSTTAIL return InterpNext(S);
37258#else
37259 return true;
37260#endif
37261}
37262PRESERVE_NONE
37263static bool Interp_LEBool(InterpState &S) {
37264 if (!LE<PT_Bool>(S, S.PC)) return false;
37265#if USE_TAILCALLS
37266 MUSTTAIL return InterpNext(S);
37267#else
37268 return true;
37269#endif
37270}
37271PRESERVE_NONE
37272static bool Interp_LEFixedPoint(InterpState &S) {
37273 if (!LE<PT_FixedPoint>(S, S.PC)) return false;
37274#if USE_TAILCALLS
37275 MUSTTAIL return InterpNext(S);
37276#else
37277 return true;
37278#endif
37279}
37280PRESERVE_NONE
37281static bool Interp_LEPtr(InterpState &S) {
37282 if (!LE<PT_Ptr>(S, S.PC)) return false;
37283#if USE_TAILCALLS
37284 MUSTTAIL return InterpNext(S);
37285#else
37286 return true;
37287#endif
37288}
37289PRESERVE_NONE
37290static bool Interp_LEFloat(InterpState &S) {
37291 if (!LE<PT_Float>(S, S.PC)) return false;
37292#if USE_TAILCALLS
37293 MUSTTAIL return InterpNext(S);
37294#else
37295 return true;
37296#endif
37297}
37298#endif
37299#ifdef GET_DISASM
37300case OP_LESint8:
37301 Text.Op = PrintName("LESint8");
37302 break;
37303case OP_LEUint8:
37304 Text.Op = PrintName("LEUint8");
37305 break;
37306case OP_LESint16:
37307 Text.Op = PrintName("LESint16");
37308 break;
37309case OP_LEUint16:
37310 Text.Op = PrintName("LEUint16");
37311 break;
37312case OP_LESint32:
37313 Text.Op = PrintName("LESint32");
37314 break;
37315case OP_LEUint32:
37316 Text.Op = PrintName("LEUint32");
37317 break;
37318case OP_LESint64:
37319 Text.Op = PrintName("LESint64");
37320 break;
37321case OP_LEUint64:
37322 Text.Op = PrintName("LEUint64");
37323 break;
37324case OP_LEIntAP:
37325 Text.Op = PrintName("LEIntAP");
37326 break;
37327case OP_LEIntAPS:
37328 Text.Op = PrintName("LEIntAPS");
37329 break;
37330case OP_LEBool:
37331 Text.Op = PrintName("LEBool");
37332 break;
37333case OP_LEFixedPoint:
37334 Text.Op = PrintName("LEFixedPoint");
37335 break;
37336case OP_LEPtr:
37337 Text.Op = PrintName("LEPtr");
37338 break;
37339case OP_LEFloat:
37340 Text.Op = PrintName("LEFloat");
37341 break;
37342#endif
37343#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37344bool emitLESint8(SourceInfo);
37345bool emitLEUint8(SourceInfo);
37346bool emitLESint16(SourceInfo);
37347bool emitLEUint16(SourceInfo);
37348bool emitLESint32(SourceInfo);
37349bool emitLEUint32(SourceInfo);
37350bool emitLESint64(SourceInfo);
37351bool emitLEUint64(SourceInfo);
37352bool emitLEIntAP(SourceInfo);
37353bool emitLEIntAPS(SourceInfo);
37354bool emitLEBool(SourceInfo);
37355bool emitLEFixedPoint(SourceInfo);
37356bool emitLEPtr(SourceInfo);
37357bool emitLEFloat(SourceInfo);
37358#endif
37359#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37360[[nodiscard]] bool emitLE(PrimType, SourceInfo I);
37361#endif
37362#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
37363bool
37364#if defined(GET_EVAL_IMPL)
37365EvalEmitter
37366#else
37367ByteCodeEmitter
37368#endif
37369::emitLE(PrimType T0, SourceInfo I) {
37370 switch (T0) {
37371 case PT_Sint8:
37372 return emitLESint8(I);
37373 case PT_Uint8:
37374 return emitLEUint8(I);
37375 case PT_Sint16:
37376 return emitLESint16(I);
37377 case PT_Uint16:
37378 return emitLEUint16(I);
37379 case PT_Sint32:
37380 return emitLESint32(I);
37381 case PT_Uint32:
37382 return emitLEUint32(I);
37383 case PT_Sint64:
37384 return emitLESint64(I);
37385 case PT_Uint64:
37386 return emitLEUint64(I);
37387 case PT_IntAP:
37388 return emitLEIntAP(I);
37389 case PT_IntAPS:
37390 return emitLEIntAPS(I);
37391 case PT_Bool:
37392 return emitLEBool(I);
37393 case PT_FixedPoint:
37394 return emitLEFixedPoint(I);
37395 case PT_Ptr:
37396 return emitLEPtr(I);
37397 case PT_Float:
37398 return emitLEFloat(I);
37399 default: llvm_unreachable("invalid type: emitLE");
37400 }
37401 llvm_unreachable("invalid enum value");
37402}
37403#endif
37404#ifdef GET_LINK_IMPL
37405bool ByteCodeEmitter::emitLESint8(SourceInfo L) {
37406 return emitOp<>(OP_LESint8, L);
37407}
37408bool ByteCodeEmitter::emitLEUint8(SourceInfo L) {
37409 return emitOp<>(OP_LEUint8, L);
37410}
37411bool ByteCodeEmitter::emitLESint16(SourceInfo L) {
37412 return emitOp<>(OP_LESint16, L);
37413}
37414bool ByteCodeEmitter::emitLEUint16(SourceInfo L) {
37415 return emitOp<>(OP_LEUint16, L);
37416}
37417bool ByteCodeEmitter::emitLESint32(SourceInfo L) {
37418 return emitOp<>(OP_LESint32, L);
37419}
37420bool ByteCodeEmitter::emitLEUint32(SourceInfo L) {
37421 return emitOp<>(OP_LEUint32, L);
37422}
37423bool ByteCodeEmitter::emitLESint64(SourceInfo L) {
37424 return emitOp<>(OP_LESint64, L);
37425}
37426bool ByteCodeEmitter::emitLEUint64(SourceInfo L) {
37427 return emitOp<>(OP_LEUint64, L);
37428}
37429bool ByteCodeEmitter::emitLEIntAP(SourceInfo L) {
37430 return emitOp<>(OP_LEIntAP, L);
37431}
37432bool ByteCodeEmitter::emitLEIntAPS(SourceInfo L) {
37433 return emitOp<>(OP_LEIntAPS, L);
37434}
37435bool ByteCodeEmitter::emitLEBool(SourceInfo L) {
37436 return emitOp<>(OP_LEBool, L);
37437}
37438bool ByteCodeEmitter::emitLEFixedPoint(SourceInfo L) {
37439 return emitOp<>(OP_LEFixedPoint, L);
37440}
37441bool ByteCodeEmitter::emitLEPtr(SourceInfo L) {
37442 return emitOp<>(OP_LEPtr, L);
37443}
37444bool ByteCodeEmitter::emitLEFloat(SourceInfo L) {
37445 return emitOp<>(OP_LEFloat, L);
37446}
37447#endif
37448#ifdef GET_EVAL_IMPL
37449bool EvalEmitter::emitLESint8(SourceInfo L) {
37450 if (!isActive()) return true;
37451 CurrentSource = L;
37452 return LE<PT_Sint8>(S, CodePtr());
37453}
37454bool EvalEmitter::emitLEUint8(SourceInfo L) {
37455 if (!isActive()) return true;
37456 CurrentSource = L;
37457 return LE<PT_Uint8>(S, CodePtr());
37458}
37459bool EvalEmitter::emitLESint16(SourceInfo L) {
37460 if (!isActive()) return true;
37461 CurrentSource = L;
37462 return LE<PT_Sint16>(S, CodePtr());
37463}
37464bool EvalEmitter::emitLEUint16(SourceInfo L) {
37465 if (!isActive()) return true;
37466 CurrentSource = L;
37467 return LE<PT_Uint16>(S, CodePtr());
37468}
37469bool EvalEmitter::emitLESint32(SourceInfo L) {
37470 if (!isActive()) return true;
37471 CurrentSource = L;
37472 return LE<PT_Sint32>(S, CodePtr());
37473}
37474bool EvalEmitter::emitLEUint32(SourceInfo L) {
37475 if (!isActive()) return true;
37476 CurrentSource = L;
37477 return LE<PT_Uint32>(S, CodePtr());
37478}
37479bool EvalEmitter::emitLESint64(SourceInfo L) {
37480 if (!isActive()) return true;
37481 CurrentSource = L;
37482 return LE<PT_Sint64>(S, CodePtr());
37483}
37484bool EvalEmitter::emitLEUint64(SourceInfo L) {
37485 if (!isActive()) return true;
37486 CurrentSource = L;
37487 return LE<PT_Uint64>(S, CodePtr());
37488}
37489bool EvalEmitter::emitLEIntAP(SourceInfo L) {
37490 if (!isActive()) return true;
37491 CurrentSource = L;
37492 return LE<PT_IntAP>(S, CodePtr());
37493}
37494bool EvalEmitter::emitLEIntAPS(SourceInfo L) {
37495 if (!isActive()) return true;
37496 CurrentSource = L;
37497 return LE<PT_IntAPS>(S, CodePtr());
37498}
37499bool EvalEmitter::emitLEBool(SourceInfo L) {
37500 if (!isActive()) return true;
37501 CurrentSource = L;
37502 return LE<PT_Bool>(S, CodePtr());
37503}
37504bool EvalEmitter::emitLEFixedPoint(SourceInfo L) {
37505 if (!isActive()) return true;
37506 CurrentSource = L;
37507 return LE<PT_FixedPoint>(S, CodePtr());
37508}
37509bool EvalEmitter::emitLEPtr(SourceInfo L) {
37510 if (!isActive()) return true;
37511 CurrentSource = L;
37512 return LE<PT_Ptr>(S, CodePtr());
37513}
37514bool EvalEmitter::emitLEFloat(SourceInfo L) {
37515 if (!isActive()) return true;
37516 CurrentSource = L;
37517 return LE<PT_Float>(S, CodePtr());
37518}
37519#endif
37520#ifdef GET_OPCODE_NAMES
37521OP_LTSint8,
37522OP_LTUint8,
37523OP_LTSint16,
37524OP_LTUint16,
37525OP_LTSint32,
37526OP_LTUint32,
37527OP_LTSint64,
37528OP_LTUint64,
37529OP_LTIntAP,
37530OP_LTIntAPS,
37531OP_LTBool,
37532OP_LTFixedPoint,
37533OP_LTPtr,
37534OP_LTFloat,
37535#endif
37536#ifdef GET_INTERPFN_LIST
37537&Interp_LTSint8,
37538&Interp_LTUint8,
37539&Interp_LTSint16,
37540&Interp_LTUint16,
37541&Interp_LTSint32,
37542&Interp_LTUint32,
37543&Interp_LTSint64,
37544&Interp_LTUint64,
37545&Interp_LTIntAP,
37546&Interp_LTIntAPS,
37547&Interp_LTBool,
37548&Interp_LTFixedPoint,
37549&Interp_LTPtr,
37550&Interp_LTFloat,
37551#endif
37552#ifdef GET_INTERPFN_DISPATCHERS
37553PRESERVE_NONE
37554static bool Interp_LTSint8(InterpState &S) {
37555 if (!LT<PT_Sint8>(S, S.PC)) return false;
37556#if USE_TAILCALLS
37557 MUSTTAIL return InterpNext(S);
37558#else
37559 return true;
37560#endif
37561}
37562PRESERVE_NONE
37563static bool Interp_LTUint8(InterpState &S) {
37564 if (!LT<PT_Uint8>(S, S.PC)) return false;
37565#if USE_TAILCALLS
37566 MUSTTAIL return InterpNext(S);
37567#else
37568 return true;
37569#endif
37570}
37571PRESERVE_NONE
37572static bool Interp_LTSint16(InterpState &S) {
37573 if (!LT<PT_Sint16>(S, S.PC)) return false;
37574#if USE_TAILCALLS
37575 MUSTTAIL return InterpNext(S);
37576#else
37577 return true;
37578#endif
37579}
37580PRESERVE_NONE
37581static bool Interp_LTUint16(InterpState &S) {
37582 if (!LT<PT_Uint16>(S, S.PC)) return false;
37583#if USE_TAILCALLS
37584 MUSTTAIL return InterpNext(S);
37585#else
37586 return true;
37587#endif
37588}
37589PRESERVE_NONE
37590static bool Interp_LTSint32(InterpState &S) {
37591 if (!LT<PT_Sint32>(S, S.PC)) return false;
37592#if USE_TAILCALLS
37593 MUSTTAIL return InterpNext(S);
37594#else
37595 return true;
37596#endif
37597}
37598PRESERVE_NONE
37599static bool Interp_LTUint32(InterpState &S) {
37600 if (!LT<PT_Uint32>(S, S.PC)) return false;
37601#if USE_TAILCALLS
37602 MUSTTAIL return InterpNext(S);
37603#else
37604 return true;
37605#endif
37606}
37607PRESERVE_NONE
37608static bool Interp_LTSint64(InterpState &S) {
37609 if (!LT<PT_Sint64>(S, S.PC)) return false;
37610#if USE_TAILCALLS
37611 MUSTTAIL return InterpNext(S);
37612#else
37613 return true;
37614#endif
37615}
37616PRESERVE_NONE
37617static bool Interp_LTUint64(InterpState &S) {
37618 if (!LT<PT_Uint64>(S, S.PC)) return false;
37619#if USE_TAILCALLS
37620 MUSTTAIL return InterpNext(S);
37621#else
37622 return true;
37623#endif
37624}
37625PRESERVE_NONE
37626static bool Interp_LTIntAP(InterpState &S) {
37627 if (!LT<PT_IntAP>(S, S.PC)) return false;
37628#if USE_TAILCALLS
37629 MUSTTAIL return InterpNext(S);
37630#else
37631 return true;
37632#endif
37633}
37634PRESERVE_NONE
37635static bool Interp_LTIntAPS(InterpState &S) {
37636 if (!LT<PT_IntAPS>(S, S.PC)) return false;
37637#if USE_TAILCALLS
37638 MUSTTAIL return InterpNext(S);
37639#else
37640 return true;
37641#endif
37642}
37643PRESERVE_NONE
37644static bool Interp_LTBool(InterpState &S) {
37645 if (!LT<PT_Bool>(S, S.PC)) return false;
37646#if USE_TAILCALLS
37647 MUSTTAIL return InterpNext(S);
37648#else
37649 return true;
37650#endif
37651}
37652PRESERVE_NONE
37653static bool Interp_LTFixedPoint(InterpState &S) {
37654 if (!LT<PT_FixedPoint>(S, S.PC)) return false;
37655#if USE_TAILCALLS
37656 MUSTTAIL return InterpNext(S);
37657#else
37658 return true;
37659#endif
37660}
37661PRESERVE_NONE
37662static bool Interp_LTPtr(InterpState &S) {
37663 if (!LT<PT_Ptr>(S, S.PC)) return false;
37664#if USE_TAILCALLS
37665 MUSTTAIL return InterpNext(S);
37666#else
37667 return true;
37668#endif
37669}
37670PRESERVE_NONE
37671static bool Interp_LTFloat(InterpState &S) {
37672 if (!LT<PT_Float>(S, S.PC)) return false;
37673#if USE_TAILCALLS
37674 MUSTTAIL return InterpNext(S);
37675#else
37676 return true;
37677#endif
37678}
37679#endif
37680#ifdef GET_DISASM
37681case OP_LTSint8:
37682 Text.Op = PrintName("LTSint8");
37683 break;
37684case OP_LTUint8:
37685 Text.Op = PrintName("LTUint8");
37686 break;
37687case OP_LTSint16:
37688 Text.Op = PrintName("LTSint16");
37689 break;
37690case OP_LTUint16:
37691 Text.Op = PrintName("LTUint16");
37692 break;
37693case OP_LTSint32:
37694 Text.Op = PrintName("LTSint32");
37695 break;
37696case OP_LTUint32:
37697 Text.Op = PrintName("LTUint32");
37698 break;
37699case OP_LTSint64:
37700 Text.Op = PrintName("LTSint64");
37701 break;
37702case OP_LTUint64:
37703 Text.Op = PrintName("LTUint64");
37704 break;
37705case OP_LTIntAP:
37706 Text.Op = PrintName("LTIntAP");
37707 break;
37708case OP_LTIntAPS:
37709 Text.Op = PrintName("LTIntAPS");
37710 break;
37711case OP_LTBool:
37712 Text.Op = PrintName("LTBool");
37713 break;
37714case OP_LTFixedPoint:
37715 Text.Op = PrintName("LTFixedPoint");
37716 break;
37717case OP_LTPtr:
37718 Text.Op = PrintName("LTPtr");
37719 break;
37720case OP_LTFloat:
37721 Text.Op = PrintName("LTFloat");
37722 break;
37723#endif
37724#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37725bool emitLTSint8(SourceInfo);
37726bool emitLTUint8(SourceInfo);
37727bool emitLTSint16(SourceInfo);
37728bool emitLTUint16(SourceInfo);
37729bool emitLTSint32(SourceInfo);
37730bool emitLTUint32(SourceInfo);
37731bool emitLTSint64(SourceInfo);
37732bool emitLTUint64(SourceInfo);
37733bool emitLTIntAP(SourceInfo);
37734bool emitLTIntAPS(SourceInfo);
37735bool emitLTBool(SourceInfo);
37736bool emitLTFixedPoint(SourceInfo);
37737bool emitLTPtr(SourceInfo);
37738bool emitLTFloat(SourceInfo);
37739#endif
37740#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37741[[nodiscard]] bool emitLT(PrimType, SourceInfo I);
37742#endif
37743#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
37744bool
37745#if defined(GET_EVAL_IMPL)
37746EvalEmitter
37747#else
37748ByteCodeEmitter
37749#endif
37750::emitLT(PrimType T0, SourceInfo I) {
37751 switch (T0) {
37752 case PT_Sint8:
37753 return emitLTSint8(I);
37754 case PT_Uint8:
37755 return emitLTUint8(I);
37756 case PT_Sint16:
37757 return emitLTSint16(I);
37758 case PT_Uint16:
37759 return emitLTUint16(I);
37760 case PT_Sint32:
37761 return emitLTSint32(I);
37762 case PT_Uint32:
37763 return emitLTUint32(I);
37764 case PT_Sint64:
37765 return emitLTSint64(I);
37766 case PT_Uint64:
37767 return emitLTUint64(I);
37768 case PT_IntAP:
37769 return emitLTIntAP(I);
37770 case PT_IntAPS:
37771 return emitLTIntAPS(I);
37772 case PT_Bool:
37773 return emitLTBool(I);
37774 case PT_FixedPoint:
37775 return emitLTFixedPoint(I);
37776 case PT_Ptr:
37777 return emitLTPtr(I);
37778 case PT_Float:
37779 return emitLTFloat(I);
37780 default: llvm_unreachable("invalid type: emitLT");
37781 }
37782 llvm_unreachable("invalid enum value");
37783}
37784#endif
37785#ifdef GET_LINK_IMPL
37786bool ByteCodeEmitter::emitLTSint8(SourceInfo L) {
37787 return emitOp<>(OP_LTSint8, L);
37788}
37789bool ByteCodeEmitter::emitLTUint8(SourceInfo L) {
37790 return emitOp<>(OP_LTUint8, L);
37791}
37792bool ByteCodeEmitter::emitLTSint16(SourceInfo L) {
37793 return emitOp<>(OP_LTSint16, L);
37794}
37795bool ByteCodeEmitter::emitLTUint16(SourceInfo L) {
37796 return emitOp<>(OP_LTUint16, L);
37797}
37798bool ByteCodeEmitter::emitLTSint32(SourceInfo L) {
37799 return emitOp<>(OP_LTSint32, L);
37800}
37801bool ByteCodeEmitter::emitLTUint32(SourceInfo L) {
37802 return emitOp<>(OP_LTUint32, L);
37803}
37804bool ByteCodeEmitter::emitLTSint64(SourceInfo L) {
37805 return emitOp<>(OP_LTSint64, L);
37806}
37807bool ByteCodeEmitter::emitLTUint64(SourceInfo L) {
37808 return emitOp<>(OP_LTUint64, L);
37809}
37810bool ByteCodeEmitter::emitLTIntAP(SourceInfo L) {
37811 return emitOp<>(OP_LTIntAP, L);
37812}
37813bool ByteCodeEmitter::emitLTIntAPS(SourceInfo L) {
37814 return emitOp<>(OP_LTIntAPS, L);
37815}
37816bool ByteCodeEmitter::emitLTBool(SourceInfo L) {
37817 return emitOp<>(OP_LTBool, L);
37818}
37819bool ByteCodeEmitter::emitLTFixedPoint(SourceInfo L) {
37820 return emitOp<>(OP_LTFixedPoint, L);
37821}
37822bool ByteCodeEmitter::emitLTPtr(SourceInfo L) {
37823 return emitOp<>(OP_LTPtr, L);
37824}
37825bool ByteCodeEmitter::emitLTFloat(SourceInfo L) {
37826 return emitOp<>(OP_LTFloat, L);
37827}
37828#endif
37829#ifdef GET_EVAL_IMPL
37830bool EvalEmitter::emitLTSint8(SourceInfo L) {
37831 if (!isActive()) return true;
37832 CurrentSource = L;
37833 return LT<PT_Sint8>(S, CodePtr());
37834}
37835bool EvalEmitter::emitLTUint8(SourceInfo L) {
37836 if (!isActive()) return true;
37837 CurrentSource = L;
37838 return LT<PT_Uint8>(S, CodePtr());
37839}
37840bool EvalEmitter::emitLTSint16(SourceInfo L) {
37841 if (!isActive()) return true;
37842 CurrentSource = L;
37843 return LT<PT_Sint16>(S, CodePtr());
37844}
37845bool EvalEmitter::emitLTUint16(SourceInfo L) {
37846 if (!isActive()) return true;
37847 CurrentSource = L;
37848 return LT<PT_Uint16>(S, CodePtr());
37849}
37850bool EvalEmitter::emitLTSint32(SourceInfo L) {
37851 if (!isActive()) return true;
37852 CurrentSource = L;
37853 return LT<PT_Sint32>(S, CodePtr());
37854}
37855bool EvalEmitter::emitLTUint32(SourceInfo L) {
37856 if (!isActive()) return true;
37857 CurrentSource = L;
37858 return LT<PT_Uint32>(S, CodePtr());
37859}
37860bool EvalEmitter::emitLTSint64(SourceInfo L) {
37861 if (!isActive()) return true;
37862 CurrentSource = L;
37863 return LT<PT_Sint64>(S, CodePtr());
37864}
37865bool EvalEmitter::emitLTUint64(SourceInfo L) {
37866 if (!isActive()) return true;
37867 CurrentSource = L;
37868 return LT<PT_Uint64>(S, CodePtr());
37869}
37870bool EvalEmitter::emitLTIntAP(SourceInfo L) {
37871 if (!isActive()) return true;
37872 CurrentSource = L;
37873 return LT<PT_IntAP>(S, CodePtr());
37874}
37875bool EvalEmitter::emitLTIntAPS(SourceInfo L) {
37876 if (!isActive()) return true;
37877 CurrentSource = L;
37878 return LT<PT_IntAPS>(S, CodePtr());
37879}
37880bool EvalEmitter::emitLTBool(SourceInfo L) {
37881 if (!isActive()) return true;
37882 CurrentSource = L;
37883 return LT<PT_Bool>(S, CodePtr());
37884}
37885bool EvalEmitter::emitLTFixedPoint(SourceInfo L) {
37886 if (!isActive()) return true;
37887 CurrentSource = L;
37888 return LT<PT_FixedPoint>(S, CodePtr());
37889}
37890bool EvalEmitter::emitLTPtr(SourceInfo L) {
37891 if (!isActive()) return true;
37892 CurrentSource = L;
37893 return LT<PT_Ptr>(S, CodePtr());
37894}
37895bool EvalEmitter::emitLTFloat(SourceInfo L) {
37896 if (!isActive()) return true;
37897 CurrentSource = L;
37898 return LT<PT_Float>(S, CodePtr());
37899}
37900#endif
37901#ifdef GET_OPCODE_NAMES
37902OP_LoadSint8,
37903OP_LoadUint8,
37904OP_LoadSint16,
37905OP_LoadUint16,
37906OP_LoadSint32,
37907OP_LoadUint32,
37908OP_LoadSint64,
37909OP_LoadUint64,
37910OP_LoadIntAP,
37911OP_LoadIntAPS,
37912OP_LoadBool,
37913OP_LoadFixedPoint,
37914OP_LoadPtr,
37915OP_LoadMemberPtr,
37916OP_LoadFloat,
37917#endif
37918#ifdef GET_INTERPFN_LIST
37919&Interp_LoadSint8,
37920&Interp_LoadUint8,
37921&Interp_LoadSint16,
37922&Interp_LoadUint16,
37923&Interp_LoadSint32,
37924&Interp_LoadUint32,
37925&Interp_LoadSint64,
37926&Interp_LoadUint64,
37927&Interp_LoadIntAP,
37928&Interp_LoadIntAPS,
37929&Interp_LoadBool,
37930&Interp_LoadFixedPoint,
37931&Interp_LoadPtr,
37932&Interp_LoadMemberPtr,
37933&Interp_LoadFloat,
37934#endif
37935#ifdef GET_INTERPFN_DISPATCHERS
37936PRESERVE_NONE
37937static bool Interp_LoadSint8(InterpState &S) {
37938 if (!Load<PT_Sint8>(S, S.PC)) return false;
37939#if USE_TAILCALLS
37940 MUSTTAIL return InterpNext(S);
37941#else
37942 return true;
37943#endif
37944}
37945PRESERVE_NONE
37946static bool Interp_LoadUint8(InterpState &S) {
37947 if (!Load<PT_Uint8>(S, S.PC)) return false;
37948#if USE_TAILCALLS
37949 MUSTTAIL return InterpNext(S);
37950#else
37951 return true;
37952#endif
37953}
37954PRESERVE_NONE
37955static bool Interp_LoadSint16(InterpState &S) {
37956 if (!Load<PT_Sint16>(S, S.PC)) return false;
37957#if USE_TAILCALLS
37958 MUSTTAIL return InterpNext(S);
37959#else
37960 return true;
37961#endif
37962}
37963PRESERVE_NONE
37964static bool Interp_LoadUint16(InterpState &S) {
37965 if (!Load<PT_Uint16>(S, S.PC)) return false;
37966#if USE_TAILCALLS
37967 MUSTTAIL return InterpNext(S);
37968#else
37969 return true;
37970#endif
37971}
37972PRESERVE_NONE
37973static bool Interp_LoadSint32(InterpState &S) {
37974 if (!Load<PT_Sint32>(S, S.PC)) return false;
37975#if USE_TAILCALLS
37976 MUSTTAIL return InterpNext(S);
37977#else
37978 return true;
37979#endif
37980}
37981PRESERVE_NONE
37982static bool Interp_LoadUint32(InterpState &S) {
37983 if (!Load<PT_Uint32>(S, S.PC)) return false;
37984#if USE_TAILCALLS
37985 MUSTTAIL return InterpNext(S);
37986#else
37987 return true;
37988#endif
37989}
37990PRESERVE_NONE
37991static bool Interp_LoadSint64(InterpState &S) {
37992 if (!Load<PT_Sint64>(S, S.PC)) return false;
37993#if USE_TAILCALLS
37994 MUSTTAIL return InterpNext(S);
37995#else
37996 return true;
37997#endif
37998}
37999PRESERVE_NONE
38000static bool Interp_LoadUint64(InterpState &S) {
38001 if (!Load<PT_Uint64>(S, S.PC)) return false;
38002#if USE_TAILCALLS
38003 MUSTTAIL return InterpNext(S);
38004#else
38005 return true;
38006#endif
38007}
38008PRESERVE_NONE
38009static bool Interp_LoadIntAP(InterpState &S) {
38010 if (!Load<PT_IntAP>(S, S.PC)) return false;
38011#if USE_TAILCALLS
38012 MUSTTAIL return InterpNext(S);
38013#else
38014 return true;
38015#endif
38016}
38017PRESERVE_NONE
38018static bool Interp_LoadIntAPS(InterpState &S) {
38019 if (!Load<PT_IntAPS>(S, S.PC)) return false;
38020#if USE_TAILCALLS
38021 MUSTTAIL return InterpNext(S);
38022#else
38023 return true;
38024#endif
38025}
38026PRESERVE_NONE
38027static bool Interp_LoadBool(InterpState &S) {
38028 if (!Load<PT_Bool>(S, S.PC)) return false;
38029#if USE_TAILCALLS
38030 MUSTTAIL return InterpNext(S);
38031#else
38032 return true;
38033#endif
38034}
38035PRESERVE_NONE
38036static bool Interp_LoadFixedPoint(InterpState &S) {
38037 if (!Load<PT_FixedPoint>(S, S.PC)) return false;
38038#if USE_TAILCALLS
38039 MUSTTAIL return InterpNext(S);
38040#else
38041 return true;
38042#endif
38043}
38044PRESERVE_NONE
38045static bool Interp_LoadPtr(InterpState &S) {
38046 if (!Load<PT_Ptr>(S, S.PC)) return false;
38047#if USE_TAILCALLS
38048 MUSTTAIL return InterpNext(S);
38049#else
38050 return true;
38051#endif
38052}
38053PRESERVE_NONE
38054static bool Interp_LoadMemberPtr(InterpState &S) {
38055 if (!Load<PT_MemberPtr>(S, S.PC)) return false;
38056#if USE_TAILCALLS
38057 MUSTTAIL return InterpNext(S);
38058#else
38059 return true;
38060#endif
38061}
38062PRESERVE_NONE
38063static bool Interp_LoadFloat(InterpState &S) {
38064 if (!Load<PT_Float>(S, S.PC)) return false;
38065#if USE_TAILCALLS
38066 MUSTTAIL return InterpNext(S);
38067#else
38068 return true;
38069#endif
38070}
38071#endif
38072#ifdef GET_DISASM
38073case OP_LoadSint8:
38074 Text.Op = PrintName("LoadSint8");
38075 break;
38076case OP_LoadUint8:
38077 Text.Op = PrintName("LoadUint8");
38078 break;
38079case OP_LoadSint16:
38080 Text.Op = PrintName("LoadSint16");
38081 break;
38082case OP_LoadUint16:
38083 Text.Op = PrintName("LoadUint16");
38084 break;
38085case OP_LoadSint32:
38086 Text.Op = PrintName("LoadSint32");
38087 break;
38088case OP_LoadUint32:
38089 Text.Op = PrintName("LoadUint32");
38090 break;
38091case OP_LoadSint64:
38092 Text.Op = PrintName("LoadSint64");
38093 break;
38094case OP_LoadUint64:
38095 Text.Op = PrintName("LoadUint64");
38096 break;
38097case OP_LoadIntAP:
38098 Text.Op = PrintName("LoadIntAP");
38099 break;
38100case OP_LoadIntAPS:
38101 Text.Op = PrintName("LoadIntAPS");
38102 break;
38103case OP_LoadBool:
38104 Text.Op = PrintName("LoadBool");
38105 break;
38106case OP_LoadFixedPoint:
38107 Text.Op = PrintName("LoadFixedPoint");
38108 break;
38109case OP_LoadPtr:
38110 Text.Op = PrintName("LoadPtr");
38111 break;
38112case OP_LoadMemberPtr:
38113 Text.Op = PrintName("LoadMemberPtr");
38114 break;
38115case OP_LoadFloat:
38116 Text.Op = PrintName("LoadFloat");
38117 break;
38118#endif
38119#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38120bool emitLoadSint8(SourceInfo);
38121bool emitLoadUint8(SourceInfo);
38122bool emitLoadSint16(SourceInfo);
38123bool emitLoadUint16(SourceInfo);
38124bool emitLoadSint32(SourceInfo);
38125bool emitLoadUint32(SourceInfo);
38126bool emitLoadSint64(SourceInfo);
38127bool emitLoadUint64(SourceInfo);
38128bool emitLoadIntAP(SourceInfo);
38129bool emitLoadIntAPS(SourceInfo);
38130bool emitLoadBool(SourceInfo);
38131bool emitLoadFixedPoint(SourceInfo);
38132bool emitLoadPtr(SourceInfo);
38133bool emitLoadMemberPtr(SourceInfo);
38134bool emitLoadFloat(SourceInfo);
38135#endif
38136#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38137[[nodiscard]] bool emitLoad(PrimType, SourceInfo I);
38138#endif
38139#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
38140bool
38141#if defined(GET_EVAL_IMPL)
38142EvalEmitter
38143#else
38144ByteCodeEmitter
38145#endif
38146::emitLoad(PrimType T0, SourceInfo I) {
38147 switch (T0) {
38148 case PT_Sint8:
38149 return emitLoadSint8(I);
38150 case PT_Uint8:
38151 return emitLoadUint8(I);
38152 case PT_Sint16:
38153 return emitLoadSint16(I);
38154 case PT_Uint16:
38155 return emitLoadUint16(I);
38156 case PT_Sint32:
38157 return emitLoadSint32(I);
38158 case PT_Uint32:
38159 return emitLoadUint32(I);
38160 case PT_Sint64:
38161 return emitLoadSint64(I);
38162 case PT_Uint64:
38163 return emitLoadUint64(I);
38164 case PT_IntAP:
38165 return emitLoadIntAP(I);
38166 case PT_IntAPS:
38167 return emitLoadIntAPS(I);
38168 case PT_Bool:
38169 return emitLoadBool(I);
38170 case PT_FixedPoint:
38171 return emitLoadFixedPoint(I);
38172 case PT_Ptr:
38173 return emitLoadPtr(I);
38174 case PT_MemberPtr:
38175 return emitLoadMemberPtr(I);
38176 case PT_Float:
38177 return emitLoadFloat(I);
38178 }
38179 llvm_unreachable("invalid enum value");
38180}
38181#endif
38182#ifdef GET_LINK_IMPL
38183bool ByteCodeEmitter::emitLoadSint8(SourceInfo L) {
38184 return emitOp<>(OP_LoadSint8, L);
38185}
38186bool ByteCodeEmitter::emitLoadUint8(SourceInfo L) {
38187 return emitOp<>(OP_LoadUint8, L);
38188}
38189bool ByteCodeEmitter::emitLoadSint16(SourceInfo L) {
38190 return emitOp<>(OP_LoadSint16, L);
38191}
38192bool ByteCodeEmitter::emitLoadUint16(SourceInfo L) {
38193 return emitOp<>(OP_LoadUint16, L);
38194}
38195bool ByteCodeEmitter::emitLoadSint32(SourceInfo L) {
38196 return emitOp<>(OP_LoadSint32, L);
38197}
38198bool ByteCodeEmitter::emitLoadUint32(SourceInfo L) {
38199 return emitOp<>(OP_LoadUint32, L);
38200}
38201bool ByteCodeEmitter::emitLoadSint64(SourceInfo L) {
38202 return emitOp<>(OP_LoadSint64, L);
38203}
38204bool ByteCodeEmitter::emitLoadUint64(SourceInfo L) {
38205 return emitOp<>(OP_LoadUint64, L);
38206}
38207bool ByteCodeEmitter::emitLoadIntAP(SourceInfo L) {
38208 return emitOp<>(OP_LoadIntAP, L);
38209}
38210bool ByteCodeEmitter::emitLoadIntAPS(SourceInfo L) {
38211 return emitOp<>(OP_LoadIntAPS, L);
38212}
38213bool ByteCodeEmitter::emitLoadBool(SourceInfo L) {
38214 return emitOp<>(OP_LoadBool, L);
38215}
38216bool ByteCodeEmitter::emitLoadFixedPoint(SourceInfo L) {
38217 return emitOp<>(OP_LoadFixedPoint, L);
38218}
38219bool ByteCodeEmitter::emitLoadPtr(SourceInfo L) {
38220 return emitOp<>(OP_LoadPtr, L);
38221}
38222bool ByteCodeEmitter::emitLoadMemberPtr(SourceInfo L) {
38223 return emitOp<>(OP_LoadMemberPtr, L);
38224}
38225bool ByteCodeEmitter::emitLoadFloat(SourceInfo L) {
38226 return emitOp<>(OP_LoadFloat, L);
38227}
38228#endif
38229#ifdef GET_EVAL_IMPL
38230bool EvalEmitter::emitLoadSint8(SourceInfo L) {
38231 if (!isActive()) return true;
38232 CurrentSource = L;
38233 return Load<PT_Sint8>(S, CodePtr());
38234}
38235bool EvalEmitter::emitLoadUint8(SourceInfo L) {
38236 if (!isActive()) return true;
38237 CurrentSource = L;
38238 return Load<PT_Uint8>(S, CodePtr());
38239}
38240bool EvalEmitter::emitLoadSint16(SourceInfo L) {
38241 if (!isActive()) return true;
38242 CurrentSource = L;
38243 return Load<PT_Sint16>(S, CodePtr());
38244}
38245bool EvalEmitter::emitLoadUint16(SourceInfo L) {
38246 if (!isActive()) return true;
38247 CurrentSource = L;
38248 return Load<PT_Uint16>(S, CodePtr());
38249}
38250bool EvalEmitter::emitLoadSint32(SourceInfo L) {
38251 if (!isActive()) return true;
38252 CurrentSource = L;
38253 return Load<PT_Sint32>(S, CodePtr());
38254}
38255bool EvalEmitter::emitLoadUint32(SourceInfo L) {
38256 if (!isActive()) return true;
38257 CurrentSource = L;
38258 return Load<PT_Uint32>(S, CodePtr());
38259}
38260bool EvalEmitter::emitLoadSint64(SourceInfo L) {
38261 if (!isActive()) return true;
38262 CurrentSource = L;
38263 return Load<PT_Sint64>(S, CodePtr());
38264}
38265bool EvalEmitter::emitLoadUint64(SourceInfo L) {
38266 if (!isActive()) return true;
38267 CurrentSource = L;
38268 return Load<PT_Uint64>(S, CodePtr());
38269}
38270bool EvalEmitter::emitLoadIntAP(SourceInfo L) {
38271 if (!isActive()) return true;
38272 CurrentSource = L;
38273 return Load<PT_IntAP>(S, CodePtr());
38274}
38275bool EvalEmitter::emitLoadIntAPS(SourceInfo L) {
38276 if (!isActive()) return true;
38277 CurrentSource = L;
38278 return Load<PT_IntAPS>(S, CodePtr());
38279}
38280bool EvalEmitter::emitLoadBool(SourceInfo L) {
38281 if (!isActive()) return true;
38282 CurrentSource = L;
38283 return Load<PT_Bool>(S, CodePtr());
38284}
38285bool EvalEmitter::emitLoadFixedPoint(SourceInfo L) {
38286 if (!isActive()) return true;
38287 CurrentSource = L;
38288 return Load<PT_FixedPoint>(S, CodePtr());
38289}
38290bool EvalEmitter::emitLoadPtr(SourceInfo L) {
38291 if (!isActive()) return true;
38292 CurrentSource = L;
38293 return Load<PT_Ptr>(S, CodePtr());
38294}
38295bool EvalEmitter::emitLoadMemberPtr(SourceInfo L) {
38296 if (!isActive()) return true;
38297 CurrentSource = L;
38298 return Load<PT_MemberPtr>(S, CodePtr());
38299}
38300bool EvalEmitter::emitLoadFloat(SourceInfo L) {
38301 if (!isActive()) return true;
38302 CurrentSource = L;
38303 return Load<PT_Float>(S, CodePtr());
38304}
38305#endif
38306#ifdef GET_OPCODE_NAMES
38307OP_LoadPopSint8,
38308OP_LoadPopUint8,
38309OP_LoadPopSint16,
38310OP_LoadPopUint16,
38311OP_LoadPopSint32,
38312OP_LoadPopUint32,
38313OP_LoadPopSint64,
38314OP_LoadPopUint64,
38315OP_LoadPopIntAP,
38316OP_LoadPopIntAPS,
38317OP_LoadPopBool,
38318OP_LoadPopFixedPoint,
38319OP_LoadPopPtr,
38320OP_LoadPopMemberPtr,
38321OP_LoadPopFloat,
38322#endif
38323#ifdef GET_INTERPFN_LIST
38324&Interp_LoadPopSint8,
38325&Interp_LoadPopUint8,
38326&Interp_LoadPopSint16,
38327&Interp_LoadPopUint16,
38328&Interp_LoadPopSint32,
38329&Interp_LoadPopUint32,
38330&Interp_LoadPopSint64,
38331&Interp_LoadPopUint64,
38332&Interp_LoadPopIntAP,
38333&Interp_LoadPopIntAPS,
38334&Interp_LoadPopBool,
38335&Interp_LoadPopFixedPoint,
38336&Interp_LoadPopPtr,
38337&Interp_LoadPopMemberPtr,
38338&Interp_LoadPopFloat,
38339#endif
38340#ifdef GET_INTERPFN_DISPATCHERS
38341PRESERVE_NONE
38342static bool Interp_LoadPopSint8(InterpState &S) {
38343 if (!LoadPop<PT_Sint8>(S, S.PC)) return false;
38344#if USE_TAILCALLS
38345 MUSTTAIL return InterpNext(S);
38346#else
38347 return true;
38348#endif
38349}
38350PRESERVE_NONE
38351static bool Interp_LoadPopUint8(InterpState &S) {
38352 if (!LoadPop<PT_Uint8>(S, S.PC)) return false;
38353#if USE_TAILCALLS
38354 MUSTTAIL return InterpNext(S);
38355#else
38356 return true;
38357#endif
38358}
38359PRESERVE_NONE
38360static bool Interp_LoadPopSint16(InterpState &S) {
38361 if (!LoadPop<PT_Sint16>(S, S.PC)) return false;
38362#if USE_TAILCALLS
38363 MUSTTAIL return InterpNext(S);
38364#else
38365 return true;
38366#endif
38367}
38368PRESERVE_NONE
38369static bool Interp_LoadPopUint16(InterpState &S) {
38370 if (!LoadPop<PT_Uint16>(S, S.PC)) return false;
38371#if USE_TAILCALLS
38372 MUSTTAIL return InterpNext(S);
38373#else
38374 return true;
38375#endif
38376}
38377PRESERVE_NONE
38378static bool Interp_LoadPopSint32(InterpState &S) {
38379 if (!LoadPop<PT_Sint32>(S, S.PC)) return false;
38380#if USE_TAILCALLS
38381 MUSTTAIL return InterpNext(S);
38382#else
38383 return true;
38384#endif
38385}
38386PRESERVE_NONE
38387static bool Interp_LoadPopUint32(InterpState &S) {
38388 if (!LoadPop<PT_Uint32>(S, S.PC)) return false;
38389#if USE_TAILCALLS
38390 MUSTTAIL return InterpNext(S);
38391#else
38392 return true;
38393#endif
38394}
38395PRESERVE_NONE
38396static bool Interp_LoadPopSint64(InterpState &S) {
38397 if (!LoadPop<PT_Sint64>(S, S.PC)) return false;
38398#if USE_TAILCALLS
38399 MUSTTAIL return InterpNext(S);
38400#else
38401 return true;
38402#endif
38403}
38404PRESERVE_NONE
38405static bool Interp_LoadPopUint64(InterpState &S) {
38406 if (!LoadPop<PT_Uint64>(S, S.PC)) return false;
38407#if USE_TAILCALLS
38408 MUSTTAIL return InterpNext(S);
38409#else
38410 return true;
38411#endif
38412}
38413PRESERVE_NONE
38414static bool Interp_LoadPopIntAP(InterpState &S) {
38415 if (!LoadPop<PT_IntAP>(S, S.PC)) return false;
38416#if USE_TAILCALLS
38417 MUSTTAIL return InterpNext(S);
38418#else
38419 return true;
38420#endif
38421}
38422PRESERVE_NONE
38423static bool Interp_LoadPopIntAPS(InterpState &S) {
38424 if (!LoadPop<PT_IntAPS>(S, S.PC)) return false;
38425#if USE_TAILCALLS
38426 MUSTTAIL return InterpNext(S);
38427#else
38428 return true;
38429#endif
38430}
38431PRESERVE_NONE
38432static bool Interp_LoadPopBool(InterpState &S) {
38433 if (!LoadPop<PT_Bool>(S, S.PC)) return false;
38434#if USE_TAILCALLS
38435 MUSTTAIL return InterpNext(S);
38436#else
38437 return true;
38438#endif
38439}
38440PRESERVE_NONE
38441static bool Interp_LoadPopFixedPoint(InterpState &S) {
38442 if (!LoadPop<PT_FixedPoint>(S, S.PC)) return false;
38443#if USE_TAILCALLS
38444 MUSTTAIL return InterpNext(S);
38445#else
38446 return true;
38447#endif
38448}
38449PRESERVE_NONE
38450static bool Interp_LoadPopPtr(InterpState &S) {
38451 if (!LoadPop<PT_Ptr>(S, S.PC)) return false;
38452#if USE_TAILCALLS
38453 MUSTTAIL return InterpNext(S);
38454#else
38455 return true;
38456#endif
38457}
38458PRESERVE_NONE
38459static bool Interp_LoadPopMemberPtr(InterpState &S) {
38460 if (!LoadPop<PT_MemberPtr>(S, S.PC)) return false;
38461#if USE_TAILCALLS
38462 MUSTTAIL return InterpNext(S);
38463#else
38464 return true;
38465#endif
38466}
38467PRESERVE_NONE
38468static bool Interp_LoadPopFloat(InterpState &S) {
38469 if (!LoadPop<PT_Float>(S, S.PC)) return false;
38470#if USE_TAILCALLS
38471 MUSTTAIL return InterpNext(S);
38472#else
38473 return true;
38474#endif
38475}
38476#endif
38477#ifdef GET_DISASM
38478case OP_LoadPopSint8:
38479 Text.Op = PrintName("LoadPopSint8");
38480 break;
38481case OP_LoadPopUint8:
38482 Text.Op = PrintName("LoadPopUint8");
38483 break;
38484case OP_LoadPopSint16:
38485 Text.Op = PrintName("LoadPopSint16");
38486 break;
38487case OP_LoadPopUint16:
38488 Text.Op = PrintName("LoadPopUint16");
38489 break;
38490case OP_LoadPopSint32:
38491 Text.Op = PrintName("LoadPopSint32");
38492 break;
38493case OP_LoadPopUint32:
38494 Text.Op = PrintName("LoadPopUint32");
38495 break;
38496case OP_LoadPopSint64:
38497 Text.Op = PrintName("LoadPopSint64");
38498 break;
38499case OP_LoadPopUint64:
38500 Text.Op = PrintName("LoadPopUint64");
38501 break;
38502case OP_LoadPopIntAP:
38503 Text.Op = PrintName("LoadPopIntAP");
38504 break;
38505case OP_LoadPopIntAPS:
38506 Text.Op = PrintName("LoadPopIntAPS");
38507 break;
38508case OP_LoadPopBool:
38509 Text.Op = PrintName("LoadPopBool");
38510 break;
38511case OP_LoadPopFixedPoint:
38512 Text.Op = PrintName("LoadPopFixedPoint");
38513 break;
38514case OP_LoadPopPtr:
38515 Text.Op = PrintName("LoadPopPtr");
38516 break;
38517case OP_LoadPopMemberPtr:
38518 Text.Op = PrintName("LoadPopMemberPtr");
38519 break;
38520case OP_LoadPopFloat:
38521 Text.Op = PrintName("LoadPopFloat");
38522 break;
38523#endif
38524#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38525bool emitLoadPopSint8(SourceInfo);
38526bool emitLoadPopUint8(SourceInfo);
38527bool emitLoadPopSint16(SourceInfo);
38528bool emitLoadPopUint16(SourceInfo);
38529bool emitLoadPopSint32(SourceInfo);
38530bool emitLoadPopUint32(SourceInfo);
38531bool emitLoadPopSint64(SourceInfo);
38532bool emitLoadPopUint64(SourceInfo);
38533bool emitLoadPopIntAP(SourceInfo);
38534bool emitLoadPopIntAPS(SourceInfo);
38535bool emitLoadPopBool(SourceInfo);
38536bool emitLoadPopFixedPoint(SourceInfo);
38537bool emitLoadPopPtr(SourceInfo);
38538bool emitLoadPopMemberPtr(SourceInfo);
38539bool emitLoadPopFloat(SourceInfo);
38540#endif
38541#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38542[[nodiscard]] bool emitLoadPop(PrimType, SourceInfo I);
38543#endif
38544#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
38545bool
38546#if defined(GET_EVAL_IMPL)
38547EvalEmitter
38548#else
38549ByteCodeEmitter
38550#endif
38551::emitLoadPop(PrimType T0, SourceInfo I) {
38552 switch (T0) {
38553 case PT_Sint8:
38554 return emitLoadPopSint8(I);
38555 case PT_Uint8:
38556 return emitLoadPopUint8(I);
38557 case PT_Sint16:
38558 return emitLoadPopSint16(I);
38559 case PT_Uint16:
38560 return emitLoadPopUint16(I);
38561 case PT_Sint32:
38562 return emitLoadPopSint32(I);
38563 case PT_Uint32:
38564 return emitLoadPopUint32(I);
38565 case PT_Sint64:
38566 return emitLoadPopSint64(I);
38567 case PT_Uint64:
38568 return emitLoadPopUint64(I);
38569 case PT_IntAP:
38570 return emitLoadPopIntAP(I);
38571 case PT_IntAPS:
38572 return emitLoadPopIntAPS(I);
38573 case PT_Bool:
38574 return emitLoadPopBool(I);
38575 case PT_FixedPoint:
38576 return emitLoadPopFixedPoint(I);
38577 case PT_Ptr:
38578 return emitLoadPopPtr(I);
38579 case PT_MemberPtr:
38580 return emitLoadPopMemberPtr(I);
38581 case PT_Float:
38582 return emitLoadPopFloat(I);
38583 }
38584 llvm_unreachable("invalid enum value");
38585}
38586#endif
38587#ifdef GET_LINK_IMPL
38588bool ByteCodeEmitter::emitLoadPopSint8(SourceInfo L) {
38589 return emitOp<>(OP_LoadPopSint8, L);
38590}
38591bool ByteCodeEmitter::emitLoadPopUint8(SourceInfo L) {
38592 return emitOp<>(OP_LoadPopUint8, L);
38593}
38594bool ByteCodeEmitter::emitLoadPopSint16(SourceInfo L) {
38595 return emitOp<>(OP_LoadPopSint16, L);
38596}
38597bool ByteCodeEmitter::emitLoadPopUint16(SourceInfo L) {
38598 return emitOp<>(OP_LoadPopUint16, L);
38599}
38600bool ByteCodeEmitter::emitLoadPopSint32(SourceInfo L) {
38601 return emitOp<>(OP_LoadPopSint32, L);
38602}
38603bool ByteCodeEmitter::emitLoadPopUint32(SourceInfo L) {
38604 return emitOp<>(OP_LoadPopUint32, L);
38605}
38606bool ByteCodeEmitter::emitLoadPopSint64(SourceInfo L) {
38607 return emitOp<>(OP_LoadPopSint64, L);
38608}
38609bool ByteCodeEmitter::emitLoadPopUint64(SourceInfo L) {
38610 return emitOp<>(OP_LoadPopUint64, L);
38611}
38612bool ByteCodeEmitter::emitLoadPopIntAP(SourceInfo L) {
38613 return emitOp<>(OP_LoadPopIntAP, L);
38614}
38615bool ByteCodeEmitter::emitLoadPopIntAPS(SourceInfo L) {
38616 return emitOp<>(OP_LoadPopIntAPS, L);
38617}
38618bool ByteCodeEmitter::emitLoadPopBool(SourceInfo L) {
38619 return emitOp<>(OP_LoadPopBool, L);
38620}
38621bool ByteCodeEmitter::emitLoadPopFixedPoint(SourceInfo L) {
38622 return emitOp<>(OP_LoadPopFixedPoint, L);
38623}
38624bool ByteCodeEmitter::emitLoadPopPtr(SourceInfo L) {
38625 return emitOp<>(OP_LoadPopPtr, L);
38626}
38627bool ByteCodeEmitter::emitLoadPopMemberPtr(SourceInfo L) {
38628 return emitOp<>(OP_LoadPopMemberPtr, L);
38629}
38630bool ByteCodeEmitter::emitLoadPopFloat(SourceInfo L) {
38631 return emitOp<>(OP_LoadPopFloat, L);
38632}
38633#endif
38634#ifdef GET_EVAL_IMPL
38635bool EvalEmitter::emitLoadPopSint8(SourceInfo L) {
38636 if (!isActive()) return true;
38637 CurrentSource = L;
38638 return LoadPop<PT_Sint8>(S, CodePtr());
38639}
38640bool EvalEmitter::emitLoadPopUint8(SourceInfo L) {
38641 if (!isActive()) return true;
38642 CurrentSource = L;
38643 return LoadPop<PT_Uint8>(S, CodePtr());
38644}
38645bool EvalEmitter::emitLoadPopSint16(SourceInfo L) {
38646 if (!isActive()) return true;
38647 CurrentSource = L;
38648 return LoadPop<PT_Sint16>(S, CodePtr());
38649}
38650bool EvalEmitter::emitLoadPopUint16(SourceInfo L) {
38651 if (!isActive()) return true;
38652 CurrentSource = L;
38653 return LoadPop<PT_Uint16>(S, CodePtr());
38654}
38655bool EvalEmitter::emitLoadPopSint32(SourceInfo L) {
38656 if (!isActive()) return true;
38657 CurrentSource = L;
38658 return LoadPop<PT_Sint32>(S, CodePtr());
38659}
38660bool EvalEmitter::emitLoadPopUint32(SourceInfo L) {
38661 if (!isActive()) return true;
38662 CurrentSource = L;
38663 return LoadPop<PT_Uint32>(S, CodePtr());
38664}
38665bool EvalEmitter::emitLoadPopSint64(SourceInfo L) {
38666 if (!isActive()) return true;
38667 CurrentSource = L;
38668 return LoadPop<PT_Sint64>(S, CodePtr());
38669}
38670bool EvalEmitter::emitLoadPopUint64(SourceInfo L) {
38671 if (!isActive()) return true;
38672 CurrentSource = L;
38673 return LoadPop<PT_Uint64>(S, CodePtr());
38674}
38675bool EvalEmitter::emitLoadPopIntAP(SourceInfo L) {
38676 if (!isActive()) return true;
38677 CurrentSource = L;
38678 return LoadPop<PT_IntAP>(S, CodePtr());
38679}
38680bool EvalEmitter::emitLoadPopIntAPS(SourceInfo L) {
38681 if (!isActive()) return true;
38682 CurrentSource = L;
38683 return LoadPop<PT_IntAPS>(S, CodePtr());
38684}
38685bool EvalEmitter::emitLoadPopBool(SourceInfo L) {
38686 if (!isActive()) return true;
38687 CurrentSource = L;
38688 return LoadPop<PT_Bool>(S, CodePtr());
38689}
38690bool EvalEmitter::emitLoadPopFixedPoint(SourceInfo L) {
38691 if (!isActive()) return true;
38692 CurrentSource = L;
38693 return LoadPop<PT_FixedPoint>(S, CodePtr());
38694}
38695bool EvalEmitter::emitLoadPopPtr(SourceInfo L) {
38696 if (!isActive()) return true;
38697 CurrentSource = L;
38698 return LoadPop<PT_Ptr>(S, CodePtr());
38699}
38700bool EvalEmitter::emitLoadPopMemberPtr(SourceInfo L) {
38701 if (!isActive()) return true;
38702 CurrentSource = L;
38703 return LoadPop<PT_MemberPtr>(S, CodePtr());
38704}
38705bool EvalEmitter::emitLoadPopFloat(SourceInfo L) {
38706 if (!isActive()) return true;
38707 CurrentSource = L;
38708 return LoadPop<PT_Float>(S, CodePtr());
38709}
38710#endif
38711#ifdef GET_OPCODE_NAMES
38712OP_LoadPopL,
38713#endif
38714#ifdef GET_INTERPFN_LIST
38715&Interp_LoadPopL,
38716#endif
38717#ifdef GET_INTERPFN_DISPATCHERS
38718PRESERVE_NONE
38719static bool Interp_LoadPopL(InterpState &S) {
38720 if (!LoadPopL(S, S.PC)) return false;
38721#if USE_TAILCALLS
38722 MUSTTAIL return InterpNext(S);
38723#else
38724 return true;
38725#endif
38726}
38727#endif
38728#ifdef GET_DISASM
38729case OP_LoadPopL:
38730 Text.Op = PrintName("LoadPopL");
38731 break;
38732#endif
38733#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38734bool emitLoadPopL(SourceInfo);
38735#endif
38736#ifdef GET_LINK_IMPL
38737bool ByteCodeEmitter::emitLoadPopL(SourceInfo L) {
38738 return emitOp<>(OP_LoadPopL, L);
38739}
38740#endif
38741#ifdef GET_EVAL_IMPL
38742bool EvalEmitter::emitLoadPopL(SourceInfo L) {
38743 if (!isActive()) return true;
38744 CurrentSource = L;
38745 return LoadPopL(S, CodePtr());
38746}
38747#endif
38748#ifdef GET_OPCODE_NAMES
38749OP_MarkDestroyed,
38750#endif
38751#ifdef GET_INTERPFN_LIST
38752&Interp_MarkDestroyed,
38753#endif
38754#ifdef GET_INTERPFN_DISPATCHERS
38755PRESERVE_NONE
38756static bool Interp_MarkDestroyed(InterpState &S) {
38757 if (!MarkDestroyed(S, S.PC)) return false;
38758#if USE_TAILCALLS
38759 MUSTTAIL return InterpNext(S);
38760#else
38761 return true;
38762#endif
38763}
38764#endif
38765#ifdef GET_DISASM
38766case OP_MarkDestroyed:
38767 Text.Op = PrintName("MarkDestroyed");
38768 break;
38769#endif
38770#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38771bool emitMarkDestroyed(SourceInfo);
38772#endif
38773#ifdef GET_LINK_IMPL
38774bool ByteCodeEmitter::emitMarkDestroyed(SourceInfo L) {
38775 return emitOp<>(OP_MarkDestroyed, L);
38776}
38777#endif
38778#ifdef GET_EVAL_IMPL
38779bool EvalEmitter::emitMarkDestroyed(SourceInfo L) {
38780 if (!isActive()) return true;
38781 CurrentSource = L;
38782 return MarkDestroyed(S, CodePtr());
38783}
38784#endif
38785#ifdef GET_OPCODE_NAMES
38786OP_Memcpy,
38787#endif
38788#ifdef GET_INTERPFN_LIST
38789&Interp_Memcpy,
38790#endif
38791#ifdef GET_INTERPFN_DISPATCHERS
38792PRESERVE_NONE
38793static bool Interp_Memcpy(InterpState &S) {
38794 if (!Memcpy(S, S.PC)) return false;
38795#if USE_TAILCALLS
38796 MUSTTAIL return InterpNext(S);
38797#else
38798 return true;
38799#endif
38800}
38801#endif
38802#ifdef GET_DISASM
38803case OP_Memcpy:
38804 Text.Op = PrintName("Memcpy");
38805 break;
38806#endif
38807#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38808bool emitMemcpy(SourceInfo);
38809#endif
38810#ifdef GET_LINK_IMPL
38811bool ByteCodeEmitter::emitMemcpy(SourceInfo L) {
38812 return emitOp<>(OP_Memcpy, L);
38813}
38814#endif
38815#ifdef GET_EVAL_IMPL
38816bool EvalEmitter::emitMemcpy(SourceInfo L) {
38817 if (!isActive()) return true;
38818 CurrentSource = L;
38819 return Memcpy(S, CodePtr());
38820}
38821#endif
38822#ifdef GET_OPCODE_NAMES
38823OP_MulSint8,
38824OP_MulUint8,
38825OP_MulSint16,
38826OP_MulUint16,
38827OP_MulSint32,
38828OP_MulUint32,
38829OP_MulSint64,
38830OP_MulUint64,
38831OP_MulIntAP,
38832OP_MulIntAPS,
38833OP_MulBool,
38834OP_MulFixedPoint,
38835#endif
38836#ifdef GET_INTERPFN_LIST
38837&Interp_MulSint8,
38838&Interp_MulUint8,
38839&Interp_MulSint16,
38840&Interp_MulUint16,
38841&Interp_MulSint32,
38842&Interp_MulUint32,
38843&Interp_MulSint64,
38844&Interp_MulUint64,
38845&Interp_MulIntAP,
38846&Interp_MulIntAPS,
38847&Interp_MulBool,
38848&Interp_MulFixedPoint,
38849#endif
38850#ifdef GET_INTERPFN_DISPATCHERS
38851PRESERVE_NONE
38852static bool Interp_MulSint8(InterpState &S) {
38853 if (!Mul<PT_Sint8>(S, S.PC)) return false;
38854#if USE_TAILCALLS
38855 MUSTTAIL return InterpNext(S);
38856#else
38857 return true;
38858#endif
38859}
38860PRESERVE_NONE
38861static bool Interp_MulUint8(InterpState &S) {
38862 if (!Mul<PT_Uint8>(S, S.PC)) return false;
38863#if USE_TAILCALLS
38864 MUSTTAIL return InterpNext(S);
38865#else
38866 return true;
38867#endif
38868}
38869PRESERVE_NONE
38870static bool Interp_MulSint16(InterpState &S) {
38871 if (!Mul<PT_Sint16>(S, S.PC)) return false;
38872#if USE_TAILCALLS
38873 MUSTTAIL return InterpNext(S);
38874#else
38875 return true;
38876#endif
38877}
38878PRESERVE_NONE
38879static bool Interp_MulUint16(InterpState &S) {
38880 if (!Mul<PT_Uint16>(S, S.PC)) return false;
38881#if USE_TAILCALLS
38882 MUSTTAIL return InterpNext(S);
38883#else
38884 return true;
38885#endif
38886}
38887PRESERVE_NONE
38888static bool Interp_MulSint32(InterpState &S) {
38889 if (!Mul<PT_Sint32>(S, S.PC)) return false;
38890#if USE_TAILCALLS
38891 MUSTTAIL return InterpNext(S);
38892#else
38893 return true;
38894#endif
38895}
38896PRESERVE_NONE
38897static bool Interp_MulUint32(InterpState &S) {
38898 if (!Mul<PT_Uint32>(S, S.PC)) return false;
38899#if USE_TAILCALLS
38900 MUSTTAIL return InterpNext(S);
38901#else
38902 return true;
38903#endif
38904}
38905PRESERVE_NONE
38906static bool Interp_MulSint64(InterpState &S) {
38907 if (!Mul<PT_Sint64>(S, S.PC)) return false;
38908#if USE_TAILCALLS
38909 MUSTTAIL return InterpNext(S);
38910#else
38911 return true;
38912#endif
38913}
38914PRESERVE_NONE
38915static bool Interp_MulUint64(InterpState &S) {
38916 if (!Mul<PT_Uint64>(S, S.PC)) return false;
38917#if USE_TAILCALLS
38918 MUSTTAIL return InterpNext(S);
38919#else
38920 return true;
38921#endif
38922}
38923PRESERVE_NONE
38924static bool Interp_MulIntAP(InterpState &S) {
38925 if (!Mul<PT_IntAP>(S, S.PC)) return false;
38926#if USE_TAILCALLS
38927 MUSTTAIL return InterpNext(S);
38928#else
38929 return true;
38930#endif
38931}
38932PRESERVE_NONE
38933static bool Interp_MulIntAPS(InterpState &S) {
38934 if (!Mul<PT_IntAPS>(S, S.PC)) return false;
38935#if USE_TAILCALLS
38936 MUSTTAIL return InterpNext(S);
38937#else
38938 return true;
38939#endif
38940}
38941PRESERVE_NONE
38942static bool Interp_MulBool(InterpState &S) {
38943 if (!Mul<PT_Bool>(S, S.PC)) return false;
38944#if USE_TAILCALLS
38945 MUSTTAIL return InterpNext(S);
38946#else
38947 return true;
38948#endif
38949}
38950PRESERVE_NONE
38951static bool Interp_MulFixedPoint(InterpState &S) {
38952 if (!Mul<PT_FixedPoint>(S, S.PC)) return false;
38953#if USE_TAILCALLS
38954 MUSTTAIL return InterpNext(S);
38955#else
38956 return true;
38957#endif
38958}
38959#endif
38960#ifdef GET_DISASM
38961case OP_MulSint8:
38962 Text.Op = PrintName("MulSint8");
38963 break;
38964case OP_MulUint8:
38965 Text.Op = PrintName("MulUint8");
38966 break;
38967case OP_MulSint16:
38968 Text.Op = PrintName("MulSint16");
38969 break;
38970case OP_MulUint16:
38971 Text.Op = PrintName("MulUint16");
38972 break;
38973case OP_MulSint32:
38974 Text.Op = PrintName("MulSint32");
38975 break;
38976case OP_MulUint32:
38977 Text.Op = PrintName("MulUint32");
38978 break;
38979case OP_MulSint64:
38980 Text.Op = PrintName("MulSint64");
38981 break;
38982case OP_MulUint64:
38983 Text.Op = PrintName("MulUint64");
38984 break;
38985case OP_MulIntAP:
38986 Text.Op = PrintName("MulIntAP");
38987 break;
38988case OP_MulIntAPS:
38989 Text.Op = PrintName("MulIntAPS");
38990 break;
38991case OP_MulBool:
38992 Text.Op = PrintName("MulBool");
38993 break;
38994case OP_MulFixedPoint:
38995 Text.Op = PrintName("MulFixedPoint");
38996 break;
38997#endif
38998#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38999bool emitMulSint8(SourceInfo);
39000bool emitMulUint8(SourceInfo);
39001bool emitMulSint16(SourceInfo);
39002bool emitMulUint16(SourceInfo);
39003bool emitMulSint32(SourceInfo);
39004bool emitMulUint32(SourceInfo);
39005bool emitMulSint64(SourceInfo);
39006bool emitMulUint64(SourceInfo);
39007bool emitMulIntAP(SourceInfo);
39008bool emitMulIntAPS(SourceInfo);
39009bool emitMulBool(SourceInfo);
39010bool emitMulFixedPoint(SourceInfo);
39011#endif
39012#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39013[[nodiscard]] bool emitMul(PrimType, SourceInfo I);
39014#endif
39015#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
39016bool
39017#if defined(GET_EVAL_IMPL)
39018EvalEmitter
39019#else
39020ByteCodeEmitter
39021#endif
39022::emitMul(PrimType T0, SourceInfo I) {
39023 switch (T0) {
39024 case PT_Sint8:
39025 return emitMulSint8(I);
39026 case PT_Uint8:
39027 return emitMulUint8(I);
39028 case PT_Sint16:
39029 return emitMulSint16(I);
39030 case PT_Uint16:
39031 return emitMulUint16(I);
39032 case PT_Sint32:
39033 return emitMulSint32(I);
39034 case PT_Uint32:
39035 return emitMulUint32(I);
39036 case PT_Sint64:
39037 return emitMulSint64(I);
39038 case PT_Uint64:
39039 return emitMulUint64(I);
39040 case PT_IntAP:
39041 return emitMulIntAP(I);
39042 case PT_IntAPS:
39043 return emitMulIntAPS(I);
39044 case PT_Bool:
39045 return emitMulBool(I);
39046 case PT_FixedPoint:
39047 return emitMulFixedPoint(I);
39048 default: llvm_unreachable("invalid type: emitMul");
39049 }
39050 llvm_unreachable("invalid enum value");
39051}
39052#endif
39053#ifdef GET_LINK_IMPL
39054bool ByteCodeEmitter::emitMulSint8(SourceInfo L) {
39055 return emitOp<>(OP_MulSint8, L);
39056}
39057bool ByteCodeEmitter::emitMulUint8(SourceInfo L) {
39058 return emitOp<>(OP_MulUint8, L);
39059}
39060bool ByteCodeEmitter::emitMulSint16(SourceInfo L) {
39061 return emitOp<>(OP_MulSint16, L);
39062}
39063bool ByteCodeEmitter::emitMulUint16(SourceInfo L) {
39064 return emitOp<>(OP_MulUint16, L);
39065}
39066bool ByteCodeEmitter::emitMulSint32(SourceInfo L) {
39067 return emitOp<>(OP_MulSint32, L);
39068}
39069bool ByteCodeEmitter::emitMulUint32(SourceInfo L) {
39070 return emitOp<>(OP_MulUint32, L);
39071}
39072bool ByteCodeEmitter::emitMulSint64(SourceInfo L) {
39073 return emitOp<>(OP_MulSint64, L);
39074}
39075bool ByteCodeEmitter::emitMulUint64(SourceInfo L) {
39076 return emitOp<>(OP_MulUint64, L);
39077}
39078bool ByteCodeEmitter::emitMulIntAP(SourceInfo L) {
39079 return emitOp<>(OP_MulIntAP, L);
39080}
39081bool ByteCodeEmitter::emitMulIntAPS(SourceInfo L) {
39082 return emitOp<>(OP_MulIntAPS, L);
39083}
39084bool ByteCodeEmitter::emitMulBool(SourceInfo L) {
39085 return emitOp<>(OP_MulBool, L);
39086}
39087bool ByteCodeEmitter::emitMulFixedPoint(SourceInfo L) {
39088 return emitOp<>(OP_MulFixedPoint, L);
39089}
39090#endif
39091#ifdef GET_EVAL_IMPL
39092bool EvalEmitter::emitMulSint8(SourceInfo L) {
39093 if (!isActive()) return true;
39094 CurrentSource = L;
39095 return Mul<PT_Sint8>(S, CodePtr());
39096}
39097bool EvalEmitter::emitMulUint8(SourceInfo L) {
39098 if (!isActive()) return true;
39099 CurrentSource = L;
39100 return Mul<PT_Uint8>(S, CodePtr());
39101}
39102bool EvalEmitter::emitMulSint16(SourceInfo L) {
39103 if (!isActive()) return true;
39104 CurrentSource = L;
39105 return Mul<PT_Sint16>(S, CodePtr());
39106}
39107bool EvalEmitter::emitMulUint16(SourceInfo L) {
39108 if (!isActive()) return true;
39109 CurrentSource = L;
39110 return Mul<PT_Uint16>(S, CodePtr());
39111}
39112bool EvalEmitter::emitMulSint32(SourceInfo L) {
39113 if (!isActive()) return true;
39114 CurrentSource = L;
39115 return Mul<PT_Sint32>(S, CodePtr());
39116}
39117bool EvalEmitter::emitMulUint32(SourceInfo L) {
39118 if (!isActive()) return true;
39119 CurrentSource = L;
39120 return Mul<PT_Uint32>(S, CodePtr());
39121}
39122bool EvalEmitter::emitMulSint64(SourceInfo L) {
39123 if (!isActive()) return true;
39124 CurrentSource = L;
39125 return Mul<PT_Sint64>(S, CodePtr());
39126}
39127bool EvalEmitter::emitMulUint64(SourceInfo L) {
39128 if (!isActive()) return true;
39129 CurrentSource = L;
39130 return Mul<PT_Uint64>(S, CodePtr());
39131}
39132bool EvalEmitter::emitMulIntAP(SourceInfo L) {
39133 if (!isActive()) return true;
39134 CurrentSource = L;
39135 return Mul<PT_IntAP>(S, CodePtr());
39136}
39137bool EvalEmitter::emitMulIntAPS(SourceInfo L) {
39138 if (!isActive()) return true;
39139 CurrentSource = L;
39140 return Mul<PT_IntAPS>(S, CodePtr());
39141}
39142bool EvalEmitter::emitMulBool(SourceInfo L) {
39143 if (!isActive()) return true;
39144 CurrentSource = L;
39145 return Mul<PT_Bool>(S, CodePtr());
39146}
39147bool EvalEmitter::emitMulFixedPoint(SourceInfo L) {
39148 if (!isActive()) return true;
39149 CurrentSource = L;
39150 return Mul<PT_FixedPoint>(S, CodePtr());
39151}
39152#endif
39153#ifdef GET_OPCODE_NAMES
39154OP_MulcSint8,
39155OP_MulcUint8,
39156OP_MulcSint16,
39157OP_MulcUint16,
39158OP_MulcSint32,
39159OP_MulcUint32,
39160OP_MulcSint64,
39161OP_MulcUint64,
39162OP_MulcIntAP,
39163OP_MulcIntAPS,
39164OP_MulcFloat,
39165#endif
39166#ifdef GET_INTERPFN_LIST
39167&Interp_MulcSint8,
39168&Interp_MulcUint8,
39169&Interp_MulcSint16,
39170&Interp_MulcUint16,
39171&Interp_MulcSint32,
39172&Interp_MulcUint32,
39173&Interp_MulcSint64,
39174&Interp_MulcUint64,
39175&Interp_MulcIntAP,
39176&Interp_MulcIntAPS,
39177&Interp_MulcFloat,
39178#endif
39179#ifdef GET_INTERPFN_DISPATCHERS
39180PRESERVE_NONE
39181static bool Interp_MulcSint8(InterpState &S) {
39182 if (!Mulc<PT_Sint8>(S)) return false;
39183#if USE_TAILCALLS
39184 MUSTTAIL return InterpNext(S);
39185#else
39186 return true;
39187#endif
39188}
39189PRESERVE_NONE
39190static bool Interp_MulcUint8(InterpState &S) {
39191 if (!Mulc<PT_Uint8>(S)) return false;
39192#if USE_TAILCALLS
39193 MUSTTAIL return InterpNext(S);
39194#else
39195 return true;
39196#endif
39197}
39198PRESERVE_NONE
39199static bool Interp_MulcSint16(InterpState &S) {
39200 if (!Mulc<PT_Sint16>(S)) return false;
39201#if USE_TAILCALLS
39202 MUSTTAIL return InterpNext(S);
39203#else
39204 return true;
39205#endif
39206}
39207PRESERVE_NONE
39208static bool Interp_MulcUint16(InterpState &S) {
39209 if (!Mulc<PT_Uint16>(S)) return false;
39210#if USE_TAILCALLS
39211 MUSTTAIL return InterpNext(S);
39212#else
39213 return true;
39214#endif
39215}
39216PRESERVE_NONE
39217static bool Interp_MulcSint32(InterpState &S) {
39218 if (!Mulc<PT_Sint32>(S)) return false;
39219#if USE_TAILCALLS
39220 MUSTTAIL return InterpNext(S);
39221#else
39222 return true;
39223#endif
39224}
39225PRESERVE_NONE
39226static bool Interp_MulcUint32(InterpState &S) {
39227 if (!Mulc<PT_Uint32>(S)) return false;
39228#if USE_TAILCALLS
39229 MUSTTAIL return InterpNext(S);
39230#else
39231 return true;
39232#endif
39233}
39234PRESERVE_NONE
39235static bool Interp_MulcSint64(InterpState &S) {
39236 if (!Mulc<PT_Sint64>(S)) return false;
39237#if USE_TAILCALLS
39238 MUSTTAIL return InterpNext(S);
39239#else
39240 return true;
39241#endif
39242}
39243PRESERVE_NONE
39244static bool Interp_MulcUint64(InterpState &S) {
39245 if (!Mulc<PT_Uint64>(S)) return false;
39246#if USE_TAILCALLS
39247 MUSTTAIL return InterpNext(S);
39248#else
39249 return true;
39250#endif
39251}
39252PRESERVE_NONE
39253static bool Interp_MulcIntAP(InterpState &S) {
39254 if (!Mulc<PT_IntAP>(S)) return false;
39255#if USE_TAILCALLS
39256 MUSTTAIL return InterpNext(S);
39257#else
39258 return true;
39259#endif
39260}
39261PRESERVE_NONE
39262static bool Interp_MulcIntAPS(InterpState &S) {
39263 if (!Mulc<PT_IntAPS>(S)) return false;
39264#if USE_TAILCALLS
39265 MUSTTAIL return InterpNext(S);
39266#else
39267 return true;
39268#endif
39269}
39270PRESERVE_NONE
39271static bool Interp_MulcFloat(InterpState &S) {
39272 if (!Mulc<PT_Float>(S)) return false;
39273#if USE_TAILCALLS
39274 MUSTTAIL return InterpNext(S);
39275#else
39276 return true;
39277#endif
39278}
39279#endif
39280#ifdef GET_DISASM
39281case OP_MulcSint8:
39282 Text.Op = PrintName("MulcSint8");
39283 break;
39284case OP_MulcUint8:
39285 Text.Op = PrintName("MulcUint8");
39286 break;
39287case OP_MulcSint16:
39288 Text.Op = PrintName("MulcSint16");
39289 break;
39290case OP_MulcUint16:
39291 Text.Op = PrintName("MulcUint16");
39292 break;
39293case OP_MulcSint32:
39294 Text.Op = PrintName("MulcSint32");
39295 break;
39296case OP_MulcUint32:
39297 Text.Op = PrintName("MulcUint32");
39298 break;
39299case OP_MulcSint64:
39300 Text.Op = PrintName("MulcSint64");
39301 break;
39302case OP_MulcUint64:
39303 Text.Op = PrintName("MulcUint64");
39304 break;
39305case OP_MulcIntAP:
39306 Text.Op = PrintName("MulcIntAP");
39307 break;
39308case OP_MulcIntAPS:
39309 Text.Op = PrintName("MulcIntAPS");
39310 break;
39311case OP_MulcFloat:
39312 Text.Op = PrintName("MulcFloat");
39313 break;
39314#endif
39315#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39316bool emitMulcSint8(SourceInfo);
39317bool emitMulcUint8(SourceInfo);
39318bool emitMulcSint16(SourceInfo);
39319bool emitMulcUint16(SourceInfo);
39320bool emitMulcSint32(SourceInfo);
39321bool emitMulcUint32(SourceInfo);
39322bool emitMulcSint64(SourceInfo);
39323bool emitMulcUint64(SourceInfo);
39324bool emitMulcIntAP(SourceInfo);
39325bool emitMulcIntAPS(SourceInfo);
39326bool emitMulcFloat(SourceInfo);
39327#endif
39328#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39329[[nodiscard]] bool emitMulc(PrimType, SourceInfo I);
39330#endif
39331#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
39332bool
39333#if defined(GET_EVAL_IMPL)
39334EvalEmitter
39335#else
39336ByteCodeEmitter
39337#endif
39338::emitMulc(PrimType T0, SourceInfo I) {
39339 switch (T0) {
39340 case PT_Sint8:
39341 return emitMulcSint8(I);
39342 case PT_Uint8:
39343 return emitMulcUint8(I);
39344 case PT_Sint16:
39345 return emitMulcSint16(I);
39346 case PT_Uint16:
39347 return emitMulcUint16(I);
39348 case PT_Sint32:
39349 return emitMulcSint32(I);
39350 case PT_Uint32:
39351 return emitMulcUint32(I);
39352 case PT_Sint64:
39353 return emitMulcSint64(I);
39354 case PT_Uint64:
39355 return emitMulcUint64(I);
39356 case PT_IntAP:
39357 return emitMulcIntAP(I);
39358 case PT_IntAPS:
39359 return emitMulcIntAPS(I);
39360 case PT_Float:
39361 return emitMulcFloat(I);
39362 default: llvm_unreachable("invalid type: emitMulc");
39363 }
39364 llvm_unreachable("invalid enum value");
39365}
39366#endif
39367#ifdef GET_LINK_IMPL
39368bool ByteCodeEmitter::emitMulcSint8(SourceInfo L) {
39369 return emitOp<>(OP_MulcSint8, L);
39370}
39371bool ByteCodeEmitter::emitMulcUint8(SourceInfo L) {
39372 return emitOp<>(OP_MulcUint8, L);
39373}
39374bool ByteCodeEmitter::emitMulcSint16(SourceInfo L) {
39375 return emitOp<>(OP_MulcSint16, L);
39376}
39377bool ByteCodeEmitter::emitMulcUint16(SourceInfo L) {
39378 return emitOp<>(OP_MulcUint16, L);
39379}
39380bool ByteCodeEmitter::emitMulcSint32(SourceInfo L) {
39381 return emitOp<>(OP_MulcSint32, L);
39382}
39383bool ByteCodeEmitter::emitMulcUint32(SourceInfo L) {
39384 return emitOp<>(OP_MulcUint32, L);
39385}
39386bool ByteCodeEmitter::emitMulcSint64(SourceInfo L) {
39387 return emitOp<>(OP_MulcSint64, L);
39388}
39389bool ByteCodeEmitter::emitMulcUint64(SourceInfo L) {
39390 return emitOp<>(OP_MulcUint64, L);
39391}
39392bool ByteCodeEmitter::emitMulcIntAP(SourceInfo L) {
39393 return emitOp<>(OP_MulcIntAP, L);
39394}
39395bool ByteCodeEmitter::emitMulcIntAPS(SourceInfo L) {
39396 return emitOp<>(OP_MulcIntAPS, L);
39397}
39398bool ByteCodeEmitter::emitMulcFloat(SourceInfo L) {
39399 return emitOp<>(OP_MulcFloat, L);
39400}
39401#endif
39402#ifdef GET_EVAL_IMPL
39403bool EvalEmitter::emitMulcSint8(SourceInfo L) {
39404 if (!isActive()) return true;
39405 CurrentSource = L;
39406 return Mulc<PT_Sint8>(S);
39407}
39408bool EvalEmitter::emitMulcUint8(SourceInfo L) {
39409 if (!isActive()) return true;
39410 CurrentSource = L;
39411 return Mulc<PT_Uint8>(S);
39412}
39413bool EvalEmitter::emitMulcSint16(SourceInfo L) {
39414 if (!isActive()) return true;
39415 CurrentSource = L;
39416 return Mulc<PT_Sint16>(S);
39417}
39418bool EvalEmitter::emitMulcUint16(SourceInfo L) {
39419 if (!isActive()) return true;
39420 CurrentSource = L;
39421 return Mulc<PT_Uint16>(S);
39422}
39423bool EvalEmitter::emitMulcSint32(SourceInfo L) {
39424 if (!isActive()) return true;
39425 CurrentSource = L;
39426 return Mulc<PT_Sint32>(S);
39427}
39428bool EvalEmitter::emitMulcUint32(SourceInfo L) {
39429 if (!isActive()) return true;
39430 CurrentSource = L;
39431 return Mulc<PT_Uint32>(S);
39432}
39433bool EvalEmitter::emitMulcSint64(SourceInfo L) {
39434 if (!isActive()) return true;
39435 CurrentSource = L;
39436 return Mulc<PT_Sint64>(S);
39437}
39438bool EvalEmitter::emitMulcUint64(SourceInfo L) {
39439 if (!isActive()) return true;
39440 CurrentSource = L;
39441 return Mulc<PT_Uint64>(S);
39442}
39443bool EvalEmitter::emitMulcIntAP(SourceInfo L) {
39444 if (!isActive()) return true;
39445 CurrentSource = L;
39446 return Mulc<PT_IntAP>(S);
39447}
39448bool EvalEmitter::emitMulcIntAPS(SourceInfo L) {
39449 if (!isActive()) return true;
39450 CurrentSource = L;
39451 return Mulc<PT_IntAPS>(S);
39452}
39453bool EvalEmitter::emitMulcFloat(SourceInfo L) {
39454 if (!isActive()) return true;
39455 CurrentSource = L;
39456 return Mulc<PT_Float>(S);
39457}
39458#endif
39459#ifdef GET_OPCODE_NAMES
39460OP_Mulf,
39461#endif
39462#ifdef GET_INTERPFN_LIST
39463&Interp_Mulf,
39464#endif
39465#ifdef GET_INTERPFN_DISPATCHERS
39466PRESERVE_NONE
39467static bool Interp_Mulf(InterpState &S) {
39468 {
39469 CodePtr OpPC = S.PC;
39470 const auto V0 = ReadArg<uint32_t>(S, S.PC);
39471 if (!Mulf(S, OpPC, V0)) return false;
39472 }
39473#if USE_TAILCALLS
39474 MUSTTAIL return InterpNext(S);
39475#else
39476 return true;
39477#endif
39478}
39479#endif
39480#ifdef GET_DISASM
39481case OP_Mulf:
39482 Text.Op = PrintName("Mulf");
39483 Text.Args.push_back(printArg<uint32_t>(PC));
39484 break;
39485#endif
39486#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39487bool emitMulf( uint32_t , SourceInfo);
39488#endif
39489#ifdef GET_LINK_IMPL
39490bool ByteCodeEmitter::emitMulf( uint32_t A0, SourceInfo L) {
39491 return emitOp<uint32_t>(OP_Mulf, A0, L);
39492}
39493#endif
39494#ifdef GET_EVAL_IMPL
39495bool EvalEmitter::emitMulf( uint32_t A0, SourceInfo L) {
39496 if (!isActive()) return true;
39497 CurrentSource = L;
39498 return Mulf(S, CodePtr(), A0);
39499}
39500#endif
39501#ifdef GET_OPCODE_NAMES
39502OP_NESint8,
39503OP_NEUint8,
39504OP_NESint16,
39505OP_NEUint16,
39506OP_NESint32,
39507OP_NEUint32,
39508OP_NESint64,
39509OP_NEUint64,
39510OP_NEIntAP,
39511OP_NEIntAPS,
39512OP_NEBool,
39513OP_NEFixedPoint,
39514OP_NEPtr,
39515OP_NEMemberPtr,
39516OP_NEFloat,
39517#endif
39518#ifdef GET_INTERPFN_LIST
39519&Interp_NESint8,
39520&Interp_NEUint8,
39521&Interp_NESint16,
39522&Interp_NEUint16,
39523&Interp_NESint32,
39524&Interp_NEUint32,
39525&Interp_NESint64,
39526&Interp_NEUint64,
39527&Interp_NEIntAP,
39528&Interp_NEIntAPS,
39529&Interp_NEBool,
39530&Interp_NEFixedPoint,
39531&Interp_NEPtr,
39532&Interp_NEMemberPtr,
39533&Interp_NEFloat,
39534#endif
39535#ifdef GET_INTERPFN_DISPATCHERS
39536PRESERVE_NONE
39537static bool Interp_NESint8(InterpState &S) {
39538 if (!NE<PT_Sint8>(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_NEUint8(InterpState &S) {
39547 if (!NE<PT_Uint8>(S, S.PC)) return false;
39548#if USE_TAILCALLS
39549 MUSTTAIL return InterpNext(S);
39550#else
39551 return true;
39552#endif
39553}
39554PRESERVE_NONE
39555static bool Interp_NESint16(InterpState &S) {
39556 if (!NE<PT_Sint16>(S, S.PC)) return false;
39557#if USE_TAILCALLS
39558 MUSTTAIL return InterpNext(S);
39559#else
39560 return true;
39561#endif
39562}
39563PRESERVE_NONE
39564static bool Interp_NEUint16(InterpState &S) {
39565 if (!NE<PT_Uint16>(S, S.PC)) return false;
39566#if USE_TAILCALLS
39567 MUSTTAIL return InterpNext(S);
39568#else
39569 return true;
39570#endif
39571}
39572PRESERVE_NONE
39573static bool Interp_NESint32(InterpState &S) {
39574 if (!NE<PT_Sint32>(S, S.PC)) return false;
39575#if USE_TAILCALLS
39576 MUSTTAIL return InterpNext(S);
39577#else
39578 return true;
39579#endif
39580}
39581PRESERVE_NONE
39582static bool Interp_NEUint32(InterpState &S) {
39583 if (!NE<PT_Uint32>(S, S.PC)) return false;
39584#if USE_TAILCALLS
39585 MUSTTAIL return InterpNext(S);
39586#else
39587 return true;
39588#endif
39589}
39590PRESERVE_NONE
39591static bool Interp_NESint64(InterpState &S) {
39592 if (!NE<PT_Sint64>(S, S.PC)) return false;
39593#if USE_TAILCALLS
39594 MUSTTAIL return InterpNext(S);
39595#else
39596 return true;
39597#endif
39598}
39599PRESERVE_NONE
39600static bool Interp_NEUint64(InterpState &S) {
39601 if (!NE<PT_Uint64>(S, S.PC)) return false;
39602#if USE_TAILCALLS
39603 MUSTTAIL return InterpNext(S);
39604#else
39605 return true;
39606#endif
39607}
39608PRESERVE_NONE
39609static bool Interp_NEIntAP(InterpState &S) {
39610 if (!NE<PT_IntAP>(S, S.PC)) return false;
39611#if USE_TAILCALLS
39612 MUSTTAIL return InterpNext(S);
39613#else
39614 return true;
39615#endif
39616}
39617PRESERVE_NONE
39618static bool Interp_NEIntAPS(InterpState &S) {
39619 if (!NE<PT_IntAPS>(S, S.PC)) return false;
39620#if USE_TAILCALLS
39621 MUSTTAIL return InterpNext(S);
39622#else
39623 return true;
39624#endif
39625}
39626PRESERVE_NONE
39627static bool Interp_NEBool(InterpState &S) {
39628 if (!NE<PT_Bool>(S, S.PC)) return false;
39629#if USE_TAILCALLS
39630 MUSTTAIL return InterpNext(S);
39631#else
39632 return true;
39633#endif
39634}
39635PRESERVE_NONE
39636static bool Interp_NEFixedPoint(InterpState &S) {
39637 if (!NE<PT_FixedPoint>(S, S.PC)) return false;
39638#if USE_TAILCALLS
39639 MUSTTAIL return InterpNext(S);
39640#else
39641 return true;
39642#endif
39643}
39644PRESERVE_NONE
39645static bool Interp_NEPtr(InterpState &S) {
39646 if (!NE<PT_Ptr>(S, S.PC)) return false;
39647#if USE_TAILCALLS
39648 MUSTTAIL return InterpNext(S);
39649#else
39650 return true;
39651#endif
39652}
39653PRESERVE_NONE
39654static bool Interp_NEMemberPtr(InterpState &S) {
39655 if (!NE<PT_MemberPtr>(S, S.PC)) return false;
39656#if USE_TAILCALLS
39657 MUSTTAIL return InterpNext(S);
39658#else
39659 return true;
39660#endif
39661}
39662PRESERVE_NONE
39663static bool Interp_NEFloat(InterpState &S) {
39664 if (!NE<PT_Float>(S, S.PC)) return false;
39665#if USE_TAILCALLS
39666 MUSTTAIL return InterpNext(S);
39667#else
39668 return true;
39669#endif
39670}
39671#endif
39672#ifdef GET_DISASM
39673case OP_NESint8:
39674 Text.Op = PrintName("NESint8");
39675 break;
39676case OP_NEUint8:
39677 Text.Op = PrintName("NEUint8");
39678 break;
39679case OP_NESint16:
39680 Text.Op = PrintName("NESint16");
39681 break;
39682case OP_NEUint16:
39683 Text.Op = PrintName("NEUint16");
39684 break;
39685case OP_NESint32:
39686 Text.Op = PrintName("NESint32");
39687 break;
39688case OP_NEUint32:
39689 Text.Op = PrintName("NEUint32");
39690 break;
39691case OP_NESint64:
39692 Text.Op = PrintName("NESint64");
39693 break;
39694case OP_NEUint64:
39695 Text.Op = PrintName("NEUint64");
39696 break;
39697case OP_NEIntAP:
39698 Text.Op = PrintName("NEIntAP");
39699 break;
39700case OP_NEIntAPS:
39701 Text.Op = PrintName("NEIntAPS");
39702 break;
39703case OP_NEBool:
39704 Text.Op = PrintName("NEBool");
39705 break;
39706case OP_NEFixedPoint:
39707 Text.Op = PrintName("NEFixedPoint");
39708 break;
39709case OP_NEPtr:
39710 Text.Op = PrintName("NEPtr");
39711 break;
39712case OP_NEMemberPtr:
39713 Text.Op = PrintName("NEMemberPtr");
39714 break;
39715case OP_NEFloat:
39716 Text.Op = PrintName("NEFloat");
39717 break;
39718#endif
39719#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39720bool emitNESint8(SourceInfo);
39721bool emitNEUint8(SourceInfo);
39722bool emitNESint16(SourceInfo);
39723bool emitNEUint16(SourceInfo);
39724bool emitNESint32(SourceInfo);
39725bool emitNEUint32(SourceInfo);
39726bool emitNESint64(SourceInfo);
39727bool emitNEUint64(SourceInfo);
39728bool emitNEIntAP(SourceInfo);
39729bool emitNEIntAPS(SourceInfo);
39730bool emitNEBool(SourceInfo);
39731bool emitNEFixedPoint(SourceInfo);
39732bool emitNEPtr(SourceInfo);
39733bool emitNEMemberPtr(SourceInfo);
39734bool emitNEFloat(SourceInfo);
39735#endif
39736#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39737[[nodiscard]] bool emitNE(PrimType, SourceInfo I);
39738#endif
39739#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
39740bool
39741#if defined(GET_EVAL_IMPL)
39742EvalEmitter
39743#else
39744ByteCodeEmitter
39745#endif
39746::emitNE(PrimType T0, SourceInfo I) {
39747 switch (T0) {
39748 case PT_Sint8:
39749 return emitNESint8(I);
39750 case PT_Uint8:
39751 return emitNEUint8(I);
39752 case PT_Sint16:
39753 return emitNESint16(I);
39754 case PT_Uint16:
39755 return emitNEUint16(I);
39756 case PT_Sint32:
39757 return emitNESint32(I);
39758 case PT_Uint32:
39759 return emitNEUint32(I);
39760 case PT_Sint64:
39761 return emitNESint64(I);
39762 case PT_Uint64:
39763 return emitNEUint64(I);
39764 case PT_IntAP:
39765 return emitNEIntAP(I);
39766 case PT_IntAPS:
39767 return emitNEIntAPS(I);
39768 case PT_Bool:
39769 return emitNEBool(I);
39770 case PT_FixedPoint:
39771 return emitNEFixedPoint(I);
39772 case PT_Ptr:
39773 return emitNEPtr(I);
39774 case PT_MemberPtr:
39775 return emitNEMemberPtr(I);
39776 case PT_Float:
39777 return emitNEFloat(I);
39778 }
39779 llvm_unreachable("invalid enum value");
39780}
39781#endif
39782#ifdef GET_LINK_IMPL
39783bool ByteCodeEmitter::emitNESint8(SourceInfo L) {
39784 return emitOp<>(OP_NESint8, L);
39785}
39786bool ByteCodeEmitter::emitNEUint8(SourceInfo L) {
39787 return emitOp<>(OP_NEUint8, L);
39788}
39789bool ByteCodeEmitter::emitNESint16(SourceInfo L) {
39790 return emitOp<>(OP_NESint16, L);
39791}
39792bool ByteCodeEmitter::emitNEUint16(SourceInfo L) {
39793 return emitOp<>(OP_NEUint16, L);
39794}
39795bool ByteCodeEmitter::emitNESint32(SourceInfo L) {
39796 return emitOp<>(OP_NESint32, L);
39797}
39798bool ByteCodeEmitter::emitNEUint32(SourceInfo L) {
39799 return emitOp<>(OP_NEUint32, L);
39800}
39801bool ByteCodeEmitter::emitNESint64(SourceInfo L) {
39802 return emitOp<>(OP_NESint64, L);
39803}
39804bool ByteCodeEmitter::emitNEUint64(SourceInfo L) {
39805 return emitOp<>(OP_NEUint64, L);
39806}
39807bool ByteCodeEmitter::emitNEIntAP(SourceInfo L) {
39808 return emitOp<>(OP_NEIntAP, L);
39809}
39810bool ByteCodeEmitter::emitNEIntAPS(SourceInfo L) {
39811 return emitOp<>(OP_NEIntAPS, L);
39812}
39813bool ByteCodeEmitter::emitNEBool(SourceInfo L) {
39814 return emitOp<>(OP_NEBool, L);
39815}
39816bool ByteCodeEmitter::emitNEFixedPoint(SourceInfo L) {
39817 return emitOp<>(OP_NEFixedPoint, L);
39818}
39819bool ByteCodeEmitter::emitNEPtr(SourceInfo L) {
39820 return emitOp<>(OP_NEPtr, L);
39821}
39822bool ByteCodeEmitter::emitNEMemberPtr(SourceInfo L) {
39823 return emitOp<>(OP_NEMemberPtr, L);
39824}
39825bool ByteCodeEmitter::emitNEFloat(SourceInfo L) {
39826 return emitOp<>(OP_NEFloat, L);
39827}
39828#endif
39829#ifdef GET_EVAL_IMPL
39830bool EvalEmitter::emitNESint8(SourceInfo L) {
39831 if (!isActive()) return true;
39832 CurrentSource = L;
39833 return NE<PT_Sint8>(S, CodePtr());
39834}
39835bool EvalEmitter::emitNEUint8(SourceInfo L) {
39836 if (!isActive()) return true;
39837 CurrentSource = L;
39838 return NE<PT_Uint8>(S, CodePtr());
39839}
39840bool EvalEmitter::emitNESint16(SourceInfo L) {
39841 if (!isActive()) return true;
39842 CurrentSource = L;
39843 return NE<PT_Sint16>(S, CodePtr());
39844}
39845bool EvalEmitter::emitNEUint16(SourceInfo L) {
39846 if (!isActive()) return true;
39847 CurrentSource = L;
39848 return NE<PT_Uint16>(S, CodePtr());
39849}
39850bool EvalEmitter::emitNESint32(SourceInfo L) {
39851 if (!isActive()) return true;
39852 CurrentSource = L;
39853 return NE<PT_Sint32>(S, CodePtr());
39854}
39855bool EvalEmitter::emitNEUint32(SourceInfo L) {
39856 if (!isActive()) return true;
39857 CurrentSource = L;
39858 return NE<PT_Uint32>(S, CodePtr());
39859}
39860bool EvalEmitter::emitNESint64(SourceInfo L) {
39861 if (!isActive()) return true;
39862 CurrentSource = L;
39863 return NE<PT_Sint64>(S, CodePtr());
39864}
39865bool EvalEmitter::emitNEUint64(SourceInfo L) {
39866 if (!isActive()) return true;
39867 CurrentSource = L;
39868 return NE<PT_Uint64>(S, CodePtr());
39869}
39870bool EvalEmitter::emitNEIntAP(SourceInfo L) {
39871 if (!isActive()) return true;
39872 CurrentSource = L;
39873 return NE<PT_IntAP>(S, CodePtr());
39874}
39875bool EvalEmitter::emitNEIntAPS(SourceInfo L) {
39876 if (!isActive()) return true;
39877 CurrentSource = L;
39878 return NE<PT_IntAPS>(S, CodePtr());
39879}
39880bool EvalEmitter::emitNEBool(SourceInfo L) {
39881 if (!isActive()) return true;
39882 CurrentSource = L;
39883 return NE<PT_Bool>(S, CodePtr());
39884}
39885bool EvalEmitter::emitNEFixedPoint(SourceInfo L) {
39886 if (!isActive()) return true;
39887 CurrentSource = L;
39888 return NE<PT_FixedPoint>(S, CodePtr());
39889}
39890bool EvalEmitter::emitNEPtr(SourceInfo L) {
39891 if (!isActive()) return true;
39892 CurrentSource = L;
39893 return NE<PT_Ptr>(S, CodePtr());
39894}
39895bool EvalEmitter::emitNEMemberPtr(SourceInfo L) {
39896 if (!isActive()) return true;
39897 CurrentSource = L;
39898 return NE<PT_MemberPtr>(S, CodePtr());
39899}
39900bool EvalEmitter::emitNEFloat(SourceInfo L) {
39901 if (!isActive()) return true;
39902 CurrentSource = L;
39903 return NE<PT_Float>(S, CodePtr());
39904}
39905#endif
39906#ifdef GET_OPCODE_NAMES
39907OP_NarrowPtr,
39908#endif
39909#ifdef GET_INTERPFN_LIST
39910&Interp_NarrowPtr,
39911#endif
39912#ifdef GET_INTERPFN_DISPATCHERS
39913PRESERVE_NONE
39914static bool Interp_NarrowPtr(InterpState &S) {
39915 NarrowPtr(S);
39916#if USE_TAILCALLS
39917 MUSTTAIL return InterpNext(S);
39918#else
39919 return true;
39920#endif
39921}
39922#endif
39923#ifdef GET_DISASM
39924case OP_NarrowPtr:
39925 Text.Op = PrintName("NarrowPtr");
39926 break;
39927#endif
39928#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39929bool emitNarrowPtr(SourceInfo);
39930#endif
39931#ifdef GET_LINK_IMPL
39932bool ByteCodeEmitter::emitNarrowPtr(SourceInfo L) {
39933 return emitOp<>(OP_NarrowPtr, L);
39934}
39935#endif
39936#ifdef GET_EVAL_IMPL
39937bool EvalEmitter::emitNarrowPtr(SourceInfo L) {
39938 if (!isActive()) return true;
39939 CurrentSource = L;
39940 return NarrowPtr(S);
39941}
39942#endif
39943#ifdef GET_OPCODE_NAMES
39944OP_NegSint8,
39945OP_NegUint8,
39946OP_NegSint16,
39947OP_NegUint16,
39948OP_NegSint32,
39949OP_NegUint32,
39950OP_NegSint64,
39951OP_NegUint64,
39952OP_NegIntAP,
39953OP_NegIntAPS,
39954OP_NegBool,
39955OP_NegFloat,
39956OP_NegFixedPoint,
39957#endif
39958#ifdef GET_INTERPFN_LIST
39959&Interp_NegSint8,
39960&Interp_NegUint8,
39961&Interp_NegSint16,
39962&Interp_NegUint16,
39963&Interp_NegSint32,
39964&Interp_NegUint32,
39965&Interp_NegSint64,
39966&Interp_NegUint64,
39967&Interp_NegIntAP,
39968&Interp_NegIntAPS,
39969&Interp_NegBool,
39970&Interp_NegFloat,
39971&Interp_NegFixedPoint,
39972#endif
39973#ifdef GET_INTERPFN_DISPATCHERS
39974PRESERVE_NONE
39975static bool Interp_NegSint8(InterpState &S) {
39976 if (!Neg<PT_Sint8>(S, S.PC)) return false;
39977#if USE_TAILCALLS
39978 MUSTTAIL return InterpNext(S);
39979#else
39980 return true;
39981#endif
39982}
39983PRESERVE_NONE
39984static bool Interp_NegUint8(InterpState &S) {
39985 if (!Neg<PT_Uint8>(S, S.PC)) return false;
39986#if USE_TAILCALLS
39987 MUSTTAIL return InterpNext(S);
39988#else
39989 return true;
39990#endif
39991}
39992PRESERVE_NONE
39993static bool Interp_NegSint16(InterpState &S) {
39994 if (!Neg<PT_Sint16>(S, S.PC)) return false;
39995#if USE_TAILCALLS
39996 MUSTTAIL return InterpNext(S);
39997#else
39998 return true;
39999#endif
40000}
40001PRESERVE_NONE
40002static bool Interp_NegUint16(InterpState &S) {
40003 if (!Neg<PT_Uint16>(S, S.PC)) return false;
40004#if USE_TAILCALLS
40005 MUSTTAIL return InterpNext(S);
40006#else
40007 return true;
40008#endif
40009}
40010PRESERVE_NONE
40011static bool Interp_NegSint32(InterpState &S) {
40012 if (!Neg<PT_Sint32>(S, S.PC)) return false;
40013#if USE_TAILCALLS
40014 MUSTTAIL return InterpNext(S);
40015#else
40016 return true;
40017#endif
40018}
40019PRESERVE_NONE
40020static bool Interp_NegUint32(InterpState &S) {
40021 if (!Neg<PT_Uint32>(S, S.PC)) return false;
40022#if USE_TAILCALLS
40023 MUSTTAIL return InterpNext(S);
40024#else
40025 return true;
40026#endif
40027}
40028PRESERVE_NONE
40029static bool Interp_NegSint64(InterpState &S) {
40030 if (!Neg<PT_Sint64>(S, S.PC)) return false;
40031#if USE_TAILCALLS
40032 MUSTTAIL return InterpNext(S);
40033#else
40034 return true;
40035#endif
40036}
40037PRESERVE_NONE
40038static bool Interp_NegUint64(InterpState &S) {
40039 if (!Neg<PT_Uint64>(S, S.PC)) return false;
40040#if USE_TAILCALLS
40041 MUSTTAIL return InterpNext(S);
40042#else
40043 return true;
40044#endif
40045}
40046PRESERVE_NONE
40047static bool Interp_NegIntAP(InterpState &S) {
40048 if (!Neg<PT_IntAP>(S, S.PC)) return false;
40049#if USE_TAILCALLS
40050 MUSTTAIL return InterpNext(S);
40051#else
40052 return true;
40053#endif
40054}
40055PRESERVE_NONE
40056static bool Interp_NegIntAPS(InterpState &S) {
40057 if (!Neg<PT_IntAPS>(S, S.PC)) return false;
40058#if USE_TAILCALLS
40059 MUSTTAIL return InterpNext(S);
40060#else
40061 return true;
40062#endif
40063}
40064PRESERVE_NONE
40065static bool Interp_NegBool(InterpState &S) {
40066 if (!Neg<PT_Bool>(S, S.PC)) return false;
40067#if USE_TAILCALLS
40068 MUSTTAIL return InterpNext(S);
40069#else
40070 return true;
40071#endif
40072}
40073PRESERVE_NONE
40074static bool Interp_NegFloat(InterpState &S) {
40075 if (!Neg<PT_Float>(S, S.PC)) return false;
40076#if USE_TAILCALLS
40077 MUSTTAIL return InterpNext(S);
40078#else
40079 return true;
40080#endif
40081}
40082PRESERVE_NONE
40083static bool Interp_NegFixedPoint(InterpState &S) {
40084 if (!Neg<PT_FixedPoint>(S, S.PC)) return false;
40085#if USE_TAILCALLS
40086 MUSTTAIL return InterpNext(S);
40087#else
40088 return true;
40089#endif
40090}
40091#endif
40092#ifdef GET_DISASM
40093case OP_NegSint8:
40094 Text.Op = PrintName("NegSint8");
40095 break;
40096case OP_NegUint8:
40097 Text.Op = PrintName("NegUint8");
40098 break;
40099case OP_NegSint16:
40100 Text.Op = PrintName("NegSint16");
40101 break;
40102case OP_NegUint16:
40103 Text.Op = PrintName("NegUint16");
40104 break;
40105case OP_NegSint32:
40106 Text.Op = PrintName("NegSint32");
40107 break;
40108case OP_NegUint32:
40109 Text.Op = PrintName("NegUint32");
40110 break;
40111case OP_NegSint64:
40112 Text.Op = PrintName("NegSint64");
40113 break;
40114case OP_NegUint64:
40115 Text.Op = PrintName("NegUint64");
40116 break;
40117case OP_NegIntAP:
40118 Text.Op = PrintName("NegIntAP");
40119 break;
40120case OP_NegIntAPS:
40121 Text.Op = PrintName("NegIntAPS");
40122 break;
40123case OP_NegBool:
40124 Text.Op = PrintName("NegBool");
40125 break;
40126case OP_NegFloat:
40127 Text.Op = PrintName("NegFloat");
40128 break;
40129case OP_NegFixedPoint:
40130 Text.Op = PrintName("NegFixedPoint");
40131 break;
40132#endif
40133#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40134bool emitNegSint8(SourceInfo);
40135bool emitNegUint8(SourceInfo);
40136bool emitNegSint16(SourceInfo);
40137bool emitNegUint16(SourceInfo);
40138bool emitNegSint32(SourceInfo);
40139bool emitNegUint32(SourceInfo);
40140bool emitNegSint64(SourceInfo);
40141bool emitNegUint64(SourceInfo);
40142bool emitNegIntAP(SourceInfo);
40143bool emitNegIntAPS(SourceInfo);
40144bool emitNegBool(SourceInfo);
40145bool emitNegFloat(SourceInfo);
40146bool emitNegFixedPoint(SourceInfo);
40147#endif
40148#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40149[[nodiscard]] bool emitNeg(PrimType, SourceInfo I);
40150#endif
40151#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40152bool
40153#if defined(GET_EVAL_IMPL)
40154EvalEmitter
40155#else
40156ByteCodeEmitter
40157#endif
40158::emitNeg(PrimType T0, SourceInfo I) {
40159 switch (T0) {
40160 case PT_Sint8:
40161 return emitNegSint8(I);
40162 case PT_Uint8:
40163 return emitNegUint8(I);
40164 case PT_Sint16:
40165 return emitNegSint16(I);
40166 case PT_Uint16:
40167 return emitNegUint16(I);
40168 case PT_Sint32:
40169 return emitNegSint32(I);
40170 case PT_Uint32:
40171 return emitNegUint32(I);
40172 case PT_Sint64:
40173 return emitNegSint64(I);
40174 case PT_Uint64:
40175 return emitNegUint64(I);
40176 case PT_IntAP:
40177 return emitNegIntAP(I);
40178 case PT_IntAPS:
40179 return emitNegIntAPS(I);
40180 case PT_Bool:
40181 return emitNegBool(I);
40182 case PT_Float:
40183 return emitNegFloat(I);
40184 case PT_FixedPoint:
40185 return emitNegFixedPoint(I);
40186 default: llvm_unreachable("invalid type: emitNeg");
40187 }
40188 llvm_unreachable("invalid enum value");
40189}
40190#endif
40191#ifdef GET_LINK_IMPL
40192bool ByteCodeEmitter::emitNegSint8(SourceInfo L) {
40193 return emitOp<>(OP_NegSint8, L);
40194}
40195bool ByteCodeEmitter::emitNegUint8(SourceInfo L) {
40196 return emitOp<>(OP_NegUint8, L);
40197}
40198bool ByteCodeEmitter::emitNegSint16(SourceInfo L) {
40199 return emitOp<>(OP_NegSint16, L);
40200}
40201bool ByteCodeEmitter::emitNegUint16(SourceInfo L) {
40202 return emitOp<>(OP_NegUint16, L);
40203}
40204bool ByteCodeEmitter::emitNegSint32(SourceInfo L) {
40205 return emitOp<>(OP_NegSint32, L);
40206}
40207bool ByteCodeEmitter::emitNegUint32(SourceInfo L) {
40208 return emitOp<>(OP_NegUint32, L);
40209}
40210bool ByteCodeEmitter::emitNegSint64(SourceInfo L) {
40211 return emitOp<>(OP_NegSint64, L);
40212}
40213bool ByteCodeEmitter::emitNegUint64(SourceInfo L) {
40214 return emitOp<>(OP_NegUint64, L);
40215}
40216bool ByteCodeEmitter::emitNegIntAP(SourceInfo L) {
40217 return emitOp<>(OP_NegIntAP, L);
40218}
40219bool ByteCodeEmitter::emitNegIntAPS(SourceInfo L) {
40220 return emitOp<>(OP_NegIntAPS, L);
40221}
40222bool ByteCodeEmitter::emitNegBool(SourceInfo L) {
40223 return emitOp<>(OP_NegBool, L);
40224}
40225bool ByteCodeEmitter::emitNegFloat(SourceInfo L) {
40226 return emitOp<>(OP_NegFloat, L);
40227}
40228bool ByteCodeEmitter::emitNegFixedPoint(SourceInfo L) {
40229 return emitOp<>(OP_NegFixedPoint, L);
40230}
40231#endif
40232#ifdef GET_EVAL_IMPL
40233bool EvalEmitter::emitNegSint8(SourceInfo L) {
40234 if (!isActive()) return true;
40235 CurrentSource = L;
40236 return Neg<PT_Sint8>(S, CodePtr());
40237}
40238bool EvalEmitter::emitNegUint8(SourceInfo L) {
40239 if (!isActive()) return true;
40240 CurrentSource = L;
40241 return Neg<PT_Uint8>(S, CodePtr());
40242}
40243bool EvalEmitter::emitNegSint16(SourceInfo L) {
40244 if (!isActive()) return true;
40245 CurrentSource = L;
40246 return Neg<PT_Sint16>(S, CodePtr());
40247}
40248bool EvalEmitter::emitNegUint16(SourceInfo L) {
40249 if (!isActive()) return true;
40250 CurrentSource = L;
40251 return Neg<PT_Uint16>(S, CodePtr());
40252}
40253bool EvalEmitter::emitNegSint32(SourceInfo L) {
40254 if (!isActive()) return true;
40255 CurrentSource = L;
40256 return Neg<PT_Sint32>(S, CodePtr());
40257}
40258bool EvalEmitter::emitNegUint32(SourceInfo L) {
40259 if (!isActive()) return true;
40260 CurrentSource = L;
40261 return Neg<PT_Uint32>(S, CodePtr());
40262}
40263bool EvalEmitter::emitNegSint64(SourceInfo L) {
40264 if (!isActive()) return true;
40265 CurrentSource = L;
40266 return Neg<PT_Sint64>(S, CodePtr());
40267}
40268bool EvalEmitter::emitNegUint64(SourceInfo L) {
40269 if (!isActive()) return true;
40270 CurrentSource = L;
40271 return Neg<PT_Uint64>(S, CodePtr());
40272}
40273bool EvalEmitter::emitNegIntAP(SourceInfo L) {
40274 if (!isActive()) return true;
40275 CurrentSource = L;
40276 return Neg<PT_IntAP>(S, CodePtr());
40277}
40278bool EvalEmitter::emitNegIntAPS(SourceInfo L) {
40279 if (!isActive()) return true;
40280 CurrentSource = L;
40281 return Neg<PT_IntAPS>(S, CodePtr());
40282}
40283bool EvalEmitter::emitNegBool(SourceInfo L) {
40284 if (!isActive()) return true;
40285 CurrentSource = L;
40286 return Neg<PT_Bool>(S, CodePtr());
40287}
40288bool EvalEmitter::emitNegFloat(SourceInfo L) {
40289 if (!isActive()) return true;
40290 CurrentSource = L;
40291 return Neg<PT_Float>(S, CodePtr());
40292}
40293bool EvalEmitter::emitNegFixedPoint(SourceInfo L) {
40294 if (!isActive()) return true;
40295 CurrentSource = L;
40296 return Neg<PT_FixedPoint>(S, CodePtr());
40297}
40298#endif
40299#ifdef GET_OPCODE_NAMES
40300OP_NoRet,
40301#endif
40302#ifdef GET_INTERPFN_LIST
40303&Interp_NoRet,
40304#endif
40305#ifdef GET_INTERPFN_DISPATCHERS
40306PRESERVE_NONE
40307static bool Interp_NoRet(InterpState &S) {
40308 if (!NoRet(S)) return false;
40309#if USE_TAILCALLS
40310 MUSTTAIL return InterpNext(S);
40311#else
40312 return true;
40313#endif
40314}
40315#endif
40316#ifdef GET_DISASM
40317case OP_NoRet:
40318 Text.Op = PrintName("NoRet");
40319 break;
40320#endif
40321#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40322bool emitNoRet(SourceInfo);
40323#endif
40324#ifdef GET_LINK_IMPL
40325bool ByteCodeEmitter::emitNoRet(SourceInfo L) {
40326 return emitOp<>(OP_NoRet, L);
40327}
40328#endif
40329#ifdef GET_EVAL_IMPL
40330bool EvalEmitter::emitNoRet(SourceInfo L) {
40331 if (!isActive()) return true;
40332 CurrentSource = L;
40333 return NoRet(S);
40334}
40335#endif
40336#ifdef GET_OPCODE_NAMES
40337OP_NullPtr,
40338OP_NullMemberPtr,
40339#endif
40340#ifdef GET_INTERPFN_LIST
40341&Interp_NullPtr,
40342&Interp_NullMemberPtr,
40343#endif
40344#ifdef GET_INTERPFN_DISPATCHERS
40345PRESERVE_NONE
40346static bool Interp_NullPtr(InterpState &S) {
40347 {
40348 const auto V0 = ReadArg<uint64_t>(S, S.PC);
40349 const auto V1 = ReadArg<const Type *>(S, S.PC);
40350 Null<PT_Ptr>(S, V0, V1);
40351 }
40352#if USE_TAILCALLS
40353 MUSTTAIL return InterpNext(S);
40354#else
40355 return true;
40356#endif
40357}
40358PRESERVE_NONE
40359static bool Interp_NullMemberPtr(InterpState &S) {
40360 {
40361 const auto V0 = ReadArg<uint64_t>(S, S.PC);
40362 const auto V1 = ReadArg<const Type *>(S, S.PC);
40363 Null<PT_MemberPtr>(S, V0, V1);
40364 }
40365#if USE_TAILCALLS
40366 MUSTTAIL return InterpNext(S);
40367#else
40368 return true;
40369#endif
40370}
40371#endif
40372#ifdef GET_DISASM
40373case OP_NullPtr:
40374 Text.Op = PrintName("NullPtr");
40375 Text.Args.push_back(printArg<uint64_t>(PC));
40376 Text.Args.push_back(printArg<const Type *>(PC));
40377 break;
40378case OP_NullMemberPtr:
40379 Text.Op = PrintName("NullMemberPtr");
40380 Text.Args.push_back(printArg<uint64_t>(PC));
40381 Text.Args.push_back(printArg<const Type *>(PC));
40382 break;
40383#endif
40384#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40385bool emitNullPtr( uint64_t , const Type * , SourceInfo);
40386bool emitNullMemberPtr( uint64_t , const Type * , SourceInfo);
40387#endif
40388#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40389[[nodiscard]] bool emitNull(PrimType, uint64_t, const Type *, SourceInfo I);
40390#endif
40391#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40392bool
40393#if defined(GET_EVAL_IMPL)
40394EvalEmitter
40395#else
40396ByteCodeEmitter
40397#endif
40398::emitNull(PrimType T0, uint64_t A0, const Type * A1, SourceInfo I) {
40399 switch (T0) {
40400 case PT_Ptr:
40401 return emitNullPtr(A0, A1, I);
40402 case PT_MemberPtr:
40403 return emitNullMemberPtr(A0, A1, I);
40404 default: llvm_unreachable("invalid type: emitNull");
40405 }
40406 llvm_unreachable("invalid enum value");
40407}
40408#endif
40409#ifdef GET_LINK_IMPL
40410bool ByteCodeEmitter::emitNullPtr( uint64_t A0, const Type * A1, SourceInfo L) {
40411 return emitOp<uint64_t, const Type *>(OP_NullPtr, A0, A1, L);
40412}
40413bool ByteCodeEmitter::emitNullMemberPtr( uint64_t A0, const Type * A1, SourceInfo L) {
40414 return emitOp<uint64_t, const Type *>(OP_NullMemberPtr, A0, A1, L);
40415}
40416#endif
40417#ifdef GET_EVAL_IMPL
40418bool EvalEmitter::emitNullPtr( uint64_t A0, const Type * A1, SourceInfo L) {
40419 if (!isActive()) return true;
40420 CurrentSource = L;
40421 return Null<PT_Ptr>(S, A0, A1);
40422}
40423bool EvalEmitter::emitNullMemberPtr( uint64_t A0, const Type * A1, SourceInfo L) {
40424 if (!isActive()) return true;
40425 CurrentSource = L;
40426 return Null<PT_MemberPtr>(S, A0, A1);
40427}
40428#endif
40429#ifdef GET_OPCODE_NAMES
40430OP_OffsetOfSint8,
40431OP_OffsetOfUint8,
40432OP_OffsetOfSint16,
40433OP_OffsetOfUint16,
40434OP_OffsetOfSint32,
40435OP_OffsetOfUint32,
40436OP_OffsetOfSint64,
40437OP_OffsetOfUint64,
40438OP_OffsetOfIntAP,
40439OP_OffsetOfIntAPS,
40440#endif
40441#ifdef GET_INTERPFN_LIST
40442&Interp_OffsetOfSint8,
40443&Interp_OffsetOfUint8,
40444&Interp_OffsetOfSint16,
40445&Interp_OffsetOfUint16,
40446&Interp_OffsetOfSint32,
40447&Interp_OffsetOfUint32,
40448&Interp_OffsetOfSint64,
40449&Interp_OffsetOfUint64,
40450&Interp_OffsetOfIntAP,
40451&Interp_OffsetOfIntAPS,
40452#endif
40453#ifdef GET_INTERPFN_DISPATCHERS
40454PRESERVE_NONE
40455static bool Interp_OffsetOfSint8(InterpState &S) {
40456 {
40457 CodePtr OpPC = S.PC;
40458 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40459 if (!OffsetOf<PT_Sint8>(S, OpPC, V0)) return false;
40460 }
40461#if USE_TAILCALLS
40462 MUSTTAIL return InterpNext(S);
40463#else
40464 return true;
40465#endif
40466}
40467PRESERVE_NONE
40468static bool Interp_OffsetOfUint8(InterpState &S) {
40469 {
40470 CodePtr OpPC = S.PC;
40471 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40472 if (!OffsetOf<PT_Uint8>(S, OpPC, V0)) return false;
40473 }
40474#if USE_TAILCALLS
40475 MUSTTAIL return InterpNext(S);
40476#else
40477 return true;
40478#endif
40479}
40480PRESERVE_NONE
40481static bool Interp_OffsetOfSint16(InterpState &S) {
40482 {
40483 CodePtr OpPC = S.PC;
40484 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40485 if (!OffsetOf<PT_Sint16>(S, OpPC, V0)) return false;
40486 }
40487#if USE_TAILCALLS
40488 MUSTTAIL return InterpNext(S);
40489#else
40490 return true;
40491#endif
40492}
40493PRESERVE_NONE
40494static bool Interp_OffsetOfUint16(InterpState &S) {
40495 {
40496 CodePtr OpPC = S.PC;
40497 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40498 if (!OffsetOf<PT_Uint16>(S, OpPC, V0)) return false;
40499 }
40500#if USE_TAILCALLS
40501 MUSTTAIL return InterpNext(S);
40502#else
40503 return true;
40504#endif
40505}
40506PRESERVE_NONE
40507static bool Interp_OffsetOfSint32(InterpState &S) {
40508 {
40509 CodePtr OpPC = S.PC;
40510 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40511 if (!OffsetOf<PT_Sint32>(S, OpPC, V0)) return false;
40512 }
40513#if USE_TAILCALLS
40514 MUSTTAIL return InterpNext(S);
40515#else
40516 return true;
40517#endif
40518}
40519PRESERVE_NONE
40520static bool Interp_OffsetOfUint32(InterpState &S) {
40521 {
40522 CodePtr OpPC = S.PC;
40523 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40524 if (!OffsetOf<PT_Uint32>(S, OpPC, V0)) return false;
40525 }
40526#if USE_TAILCALLS
40527 MUSTTAIL return InterpNext(S);
40528#else
40529 return true;
40530#endif
40531}
40532PRESERVE_NONE
40533static bool Interp_OffsetOfSint64(InterpState &S) {
40534 {
40535 CodePtr OpPC = S.PC;
40536 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40537 if (!OffsetOf<PT_Sint64>(S, OpPC, V0)) return false;
40538 }
40539#if USE_TAILCALLS
40540 MUSTTAIL return InterpNext(S);
40541#else
40542 return true;
40543#endif
40544}
40545PRESERVE_NONE
40546static bool Interp_OffsetOfUint64(InterpState &S) {
40547 {
40548 CodePtr OpPC = S.PC;
40549 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40550 if (!OffsetOf<PT_Uint64>(S, OpPC, V0)) return false;
40551 }
40552#if USE_TAILCALLS
40553 MUSTTAIL return InterpNext(S);
40554#else
40555 return true;
40556#endif
40557}
40558PRESERVE_NONE
40559static bool Interp_OffsetOfIntAP(InterpState &S) {
40560 {
40561 CodePtr OpPC = S.PC;
40562 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40563 if (!OffsetOf<PT_IntAP>(S, OpPC, V0)) return false;
40564 }
40565#if USE_TAILCALLS
40566 MUSTTAIL return InterpNext(S);
40567#else
40568 return true;
40569#endif
40570}
40571PRESERVE_NONE
40572static bool Interp_OffsetOfIntAPS(InterpState &S) {
40573 {
40574 CodePtr OpPC = S.PC;
40575 const auto V0 = ReadArg<const OffsetOfExpr *>(S, S.PC);
40576 if (!OffsetOf<PT_IntAPS>(S, OpPC, V0)) return false;
40577 }
40578#if USE_TAILCALLS
40579 MUSTTAIL return InterpNext(S);
40580#else
40581 return true;
40582#endif
40583}
40584#endif
40585#ifdef GET_DISASM
40586case OP_OffsetOfSint8:
40587 Text.Op = PrintName("OffsetOfSint8");
40588 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40589 break;
40590case OP_OffsetOfUint8:
40591 Text.Op = PrintName("OffsetOfUint8");
40592 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40593 break;
40594case OP_OffsetOfSint16:
40595 Text.Op = PrintName("OffsetOfSint16");
40596 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40597 break;
40598case OP_OffsetOfUint16:
40599 Text.Op = PrintName("OffsetOfUint16");
40600 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40601 break;
40602case OP_OffsetOfSint32:
40603 Text.Op = PrintName("OffsetOfSint32");
40604 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40605 break;
40606case OP_OffsetOfUint32:
40607 Text.Op = PrintName("OffsetOfUint32");
40608 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40609 break;
40610case OP_OffsetOfSint64:
40611 Text.Op = PrintName("OffsetOfSint64");
40612 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40613 break;
40614case OP_OffsetOfUint64:
40615 Text.Op = PrintName("OffsetOfUint64");
40616 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40617 break;
40618case OP_OffsetOfIntAP:
40619 Text.Op = PrintName("OffsetOfIntAP");
40620 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40621 break;
40622case OP_OffsetOfIntAPS:
40623 Text.Op = PrintName("OffsetOfIntAPS");
40624 Text.Args.push_back(printArg<const OffsetOfExpr *>(PC));
40625 break;
40626#endif
40627#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40628bool emitOffsetOfSint8( const OffsetOfExpr * , SourceInfo);
40629bool emitOffsetOfUint8( const OffsetOfExpr * , SourceInfo);
40630bool emitOffsetOfSint16( const OffsetOfExpr * , SourceInfo);
40631bool emitOffsetOfUint16( const OffsetOfExpr * , SourceInfo);
40632bool emitOffsetOfSint32( const OffsetOfExpr * , SourceInfo);
40633bool emitOffsetOfUint32( const OffsetOfExpr * , SourceInfo);
40634bool emitOffsetOfSint64( const OffsetOfExpr * , SourceInfo);
40635bool emitOffsetOfUint64( const OffsetOfExpr * , SourceInfo);
40636bool emitOffsetOfIntAP( const OffsetOfExpr * , SourceInfo);
40637bool emitOffsetOfIntAPS( const OffsetOfExpr * , SourceInfo);
40638#endif
40639#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40640[[nodiscard]] bool emitOffsetOf(PrimType, const OffsetOfExpr *, SourceInfo I);
40641#endif
40642#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40643bool
40644#if defined(GET_EVAL_IMPL)
40645EvalEmitter
40646#else
40647ByteCodeEmitter
40648#endif
40649::emitOffsetOf(PrimType T0, const OffsetOfExpr * A0, SourceInfo I) {
40650 switch (T0) {
40651 case PT_Sint8:
40652 return emitOffsetOfSint8(A0, I);
40653 case PT_Uint8:
40654 return emitOffsetOfUint8(A0, I);
40655 case PT_Sint16:
40656 return emitOffsetOfSint16(A0, I);
40657 case PT_Uint16:
40658 return emitOffsetOfUint16(A0, I);
40659 case PT_Sint32:
40660 return emitOffsetOfSint32(A0, I);
40661 case PT_Uint32:
40662 return emitOffsetOfUint32(A0, I);
40663 case PT_Sint64:
40664 return emitOffsetOfSint64(A0, I);
40665 case PT_Uint64:
40666 return emitOffsetOfUint64(A0, I);
40667 case PT_IntAP:
40668 return emitOffsetOfIntAP(A0, I);
40669 case PT_IntAPS:
40670 return emitOffsetOfIntAPS(A0, I);
40671 default: llvm_unreachable("invalid type: emitOffsetOf");
40672 }
40673 llvm_unreachable("invalid enum value");
40674}
40675#endif
40676#ifdef GET_LINK_IMPL
40677bool ByteCodeEmitter::emitOffsetOfSint8( const OffsetOfExpr * A0, SourceInfo L) {
40678 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint8, A0, L);
40679}
40680bool ByteCodeEmitter::emitOffsetOfUint8( const OffsetOfExpr * A0, SourceInfo L) {
40681 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint8, A0, L);
40682}
40683bool ByteCodeEmitter::emitOffsetOfSint16( const OffsetOfExpr * A0, SourceInfo L) {
40684 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint16, A0, L);
40685}
40686bool ByteCodeEmitter::emitOffsetOfUint16( const OffsetOfExpr * A0, SourceInfo L) {
40687 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint16, A0, L);
40688}
40689bool ByteCodeEmitter::emitOffsetOfSint32( const OffsetOfExpr * A0, SourceInfo L) {
40690 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint32, A0, L);
40691}
40692bool ByteCodeEmitter::emitOffsetOfUint32( const OffsetOfExpr * A0, SourceInfo L) {
40693 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint32, A0, L);
40694}
40695bool ByteCodeEmitter::emitOffsetOfSint64( const OffsetOfExpr * A0, SourceInfo L) {
40696 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint64, A0, L);
40697}
40698bool ByteCodeEmitter::emitOffsetOfUint64( const OffsetOfExpr * A0, SourceInfo L) {
40699 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint64, A0, L);
40700}
40701bool ByteCodeEmitter::emitOffsetOfIntAP( const OffsetOfExpr * A0, SourceInfo L) {
40702 return emitOp<const OffsetOfExpr *>(OP_OffsetOfIntAP, A0, L);
40703}
40704bool ByteCodeEmitter::emitOffsetOfIntAPS( const OffsetOfExpr * A0, SourceInfo L) {
40705 return emitOp<const OffsetOfExpr *>(OP_OffsetOfIntAPS, A0, L);
40706}
40707#endif
40708#ifdef GET_EVAL_IMPL
40709bool EvalEmitter::emitOffsetOfSint8( const OffsetOfExpr * A0, SourceInfo L) {
40710 if (!isActive()) return true;
40711 CurrentSource = L;
40712 return OffsetOf<PT_Sint8>(S, CodePtr(), A0);
40713}
40714bool EvalEmitter::emitOffsetOfUint8( const OffsetOfExpr * A0, SourceInfo L) {
40715 if (!isActive()) return true;
40716 CurrentSource = L;
40717 return OffsetOf<PT_Uint8>(S, CodePtr(), A0);
40718}
40719bool EvalEmitter::emitOffsetOfSint16( const OffsetOfExpr * A0, SourceInfo L) {
40720 if (!isActive()) return true;
40721 CurrentSource = L;
40722 return OffsetOf<PT_Sint16>(S, CodePtr(), A0);
40723}
40724bool EvalEmitter::emitOffsetOfUint16( const OffsetOfExpr * A0, SourceInfo L) {
40725 if (!isActive()) return true;
40726 CurrentSource = L;
40727 return OffsetOf<PT_Uint16>(S, CodePtr(), A0);
40728}
40729bool EvalEmitter::emitOffsetOfSint32( const OffsetOfExpr * A0, SourceInfo L) {
40730 if (!isActive()) return true;
40731 CurrentSource = L;
40732 return OffsetOf<PT_Sint32>(S, CodePtr(), A0);
40733}
40734bool EvalEmitter::emitOffsetOfUint32( const OffsetOfExpr * A0, SourceInfo L) {
40735 if (!isActive()) return true;
40736 CurrentSource = L;
40737 return OffsetOf<PT_Uint32>(S, CodePtr(), A0);
40738}
40739bool EvalEmitter::emitOffsetOfSint64( const OffsetOfExpr * A0, SourceInfo L) {
40740 if (!isActive()) return true;
40741 CurrentSource = L;
40742 return OffsetOf<PT_Sint64>(S, CodePtr(), A0);
40743}
40744bool EvalEmitter::emitOffsetOfUint64( const OffsetOfExpr * A0, SourceInfo L) {
40745 if (!isActive()) return true;
40746 CurrentSource = L;
40747 return OffsetOf<PT_Uint64>(S, CodePtr(), A0);
40748}
40749bool EvalEmitter::emitOffsetOfIntAP( const OffsetOfExpr * A0, SourceInfo L) {
40750 if (!isActive()) return true;
40751 CurrentSource = L;
40752 return OffsetOf<PT_IntAP>(S, CodePtr(), A0);
40753}
40754bool EvalEmitter::emitOffsetOfIntAPS( const OffsetOfExpr * A0, SourceInfo L) {
40755 if (!isActive()) return true;
40756 CurrentSource = L;
40757 return OffsetOf<PT_IntAPS>(S, CodePtr(), A0);
40758}
40759#endif
40760#ifdef GET_OPCODE_NAMES
40761OP_PopSint8,
40762OP_PopUint8,
40763OP_PopSint16,
40764OP_PopUint16,
40765OP_PopSint32,
40766OP_PopUint32,
40767OP_PopSint64,
40768OP_PopUint64,
40769OP_PopIntAP,
40770OP_PopIntAPS,
40771OP_PopBool,
40772OP_PopFixedPoint,
40773OP_PopPtr,
40774OP_PopMemberPtr,
40775OP_PopFloat,
40776#endif
40777#ifdef GET_INTERPFN_LIST
40778&Interp_PopSint8,
40779&Interp_PopUint8,
40780&Interp_PopSint16,
40781&Interp_PopUint16,
40782&Interp_PopSint32,
40783&Interp_PopUint32,
40784&Interp_PopSint64,
40785&Interp_PopUint64,
40786&Interp_PopIntAP,
40787&Interp_PopIntAPS,
40788&Interp_PopBool,
40789&Interp_PopFixedPoint,
40790&Interp_PopPtr,
40791&Interp_PopMemberPtr,
40792&Interp_PopFloat,
40793#endif
40794#ifdef GET_INTERPFN_DISPATCHERS
40795PRESERVE_NONE
40796static bool Interp_PopSint8(InterpState &S) {
40797 Pop<PT_Sint8>(S);
40798#if USE_TAILCALLS
40799 MUSTTAIL return InterpNext(S);
40800#else
40801 return true;
40802#endif
40803}
40804PRESERVE_NONE
40805static bool Interp_PopUint8(InterpState &S) {
40806 Pop<PT_Uint8>(S);
40807#if USE_TAILCALLS
40808 MUSTTAIL return InterpNext(S);
40809#else
40810 return true;
40811#endif
40812}
40813PRESERVE_NONE
40814static bool Interp_PopSint16(InterpState &S) {
40815 Pop<PT_Sint16>(S);
40816#if USE_TAILCALLS
40817 MUSTTAIL return InterpNext(S);
40818#else
40819 return true;
40820#endif
40821}
40822PRESERVE_NONE
40823static bool Interp_PopUint16(InterpState &S) {
40824 Pop<PT_Uint16>(S);
40825#if USE_TAILCALLS
40826 MUSTTAIL return InterpNext(S);
40827#else
40828 return true;
40829#endif
40830}
40831PRESERVE_NONE
40832static bool Interp_PopSint32(InterpState &S) {
40833 Pop<PT_Sint32>(S);
40834#if USE_TAILCALLS
40835 MUSTTAIL return InterpNext(S);
40836#else
40837 return true;
40838#endif
40839}
40840PRESERVE_NONE
40841static bool Interp_PopUint32(InterpState &S) {
40842 Pop<PT_Uint32>(S);
40843#if USE_TAILCALLS
40844 MUSTTAIL return InterpNext(S);
40845#else
40846 return true;
40847#endif
40848}
40849PRESERVE_NONE
40850static bool Interp_PopSint64(InterpState &S) {
40851 Pop<PT_Sint64>(S);
40852#if USE_TAILCALLS
40853 MUSTTAIL return InterpNext(S);
40854#else
40855 return true;
40856#endif
40857}
40858PRESERVE_NONE
40859static bool Interp_PopUint64(InterpState &S) {
40860 Pop<PT_Uint64>(S);
40861#if USE_TAILCALLS
40862 MUSTTAIL return InterpNext(S);
40863#else
40864 return true;
40865#endif
40866}
40867PRESERVE_NONE
40868static bool Interp_PopIntAP(InterpState &S) {
40869 Pop<PT_IntAP>(S);
40870#if USE_TAILCALLS
40871 MUSTTAIL return InterpNext(S);
40872#else
40873 return true;
40874#endif
40875}
40876PRESERVE_NONE
40877static bool Interp_PopIntAPS(InterpState &S) {
40878 Pop<PT_IntAPS>(S);
40879#if USE_TAILCALLS
40880 MUSTTAIL return InterpNext(S);
40881#else
40882 return true;
40883#endif
40884}
40885PRESERVE_NONE
40886static bool Interp_PopBool(InterpState &S) {
40887 Pop<PT_Bool>(S);
40888#if USE_TAILCALLS
40889 MUSTTAIL return InterpNext(S);
40890#else
40891 return true;
40892#endif
40893}
40894PRESERVE_NONE
40895static bool Interp_PopFixedPoint(InterpState &S) {
40896 Pop<PT_FixedPoint>(S);
40897#if USE_TAILCALLS
40898 MUSTTAIL return InterpNext(S);
40899#else
40900 return true;
40901#endif
40902}
40903PRESERVE_NONE
40904static bool Interp_PopPtr(InterpState &S) {
40905 Pop<PT_Ptr>(S);
40906#if USE_TAILCALLS
40907 MUSTTAIL return InterpNext(S);
40908#else
40909 return true;
40910#endif
40911}
40912PRESERVE_NONE
40913static bool Interp_PopMemberPtr(InterpState &S) {
40914 Pop<PT_MemberPtr>(S);
40915#if USE_TAILCALLS
40916 MUSTTAIL return InterpNext(S);
40917#else
40918 return true;
40919#endif
40920}
40921PRESERVE_NONE
40922static bool Interp_PopFloat(InterpState &S) {
40923 Pop<PT_Float>(S);
40924#if USE_TAILCALLS
40925 MUSTTAIL return InterpNext(S);
40926#else
40927 return true;
40928#endif
40929}
40930#endif
40931#ifdef GET_DISASM
40932case OP_PopSint8:
40933 Text.Op = PrintName("PopSint8");
40934 break;
40935case OP_PopUint8:
40936 Text.Op = PrintName("PopUint8");
40937 break;
40938case OP_PopSint16:
40939 Text.Op = PrintName("PopSint16");
40940 break;
40941case OP_PopUint16:
40942 Text.Op = PrintName("PopUint16");
40943 break;
40944case OP_PopSint32:
40945 Text.Op = PrintName("PopSint32");
40946 break;
40947case OP_PopUint32:
40948 Text.Op = PrintName("PopUint32");
40949 break;
40950case OP_PopSint64:
40951 Text.Op = PrintName("PopSint64");
40952 break;
40953case OP_PopUint64:
40954 Text.Op = PrintName("PopUint64");
40955 break;
40956case OP_PopIntAP:
40957 Text.Op = PrintName("PopIntAP");
40958 break;
40959case OP_PopIntAPS:
40960 Text.Op = PrintName("PopIntAPS");
40961 break;
40962case OP_PopBool:
40963 Text.Op = PrintName("PopBool");
40964 break;
40965case OP_PopFixedPoint:
40966 Text.Op = PrintName("PopFixedPoint");
40967 break;
40968case OP_PopPtr:
40969 Text.Op = PrintName("PopPtr");
40970 break;
40971case OP_PopMemberPtr:
40972 Text.Op = PrintName("PopMemberPtr");
40973 break;
40974case OP_PopFloat:
40975 Text.Op = PrintName("PopFloat");
40976 break;
40977#endif
40978#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40979bool emitPopSint8(SourceInfo);
40980bool emitPopUint8(SourceInfo);
40981bool emitPopSint16(SourceInfo);
40982bool emitPopUint16(SourceInfo);
40983bool emitPopSint32(SourceInfo);
40984bool emitPopUint32(SourceInfo);
40985bool emitPopSint64(SourceInfo);
40986bool emitPopUint64(SourceInfo);
40987bool emitPopIntAP(SourceInfo);
40988bool emitPopIntAPS(SourceInfo);
40989bool emitPopBool(SourceInfo);
40990bool emitPopFixedPoint(SourceInfo);
40991bool emitPopPtr(SourceInfo);
40992bool emitPopMemberPtr(SourceInfo);
40993bool emitPopFloat(SourceInfo);
40994#endif
40995#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40996[[nodiscard]] bool emitPop(PrimType, SourceInfo I);
40997#endif
40998#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40999bool
41000#if defined(GET_EVAL_IMPL)
41001EvalEmitter
41002#else
41003ByteCodeEmitter
41004#endif
41005::emitPop(PrimType T0, SourceInfo I) {
41006 switch (T0) {
41007 case PT_Sint8:
41008 return emitPopSint8(I);
41009 case PT_Uint8:
41010 return emitPopUint8(I);
41011 case PT_Sint16:
41012 return emitPopSint16(I);
41013 case PT_Uint16:
41014 return emitPopUint16(I);
41015 case PT_Sint32:
41016 return emitPopSint32(I);
41017 case PT_Uint32:
41018 return emitPopUint32(I);
41019 case PT_Sint64:
41020 return emitPopSint64(I);
41021 case PT_Uint64:
41022 return emitPopUint64(I);
41023 case PT_IntAP:
41024 return emitPopIntAP(I);
41025 case PT_IntAPS:
41026 return emitPopIntAPS(I);
41027 case PT_Bool:
41028 return emitPopBool(I);
41029 case PT_FixedPoint:
41030 return emitPopFixedPoint(I);
41031 case PT_Ptr:
41032 return emitPopPtr(I);
41033 case PT_MemberPtr:
41034 return emitPopMemberPtr(I);
41035 case PT_Float:
41036 return emitPopFloat(I);
41037 }
41038 llvm_unreachable("invalid enum value");
41039}
41040#endif
41041#ifdef GET_LINK_IMPL
41042bool ByteCodeEmitter::emitPopSint8(SourceInfo L) {
41043 return emitOp<>(OP_PopSint8, L);
41044}
41045bool ByteCodeEmitter::emitPopUint8(SourceInfo L) {
41046 return emitOp<>(OP_PopUint8, L);
41047}
41048bool ByteCodeEmitter::emitPopSint16(SourceInfo L) {
41049 return emitOp<>(OP_PopSint16, L);
41050}
41051bool ByteCodeEmitter::emitPopUint16(SourceInfo L) {
41052 return emitOp<>(OP_PopUint16, L);
41053}
41054bool ByteCodeEmitter::emitPopSint32(SourceInfo L) {
41055 return emitOp<>(OP_PopSint32, L);
41056}
41057bool ByteCodeEmitter::emitPopUint32(SourceInfo L) {
41058 return emitOp<>(OP_PopUint32, L);
41059}
41060bool ByteCodeEmitter::emitPopSint64(SourceInfo L) {
41061 return emitOp<>(OP_PopSint64, L);
41062}
41063bool ByteCodeEmitter::emitPopUint64(SourceInfo L) {
41064 return emitOp<>(OP_PopUint64, L);
41065}
41066bool ByteCodeEmitter::emitPopIntAP(SourceInfo L) {
41067 return emitOp<>(OP_PopIntAP, L);
41068}
41069bool ByteCodeEmitter::emitPopIntAPS(SourceInfo L) {
41070 return emitOp<>(OP_PopIntAPS, L);
41071}
41072bool ByteCodeEmitter::emitPopBool(SourceInfo L) {
41073 return emitOp<>(OP_PopBool, L);
41074}
41075bool ByteCodeEmitter::emitPopFixedPoint(SourceInfo L) {
41076 return emitOp<>(OP_PopFixedPoint, L);
41077}
41078bool ByteCodeEmitter::emitPopPtr(SourceInfo L) {
41079 return emitOp<>(OP_PopPtr, L);
41080}
41081bool ByteCodeEmitter::emitPopMemberPtr(SourceInfo L) {
41082 return emitOp<>(OP_PopMemberPtr, L);
41083}
41084bool ByteCodeEmitter::emitPopFloat(SourceInfo L) {
41085 return emitOp<>(OP_PopFloat, L);
41086}
41087#endif
41088#ifdef GET_EVAL_IMPL
41089bool EvalEmitter::emitPopSint8(SourceInfo L) {
41090 if (!isActive()) return true;
41091 CurrentSource = L;
41092 return Pop<PT_Sint8>(S);
41093}
41094bool EvalEmitter::emitPopUint8(SourceInfo L) {
41095 if (!isActive()) return true;
41096 CurrentSource = L;
41097 return Pop<PT_Uint8>(S);
41098}
41099bool EvalEmitter::emitPopSint16(SourceInfo L) {
41100 if (!isActive()) return true;
41101 CurrentSource = L;
41102 return Pop<PT_Sint16>(S);
41103}
41104bool EvalEmitter::emitPopUint16(SourceInfo L) {
41105 if (!isActive()) return true;
41106 CurrentSource = L;
41107 return Pop<PT_Uint16>(S);
41108}
41109bool EvalEmitter::emitPopSint32(SourceInfo L) {
41110 if (!isActive()) return true;
41111 CurrentSource = L;
41112 return Pop<PT_Sint32>(S);
41113}
41114bool EvalEmitter::emitPopUint32(SourceInfo L) {
41115 if (!isActive()) return true;
41116 CurrentSource = L;
41117 return Pop<PT_Uint32>(S);
41118}
41119bool EvalEmitter::emitPopSint64(SourceInfo L) {
41120 if (!isActive()) return true;
41121 CurrentSource = L;
41122 return Pop<PT_Sint64>(S);
41123}
41124bool EvalEmitter::emitPopUint64(SourceInfo L) {
41125 if (!isActive()) return true;
41126 CurrentSource = L;
41127 return Pop<PT_Uint64>(S);
41128}
41129bool EvalEmitter::emitPopIntAP(SourceInfo L) {
41130 if (!isActive()) return true;
41131 CurrentSource = L;
41132 return Pop<PT_IntAP>(S);
41133}
41134bool EvalEmitter::emitPopIntAPS(SourceInfo L) {
41135 if (!isActive()) return true;
41136 CurrentSource = L;
41137 return Pop<PT_IntAPS>(S);
41138}
41139bool EvalEmitter::emitPopBool(SourceInfo L) {
41140 if (!isActive()) return true;
41141 CurrentSource = L;
41142 return Pop<PT_Bool>(S);
41143}
41144bool EvalEmitter::emitPopFixedPoint(SourceInfo L) {
41145 if (!isActive()) return true;
41146 CurrentSource = L;
41147 return Pop<PT_FixedPoint>(S);
41148}
41149bool EvalEmitter::emitPopPtr(SourceInfo L) {
41150 if (!isActive()) return true;
41151 CurrentSource = L;
41152 return Pop<PT_Ptr>(S);
41153}
41154bool EvalEmitter::emitPopMemberPtr(SourceInfo L) {
41155 if (!isActive()) return true;
41156 CurrentSource = L;
41157 return Pop<PT_MemberPtr>(S);
41158}
41159bool EvalEmitter::emitPopFloat(SourceInfo L) {
41160 if (!isActive()) return true;
41161 CurrentSource = L;
41162 return Pop<PT_Float>(S);
41163}
41164#endif
41165#ifdef GET_OPCODE_NAMES
41166OP_PopCC,
41167#endif
41168#ifdef GET_INTERPFN_LIST
41169&Interp_PopCC,
41170#endif
41171#ifdef GET_INTERPFN_DISPATCHERS
41172PRESERVE_NONE
41173static bool Interp_PopCC(InterpState &S) {
41174 PopCC(S);
41175#if USE_TAILCALLS
41176 MUSTTAIL return InterpNext(S);
41177#else
41178 return true;
41179#endif
41180}
41181#endif
41182#ifdef GET_DISASM
41183case OP_PopCC:
41184 Text.Op = PrintName("PopCC");
41185 break;
41186#endif
41187#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41188bool emitPopCC(SourceInfo);
41189#endif
41190#ifdef GET_LINK_IMPL
41191bool ByteCodeEmitter::emitPopCC(SourceInfo L) {
41192 return emitOp<>(OP_PopCC, L);
41193}
41194#endif
41195#ifdef GET_EVAL_IMPL
41196bool EvalEmitter::emitPopCC(SourceInfo L) {
41197 if (!isActive()) return true;
41198 CurrentSource = L;
41199 return PopCC(S);
41200}
41201#endif
41202#ifdef GET_OPCODE_NAMES
41203OP_PopIgnoreDiags,
41204#endif
41205#ifdef GET_INTERPFN_LIST
41206&Interp_PopIgnoreDiags,
41207#endif
41208#ifdef GET_INTERPFN_DISPATCHERS
41209PRESERVE_NONE
41210static bool Interp_PopIgnoreDiags(InterpState &S) {
41211 PopIgnoreDiags(S);
41212#if USE_TAILCALLS
41213 MUSTTAIL return InterpNext(S);
41214#else
41215 return true;
41216#endif
41217}
41218#endif
41219#ifdef GET_DISASM
41220case OP_PopIgnoreDiags:
41221 Text.Op = PrintName("PopIgnoreDiags");
41222 break;
41223#endif
41224#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41225bool emitPopIgnoreDiags(SourceInfo);
41226#endif
41227#ifdef GET_LINK_IMPL
41228bool ByteCodeEmitter::emitPopIgnoreDiags(SourceInfo L) {
41229 return emitOp<>(OP_PopIgnoreDiags, L);
41230}
41231#endif
41232#ifdef GET_EVAL_IMPL
41233bool EvalEmitter::emitPopIgnoreDiags(SourceInfo L) {
41234 if (!isActive()) return true;
41235 CurrentSource = L;
41236 return PopIgnoreDiags(S);
41237}
41238#endif
41239#ifdef GET_OPCODE_NAMES
41240OP_PopMSVCCE,
41241#endif
41242#ifdef GET_INTERPFN_LIST
41243&Interp_PopMSVCCE,
41244#endif
41245#ifdef GET_INTERPFN_DISPATCHERS
41246PRESERVE_NONE
41247static bool Interp_PopMSVCCE(InterpState &S) {
41248 PopMSVCCE(S);
41249#if USE_TAILCALLS
41250 MUSTTAIL return InterpNext(S);
41251#else
41252 return true;
41253#endif
41254}
41255#endif
41256#ifdef GET_DISASM
41257case OP_PopMSVCCE:
41258 Text.Op = PrintName("PopMSVCCE");
41259 break;
41260#endif
41261#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41262bool emitPopMSVCCE(SourceInfo);
41263#endif
41264#ifdef GET_LINK_IMPL
41265bool ByteCodeEmitter::emitPopMSVCCE(SourceInfo L) {
41266 return emitOp<>(OP_PopMSVCCE, L);
41267}
41268#endif
41269#ifdef GET_EVAL_IMPL
41270bool EvalEmitter::emitPopMSVCCE(SourceInfo L) {
41271 if (!isActive()) return true;
41272 CurrentSource = L;
41273 return PopMSVCCE(S);
41274}
41275#endif
41276#ifdef GET_OPCODE_NAMES
41277OP_PreDecSint8,
41278OP_PreDecUint8,
41279OP_PreDecSint16,
41280OP_PreDecUint16,
41281OP_PreDecSint32,
41282OP_PreDecUint32,
41283OP_PreDecSint64,
41284OP_PreDecUint64,
41285OP_PreDecIntAP,
41286OP_PreDecIntAPS,
41287OP_PreDecBool,
41288OP_PreDecFixedPoint,
41289#endif
41290#ifdef GET_INTERPFN_LIST
41291&Interp_PreDecSint8,
41292&Interp_PreDecUint8,
41293&Interp_PreDecSint16,
41294&Interp_PreDecUint16,
41295&Interp_PreDecSint32,
41296&Interp_PreDecUint32,
41297&Interp_PreDecSint64,
41298&Interp_PreDecUint64,
41299&Interp_PreDecIntAP,
41300&Interp_PreDecIntAPS,
41301&Interp_PreDecBool,
41302&Interp_PreDecFixedPoint,
41303#endif
41304#ifdef GET_INTERPFN_DISPATCHERS
41305PRESERVE_NONE
41306static bool Interp_PreDecSint8(InterpState &S) {
41307 {
41308 CodePtr OpPC = S.PC;
41309 const auto V0 = ReadArg<bool>(S, S.PC);
41310 if (!PreDec<PT_Sint8>(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_PreDecUint8(InterpState &S) {
41320 {
41321 CodePtr OpPC = S.PC;
41322 const auto V0 = ReadArg<bool>(S, S.PC);
41323 if (!PreDec<PT_Uint8>(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_PreDecSint16(InterpState &S) {
41333 {
41334 CodePtr OpPC = S.PC;
41335 const auto V0 = ReadArg<bool>(S, S.PC);
41336 if (!PreDec<PT_Sint16>(S, OpPC, V0)) return false;
41337 }
41338#if USE_TAILCALLS
41339 MUSTTAIL return InterpNext(S);
41340#else
41341 return true;
41342#endif
41343}
41344PRESERVE_NONE
41345static bool Interp_PreDecUint16(InterpState &S) {
41346 {
41347 CodePtr OpPC = S.PC;
41348 const auto V0 = ReadArg<bool>(S, S.PC);
41349 if (!PreDec<PT_Uint16>(S, OpPC, V0)) return false;
41350 }
41351#if USE_TAILCALLS
41352 MUSTTAIL return InterpNext(S);
41353#else
41354 return true;
41355#endif
41356}
41357PRESERVE_NONE
41358static bool Interp_PreDecSint32(InterpState &S) {
41359 {
41360 CodePtr OpPC = S.PC;
41361 const auto V0 = ReadArg<bool>(S, S.PC);
41362 if (!PreDec<PT_Sint32>(S, OpPC, V0)) return false;
41363 }
41364#if USE_TAILCALLS
41365 MUSTTAIL return InterpNext(S);
41366#else
41367 return true;
41368#endif
41369}
41370PRESERVE_NONE
41371static bool Interp_PreDecUint32(InterpState &S) {
41372 {
41373 CodePtr OpPC = S.PC;
41374 const auto V0 = ReadArg<bool>(S, S.PC);
41375 if (!PreDec<PT_Uint32>(S, OpPC, V0)) return false;
41376 }
41377#if USE_TAILCALLS
41378 MUSTTAIL return InterpNext(S);
41379#else
41380 return true;
41381#endif
41382}
41383PRESERVE_NONE
41384static bool Interp_PreDecSint64(InterpState &S) {
41385 {
41386 CodePtr OpPC = S.PC;
41387 const auto V0 = ReadArg<bool>(S, S.PC);
41388 if (!PreDec<PT_Sint64>(S, OpPC, V0)) return false;
41389 }
41390#if USE_TAILCALLS
41391 MUSTTAIL return InterpNext(S);
41392#else
41393 return true;
41394#endif
41395}
41396PRESERVE_NONE
41397static bool Interp_PreDecUint64(InterpState &S) {
41398 {
41399 CodePtr OpPC = S.PC;
41400 const auto V0 = ReadArg<bool>(S, S.PC);
41401 if (!PreDec<PT_Uint64>(S, OpPC, V0)) return false;
41402 }
41403#if USE_TAILCALLS
41404 MUSTTAIL return InterpNext(S);
41405#else
41406 return true;
41407#endif
41408}
41409PRESERVE_NONE
41410static bool Interp_PreDecIntAP(InterpState &S) {
41411 {
41412 CodePtr OpPC = S.PC;
41413 const auto V0 = ReadArg<bool>(S, S.PC);
41414 if (!PreDec<PT_IntAP>(S, OpPC, V0)) return false;
41415 }
41416#if USE_TAILCALLS
41417 MUSTTAIL return InterpNext(S);
41418#else
41419 return true;
41420#endif
41421}
41422PRESERVE_NONE
41423static bool Interp_PreDecIntAPS(InterpState &S) {
41424 {
41425 CodePtr OpPC = S.PC;
41426 const auto V0 = ReadArg<bool>(S, S.PC);
41427 if (!PreDec<PT_IntAPS>(S, OpPC, V0)) return false;
41428 }
41429#if USE_TAILCALLS
41430 MUSTTAIL return InterpNext(S);
41431#else
41432 return true;
41433#endif
41434}
41435PRESERVE_NONE
41436static bool Interp_PreDecBool(InterpState &S) {
41437 {
41438 CodePtr OpPC = S.PC;
41439 const auto V0 = ReadArg<bool>(S, S.PC);
41440 if (!PreDec<PT_Bool>(S, OpPC, V0)) return false;
41441 }
41442#if USE_TAILCALLS
41443 MUSTTAIL return InterpNext(S);
41444#else
41445 return true;
41446#endif
41447}
41448PRESERVE_NONE
41449static bool Interp_PreDecFixedPoint(InterpState &S) {
41450 {
41451 CodePtr OpPC = S.PC;
41452 const auto V0 = ReadArg<bool>(S, S.PC);
41453 if (!PreDec<PT_FixedPoint>(S, OpPC, V0)) return false;
41454 }
41455#if USE_TAILCALLS
41456 MUSTTAIL return InterpNext(S);
41457#else
41458 return true;
41459#endif
41460}
41461#endif
41462#ifdef GET_DISASM
41463case OP_PreDecSint8:
41464 Text.Op = PrintName("PreDecSint8");
41465 Text.Args.push_back(printArg<bool>(PC));
41466 break;
41467case OP_PreDecUint8:
41468 Text.Op = PrintName("PreDecUint8");
41469 Text.Args.push_back(printArg<bool>(PC));
41470 break;
41471case OP_PreDecSint16:
41472 Text.Op = PrintName("PreDecSint16");
41473 Text.Args.push_back(printArg<bool>(PC));
41474 break;
41475case OP_PreDecUint16:
41476 Text.Op = PrintName("PreDecUint16");
41477 Text.Args.push_back(printArg<bool>(PC));
41478 break;
41479case OP_PreDecSint32:
41480 Text.Op = PrintName("PreDecSint32");
41481 Text.Args.push_back(printArg<bool>(PC));
41482 break;
41483case OP_PreDecUint32:
41484 Text.Op = PrintName("PreDecUint32");
41485 Text.Args.push_back(printArg<bool>(PC));
41486 break;
41487case OP_PreDecSint64:
41488 Text.Op = PrintName("PreDecSint64");
41489 Text.Args.push_back(printArg<bool>(PC));
41490 break;
41491case OP_PreDecUint64:
41492 Text.Op = PrintName("PreDecUint64");
41493 Text.Args.push_back(printArg<bool>(PC));
41494 break;
41495case OP_PreDecIntAP:
41496 Text.Op = PrintName("PreDecIntAP");
41497 Text.Args.push_back(printArg<bool>(PC));
41498 break;
41499case OP_PreDecIntAPS:
41500 Text.Op = PrintName("PreDecIntAPS");
41501 Text.Args.push_back(printArg<bool>(PC));
41502 break;
41503case OP_PreDecBool:
41504 Text.Op = PrintName("PreDecBool");
41505 Text.Args.push_back(printArg<bool>(PC));
41506 break;
41507case OP_PreDecFixedPoint:
41508 Text.Op = PrintName("PreDecFixedPoint");
41509 Text.Args.push_back(printArg<bool>(PC));
41510 break;
41511#endif
41512#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41513bool emitPreDecSint8( bool , SourceInfo);
41514bool emitPreDecUint8( bool , SourceInfo);
41515bool emitPreDecSint16( bool , SourceInfo);
41516bool emitPreDecUint16( bool , SourceInfo);
41517bool emitPreDecSint32( bool , SourceInfo);
41518bool emitPreDecUint32( bool , SourceInfo);
41519bool emitPreDecSint64( bool , SourceInfo);
41520bool emitPreDecUint64( bool , SourceInfo);
41521bool emitPreDecIntAP( bool , SourceInfo);
41522bool emitPreDecIntAPS( bool , SourceInfo);
41523bool emitPreDecBool( bool , SourceInfo);
41524bool emitPreDecFixedPoint( bool , SourceInfo);
41525#endif
41526#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41527[[nodiscard]] bool emitPreDec(PrimType, bool, SourceInfo I);
41528#endif
41529#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
41530bool
41531#if defined(GET_EVAL_IMPL)
41532EvalEmitter
41533#else
41534ByteCodeEmitter
41535#endif
41536::emitPreDec(PrimType T0, bool A0, SourceInfo I) {
41537 switch (T0) {
41538 case PT_Sint8:
41539 return emitPreDecSint8(A0, I);
41540 case PT_Uint8:
41541 return emitPreDecUint8(A0, I);
41542 case PT_Sint16:
41543 return emitPreDecSint16(A0, I);
41544 case PT_Uint16:
41545 return emitPreDecUint16(A0, I);
41546 case PT_Sint32:
41547 return emitPreDecSint32(A0, I);
41548 case PT_Uint32:
41549 return emitPreDecUint32(A0, I);
41550 case PT_Sint64:
41551 return emitPreDecSint64(A0, I);
41552 case PT_Uint64:
41553 return emitPreDecUint64(A0, I);
41554 case PT_IntAP:
41555 return emitPreDecIntAP(A0, I);
41556 case PT_IntAPS:
41557 return emitPreDecIntAPS(A0, I);
41558 case PT_Bool:
41559 return emitPreDecBool(A0, I);
41560 case PT_FixedPoint:
41561 return emitPreDecFixedPoint(A0, I);
41562 default: llvm_unreachable("invalid type: emitPreDec");
41563 }
41564 llvm_unreachable("invalid enum value");
41565}
41566#endif
41567#ifdef GET_LINK_IMPL
41568bool ByteCodeEmitter::emitPreDecSint8( bool A0, SourceInfo L) {
41569 return emitOp<bool>(OP_PreDecSint8, A0, L);
41570}
41571bool ByteCodeEmitter::emitPreDecUint8( bool A0, SourceInfo L) {
41572 return emitOp<bool>(OP_PreDecUint8, A0, L);
41573}
41574bool ByteCodeEmitter::emitPreDecSint16( bool A0, SourceInfo L) {
41575 return emitOp<bool>(OP_PreDecSint16, A0, L);
41576}
41577bool ByteCodeEmitter::emitPreDecUint16( bool A0, SourceInfo L) {
41578 return emitOp<bool>(OP_PreDecUint16, A0, L);
41579}
41580bool ByteCodeEmitter::emitPreDecSint32( bool A0, SourceInfo L) {
41581 return emitOp<bool>(OP_PreDecSint32, A0, L);
41582}
41583bool ByteCodeEmitter::emitPreDecUint32( bool A0, SourceInfo L) {
41584 return emitOp<bool>(OP_PreDecUint32, A0, L);
41585}
41586bool ByteCodeEmitter::emitPreDecSint64( bool A0, SourceInfo L) {
41587 return emitOp<bool>(OP_PreDecSint64, A0, L);
41588}
41589bool ByteCodeEmitter::emitPreDecUint64( bool A0, SourceInfo L) {
41590 return emitOp<bool>(OP_PreDecUint64, A0, L);
41591}
41592bool ByteCodeEmitter::emitPreDecIntAP( bool A0, SourceInfo L) {
41593 return emitOp<bool>(OP_PreDecIntAP, A0, L);
41594}
41595bool ByteCodeEmitter::emitPreDecIntAPS( bool A0, SourceInfo L) {
41596 return emitOp<bool>(OP_PreDecIntAPS, A0, L);
41597}
41598bool ByteCodeEmitter::emitPreDecBool( bool A0, SourceInfo L) {
41599 return emitOp<bool>(OP_PreDecBool, A0, L);
41600}
41601bool ByteCodeEmitter::emitPreDecFixedPoint( bool A0, SourceInfo L) {
41602 return emitOp<bool>(OP_PreDecFixedPoint, A0, L);
41603}
41604#endif
41605#ifdef GET_EVAL_IMPL
41606bool EvalEmitter::emitPreDecSint8( bool A0, SourceInfo L) {
41607 if (!isActive()) return true;
41608 CurrentSource = L;
41609 return PreDec<PT_Sint8>(S, CodePtr(), A0);
41610}
41611bool EvalEmitter::emitPreDecUint8( bool A0, SourceInfo L) {
41612 if (!isActive()) return true;
41613 CurrentSource = L;
41614 return PreDec<PT_Uint8>(S, CodePtr(), A0);
41615}
41616bool EvalEmitter::emitPreDecSint16( bool A0, SourceInfo L) {
41617 if (!isActive()) return true;
41618 CurrentSource = L;
41619 return PreDec<PT_Sint16>(S, CodePtr(), A0);
41620}
41621bool EvalEmitter::emitPreDecUint16( bool A0, SourceInfo L) {
41622 if (!isActive()) return true;
41623 CurrentSource = L;
41624 return PreDec<PT_Uint16>(S, CodePtr(), A0);
41625}
41626bool EvalEmitter::emitPreDecSint32( bool A0, SourceInfo L) {
41627 if (!isActive()) return true;
41628 CurrentSource = L;
41629 return PreDec<PT_Sint32>(S, CodePtr(), A0);
41630}
41631bool EvalEmitter::emitPreDecUint32( bool A0, SourceInfo L) {
41632 if (!isActive()) return true;
41633 CurrentSource = L;
41634 return PreDec<PT_Uint32>(S, CodePtr(), A0);
41635}
41636bool EvalEmitter::emitPreDecSint64( bool A0, SourceInfo L) {
41637 if (!isActive()) return true;
41638 CurrentSource = L;
41639 return PreDec<PT_Sint64>(S, CodePtr(), A0);
41640}
41641bool EvalEmitter::emitPreDecUint64( bool A0, SourceInfo L) {
41642 if (!isActive()) return true;
41643 CurrentSource = L;
41644 return PreDec<PT_Uint64>(S, CodePtr(), A0);
41645}
41646bool EvalEmitter::emitPreDecIntAP( bool A0, SourceInfo L) {
41647 if (!isActive()) return true;
41648 CurrentSource = L;
41649 return PreDec<PT_IntAP>(S, CodePtr(), A0);
41650}
41651bool EvalEmitter::emitPreDecIntAPS( bool A0, SourceInfo L) {
41652 if (!isActive()) return true;
41653 CurrentSource = L;
41654 return PreDec<PT_IntAPS>(S, CodePtr(), A0);
41655}
41656bool EvalEmitter::emitPreDecBool( bool A0, SourceInfo L) {
41657 if (!isActive()) return true;
41658 CurrentSource = L;
41659 return PreDec<PT_Bool>(S, CodePtr(), A0);
41660}
41661bool EvalEmitter::emitPreDecFixedPoint( bool A0, SourceInfo L) {
41662 if (!isActive()) return true;
41663 CurrentSource = L;
41664 return PreDec<PT_FixedPoint>(S, CodePtr(), A0);
41665}
41666#endif
41667#ifdef GET_OPCODE_NAMES
41668OP_PreDecBitfieldSint8,
41669OP_PreDecBitfieldUint8,
41670OP_PreDecBitfieldSint16,
41671OP_PreDecBitfieldUint16,
41672OP_PreDecBitfieldSint32,
41673OP_PreDecBitfieldUint32,
41674OP_PreDecBitfieldSint64,
41675OP_PreDecBitfieldUint64,
41676OP_PreDecBitfieldIntAP,
41677OP_PreDecBitfieldIntAPS,
41678OP_PreDecBitfieldBool,
41679OP_PreDecBitfieldFixedPoint,
41680#endif
41681#ifdef GET_INTERPFN_LIST
41682&Interp_PreDecBitfieldSint8,
41683&Interp_PreDecBitfieldUint8,
41684&Interp_PreDecBitfieldSint16,
41685&Interp_PreDecBitfieldUint16,
41686&Interp_PreDecBitfieldSint32,
41687&Interp_PreDecBitfieldUint32,
41688&Interp_PreDecBitfieldSint64,
41689&Interp_PreDecBitfieldUint64,
41690&Interp_PreDecBitfieldIntAP,
41691&Interp_PreDecBitfieldIntAPS,
41692&Interp_PreDecBitfieldBool,
41693&Interp_PreDecBitfieldFixedPoint,
41694#endif
41695#ifdef GET_INTERPFN_DISPATCHERS
41696PRESERVE_NONE
41697static bool Interp_PreDecBitfieldSint8(InterpState &S) {
41698 {
41699 CodePtr OpPC = S.PC;
41700 const auto V0 = ReadArg<bool>(S, S.PC);
41701 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41702 if (!PreDecBitfield<PT_Sint8>(S, OpPC, V0, V1)) return false;
41703 }
41704#if USE_TAILCALLS
41705 MUSTTAIL return InterpNext(S);
41706#else
41707 return true;
41708#endif
41709}
41710PRESERVE_NONE
41711static bool Interp_PreDecBitfieldUint8(InterpState &S) {
41712 {
41713 CodePtr OpPC = S.PC;
41714 const auto V0 = ReadArg<bool>(S, S.PC);
41715 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41716 if (!PreDecBitfield<PT_Uint8>(S, OpPC, V0, V1)) return false;
41717 }
41718#if USE_TAILCALLS
41719 MUSTTAIL return InterpNext(S);
41720#else
41721 return true;
41722#endif
41723}
41724PRESERVE_NONE
41725static bool Interp_PreDecBitfieldSint16(InterpState &S) {
41726 {
41727 CodePtr OpPC = S.PC;
41728 const auto V0 = ReadArg<bool>(S, S.PC);
41729 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41730 if (!PreDecBitfield<PT_Sint16>(S, OpPC, V0, V1)) return false;
41731 }
41732#if USE_TAILCALLS
41733 MUSTTAIL return InterpNext(S);
41734#else
41735 return true;
41736#endif
41737}
41738PRESERVE_NONE
41739static bool Interp_PreDecBitfieldUint16(InterpState &S) {
41740 {
41741 CodePtr OpPC = S.PC;
41742 const auto V0 = ReadArg<bool>(S, S.PC);
41743 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41744 if (!PreDecBitfield<PT_Uint16>(S, OpPC, V0, V1)) return false;
41745 }
41746#if USE_TAILCALLS
41747 MUSTTAIL return InterpNext(S);
41748#else
41749 return true;
41750#endif
41751}
41752PRESERVE_NONE
41753static bool Interp_PreDecBitfieldSint32(InterpState &S) {
41754 {
41755 CodePtr OpPC = S.PC;
41756 const auto V0 = ReadArg<bool>(S, S.PC);
41757 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41758 if (!PreDecBitfield<PT_Sint32>(S, OpPC, V0, V1)) return false;
41759 }
41760#if USE_TAILCALLS
41761 MUSTTAIL return InterpNext(S);
41762#else
41763 return true;
41764#endif
41765}
41766PRESERVE_NONE
41767static bool Interp_PreDecBitfieldUint32(InterpState &S) {
41768 {
41769 CodePtr OpPC = S.PC;
41770 const auto V0 = ReadArg<bool>(S, S.PC);
41771 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41772 if (!PreDecBitfield<PT_Uint32>(S, OpPC, V0, V1)) return false;
41773 }
41774#if USE_TAILCALLS
41775 MUSTTAIL return InterpNext(S);
41776#else
41777 return true;
41778#endif
41779}
41780PRESERVE_NONE
41781static bool Interp_PreDecBitfieldSint64(InterpState &S) {
41782 {
41783 CodePtr OpPC = S.PC;
41784 const auto V0 = ReadArg<bool>(S, S.PC);
41785 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41786 if (!PreDecBitfield<PT_Sint64>(S, OpPC, V0, V1)) return false;
41787 }
41788#if USE_TAILCALLS
41789 MUSTTAIL return InterpNext(S);
41790#else
41791 return true;
41792#endif
41793}
41794PRESERVE_NONE
41795static bool Interp_PreDecBitfieldUint64(InterpState &S) {
41796 {
41797 CodePtr OpPC = S.PC;
41798 const auto V0 = ReadArg<bool>(S, S.PC);
41799 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41800 if (!PreDecBitfield<PT_Uint64>(S, OpPC, V0, V1)) return false;
41801 }
41802#if USE_TAILCALLS
41803 MUSTTAIL return InterpNext(S);
41804#else
41805 return true;
41806#endif
41807}
41808PRESERVE_NONE
41809static bool Interp_PreDecBitfieldIntAP(InterpState &S) {
41810 {
41811 CodePtr OpPC = S.PC;
41812 const auto V0 = ReadArg<bool>(S, S.PC);
41813 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41814 if (!PreDecBitfield<PT_IntAP>(S, OpPC, V0, V1)) return false;
41815 }
41816#if USE_TAILCALLS
41817 MUSTTAIL return InterpNext(S);
41818#else
41819 return true;
41820#endif
41821}
41822PRESERVE_NONE
41823static bool Interp_PreDecBitfieldIntAPS(InterpState &S) {
41824 {
41825 CodePtr OpPC = S.PC;
41826 const auto V0 = ReadArg<bool>(S, S.PC);
41827 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41828 if (!PreDecBitfield<PT_IntAPS>(S, OpPC, V0, V1)) return false;
41829 }
41830#if USE_TAILCALLS
41831 MUSTTAIL return InterpNext(S);
41832#else
41833 return true;
41834#endif
41835}
41836PRESERVE_NONE
41837static bool Interp_PreDecBitfieldBool(InterpState &S) {
41838 {
41839 CodePtr OpPC = S.PC;
41840 const auto V0 = ReadArg<bool>(S, S.PC);
41841 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41842 if (!PreDecBitfield<PT_Bool>(S, OpPC, V0, V1)) return false;
41843 }
41844#if USE_TAILCALLS
41845 MUSTTAIL return InterpNext(S);
41846#else
41847 return true;
41848#endif
41849}
41850PRESERVE_NONE
41851static bool Interp_PreDecBitfieldFixedPoint(InterpState &S) {
41852 {
41853 CodePtr OpPC = S.PC;
41854 const auto V0 = ReadArg<bool>(S, S.PC);
41855 const auto V1 = ReadArg<uint32_t>(S, S.PC);
41856 if (!PreDecBitfield<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
41857 }
41858#if USE_TAILCALLS
41859 MUSTTAIL return InterpNext(S);
41860#else
41861 return true;
41862#endif
41863}
41864#endif
41865#ifdef GET_DISASM
41866case OP_PreDecBitfieldSint8:
41867 Text.Op = PrintName("PreDecBitfieldSint8");
41868 Text.Args.push_back(printArg<bool>(PC));
41869 Text.Args.push_back(printArg<uint32_t>(PC));
41870 break;
41871case OP_PreDecBitfieldUint8:
41872 Text.Op = PrintName("PreDecBitfieldUint8");
41873 Text.Args.push_back(printArg<bool>(PC));
41874 Text.Args.push_back(printArg<uint32_t>(PC));
41875 break;
41876case OP_PreDecBitfieldSint16:
41877 Text.Op = PrintName("PreDecBitfieldSint16");
41878 Text.Args.push_back(printArg<bool>(PC));
41879 Text.Args.push_back(printArg<uint32_t>(PC));
41880 break;
41881case OP_PreDecBitfieldUint16:
41882 Text.Op = PrintName("PreDecBitfieldUint16");
41883 Text.Args.push_back(printArg<bool>(PC));
41884 Text.Args.push_back(printArg<uint32_t>(PC));
41885 break;
41886case OP_PreDecBitfieldSint32:
41887 Text.Op = PrintName("PreDecBitfieldSint32");
41888 Text.Args.push_back(printArg<bool>(PC));
41889 Text.Args.push_back(printArg<uint32_t>(PC));
41890 break;
41891case OP_PreDecBitfieldUint32:
41892 Text.Op = PrintName("PreDecBitfieldUint32");
41893 Text.Args.push_back(printArg<bool>(PC));
41894 Text.Args.push_back(printArg<uint32_t>(PC));
41895 break;
41896case OP_PreDecBitfieldSint64:
41897 Text.Op = PrintName("PreDecBitfieldSint64");
41898 Text.Args.push_back(printArg<bool>(PC));
41899 Text.Args.push_back(printArg<uint32_t>(PC));
41900 break;
41901case OP_PreDecBitfieldUint64:
41902 Text.Op = PrintName("PreDecBitfieldUint64");
41903 Text.Args.push_back(printArg<bool>(PC));
41904 Text.Args.push_back(printArg<uint32_t>(PC));
41905 break;
41906case OP_PreDecBitfieldIntAP:
41907 Text.Op = PrintName("PreDecBitfieldIntAP");
41908 Text.Args.push_back(printArg<bool>(PC));
41909 Text.Args.push_back(printArg<uint32_t>(PC));
41910 break;
41911case OP_PreDecBitfieldIntAPS:
41912 Text.Op = PrintName("PreDecBitfieldIntAPS");
41913 Text.Args.push_back(printArg<bool>(PC));
41914 Text.Args.push_back(printArg<uint32_t>(PC));
41915 break;
41916case OP_PreDecBitfieldBool:
41917 Text.Op = PrintName("PreDecBitfieldBool");
41918 Text.Args.push_back(printArg<bool>(PC));
41919 Text.Args.push_back(printArg<uint32_t>(PC));
41920 break;
41921case OP_PreDecBitfieldFixedPoint:
41922 Text.Op = PrintName("PreDecBitfieldFixedPoint");
41923 Text.Args.push_back(printArg<bool>(PC));
41924 Text.Args.push_back(printArg<uint32_t>(PC));
41925 break;
41926#endif
41927#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41928bool emitPreDecBitfieldSint8( bool , uint32_t , SourceInfo);
41929bool emitPreDecBitfieldUint8( bool , uint32_t , SourceInfo);
41930bool emitPreDecBitfieldSint16( bool , uint32_t , SourceInfo);
41931bool emitPreDecBitfieldUint16( bool , uint32_t , SourceInfo);
41932bool emitPreDecBitfieldSint32( bool , uint32_t , SourceInfo);
41933bool emitPreDecBitfieldUint32( bool , uint32_t , SourceInfo);
41934bool emitPreDecBitfieldSint64( bool , uint32_t , SourceInfo);
41935bool emitPreDecBitfieldUint64( bool , uint32_t , SourceInfo);
41936bool emitPreDecBitfieldIntAP( bool , uint32_t , SourceInfo);
41937bool emitPreDecBitfieldIntAPS( bool , uint32_t , SourceInfo);
41938bool emitPreDecBitfieldBool( bool , uint32_t , SourceInfo);
41939bool emitPreDecBitfieldFixedPoint( bool , uint32_t , SourceInfo);
41940#endif
41941#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41942[[nodiscard]] bool emitPreDecBitfield(PrimType, bool, uint32_t, SourceInfo I);
41943#endif
41944#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
41945bool
41946#if defined(GET_EVAL_IMPL)
41947EvalEmitter
41948#else
41949ByteCodeEmitter
41950#endif
41951::emitPreDecBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
41952 switch (T0) {
41953 case PT_Sint8:
41954 return emitPreDecBitfieldSint8(A0, A1, I);
41955 case PT_Uint8:
41956 return emitPreDecBitfieldUint8(A0, A1, I);
41957 case PT_Sint16:
41958 return emitPreDecBitfieldSint16(A0, A1, I);
41959 case PT_Uint16:
41960 return emitPreDecBitfieldUint16(A0, A1, I);
41961 case PT_Sint32:
41962 return emitPreDecBitfieldSint32(A0, A1, I);
41963 case PT_Uint32:
41964 return emitPreDecBitfieldUint32(A0, A1, I);
41965 case PT_Sint64:
41966 return emitPreDecBitfieldSint64(A0, A1, I);
41967 case PT_Uint64:
41968 return emitPreDecBitfieldUint64(A0, A1, I);
41969 case PT_IntAP:
41970 return emitPreDecBitfieldIntAP(A0, A1, I);
41971 case PT_IntAPS:
41972 return emitPreDecBitfieldIntAPS(A0, A1, I);
41973 case PT_Bool:
41974 return emitPreDecBitfieldBool(A0, A1, I);
41975 case PT_FixedPoint:
41976 return emitPreDecBitfieldFixedPoint(A0, A1, I);
41977 default: llvm_unreachable("invalid type: emitPreDecBitfield");
41978 }
41979 llvm_unreachable("invalid enum value");
41980}
41981#endif
41982#ifdef GET_LINK_IMPL
41983bool ByteCodeEmitter::emitPreDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
41984 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint8, A0, A1, L);
41985}
41986bool ByteCodeEmitter::emitPreDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
41987 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint8, A0, A1, L);
41988}
41989bool ByteCodeEmitter::emitPreDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
41990 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint16, A0, A1, L);
41991}
41992bool ByteCodeEmitter::emitPreDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
41993 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint16, A0, A1, L);
41994}
41995bool ByteCodeEmitter::emitPreDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
41996 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint32, A0, A1, L);
41997}
41998bool ByteCodeEmitter::emitPreDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
41999 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint32, A0, A1, L);
42000}
42001bool ByteCodeEmitter::emitPreDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
42002 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint64, A0, A1, L);
42003}
42004bool ByteCodeEmitter::emitPreDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
42005 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint64, A0, A1, L);
42006}
42007bool ByteCodeEmitter::emitPreDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
42008 return emitOp<bool, uint32_t>(OP_PreDecBitfieldIntAP, A0, A1, L);
42009}
42010bool ByteCodeEmitter::emitPreDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
42011 return emitOp<bool, uint32_t>(OP_PreDecBitfieldIntAPS, A0, A1, L);
42012}
42013bool ByteCodeEmitter::emitPreDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
42014 return emitOp<bool, uint32_t>(OP_PreDecBitfieldBool, A0, A1, L);
42015}
42016bool ByteCodeEmitter::emitPreDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
42017 return emitOp<bool, uint32_t>(OP_PreDecBitfieldFixedPoint, A0, A1, L);
42018}
42019#endif
42020#ifdef GET_EVAL_IMPL
42021bool EvalEmitter::emitPreDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
42022 if (!isActive()) return true;
42023 CurrentSource = L;
42024 return PreDecBitfield<PT_Sint8>(S, CodePtr(), A0, A1);
42025}
42026bool EvalEmitter::emitPreDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
42027 if (!isActive()) return true;
42028 CurrentSource = L;
42029 return PreDecBitfield<PT_Uint8>(S, CodePtr(), A0, A1);
42030}
42031bool EvalEmitter::emitPreDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
42032 if (!isActive()) return true;
42033 CurrentSource = L;
42034 return PreDecBitfield<PT_Sint16>(S, CodePtr(), A0, A1);
42035}
42036bool EvalEmitter::emitPreDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
42037 if (!isActive()) return true;
42038 CurrentSource = L;
42039 return PreDecBitfield<PT_Uint16>(S, CodePtr(), A0, A1);
42040}
42041bool EvalEmitter::emitPreDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
42042 if (!isActive()) return true;
42043 CurrentSource = L;
42044 return PreDecBitfield<PT_Sint32>(S, CodePtr(), A0, A1);
42045}
42046bool EvalEmitter::emitPreDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
42047 if (!isActive()) return true;
42048 CurrentSource = L;
42049 return PreDecBitfield<PT_Uint32>(S, CodePtr(), A0, A1);
42050}
42051bool EvalEmitter::emitPreDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
42052 if (!isActive()) return true;
42053 CurrentSource = L;
42054 return PreDecBitfield<PT_Sint64>(S, CodePtr(), A0, A1);
42055}
42056bool EvalEmitter::emitPreDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
42057 if (!isActive()) return true;
42058 CurrentSource = L;
42059 return PreDecBitfield<PT_Uint64>(S, CodePtr(), A0, A1);
42060}
42061bool EvalEmitter::emitPreDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
42062 if (!isActive()) return true;
42063 CurrentSource = L;
42064 return PreDecBitfield<PT_IntAP>(S, CodePtr(), A0, A1);
42065}
42066bool EvalEmitter::emitPreDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
42067 if (!isActive()) return true;
42068 CurrentSource = L;
42069 return PreDecBitfield<PT_IntAPS>(S, CodePtr(), A0, A1);
42070}
42071bool EvalEmitter::emitPreDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
42072 if (!isActive()) return true;
42073 CurrentSource = L;
42074 return PreDecBitfield<PT_Bool>(S, CodePtr(), A0, A1);
42075}
42076bool EvalEmitter::emitPreDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
42077 if (!isActive()) return true;
42078 CurrentSource = L;
42079 return PreDecBitfield<PT_FixedPoint>(S, CodePtr(), A0, A1);
42080}
42081#endif
42082#ifdef GET_OPCODE_NAMES
42083OP_PreIncSint8,
42084OP_PreIncUint8,
42085OP_PreIncSint16,
42086OP_PreIncUint16,
42087OP_PreIncSint32,
42088OP_PreIncUint32,
42089OP_PreIncSint64,
42090OP_PreIncUint64,
42091OP_PreIncIntAP,
42092OP_PreIncIntAPS,
42093OP_PreIncBool,
42094OP_PreIncFixedPoint,
42095#endif
42096#ifdef GET_INTERPFN_LIST
42097&Interp_PreIncSint8,
42098&Interp_PreIncUint8,
42099&Interp_PreIncSint16,
42100&Interp_PreIncUint16,
42101&Interp_PreIncSint32,
42102&Interp_PreIncUint32,
42103&Interp_PreIncSint64,
42104&Interp_PreIncUint64,
42105&Interp_PreIncIntAP,
42106&Interp_PreIncIntAPS,
42107&Interp_PreIncBool,
42108&Interp_PreIncFixedPoint,
42109#endif
42110#ifdef GET_INTERPFN_DISPATCHERS
42111PRESERVE_NONE
42112static bool Interp_PreIncSint8(InterpState &S) {
42113 {
42114 CodePtr OpPC = S.PC;
42115 const auto V0 = ReadArg<bool>(S, S.PC);
42116 if (!PreInc<PT_Sint8>(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_PreIncUint8(InterpState &S) {
42126 {
42127 CodePtr OpPC = S.PC;
42128 const auto V0 = ReadArg<bool>(S, S.PC);
42129 if (!PreInc<PT_Uint8>(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_PreIncSint16(InterpState &S) {
42139 {
42140 CodePtr OpPC = S.PC;
42141 const auto V0 = ReadArg<bool>(S, S.PC);
42142 if (!PreInc<PT_Sint16>(S, OpPC, V0)) return false;
42143 }
42144#if USE_TAILCALLS
42145 MUSTTAIL return InterpNext(S);
42146#else
42147 return true;
42148#endif
42149}
42150PRESERVE_NONE
42151static bool Interp_PreIncUint16(InterpState &S) {
42152 {
42153 CodePtr OpPC = S.PC;
42154 const auto V0 = ReadArg<bool>(S, S.PC);
42155 if (!PreInc<PT_Uint16>(S, OpPC, V0)) return false;
42156 }
42157#if USE_TAILCALLS
42158 MUSTTAIL return InterpNext(S);
42159#else
42160 return true;
42161#endif
42162}
42163PRESERVE_NONE
42164static bool Interp_PreIncSint32(InterpState &S) {
42165 {
42166 CodePtr OpPC = S.PC;
42167 const auto V0 = ReadArg<bool>(S, S.PC);
42168 if (!PreInc<PT_Sint32>(S, OpPC, V0)) return false;
42169 }
42170#if USE_TAILCALLS
42171 MUSTTAIL return InterpNext(S);
42172#else
42173 return true;
42174#endif
42175}
42176PRESERVE_NONE
42177static bool Interp_PreIncUint32(InterpState &S) {
42178 {
42179 CodePtr OpPC = S.PC;
42180 const auto V0 = ReadArg<bool>(S, S.PC);
42181 if (!PreInc<PT_Uint32>(S, OpPC, V0)) return false;
42182 }
42183#if USE_TAILCALLS
42184 MUSTTAIL return InterpNext(S);
42185#else
42186 return true;
42187#endif
42188}
42189PRESERVE_NONE
42190static bool Interp_PreIncSint64(InterpState &S) {
42191 {
42192 CodePtr OpPC = S.PC;
42193 const auto V0 = ReadArg<bool>(S, S.PC);
42194 if (!PreInc<PT_Sint64>(S, OpPC, V0)) return false;
42195 }
42196#if USE_TAILCALLS
42197 MUSTTAIL return InterpNext(S);
42198#else
42199 return true;
42200#endif
42201}
42202PRESERVE_NONE
42203static bool Interp_PreIncUint64(InterpState &S) {
42204 {
42205 CodePtr OpPC = S.PC;
42206 const auto V0 = ReadArg<bool>(S, S.PC);
42207 if (!PreInc<PT_Uint64>(S, OpPC, V0)) return false;
42208 }
42209#if USE_TAILCALLS
42210 MUSTTAIL return InterpNext(S);
42211#else
42212 return true;
42213#endif
42214}
42215PRESERVE_NONE
42216static bool Interp_PreIncIntAP(InterpState &S) {
42217 {
42218 CodePtr OpPC = S.PC;
42219 const auto V0 = ReadArg<bool>(S, S.PC);
42220 if (!PreInc<PT_IntAP>(S, OpPC, V0)) return false;
42221 }
42222#if USE_TAILCALLS
42223 MUSTTAIL return InterpNext(S);
42224#else
42225 return true;
42226#endif
42227}
42228PRESERVE_NONE
42229static bool Interp_PreIncIntAPS(InterpState &S) {
42230 {
42231 CodePtr OpPC = S.PC;
42232 const auto V0 = ReadArg<bool>(S, S.PC);
42233 if (!PreInc<PT_IntAPS>(S, OpPC, V0)) return false;
42234 }
42235#if USE_TAILCALLS
42236 MUSTTAIL return InterpNext(S);
42237#else
42238 return true;
42239#endif
42240}
42241PRESERVE_NONE
42242static bool Interp_PreIncBool(InterpState &S) {
42243 {
42244 CodePtr OpPC = S.PC;
42245 const auto V0 = ReadArg<bool>(S, S.PC);
42246 if (!PreInc<PT_Bool>(S, OpPC, V0)) return false;
42247 }
42248#if USE_TAILCALLS
42249 MUSTTAIL return InterpNext(S);
42250#else
42251 return true;
42252#endif
42253}
42254PRESERVE_NONE
42255static bool Interp_PreIncFixedPoint(InterpState &S) {
42256 {
42257 CodePtr OpPC = S.PC;
42258 const auto V0 = ReadArg<bool>(S, S.PC);
42259 if (!PreInc<PT_FixedPoint>(S, OpPC, V0)) return false;
42260 }
42261#if USE_TAILCALLS
42262 MUSTTAIL return InterpNext(S);
42263#else
42264 return true;
42265#endif
42266}
42267#endif
42268#ifdef GET_DISASM
42269case OP_PreIncSint8:
42270 Text.Op = PrintName("PreIncSint8");
42271 Text.Args.push_back(printArg<bool>(PC));
42272 break;
42273case OP_PreIncUint8:
42274 Text.Op = PrintName("PreIncUint8");
42275 Text.Args.push_back(printArg<bool>(PC));
42276 break;
42277case OP_PreIncSint16:
42278 Text.Op = PrintName("PreIncSint16");
42279 Text.Args.push_back(printArg<bool>(PC));
42280 break;
42281case OP_PreIncUint16:
42282 Text.Op = PrintName("PreIncUint16");
42283 Text.Args.push_back(printArg<bool>(PC));
42284 break;
42285case OP_PreIncSint32:
42286 Text.Op = PrintName("PreIncSint32");
42287 Text.Args.push_back(printArg<bool>(PC));
42288 break;
42289case OP_PreIncUint32:
42290 Text.Op = PrintName("PreIncUint32");
42291 Text.Args.push_back(printArg<bool>(PC));
42292 break;
42293case OP_PreIncSint64:
42294 Text.Op = PrintName("PreIncSint64");
42295 Text.Args.push_back(printArg<bool>(PC));
42296 break;
42297case OP_PreIncUint64:
42298 Text.Op = PrintName("PreIncUint64");
42299 Text.Args.push_back(printArg<bool>(PC));
42300 break;
42301case OP_PreIncIntAP:
42302 Text.Op = PrintName("PreIncIntAP");
42303 Text.Args.push_back(printArg<bool>(PC));
42304 break;
42305case OP_PreIncIntAPS:
42306 Text.Op = PrintName("PreIncIntAPS");
42307 Text.Args.push_back(printArg<bool>(PC));
42308 break;
42309case OP_PreIncBool:
42310 Text.Op = PrintName("PreIncBool");
42311 Text.Args.push_back(printArg<bool>(PC));
42312 break;
42313case OP_PreIncFixedPoint:
42314 Text.Op = PrintName("PreIncFixedPoint");
42315 Text.Args.push_back(printArg<bool>(PC));
42316 break;
42317#endif
42318#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42319bool emitPreIncSint8( bool , SourceInfo);
42320bool emitPreIncUint8( bool , SourceInfo);
42321bool emitPreIncSint16( bool , SourceInfo);
42322bool emitPreIncUint16( bool , SourceInfo);
42323bool emitPreIncSint32( bool , SourceInfo);
42324bool emitPreIncUint32( bool , SourceInfo);
42325bool emitPreIncSint64( bool , SourceInfo);
42326bool emitPreIncUint64( bool , SourceInfo);
42327bool emitPreIncIntAP( bool , SourceInfo);
42328bool emitPreIncIntAPS( bool , SourceInfo);
42329bool emitPreIncBool( bool , SourceInfo);
42330bool emitPreIncFixedPoint( bool , SourceInfo);
42331#endif
42332#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42333[[nodiscard]] bool emitPreInc(PrimType, bool, SourceInfo I);
42334#endif
42335#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
42336bool
42337#if defined(GET_EVAL_IMPL)
42338EvalEmitter
42339#else
42340ByteCodeEmitter
42341#endif
42342::emitPreInc(PrimType T0, bool A0, SourceInfo I) {
42343 switch (T0) {
42344 case PT_Sint8:
42345 return emitPreIncSint8(A0, I);
42346 case PT_Uint8:
42347 return emitPreIncUint8(A0, I);
42348 case PT_Sint16:
42349 return emitPreIncSint16(A0, I);
42350 case PT_Uint16:
42351 return emitPreIncUint16(A0, I);
42352 case PT_Sint32:
42353 return emitPreIncSint32(A0, I);
42354 case PT_Uint32:
42355 return emitPreIncUint32(A0, I);
42356 case PT_Sint64:
42357 return emitPreIncSint64(A0, I);
42358 case PT_Uint64:
42359 return emitPreIncUint64(A0, I);
42360 case PT_IntAP:
42361 return emitPreIncIntAP(A0, I);
42362 case PT_IntAPS:
42363 return emitPreIncIntAPS(A0, I);
42364 case PT_Bool:
42365 return emitPreIncBool(A0, I);
42366 case PT_FixedPoint:
42367 return emitPreIncFixedPoint(A0, I);
42368 default: llvm_unreachable("invalid type: emitPreInc");
42369 }
42370 llvm_unreachable("invalid enum value");
42371}
42372#endif
42373#ifdef GET_LINK_IMPL
42374bool ByteCodeEmitter::emitPreIncSint8( bool A0, SourceInfo L) {
42375 return emitOp<bool>(OP_PreIncSint8, A0, L);
42376}
42377bool ByteCodeEmitter::emitPreIncUint8( bool A0, SourceInfo L) {
42378 return emitOp<bool>(OP_PreIncUint8, A0, L);
42379}
42380bool ByteCodeEmitter::emitPreIncSint16( bool A0, SourceInfo L) {
42381 return emitOp<bool>(OP_PreIncSint16, A0, L);
42382}
42383bool ByteCodeEmitter::emitPreIncUint16( bool A0, SourceInfo L) {
42384 return emitOp<bool>(OP_PreIncUint16, A0, L);
42385}
42386bool ByteCodeEmitter::emitPreIncSint32( bool A0, SourceInfo L) {
42387 return emitOp<bool>(OP_PreIncSint32, A0, L);
42388}
42389bool ByteCodeEmitter::emitPreIncUint32( bool A0, SourceInfo L) {
42390 return emitOp<bool>(OP_PreIncUint32, A0, L);
42391}
42392bool ByteCodeEmitter::emitPreIncSint64( bool A0, SourceInfo L) {
42393 return emitOp<bool>(OP_PreIncSint64, A0, L);
42394}
42395bool ByteCodeEmitter::emitPreIncUint64( bool A0, SourceInfo L) {
42396 return emitOp<bool>(OP_PreIncUint64, A0, L);
42397}
42398bool ByteCodeEmitter::emitPreIncIntAP( bool A0, SourceInfo L) {
42399 return emitOp<bool>(OP_PreIncIntAP, A0, L);
42400}
42401bool ByteCodeEmitter::emitPreIncIntAPS( bool A0, SourceInfo L) {
42402 return emitOp<bool>(OP_PreIncIntAPS, A0, L);
42403}
42404bool ByteCodeEmitter::emitPreIncBool( bool A0, SourceInfo L) {
42405 return emitOp<bool>(OP_PreIncBool, A0, L);
42406}
42407bool ByteCodeEmitter::emitPreIncFixedPoint( bool A0, SourceInfo L) {
42408 return emitOp<bool>(OP_PreIncFixedPoint, A0, L);
42409}
42410#endif
42411#ifdef GET_EVAL_IMPL
42412bool EvalEmitter::emitPreIncSint8( bool A0, SourceInfo L) {
42413 if (!isActive()) return true;
42414 CurrentSource = L;
42415 return PreInc<PT_Sint8>(S, CodePtr(), A0);
42416}
42417bool EvalEmitter::emitPreIncUint8( bool A0, SourceInfo L) {
42418 if (!isActive()) return true;
42419 CurrentSource = L;
42420 return PreInc<PT_Uint8>(S, CodePtr(), A0);
42421}
42422bool EvalEmitter::emitPreIncSint16( bool A0, SourceInfo L) {
42423 if (!isActive()) return true;
42424 CurrentSource = L;
42425 return PreInc<PT_Sint16>(S, CodePtr(), A0);
42426}
42427bool EvalEmitter::emitPreIncUint16( bool A0, SourceInfo L) {
42428 if (!isActive()) return true;
42429 CurrentSource = L;
42430 return PreInc<PT_Uint16>(S, CodePtr(), A0);
42431}
42432bool EvalEmitter::emitPreIncSint32( bool A0, SourceInfo L) {
42433 if (!isActive()) return true;
42434 CurrentSource = L;
42435 return PreInc<PT_Sint32>(S, CodePtr(), A0);
42436}
42437bool EvalEmitter::emitPreIncUint32( bool A0, SourceInfo L) {
42438 if (!isActive()) return true;
42439 CurrentSource = L;
42440 return PreInc<PT_Uint32>(S, CodePtr(), A0);
42441}
42442bool EvalEmitter::emitPreIncSint64( bool A0, SourceInfo L) {
42443 if (!isActive()) return true;
42444 CurrentSource = L;
42445 return PreInc<PT_Sint64>(S, CodePtr(), A0);
42446}
42447bool EvalEmitter::emitPreIncUint64( bool A0, SourceInfo L) {
42448 if (!isActive()) return true;
42449 CurrentSource = L;
42450 return PreInc<PT_Uint64>(S, CodePtr(), A0);
42451}
42452bool EvalEmitter::emitPreIncIntAP( bool A0, SourceInfo L) {
42453 if (!isActive()) return true;
42454 CurrentSource = L;
42455 return PreInc<PT_IntAP>(S, CodePtr(), A0);
42456}
42457bool EvalEmitter::emitPreIncIntAPS( bool A0, SourceInfo L) {
42458 if (!isActive()) return true;
42459 CurrentSource = L;
42460 return PreInc<PT_IntAPS>(S, CodePtr(), A0);
42461}
42462bool EvalEmitter::emitPreIncBool( bool A0, SourceInfo L) {
42463 if (!isActive()) return true;
42464 CurrentSource = L;
42465 return PreInc<PT_Bool>(S, CodePtr(), A0);
42466}
42467bool EvalEmitter::emitPreIncFixedPoint( bool A0, SourceInfo L) {
42468 if (!isActive()) return true;
42469 CurrentSource = L;
42470 return PreInc<PT_FixedPoint>(S, CodePtr(), A0);
42471}
42472#endif
42473#ifdef GET_OPCODE_NAMES
42474OP_PreIncBitfieldSint8,
42475OP_PreIncBitfieldUint8,
42476OP_PreIncBitfieldSint16,
42477OP_PreIncBitfieldUint16,
42478OP_PreIncBitfieldSint32,
42479OP_PreIncBitfieldUint32,
42480OP_PreIncBitfieldSint64,
42481OP_PreIncBitfieldUint64,
42482OP_PreIncBitfieldIntAP,
42483OP_PreIncBitfieldIntAPS,
42484OP_PreIncBitfieldBool,
42485OP_PreIncBitfieldFixedPoint,
42486#endif
42487#ifdef GET_INTERPFN_LIST
42488&Interp_PreIncBitfieldSint8,
42489&Interp_PreIncBitfieldUint8,
42490&Interp_PreIncBitfieldSint16,
42491&Interp_PreIncBitfieldUint16,
42492&Interp_PreIncBitfieldSint32,
42493&Interp_PreIncBitfieldUint32,
42494&Interp_PreIncBitfieldSint64,
42495&Interp_PreIncBitfieldUint64,
42496&Interp_PreIncBitfieldIntAP,
42497&Interp_PreIncBitfieldIntAPS,
42498&Interp_PreIncBitfieldBool,
42499&Interp_PreIncBitfieldFixedPoint,
42500#endif
42501#ifdef GET_INTERPFN_DISPATCHERS
42502PRESERVE_NONE
42503static bool Interp_PreIncBitfieldSint8(InterpState &S) {
42504 {
42505 CodePtr OpPC = S.PC;
42506 const auto V0 = ReadArg<bool>(S, S.PC);
42507 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42508 if (!PreIncBitfield<PT_Sint8>(S, OpPC, V0, V1)) return false;
42509 }
42510#if USE_TAILCALLS
42511 MUSTTAIL return InterpNext(S);
42512#else
42513 return true;
42514#endif
42515}
42516PRESERVE_NONE
42517static bool Interp_PreIncBitfieldUint8(InterpState &S) {
42518 {
42519 CodePtr OpPC = S.PC;
42520 const auto V0 = ReadArg<bool>(S, S.PC);
42521 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42522 if (!PreIncBitfield<PT_Uint8>(S, OpPC, V0, V1)) return false;
42523 }
42524#if USE_TAILCALLS
42525 MUSTTAIL return InterpNext(S);
42526#else
42527 return true;
42528#endif
42529}
42530PRESERVE_NONE
42531static bool Interp_PreIncBitfieldSint16(InterpState &S) {
42532 {
42533 CodePtr OpPC = S.PC;
42534 const auto V0 = ReadArg<bool>(S, S.PC);
42535 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42536 if (!PreIncBitfield<PT_Sint16>(S, OpPC, V0, V1)) return false;
42537 }
42538#if USE_TAILCALLS
42539 MUSTTAIL return InterpNext(S);
42540#else
42541 return true;
42542#endif
42543}
42544PRESERVE_NONE
42545static bool Interp_PreIncBitfieldUint16(InterpState &S) {
42546 {
42547 CodePtr OpPC = S.PC;
42548 const auto V0 = ReadArg<bool>(S, S.PC);
42549 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42550 if (!PreIncBitfield<PT_Uint16>(S, OpPC, V0, V1)) return false;
42551 }
42552#if USE_TAILCALLS
42553 MUSTTAIL return InterpNext(S);
42554#else
42555 return true;
42556#endif
42557}
42558PRESERVE_NONE
42559static bool Interp_PreIncBitfieldSint32(InterpState &S) {
42560 {
42561 CodePtr OpPC = S.PC;
42562 const auto V0 = ReadArg<bool>(S, S.PC);
42563 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42564 if (!PreIncBitfield<PT_Sint32>(S, OpPC, V0, V1)) return false;
42565 }
42566#if USE_TAILCALLS
42567 MUSTTAIL return InterpNext(S);
42568#else
42569 return true;
42570#endif
42571}
42572PRESERVE_NONE
42573static bool Interp_PreIncBitfieldUint32(InterpState &S) {
42574 {
42575 CodePtr OpPC = S.PC;
42576 const auto V0 = ReadArg<bool>(S, S.PC);
42577 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42578 if (!PreIncBitfield<PT_Uint32>(S, OpPC, V0, V1)) return false;
42579 }
42580#if USE_TAILCALLS
42581 MUSTTAIL return InterpNext(S);
42582#else
42583 return true;
42584#endif
42585}
42586PRESERVE_NONE
42587static bool Interp_PreIncBitfieldSint64(InterpState &S) {
42588 {
42589 CodePtr OpPC = S.PC;
42590 const auto V0 = ReadArg<bool>(S, S.PC);
42591 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42592 if (!PreIncBitfield<PT_Sint64>(S, OpPC, V0, V1)) return false;
42593 }
42594#if USE_TAILCALLS
42595 MUSTTAIL return InterpNext(S);
42596#else
42597 return true;
42598#endif
42599}
42600PRESERVE_NONE
42601static bool Interp_PreIncBitfieldUint64(InterpState &S) {
42602 {
42603 CodePtr OpPC = S.PC;
42604 const auto V0 = ReadArg<bool>(S, S.PC);
42605 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42606 if (!PreIncBitfield<PT_Uint64>(S, OpPC, V0, V1)) return false;
42607 }
42608#if USE_TAILCALLS
42609 MUSTTAIL return InterpNext(S);
42610#else
42611 return true;
42612#endif
42613}
42614PRESERVE_NONE
42615static bool Interp_PreIncBitfieldIntAP(InterpState &S) {
42616 {
42617 CodePtr OpPC = S.PC;
42618 const auto V0 = ReadArg<bool>(S, S.PC);
42619 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42620 if (!PreIncBitfield<PT_IntAP>(S, OpPC, V0, V1)) return false;
42621 }
42622#if USE_TAILCALLS
42623 MUSTTAIL return InterpNext(S);
42624#else
42625 return true;
42626#endif
42627}
42628PRESERVE_NONE
42629static bool Interp_PreIncBitfieldIntAPS(InterpState &S) {
42630 {
42631 CodePtr OpPC = S.PC;
42632 const auto V0 = ReadArg<bool>(S, S.PC);
42633 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42634 if (!PreIncBitfield<PT_IntAPS>(S, OpPC, V0, V1)) return false;
42635 }
42636#if USE_TAILCALLS
42637 MUSTTAIL return InterpNext(S);
42638#else
42639 return true;
42640#endif
42641}
42642PRESERVE_NONE
42643static bool Interp_PreIncBitfieldBool(InterpState &S) {
42644 {
42645 CodePtr OpPC = S.PC;
42646 const auto V0 = ReadArg<bool>(S, S.PC);
42647 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42648 if (!PreIncBitfield<PT_Bool>(S, OpPC, V0, V1)) return false;
42649 }
42650#if USE_TAILCALLS
42651 MUSTTAIL return InterpNext(S);
42652#else
42653 return true;
42654#endif
42655}
42656PRESERVE_NONE
42657static bool Interp_PreIncBitfieldFixedPoint(InterpState &S) {
42658 {
42659 CodePtr OpPC = S.PC;
42660 const auto V0 = ReadArg<bool>(S, S.PC);
42661 const auto V1 = ReadArg<uint32_t>(S, S.PC);
42662 if (!PreIncBitfield<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
42663 }
42664#if USE_TAILCALLS
42665 MUSTTAIL return InterpNext(S);
42666#else
42667 return true;
42668#endif
42669}
42670#endif
42671#ifdef GET_DISASM
42672case OP_PreIncBitfieldSint8:
42673 Text.Op = PrintName("PreIncBitfieldSint8");
42674 Text.Args.push_back(printArg<bool>(PC));
42675 Text.Args.push_back(printArg<uint32_t>(PC));
42676 break;
42677case OP_PreIncBitfieldUint8:
42678 Text.Op = PrintName("PreIncBitfieldUint8");
42679 Text.Args.push_back(printArg<bool>(PC));
42680 Text.Args.push_back(printArg<uint32_t>(PC));
42681 break;
42682case OP_PreIncBitfieldSint16:
42683 Text.Op = PrintName("PreIncBitfieldSint16");
42684 Text.Args.push_back(printArg<bool>(PC));
42685 Text.Args.push_back(printArg<uint32_t>(PC));
42686 break;
42687case OP_PreIncBitfieldUint16:
42688 Text.Op = PrintName("PreIncBitfieldUint16");
42689 Text.Args.push_back(printArg<bool>(PC));
42690 Text.Args.push_back(printArg<uint32_t>(PC));
42691 break;
42692case OP_PreIncBitfieldSint32:
42693 Text.Op = PrintName("PreIncBitfieldSint32");
42694 Text.Args.push_back(printArg<bool>(PC));
42695 Text.Args.push_back(printArg<uint32_t>(PC));
42696 break;
42697case OP_PreIncBitfieldUint32:
42698 Text.Op = PrintName("PreIncBitfieldUint32");
42699 Text.Args.push_back(printArg<bool>(PC));
42700 Text.Args.push_back(printArg<uint32_t>(PC));
42701 break;
42702case OP_PreIncBitfieldSint64:
42703 Text.Op = PrintName("PreIncBitfieldSint64");
42704 Text.Args.push_back(printArg<bool>(PC));
42705 Text.Args.push_back(printArg<uint32_t>(PC));
42706 break;
42707case OP_PreIncBitfieldUint64:
42708 Text.Op = PrintName("PreIncBitfieldUint64");
42709 Text.Args.push_back(printArg<bool>(PC));
42710 Text.Args.push_back(printArg<uint32_t>(PC));
42711 break;
42712case OP_PreIncBitfieldIntAP:
42713 Text.Op = PrintName("PreIncBitfieldIntAP");
42714 Text.Args.push_back(printArg<bool>(PC));
42715 Text.Args.push_back(printArg<uint32_t>(PC));
42716 break;
42717case OP_PreIncBitfieldIntAPS:
42718 Text.Op = PrintName("PreIncBitfieldIntAPS");
42719 Text.Args.push_back(printArg<bool>(PC));
42720 Text.Args.push_back(printArg<uint32_t>(PC));
42721 break;
42722case OP_PreIncBitfieldBool:
42723 Text.Op = PrintName("PreIncBitfieldBool");
42724 Text.Args.push_back(printArg<bool>(PC));
42725 Text.Args.push_back(printArg<uint32_t>(PC));
42726 break;
42727case OP_PreIncBitfieldFixedPoint:
42728 Text.Op = PrintName("PreIncBitfieldFixedPoint");
42729 Text.Args.push_back(printArg<bool>(PC));
42730 Text.Args.push_back(printArg<uint32_t>(PC));
42731 break;
42732#endif
42733#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42734bool emitPreIncBitfieldSint8( bool , uint32_t , SourceInfo);
42735bool emitPreIncBitfieldUint8( bool , uint32_t , SourceInfo);
42736bool emitPreIncBitfieldSint16( bool , uint32_t , SourceInfo);
42737bool emitPreIncBitfieldUint16( bool , uint32_t , SourceInfo);
42738bool emitPreIncBitfieldSint32( bool , uint32_t , SourceInfo);
42739bool emitPreIncBitfieldUint32( bool , uint32_t , SourceInfo);
42740bool emitPreIncBitfieldSint64( bool , uint32_t , SourceInfo);
42741bool emitPreIncBitfieldUint64( bool , uint32_t , SourceInfo);
42742bool emitPreIncBitfieldIntAP( bool , uint32_t , SourceInfo);
42743bool emitPreIncBitfieldIntAPS( bool , uint32_t , SourceInfo);
42744bool emitPreIncBitfieldBool( bool , uint32_t , SourceInfo);
42745bool emitPreIncBitfieldFixedPoint( bool , uint32_t , SourceInfo);
42746#endif
42747#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42748[[nodiscard]] bool emitPreIncBitfield(PrimType, bool, uint32_t, SourceInfo I);
42749#endif
42750#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
42751bool
42752#if defined(GET_EVAL_IMPL)
42753EvalEmitter
42754#else
42755ByteCodeEmitter
42756#endif
42757::emitPreIncBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
42758 switch (T0) {
42759 case PT_Sint8:
42760 return emitPreIncBitfieldSint8(A0, A1, I);
42761 case PT_Uint8:
42762 return emitPreIncBitfieldUint8(A0, A1, I);
42763 case PT_Sint16:
42764 return emitPreIncBitfieldSint16(A0, A1, I);
42765 case PT_Uint16:
42766 return emitPreIncBitfieldUint16(A0, A1, I);
42767 case PT_Sint32:
42768 return emitPreIncBitfieldSint32(A0, A1, I);
42769 case PT_Uint32:
42770 return emitPreIncBitfieldUint32(A0, A1, I);
42771 case PT_Sint64:
42772 return emitPreIncBitfieldSint64(A0, A1, I);
42773 case PT_Uint64:
42774 return emitPreIncBitfieldUint64(A0, A1, I);
42775 case PT_IntAP:
42776 return emitPreIncBitfieldIntAP(A0, A1, I);
42777 case PT_IntAPS:
42778 return emitPreIncBitfieldIntAPS(A0, A1, I);
42779 case PT_Bool:
42780 return emitPreIncBitfieldBool(A0, A1, I);
42781 case PT_FixedPoint:
42782 return emitPreIncBitfieldFixedPoint(A0, A1, I);
42783 default: llvm_unreachable("invalid type: emitPreIncBitfield");
42784 }
42785 llvm_unreachable("invalid enum value");
42786}
42787#endif
42788#ifdef GET_LINK_IMPL
42789bool ByteCodeEmitter::emitPreIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
42790 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint8, A0, A1, L);
42791}
42792bool ByteCodeEmitter::emitPreIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
42793 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint8, A0, A1, L);
42794}
42795bool ByteCodeEmitter::emitPreIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
42796 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint16, A0, A1, L);
42797}
42798bool ByteCodeEmitter::emitPreIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
42799 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint16, A0, A1, L);
42800}
42801bool ByteCodeEmitter::emitPreIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
42802 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint32, A0, A1, L);
42803}
42804bool ByteCodeEmitter::emitPreIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
42805 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint32, A0, A1, L);
42806}
42807bool ByteCodeEmitter::emitPreIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
42808 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint64, A0, A1, L);
42809}
42810bool ByteCodeEmitter::emitPreIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
42811 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint64, A0, A1, L);
42812}
42813bool ByteCodeEmitter::emitPreIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
42814 return emitOp<bool, uint32_t>(OP_PreIncBitfieldIntAP, A0, A1, L);
42815}
42816bool ByteCodeEmitter::emitPreIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
42817 return emitOp<bool, uint32_t>(OP_PreIncBitfieldIntAPS, A0, A1, L);
42818}
42819bool ByteCodeEmitter::emitPreIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
42820 return emitOp<bool, uint32_t>(OP_PreIncBitfieldBool, A0, A1, L);
42821}
42822bool ByteCodeEmitter::emitPreIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
42823 return emitOp<bool, uint32_t>(OP_PreIncBitfieldFixedPoint, A0, A1, L);
42824}
42825#endif
42826#ifdef GET_EVAL_IMPL
42827bool EvalEmitter::emitPreIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
42828 if (!isActive()) return true;
42829 CurrentSource = L;
42830 return PreIncBitfield<PT_Sint8>(S, CodePtr(), A0, A1);
42831}
42832bool EvalEmitter::emitPreIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
42833 if (!isActive()) return true;
42834 CurrentSource = L;
42835 return PreIncBitfield<PT_Uint8>(S, CodePtr(), A0, A1);
42836}
42837bool EvalEmitter::emitPreIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
42838 if (!isActive()) return true;
42839 CurrentSource = L;
42840 return PreIncBitfield<PT_Sint16>(S, CodePtr(), A0, A1);
42841}
42842bool EvalEmitter::emitPreIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
42843 if (!isActive()) return true;
42844 CurrentSource = L;
42845 return PreIncBitfield<PT_Uint16>(S, CodePtr(), A0, A1);
42846}
42847bool EvalEmitter::emitPreIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
42848 if (!isActive()) return true;
42849 CurrentSource = L;
42850 return PreIncBitfield<PT_Sint32>(S, CodePtr(), A0, A1);
42851}
42852bool EvalEmitter::emitPreIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
42853 if (!isActive()) return true;
42854 CurrentSource = L;
42855 return PreIncBitfield<PT_Uint32>(S, CodePtr(), A0, A1);
42856}
42857bool EvalEmitter::emitPreIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
42858 if (!isActive()) return true;
42859 CurrentSource = L;
42860 return PreIncBitfield<PT_Sint64>(S, CodePtr(), A0, A1);
42861}
42862bool EvalEmitter::emitPreIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
42863 if (!isActive()) return true;
42864 CurrentSource = L;
42865 return PreIncBitfield<PT_Uint64>(S, CodePtr(), A0, A1);
42866}
42867bool EvalEmitter::emitPreIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
42868 if (!isActive()) return true;
42869 CurrentSource = L;
42870 return PreIncBitfield<PT_IntAP>(S, CodePtr(), A0, A1);
42871}
42872bool EvalEmitter::emitPreIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
42873 if (!isActive()) return true;
42874 CurrentSource = L;
42875 return PreIncBitfield<PT_IntAPS>(S, CodePtr(), A0, A1);
42876}
42877bool EvalEmitter::emitPreIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
42878 if (!isActive()) return true;
42879 CurrentSource = L;
42880 return PreIncBitfield<PT_Bool>(S, CodePtr(), A0, A1);
42881}
42882bool EvalEmitter::emitPreIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
42883 if (!isActive()) return true;
42884 CurrentSource = L;
42885 return PreIncBitfield<PT_FixedPoint>(S, CodePtr(), A0, A1);
42886}
42887#endif
42888#ifdef GET_OPCODE_NAMES
42889OP_PseudoDtor,
42890#endif
42891#ifdef GET_INTERPFN_LIST
42892&Interp_PseudoDtor,
42893#endif
42894#ifdef GET_INTERPFN_DISPATCHERS
42895PRESERVE_NONE
42896static bool Interp_PseudoDtor(InterpState &S) {
42897 if (!PseudoDtor(S, S.PC)) return false;
42898#if USE_TAILCALLS
42899 MUSTTAIL return InterpNext(S);
42900#else
42901 return true;
42902#endif
42903}
42904#endif
42905#ifdef GET_DISASM
42906case OP_PseudoDtor:
42907 Text.Op = PrintName("PseudoDtor");
42908 break;
42909#endif
42910#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42911bool emitPseudoDtor(SourceInfo);
42912#endif
42913#ifdef GET_LINK_IMPL
42914bool ByteCodeEmitter::emitPseudoDtor(SourceInfo L) {
42915 return emitOp<>(OP_PseudoDtor, L);
42916}
42917#endif
42918#ifdef GET_EVAL_IMPL
42919bool EvalEmitter::emitPseudoDtor(SourceInfo L) {
42920 if (!isActive()) return true;
42921 CurrentSource = L;
42922 return PseudoDtor(S, CodePtr());
42923}
42924#endif
42925#ifdef GET_OPCODE_NAMES
42926OP_PtrPtrCast,
42927#endif
42928#ifdef GET_INTERPFN_LIST
42929&Interp_PtrPtrCast,
42930#endif
42931#ifdef GET_INTERPFN_DISPATCHERS
42932PRESERVE_NONE
42933static bool Interp_PtrPtrCast(InterpState &S) {
42934 {
42935 CodePtr OpPC = S.PC;
42936 const auto V0 = ReadArg<bool>(S, S.PC);
42937 const auto V1 = ReadArg<const Type *>(S, S.PC);
42938 if (!PtrPtrCast(S, OpPC, V0, V1)) return false;
42939 }
42940#if USE_TAILCALLS
42941 MUSTTAIL return InterpNext(S);
42942#else
42943 return true;
42944#endif
42945}
42946#endif
42947#ifdef GET_DISASM
42948case OP_PtrPtrCast:
42949 Text.Op = PrintName("PtrPtrCast");
42950 Text.Args.push_back(printArg<bool>(PC));
42951 Text.Args.push_back(printArg<const Type *>(PC));
42952 break;
42953#endif
42954#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42955bool emitPtrPtrCast( bool , const Type * , SourceInfo);
42956#endif
42957#ifdef GET_LINK_IMPL
42958bool ByteCodeEmitter::emitPtrPtrCast( bool A0, const Type * A1, SourceInfo L) {
42959 return emitOp<bool, const Type *>(OP_PtrPtrCast, A0, A1, L);
42960}
42961#endif
42962#ifdef GET_EVAL_IMPL
42963bool EvalEmitter::emitPtrPtrCast( bool A0, const Type * A1, SourceInfo L) {
42964 if (!isActive()) return true;
42965 CurrentSource = L;
42966 return PtrPtrCast(S, CodePtr(), A0, A1);
42967}
42968#endif
42969#ifdef GET_OPCODE_NAMES
42970OP_PushCC,
42971#endif
42972#ifdef GET_INTERPFN_LIST
42973&Interp_PushCC,
42974#endif
42975#ifdef GET_INTERPFN_DISPATCHERS
42976PRESERVE_NONE
42977static bool Interp_PushCC(InterpState &S) {
42978 {
42979 const auto V0 = ReadArg<bool>(S, S.PC);
42980 PushCC(S, V0);
42981 }
42982#if USE_TAILCALLS
42983 MUSTTAIL return InterpNext(S);
42984#else
42985 return true;
42986#endif
42987}
42988#endif
42989#ifdef GET_DISASM
42990case OP_PushCC:
42991 Text.Op = PrintName("PushCC");
42992 Text.Args.push_back(printArg<bool>(PC));
42993 break;
42994#endif
42995#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42996bool emitPushCC( bool , SourceInfo);
42997#endif
42998#ifdef GET_LINK_IMPL
42999bool ByteCodeEmitter::emitPushCC( bool A0, SourceInfo L) {
43000 return emitOp<bool>(OP_PushCC, A0, L);
43001}
43002#endif
43003#ifdef GET_EVAL_IMPL
43004bool EvalEmitter::emitPushCC( bool A0, SourceInfo L) {
43005 if (!isActive()) return true;
43006 CurrentSource = L;
43007 return PushCC(S, A0);
43008}
43009#endif
43010#ifdef GET_OPCODE_NAMES
43011OP_PushIgnoreDiags,
43012#endif
43013#ifdef GET_INTERPFN_LIST
43014&Interp_PushIgnoreDiags,
43015#endif
43016#ifdef GET_INTERPFN_DISPATCHERS
43017PRESERVE_NONE
43018static bool Interp_PushIgnoreDiags(InterpState &S) {
43019 PushIgnoreDiags(S);
43020#if USE_TAILCALLS
43021 MUSTTAIL return InterpNext(S);
43022#else
43023 return true;
43024#endif
43025}
43026#endif
43027#ifdef GET_DISASM
43028case OP_PushIgnoreDiags:
43029 Text.Op = PrintName("PushIgnoreDiags");
43030 break;
43031#endif
43032#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43033bool emitPushIgnoreDiags(SourceInfo);
43034#endif
43035#ifdef GET_LINK_IMPL
43036bool ByteCodeEmitter::emitPushIgnoreDiags(SourceInfo L) {
43037 return emitOp<>(OP_PushIgnoreDiags, L);
43038}
43039#endif
43040#ifdef GET_EVAL_IMPL
43041bool EvalEmitter::emitPushIgnoreDiags(SourceInfo L) {
43042 if (!isActive()) return true;
43043 CurrentSource = L;
43044 return PushIgnoreDiags(S);
43045}
43046#endif
43047#ifdef GET_OPCODE_NAMES
43048OP_PushMSVCCE,
43049#endif
43050#ifdef GET_INTERPFN_LIST
43051&Interp_PushMSVCCE,
43052#endif
43053#ifdef GET_INTERPFN_DISPATCHERS
43054PRESERVE_NONE
43055static bool Interp_PushMSVCCE(InterpState &S) {
43056 PushMSVCCE(S);
43057#if USE_TAILCALLS
43058 MUSTTAIL return InterpNext(S);
43059#else
43060 return true;
43061#endif
43062}
43063#endif
43064#ifdef GET_DISASM
43065case OP_PushMSVCCE:
43066 Text.Op = PrintName("PushMSVCCE");
43067 break;
43068#endif
43069#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43070bool emitPushMSVCCE(SourceInfo);
43071#endif
43072#ifdef GET_LINK_IMPL
43073bool ByteCodeEmitter::emitPushMSVCCE(SourceInfo L) {
43074 return emitOp<>(OP_PushMSVCCE, L);
43075}
43076#endif
43077#ifdef GET_EVAL_IMPL
43078bool EvalEmitter::emitPushMSVCCE(SourceInfo L) {
43079 if (!isActive()) return true;
43080 CurrentSource = L;
43081 return PushMSVCCE(S);
43082}
43083#endif
43084#ifdef GET_OPCODE_NAMES
43085OP_RVOPtr,
43086#endif
43087#ifdef GET_INTERPFN_LIST
43088&Interp_RVOPtr,
43089#endif
43090#ifdef GET_INTERPFN_DISPATCHERS
43091PRESERVE_NONE
43092static bool Interp_RVOPtr(InterpState &S) {
43093 if (!RVOPtr(S)) return false;
43094#if USE_TAILCALLS
43095 MUSTTAIL return InterpNext(S);
43096#else
43097 return true;
43098#endif
43099}
43100#endif
43101#ifdef GET_DISASM
43102case OP_RVOPtr:
43103 Text.Op = PrintName("RVOPtr");
43104 break;
43105#endif
43106#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43107bool emitRVOPtr(SourceInfo);
43108#endif
43109#ifdef GET_LINK_IMPL
43110bool ByteCodeEmitter::emitRVOPtr(SourceInfo L) {
43111 return emitOp<>(OP_RVOPtr, L);
43112}
43113#endif
43114#ifdef GET_EVAL_IMPL
43115bool EvalEmitter::emitRVOPtr(SourceInfo L) {
43116 if (!isActive()) return true;
43117 CurrentSource = L;
43118 return RVOPtr(S);
43119}
43120#endif
43121#ifdef GET_OPCODE_NAMES
43122OP_RemSint8,
43123OP_RemUint8,
43124OP_RemSint16,
43125OP_RemUint16,
43126OP_RemSint32,
43127OP_RemUint32,
43128OP_RemSint64,
43129OP_RemUint64,
43130OP_RemIntAP,
43131OP_RemIntAPS,
43132OP_RemFixedPoint,
43133#endif
43134#ifdef GET_INTERPFN_LIST
43135&Interp_RemSint8,
43136&Interp_RemUint8,
43137&Interp_RemSint16,
43138&Interp_RemUint16,
43139&Interp_RemSint32,
43140&Interp_RemUint32,
43141&Interp_RemSint64,
43142&Interp_RemUint64,
43143&Interp_RemIntAP,
43144&Interp_RemIntAPS,
43145&Interp_RemFixedPoint,
43146#endif
43147#ifdef GET_INTERPFN_DISPATCHERS
43148PRESERVE_NONE
43149static bool Interp_RemSint8(InterpState &S) {
43150 if (!Rem<PT_Sint8>(S, S.PC)) return false;
43151#if USE_TAILCALLS
43152 MUSTTAIL return InterpNext(S);
43153#else
43154 return true;
43155#endif
43156}
43157PRESERVE_NONE
43158static bool Interp_RemUint8(InterpState &S) {
43159 if (!Rem<PT_Uint8>(S, S.PC)) return false;
43160#if USE_TAILCALLS
43161 MUSTTAIL return InterpNext(S);
43162#else
43163 return true;
43164#endif
43165}
43166PRESERVE_NONE
43167static bool Interp_RemSint16(InterpState &S) {
43168 if (!Rem<PT_Sint16>(S, S.PC)) return false;
43169#if USE_TAILCALLS
43170 MUSTTAIL return InterpNext(S);
43171#else
43172 return true;
43173#endif
43174}
43175PRESERVE_NONE
43176static bool Interp_RemUint16(InterpState &S) {
43177 if (!Rem<PT_Uint16>(S, S.PC)) return false;
43178#if USE_TAILCALLS
43179 MUSTTAIL return InterpNext(S);
43180#else
43181 return true;
43182#endif
43183}
43184PRESERVE_NONE
43185static bool Interp_RemSint32(InterpState &S) {
43186 if (!Rem<PT_Sint32>(S, S.PC)) return false;
43187#if USE_TAILCALLS
43188 MUSTTAIL return InterpNext(S);
43189#else
43190 return true;
43191#endif
43192}
43193PRESERVE_NONE
43194static bool Interp_RemUint32(InterpState &S) {
43195 if (!Rem<PT_Uint32>(S, S.PC)) return false;
43196#if USE_TAILCALLS
43197 MUSTTAIL return InterpNext(S);
43198#else
43199 return true;
43200#endif
43201}
43202PRESERVE_NONE
43203static bool Interp_RemSint64(InterpState &S) {
43204 if (!Rem<PT_Sint64>(S, S.PC)) return false;
43205#if USE_TAILCALLS
43206 MUSTTAIL return InterpNext(S);
43207#else
43208 return true;
43209#endif
43210}
43211PRESERVE_NONE
43212static bool Interp_RemUint64(InterpState &S) {
43213 if (!Rem<PT_Uint64>(S, S.PC)) return false;
43214#if USE_TAILCALLS
43215 MUSTTAIL return InterpNext(S);
43216#else
43217 return true;
43218#endif
43219}
43220PRESERVE_NONE
43221static bool Interp_RemIntAP(InterpState &S) {
43222 if (!Rem<PT_IntAP>(S, S.PC)) return false;
43223#if USE_TAILCALLS
43224 MUSTTAIL return InterpNext(S);
43225#else
43226 return true;
43227#endif
43228}
43229PRESERVE_NONE
43230static bool Interp_RemIntAPS(InterpState &S) {
43231 if (!Rem<PT_IntAPS>(S, S.PC)) return false;
43232#if USE_TAILCALLS
43233 MUSTTAIL return InterpNext(S);
43234#else
43235 return true;
43236#endif
43237}
43238PRESERVE_NONE
43239static bool Interp_RemFixedPoint(InterpState &S) {
43240 if (!Rem<PT_FixedPoint>(S, S.PC)) return false;
43241#if USE_TAILCALLS
43242 MUSTTAIL return InterpNext(S);
43243#else
43244 return true;
43245#endif
43246}
43247#endif
43248#ifdef GET_DISASM
43249case OP_RemSint8:
43250 Text.Op = PrintName("RemSint8");
43251 break;
43252case OP_RemUint8:
43253 Text.Op = PrintName("RemUint8");
43254 break;
43255case OP_RemSint16:
43256 Text.Op = PrintName("RemSint16");
43257 break;
43258case OP_RemUint16:
43259 Text.Op = PrintName("RemUint16");
43260 break;
43261case OP_RemSint32:
43262 Text.Op = PrintName("RemSint32");
43263 break;
43264case OP_RemUint32:
43265 Text.Op = PrintName("RemUint32");
43266 break;
43267case OP_RemSint64:
43268 Text.Op = PrintName("RemSint64");
43269 break;
43270case OP_RemUint64:
43271 Text.Op = PrintName("RemUint64");
43272 break;
43273case OP_RemIntAP:
43274 Text.Op = PrintName("RemIntAP");
43275 break;
43276case OP_RemIntAPS:
43277 Text.Op = PrintName("RemIntAPS");
43278 break;
43279case OP_RemFixedPoint:
43280 Text.Op = PrintName("RemFixedPoint");
43281 break;
43282#endif
43283#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43284bool emitRemSint8(SourceInfo);
43285bool emitRemUint8(SourceInfo);
43286bool emitRemSint16(SourceInfo);
43287bool emitRemUint16(SourceInfo);
43288bool emitRemSint32(SourceInfo);
43289bool emitRemUint32(SourceInfo);
43290bool emitRemSint64(SourceInfo);
43291bool emitRemUint64(SourceInfo);
43292bool emitRemIntAP(SourceInfo);
43293bool emitRemIntAPS(SourceInfo);
43294bool emitRemFixedPoint(SourceInfo);
43295#endif
43296#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43297[[nodiscard]] bool emitRem(PrimType, SourceInfo I);
43298#endif
43299#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
43300bool
43301#if defined(GET_EVAL_IMPL)
43302EvalEmitter
43303#else
43304ByteCodeEmitter
43305#endif
43306::emitRem(PrimType T0, SourceInfo I) {
43307 switch (T0) {
43308 case PT_Sint8:
43309 return emitRemSint8(I);
43310 case PT_Uint8:
43311 return emitRemUint8(I);
43312 case PT_Sint16:
43313 return emitRemSint16(I);
43314 case PT_Uint16:
43315 return emitRemUint16(I);
43316 case PT_Sint32:
43317 return emitRemSint32(I);
43318 case PT_Uint32:
43319 return emitRemUint32(I);
43320 case PT_Sint64:
43321 return emitRemSint64(I);
43322 case PT_Uint64:
43323 return emitRemUint64(I);
43324 case PT_IntAP:
43325 return emitRemIntAP(I);
43326 case PT_IntAPS:
43327 return emitRemIntAPS(I);
43328 case PT_FixedPoint:
43329 return emitRemFixedPoint(I);
43330 default: llvm_unreachable("invalid type: emitRem");
43331 }
43332 llvm_unreachable("invalid enum value");
43333}
43334#endif
43335#ifdef GET_LINK_IMPL
43336bool ByteCodeEmitter::emitRemSint8(SourceInfo L) {
43337 return emitOp<>(OP_RemSint8, L);
43338}
43339bool ByteCodeEmitter::emitRemUint8(SourceInfo L) {
43340 return emitOp<>(OP_RemUint8, L);
43341}
43342bool ByteCodeEmitter::emitRemSint16(SourceInfo L) {
43343 return emitOp<>(OP_RemSint16, L);
43344}
43345bool ByteCodeEmitter::emitRemUint16(SourceInfo L) {
43346 return emitOp<>(OP_RemUint16, L);
43347}
43348bool ByteCodeEmitter::emitRemSint32(SourceInfo L) {
43349 return emitOp<>(OP_RemSint32, L);
43350}
43351bool ByteCodeEmitter::emitRemUint32(SourceInfo L) {
43352 return emitOp<>(OP_RemUint32, L);
43353}
43354bool ByteCodeEmitter::emitRemSint64(SourceInfo L) {
43355 return emitOp<>(OP_RemSint64, L);
43356}
43357bool ByteCodeEmitter::emitRemUint64(SourceInfo L) {
43358 return emitOp<>(OP_RemUint64, L);
43359}
43360bool ByteCodeEmitter::emitRemIntAP(SourceInfo L) {
43361 return emitOp<>(OP_RemIntAP, L);
43362}
43363bool ByteCodeEmitter::emitRemIntAPS(SourceInfo L) {
43364 return emitOp<>(OP_RemIntAPS, L);
43365}
43366bool ByteCodeEmitter::emitRemFixedPoint(SourceInfo L) {
43367 return emitOp<>(OP_RemFixedPoint, L);
43368}
43369#endif
43370#ifdef GET_EVAL_IMPL
43371bool EvalEmitter::emitRemSint8(SourceInfo L) {
43372 if (!isActive()) return true;
43373 CurrentSource = L;
43374 return Rem<PT_Sint8>(S, CodePtr());
43375}
43376bool EvalEmitter::emitRemUint8(SourceInfo L) {
43377 if (!isActive()) return true;
43378 CurrentSource = L;
43379 return Rem<PT_Uint8>(S, CodePtr());
43380}
43381bool EvalEmitter::emitRemSint16(SourceInfo L) {
43382 if (!isActive()) return true;
43383 CurrentSource = L;
43384 return Rem<PT_Sint16>(S, CodePtr());
43385}
43386bool EvalEmitter::emitRemUint16(SourceInfo L) {
43387 if (!isActive()) return true;
43388 CurrentSource = L;
43389 return Rem<PT_Uint16>(S, CodePtr());
43390}
43391bool EvalEmitter::emitRemSint32(SourceInfo L) {
43392 if (!isActive()) return true;
43393 CurrentSource = L;
43394 return Rem<PT_Sint32>(S, CodePtr());
43395}
43396bool EvalEmitter::emitRemUint32(SourceInfo L) {
43397 if (!isActive()) return true;
43398 CurrentSource = L;
43399 return Rem<PT_Uint32>(S, CodePtr());
43400}
43401bool EvalEmitter::emitRemSint64(SourceInfo L) {
43402 if (!isActive()) return true;
43403 CurrentSource = L;
43404 return Rem<PT_Sint64>(S, CodePtr());
43405}
43406bool EvalEmitter::emitRemUint64(SourceInfo L) {
43407 if (!isActive()) return true;
43408 CurrentSource = L;
43409 return Rem<PT_Uint64>(S, CodePtr());
43410}
43411bool EvalEmitter::emitRemIntAP(SourceInfo L) {
43412 if (!isActive()) return true;
43413 CurrentSource = L;
43414 return Rem<PT_IntAP>(S, CodePtr());
43415}
43416bool EvalEmitter::emitRemIntAPS(SourceInfo L) {
43417 if (!isActive()) return true;
43418 CurrentSource = L;
43419 return Rem<PT_IntAPS>(S, CodePtr());
43420}
43421bool EvalEmitter::emitRemFixedPoint(SourceInfo L) {
43422 if (!isActive()) return true;
43423 CurrentSource = L;
43424 return Rem<PT_FixedPoint>(S, CodePtr());
43425}
43426#endif
43427#ifdef GET_OPCODE_NAMES
43428OP_RetSint8,
43429OP_RetUint8,
43430OP_RetSint16,
43431OP_RetUint16,
43432OP_RetSint32,
43433OP_RetUint32,
43434OP_RetSint64,
43435OP_RetUint64,
43436OP_RetIntAP,
43437OP_RetIntAPS,
43438OP_RetBool,
43439OP_RetFixedPoint,
43440OP_RetPtr,
43441OP_RetMemberPtr,
43442OP_RetFloat,
43443#endif
43444#ifdef GET_INTERPFN_LIST
43445&Interp_RetSint8,
43446&Interp_RetUint8,
43447&Interp_RetSint16,
43448&Interp_RetUint16,
43449&Interp_RetSint32,
43450&Interp_RetUint32,
43451&Interp_RetSint64,
43452&Interp_RetUint64,
43453&Interp_RetIntAP,
43454&Interp_RetIntAPS,
43455&Interp_RetBool,
43456&Interp_RetFixedPoint,
43457&Interp_RetPtr,
43458&Interp_RetMemberPtr,
43459&Interp_RetFloat,
43460#endif
43461#ifdef GET_INTERPFN_DISPATCHERS
43462PRESERVE_NONE
43463static bool Interp_RetSint8(InterpState &S) {
43464 MUSTTAIL return Ret<PT_Sint8>(S);
43465}
43466PRESERVE_NONE
43467static bool Interp_RetUint8(InterpState &S) {
43468 MUSTTAIL return Ret<PT_Uint8>(S);
43469}
43470PRESERVE_NONE
43471static bool Interp_RetSint16(InterpState &S) {
43472 MUSTTAIL return Ret<PT_Sint16>(S);
43473}
43474PRESERVE_NONE
43475static bool Interp_RetUint16(InterpState &S) {
43476 MUSTTAIL return Ret<PT_Uint16>(S);
43477}
43478PRESERVE_NONE
43479static bool Interp_RetSint32(InterpState &S) {
43480 MUSTTAIL return Ret<PT_Sint32>(S);
43481}
43482PRESERVE_NONE
43483static bool Interp_RetUint32(InterpState &S) {
43484 MUSTTAIL return Ret<PT_Uint32>(S);
43485}
43486PRESERVE_NONE
43487static bool Interp_RetSint64(InterpState &S) {
43488 MUSTTAIL return Ret<PT_Sint64>(S);
43489}
43490PRESERVE_NONE
43491static bool Interp_RetUint64(InterpState &S) {
43492 MUSTTAIL return Ret<PT_Uint64>(S);
43493}
43494PRESERVE_NONE
43495static bool Interp_RetIntAP(InterpState &S) {
43496 MUSTTAIL return Ret<PT_IntAP>(S);
43497}
43498PRESERVE_NONE
43499static bool Interp_RetIntAPS(InterpState &S) {
43500 MUSTTAIL return Ret<PT_IntAPS>(S);
43501}
43502PRESERVE_NONE
43503static bool Interp_RetBool(InterpState &S) {
43504 MUSTTAIL return Ret<PT_Bool>(S);
43505}
43506PRESERVE_NONE
43507static bool Interp_RetFixedPoint(InterpState &S) {
43508 MUSTTAIL return Ret<PT_FixedPoint>(S);
43509}
43510PRESERVE_NONE
43511static bool Interp_RetPtr(InterpState &S) {
43512 MUSTTAIL return Ret<PT_Ptr>(S);
43513}
43514PRESERVE_NONE
43515static bool Interp_RetMemberPtr(InterpState &S) {
43516 MUSTTAIL return Ret<PT_MemberPtr>(S);
43517}
43518PRESERVE_NONE
43519static bool Interp_RetFloat(InterpState &S) {
43520 MUSTTAIL return Ret<PT_Float>(S);
43521}
43522#endif
43523#ifdef GET_DISASM
43524case OP_RetSint8:
43525 Text.Op = PrintName("RetSint8");
43526 break;
43527case OP_RetUint8:
43528 Text.Op = PrintName("RetUint8");
43529 break;
43530case OP_RetSint16:
43531 Text.Op = PrintName("RetSint16");
43532 break;
43533case OP_RetUint16:
43534 Text.Op = PrintName("RetUint16");
43535 break;
43536case OP_RetSint32:
43537 Text.Op = PrintName("RetSint32");
43538 break;
43539case OP_RetUint32:
43540 Text.Op = PrintName("RetUint32");
43541 break;
43542case OP_RetSint64:
43543 Text.Op = PrintName("RetSint64");
43544 break;
43545case OP_RetUint64:
43546 Text.Op = PrintName("RetUint64");
43547 break;
43548case OP_RetIntAP:
43549 Text.Op = PrintName("RetIntAP");
43550 break;
43551case OP_RetIntAPS:
43552 Text.Op = PrintName("RetIntAPS");
43553 break;
43554case OP_RetBool:
43555 Text.Op = PrintName("RetBool");
43556 break;
43557case OP_RetFixedPoint:
43558 Text.Op = PrintName("RetFixedPoint");
43559 break;
43560case OP_RetPtr:
43561 Text.Op = PrintName("RetPtr");
43562 break;
43563case OP_RetMemberPtr:
43564 Text.Op = PrintName("RetMemberPtr");
43565 break;
43566case OP_RetFloat:
43567 Text.Op = PrintName("RetFloat");
43568 break;
43569#endif
43570#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43571bool emitRetSint8(SourceInfo);
43572bool emitRetUint8(SourceInfo);
43573bool emitRetSint16(SourceInfo);
43574bool emitRetUint16(SourceInfo);
43575bool emitRetSint32(SourceInfo);
43576bool emitRetUint32(SourceInfo);
43577bool emitRetSint64(SourceInfo);
43578bool emitRetUint64(SourceInfo);
43579bool emitRetIntAP(SourceInfo);
43580bool emitRetIntAPS(SourceInfo);
43581bool emitRetBool(SourceInfo);
43582bool emitRetFixedPoint(SourceInfo);
43583bool emitRetPtr(SourceInfo);
43584bool emitRetMemberPtr(SourceInfo);
43585bool emitRetFloat(SourceInfo);
43586#if defined(GET_EVAL_PROTO)
43587template<PrimType>
43588bool emitRet(SourceInfo);
43589#endif
43590#endif
43591#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43592[[nodiscard]] bool emitRet(PrimType, SourceInfo I);
43593#endif
43594#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
43595bool
43596#if defined(GET_EVAL_IMPL)
43597EvalEmitter
43598#else
43599ByteCodeEmitter
43600#endif
43601::emitRet(PrimType T0, SourceInfo I) {
43602 switch (T0) {
43603 case PT_Sint8:
43604#ifdef GET_LINK_IMPL
43605 return emitRetSint8
43606#else
43607 return emitRet<PT_Sint8>
43608#endif
43609 (I);
43610 case PT_Uint8:
43611#ifdef GET_LINK_IMPL
43612 return emitRetUint8
43613#else
43614 return emitRet<PT_Uint8>
43615#endif
43616 (I);
43617 case PT_Sint16:
43618#ifdef GET_LINK_IMPL
43619 return emitRetSint16
43620#else
43621 return emitRet<PT_Sint16>
43622#endif
43623 (I);
43624 case PT_Uint16:
43625#ifdef GET_LINK_IMPL
43626 return emitRetUint16
43627#else
43628 return emitRet<PT_Uint16>
43629#endif
43630 (I);
43631 case PT_Sint32:
43632#ifdef GET_LINK_IMPL
43633 return emitRetSint32
43634#else
43635 return emitRet<PT_Sint32>
43636#endif
43637 (I);
43638 case PT_Uint32:
43639#ifdef GET_LINK_IMPL
43640 return emitRetUint32
43641#else
43642 return emitRet<PT_Uint32>
43643#endif
43644 (I);
43645 case PT_Sint64:
43646#ifdef GET_LINK_IMPL
43647 return emitRetSint64
43648#else
43649 return emitRet<PT_Sint64>
43650#endif
43651 (I);
43652 case PT_Uint64:
43653#ifdef GET_LINK_IMPL
43654 return emitRetUint64
43655#else
43656 return emitRet<PT_Uint64>
43657#endif
43658 (I);
43659 case PT_IntAP:
43660#ifdef GET_LINK_IMPL
43661 return emitRetIntAP
43662#else
43663 return emitRet<PT_IntAP>
43664#endif
43665 (I);
43666 case PT_IntAPS:
43667#ifdef GET_LINK_IMPL
43668 return emitRetIntAPS
43669#else
43670 return emitRet<PT_IntAPS>
43671#endif
43672 (I);
43673 case PT_Bool:
43674#ifdef GET_LINK_IMPL
43675 return emitRetBool
43676#else
43677 return emitRet<PT_Bool>
43678#endif
43679 (I);
43680 case PT_FixedPoint:
43681#ifdef GET_LINK_IMPL
43682 return emitRetFixedPoint
43683#else
43684 return emitRet<PT_FixedPoint>
43685#endif
43686 (I);
43687 case PT_Ptr:
43688#ifdef GET_LINK_IMPL
43689 return emitRetPtr
43690#else
43691 return emitRet<PT_Ptr>
43692#endif
43693 (I);
43694 case PT_MemberPtr:
43695#ifdef GET_LINK_IMPL
43696 return emitRetMemberPtr
43697#else
43698 return emitRet<PT_MemberPtr>
43699#endif
43700 (I);
43701 case PT_Float:
43702#ifdef GET_LINK_IMPL
43703 return emitRetFloat
43704#else
43705 return emitRet<PT_Float>
43706#endif
43707 (I);
43708 }
43709 llvm_unreachable("invalid enum value");
43710}
43711#endif
43712#ifdef GET_LINK_IMPL
43713bool ByteCodeEmitter::emitRetSint8(SourceInfo L) {
43714 return emitOp<>(OP_RetSint8, L);
43715}
43716bool ByteCodeEmitter::emitRetUint8(SourceInfo L) {
43717 return emitOp<>(OP_RetUint8, L);
43718}
43719bool ByteCodeEmitter::emitRetSint16(SourceInfo L) {
43720 return emitOp<>(OP_RetSint16, L);
43721}
43722bool ByteCodeEmitter::emitRetUint16(SourceInfo L) {
43723 return emitOp<>(OP_RetUint16, L);
43724}
43725bool ByteCodeEmitter::emitRetSint32(SourceInfo L) {
43726 return emitOp<>(OP_RetSint32, L);
43727}
43728bool ByteCodeEmitter::emitRetUint32(SourceInfo L) {
43729 return emitOp<>(OP_RetUint32, L);
43730}
43731bool ByteCodeEmitter::emitRetSint64(SourceInfo L) {
43732 return emitOp<>(OP_RetSint64, L);
43733}
43734bool ByteCodeEmitter::emitRetUint64(SourceInfo L) {
43735 return emitOp<>(OP_RetUint64, L);
43736}
43737bool ByteCodeEmitter::emitRetIntAP(SourceInfo L) {
43738 return emitOp<>(OP_RetIntAP, L);
43739}
43740bool ByteCodeEmitter::emitRetIntAPS(SourceInfo L) {
43741 return emitOp<>(OP_RetIntAPS, L);
43742}
43743bool ByteCodeEmitter::emitRetBool(SourceInfo L) {
43744 return emitOp<>(OP_RetBool, L);
43745}
43746bool ByteCodeEmitter::emitRetFixedPoint(SourceInfo L) {
43747 return emitOp<>(OP_RetFixedPoint, L);
43748}
43749bool ByteCodeEmitter::emitRetPtr(SourceInfo L) {
43750 return emitOp<>(OP_RetPtr, L);
43751}
43752bool ByteCodeEmitter::emitRetMemberPtr(SourceInfo L) {
43753 return emitOp<>(OP_RetMemberPtr, L);
43754}
43755bool ByteCodeEmitter::emitRetFloat(SourceInfo L) {
43756 return emitOp<>(OP_RetFloat, L);
43757}
43758#endif
43759#ifdef GET_OPCODE_NAMES
43760OP_RetValue,
43761#endif
43762#ifdef GET_INTERPFN_LIST
43763&Interp_RetValue,
43764#endif
43765#ifdef GET_INTERPFN_DISPATCHERS
43766PRESERVE_NONE
43767static bool Interp_RetValue(InterpState &S) {
43768 MUSTTAIL return RetValue(S);
43769}
43770#endif
43771#ifdef GET_DISASM
43772case OP_RetValue:
43773 Text.Op = PrintName("RetValue");
43774 break;
43775#endif
43776#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43777bool emitRetValue(SourceInfo);
43778#endif
43779#ifdef GET_LINK_IMPL
43780bool ByteCodeEmitter::emitRetValue(SourceInfo L) {
43781 return emitOp<>(OP_RetValue, L);
43782}
43783#endif
43784#ifdef GET_OPCODE_NAMES
43785OP_RetVoid,
43786#endif
43787#ifdef GET_INTERPFN_LIST
43788&Interp_RetVoid,
43789#endif
43790#ifdef GET_INTERPFN_DISPATCHERS
43791PRESERVE_NONE
43792static bool Interp_RetVoid(InterpState &S) {
43793 MUSTTAIL return RetVoid(S);
43794}
43795#endif
43796#ifdef GET_DISASM
43797case OP_RetVoid:
43798 Text.Op = PrintName("RetVoid");
43799 break;
43800#endif
43801#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43802bool emitRetVoid(SourceInfo);
43803#endif
43804#ifdef GET_LINK_IMPL
43805bool ByteCodeEmitter::emitRetVoid(SourceInfo L) {
43806 return emitOp<>(OP_RetVoid, L);
43807}
43808#endif
43809#ifdef GET_OPCODE_NAMES
43810OP_SetGlobalSint8,
43811OP_SetGlobalUint8,
43812OP_SetGlobalSint16,
43813OP_SetGlobalUint16,
43814OP_SetGlobalSint32,
43815OP_SetGlobalUint32,
43816OP_SetGlobalSint64,
43817OP_SetGlobalUint64,
43818OP_SetGlobalIntAP,
43819OP_SetGlobalIntAPS,
43820OP_SetGlobalBool,
43821OP_SetGlobalFixedPoint,
43822OP_SetGlobalPtr,
43823OP_SetGlobalMemberPtr,
43824OP_SetGlobalFloat,
43825#endif
43826#ifdef GET_INTERPFN_LIST
43827&Interp_SetGlobalSint8,
43828&Interp_SetGlobalUint8,
43829&Interp_SetGlobalSint16,
43830&Interp_SetGlobalUint16,
43831&Interp_SetGlobalSint32,
43832&Interp_SetGlobalUint32,
43833&Interp_SetGlobalSint64,
43834&Interp_SetGlobalUint64,
43835&Interp_SetGlobalIntAP,
43836&Interp_SetGlobalIntAPS,
43837&Interp_SetGlobalBool,
43838&Interp_SetGlobalFixedPoint,
43839&Interp_SetGlobalPtr,
43840&Interp_SetGlobalMemberPtr,
43841&Interp_SetGlobalFloat,
43842#endif
43843#ifdef GET_INTERPFN_DISPATCHERS
43844PRESERVE_NONE
43845static bool Interp_SetGlobalSint8(InterpState &S) {
43846 {
43847 CodePtr OpPC = S.PC;
43848 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43849 if (!SetGlobal<PT_Sint8>(S, OpPC, V0)) return false;
43850 }
43851#if USE_TAILCALLS
43852 MUSTTAIL return InterpNext(S);
43853#else
43854 return true;
43855#endif
43856}
43857PRESERVE_NONE
43858static bool Interp_SetGlobalUint8(InterpState &S) {
43859 {
43860 CodePtr OpPC = S.PC;
43861 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43862 if (!SetGlobal<PT_Uint8>(S, OpPC, V0)) return false;
43863 }
43864#if USE_TAILCALLS
43865 MUSTTAIL return InterpNext(S);
43866#else
43867 return true;
43868#endif
43869}
43870PRESERVE_NONE
43871static bool Interp_SetGlobalSint16(InterpState &S) {
43872 {
43873 CodePtr OpPC = S.PC;
43874 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43875 if (!SetGlobal<PT_Sint16>(S, OpPC, V0)) return false;
43876 }
43877#if USE_TAILCALLS
43878 MUSTTAIL return InterpNext(S);
43879#else
43880 return true;
43881#endif
43882}
43883PRESERVE_NONE
43884static bool Interp_SetGlobalUint16(InterpState &S) {
43885 {
43886 CodePtr OpPC = S.PC;
43887 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43888 if (!SetGlobal<PT_Uint16>(S, OpPC, V0)) return false;
43889 }
43890#if USE_TAILCALLS
43891 MUSTTAIL return InterpNext(S);
43892#else
43893 return true;
43894#endif
43895}
43896PRESERVE_NONE
43897static bool Interp_SetGlobalSint32(InterpState &S) {
43898 {
43899 CodePtr OpPC = S.PC;
43900 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43901 if (!SetGlobal<PT_Sint32>(S, OpPC, V0)) return false;
43902 }
43903#if USE_TAILCALLS
43904 MUSTTAIL return InterpNext(S);
43905#else
43906 return true;
43907#endif
43908}
43909PRESERVE_NONE
43910static bool Interp_SetGlobalUint32(InterpState &S) {
43911 {
43912 CodePtr OpPC = S.PC;
43913 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43914 if (!SetGlobal<PT_Uint32>(S, OpPC, V0)) return false;
43915 }
43916#if USE_TAILCALLS
43917 MUSTTAIL return InterpNext(S);
43918#else
43919 return true;
43920#endif
43921}
43922PRESERVE_NONE
43923static bool Interp_SetGlobalSint64(InterpState &S) {
43924 {
43925 CodePtr OpPC = S.PC;
43926 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43927 if (!SetGlobal<PT_Sint64>(S, OpPC, V0)) return false;
43928 }
43929#if USE_TAILCALLS
43930 MUSTTAIL return InterpNext(S);
43931#else
43932 return true;
43933#endif
43934}
43935PRESERVE_NONE
43936static bool Interp_SetGlobalUint64(InterpState &S) {
43937 {
43938 CodePtr OpPC = S.PC;
43939 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43940 if (!SetGlobal<PT_Uint64>(S, OpPC, V0)) return false;
43941 }
43942#if USE_TAILCALLS
43943 MUSTTAIL return InterpNext(S);
43944#else
43945 return true;
43946#endif
43947}
43948PRESERVE_NONE
43949static bool Interp_SetGlobalIntAP(InterpState &S) {
43950 {
43951 CodePtr OpPC = S.PC;
43952 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43953 if (!SetGlobal<PT_IntAP>(S, OpPC, V0)) return false;
43954 }
43955#if USE_TAILCALLS
43956 MUSTTAIL return InterpNext(S);
43957#else
43958 return true;
43959#endif
43960}
43961PRESERVE_NONE
43962static bool Interp_SetGlobalIntAPS(InterpState &S) {
43963 {
43964 CodePtr OpPC = S.PC;
43965 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43966 if (!SetGlobal<PT_IntAPS>(S, OpPC, V0)) return false;
43967 }
43968#if USE_TAILCALLS
43969 MUSTTAIL return InterpNext(S);
43970#else
43971 return true;
43972#endif
43973}
43974PRESERVE_NONE
43975static bool Interp_SetGlobalBool(InterpState &S) {
43976 {
43977 CodePtr OpPC = S.PC;
43978 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43979 if (!SetGlobal<PT_Bool>(S, OpPC, V0)) return false;
43980 }
43981#if USE_TAILCALLS
43982 MUSTTAIL return InterpNext(S);
43983#else
43984 return true;
43985#endif
43986}
43987PRESERVE_NONE
43988static bool Interp_SetGlobalFixedPoint(InterpState &S) {
43989 {
43990 CodePtr OpPC = S.PC;
43991 const auto V0 = ReadArg<uint32_t>(S, S.PC);
43992 if (!SetGlobal<PT_FixedPoint>(S, OpPC, V0)) return false;
43993 }
43994#if USE_TAILCALLS
43995 MUSTTAIL return InterpNext(S);
43996#else
43997 return true;
43998#endif
43999}
44000PRESERVE_NONE
44001static bool Interp_SetGlobalPtr(InterpState &S) {
44002 {
44003 CodePtr OpPC = S.PC;
44004 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44005 if (!SetGlobal<PT_Ptr>(S, OpPC, V0)) return false;
44006 }
44007#if USE_TAILCALLS
44008 MUSTTAIL return InterpNext(S);
44009#else
44010 return true;
44011#endif
44012}
44013PRESERVE_NONE
44014static bool Interp_SetGlobalMemberPtr(InterpState &S) {
44015 {
44016 CodePtr OpPC = S.PC;
44017 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44018 if (!SetGlobal<PT_MemberPtr>(S, OpPC, V0)) return false;
44019 }
44020#if USE_TAILCALLS
44021 MUSTTAIL return InterpNext(S);
44022#else
44023 return true;
44024#endif
44025}
44026PRESERVE_NONE
44027static bool Interp_SetGlobalFloat(InterpState &S) {
44028 {
44029 CodePtr OpPC = S.PC;
44030 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44031 if (!SetGlobal<PT_Float>(S, OpPC, V0)) return false;
44032 }
44033#if USE_TAILCALLS
44034 MUSTTAIL return InterpNext(S);
44035#else
44036 return true;
44037#endif
44038}
44039#endif
44040#ifdef GET_DISASM
44041case OP_SetGlobalSint8:
44042 Text.Op = PrintName("SetGlobalSint8");
44043 Text.Args.push_back(printArg<uint32_t>(PC));
44044 break;
44045case OP_SetGlobalUint8:
44046 Text.Op = PrintName("SetGlobalUint8");
44047 Text.Args.push_back(printArg<uint32_t>(PC));
44048 break;
44049case OP_SetGlobalSint16:
44050 Text.Op = PrintName("SetGlobalSint16");
44051 Text.Args.push_back(printArg<uint32_t>(PC));
44052 break;
44053case OP_SetGlobalUint16:
44054 Text.Op = PrintName("SetGlobalUint16");
44055 Text.Args.push_back(printArg<uint32_t>(PC));
44056 break;
44057case OP_SetGlobalSint32:
44058 Text.Op = PrintName("SetGlobalSint32");
44059 Text.Args.push_back(printArg<uint32_t>(PC));
44060 break;
44061case OP_SetGlobalUint32:
44062 Text.Op = PrintName("SetGlobalUint32");
44063 Text.Args.push_back(printArg<uint32_t>(PC));
44064 break;
44065case OP_SetGlobalSint64:
44066 Text.Op = PrintName("SetGlobalSint64");
44067 Text.Args.push_back(printArg<uint32_t>(PC));
44068 break;
44069case OP_SetGlobalUint64:
44070 Text.Op = PrintName("SetGlobalUint64");
44071 Text.Args.push_back(printArg<uint32_t>(PC));
44072 break;
44073case OP_SetGlobalIntAP:
44074 Text.Op = PrintName("SetGlobalIntAP");
44075 Text.Args.push_back(printArg<uint32_t>(PC));
44076 break;
44077case OP_SetGlobalIntAPS:
44078 Text.Op = PrintName("SetGlobalIntAPS");
44079 Text.Args.push_back(printArg<uint32_t>(PC));
44080 break;
44081case OP_SetGlobalBool:
44082 Text.Op = PrintName("SetGlobalBool");
44083 Text.Args.push_back(printArg<uint32_t>(PC));
44084 break;
44085case OP_SetGlobalFixedPoint:
44086 Text.Op = PrintName("SetGlobalFixedPoint");
44087 Text.Args.push_back(printArg<uint32_t>(PC));
44088 break;
44089case OP_SetGlobalPtr:
44090 Text.Op = PrintName("SetGlobalPtr");
44091 Text.Args.push_back(printArg<uint32_t>(PC));
44092 break;
44093case OP_SetGlobalMemberPtr:
44094 Text.Op = PrintName("SetGlobalMemberPtr");
44095 Text.Args.push_back(printArg<uint32_t>(PC));
44096 break;
44097case OP_SetGlobalFloat:
44098 Text.Op = PrintName("SetGlobalFloat");
44099 Text.Args.push_back(printArg<uint32_t>(PC));
44100 break;
44101#endif
44102#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44103bool emitSetGlobalSint8( uint32_t , SourceInfo);
44104bool emitSetGlobalUint8( uint32_t , SourceInfo);
44105bool emitSetGlobalSint16( uint32_t , SourceInfo);
44106bool emitSetGlobalUint16( uint32_t , SourceInfo);
44107bool emitSetGlobalSint32( uint32_t , SourceInfo);
44108bool emitSetGlobalUint32( uint32_t , SourceInfo);
44109bool emitSetGlobalSint64( uint32_t , SourceInfo);
44110bool emitSetGlobalUint64( uint32_t , SourceInfo);
44111bool emitSetGlobalIntAP( uint32_t , SourceInfo);
44112bool emitSetGlobalIntAPS( uint32_t , SourceInfo);
44113bool emitSetGlobalBool( uint32_t , SourceInfo);
44114bool emitSetGlobalFixedPoint( uint32_t , SourceInfo);
44115bool emitSetGlobalPtr( uint32_t , SourceInfo);
44116bool emitSetGlobalMemberPtr( uint32_t , SourceInfo);
44117bool emitSetGlobalFloat( uint32_t , SourceInfo);
44118#endif
44119#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44120[[nodiscard]] bool emitSetGlobal(PrimType, uint32_t, SourceInfo I);
44121#endif
44122#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
44123bool
44124#if defined(GET_EVAL_IMPL)
44125EvalEmitter
44126#else
44127ByteCodeEmitter
44128#endif
44129::emitSetGlobal(PrimType T0, uint32_t A0, SourceInfo I) {
44130 switch (T0) {
44131 case PT_Sint8:
44132 return emitSetGlobalSint8(A0, I);
44133 case PT_Uint8:
44134 return emitSetGlobalUint8(A0, I);
44135 case PT_Sint16:
44136 return emitSetGlobalSint16(A0, I);
44137 case PT_Uint16:
44138 return emitSetGlobalUint16(A0, I);
44139 case PT_Sint32:
44140 return emitSetGlobalSint32(A0, I);
44141 case PT_Uint32:
44142 return emitSetGlobalUint32(A0, I);
44143 case PT_Sint64:
44144 return emitSetGlobalSint64(A0, I);
44145 case PT_Uint64:
44146 return emitSetGlobalUint64(A0, I);
44147 case PT_IntAP:
44148 return emitSetGlobalIntAP(A0, I);
44149 case PT_IntAPS:
44150 return emitSetGlobalIntAPS(A0, I);
44151 case PT_Bool:
44152 return emitSetGlobalBool(A0, I);
44153 case PT_FixedPoint:
44154 return emitSetGlobalFixedPoint(A0, I);
44155 case PT_Ptr:
44156 return emitSetGlobalPtr(A0, I);
44157 case PT_MemberPtr:
44158 return emitSetGlobalMemberPtr(A0, I);
44159 case PT_Float:
44160 return emitSetGlobalFloat(A0, I);
44161 }
44162 llvm_unreachable("invalid enum value");
44163}
44164#endif
44165#ifdef GET_LINK_IMPL
44166bool ByteCodeEmitter::emitSetGlobalSint8( uint32_t A0, SourceInfo L) {
44167 return emitOp<uint32_t>(OP_SetGlobalSint8, A0, L);
44168}
44169bool ByteCodeEmitter::emitSetGlobalUint8( uint32_t A0, SourceInfo L) {
44170 return emitOp<uint32_t>(OP_SetGlobalUint8, A0, L);
44171}
44172bool ByteCodeEmitter::emitSetGlobalSint16( uint32_t A0, SourceInfo L) {
44173 return emitOp<uint32_t>(OP_SetGlobalSint16, A0, L);
44174}
44175bool ByteCodeEmitter::emitSetGlobalUint16( uint32_t A0, SourceInfo L) {
44176 return emitOp<uint32_t>(OP_SetGlobalUint16, A0, L);
44177}
44178bool ByteCodeEmitter::emitSetGlobalSint32( uint32_t A0, SourceInfo L) {
44179 return emitOp<uint32_t>(OP_SetGlobalSint32, A0, L);
44180}
44181bool ByteCodeEmitter::emitSetGlobalUint32( uint32_t A0, SourceInfo L) {
44182 return emitOp<uint32_t>(OP_SetGlobalUint32, A0, L);
44183}
44184bool ByteCodeEmitter::emitSetGlobalSint64( uint32_t A0, SourceInfo L) {
44185 return emitOp<uint32_t>(OP_SetGlobalSint64, A0, L);
44186}
44187bool ByteCodeEmitter::emitSetGlobalUint64( uint32_t A0, SourceInfo L) {
44188 return emitOp<uint32_t>(OP_SetGlobalUint64, A0, L);
44189}
44190bool ByteCodeEmitter::emitSetGlobalIntAP( uint32_t A0, SourceInfo L) {
44191 return emitOp<uint32_t>(OP_SetGlobalIntAP, A0, L);
44192}
44193bool ByteCodeEmitter::emitSetGlobalIntAPS( uint32_t A0, SourceInfo L) {
44194 return emitOp<uint32_t>(OP_SetGlobalIntAPS, A0, L);
44195}
44196bool ByteCodeEmitter::emitSetGlobalBool( uint32_t A0, SourceInfo L) {
44197 return emitOp<uint32_t>(OP_SetGlobalBool, A0, L);
44198}
44199bool ByteCodeEmitter::emitSetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
44200 return emitOp<uint32_t>(OP_SetGlobalFixedPoint, A0, L);
44201}
44202bool ByteCodeEmitter::emitSetGlobalPtr( uint32_t A0, SourceInfo L) {
44203 return emitOp<uint32_t>(OP_SetGlobalPtr, A0, L);
44204}
44205bool ByteCodeEmitter::emitSetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
44206 return emitOp<uint32_t>(OP_SetGlobalMemberPtr, A0, L);
44207}
44208bool ByteCodeEmitter::emitSetGlobalFloat( uint32_t A0, SourceInfo L) {
44209 return emitOp<uint32_t>(OP_SetGlobalFloat, A0, L);
44210}
44211#endif
44212#ifdef GET_EVAL_IMPL
44213bool EvalEmitter::emitSetGlobalSint8( uint32_t A0, SourceInfo L) {
44214 if (!isActive()) return true;
44215 CurrentSource = L;
44216 return SetGlobal<PT_Sint8>(S, CodePtr(), A0);
44217}
44218bool EvalEmitter::emitSetGlobalUint8( uint32_t A0, SourceInfo L) {
44219 if (!isActive()) return true;
44220 CurrentSource = L;
44221 return SetGlobal<PT_Uint8>(S, CodePtr(), A0);
44222}
44223bool EvalEmitter::emitSetGlobalSint16( uint32_t A0, SourceInfo L) {
44224 if (!isActive()) return true;
44225 CurrentSource = L;
44226 return SetGlobal<PT_Sint16>(S, CodePtr(), A0);
44227}
44228bool EvalEmitter::emitSetGlobalUint16( uint32_t A0, SourceInfo L) {
44229 if (!isActive()) return true;
44230 CurrentSource = L;
44231 return SetGlobal<PT_Uint16>(S, CodePtr(), A0);
44232}
44233bool EvalEmitter::emitSetGlobalSint32( uint32_t A0, SourceInfo L) {
44234 if (!isActive()) return true;
44235 CurrentSource = L;
44236 return SetGlobal<PT_Sint32>(S, CodePtr(), A0);
44237}
44238bool EvalEmitter::emitSetGlobalUint32( uint32_t A0, SourceInfo L) {
44239 if (!isActive()) return true;
44240 CurrentSource = L;
44241 return SetGlobal<PT_Uint32>(S, CodePtr(), A0);
44242}
44243bool EvalEmitter::emitSetGlobalSint64( uint32_t A0, SourceInfo L) {
44244 if (!isActive()) return true;
44245 CurrentSource = L;
44246 return SetGlobal<PT_Sint64>(S, CodePtr(), A0);
44247}
44248bool EvalEmitter::emitSetGlobalUint64( uint32_t A0, SourceInfo L) {
44249 if (!isActive()) return true;
44250 CurrentSource = L;
44251 return SetGlobal<PT_Uint64>(S, CodePtr(), A0);
44252}
44253bool EvalEmitter::emitSetGlobalIntAP( uint32_t A0, SourceInfo L) {
44254 if (!isActive()) return true;
44255 CurrentSource = L;
44256 return SetGlobal<PT_IntAP>(S, CodePtr(), A0);
44257}
44258bool EvalEmitter::emitSetGlobalIntAPS( uint32_t A0, SourceInfo L) {
44259 if (!isActive()) return true;
44260 CurrentSource = L;
44261 return SetGlobal<PT_IntAPS>(S, CodePtr(), A0);
44262}
44263bool EvalEmitter::emitSetGlobalBool( uint32_t A0, SourceInfo L) {
44264 if (!isActive()) return true;
44265 CurrentSource = L;
44266 return SetGlobal<PT_Bool>(S, CodePtr(), A0);
44267}
44268bool EvalEmitter::emitSetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
44269 if (!isActive()) return true;
44270 CurrentSource = L;
44271 return SetGlobal<PT_FixedPoint>(S, CodePtr(), A0);
44272}
44273bool EvalEmitter::emitSetGlobalPtr( uint32_t A0, SourceInfo L) {
44274 if (!isActive()) return true;
44275 CurrentSource = L;
44276 return SetGlobal<PT_Ptr>(S, CodePtr(), A0);
44277}
44278bool EvalEmitter::emitSetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
44279 if (!isActive()) return true;
44280 CurrentSource = L;
44281 return SetGlobal<PT_MemberPtr>(S, CodePtr(), A0);
44282}
44283bool EvalEmitter::emitSetGlobalFloat( uint32_t A0, SourceInfo L) {
44284 if (!isActive()) return true;
44285 CurrentSource = L;
44286 return SetGlobal<PT_Float>(S, CodePtr(), A0);
44287}
44288#endif
44289#ifdef GET_OPCODE_NAMES
44290OP_SetLocalSint8,
44291OP_SetLocalUint8,
44292OP_SetLocalSint16,
44293OP_SetLocalUint16,
44294OP_SetLocalSint32,
44295OP_SetLocalUint32,
44296OP_SetLocalSint64,
44297OP_SetLocalUint64,
44298OP_SetLocalIntAP,
44299OP_SetLocalIntAPS,
44300OP_SetLocalBool,
44301OP_SetLocalFixedPoint,
44302OP_SetLocalPtr,
44303OP_SetLocalMemberPtr,
44304OP_SetLocalFloat,
44305#endif
44306#ifdef GET_INTERPFN_LIST
44307&Interp_SetLocalSint8,
44308&Interp_SetLocalUint8,
44309&Interp_SetLocalSint16,
44310&Interp_SetLocalUint16,
44311&Interp_SetLocalSint32,
44312&Interp_SetLocalUint32,
44313&Interp_SetLocalSint64,
44314&Interp_SetLocalUint64,
44315&Interp_SetLocalIntAP,
44316&Interp_SetLocalIntAPS,
44317&Interp_SetLocalBool,
44318&Interp_SetLocalFixedPoint,
44319&Interp_SetLocalPtr,
44320&Interp_SetLocalMemberPtr,
44321&Interp_SetLocalFloat,
44322#endif
44323#ifdef GET_INTERPFN_DISPATCHERS
44324PRESERVE_NONE
44325static bool Interp_SetLocalSint8(InterpState &S) {
44326 {
44327 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44328 SetLocal<PT_Sint8>(S, V0);
44329 }
44330#if USE_TAILCALLS
44331 MUSTTAIL return InterpNext(S);
44332#else
44333 return true;
44334#endif
44335}
44336PRESERVE_NONE
44337static bool Interp_SetLocalUint8(InterpState &S) {
44338 {
44339 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44340 SetLocal<PT_Uint8>(S, V0);
44341 }
44342#if USE_TAILCALLS
44343 MUSTTAIL return InterpNext(S);
44344#else
44345 return true;
44346#endif
44347}
44348PRESERVE_NONE
44349static bool Interp_SetLocalSint16(InterpState &S) {
44350 {
44351 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44352 SetLocal<PT_Sint16>(S, V0);
44353 }
44354#if USE_TAILCALLS
44355 MUSTTAIL return InterpNext(S);
44356#else
44357 return true;
44358#endif
44359}
44360PRESERVE_NONE
44361static bool Interp_SetLocalUint16(InterpState &S) {
44362 {
44363 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44364 SetLocal<PT_Uint16>(S, V0);
44365 }
44366#if USE_TAILCALLS
44367 MUSTTAIL return InterpNext(S);
44368#else
44369 return true;
44370#endif
44371}
44372PRESERVE_NONE
44373static bool Interp_SetLocalSint32(InterpState &S) {
44374 {
44375 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44376 SetLocal<PT_Sint32>(S, V0);
44377 }
44378#if USE_TAILCALLS
44379 MUSTTAIL return InterpNext(S);
44380#else
44381 return true;
44382#endif
44383}
44384PRESERVE_NONE
44385static bool Interp_SetLocalUint32(InterpState &S) {
44386 {
44387 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44388 SetLocal<PT_Uint32>(S, V0);
44389 }
44390#if USE_TAILCALLS
44391 MUSTTAIL return InterpNext(S);
44392#else
44393 return true;
44394#endif
44395}
44396PRESERVE_NONE
44397static bool Interp_SetLocalSint64(InterpState &S) {
44398 {
44399 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44400 SetLocal<PT_Sint64>(S, V0);
44401 }
44402#if USE_TAILCALLS
44403 MUSTTAIL return InterpNext(S);
44404#else
44405 return true;
44406#endif
44407}
44408PRESERVE_NONE
44409static bool Interp_SetLocalUint64(InterpState &S) {
44410 {
44411 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44412 SetLocal<PT_Uint64>(S, V0);
44413 }
44414#if USE_TAILCALLS
44415 MUSTTAIL return InterpNext(S);
44416#else
44417 return true;
44418#endif
44419}
44420PRESERVE_NONE
44421static bool Interp_SetLocalIntAP(InterpState &S) {
44422 {
44423 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44424 SetLocal<PT_IntAP>(S, V0);
44425 }
44426#if USE_TAILCALLS
44427 MUSTTAIL return InterpNext(S);
44428#else
44429 return true;
44430#endif
44431}
44432PRESERVE_NONE
44433static bool Interp_SetLocalIntAPS(InterpState &S) {
44434 {
44435 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44436 SetLocal<PT_IntAPS>(S, V0);
44437 }
44438#if USE_TAILCALLS
44439 MUSTTAIL return InterpNext(S);
44440#else
44441 return true;
44442#endif
44443}
44444PRESERVE_NONE
44445static bool Interp_SetLocalBool(InterpState &S) {
44446 {
44447 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44448 SetLocal<PT_Bool>(S, V0);
44449 }
44450#if USE_TAILCALLS
44451 MUSTTAIL return InterpNext(S);
44452#else
44453 return true;
44454#endif
44455}
44456PRESERVE_NONE
44457static bool Interp_SetLocalFixedPoint(InterpState &S) {
44458 {
44459 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44460 SetLocal<PT_FixedPoint>(S, V0);
44461 }
44462#if USE_TAILCALLS
44463 MUSTTAIL return InterpNext(S);
44464#else
44465 return true;
44466#endif
44467}
44468PRESERVE_NONE
44469static bool Interp_SetLocalPtr(InterpState &S) {
44470 {
44471 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44472 SetLocal<PT_Ptr>(S, V0);
44473 }
44474#if USE_TAILCALLS
44475 MUSTTAIL return InterpNext(S);
44476#else
44477 return true;
44478#endif
44479}
44480PRESERVE_NONE
44481static bool Interp_SetLocalMemberPtr(InterpState &S) {
44482 {
44483 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44484 SetLocal<PT_MemberPtr>(S, V0);
44485 }
44486#if USE_TAILCALLS
44487 MUSTTAIL return InterpNext(S);
44488#else
44489 return true;
44490#endif
44491}
44492PRESERVE_NONE
44493static bool Interp_SetLocalFloat(InterpState &S) {
44494 {
44495 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44496 SetLocal<PT_Float>(S, V0);
44497 }
44498#if USE_TAILCALLS
44499 MUSTTAIL return InterpNext(S);
44500#else
44501 return true;
44502#endif
44503}
44504#endif
44505#ifdef GET_DISASM
44506case OP_SetLocalSint8:
44507 Text.Op = PrintName("SetLocalSint8");
44508 Text.Args.push_back(printArg<uint32_t>(PC));
44509 break;
44510case OP_SetLocalUint8:
44511 Text.Op = PrintName("SetLocalUint8");
44512 Text.Args.push_back(printArg<uint32_t>(PC));
44513 break;
44514case OP_SetLocalSint16:
44515 Text.Op = PrintName("SetLocalSint16");
44516 Text.Args.push_back(printArg<uint32_t>(PC));
44517 break;
44518case OP_SetLocalUint16:
44519 Text.Op = PrintName("SetLocalUint16");
44520 Text.Args.push_back(printArg<uint32_t>(PC));
44521 break;
44522case OP_SetLocalSint32:
44523 Text.Op = PrintName("SetLocalSint32");
44524 Text.Args.push_back(printArg<uint32_t>(PC));
44525 break;
44526case OP_SetLocalUint32:
44527 Text.Op = PrintName("SetLocalUint32");
44528 Text.Args.push_back(printArg<uint32_t>(PC));
44529 break;
44530case OP_SetLocalSint64:
44531 Text.Op = PrintName("SetLocalSint64");
44532 Text.Args.push_back(printArg<uint32_t>(PC));
44533 break;
44534case OP_SetLocalUint64:
44535 Text.Op = PrintName("SetLocalUint64");
44536 Text.Args.push_back(printArg<uint32_t>(PC));
44537 break;
44538case OP_SetLocalIntAP:
44539 Text.Op = PrintName("SetLocalIntAP");
44540 Text.Args.push_back(printArg<uint32_t>(PC));
44541 break;
44542case OP_SetLocalIntAPS:
44543 Text.Op = PrintName("SetLocalIntAPS");
44544 Text.Args.push_back(printArg<uint32_t>(PC));
44545 break;
44546case OP_SetLocalBool:
44547 Text.Op = PrintName("SetLocalBool");
44548 Text.Args.push_back(printArg<uint32_t>(PC));
44549 break;
44550case OP_SetLocalFixedPoint:
44551 Text.Op = PrintName("SetLocalFixedPoint");
44552 Text.Args.push_back(printArg<uint32_t>(PC));
44553 break;
44554case OP_SetLocalPtr:
44555 Text.Op = PrintName("SetLocalPtr");
44556 Text.Args.push_back(printArg<uint32_t>(PC));
44557 break;
44558case OP_SetLocalMemberPtr:
44559 Text.Op = PrintName("SetLocalMemberPtr");
44560 Text.Args.push_back(printArg<uint32_t>(PC));
44561 break;
44562case OP_SetLocalFloat:
44563 Text.Op = PrintName("SetLocalFloat");
44564 Text.Args.push_back(printArg<uint32_t>(PC));
44565 break;
44566#endif
44567#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44568bool emitSetLocalSint8( uint32_t , SourceInfo);
44569bool emitSetLocalUint8( uint32_t , SourceInfo);
44570bool emitSetLocalSint16( uint32_t , SourceInfo);
44571bool emitSetLocalUint16( uint32_t , SourceInfo);
44572bool emitSetLocalSint32( uint32_t , SourceInfo);
44573bool emitSetLocalUint32( uint32_t , SourceInfo);
44574bool emitSetLocalSint64( uint32_t , SourceInfo);
44575bool emitSetLocalUint64( uint32_t , SourceInfo);
44576bool emitSetLocalIntAP( uint32_t , SourceInfo);
44577bool emitSetLocalIntAPS( uint32_t , SourceInfo);
44578bool emitSetLocalBool( uint32_t , SourceInfo);
44579bool emitSetLocalFixedPoint( uint32_t , SourceInfo);
44580bool emitSetLocalPtr( uint32_t , SourceInfo);
44581bool emitSetLocalMemberPtr( uint32_t , SourceInfo);
44582bool emitSetLocalFloat( uint32_t , SourceInfo);
44583#if defined(GET_EVAL_PROTO)
44584template<PrimType>
44585bool emitSetLocal(uint32_t, SourceInfo);
44586#endif
44587#endif
44588#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44589[[nodiscard]] bool emitSetLocal(PrimType, uint32_t, SourceInfo I);
44590#endif
44591#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
44592bool
44593#if defined(GET_EVAL_IMPL)
44594EvalEmitter
44595#else
44596ByteCodeEmitter
44597#endif
44598::emitSetLocal(PrimType T0, uint32_t A0, SourceInfo I) {
44599 switch (T0) {
44600 case PT_Sint8:
44601#ifdef GET_LINK_IMPL
44602 return emitSetLocalSint8
44603#else
44604 return emitSetLocal<PT_Sint8>
44605#endif
44606 (A0, I);
44607 case PT_Uint8:
44608#ifdef GET_LINK_IMPL
44609 return emitSetLocalUint8
44610#else
44611 return emitSetLocal<PT_Uint8>
44612#endif
44613 (A0, I);
44614 case PT_Sint16:
44615#ifdef GET_LINK_IMPL
44616 return emitSetLocalSint16
44617#else
44618 return emitSetLocal<PT_Sint16>
44619#endif
44620 (A0, I);
44621 case PT_Uint16:
44622#ifdef GET_LINK_IMPL
44623 return emitSetLocalUint16
44624#else
44625 return emitSetLocal<PT_Uint16>
44626#endif
44627 (A0, I);
44628 case PT_Sint32:
44629#ifdef GET_LINK_IMPL
44630 return emitSetLocalSint32
44631#else
44632 return emitSetLocal<PT_Sint32>
44633#endif
44634 (A0, I);
44635 case PT_Uint32:
44636#ifdef GET_LINK_IMPL
44637 return emitSetLocalUint32
44638#else
44639 return emitSetLocal<PT_Uint32>
44640#endif
44641 (A0, I);
44642 case PT_Sint64:
44643#ifdef GET_LINK_IMPL
44644 return emitSetLocalSint64
44645#else
44646 return emitSetLocal<PT_Sint64>
44647#endif
44648 (A0, I);
44649 case PT_Uint64:
44650#ifdef GET_LINK_IMPL
44651 return emitSetLocalUint64
44652#else
44653 return emitSetLocal<PT_Uint64>
44654#endif
44655 (A0, I);
44656 case PT_IntAP:
44657#ifdef GET_LINK_IMPL
44658 return emitSetLocalIntAP
44659#else
44660 return emitSetLocal<PT_IntAP>
44661#endif
44662 (A0, I);
44663 case PT_IntAPS:
44664#ifdef GET_LINK_IMPL
44665 return emitSetLocalIntAPS
44666#else
44667 return emitSetLocal<PT_IntAPS>
44668#endif
44669 (A0, I);
44670 case PT_Bool:
44671#ifdef GET_LINK_IMPL
44672 return emitSetLocalBool
44673#else
44674 return emitSetLocal<PT_Bool>
44675#endif
44676 (A0, I);
44677 case PT_FixedPoint:
44678#ifdef GET_LINK_IMPL
44679 return emitSetLocalFixedPoint
44680#else
44681 return emitSetLocal<PT_FixedPoint>
44682#endif
44683 (A0, I);
44684 case PT_Ptr:
44685#ifdef GET_LINK_IMPL
44686 return emitSetLocalPtr
44687#else
44688 return emitSetLocal<PT_Ptr>
44689#endif
44690 (A0, I);
44691 case PT_MemberPtr:
44692#ifdef GET_LINK_IMPL
44693 return emitSetLocalMemberPtr
44694#else
44695 return emitSetLocal<PT_MemberPtr>
44696#endif
44697 (A0, I);
44698 case PT_Float:
44699#ifdef GET_LINK_IMPL
44700 return emitSetLocalFloat
44701#else
44702 return emitSetLocal<PT_Float>
44703#endif
44704 (A0, I);
44705 }
44706 llvm_unreachable("invalid enum value");
44707}
44708#endif
44709#ifdef GET_LINK_IMPL
44710bool ByteCodeEmitter::emitSetLocalSint8( uint32_t A0, SourceInfo L) {
44711 return emitOp<uint32_t>(OP_SetLocalSint8, A0, L);
44712}
44713bool ByteCodeEmitter::emitSetLocalUint8( uint32_t A0, SourceInfo L) {
44714 return emitOp<uint32_t>(OP_SetLocalUint8, A0, L);
44715}
44716bool ByteCodeEmitter::emitSetLocalSint16( uint32_t A0, SourceInfo L) {
44717 return emitOp<uint32_t>(OP_SetLocalSint16, A0, L);
44718}
44719bool ByteCodeEmitter::emitSetLocalUint16( uint32_t A0, SourceInfo L) {
44720 return emitOp<uint32_t>(OP_SetLocalUint16, A0, L);
44721}
44722bool ByteCodeEmitter::emitSetLocalSint32( uint32_t A0, SourceInfo L) {
44723 return emitOp<uint32_t>(OP_SetLocalSint32, A0, L);
44724}
44725bool ByteCodeEmitter::emitSetLocalUint32( uint32_t A0, SourceInfo L) {
44726 return emitOp<uint32_t>(OP_SetLocalUint32, A0, L);
44727}
44728bool ByteCodeEmitter::emitSetLocalSint64( uint32_t A0, SourceInfo L) {
44729 return emitOp<uint32_t>(OP_SetLocalSint64, A0, L);
44730}
44731bool ByteCodeEmitter::emitSetLocalUint64( uint32_t A0, SourceInfo L) {
44732 return emitOp<uint32_t>(OP_SetLocalUint64, A0, L);
44733}
44734bool ByteCodeEmitter::emitSetLocalIntAP( uint32_t A0, SourceInfo L) {
44735 return emitOp<uint32_t>(OP_SetLocalIntAP, A0, L);
44736}
44737bool ByteCodeEmitter::emitSetLocalIntAPS( uint32_t A0, SourceInfo L) {
44738 return emitOp<uint32_t>(OP_SetLocalIntAPS, A0, L);
44739}
44740bool ByteCodeEmitter::emitSetLocalBool( uint32_t A0, SourceInfo L) {
44741 return emitOp<uint32_t>(OP_SetLocalBool, A0, L);
44742}
44743bool ByteCodeEmitter::emitSetLocalFixedPoint( uint32_t A0, SourceInfo L) {
44744 return emitOp<uint32_t>(OP_SetLocalFixedPoint, A0, L);
44745}
44746bool ByteCodeEmitter::emitSetLocalPtr( uint32_t A0, SourceInfo L) {
44747 return emitOp<uint32_t>(OP_SetLocalPtr, A0, L);
44748}
44749bool ByteCodeEmitter::emitSetLocalMemberPtr( uint32_t A0, SourceInfo L) {
44750 return emitOp<uint32_t>(OP_SetLocalMemberPtr, A0, L);
44751}
44752bool ByteCodeEmitter::emitSetLocalFloat( uint32_t A0, SourceInfo L) {
44753 return emitOp<uint32_t>(OP_SetLocalFloat, A0, L);
44754}
44755#endif
44756#ifdef GET_OPCODE_NAMES
44757OP_SetParamSint8,
44758OP_SetParamUint8,
44759OP_SetParamSint16,
44760OP_SetParamUint16,
44761OP_SetParamSint32,
44762OP_SetParamUint32,
44763OP_SetParamSint64,
44764OP_SetParamUint64,
44765OP_SetParamIntAP,
44766OP_SetParamIntAPS,
44767OP_SetParamBool,
44768OP_SetParamFixedPoint,
44769OP_SetParamPtr,
44770OP_SetParamMemberPtr,
44771OP_SetParamFloat,
44772#endif
44773#ifdef GET_INTERPFN_LIST
44774&Interp_SetParamSint8,
44775&Interp_SetParamUint8,
44776&Interp_SetParamSint16,
44777&Interp_SetParamUint16,
44778&Interp_SetParamSint32,
44779&Interp_SetParamUint32,
44780&Interp_SetParamSint64,
44781&Interp_SetParamUint64,
44782&Interp_SetParamIntAP,
44783&Interp_SetParamIntAPS,
44784&Interp_SetParamBool,
44785&Interp_SetParamFixedPoint,
44786&Interp_SetParamPtr,
44787&Interp_SetParamMemberPtr,
44788&Interp_SetParamFloat,
44789#endif
44790#ifdef GET_INTERPFN_DISPATCHERS
44791PRESERVE_NONE
44792static bool Interp_SetParamSint8(InterpState &S) {
44793 {
44794 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44795 SetParam<PT_Sint8>(S, V0);
44796 }
44797#if USE_TAILCALLS
44798 MUSTTAIL return InterpNext(S);
44799#else
44800 return true;
44801#endif
44802}
44803PRESERVE_NONE
44804static bool Interp_SetParamUint8(InterpState &S) {
44805 {
44806 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44807 SetParam<PT_Uint8>(S, V0);
44808 }
44809#if USE_TAILCALLS
44810 MUSTTAIL return InterpNext(S);
44811#else
44812 return true;
44813#endif
44814}
44815PRESERVE_NONE
44816static bool Interp_SetParamSint16(InterpState &S) {
44817 {
44818 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44819 SetParam<PT_Sint16>(S, V0);
44820 }
44821#if USE_TAILCALLS
44822 MUSTTAIL return InterpNext(S);
44823#else
44824 return true;
44825#endif
44826}
44827PRESERVE_NONE
44828static bool Interp_SetParamUint16(InterpState &S) {
44829 {
44830 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44831 SetParam<PT_Uint16>(S, V0);
44832 }
44833#if USE_TAILCALLS
44834 MUSTTAIL return InterpNext(S);
44835#else
44836 return true;
44837#endif
44838}
44839PRESERVE_NONE
44840static bool Interp_SetParamSint32(InterpState &S) {
44841 {
44842 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44843 SetParam<PT_Sint32>(S, V0);
44844 }
44845#if USE_TAILCALLS
44846 MUSTTAIL return InterpNext(S);
44847#else
44848 return true;
44849#endif
44850}
44851PRESERVE_NONE
44852static bool Interp_SetParamUint32(InterpState &S) {
44853 {
44854 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44855 SetParam<PT_Uint32>(S, V0);
44856 }
44857#if USE_TAILCALLS
44858 MUSTTAIL return InterpNext(S);
44859#else
44860 return true;
44861#endif
44862}
44863PRESERVE_NONE
44864static bool Interp_SetParamSint64(InterpState &S) {
44865 {
44866 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44867 SetParam<PT_Sint64>(S, V0);
44868 }
44869#if USE_TAILCALLS
44870 MUSTTAIL return InterpNext(S);
44871#else
44872 return true;
44873#endif
44874}
44875PRESERVE_NONE
44876static bool Interp_SetParamUint64(InterpState &S) {
44877 {
44878 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44879 SetParam<PT_Uint64>(S, V0);
44880 }
44881#if USE_TAILCALLS
44882 MUSTTAIL return InterpNext(S);
44883#else
44884 return true;
44885#endif
44886}
44887PRESERVE_NONE
44888static bool Interp_SetParamIntAP(InterpState &S) {
44889 {
44890 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44891 SetParam<PT_IntAP>(S, V0);
44892 }
44893#if USE_TAILCALLS
44894 MUSTTAIL return InterpNext(S);
44895#else
44896 return true;
44897#endif
44898}
44899PRESERVE_NONE
44900static bool Interp_SetParamIntAPS(InterpState &S) {
44901 {
44902 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44903 SetParam<PT_IntAPS>(S, V0);
44904 }
44905#if USE_TAILCALLS
44906 MUSTTAIL return InterpNext(S);
44907#else
44908 return true;
44909#endif
44910}
44911PRESERVE_NONE
44912static bool Interp_SetParamBool(InterpState &S) {
44913 {
44914 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44915 SetParam<PT_Bool>(S, V0);
44916 }
44917#if USE_TAILCALLS
44918 MUSTTAIL return InterpNext(S);
44919#else
44920 return true;
44921#endif
44922}
44923PRESERVE_NONE
44924static bool Interp_SetParamFixedPoint(InterpState &S) {
44925 {
44926 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44927 SetParam<PT_FixedPoint>(S, V0);
44928 }
44929#if USE_TAILCALLS
44930 MUSTTAIL return InterpNext(S);
44931#else
44932 return true;
44933#endif
44934}
44935PRESERVE_NONE
44936static bool Interp_SetParamPtr(InterpState &S) {
44937 {
44938 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44939 SetParam<PT_Ptr>(S, V0);
44940 }
44941#if USE_TAILCALLS
44942 MUSTTAIL return InterpNext(S);
44943#else
44944 return true;
44945#endif
44946}
44947PRESERVE_NONE
44948static bool Interp_SetParamMemberPtr(InterpState &S) {
44949 {
44950 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44951 SetParam<PT_MemberPtr>(S, V0);
44952 }
44953#if USE_TAILCALLS
44954 MUSTTAIL return InterpNext(S);
44955#else
44956 return true;
44957#endif
44958}
44959PRESERVE_NONE
44960static bool Interp_SetParamFloat(InterpState &S) {
44961 {
44962 const auto V0 = ReadArg<uint32_t>(S, S.PC);
44963 SetParam<PT_Float>(S, V0);
44964 }
44965#if USE_TAILCALLS
44966 MUSTTAIL return InterpNext(S);
44967#else
44968 return true;
44969#endif
44970}
44971#endif
44972#ifdef GET_DISASM
44973case OP_SetParamSint8:
44974 Text.Op = PrintName("SetParamSint8");
44975 Text.Args.push_back(printArg<uint32_t>(PC));
44976 break;
44977case OP_SetParamUint8:
44978 Text.Op = PrintName("SetParamUint8");
44979 Text.Args.push_back(printArg<uint32_t>(PC));
44980 break;
44981case OP_SetParamSint16:
44982 Text.Op = PrintName("SetParamSint16");
44983 Text.Args.push_back(printArg<uint32_t>(PC));
44984 break;
44985case OP_SetParamUint16:
44986 Text.Op = PrintName("SetParamUint16");
44987 Text.Args.push_back(printArg<uint32_t>(PC));
44988 break;
44989case OP_SetParamSint32:
44990 Text.Op = PrintName("SetParamSint32");
44991 Text.Args.push_back(printArg<uint32_t>(PC));
44992 break;
44993case OP_SetParamUint32:
44994 Text.Op = PrintName("SetParamUint32");
44995 Text.Args.push_back(printArg<uint32_t>(PC));
44996 break;
44997case OP_SetParamSint64:
44998 Text.Op = PrintName("SetParamSint64");
44999 Text.Args.push_back(printArg<uint32_t>(PC));
45000 break;
45001case OP_SetParamUint64:
45002 Text.Op = PrintName("SetParamUint64");
45003 Text.Args.push_back(printArg<uint32_t>(PC));
45004 break;
45005case OP_SetParamIntAP:
45006 Text.Op = PrintName("SetParamIntAP");
45007 Text.Args.push_back(printArg<uint32_t>(PC));
45008 break;
45009case OP_SetParamIntAPS:
45010 Text.Op = PrintName("SetParamIntAPS");
45011 Text.Args.push_back(printArg<uint32_t>(PC));
45012 break;
45013case OP_SetParamBool:
45014 Text.Op = PrintName("SetParamBool");
45015 Text.Args.push_back(printArg<uint32_t>(PC));
45016 break;
45017case OP_SetParamFixedPoint:
45018 Text.Op = PrintName("SetParamFixedPoint");
45019 Text.Args.push_back(printArg<uint32_t>(PC));
45020 break;
45021case OP_SetParamPtr:
45022 Text.Op = PrintName("SetParamPtr");
45023 Text.Args.push_back(printArg<uint32_t>(PC));
45024 break;
45025case OP_SetParamMemberPtr:
45026 Text.Op = PrintName("SetParamMemberPtr");
45027 Text.Args.push_back(printArg<uint32_t>(PC));
45028 break;
45029case OP_SetParamFloat:
45030 Text.Op = PrintName("SetParamFloat");
45031 Text.Args.push_back(printArg<uint32_t>(PC));
45032 break;
45033#endif
45034#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
45035bool emitSetParamSint8( uint32_t , SourceInfo);
45036bool emitSetParamUint8( uint32_t , SourceInfo);
45037bool emitSetParamSint16( uint32_t , SourceInfo);
45038bool emitSetParamUint16( uint32_t , SourceInfo);
45039bool emitSetParamSint32( uint32_t , SourceInfo);
45040bool emitSetParamUint32( uint32_t , SourceInfo);
45041bool emitSetParamSint64( uint32_t , SourceInfo);
45042bool emitSetParamUint64( uint32_t , SourceInfo);
45043bool emitSetParamIntAP( uint32_t , SourceInfo);
45044bool emitSetParamIntAPS( uint32_t , SourceInfo);
45045bool emitSetParamBool( uint32_t , SourceInfo);
45046bool emitSetParamFixedPoint( uint32_t , SourceInfo);
45047bool emitSetParamPtr( uint32_t , SourceInfo);
45048bool emitSetParamMemberPtr( uint32_t , SourceInfo);
45049bool emitSetParamFloat( uint32_t , SourceInfo);
45050#endif
45051#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
45052[[nodiscard]] bool emitSetParam(PrimType, uint32_t, SourceInfo I);
45053#endif
45054#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
45055bool
45056#if defined(GET_EVAL_IMPL)
45057EvalEmitter
45058#else
45059ByteCodeEmitter
45060#endif
45061::emitSetParam(PrimType T0, uint32_t A0, SourceInfo I) {
45062 switch (T0) {
45063 case PT_Sint8:
45064 return emitSetParamSint8(A0, I);
45065 case PT_Uint8:
45066 return emitSetParamUint8(A0, I);
45067 case PT_Sint16:
45068 return emitSetParamSint16(A0, I);
45069 case PT_Uint16:
45070 return emitSetParamUint16(A0, I);
45071 case PT_Sint32:
45072 return emitSetParamSint32(A0, I);
45073 case PT_Uint32:
45074 return emitSetParamUint32(A0, I);
45075 case PT_Sint64:
45076 return emitSetParamSint64(A0, I);
45077 case PT_Uint64:
45078 return emitSetParamUint64(A0, I);
45079 case PT_IntAP:
45080 return emitSetParamIntAP(A0, I);
45081 case PT_IntAPS:
45082 return emitSetParamIntAPS(A0, I);
45083 case PT_Bool:
45084 return emitSetParamBool(A0, I);
45085 case PT_FixedPoint:
45086 return emitSetParamFixedPoint(A0, I);
45087 case PT_Ptr:
45088 return emitSetParamPtr(A0, I);
45089 case PT_MemberPtr:
45090 return emitSetParamMemberPtr(A0, I);
45091 case PT_Float:
45092 return emitSetParamFloat(A0, I);
45093 }
45094 llvm_unreachable("invalid enum value");
45095}
45096#endif
45097#ifdef GET_LINK_IMPL
45098bool ByteCodeEmitter::emitSetParamSint8( uint32_t A0, SourceInfo L) {
45099 return emitOp<uint32_t>(OP_SetParamSint8, A0, L);
45100}
45101bool ByteCodeEmitter::emitSetParamUint8( uint32_t A0, SourceInfo L) {
45102 return emitOp<uint32_t>(OP_SetParamUint8, A0, L);
45103}
45104bool ByteCodeEmitter::emitSetParamSint16( uint32_t A0, SourceInfo L) {
45105 return emitOp<uint32_t>(OP_SetParamSint16, A0, L);
45106}
45107bool ByteCodeEmitter::emitSetParamUint16( uint32_t A0, SourceInfo L) {
45108 return emitOp<uint32_t>(OP_SetParamUint16, A0, L);
45109}
45110bool ByteCodeEmitter::emitSetParamSint32( uint32_t A0, SourceInfo L) {
45111 return emitOp<uint32_t>(OP_SetParamSint32, A0, L);
45112}
45113bool ByteCodeEmitter::emitSetParamUint32( uint32_t A0, SourceInfo L) {
45114 return emitOp<uint32_t>(OP_SetParamUint32, A0, L);
45115}
45116bool ByteCodeEmitter::emitSetParamSint64( uint32_t A0, SourceInfo L) {
45117 return emitOp<uint32_t>(OP_SetParamSint64, A0, L);
45118}
45119bool ByteCodeEmitter::emitSetParamUint64( uint32_t A0, SourceInfo L) {
45120 return emitOp<uint32_t>(OP_SetParamUint64, A0, L);
45121}
45122bool ByteCodeEmitter::emitSetParamIntAP( uint32_t A0, SourceInfo L) {
45123 return emitOp<uint32_t>(OP_SetParamIntAP, A0, L);
45124}
45125bool ByteCodeEmitter::emitSetParamIntAPS( uint32_t A0, SourceInfo L) {
45126 return emitOp<uint32_t>(OP_SetParamIntAPS, A0, L);
45127}
45128bool ByteCodeEmitter::emitSetParamBool( uint32_t A0, SourceInfo L) {
45129 return emitOp<uint32_t>(OP_SetParamBool, A0, L);
45130}
45131bool ByteCodeEmitter::emitSetParamFixedPoint( uint32_t A0, SourceInfo L) {
45132 return emitOp<uint32_t>(OP_SetParamFixedPoint, A0, L);
45133}
45134bool ByteCodeEmitter::emitSetParamPtr( uint32_t A0, SourceInfo L) {
45135 return emitOp<uint32_t>(OP_SetParamPtr, A0, L);
45136}
45137bool ByteCodeEmitter::emitSetParamMemberPtr( uint32_t A0, SourceInfo L) {
45138 return emitOp<uint32_t>(OP_SetParamMemberPtr, A0, L);
45139}
45140bool ByteCodeEmitter::emitSetParamFloat( uint32_t A0, SourceInfo L) {
45141 return emitOp<uint32_t>(OP_SetParamFloat, A0, L);
45142}
45143#endif
45144#ifdef GET_EVAL_IMPL
45145bool EvalEmitter::emitSetParamSint8( uint32_t A0, SourceInfo L) {
45146 if (!isActive()) return true;
45147 CurrentSource = L;
45148 return SetParam<PT_Sint8>(S, A0);
45149}
45150bool EvalEmitter::emitSetParamUint8( uint32_t A0, SourceInfo L) {
45151 if (!isActive()) return true;
45152 CurrentSource = L;
45153 return SetParam<PT_Uint8>(S, A0);
45154}
45155bool EvalEmitter::emitSetParamSint16( uint32_t A0, SourceInfo L) {
45156 if (!isActive()) return true;
45157 CurrentSource = L;
45158 return SetParam<PT_Sint16>(S, A0);
45159}
45160bool EvalEmitter::emitSetParamUint16( uint32_t A0, SourceInfo L) {
45161 if (!isActive()) return true;
45162 CurrentSource = L;
45163 return SetParam<PT_Uint16>(S, A0);
45164}
45165bool EvalEmitter::emitSetParamSint32( uint32_t A0, SourceInfo L) {
45166 if (!isActive()) return true;
45167 CurrentSource = L;
45168 return SetParam<PT_Sint32>(S, A0);
45169}
45170bool EvalEmitter::emitSetParamUint32( uint32_t A0, SourceInfo L) {
45171 if (!isActive()) return true;
45172 CurrentSource = L;
45173 return SetParam<PT_Uint32>(S, A0);
45174}
45175bool EvalEmitter::emitSetParamSint64( uint32_t A0, SourceInfo L) {
45176 if (!isActive()) return true;
45177 CurrentSource = L;
45178 return SetParam<PT_Sint64>(S, A0);
45179}
45180bool EvalEmitter::emitSetParamUint64( uint32_t A0, SourceInfo L) {
45181 if (!isActive()) return true;
45182 CurrentSource = L;
45183 return SetParam<PT_Uint64>(S, A0);
45184}
45185bool EvalEmitter::emitSetParamIntAP( uint32_t A0, SourceInfo L) {
45186 if (!isActive()) return true;
45187 CurrentSource = L;
45188 return SetParam<PT_IntAP>(S, A0);
45189}
45190bool EvalEmitter::emitSetParamIntAPS( uint32_t A0, SourceInfo L) {
45191 if (!isActive()) return true;
45192 CurrentSource = L;
45193 return SetParam<PT_IntAPS>(S, A0);
45194}
45195bool EvalEmitter::emitSetParamBool( uint32_t A0, SourceInfo L) {
45196 if (!isActive()) return true;
45197 CurrentSource = L;
45198 return SetParam<PT_Bool>(S, A0);
45199}
45200bool EvalEmitter::emitSetParamFixedPoint( uint32_t A0, SourceInfo L) {
45201 if (!isActive()) return true;
45202 CurrentSource = L;
45203 return SetParam<PT_FixedPoint>(S, A0);
45204}
45205bool EvalEmitter::emitSetParamPtr( uint32_t A0, SourceInfo L) {
45206 if (!isActive()) return true;
45207 CurrentSource = L;
45208 return SetParam<PT_Ptr>(S, A0);
45209}
45210bool EvalEmitter::emitSetParamMemberPtr( uint32_t A0, SourceInfo L) {
45211 if (!isActive()) return true;
45212 CurrentSource = L;
45213 return SetParam<PT_MemberPtr>(S, A0);
45214}
45215bool EvalEmitter::emitSetParamFloat( uint32_t A0, SourceInfo L) {
45216 if (!isActive()) return true;
45217 CurrentSource = L;
45218 return SetParam<PT_Float>(S, A0);
45219}
45220#endif
45221#ifdef GET_OPCODE_NAMES
45222OP_ShiftFixedPoint,
45223#endif
45224#ifdef GET_INTERPFN_LIST
45225&Interp_ShiftFixedPoint,
45226#endif
45227#ifdef GET_INTERPFN_DISPATCHERS
45228PRESERVE_NONE
45229static bool Interp_ShiftFixedPoint(InterpState &S) {
45230 {
45231 CodePtr OpPC = S.PC;
45232 const auto V0 = ReadArg<bool>(S, S.PC);
45233 if (!ShiftFixedPoint(S, OpPC, V0)) return false;
45234 }
45235#if USE_TAILCALLS
45236 MUSTTAIL return InterpNext(S);
45237#else
45238 return true;
45239#endif
45240}
45241#endif
45242#ifdef GET_DISASM
45243case OP_ShiftFixedPoint:
45244 Text.Op = PrintName("ShiftFixedPoint");
45245 Text.Args.push_back(printArg<bool>(PC));
45246 break;
45247#endif
45248#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
45249bool emitShiftFixedPoint( bool , SourceInfo);
45250#endif
45251#ifdef GET_LINK_IMPL
45252bool ByteCodeEmitter::emitShiftFixedPoint( bool A0, SourceInfo L) {
45253 return emitOp<bool>(OP_ShiftFixedPoint, A0, L);
45254}
45255#endif
45256#ifdef GET_EVAL_IMPL
45257bool EvalEmitter::emitShiftFixedPoint( bool A0, SourceInfo L) {
45258 if (!isActive()) return true;
45259 CurrentSource = L;
45260 return ShiftFixedPoint(S, CodePtr(), A0);
45261}
45262#endif
45263#ifdef GET_OPCODE_NAMES
45264OP_ShlSint8Sint8,
45265OP_ShlSint8Uint8,
45266OP_ShlSint8Sint16,
45267OP_ShlSint8Uint16,
45268OP_ShlSint8Sint32,
45269OP_ShlSint8Uint32,
45270OP_ShlSint8Sint64,
45271OP_ShlSint8Uint64,
45272OP_ShlSint8IntAP,
45273OP_ShlSint8IntAPS,
45274OP_ShlUint8Sint8,
45275OP_ShlUint8Uint8,
45276OP_ShlUint8Sint16,
45277OP_ShlUint8Uint16,
45278OP_ShlUint8Sint32,
45279OP_ShlUint8Uint32,
45280OP_ShlUint8Sint64,
45281OP_ShlUint8Uint64,
45282OP_ShlUint8IntAP,
45283OP_ShlUint8IntAPS,
45284OP_ShlSint16Sint8,
45285OP_ShlSint16Uint8,
45286OP_ShlSint16Sint16,
45287OP_ShlSint16Uint16,
45288OP_ShlSint16Sint32,
45289OP_ShlSint16Uint32,
45290OP_ShlSint16Sint64,
45291OP_ShlSint16Uint64,
45292OP_ShlSint16IntAP,
45293OP_ShlSint16IntAPS,
45294OP_ShlUint16Sint8,
45295OP_ShlUint16Uint8,
45296OP_ShlUint16Sint16,
45297OP_ShlUint16Uint16,
45298OP_ShlUint16Sint32,
45299OP_ShlUint16Uint32,
45300OP_ShlUint16Sint64,
45301OP_ShlUint16Uint64,
45302OP_ShlUint16IntAP,
45303OP_ShlUint16IntAPS,
45304OP_ShlSint32Sint8,
45305OP_ShlSint32Uint8,
45306OP_ShlSint32Sint16,
45307OP_ShlSint32Uint16,
45308OP_ShlSint32Sint32,
45309OP_ShlSint32Uint32,
45310OP_ShlSint32Sint64,
45311OP_ShlSint32Uint64,
45312OP_ShlSint32IntAP,
45313OP_ShlSint32IntAPS,
45314OP_ShlUint32Sint8,
45315OP_ShlUint32Uint8,
45316OP_ShlUint32Sint16,
45317OP_ShlUint32Uint16,
45318OP_ShlUint32Sint32,
45319OP_ShlUint32Uint32,
45320OP_ShlUint32Sint64,
45321OP_ShlUint32Uint64,
45322OP_ShlUint32IntAP,
45323OP_ShlUint32IntAPS,
45324OP_ShlSint64Sint8,
45325OP_ShlSint64Uint8,
45326OP_ShlSint64Sint16,
45327OP_ShlSint64Uint16,
45328OP_ShlSint64Sint32,
45329OP_ShlSint64Uint32,
45330OP_ShlSint64Sint64,
45331OP_ShlSint64Uint64,
45332OP_ShlSint64IntAP,
45333OP_ShlSint64IntAPS,
45334OP_ShlUint64Sint8,
45335OP_ShlUint64Uint8,
45336OP_ShlUint64Sint16,
45337OP_ShlUint64Uint16,
45338OP_ShlUint64Sint32,
45339OP_ShlUint64Uint32,
45340OP_ShlUint64Sint64,
45341OP_ShlUint64Uint64,
45342OP_ShlUint64IntAP,
45343OP_ShlUint64IntAPS,
45344OP_ShlIntAPSint8,
45345OP_ShlIntAPUint8,
45346OP_ShlIntAPSint16,
45347OP_ShlIntAPUint16,
45348OP_ShlIntAPSint32,
45349OP_ShlIntAPUint32,
45350OP_ShlIntAPSint64,
45351OP_ShlIntAPUint64,
45352OP_ShlIntAPIntAP,
45353OP_ShlIntAPIntAPS,
45354OP_ShlIntAPSSint8,
45355OP_ShlIntAPSUint8,
45356OP_ShlIntAPSSint16,
45357OP_ShlIntAPSUint16,
45358OP_ShlIntAPSSint32,
45359OP_ShlIntAPSUint32,
45360OP_ShlIntAPSSint64,
45361OP_ShlIntAPSUint64,
45362OP_ShlIntAPSIntAP,
45363OP_ShlIntAPSIntAPS,
45364#endif
45365#ifdef GET_INTERPFN_LIST
45366&Interp_ShlSint8Sint8,
45367&Interp_ShlSint8Uint8,
45368&Interp_ShlSint8Sint16,
45369&Interp_ShlSint8Uint16,
45370&Interp_ShlSint8Sint32,
45371&Interp_ShlSint8Uint32,
45372&Interp_ShlSint8Sint64,
45373&Interp_ShlSint8Uint64,
45374&Interp_ShlSint8IntAP,
45375&Interp_ShlSint8IntAPS,
45376&Interp_ShlUint8Sint8,
45377&Interp_ShlUint8Uint8,
45378&Interp_ShlUint8Sint16,
45379&Interp_ShlUint8Uint16,
45380&Interp_ShlUint8Sint32,
45381&Interp_ShlUint8Uint32,
45382&Interp_ShlUint8Sint64,
45383&Interp_ShlUint8Uint64,
45384&Interp_ShlUint8IntAP,
45385&Interp_ShlUint8IntAPS,
45386&Interp_ShlSint16Sint8,
45387&Interp_ShlSint16Uint8,
45388&Interp_ShlSint16Sint16,
45389&Interp_ShlSint16Uint16,
45390&Interp_ShlSint16Sint32,
45391&Interp_ShlSint16Uint32,
45392&Interp_ShlSint16Sint64,
45393&Interp_ShlSint16Uint64,
45394&Interp_ShlSint16IntAP,
45395&Interp_ShlSint16IntAPS,
45396&Interp_ShlUint16Sint8,
45397&Interp_ShlUint16Uint8,
45398&Interp_ShlUint16Sint16,
45399&Interp_ShlUint16Uint16,
45400&Interp_ShlUint16Sint32,
45401&Interp_ShlUint16Uint32,
45402&Interp_ShlUint16Sint64,
45403&Interp_ShlUint16Uint64,
45404&Interp_ShlUint16IntAP,
45405&Interp_ShlUint16IntAPS,
45406&Interp_ShlSint32Sint8,
45407&Interp_ShlSint32Uint8,
45408&Interp_ShlSint32Sint16,
45409&Interp_ShlSint32Uint16,
45410&Interp_ShlSint32Sint32,
45411&Interp_ShlSint32Uint32,
45412&Interp_ShlSint32Sint64,
45413&Interp_ShlSint32Uint64,
45414&Interp_ShlSint32IntAP,
45415&Interp_ShlSint32IntAPS,
45416&Interp_ShlUint32Sint8,
45417&Interp_ShlUint32Uint8,
45418&Interp_ShlUint32Sint16,
45419&Interp_ShlUint32Uint16,
45420&Interp_ShlUint32Sint32,
45421&Interp_ShlUint32Uint32,
45422&Interp_ShlUint32Sint64,
45423&Interp_ShlUint32Uint64,
45424&Interp_ShlUint32IntAP,
45425&Interp_ShlUint32IntAPS,
45426&Interp_ShlSint64Sint8,
45427&Interp_ShlSint64Uint8,
45428&Interp_ShlSint64Sint16,
45429&Interp_ShlSint64Uint16,
45430&Interp_ShlSint64Sint32,
45431&Interp_ShlSint64Uint32,
45432&Interp_ShlSint64Sint64,
45433&Interp_ShlSint64Uint64,
45434&Interp_ShlSint64IntAP,
45435&Interp_ShlSint64IntAPS,
45436&Interp_ShlUint64Sint8,
45437&Interp_ShlUint64Uint8,
45438&Interp_ShlUint64Sint16,
45439&Interp_ShlUint64Uint16,
45440&Interp_ShlUint64Sint32,
45441&Interp_ShlUint64Uint32,
45442&Interp_ShlUint64Sint64,
45443&Interp_ShlUint64Uint64,
45444&Interp_ShlUint64IntAP,
45445&Interp_ShlUint64IntAPS,
45446&Interp_ShlIntAPSint8,
45447&Interp_ShlIntAPUint8,
45448&Interp_ShlIntAPSint16,
45449&Interp_ShlIntAPUint16,
45450&Interp_ShlIntAPSint32,
45451&Interp_ShlIntAPUint32,
45452&Interp_ShlIntAPSint64,
45453&Interp_ShlIntAPUint64,
45454&Interp_ShlIntAPIntAP,
45455&Interp_ShlIntAPIntAPS,
45456&Interp_ShlIntAPSSint8,
45457&Interp_ShlIntAPSUint8,
45458&Interp_ShlIntAPSSint16,
45459&Interp_ShlIntAPSUint16,
45460&Interp_ShlIntAPSSint32,
45461&Interp_ShlIntAPSUint32,
45462&Interp_ShlIntAPSSint64,
45463&Interp_ShlIntAPSUint64,
45464&Interp_ShlIntAPSIntAP,
45465&Interp_ShlIntAPSIntAPS,
45466#endif
45467#ifdef GET_INTERPFN_DISPATCHERS
45468PRESERVE_NONE
45469static bool Interp_ShlSint8Sint8(InterpState &S) {
45470 if (!Shl<PT_Sint8, PT_Sint8>(S, S.PC)) return false;
45471#if USE_TAILCALLS
45472 MUSTTAIL return InterpNext(S);
45473#else
45474 return true;
45475#endif
45476}
45477PRESERVE_NONE
45478static bool Interp_ShlSint8Uint8(InterpState &S) {
45479 if (!Shl<PT_Sint8, PT_Uint8>(S, S.PC)) return false;
45480#if USE_TAILCALLS
45481 MUSTTAIL return InterpNext(S);
45482#else
45483 return true;
45484#endif
45485}
45486PRESERVE_NONE
45487static bool Interp_ShlSint8Sint16(InterpState &S) {
45488 if (!Shl<PT_Sint8, PT_Sint16>(S, S.PC)) return false;
45489#if USE_TAILCALLS
45490 MUSTTAIL return InterpNext(S);
45491#else
45492 return true;
45493#endif
45494}
45495PRESERVE_NONE
45496static bool Interp_ShlSint8Uint16(InterpState &S) {
45497 if (!Shl<PT_Sint8, PT_Uint16>(S, S.PC)) return false;
45498#if USE_TAILCALLS
45499 MUSTTAIL return InterpNext(S);
45500#else
45501 return true;
45502#endif
45503}
45504PRESERVE_NONE
45505static bool Interp_ShlSint8Sint32(InterpState &S) {
45506 if (!Shl<PT_Sint8, PT_Sint32>(S, S.PC)) return false;
45507#if USE_TAILCALLS
45508 MUSTTAIL return InterpNext(S);
45509#else
45510 return true;
45511#endif
45512}
45513PRESERVE_NONE
45514static bool Interp_ShlSint8Uint32(InterpState &S) {
45515 if (!Shl<PT_Sint8, PT_Uint32>(S, S.PC)) return false;
45516#if USE_TAILCALLS
45517 MUSTTAIL return InterpNext(S);
45518#else
45519 return true;
45520#endif
45521}
45522PRESERVE_NONE
45523static bool Interp_ShlSint8Sint64(InterpState &S) {
45524 if (!Shl<PT_Sint8, PT_Sint64>(S, S.PC)) return false;
45525#if USE_TAILCALLS
45526 MUSTTAIL return InterpNext(S);
45527#else
45528 return true;
45529#endif
45530}
45531PRESERVE_NONE
45532static bool Interp_ShlSint8Uint64(InterpState &S) {
45533 if (!Shl<PT_Sint8, PT_Uint64>(S, S.PC)) return false;
45534#if USE_TAILCALLS
45535 MUSTTAIL return InterpNext(S);
45536#else
45537 return true;
45538#endif
45539}
45540PRESERVE_NONE
45541static bool Interp_ShlSint8IntAP(InterpState &S) {
45542 if (!Shl<PT_Sint8, PT_IntAP>(S, S.PC)) return false;
45543#if USE_TAILCALLS
45544 MUSTTAIL return InterpNext(S);
45545#else
45546 return true;
45547#endif
45548}
45549PRESERVE_NONE
45550static bool Interp_ShlSint8IntAPS(InterpState &S) {
45551 if (!Shl<PT_Sint8, PT_IntAPS>(S, S.PC)) return false;
45552#if USE_TAILCALLS
45553 MUSTTAIL return InterpNext(S);
45554#else
45555 return true;
45556#endif
45557}
45558PRESERVE_NONE
45559static bool Interp_ShlUint8Sint8(InterpState &S) {
45560 if (!Shl<PT_Uint8, PT_Sint8>(S, S.PC)) return false;
45561#if USE_TAILCALLS
45562 MUSTTAIL return InterpNext(S);
45563#else
45564 return true;
45565#endif
45566}
45567PRESERVE_NONE
45568static bool Interp_ShlUint8Uint8(InterpState &S) {
45569 if (!Shl<PT_Uint8, PT_Uint8>(S, S.PC)) return false;
45570#if USE_TAILCALLS
45571 MUSTTAIL return InterpNext(S);
45572#else
45573 return true;
45574#endif
45575}
45576PRESERVE_NONE
45577static bool Interp_ShlUint8Sint16(InterpState &S) {
45578 if (!Shl<PT_Uint8, PT_Sint16>(S, S.PC)) return false;
45579#if USE_TAILCALLS
45580 MUSTTAIL return InterpNext(S);
45581#else
45582 return true;
45583#endif
45584}
45585PRESERVE_NONE
45586static bool Interp_ShlUint8Uint16(InterpState &S) {
45587 if (!Shl<PT_Uint8, PT_Uint16>(S, S.PC)) return false;
45588#if USE_TAILCALLS
45589 MUSTTAIL return InterpNext(S);
45590#else
45591 return true;
45592#endif
45593}
45594PRESERVE_NONE
45595static bool Interp_ShlUint8Sint32(InterpState &S) {
45596 if (!Shl<PT_Uint8, PT_Sint32>(S, S.PC)) return false;
45597#if USE_TAILCALLS
45598 MUSTTAIL return InterpNext(S);
45599#else
45600 return true;
45601#endif
45602}
45603PRESERVE_NONE
45604static bool Interp_ShlUint8Uint32(InterpState &S) {
45605 if (!Shl<PT_Uint8, PT_Uint32>(S, S.PC)) return false;
45606#if USE_TAILCALLS
45607 MUSTTAIL return InterpNext(S);
45608#else
45609 return true;
45610#endif
45611}
45612PRESERVE_NONE
45613static bool Interp_ShlUint8Sint64(InterpState &S) {
45614 if (!Shl<PT_Uint8, PT_Sint64>(S, S.PC)) return false;
45615#if USE_TAILCALLS
45616 MUSTTAIL return InterpNext(S);
45617#else
45618 return true;
45619#endif
45620}
45621PRESERVE_NONE
45622static bool Interp_ShlUint8Uint64(InterpState &S) {
45623 if (!Shl<PT_Uint8, PT_Uint64>(S, S.PC)) return false;
45624#if USE_TAILCALLS
45625 MUSTTAIL return InterpNext(S);
45626#else
45627 return true;
45628#endif
45629}
45630PRESERVE_NONE
45631static bool Interp_ShlUint8IntAP(InterpState &S) {
45632 if (!Shl<PT_Uint8, PT_IntAP>(S, S.PC)) return false;
45633#if USE_TAILCALLS
45634 MUSTTAIL return InterpNext(S);
45635#else
45636 return true;
45637#endif
45638}
45639PRESERVE_NONE
45640static bool Interp_ShlUint8IntAPS(InterpState &S) {
45641 if (!Shl<PT_Uint8, PT_IntAPS>(S, S.PC)) return false;
45642#if USE_TAILCALLS
45643 MUSTTAIL return InterpNext(S);
45644#else
45645 return true;
45646#endif
45647}
45648PRESERVE_NONE
45649static bool Interp_ShlSint16Sint8(InterpState &S) {
45650 if (!Shl<PT_Sint16, PT_Sint8>(S, S.PC)) return false;
45651#if USE_TAILCALLS
45652 MUSTTAIL return InterpNext(S);
45653#else
45654 return true;
45655#endif
45656}
45657PRESERVE_NONE
45658static bool Interp_ShlSint16Uint8(InterpState &S) {
45659 if (!Shl<PT_Sint16, PT_Uint8>(S, S.PC)) return false;
45660#if USE_TAILCALLS
45661 MUSTTAIL return InterpNext(S);
45662#else
45663 return true;
45664#endif
45665}
45666PRESERVE_NONE
45667static bool Interp_ShlSint16Sint16(InterpState &S) {
45668 if (!Shl<PT_Sint16, PT_Sint16>(S, S.PC)) return false;
45669#if USE_TAILCALLS
45670 MUSTTAIL return InterpNext(S);
45671#else
45672 return true;
45673#endif
45674}
45675PRESERVE_NONE
45676static bool Interp_ShlSint16Uint16(InterpState &S) {
45677 if (!Shl<PT_Sint16, PT_Uint16>(S, S.PC)) return false;
45678#if USE_TAILCALLS
45679 MUSTTAIL return InterpNext(S);
45680#else
45681 return true;
45682#endif
45683}
45684PRESERVE_NONE
45685static bool Interp_ShlSint16Sint32(InterpState &S) {
45686 if (!Shl<PT_Sint16, PT_Sint32>(S, S.PC)) return false;
45687#if USE_TAILCALLS
45688 MUSTTAIL return InterpNext(S);
45689#else
45690 return true;
45691#endif
45692}
45693PRESERVE_NONE
45694static bool Interp_ShlSint16Uint32(InterpState &S) {
45695 if (!Shl<PT_Sint16, PT_Uint32>(S, S.PC)) return false;
45696#if USE_TAILCALLS
45697 MUSTTAIL return InterpNext(S);
45698#else
45699 return true;
45700#endif
45701}
45702PRESERVE_NONE
45703static bool Interp_ShlSint16Sint64(InterpState &S) {
45704 if (!Shl<PT_Sint16, PT_Sint64>(S, S.PC)) return false;
45705#if USE_TAILCALLS
45706 MUSTTAIL return InterpNext(S);
45707#else
45708 return true;
45709#endif
45710}
45711PRESERVE_NONE
45712static bool Interp_ShlSint16Uint64(InterpState &S) {
45713 if (!Shl<PT_Sint16, PT_Uint64>(S, S.PC)) return false;
45714#if USE_TAILCALLS
45715 MUSTTAIL return InterpNext(S);
45716#else
45717 return true;
45718#endif
45719}
45720PRESERVE_NONE
45721static bool Interp_ShlSint16IntAP(InterpState &S) {
45722 if (!Shl<PT_Sint16, PT_IntAP>(S, S.PC)) return false;
45723#if USE_TAILCALLS
45724 MUSTTAIL return InterpNext(S);
45725#else
45726 return true;
45727#endif
45728}
45729PRESERVE_NONE
45730static bool Interp_ShlSint16IntAPS(InterpState &S) {
45731 if (!Shl<PT_Sint16, PT_IntAPS>(S, S.PC)) return false;
45732#if USE_TAILCALLS
45733 MUSTTAIL return InterpNext(S);
45734#else
45735 return true;
45736#endif
45737}
45738PRESERVE_NONE
45739static bool Interp_ShlUint16Sint8(InterpState &S) {
45740 if (!Shl<PT_Uint16, PT_Sint8>(S, S.PC)) return false;
45741#if USE_TAILCALLS
45742 MUSTTAIL return InterpNext(S);
45743#else
45744 return true;
45745#endif
45746}
45747PRESERVE_NONE
45748static bool Interp_ShlUint16Uint8(InterpState &S) {
45749 if (!Shl<PT_Uint16, PT_Uint8>(S, S.PC)) return false;
45750#if USE_TAILCALLS
45751 MUSTTAIL return InterpNext(S);
45752#else
45753 return true;
45754#endif
45755}
45756PRESERVE_NONE
45757static bool Interp_ShlUint16Sint16(InterpState &S) {
45758 if (!Shl<PT_Uint16, PT_Sint16>(S, S.PC)) return false;
45759#if USE_TAILCALLS
45760 MUSTTAIL return InterpNext(S);
45761#else
45762 return true;
45763#endif
45764}
45765PRESERVE_NONE
45766static bool Interp_ShlUint16Uint16(InterpState &S) {
45767 if (!Shl<PT_Uint16, PT_Uint16>(S, S.PC)) return false;
45768#if USE_TAILCALLS
45769 MUSTTAIL return InterpNext(S);
45770#else
45771 return true;
45772#endif
45773}
45774PRESERVE_NONE
45775static bool Interp_ShlUint16Sint32(InterpState &S) {
45776 if (!Shl<PT_Uint16, PT_Sint32>(S, S.PC)) return false;
45777#if USE_TAILCALLS
45778 MUSTTAIL return InterpNext(S);
45779#else
45780 return true;
45781#endif
45782}
45783PRESERVE_NONE
45784static bool Interp_ShlUint16Uint32(InterpState &S) {
45785 if (!Shl<PT_Uint16, PT_Uint32>(S, S.PC)) return false;
45786#if USE_TAILCALLS
45787 MUSTTAIL return InterpNext(S);
45788#else
45789 return true;
45790#endif
45791}
45792PRESERVE_NONE
45793static bool Interp_ShlUint16Sint64(InterpState &S) {
45794 if (!Shl<PT_Uint16, PT_Sint64>(S, S.PC)) return false;
45795#if USE_TAILCALLS
45796 MUSTTAIL return InterpNext(S);
45797#else
45798 return true;
45799#endif
45800}
45801PRESERVE_NONE
45802static bool Interp_ShlUint16Uint64(InterpState &S) {
45803 if (!Shl<PT_Uint16, PT_Uint64>(S, S.PC)) return false;
45804#if USE_TAILCALLS
45805 MUSTTAIL return InterpNext(S);
45806#else
45807 return true;
45808#endif
45809}
45810PRESERVE_NONE
45811static bool Interp_ShlUint16IntAP(InterpState &S) {
45812 if (!Shl<PT_Uint16, PT_IntAP>(S, S.PC)) return false;
45813#if USE_TAILCALLS
45814 MUSTTAIL return InterpNext(S);
45815#else
45816 return true;
45817#endif
45818}
45819PRESERVE_NONE
45820static bool Interp_ShlUint16IntAPS(InterpState &S) {
45821 if (!Shl<PT_Uint16, PT_IntAPS>(S, S.PC)) return false;
45822#if USE_TAILCALLS
45823 MUSTTAIL return InterpNext(S);
45824#else
45825 return true;
45826#endif
45827}
45828PRESERVE_NONE
45829static bool Interp_ShlSint32Sint8(InterpState &S) {
45830 if (!Shl<PT_Sint32, PT_Sint8>(S, S.PC)) return false;
45831#if USE_TAILCALLS
45832 MUSTTAIL return InterpNext(S);
45833#else
45834 return true;
45835#endif
45836}
45837PRESERVE_NONE
45838static bool Interp_ShlSint32Uint8(InterpState &S) {
45839 if (!Shl<PT_Sint32, PT_Uint8>(S, S.PC)) return false;
45840#if USE_TAILCALLS
45841 MUSTTAIL return InterpNext(S);
45842#else
45843 return true;
45844#endif
45845}
45846PRESERVE_NONE
45847static bool Interp_ShlSint32Sint16(InterpState &S) {
45848 if (!Shl<PT_Sint32, PT_Sint16>(S, S.PC)) return false;
45849#if USE_TAILCALLS
45850 MUSTTAIL return InterpNext(S);
45851#else
45852 return true;
45853#endif
45854}
45855PRESERVE_NONE
45856static bool Interp_ShlSint32Uint16(InterpState &S) {
45857 if (!Shl<PT_Sint32, PT_Uint16>(S, S.PC)) return false;
45858#if USE_TAILCALLS
45859 MUSTTAIL return InterpNext(S);
45860#else
45861 return true;
45862#endif
45863}
45864PRESERVE_NONE
45865static bool Interp_ShlSint32Sint32(InterpState &S) {
45866 if (!Shl<PT_Sint32, PT_Sint32>(S, S.PC)) return false;
45867#if USE_TAILCALLS
45868 MUSTTAIL return InterpNext(S);
45869#else
45870 return true;
45871#endif
45872}
45873PRESERVE_NONE
45874static bool Interp_ShlSint32Uint32(InterpState &S) {
45875 if (!Shl<PT_Sint32, PT_Uint32>(S, S.PC)) return false;
45876#if USE_TAILCALLS
45877 MUSTTAIL return InterpNext(S);
45878#else
45879 return true;
45880#endif
45881}
45882PRESERVE_NONE
45883static bool Interp_ShlSint32Sint64(InterpState &S) {
45884 if (!Shl<PT_Sint32, PT_Sint64>(S, S.PC)) return false;
45885#if USE_TAILCALLS
45886 MUSTTAIL return InterpNext(S);
45887#else
45888 return true;
45889#endif
45890}
45891PRESERVE_NONE
45892static bool Interp_ShlSint32Uint64(InterpState &S) {
45893 if (!Shl<PT_Sint32, PT_Uint64>(S, S.PC)) return false;
45894#if USE_TAILCALLS
45895 MUSTTAIL return InterpNext(S);
45896#else
45897 return true;
45898#endif
45899}
45900PRESERVE_NONE
45901static bool Interp_ShlSint32IntAP(InterpState &S) {
45902 if (!Shl<PT_Sint32, PT_IntAP>(S, S.PC)) return false;
45903#if USE_TAILCALLS
45904 MUSTTAIL return InterpNext(S);
45905#else
45906 return true;
45907#endif
45908}
45909PRESERVE_NONE
45910static bool Interp_ShlSint32IntAPS(InterpState &S) {
45911 if (!Shl<PT_Sint32, PT_IntAPS>(S, S.PC)) return false;
45912#if USE_TAILCALLS
45913 MUSTTAIL return InterpNext(S);
45914#else
45915 return true;
45916#endif
45917}
45918PRESERVE_NONE
45919static bool Interp_ShlUint32Sint8(InterpState &S) {
45920 if (!Shl<PT_Uint32, PT_Sint8>(S, S.PC)) return false;
45921#if USE_TAILCALLS
45922 MUSTTAIL return InterpNext(S);
45923#else
45924 return true;
45925#endif
45926}
45927PRESERVE_NONE
45928static bool Interp_ShlUint32Uint8(InterpState &S) {
45929 if (!Shl<PT_Uint32, PT_Uint8>(S, S.PC)) return false;
45930#if USE_TAILCALLS
45931 MUSTTAIL return InterpNext(S);
45932#else
45933 return true;
45934#endif
45935}
45936PRESERVE_NONE
45937static bool Interp_ShlUint32Sint16(InterpState &S) {
45938 if (!Shl<PT_Uint32, PT_Sint16>(S, S.PC)) return false;
45939#if USE_TAILCALLS
45940 MUSTTAIL return InterpNext(S);
45941#else
45942 return true;
45943#endif
45944}
45945PRESERVE_NONE
45946static bool Interp_ShlUint32Uint16(InterpState &S) {
45947 if (!Shl<PT_Uint32, PT_Uint16>(S, S.PC)) return false;
45948#if USE_TAILCALLS
45949 MUSTTAIL return InterpNext(S);
45950#else
45951 return true;
45952#endif
45953}
45954PRESERVE_NONE
45955static bool Interp_ShlUint32Sint32(InterpState &S) {
45956 if (!Shl<PT_Uint32, PT_Sint32>(S, S.PC)) return false;
45957#if USE_TAILCALLS
45958 MUSTTAIL return InterpNext(S);
45959#else
45960 return true;
45961#endif
45962}
45963PRESERVE_NONE
45964static bool Interp_ShlUint32Uint32(InterpState &S) {
45965 if (!Shl<PT_Uint32, PT_Uint32>(S, S.PC)) return false;
45966#if USE_TAILCALLS
45967 MUSTTAIL return InterpNext(S);
45968#else
45969 return true;
45970#endif
45971}
45972PRESERVE_NONE
45973static bool Interp_ShlUint32Sint64(InterpState &S) {
45974 if (!Shl<PT_Uint32, PT_Sint64>(S, S.PC)) return false;
45975#if USE_TAILCALLS
45976 MUSTTAIL return InterpNext(S);
45977#else
45978 return true;
45979#endif
45980}
45981PRESERVE_NONE
45982static bool Interp_ShlUint32Uint64(InterpState &S) {
45983 if (!Shl<PT_Uint32, PT_Uint64>(S, S.PC)) return false;
45984#if USE_TAILCALLS
45985 MUSTTAIL return InterpNext(S);
45986#else
45987 return true;
45988#endif
45989}
45990PRESERVE_NONE
45991static bool Interp_ShlUint32IntAP(InterpState &S) {
45992 if (!Shl<PT_Uint32, PT_IntAP>(S, S.PC)) return false;
45993#if USE_TAILCALLS
45994 MUSTTAIL return InterpNext(S);
45995#else
45996 return true;
45997#endif
45998}
45999PRESERVE_NONE
46000static bool Interp_ShlUint32IntAPS(InterpState &S) {
46001 if (!Shl<PT_Uint32, PT_IntAPS>(S, S.PC)) return false;
46002#if USE_TAILCALLS
46003 MUSTTAIL return InterpNext(S);
46004#else
46005 return true;
46006#endif
46007}
46008PRESERVE_NONE
46009static bool Interp_ShlSint64Sint8(InterpState &S) {
46010 if (!Shl<PT_Sint64, PT_Sint8>(S, S.PC)) return false;
46011#if USE_TAILCALLS
46012 MUSTTAIL return InterpNext(S);
46013#else
46014 return true;
46015#endif
46016}
46017PRESERVE_NONE
46018static bool Interp_ShlSint64Uint8(InterpState &S) {
46019 if (!Shl<PT_Sint64, PT_Uint8>(S, S.PC)) return false;
46020#if USE_TAILCALLS
46021 MUSTTAIL return InterpNext(S);
46022#else
46023 return true;
46024#endif
46025}
46026PRESERVE_NONE
46027static bool Interp_ShlSint64Sint16(InterpState &S) {
46028 if (!Shl<PT_Sint64, PT_Sint16>(S, S.PC)) return false;
46029#if USE_TAILCALLS
46030 MUSTTAIL return InterpNext(S);
46031#else
46032 return true;
46033#endif
46034}
46035PRESERVE_NONE
46036static bool Interp_ShlSint64Uint16(InterpState &S) {
46037 if (!Shl<PT_Sint64, PT_Uint16>(S, S.PC)) return false;
46038#if USE_TAILCALLS
46039 MUSTTAIL return InterpNext(S);
46040#else
46041 return true;
46042#endif
46043}
46044PRESERVE_NONE
46045static bool Interp_ShlSint64Sint32(InterpState &S) {
46046 if (!Shl<PT_Sint64, PT_Sint32>(S, S.PC)) return false;
46047#if USE_TAILCALLS
46048 MUSTTAIL return InterpNext(S);
46049#else
46050 return true;
46051#endif
46052}
46053PRESERVE_NONE
46054static bool Interp_ShlSint64Uint32(InterpState &S) {
46055 if (!Shl<PT_Sint64, PT_Uint32>(S, S.PC)) return false;
46056#if USE_TAILCALLS
46057 MUSTTAIL return InterpNext(S);
46058#else
46059 return true;
46060#endif
46061}
46062PRESERVE_NONE
46063static bool Interp_ShlSint64Sint64(InterpState &S) {
46064 if (!Shl<PT_Sint64, PT_Sint64>(S, S.PC)) return false;
46065#if USE_TAILCALLS
46066 MUSTTAIL return InterpNext(S);
46067#else
46068 return true;
46069#endif
46070}
46071PRESERVE_NONE
46072static bool Interp_ShlSint64Uint64(InterpState &S) {
46073 if (!Shl<PT_Sint64, PT_Uint64>(S, S.PC)) return false;
46074#if USE_TAILCALLS
46075 MUSTTAIL return InterpNext(S);
46076#else
46077 return true;
46078#endif
46079}
46080PRESERVE_NONE
46081static bool Interp_ShlSint64IntAP(InterpState &S) {
46082 if (!Shl<PT_Sint64, PT_IntAP>(S, S.PC)) return false;
46083#if USE_TAILCALLS
46084 MUSTTAIL return InterpNext(S);
46085#else
46086 return true;
46087#endif
46088}
46089PRESERVE_NONE
46090static bool Interp_ShlSint64IntAPS(InterpState &S) {
46091 if (!Shl<PT_Sint64, PT_IntAPS>(S, S.PC)) return false;
46092#if USE_TAILCALLS
46093 MUSTTAIL return InterpNext(S);
46094#else
46095 return true;
46096#endif
46097}
46098PRESERVE_NONE
46099static bool Interp_ShlUint64Sint8(InterpState &S) {
46100 if (!Shl<PT_Uint64, PT_Sint8>(S, S.PC)) return false;
46101#if USE_TAILCALLS
46102 MUSTTAIL return InterpNext(S);
46103#else
46104 return true;
46105#endif
46106}
46107PRESERVE_NONE
46108static bool Interp_ShlUint64Uint8(InterpState &S) {
46109 if (!Shl<PT_Uint64, PT_Uint8>(S, S.PC)) return false;
46110#if USE_TAILCALLS
46111 MUSTTAIL return InterpNext(S);
46112#else
46113 return true;
46114#endif
46115}
46116PRESERVE_NONE
46117static bool Interp_ShlUint64Sint16(InterpState &S) {
46118 if (!Shl<PT_Uint64, PT_Sint16>(S, S.PC)) return false;
46119#if USE_TAILCALLS
46120 MUSTTAIL return InterpNext(S);
46121#else
46122 return true;
46123#endif
46124}
46125PRESERVE_NONE
46126static bool Interp_ShlUint64Uint16(InterpState &S) {
46127 if (!Shl<PT_Uint64, PT_Uint16>(S, S.PC)) return false;
46128#if USE_TAILCALLS
46129 MUSTTAIL return InterpNext(S);
46130#else
46131 return true;
46132#endif
46133}
46134PRESERVE_NONE
46135static bool Interp_ShlUint64Sint32(InterpState &S) {
46136 if (!Shl<PT_Uint64, PT_Sint32>(S, S.PC)) return false;
46137#if USE_TAILCALLS
46138 MUSTTAIL return InterpNext(S);
46139#else
46140 return true;
46141#endif
46142}
46143PRESERVE_NONE
46144static bool Interp_ShlUint64Uint32(InterpState &S) {
46145 if (!Shl<PT_Uint64, PT_Uint32>(S, S.PC)) return false;
46146#if USE_TAILCALLS
46147 MUSTTAIL return InterpNext(S);
46148#else
46149 return true;
46150#endif
46151}
46152PRESERVE_NONE
46153static bool Interp_ShlUint64Sint64(InterpState &S) {
46154 if (!Shl<PT_Uint64, PT_Sint64>(S, S.PC)) return false;
46155#if USE_TAILCALLS
46156 MUSTTAIL return InterpNext(S);
46157#else
46158 return true;
46159#endif
46160}
46161PRESERVE_NONE
46162static bool Interp_ShlUint64Uint64(InterpState &S) {
46163 if (!Shl<PT_Uint64, PT_Uint64>(S, S.PC)) return false;
46164#if USE_TAILCALLS
46165 MUSTTAIL return InterpNext(S);
46166#else
46167 return true;
46168#endif
46169}
46170PRESERVE_NONE
46171static bool Interp_ShlUint64IntAP(InterpState &S) {
46172 if (!Shl<PT_Uint64, PT_IntAP>(S, S.PC)) return false;
46173#if USE_TAILCALLS
46174 MUSTTAIL return InterpNext(S);
46175#else
46176 return true;
46177#endif
46178}
46179PRESERVE_NONE
46180static bool Interp_ShlUint64IntAPS(InterpState &S) {
46181 if (!Shl<PT_Uint64, PT_IntAPS>(S, S.PC)) return false;
46182#if USE_TAILCALLS
46183 MUSTTAIL return InterpNext(S);
46184#else
46185 return true;
46186#endif
46187}
46188PRESERVE_NONE
46189static bool Interp_ShlIntAPSint8(InterpState &S) {
46190 if (!Shl<PT_IntAP, PT_Sint8>(S, S.PC)) return false;
46191#if USE_TAILCALLS
46192 MUSTTAIL return InterpNext(S);
46193#else
46194 return true;
46195#endif
46196}
46197PRESERVE_NONE
46198static bool Interp_ShlIntAPUint8(InterpState &S) {
46199 if (!Shl<PT_IntAP, PT_Uint8>(S, S.PC)) return false;
46200#if USE_TAILCALLS
46201 MUSTTAIL return InterpNext(S);
46202#else
46203 return true;
46204#endif
46205}
46206PRESERVE_NONE
46207static bool Interp_ShlIntAPSint16(InterpState &S) {
46208 if (!Shl<PT_IntAP, PT_Sint16>(S, S.PC)) return false;
46209#if USE_TAILCALLS
46210 MUSTTAIL return InterpNext(S);
46211#else
46212 return true;
46213#endif
46214}
46215PRESERVE_NONE
46216static bool Interp_ShlIntAPUint16(InterpState &S) {
46217 if (!Shl<PT_IntAP, PT_Uint16>(S, S.PC)) return false;
46218#if USE_TAILCALLS
46219 MUSTTAIL return InterpNext(S);
46220#else
46221 return true;
46222#endif
46223}
46224PRESERVE_NONE
46225static bool Interp_ShlIntAPSint32(InterpState &S) {
46226 if (!Shl<PT_IntAP, PT_Sint32>(S, S.PC)) return false;
46227#if USE_TAILCALLS
46228 MUSTTAIL return InterpNext(S);
46229#else
46230 return true;
46231#endif
46232}
46233PRESERVE_NONE
46234static bool Interp_ShlIntAPUint32(InterpState &S) {
46235 if (!Shl<PT_IntAP, PT_Uint32>(S, S.PC)) return false;
46236#if USE_TAILCALLS
46237 MUSTTAIL return InterpNext(S);
46238#else
46239 return true;
46240#endif
46241}
46242PRESERVE_NONE
46243static bool Interp_ShlIntAPSint64(InterpState &S) {
46244 if (!Shl<PT_IntAP, PT_Sint64>(S, S.PC)) return false;
46245#if USE_TAILCALLS
46246 MUSTTAIL return InterpNext(S);
46247#else
46248 return true;
46249#endif
46250}
46251PRESERVE_NONE
46252static bool Interp_ShlIntAPUint64(InterpState &S) {
46253 if (!Shl<PT_IntAP, PT_Uint64>(S, S.PC)) return false;
46254#if USE_TAILCALLS
46255 MUSTTAIL return InterpNext(S);
46256#else
46257 return true;
46258#endif
46259}
46260PRESERVE_NONE
46261static bool Interp_ShlIntAPIntAP(InterpState &S) {
46262 if (!Shl<PT_IntAP, PT_IntAP>(S, S.PC)) return false;
46263#if USE_TAILCALLS
46264 MUSTTAIL return InterpNext(S);
46265#else
46266 return true;
46267#endif
46268}
46269PRESERVE_NONE
46270static bool Interp_ShlIntAPIntAPS(InterpState &S) {
46271 if (!Shl<PT_IntAP, PT_IntAPS>(S, S.PC)) return false;
46272#if USE_TAILCALLS
46273 MUSTTAIL return InterpNext(S);
46274#else
46275 return true;
46276#endif
46277}
46278PRESERVE_NONE
46279static bool Interp_ShlIntAPSSint8(InterpState &S) {
46280 if (!Shl<PT_IntAPS, PT_Sint8>(S, S.PC)) return false;
46281#if USE_TAILCALLS
46282 MUSTTAIL return InterpNext(S);
46283#else
46284 return true;
46285#endif
46286}
46287PRESERVE_NONE
46288static bool Interp_ShlIntAPSUint8(InterpState &S) {
46289 if (!Shl<PT_IntAPS, PT_Uint8>(S, S.PC)) return false;
46290#if USE_TAILCALLS
46291 MUSTTAIL return InterpNext(S);
46292#else
46293 return true;
46294#endif
46295}
46296PRESERVE_NONE
46297static bool Interp_ShlIntAPSSint16(InterpState &S) {
46298 if (!Shl<PT_IntAPS, PT_Sint16>(S, S.PC)) return false;
46299#if USE_TAILCALLS
46300 MUSTTAIL return InterpNext(S);
46301#else
46302 return true;
46303#endif
46304}
46305PRESERVE_NONE
46306static bool Interp_ShlIntAPSUint16(InterpState &S) {
46307 if (!Shl<PT_IntAPS, PT_Uint16>(S, S.PC)) return false;
46308#if USE_TAILCALLS
46309 MUSTTAIL return InterpNext(S);
46310#else
46311 return true;
46312#endif
46313}
46314PRESERVE_NONE
46315static bool Interp_ShlIntAPSSint32(InterpState &S) {
46316 if (!Shl<PT_IntAPS, PT_Sint32>(S, S.PC)) return false;
46317#if USE_TAILCALLS
46318 MUSTTAIL return InterpNext(S);
46319#else
46320 return true;
46321#endif
46322}
46323PRESERVE_NONE
46324static bool Interp_ShlIntAPSUint32(InterpState &S) {
46325 if (!Shl<PT_IntAPS, PT_Uint32>(S, S.PC)) return false;
46326#if USE_TAILCALLS
46327 MUSTTAIL return InterpNext(S);
46328#else
46329 return true;
46330#endif
46331}
46332PRESERVE_NONE
46333static bool Interp_ShlIntAPSSint64(InterpState &S) {
46334 if (!Shl<PT_IntAPS, PT_Sint64>(S, S.PC)) return false;
46335#if USE_TAILCALLS
46336 MUSTTAIL return InterpNext(S);
46337#else
46338 return true;
46339#endif
46340}
46341PRESERVE_NONE
46342static bool Interp_ShlIntAPSUint64(InterpState &S) {
46343 if (!Shl<PT_IntAPS, PT_Uint64>(S, S.PC)) return false;
46344#if USE_TAILCALLS
46345 MUSTTAIL return InterpNext(S);
46346#else
46347 return true;
46348#endif
46349}
46350PRESERVE_NONE
46351static bool Interp_ShlIntAPSIntAP(InterpState &S) {
46352 if (!Shl<PT_IntAPS, PT_IntAP>(S, S.PC)) return false;
46353#if USE_TAILCALLS
46354 MUSTTAIL return InterpNext(S);
46355#else
46356 return true;
46357#endif
46358}
46359PRESERVE_NONE
46360static bool Interp_ShlIntAPSIntAPS(InterpState &S) {
46361 if (!Shl<PT_IntAPS, PT_IntAPS>(S, S.PC)) return false;
46362#if USE_TAILCALLS
46363 MUSTTAIL return InterpNext(S);
46364#else
46365 return true;
46366#endif
46367}
46368#endif
46369#ifdef GET_DISASM
46370case OP_ShlSint8Sint8:
46371 Text.Op = PrintName("ShlSint8Sint8");
46372 break;
46373case OP_ShlSint8Uint8:
46374 Text.Op = PrintName("ShlSint8Uint8");
46375 break;
46376case OP_ShlSint8Sint16:
46377 Text.Op = PrintName("ShlSint8Sint16");
46378 break;
46379case OP_ShlSint8Uint16:
46380 Text.Op = PrintName("ShlSint8Uint16");
46381 break;
46382case OP_ShlSint8Sint32:
46383 Text.Op = PrintName("ShlSint8Sint32");
46384 break;
46385case OP_ShlSint8Uint32:
46386 Text.Op = PrintName("ShlSint8Uint32");
46387 break;
46388case OP_ShlSint8Sint64:
46389 Text.Op = PrintName("ShlSint8Sint64");
46390 break;
46391case OP_ShlSint8Uint64:
46392 Text.Op = PrintName("ShlSint8Uint64");
46393 break;
46394case OP_ShlSint8IntAP:
46395 Text.Op = PrintName("ShlSint8IntAP");
46396 break;
46397case OP_ShlSint8IntAPS:
46398 Text.Op = PrintName("ShlSint8IntAPS");
46399 break;
46400case OP_ShlUint8Sint8:
46401 Text.Op = PrintName("ShlUint8Sint8");
46402 break;
46403case OP_ShlUint8Uint8:
46404 Text.Op = PrintName("ShlUint8Uint8");
46405 break;
46406case OP_ShlUint8Sint16:
46407 Text.Op = PrintName("ShlUint8Sint16");
46408 break;
46409case OP_ShlUint8Uint16:
46410 Text.Op = PrintName("ShlUint8Uint16");
46411 break;
46412case OP_ShlUint8Sint32:
46413 Text.Op = PrintName("ShlUint8Sint32");
46414 break;
46415case OP_ShlUint8Uint32:
46416 Text.Op = PrintName("ShlUint8Uint32");
46417 break;
46418case OP_ShlUint8Sint64:
46419 Text.Op = PrintName("ShlUint8Sint64");
46420 break;
46421case OP_ShlUint8Uint64:
46422 Text.Op = PrintName("ShlUint8Uint64");
46423 break;
46424case OP_ShlUint8IntAP:
46425 Text.Op = PrintName("ShlUint8IntAP");
46426 break;
46427case OP_ShlUint8IntAPS:
46428 Text.Op = PrintName("ShlUint8IntAPS");
46429 break;
46430case OP_ShlSint16Sint8:
46431 Text.Op = PrintName("ShlSint16Sint8");
46432 break;
46433case OP_ShlSint16Uint8:
46434 Text.Op = PrintName("ShlSint16Uint8");
46435 break;
46436case OP_ShlSint16Sint16:
46437 Text.Op = PrintName("ShlSint16Sint16");
46438 break;
46439case OP_ShlSint16Uint16:
46440 Text.Op = PrintName("ShlSint16Uint16");
46441 break;
46442case OP_ShlSint16Sint32:
46443 Text.Op = PrintName("ShlSint16Sint32");
46444 break;
46445case OP_ShlSint16Uint32:
46446 Text.Op = PrintName("ShlSint16Uint32");
46447 break;
46448case OP_ShlSint16Sint64:
46449 Text.Op = PrintName("ShlSint16Sint64");
46450 break;
46451case OP_ShlSint16Uint64:
46452 Text.Op = PrintName("ShlSint16Uint64");
46453 break;
46454case OP_ShlSint16IntAP:
46455 Text.Op = PrintName("ShlSint16IntAP");
46456 break;
46457case OP_ShlSint16IntAPS:
46458 Text.Op = PrintName("ShlSint16IntAPS");
46459 break;
46460case OP_ShlUint16Sint8:
46461 Text.Op = PrintName("ShlUint16Sint8");
46462 break;
46463case OP_ShlUint16Uint8:
46464 Text.Op = PrintName("ShlUint16Uint8");
46465 break;
46466case OP_ShlUint16Sint16:
46467 Text.Op = PrintName("ShlUint16Sint16");
46468 break;
46469case OP_ShlUint16Uint16:
46470 Text.Op = PrintName("ShlUint16Uint16");
46471 break;
46472case OP_ShlUint16Sint32:
46473 Text.Op = PrintName("ShlUint16Sint32");
46474 break;
46475case OP_ShlUint16Uint32:
46476 Text.Op = PrintName("ShlUint16Uint32");
46477 break;
46478case OP_ShlUint16Sint64:
46479 Text.Op = PrintName("ShlUint16Sint64");
46480 break;
46481case OP_ShlUint16Uint64:
46482 Text.Op = PrintName("ShlUint16Uint64");
46483 break;
46484case OP_ShlUint16IntAP:
46485 Text.Op = PrintName("ShlUint16IntAP");
46486 break;
46487case OP_ShlUint16IntAPS:
46488 Text.Op = PrintName("ShlUint16IntAPS");
46489 break;
46490case OP_ShlSint32Sint8:
46491 Text.Op = PrintName("ShlSint32Sint8");
46492 break;
46493case OP_ShlSint32Uint8:
46494 Text.Op = PrintName("ShlSint32Uint8");
46495 break;
46496case OP_ShlSint32Sint16:
46497 Text.Op = PrintName("ShlSint32Sint16");
46498 break;
46499case OP_ShlSint32Uint16:
46500 Text.Op = PrintName("ShlSint32Uint16");
46501 break;
46502case OP_ShlSint32Sint32:
46503 Text.Op = PrintName("ShlSint32Sint32");
46504 break;
46505case OP_ShlSint32Uint32:
46506 Text.Op = PrintName("ShlSint32Uint32");
46507 break;
46508case OP_ShlSint32Sint64:
46509 Text.Op = PrintName("ShlSint32Sint64");
46510 break;
46511case OP_ShlSint32Uint64:
46512 Text.Op = PrintName("ShlSint32Uint64");
46513 break;
46514case OP_ShlSint32IntAP:
46515 Text.Op = PrintName("ShlSint32IntAP");
46516 break;
46517case OP_ShlSint32IntAPS:
46518 Text.Op = PrintName("ShlSint32IntAPS");
46519 break;
46520case OP_ShlUint32Sint8:
46521 Text.Op = PrintName("ShlUint32Sint8");
46522 break;
46523case OP_ShlUint32Uint8:
46524 Text.Op = PrintName("ShlUint32Uint8");
46525 break;
46526case OP_ShlUint32Sint16:
46527 Text.Op = PrintName("ShlUint32Sint16");
46528 break;
46529case OP_ShlUint32Uint16:
46530 Text.Op = PrintName("ShlUint32Uint16");
46531 break;
46532case OP_ShlUint32Sint32:
46533 Text.Op = PrintName("ShlUint32Sint32");
46534 break;
46535case OP_ShlUint32Uint32:
46536 Text.Op = PrintName("ShlUint32Uint32");
46537 break;
46538case OP_ShlUint32Sint64:
46539 Text.Op = PrintName("ShlUint32Sint64");
46540 break;
46541case OP_ShlUint32Uint64:
46542 Text.Op = PrintName("ShlUint32Uint64");
46543 break;
46544case OP_ShlUint32IntAP:
46545 Text.Op = PrintName("ShlUint32IntAP");
46546 break;
46547case OP_ShlUint32IntAPS:
46548 Text.Op = PrintName("ShlUint32IntAPS");
46549 break;
46550case OP_ShlSint64Sint8:
46551 Text.Op = PrintName("ShlSint64Sint8");
46552 break;
46553case OP_ShlSint64Uint8:
46554 Text.Op = PrintName("ShlSint64Uint8");
46555 break;
46556case OP_ShlSint64Sint16:
46557 Text.Op = PrintName("ShlSint64Sint16");
46558 break;
46559case OP_ShlSint64Uint16:
46560 Text.Op = PrintName("ShlSint64Uint16");
46561 break;
46562case OP_ShlSint64Sint32:
46563 Text.Op = PrintName("ShlSint64Sint32");
46564 break;
46565case OP_ShlSint64Uint32:
46566 Text.Op = PrintName("ShlSint64Uint32");
46567 break;
46568case OP_ShlSint64Sint64:
46569 Text.Op = PrintName("ShlSint64Sint64");
46570 break;
46571case OP_ShlSint64Uint64:
46572 Text.Op = PrintName("ShlSint64Uint64");
46573 break;
46574case OP_ShlSint64IntAP:
46575 Text.Op = PrintName("ShlSint64IntAP");
46576 break;
46577case OP_ShlSint64IntAPS:
46578 Text.Op = PrintName("ShlSint64IntAPS");
46579 break;
46580case OP_ShlUint64Sint8:
46581 Text.Op = PrintName("ShlUint64Sint8");
46582 break;
46583case OP_ShlUint64Uint8:
46584 Text.Op = PrintName("ShlUint64Uint8");
46585 break;
46586case OP_ShlUint64Sint16:
46587 Text.Op = PrintName("ShlUint64Sint16");
46588 break;
46589case OP_ShlUint64Uint16:
46590 Text.Op = PrintName("ShlUint64Uint16");
46591 break;
46592case OP_ShlUint64Sint32:
46593 Text.Op = PrintName("ShlUint64Sint32");
46594 break;
46595case OP_ShlUint64Uint32:
46596 Text.Op = PrintName("ShlUint64Uint32");
46597 break;
46598case OP_ShlUint64Sint64:
46599 Text.Op = PrintName("ShlUint64Sint64");
46600 break;
46601case OP_ShlUint64Uint64:
46602 Text.Op = PrintName("ShlUint64Uint64");
46603 break;
46604case OP_ShlUint64IntAP:
46605 Text.Op = PrintName("ShlUint64IntAP");
46606 break;
46607case OP_ShlUint64IntAPS:
46608 Text.Op = PrintName("ShlUint64IntAPS");
46609 break;
46610case OP_ShlIntAPSint8:
46611 Text.Op = PrintName("ShlIntAPSint8");
46612 break;
46613case OP_ShlIntAPUint8:
46614 Text.Op = PrintName("ShlIntAPUint8");
46615 break;
46616case OP_ShlIntAPSint16:
46617 Text.Op = PrintName("ShlIntAPSint16");
46618 break;
46619case OP_ShlIntAPUint16:
46620 Text.Op = PrintName("ShlIntAPUint16");
46621 break;
46622case OP_ShlIntAPSint32:
46623 Text.Op = PrintName("ShlIntAPSint32");
46624 break;
46625case OP_ShlIntAPUint32:
46626 Text.Op = PrintName("ShlIntAPUint32");
46627 break;
46628case OP_ShlIntAPSint64:
46629 Text.Op = PrintName("ShlIntAPSint64");
46630 break;
46631case OP_ShlIntAPUint64:
46632 Text.Op = PrintName("ShlIntAPUint64");
46633 break;
46634case OP_ShlIntAPIntAP:
46635 Text.Op = PrintName("ShlIntAPIntAP");
46636 break;
46637case OP_ShlIntAPIntAPS:
46638 Text.Op = PrintName("ShlIntAPIntAPS");
46639 break;
46640case OP_ShlIntAPSSint8:
46641 Text.Op = PrintName("ShlIntAPSSint8");
46642 break;
46643case OP_ShlIntAPSUint8:
46644 Text.Op = PrintName("ShlIntAPSUint8");
46645 break;
46646case OP_ShlIntAPSSint16:
46647 Text.Op = PrintName("ShlIntAPSSint16");
46648 break;
46649case OP_ShlIntAPSUint16:
46650 Text.Op = PrintName("ShlIntAPSUint16");
46651 break;
46652case OP_ShlIntAPSSint32:
46653 Text.Op = PrintName("ShlIntAPSSint32");
46654 break;
46655case OP_ShlIntAPSUint32:
46656 Text.Op = PrintName("ShlIntAPSUint32");
46657 break;
46658case OP_ShlIntAPSSint64:
46659 Text.Op = PrintName("ShlIntAPSSint64");
46660 break;
46661case OP_ShlIntAPSUint64:
46662 Text.Op = PrintName("ShlIntAPSUint64");
46663 break;
46664case OP_ShlIntAPSIntAP:
46665 Text.Op = PrintName("ShlIntAPSIntAP");
46666 break;
46667case OP_ShlIntAPSIntAPS:
46668 Text.Op = PrintName("ShlIntAPSIntAPS");
46669 break;
46670#endif
46671#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
46672bool emitShlSint8Sint8(SourceInfo);
46673bool emitShlSint8Uint8(SourceInfo);
46674bool emitShlSint8Sint16(SourceInfo);
46675bool emitShlSint8Uint16(SourceInfo);
46676bool emitShlSint8Sint32(SourceInfo);
46677bool emitShlSint8Uint32(SourceInfo);
46678bool emitShlSint8Sint64(SourceInfo);
46679bool emitShlSint8Uint64(SourceInfo);
46680bool emitShlSint8IntAP(SourceInfo);
46681bool emitShlSint8IntAPS(SourceInfo);
46682bool emitShlUint8Sint8(SourceInfo);
46683bool emitShlUint8Uint8(SourceInfo);
46684bool emitShlUint8Sint16(SourceInfo);
46685bool emitShlUint8Uint16(SourceInfo);
46686bool emitShlUint8Sint32(SourceInfo);
46687bool emitShlUint8Uint32(SourceInfo);
46688bool emitShlUint8Sint64(SourceInfo);
46689bool emitShlUint8Uint64(SourceInfo);
46690bool emitShlUint8IntAP(SourceInfo);
46691bool emitShlUint8IntAPS(SourceInfo);
46692bool emitShlSint16Sint8(SourceInfo);
46693bool emitShlSint16Uint8(SourceInfo);
46694bool emitShlSint16Sint16(SourceInfo);
46695bool emitShlSint16Uint16(SourceInfo);
46696bool emitShlSint16Sint32(SourceInfo);
46697bool emitShlSint16Uint32(SourceInfo);
46698bool emitShlSint16Sint64(SourceInfo);
46699bool emitShlSint16Uint64(SourceInfo);
46700bool emitShlSint16IntAP(SourceInfo);
46701bool emitShlSint16IntAPS(SourceInfo);
46702bool emitShlUint16Sint8(SourceInfo);
46703bool emitShlUint16Uint8(SourceInfo);
46704bool emitShlUint16Sint16(SourceInfo);
46705bool emitShlUint16Uint16(SourceInfo);
46706bool emitShlUint16Sint32(SourceInfo);
46707bool emitShlUint16Uint32(SourceInfo);
46708bool emitShlUint16Sint64(SourceInfo);
46709bool emitShlUint16Uint64(SourceInfo);
46710bool emitShlUint16IntAP(SourceInfo);
46711bool emitShlUint16IntAPS(SourceInfo);
46712bool emitShlSint32Sint8(SourceInfo);
46713bool emitShlSint32Uint8(SourceInfo);
46714bool emitShlSint32Sint16(SourceInfo);
46715bool emitShlSint32Uint16(SourceInfo);
46716bool emitShlSint32Sint32(SourceInfo);
46717bool emitShlSint32Uint32(SourceInfo);
46718bool emitShlSint32Sint64(SourceInfo);
46719bool emitShlSint32Uint64(SourceInfo);
46720bool emitShlSint32IntAP(SourceInfo);
46721bool emitShlSint32IntAPS(SourceInfo);
46722bool emitShlUint32Sint8(SourceInfo);
46723bool emitShlUint32Uint8(SourceInfo);
46724bool emitShlUint32Sint16(SourceInfo);
46725bool emitShlUint32Uint16(SourceInfo);
46726bool emitShlUint32Sint32(SourceInfo);
46727bool emitShlUint32Uint32(SourceInfo);
46728bool emitShlUint32Sint64(SourceInfo);
46729bool emitShlUint32Uint64(SourceInfo);
46730bool emitShlUint32IntAP(SourceInfo);
46731bool emitShlUint32IntAPS(SourceInfo);
46732bool emitShlSint64Sint8(SourceInfo);
46733bool emitShlSint64Uint8(SourceInfo);
46734bool emitShlSint64Sint16(SourceInfo);
46735bool emitShlSint64Uint16(SourceInfo);
46736bool emitShlSint64Sint32(SourceInfo);
46737bool emitShlSint64Uint32(SourceInfo);
46738bool emitShlSint64Sint64(SourceInfo);
46739bool emitShlSint64Uint64(SourceInfo);
46740bool emitShlSint64IntAP(SourceInfo);
46741bool emitShlSint64IntAPS(SourceInfo);
46742bool emitShlUint64Sint8(SourceInfo);
46743bool emitShlUint64Uint8(SourceInfo);
46744bool emitShlUint64Sint16(SourceInfo);
46745bool emitShlUint64Uint16(SourceInfo);
46746bool emitShlUint64Sint32(SourceInfo);
46747bool emitShlUint64Uint32(SourceInfo);
46748bool emitShlUint64Sint64(SourceInfo);
46749bool emitShlUint64Uint64(SourceInfo);
46750bool emitShlUint64IntAP(SourceInfo);
46751bool emitShlUint64IntAPS(SourceInfo);
46752bool emitShlIntAPSint8(SourceInfo);
46753bool emitShlIntAPUint8(SourceInfo);
46754bool emitShlIntAPSint16(SourceInfo);
46755bool emitShlIntAPUint16(SourceInfo);
46756bool emitShlIntAPSint32(SourceInfo);
46757bool emitShlIntAPUint32(SourceInfo);
46758bool emitShlIntAPSint64(SourceInfo);
46759bool emitShlIntAPUint64(SourceInfo);
46760bool emitShlIntAPIntAP(SourceInfo);
46761bool emitShlIntAPIntAPS(SourceInfo);
46762bool emitShlIntAPSSint8(SourceInfo);
46763bool emitShlIntAPSUint8(SourceInfo);
46764bool emitShlIntAPSSint16(SourceInfo);
46765bool emitShlIntAPSUint16(SourceInfo);
46766bool emitShlIntAPSSint32(SourceInfo);
46767bool emitShlIntAPSUint32(SourceInfo);
46768bool emitShlIntAPSSint64(SourceInfo);
46769bool emitShlIntAPSUint64(SourceInfo);
46770bool emitShlIntAPSIntAP(SourceInfo);
46771bool emitShlIntAPSIntAPS(SourceInfo);
46772#endif
46773#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
46774[[nodiscard]] bool emitShl(PrimType, PrimType, SourceInfo I);
46775#endif
46776#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
46777bool
46778#if defined(GET_EVAL_IMPL)
46779EvalEmitter
46780#else
46781ByteCodeEmitter
46782#endif
46783::emitShl(PrimType T0, PrimType T1, SourceInfo I) {
46784 switch (T0) {
46785 case PT_Sint8:
46786 switch (T1) {
46787 case PT_Sint8:
46788 return emitShlSint8Sint8(I);
46789 case PT_Uint8:
46790 return emitShlSint8Uint8(I);
46791 case PT_Sint16:
46792 return emitShlSint8Sint16(I);
46793 case PT_Uint16:
46794 return emitShlSint8Uint16(I);
46795 case PT_Sint32:
46796 return emitShlSint8Sint32(I);
46797 case PT_Uint32:
46798 return emitShlSint8Uint32(I);
46799 case PT_Sint64:
46800 return emitShlSint8Sint64(I);
46801 case PT_Uint64:
46802 return emitShlSint8Uint64(I);
46803 case PT_IntAP:
46804 return emitShlSint8IntAP(I);
46805 case PT_IntAPS:
46806 return emitShlSint8IntAPS(I);
46807 default: llvm_unreachable("invalid type: emitShl");
46808 }
46809 llvm_unreachable("invalid enum value");
46810 case PT_Uint8:
46811 switch (T1) {
46812 case PT_Sint8:
46813 return emitShlUint8Sint8(I);
46814 case PT_Uint8:
46815 return emitShlUint8Uint8(I);
46816 case PT_Sint16:
46817 return emitShlUint8Sint16(I);
46818 case PT_Uint16:
46819 return emitShlUint8Uint16(I);
46820 case PT_Sint32:
46821 return emitShlUint8Sint32(I);
46822 case PT_Uint32:
46823 return emitShlUint8Uint32(I);
46824 case PT_Sint64:
46825 return emitShlUint8Sint64(I);
46826 case PT_Uint64:
46827 return emitShlUint8Uint64(I);
46828 case PT_IntAP:
46829 return emitShlUint8IntAP(I);
46830 case PT_IntAPS:
46831 return emitShlUint8IntAPS(I);
46832 default: llvm_unreachable("invalid type: emitShl");
46833 }
46834 llvm_unreachable("invalid enum value");
46835 case PT_Sint16:
46836 switch (T1) {
46837 case PT_Sint8:
46838 return emitShlSint16Sint8(I);
46839 case PT_Uint8:
46840 return emitShlSint16Uint8(I);
46841 case PT_Sint16:
46842 return emitShlSint16Sint16(I);
46843 case PT_Uint16:
46844 return emitShlSint16Uint16(I);
46845 case PT_Sint32:
46846 return emitShlSint16Sint32(I);
46847 case PT_Uint32:
46848 return emitShlSint16Uint32(I);
46849 case PT_Sint64:
46850 return emitShlSint16Sint64(I);
46851 case PT_Uint64:
46852 return emitShlSint16Uint64(I);
46853 case PT_IntAP:
46854 return emitShlSint16IntAP(I);
46855 case PT_IntAPS:
46856 return emitShlSint16IntAPS(I);
46857 default: llvm_unreachable("invalid type: emitShl");
46858 }
46859 llvm_unreachable("invalid enum value");
46860 case PT_Uint16:
46861 switch (T1) {
46862 case PT_Sint8:
46863 return emitShlUint16Sint8(I);
46864 case PT_Uint8:
46865 return emitShlUint16Uint8(I);
46866 case PT_Sint16:
46867 return emitShlUint16Sint16(I);
46868 case PT_Uint16:
46869 return emitShlUint16Uint16(I);
46870 case PT_Sint32:
46871 return emitShlUint16Sint32(I);
46872 case PT_Uint32:
46873 return emitShlUint16Uint32(I);
46874 case PT_Sint64:
46875 return emitShlUint16Sint64(I);
46876 case PT_Uint64:
46877 return emitShlUint16Uint64(I);
46878 case PT_IntAP:
46879 return emitShlUint16IntAP(I);
46880 case PT_IntAPS:
46881 return emitShlUint16IntAPS(I);
46882 default: llvm_unreachable("invalid type: emitShl");
46883 }
46884 llvm_unreachable("invalid enum value");
46885 case PT_Sint32:
46886 switch (T1) {
46887 case PT_Sint8:
46888 return emitShlSint32Sint8(I);
46889 case PT_Uint8:
46890 return emitShlSint32Uint8(I);
46891 case PT_Sint16:
46892 return emitShlSint32Sint16(I);
46893 case PT_Uint16:
46894 return emitShlSint32Uint16(I);
46895 case PT_Sint32:
46896 return emitShlSint32Sint32(I);
46897 case PT_Uint32:
46898 return emitShlSint32Uint32(I);
46899 case PT_Sint64:
46900 return emitShlSint32Sint64(I);
46901 case PT_Uint64:
46902 return emitShlSint32Uint64(I);
46903 case PT_IntAP:
46904 return emitShlSint32IntAP(I);
46905 case PT_IntAPS:
46906 return emitShlSint32IntAPS(I);
46907 default: llvm_unreachable("invalid type: emitShl");
46908 }
46909 llvm_unreachable("invalid enum value");
46910 case PT_Uint32:
46911 switch (T1) {
46912 case PT_Sint8:
46913 return emitShlUint32Sint8(I);
46914 case PT_Uint8:
46915 return emitShlUint32Uint8(I);
46916 case PT_Sint16:
46917 return emitShlUint32Sint16(I);
46918 case PT_Uint16:
46919 return emitShlUint32Uint16(I);
46920 case PT_Sint32:
46921 return emitShlUint32Sint32(I);
46922 case PT_Uint32:
46923 return emitShlUint32Uint32(I);
46924 case PT_Sint64:
46925 return emitShlUint32Sint64(I);
46926 case PT_Uint64:
46927 return emitShlUint32Uint64(I);
46928 case PT_IntAP:
46929 return emitShlUint32IntAP(I);
46930 case PT_IntAPS:
46931 return emitShlUint32IntAPS(I);
46932 default: llvm_unreachable("invalid type: emitShl");
46933 }
46934 llvm_unreachable("invalid enum value");
46935 case PT_Sint64:
46936 switch (T1) {
46937 case PT_Sint8:
46938 return emitShlSint64Sint8(I);
46939 case PT_Uint8:
46940 return emitShlSint64Uint8(I);
46941 case PT_Sint16:
46942 return emitShlSint64Sint16(I);
46943 case PT_Uint16:
46944 return emitShlSint64Uint16(I);
46945 case PT_Sint32:
46946 return emitShlSint64Sint32(I);
46947 case PT_Uint32:
46948 return emitShlSint64Uint32(I);
46949 case PT_Sint64:
46950 return emitShlSint64Sint64(I);
46951 case PT_Uint64:
46952 return emitShlSint64Uint64(I);
46953 case PT_IntAP:
46954 return emitShlSint64IntAP(I);
46955 case PT_IntAPS:
46956 return emitShlSint64IntAPS(I);
46957 default: llvm_unreachable("invalid type: emitShl");
46958 }
46959 llvm_unreachable("invalid enum value");
46960 case PT_Uint64:
46961 switch (T1) {
46962 case PT_Sint8:
46963 return emitShlUint64Sint8(I);
46964 case PT_Uint8:
46965 return emitShlUint64Uint8(I);
46966 case PT_Sint16:
46967 return emitShlUint64Sint16(I);
46968 case PT_Uint16:
46969 return emitShlUint64Uint16(I);
46970 case PT_Sint32:
46971 return emitShlUint64Sint32(I);
46972 case PT_Uint32:
46973 return emitShlUint64Uint32(I);
46974 case PT_Sint64:
46975 return emitShlUint64Sint64(I);
46976 case PT_Uint64:
46977 return emitShlUint64Uint64(I);
46978 case PT_IntAP:
46979 return emitShlUint64IntAP(I);
46980 case PT_IntAPS:
46981 return emitShlUint64IntAPS(I);
46982 default: llvm_unreachable("invalid type: emitShl");
46983 }
46984 llvm_unreachable("invalid enum value");
46985 case PT_IntAP:
46986 switch (T1) {
46987 case PT_Sint8:
46988 return emitShlIntAPSint8(I);
46989 case PT_Uint8:
46990 return emitShlIntAPUint8(I);
46991 case PT_Sint16:
46992 return emitShlIntAPSint16(I);
46993 case PT_Uint16:
46994 return emitShlIntAPUint16(I);
46995 case PT_Sint32:
46996 return emitShlIntAPSint32(I);
46997 case PT_Uint32:
46998 return emitShlIntAPUint32(I);
46999 case PT_Sint64:
47000 return emitShlIntAPSint64(I);
47001 case PT_Uint64:
47002 return emitShlIntAPUint64(I);
47003 case PT_IntAP:
47004 return emitShlIntAPIntAP(I);
47005 case PT_IntAPS:
47006 return emitShlIntAPIntAPS(I);
47007 default: llvm_unreachable("invalid type: emitShl");
47008 }
47009 llvm_unreachable("invalid enum value");
47010 case PT_IntAPS:
47011 switch (T1) {
47012 case PT_Sint8:
47013 return emitShlIntAPSSint8(I);
47014 case PT_Uint8:
47015 return emitShlIntAPSUint8(I);
47016 case PT_Sint16:
47017 return emitShlIntAPSSint16(I);
47018 case PT_Uint16:
47019 return emitShlIntAPSUint16(I);
47020 case PT_Sint32:
47021 return emitShlIntAPSSint32(I);
47022 case PT_Uint32:
47023 return emitShlIntAPSUint32(I);
47024 case PT_Sint64:
47025 return emitShlIntAPSSint64(I);
47026 case PT_Uint64:
47027 return emitShlIntAPSUint64(I);
47028 case PT_IntAP:
47029 return emitShlIntAPSIntAP(I);
47030 case PT_IntAPS:
47031 return emitShlIntAPSIntAPS(I);
47032 default: llvm_unreachable("invalid type: emitShl");
47033 }
47034 llvm_unreachable("invalid enum value");
47035 default: llvm_unreachable("invalid type: emitShl");
47036 }
47037 llvm_unreachable("invalid enum value");
47038}
47039#endif
47040#ifdef GET_LINK_IMPL
47041bool ByteCodeEmitter::emitShlSint8Sint8(SourceInfo L) {
47042 return emitOp<>(OP_ShlSint8Sint8, L);
47043}
47044bool ByteCodeEmitter::emitShlSint8Uint8(SourceInfo L) {
47045 return emitOp<>(OP_ShlSint8Uint8, L);
47046}
47047bool ByteCodeEmitter::emitShlSint8Sint16(SourceInfo L) {
47048 return emitOp<>(OP_ShlSint8Sint16, L);
47049}
47050bool ByteCodeEmitter::emitShlSint8Uint16(SourceInfo L) {
47051 return emitOp<>(OP_ShlSint8Uint16, L);
47052}
47053bool ByteCodeEmitter::emitShlSint8Sint32(SourceInfo L) {
47054 return emitOp<>(OP_ShlSint8Sint32, L);
47055}
47056bool ByteCodeEmitter::emitShlSint8Uint32(SourceInfo L) {
47057 return emitOp<>(OP_ShlSint8Uint32, L);
47058}
47059bool ByteCodeEmitter::emitShlSint8Sint64(SourceInfo L) {
47060 return emitOp<>(OP_ShlSint8Sint64, L);
47061}
47062bool ByteCodeEmitter::emitShlSint8Uint64(SourceInfo L) {
47063 return emitOp<>(OP_ShlSint8Uint64, L);
47064}
47065bool ByteCodeEmitter::emitShlSint8IntAP(SourceInfo L) {
47066 return emitOp<>(OP_ShlSint8IntAP, L);
47067}
47068bool ByteCodeEmitter::emitShlSint8IntAPS(SourceInfo L) {
47069 return emitOp<>(OP_ShlSint8IntAPS, L);
47070}
47071bool ByteCodeEmitter::emitShlUint8Sint8(SourceInfo L) {
47072 return emitOp<>(OP_ShlUint8Sint8, L);
47073}
47074bool ByteCodeEmitter::emitShlUint8Uint8(SourceInfo L) {
47075 return emitOp<>(OP_ShlUint8Uint8, L);
47076}
47077bool ByteCodeEmitter::emitShlUint8Sint16(SourceInfo L) {
47078 return emitOp<>(OP_ShlUint8Sint16, L);
47079}
47080bool ByteCodeEmitter::emitShlUint8Uint16(SourceInfo L) {
47081 return emitOp<>(OP_ShlUint8Uint16, L);
47082}
47083bool ByteCodeEmitter::emitShlUint8Sint32(SourceInfo L) {
47084 return emitOp<>(OP_ShlUint8Sint32, L);
47085}
47086bool ByteCodeEmitter::emitShlUint8Uint32(SourceInfo L) {
47087 return emitOp<>(OP_ShlUint8Uint32, L);
47088}
47089bool ByteCodeEmitter::emitShlUint8Sint64(SourceInfo L) {
47090 return emitOp<>(OP_ShlUint8Sint64, L);
47091}
47092bool ByteCodeEmitter::emitShlUint8Uint64(SourceInfo L) {
47093 return emitOp<>(OP_ShlUint8Uint64, L);
47094}
47095bool ByteCodeEmitter::emitShlUint8IntAP(SourceInfo L) {
47096 return emitOp<>(OP_ShlUint8IntAP, L);
47097}
47098bool ByteCodeEmitter::emitShlUint8IntAPS(SourceInfo L) {
47099 return emitOp<>(OP_ShlUint8IntAPS, L);
47100}
47101bool ByteCodeEmitter::emitShlSint16Sint8(SourceInfo L) {
47102 return emitOp<>(OP_ShlSint16Sint8, L);
47103}
47104bool ByteCodeEmitter::emitShlSint16Uint8(SourceInfo L) {
47105 return emitOp<>(OP_ShlSint16Uint8, L);
47106}
47107bool ByteCodeEmitter::emitShlSint16Sint16(SourceInfo L) {
47108 return emitOp<>(OP_ShlSint16Sint16, L);
47109}
47110bool ByteCodeEmitter::emitShlSint16Uint16(SourceInfo L) {
47111 return emitOp<>(OP_ShlSint16Uint16, L);
47112}
47113bool ByteCodeEmitter::emitShlSint16Sint32(SourceInfo L) {
47114 return emitOp<>(OP_ShlSint16Sint32, L);
47115}
47116bool ByteCodeEmitter::emitShlSint16Uint32(SourceInfo L) {
47117 return emitOp<>(OP_ShlSint16Uint32, L);
47118}
47119bool ByteCodeEmitter::emitShlSint16Sint64(SourceInfo L) {
47120 return emitOp<>(OP_ShlSint16Sint64, L);
47121}
47122bool ByteCodeEmitter::emitShlSint16Uint64(SourceInfo L) {
47123 return emitOp<>(OP_ShlSint16Uint64, L);
47124}
47125bool ByteCodeEmitter::emitShlSint16IntAP(SourceInfo L) {
47126 return emitOp<>(OP_ShlSint16IntAP, L);
47127}
47128bool ByteCodeEmitter::emitShlSint16IntAPS(SourceInfo L) {
47129 return emitOp<>(OP_ShlSint16IntAPS, L);
47130}
47131bool ByteCodeEmitter::emitShlUint16Sint8(SourceInfo L) {
47132 return emitOp<>(OP_ShlUint16Sint8, L);
47133}
47134bool ByteCodeEmitter::emitShlUint16Uint8(SourceInfo L) {
47135 return emitOp<>(OP_ShlUint16Uint8, L);
47136}
47137bool ByteCodeEmitter::emitShlUint16Sint16(SourceInfo L) {
47138 return emitOp<>(OP_ShlUint16Sint16, L);
47139}
47140bool ByteCodeEmitter::emitShlUint16Uint16(SourceInfo L) {
47141 return emitOp<>(OP_ShlUint16Uint16, L);
47142}
47143bool ByteCodeEmitter::emitShlUint16Sint32(SourceInfo L) {
47144 return emitOp<>(OP_ShlUint16Sint32, L);
47145}
47146bool ByteCodeEmitter::emitShlUint16Uint32(SourceInfo L) {
47147 return emitOp<>(OP_ShlUint16Uint32, L);
47148}
47149bool ByteCodeEmitter::emitShlUint16Sint64(SourceInfo L) {
47150 return emitOp<>(OP_ShlUint16Sint64, L);
47151}
47152bool ByteCodeEmitter::emitShlUint16Uint64(SourceInfo L) {
47153 return emitOp<>(OP_ShlUint16Uint64, L);
47154}
47155bool ByteCodeEmitter::emitShlUint16IntAP(SourceInfo L) {
47156 return emitOp<>(OP_ShlUint16IntAP, L);
47157}
47158bool ByteCodeEmitter::emitShlUint16IntAPS(SourceInfo L) {
47159 return emitOp<>(OP_ShlUint16IntAPS, L);
47160}
47161bool ByteCodeEmitter::emitShlSint32Sint8(SourceInfo L) {
47162 return emitOp<>(OP_ShlSint32Sint8, L);
47163}
47164bool ByteCodeEmitter::emitShlSint32Uint8(SourceInfo L) {
47165 return emitOp<>(OP_ShlSint32Uint8, L);
47166}
47167bool ByteCodeEmitter::emitShlSint32Sint16(SourceInfo L) {
47168 return emitOp<>(OP_ShlSint32Sint16, L);
47169}
47170bool ByteCodeEmitter::emitShlSint32Uint16(SourceInfo L) {
47171 return emitOp<>(OP_ShlSint32Uint16, L);
47172}
47173bool ByteCodeEmitter::emitShlSint32Sint32(SourceInfo L) {
47174 return emitOp<>(OP_ShlSint32Sint32, L);
47175}
47176bool ByteCodeEmitter::emitShlSint32Uint32(SourceInfo L) {
47177 return emitOp<>(OP_ShlSint32Uint32, L);
47178}
47179bool ByteCodeEmitter::emitShlSint32Sint64(SourceInfo L) {
47180 return emitOp<>(OP_ShlSint32Sint64, L);
47181}
47182bool ByteCodeEmitter::emitShlSint32Uint64(SourceInfo L) {
47183 return emitOp<>(OP_ShlSint32Uint64, L);
47184}
47185bool ByteCodeEmitter::emitShlSint32IntAP(SourceInfo L) {
47186 return emitOp<>(OP_ShlSint32IntAP, L);
47187}
47188bool ByteCodeEmitter::emitShlSint32IntAPS(SourceInfo L) {
47189 return emitOp<>(OP_ShlSint32IntAPS, L);
47190}
47191bool ByteCodeEmitter::emitShlUint32Sint8(SourceInfo L) {
47192 return emitOp<>(OP_ShlUint32Sint8, L);
47193}
47194bool ByteCodeEmitter::emitShlUint32Uint8(SourceInfo L) {
47195 return emitOp<>(OP_ShlUint32Uint8, L);
47196}
47197bool ByteCodeEmitter::emitShlUint32Sint16(SourceInfo L) {
47198 return emitOp<>(OP_ShlUint32Sint16, L);
47199}
47200bool ByteCodeEmitter::emitShlUint32Uint16(SourceInfo L) {
47201 return emitOp<>(OP_ShlUint32Uint16, L);
47202}
47203bool ByteCodeEmitter::emitShlUint32Sint32(SourceInfo L) {
47204 return emitOp<>(OP_ShlUint32Sint32, L);
47205}
47206bool ByteCodeEmitter::emitShlUint32Uint32(SourceInfo L) {
47207 return emitOp<>(OP_ShlUint32Uint32, L);
47208}
47209bool ByteCodeEmitter::emitShlUint32Sint64(SourceInfo L) {
47210 return emitOp<>(OP_ShlUint32Sint64, L);
47211}
47212bool ByteCodeEmitter::emitShlUint32Uint64(SourceInfo L) {
47213 return emitOp<>(OP_ShlUint32Uint64, L);
47214}
47215bool ByteCodeEmitter::emitShlUint32IntAP(SourceInfo L) {
47216 return emitOp<>(OP_ShlUint32IntAP, L);
47217}
47218bool ByteCodeEmitter::emitShlUint32IntAPS(SourceInfo L) {
47219 return emitOp<>(OP_ShlUint32IntAPS, L);
47220}
47221bool ByteCodeEmitter::emitShlSint64Sint8(SourceInfo L) {
47222 return emitOp<>(OP_ShlSint64Sint8, L);
47223}
47224bool ByteCodeEmitter::emitShlSint64Uint8(SourceInfo L) {
47225 return emitOp<>(OP_ShlSint64Uint8, L);
47226}
47227bool ByteCodeEmitter::emitShlSint64Sint16(SourceInfo L) {
47228 return emitOp<>(OP_ShlSint64Sint16, L);
47229}
47230bool ByteCodeEmitter::emitShlSint64Uint16(SourceInfo L) {
47231 return emitOp<>(OP_ShlSint64Uint16, L);
47232}
47233bool ByteCodeEmitter::emitShlSint64Sint32(SourceInfo L) {
47234 return emitOp<>(OP_ShlSint64Sint32, L);
47235}
47236bool ByteCodeEmitter::emitShlSint64Uint32(SourceInfo L) {
47237 return emitOp<>(OP_ShlSint64Uint32, L);
47238}
47239bool ByteCodeEmitter::emitShlSint64Sint64(SourceInfo L) {
47240 return emitOp<>(OP_ShlSint64Sint64, L);
47241}
47242bool ByteCodeEmitter::emitShlSint64Uint64(SourceInfo L) {
47243 return emitOp<>(OP_ShlSint64Uint64, L);
47244}
47245bool ByteCodeEmitter::emitShlSint64IntAP(SourceInfo L) {
47246 return emitOp<>(OP_ShlSint64IntAP, L);
47247}
47248bool ByteCodeEmitter::emitShlSint64IntAPS(SourceInfo L) {
47249 return emitOp<>(OP_ShlSint64IntAPS, L);
47250}
47251bool ByteCodeEmitter::emitShlUint64Sint8(SourceInfo L) {
47252 return emitOp<>(OP_ShlUint64Sint8, L);
47253}
47254bool ByteCodeEmitter::emitShlUint64Uint8(SourceInfo L) {
47255 return emitOp<>(OP_ShlUint64Uint8, L);
47256}
47257bool ByteCodeEmitter::emitShlUint64Sint16(SourceInfo L) {
47258 return emitOp<>(OP_ShlUint64Sint16, L);
47259}
47260bool ByteCodeEmitter::emitShlUint64Uint16(SourceInfo L) {
47261 return emitOp<>(OP_ShlUint64Uint16, L);
47262}
47263bool ByteCodeEmitter::emitShlUint64Sint32(SourceInfo L) {
47264 return emitOp<>(OP_ShlUint64Sint32, L);
47265}
47266bool ByteCodeEmitter::emitShlUint64Uint32(SourceInfo L) {
47267 return emitOp<>(OP_ShlUint64Uint32, L);
47268}
47269bool ByteCodeEmitter::emitShlUint64Sint64(SourceInfo L) {
47270 return emitOp<>(OP_ShlUint64Sint64, L);
47271}
47272bool ByteCodeEmitter::emitShlUint64Uint64(SourceInfo L) {
47273 return emitOp<>(OP_ShlUint64Uint64, L);
47274}
47275bool ByteCodeEmitter::emitShlUint64IntAP(SourceInfo L) {
47276 return emitOp<>(OP_ShlUint64IntAP, L);
47277}
47278bool ByteCodeEmitter::emitShlUint64IntAPS(SourceInfo L) {
47279 return emitOp<>(OP_ShlUint64IntAPS, L);
47280}
47281bool ByteCodeEmitter::emitShlIntAPSint8(SourceInfo L) {
47282 return emitOp<>(OP_ShlIntAPSint8, L);
47283}
47284bool ByteCodeEmitter::emitShlIntAPUint8(SourceInfo L) {
47285 return emitOp<>(OP_ShlIntAPUint8, L);
47286}
47287bool ByteCodeEmitter::emitShlIntAPSint16(SourceInfo L) {
47288 return emitOp<>(OP_ShlIntAPSint16, L);
47289}
47290bool ByteCodeEmitter::emitShlIntAPUint16(SourceInfo L) {
47291 return emitOp<>(OP_ShlIntAPUint16, L);
47292}
47293bool ByteCodeEmitter::emitShlIntAPSint32(SourceInfo L) {
47294 return emitOp<>(OP_ShlIntAPSint32, L);
47295}
47296bool ByteCodeEmitter::emitShlIntAPUint32(SourceInfo L) {
47297 return emitOp<>(OP_ShlIntAPUint32, L);
47298}
47299bool ByteCodeEmitter::emitShlIntAPSint64(SourceInfo L) {
47300 return emitOp<>(OP_ShlIntAPSint64, L);
47301}
47302bool ByteCodeEmitter::emitShlIntAPUint64(SourceInfo L) {
47303 return emitOp<>(OP_ShlIntAPUint64, L);
47304}
47305bool ByteCodeEmitter::emitShlIntAPIntAP(SourceInfo L) {
47306 return emitOp<>(OP_ShlIntAPIntAP, L);
47307}
47308bool ByteCodeEmitter::emitShlIntAPIntAPS(SourceInfo L) {
47309 return emitOp<>(OP_ShlIntAPIntAPS, L);
47310}
47311bool ByteCodeEmitter::emitShlIntAPSSint8(SourceInfo L) {
47312 return emitOp<>(OP_ShlIntAPSSint8, L);
47313}
47314bool ByteCodeEmitter::emitShlIntAPSUint8(SourceInfo L) {
47315 return emitOp<>(OP_ShlIntAPSUint8, L);
47316}
47317bool ByteCodeEmitter::emitShlIntAPSSint16(SourceInfo L) {
47318 return emitOp<>(OP_ShlIntAPSSint16, L);
47319}
47320bool ByteCodeEmitter::emitShlIntAPSUint16(SourceInfo L) {
47321 return emitOp<>(OP_ShlIntAPSUint16, L);
47322}
47323bool ByteCodeEmitter::emitShlIntAPSSint32(SourceInfo L) {
47324 return emitOp<>(OP_ShlIntAPSSint32, L);
47325}
47326bool ByteCodeEmitter::emitShlIntAPSUint32(SourceInfo L) {
47327 return emitOp<>(OP_ShlIntAPSUint32, L);
47328}
47329bool ByteCodeEmitter::emitShlIntAPSSint64(SourceInfo L) {
47330 return emitOp<>(OP_ShlIntAPSSint64, L);
47331}
47332bool ByteCodeEmitter::emitShlIntAPSUint64(SourceInfo L) {
47333 return emitOp<>(OP_ShlIntAPSUint64, L);
47334}
47335bool ByteCodeEmitter::emitShlIntAPSIntAP(SourceInfo L) {
47336 return emitOp<>(OP_ShlIntAPSIntAP, L);
47337}
47338bool ByteCodeEmitter::emitShlIntAPSIntAPS(SourceInfo L) {
47339 return emitOp<>(OP_ShlIntAPSIntAPS, L);
47340}
47341#endif
47342#ifdef GET_EVAL_IMPL
47343bool EvalEmitter::emitShlSint8Sint8(SourceInfo L) {
47344 if (!isActive()) return true;
47345 CurrentSource = L;
47346 return Shl<PT_Sint8, PT_Sint8>(S, CodePtr());
47347}
47348bool EvalEmitter::emitShlSint8Uint8(SourceInfo L) {
47349 if (!isActive()) return true;
47350 CurrentSource = L;
47351 return Shl<PT_Sint8, PT_Uint8>(S, CodePtr());
47352}
47353bool EvalEmitter::emitShlSint8Sint16(SourceInfo L) {
47354 if (!isActive()) return true;
47355 CurrentSource = L;
47356 return Shl<PT_Sint8, PT_Sint16>(S, CodePtr());
47357}
47358bool EvalEmitter::emitShlSint8Uint16(SourceInfo L) {
47359 if (!isActive()) return true;
47360 CurrentSource = L;
47361 return Shl<PT_Sint8, PT_Uint16>(S, CodePtr());
47362}
47363bool EvalEmitter::emitShlSint8Sint32(SourceInfo L) {
47364 if (!isActive()) return true;
47365 CurrentSource = L;
47366 return Shl<PT_Sint8, PT_Sint32>(S, CodePtr());
47367}
47368bool EvalEmitter::emitShlSint8Uint32(SourceInfo L) {
47369 if (!isActive()) return true;
47370 CurrentSource = L;
47371 return Shl<PT_Sint8, PT_Uint32>(S, CodePtr());
47372}
47373bool EvalEmitter::emitShlSint8Sint64(SourceInfo L) {
47374 if (!isActive()) return true;
47375 CurrentSource = L;
47376 return Shl<PT_Sint8, PT_Sint64>(S, CodePtr());
47377}
47378bool EvalEmitter::emitShlSint8Uint64(SourceInfo L) {
47379 if (!isActive()) return true;
47380 CurrentSource = L;
47381 return Shl<PT_Sint8, PT_Uint64>(S, CodePtr());
47382}
47383bool EvalEmitter::emitShlSint8IntAP(SourceInfo L) {
47384 if (!isActive()) return true;
47385 CurrentSource = L;
47386 return Shl<PT_Sint8, PT_IntAP>(S, CodePtr());
47387}
47388bool EvalEmitter::emitShlSint8IntAPS(SourceInfo L) {
47389 if (!isActive()) return true;
47390 CurrentSource = L;
47391 return Shl<PT_Sint8, PT_IntAPS>(S, CodePtr());
47392}
47393bool EvalEmitter::emitShlUint8Sint8(SourceInfo L) {
47394 if (!isActive()) return true;
47395 CurrentSource = L;
47396 return Shl<PT_Uint8, PT_Sint8>(S, CodePtr());
47397}
47398bool EvalEmitter::emitShlUint8Uint8(SourceInfo L) {
47399 if (!isActive()) return true;
47400 CurrentSource = L;
47401 return Shl<PT_Uint8, PT_Uint8>(S, CodePtr());
47402}
47403bool EvalEmitter::emitShlUint8Sint16(SourceInfo L) {
47404 if (!isActive()) return true;
47405 CurrentSource = L;
47406 return Shl<PT_Uint8, PT_Sint16>(S, CodePtr());
47407}
47408bool EvalEmitter::emitShlUint8Uint16(SourceInfo L) {
47409 if (!isActive()) return true;
47410 CurrentSource = L;
47411 return Shl<PT_Uint8, PT_Uint16>(S, CodePtr());
47412}
47413bool EvalEmitter::emitShlUint8Sint32(SourceInfo L) {
47414 if (!isActive()) return true;
47415 CurrentSource = L;
47416 return Shl<PT_Uint8, PT_Sint32>(S, CodePtr());
47417}
47418bool EvalEmitter::emitShlUint8Uint32(SourceInfo L) {
47419 if (!isActive()) return true;
47420 CurrentSource = L;
47421 return Shl<PT_Uint8, PT_Uint32>(S, CodePtr());
47422}
47423bool EvalEmitter::emitShlUint8Sint64(SourceInfo L) {
47424 if (!isActive()) return true;
47425 CurrentSource = L;
47426 return Shl<PT_Uint8, PT_Sint64>(S, CodePtr());
47427}
47428bool EvalEmitter::emitShlUint8Uint64(SourceInfo L) {
47429 if (!isActive()) return true;
47430 CurrentSource = L;
47431 return Shl<PT_Uint8, PT_Uint64>(S, CodePtr());
47432}
47433bool EvalEmitter::emitShlUint8IntAP(SourceInfo L) {
47434 if (!isActive()) return true;
47435 CurrentSource = L;
47436 return Shl<PT_Uint8, PT_IntAP>(S, CodePtr());
47437}
47438bool EvalEmitter::emitShlUint8IntAPS(SourceInfo L) {
47439 if (!isActive()) return true;
47440 CurrentSource = L;
47441 return Shl<PT_Uint8, PT_IntAPS>(S, CodePtr());
47442}
47443bool EvalEmitter::emitShlSint16Sint8(SourceInfo L) {
47444 if (!isActive()) return true;
47445 CurrentSource = L;
47446 return Shl<PT_Sint16, PT_Sint8>(S, CodePtr());
47447}
47448bool EvalEmitter::emitShlSint16Uint8(SourceInfo L) {
47449 if (!isActive()) return true;
47450 CurrentSource = L;
47451 return Shl<PT_Sint16, PT_Uint8>(S, CodePtr());
47452}
47453bool EvalEmitter::emitShlSint16Sint16(SourceInfo L) {
47454 if (!isActive()) return true;
47455 CurrentSource = L;
47456 return Shl<PT_Sint16, PT_Sint16>(S, CodePtr());
47457}
47458bool EvalEmitter::emitShlSint16Uint16(SourceInfo L) {
47459 if (!isActive()) return true;
47460 CurrentSource = L;
47461 return Shl<PT_Sint16, PT_Uint16>(S, CodePtr());
47462}
47463bool EvalEmitter::emitShlSint16Sint32(SourceInfo L) {
47464 if (!isActive()) return true;
47465 CurrentSource = L;
47466 return Shl<PT_Sint16, PT_Sint32>(S, CodePtr());
47467}
47468bool EvalEmitter::emitShlSint16Uint32(SourceInfo L) {
47469 if (!isActive()) return true;
47470 CurrentSource = L;
47471 return Shl<PT_Sint16, PT_Uint32>(S, CodePtr());
47472}
47473bool EvalEmitter::emitShlSint16Sint64(SourceInfo L) {
47474 if (!isActive()) return true;
47475 CurrentSource = L;
47476 return Shl<PT_Sint16, PT_Sint64>(S, CodePtr());
47477}
47478bool EvalEmitter::emitShlSint16Uint64(SourceInfo L) {
47479 if (!isActive()) return true;
47480 CurrentSource = L;
47481 return Shl<PT_Sint16, PT_Uint64>(S, CodePtr());
47482}
47483bool EvalEmitter::emitShlSint16IntAP(SourceInfo L) {
47484 if (!isActive()) return true;
47485 CurrentSource = L;
47486 return Shl<PT_Sint16, PT_IntAP>(S, CodePtr());
47487}
47488bool EvalEmitter::emitShlSint16IntAPS(SourceInfo L) {
47489 if (!isActive()) return true;
47490 CurrentSource = L;
47491 return Shl<PT_Sint16, PT_IntAPS>(S, CodePtr());
47492}
47493bool EvalEmitter::emitShlUint16Sint8(SourceInfo L) {
47494 if (!isActive()) return true;
47495 CurrentSource = L;
47496 return Shl<PT_Uint16, PT_Sint8>(S, CodePtr());
47497}
47498bool EvalEmitter::emitShlUint16Uint8(SourceInfo L) {
47499 if (!isActive()) return true;
47500 CurrentSource = L;
47501 return Shl<PT_Uint16, PT_Uint8>(S, CodePtr());
47502}
47503bool EvalEmitter::emitShlUint16Sint16(SourceInfo L) {
47504 if (!isActive()) return true;
47505 CurrentSource = L;
47506 return Shl<PT_Uint16, PT_Sint16>(S, CodePtr());
47507}
47508bool EvalEmitter::emitShlUint16Uint16(SourceInfo L) {
47509 if (!isActive()) return true;
47510 CurrentSource = L;
47511 return Shl<PT_Uint16, PT_Uint16>(S, CodePtr());
47512}
47513bool EvalEmitter::emitShlUint16Sint32(SourceInfo L) {
47514 if (!isActive()) return true;
47515 CurrentSource = L;
47516 return Shl<PT_Uint16, PT_Sint32>(S, CodePtr());
47517}
47518bool EvalEmitter::emitShlUint16Uint32(SourceInfo L) {
47519 if (!isActive()) return true;
47520 CurrentSource = L;
47521 return Shl<PT_Uint16, PT_Uint32>(S, CodePtr());
47522}
47523bool EvalEmitter::emitShlUint16Sint64(SourceInfo L) {
47524 if (!isActive()) return true;
47525 CurrentSource = L;
47526 return Shl<PT_Uint16, PT_Sint64>(S, CodePtr());
47527}
47528bool EvalEmitter::emitShlUint16Uint64(SourceInfo L) {
47529 if (!isActive()) return true;
47530 CurrentSource = L;
47531 return Shl<PT_Uint16, PT_Uint64>(S, CodePtr());
47532}
47533bool EvalEmitter::emitShlUint16IntAP(SourceInfo L) {
47534 if (!isActive()) return true;
47535 CurrentSource = L;
47536 return Shl<PT_Uint16, PT_IntAP>(S, CodePtr());
47537}
47538bool EvalEmitter::emitShlUint16IntAPS(SourceInfo L) {
47539 if (!isActive()) return true;
47540 CurrentSource = L;
47541 return Shl<PT_Uint16, PT_IntAPS>(S, CodePtr());
47542}
47543bool EvalEmitter::emitShlSint32Sint8(SourceInfo L) {
47544 if (!isActive()) return true;
47545 CurrentSource = L;
47546 return Shl<PT_Sint32, PT_Sint8>(S, CodePtr());
47547}
47548bool EvalEmitter::emitShlSint32Uint8(SourceInfo L) {
47549 if (!isActive()) return true;
47550 CurrentSource = L;
47551 return Shl<PT_Sint32, PT_Uint8>(S, CodePtr());
47552}
47553bool EvalEmitter::emitShlSint32Sint16(SourceInfo L) {
47554 if (!isActive()) return true;
47555 CurrentSource = L;
47556 return Shl<PT_Sint32, PT_Sint16>(S, CodePtr());
47557}
47558bool EvalEmitter::emitShlSint32Uint16(SourceInfo L) {
47559 if (!isActive()) return true;
47560 CurrentSource = L;
47561 return Shl<PT_Sint32, PT_Uint16>(S, CodePtr());
47562}
47563bool EvalEmitter::emitShlSint32Sint32(SourceInfo L) {
47564 if (!isActive()) return true;
47565 CurrentSource = L;
47566 return Shl<PT_Sint32, PT_Sint32>(S, CodePtr());
47567}
47568bool EvalEmitter::emitShlSint32Uint32(SourceInfo L) {
47569 if (!isActive()) return true;
47570 CurrentSource = L;
47571 return Shl<PT_Sint32, PT_Uint32>(S, CodePtr());
47572}
47573bool EvalEmitter::emitShlSint32Sint64(SourceInfo L) {
47574 if (!isActive()) return true;
47575 CurrentSource = L;
47576 return Shl<PT_Sint32, PT_Sint64>(S, CodePtr());
47577}
47578bool EvalEmitter::emitShlSint32Uint64(SourceInfo L) {
47579 if (!isActive()) return true;
47580 CurrentSource = L;
47581 return Shl<PT_Sint32, PT_Uint64>(S, CodePtr());
47582}
47583bool EvalEmitter::emitShlSint32IntAP(SourceInfo L) {
47584 if (!isActive()) return true;
47585 CurrentSource = L;
47586 return Shl<PT_Sint32, PT_IntAP>(S, CodePtr());
47587}
47588bool EvalEmitter::emitShlSint32IntAPS(SourceInfo L) {
47589 if (!isActive()) return true;
47590 CurrentSource = L;
47591 return Shl<PT_Sint32, PT_IntAPS>(S, CodePtr());
47592}
47593bool EvalEmitter::emitShlUint32Sint8(SourceInfo L) {
47594 if (!isActive()) return true;
47595 CurrentSource = L;
47596 return Shl<PT_Uint32, PT_Sint8>(S, CodePtr());
47597}
47598bool EvalEmitter::emitShlUint32Uint8(SourceInfo L) {
47599 if (!isActive()) return true;
47600 CurrentSource = L;
47601 return Shl<PT_Uint32, PT_Uint8>(S, CodePtr());
47602}
47603bool EvalEmitter::emitShlUint32Sint16(SourceInfo L) {
47604 if (!isActive()) return true;
47605 CurrentSource = L;
47606 return Shl<PT_Uint32, PT_Sint16>(S, CodePtr());
47607}
47608bool EvalEmitter::emitShlUint32Uint16(SourceInfo L) {
47609 if (!isActive()) return true;
47610 CurrentSource = L;
47611 return Shl<PT_Uint32, PT_Uint16>(S, CodePtr());
47612}
47613bool EvalEmitter::emitShlUint32Sint32(SourceInfo L) {
47614 if (!isActive()) return true;
47615 CurrentSource = L;
47616 return Shl<PT_Uint32, PT_Sint32>(S, CodePtr());
47617}
47618bool EvalEmitter::emitShlUint32Uint32(SourceInfo L) {
47619 if (!isActive()) return true;
47620 CurrentSource = L;
47621 return Shl<PT_Uint32, PT_Uint32>(S, CodePtr());
47622}
47623bool EvalEmitter::emitShlUint32Sint64(SourceInfo L) {
47624 if (!isActive()) return true;
47625 CurrentSource = L;
47626 return Shl<PT_Uint32, PT_Sint64>(S, CodePtr());
47627}
47628bool EvalEmitter::emitShlUint32Uint64(SourceInfo L) {
47629 if (!isActive()) return true;
47630 CurrentSource = L;
47631 return Shl<PT_Uint32, PT_Uint64>(S, CodePtr());
47632}
47633bool EvalEmitter::emitShlUint32IntAP(SourceInfo L) {
47634 if (!isActive()) return true;
47635 CurrentSource = L;
47636 return Shl<PT_Uint32, PT_IntAP>(S, CodePtr());
47637}
47638bool EvalEmitter::emitShlUint32IntAPS(SourceInfo L) {
47639 if (!isActive()) return true;
47640 CurrentSource = L;
47641 return Shl<PT_Uint32, PT_IntAPS>(S, CodePtr());
47642}
47643bool EvalEmitter::emitShlSint64Sint8(SourceInfo L) {
47644 if (!isActive()) return true;
47645 CurrentSource = L;
47646 return Shl<PT_Sint64, PT_Sint8>(S, CodePtr());
47647}
47648bool EvalEmitter::emitShlSint64Uint8(SourceInfo L) {
47649 if (!isActive()) return true;
47650 CurrentSource = L;
47651 return Shl<PT_Sint64, PT_Uint8>(S, CodePtr());
47652}
47653bool EvalEmitter::emitShlSint64Sint16(SourceInfo L) {
47654 if (!isActive()) return true;
47655 CurrentSource = L;
47656 return Shl<PT_Sint64, PT_Sint16>(S, CodePtr());
47657}
47658bool EvalEmitter::emitShlSint64Uint16(SourceInfo L) {
47659 if (!isActive()) return true;
47660 CurrentSource = L;
47661 return Shl<PT_Sint64, PT_Uint16>(S, CodePtr());
47662}
47663bool EvalEmitter::emitShlSint64Sint32(SourceInfo L) {
47664 if (!isActive()) return true;
47665 CurrentSource = L;
47666 return Shl<PT_Sint64, PT_Sint32>(S, CodePtr());
47667}
47668bool EvalEmitter::emitShlSint64Uint32(SourceInfo L) {
47669 if (!isActive()) return true;
47670 CurrentSource = L;
47671 return Shl<PT_Sint64, PT_Uint32>(S, CodePtr());
47672}
47673bool EvalEmitter::emitShlSint64Sint64(SourceInfo L) {
47674 if (!isActive()) return true;
47675 CurrentSource = L;
47676 return Shl<PT_Sint64, PT_Sint64>(S, CodePtr());
47677}
47678bool EvalEmitter::emitShlSint64Uint64(SourceInfo L) {
47679 if (!isActive()) return true;
47680 CurrentSource = L;
47681 return Shl<PT_Sint64, PT_Uint64>(S, CodePtr());
47682}
47683bool EvalEmitter::emitShlSint64IntAP(SourceInfo L) {
47684 if (!isActive()) return true;
47685 CurrentSource = L;
47686 return Shl<PT_Sint64, PT_IntAP>(S, CodePtr());
47687}
47688bool EvalEmitter::emitShlSint64IntAPS(SourceInfo L) {
47689 if (!isActive()) return true;
47690 CurrentSource = L;
47691 return Shl<PT_Sint64, PT_IntAPS>(S, CodePtr());
47692}
47693bool EvalEmitter::emitShlUint64Sint8(SourceInfo L) {
47694 if (!isActive()) return true;
47695 CurrentSource = L;
47696 return Shl<PT_Uint64, PT_Sint8>(S, CodePtr());
47697}
47698bool EvalEmitter::emitShlUint64Uint8(SourceInfo L) {
47699 if (!isActive()) return true;
47700 CurrentSource = L;
47701 return Shl<PT_Uint64, PT_Uint8>(S, CodePtr());
47702}
47703bool EvalEmitter::emitShlUint64Sint16(SourceInfo L) {
47704 if (!isActive()) return true;
47705 CurrentSource = L;
47706 return Shl<PT_Uint64, PT_Sint16>(S, CodePtr());
47707}
47708bool EvalEmitter::emitShlUint64Uint16(SourceInfo L) {
47709 if (!isActive()) return true;
47710 CurrentSource = L;
47711 return Shl<PT_Uint64, PT_Uint16>(S, CodePtr());
47712}
47713bool EvalEmitter::emitShlUint64Sint32(SourceInfo L) {
47714 if (!isActive()) return true;
47715 CurrentSource = L;
47716 return Shl<PT_Uint64, PT_Sint32>(S, CodePtr());
47717}
47718bool EvalEmitter::emitShlUint64Uint32(SourceInfo L) {
47719 if (!isActive()) return true;
47720 CurrentSource = L;
47721 return Shl<PT_Uint64, PT_Uint32>(S, CodePtr());
47722}
47723bool EvalEmitter::emitShlUint64Sint64(SourceInfo L) {
47724 if (!isActive()) return true;
47725 CurrentSource = L;
47726 return Shl<PT_Uint64, PT_Sint64>(S, CodePtr());
47727}
47728bool EvalEmitter::emitShlUint64Uint64(SourceInfo L) {
47729 if (!isActive()) return true;
47730 CurrentSource = L;
47731 return Shl<PT_Uint64, PT_Uint64>(S, CodePtr());
47732}
47733bool EvalEmitter::emitShlUint64IntAP(SourceInfo L) {
47734 if (!isActive()) return true;
47735 CurrentSource = L;
47736 return Shl<PT_Uint64, PT_IntAP>(S, CodePtr());
47737}
47738bool EvalEmitter::emitShlUint64IntAPS(SourceInfo L) {
47739 if (!isActive()) return true;
47740 CurrentSource = L;
47741 return Shl<PT_Uint64, PT_IntAPS>(S, CodePtr());
47742}
47743bool EvalEmitter::emitShlIntAPSint8(SourceInfo L) {
47744 if (!isActive()) return true;
47745 CurrentSource = L;
47746 return Shl<PT_IntAP, PT_Sint8>(S, CodePtr());
47747}
47748bool EvalEmitter::emitShlIntAPUint8(SourceInfo L) {
47749 if (!isActive()) return true;
47750 CurrentSource = L;
47751 return Shl<PT_IntAP, PT_Uint8>(S, CodePtr());
47752}
47753bool EvalEmitter::emitShlIntAPSint16(SourceInfo L) {
47754 if (!isActive()) return true;
47755 CurrentSource = L;
47756 return Shl<PT_IntAP, PT_Sint16>(S, CodePtr());
47757}
47758bool EvalEmitter::emitShlIntAPUint16(SourceInfo L) {
47759 if (!isActive()) return true;
47760 CurrentSource = L;
47761 return Shl<PT_IntAP, PT_Uint16>(S, CodePtr());
47762}
47763bool EvalEmitter::emitShlIntAPSint32(SourceInfo L) {
47764 if (!isActive()) return true;
47765 CurrentSource = L;
47766 return Shl<PT_IntAP, PT_Sint32>(S, CodePtr());
47767}
47768bool EvalEmitter::emitShlIntAPUint32(SourceInfo L) {
47769 if (!isActive()) return true;
47770 CurrentSource = L;
47771 return Shl<PT_IntAP, PT_Uint32>(S, CodePtr());
47772}
47773bool EvalEmitter::emitShlIntAPSint64(SourceInfo L) {
47774 if (!isActive()) return true;
47775 CurrentSource = L;
47776 return Shl<PT_IntAP, PT_Sint64>(S, CodePtr());
47777}
47778bool EvalEmitter::emitShlIntAPUint64(SourceInfo L) {
47779 if (!isActive()) return true;
47780 CurrentSource = L;
47781 return Shl<PT_IntAP, PT_Uint64>(S, CodePtr());
47782}
47783bool EvalEmitter::emitShlIntAPIntAP(SourceInfo L) {
47784 if (!isActive()) return true;
47785 CurrentSource = L;
47786 return Shl<PT_IntAP, PT_IntAP>(S, CodePtr());
47787}
47788bool EvalEmitter::emitShlIntAPIntAPS(SourceInfo L) {
47789 if (!isActive()) return true;
47790 CurrentSource = L;
47791 return Shl<PT_IntAP, PT_IntAPS>(S, CodePtr());
47792}
47793bool EvalEmitter::emitShlIntAPSSint8(SourceInfo L) {
47794 if (!isActive()) return true;
47795 CurrentSource = L;
47796 return Shl<PT_IntAPS, PT_Sint8>(S, CodePtr());
47797}
47798bool EvalEmitter::emitShlIntAPSUint8(SourceInfo L) {
47799 if (!isActive()) return true;
47800 CurrentSource = L;
47801 return Shl<PT_IntAPS, PT_Uint8>(S, CodePtr());
47802}
47803bool EvalEmitter::emitShlIntAPSSint16(SourceInfo L) {
47804 if (!isActive()) return true;
47805 CurrentSource = L;
47806 return Shl<PT_IntAPS, PT_Sint16>(S, CodePtr());
47807}
47808bool EvalEmitter::emitShlIntAPSUint16(SourceInfo L) {
47809 if (!isActive()) return true;
47810 CurrentSource = L;
47811 return Shl<PT_IntAPS, PT_Uint16>(S, CodePtr());
47812}
47813bool EvalEmitter::emitShlIntAPSSint32(SourceInfo L) {
47814 if (!isActive()) return true;
47815 CurrentSource = L;
47816 return Shl<PT_IntAPS, PT_Sint32>(S, CodePtr());
47817}
47818bool EvalEmitter::emitShlIntAPSUint32(SourceInfo L) {
47819 if (!isActive()) return true;
47820 CurrentSource = L;
47821 return Shl<PT_IntAPS, PT_Uint32>(S, CodePtr());
47822}
47823bool EvalEmitter::emitShlIntAPSSint64(SourceInfo L) {
47824 if (!isActive()) return true;
47825 CurrentSource = L;
47826 return Shl<PT_IntAPS, PT_Sint64>(S, CodePtr());
47827}
47828bool EvalEmitter::emitShlIntAPSUint64(SourceInfo L) {
47829 if (!isActive()) return true;
47830 CurrentSource = L;
47831 return Shl<PT_IntAPS, PT_Uint64>(S, CodePtr());
47832}
47833bool EvalEmitter::emitShlIntAPSIntAP(SourceInfo L) {
47834 if (!isActive()) return true;
47835 CurrentSource = L;
47836 return Shl<PT_IntAPS, PT_IntAP>(S, CodePtr());
47837}
47838bool EvalEmitter::emitShlIntAPSIntAPS(SourceInfo L) {
47839 if (!isActive()) return true;
47840 CurrentSource = L;
47841 return Shl<PT_IntAPS, PT_IntAPS>(S, CodePtr());
47842}
47843#endif
47844#ifdef GET_OPCODE_NAMES
47845OP_ShrSint8Sint8,
47846OP_ShrSint8Uint8,
47847OP_ShrSint8Sint16,
47848OP_ShrSint8Uint16,
47849OP_ShrSint8Sint32,
47850OP_ShrSint8Uint32,
47851OP_ShrSint8Sint64,
47852OP_ShrSint8Uint64,
47853OP_ShrSint8IntAP,
47854OP_ShrSint8IntAPS,
47855OP_ShrUint8Sint8,
47856OP_ShrUint8Uint8,
47857OP_ShrUint8Sint16,
47858OP_ShrUint8Uint16,
47859OP_ShrUint8Sint32,
47860OP_ShrUint8Uint32,
47861OP_ShrUint8Sint64,
47862OP_ShrUint8Uint64,
47863OP_ShrUint8IntAP,
47864OP_ShrUint8IntAPS,
47865OP_ShrSint16Sint8,
47866OP_ShrSint16Uint8,
47867OP_ShrSint16Sint16,
47868OP_ShrSint16Uint16,
47869OP_ShrSint16Sint32,
47870OP_ShrSint16Uint32,
47871OP_ShrSint16Sint64,
47872OP_ShrSint16Uint64,
47873OP_ShrSint16IntAP,
47874OP_ShrSint16IntAPS,
47875OP_ShrUint16Sint8,
47876OP_ShrUint16Uint8,
47877OP_ShrUint16Sint16,
47878OP_ShrUint16Uint16,
47879OP_ShrUint16Sint32,
47880OP_ShrUint16Uint32,
47881OP_ShrUint16Sint64,
47882OP_ShrUint16Uint64,
47883OP_ShrUint16IntAP,
47884OP_ShrUint16IntAPS,
47885OP_ShrSint32Sint8,
47886OP_ShrSint32Uint8,
47887OP_ShrSint32Sint16,
47888OP_ShrSint32Uint16,
47889OP_ShrSint32Sint32,
47890OP_ShrSint32Uint32,
47891OP_ShrSint32Sint64,
47892OP_ShrSint32Uint64,
47893OP_ShrSint32IntAP,
47894OP_ShrSint32IntAPS,
47895OP_ShrUint32Sint8,
47896OP_ShrUint32Uint8,
47897OP_ShrUint32Sint16,
47898OP_ShrUint32Uint16,
47899OP_ShrUint32Sint32,
47900OP_ShrUint32Uint32,
47901OP_ShrUint32Sint64,
47902OP_ShrUint32Uint64,
47903OP_ShrUint32IntAP,
47904OP_ShrUint32IntAPS,
47905OP_ShrSint64Sint8,
47906OP_ShrSint64Uint8,
47907OP_ShrSint64Sint16,
47908OP_ShrSint64Uint16,
47909OP_ShrSint64Sint32,
47910OP_ShrSint64Uint32,
47911OP_ShrSint64Sint64,
47912OP_ShrSint64Uint64,
47913OP_ShrSint64IntAP,
47914OP_ShrSint64IntAPS,
47915OP_ShrUint64Sint8,
47916OP_ShrUint64Uint8,
47917OP_ShrUint64Sint16,
47918OP_ShrUint64Uint16,
47919OP_ShrUint64Sint32,
47920OP_ShrUint64Uint32,
47921OP_ShrUint64Sint64,
47922OP_ShrUint64Uint64,
47923OP_ShrUint64IntAP,
47924OP_ShrUint64IntAPS,
47925OP_ShrIntAPSint8,
47926OP_ShrIntAPUint8,
47927OP_ShrIntAPSint16,
47928OP_ShrIntAPUint16,
47929OP_ShrIntAPSint32,
47930OP_ShrIntAPUint32,
47931OP_ShrIntAPSint64,
47932OP_ShrIntAPUint64,
47933OP_ShrIntAPIntAP,
47934OP_ShrIntAPIntAPS,
47935OP_ShrIntAPSSint8,
47936OP_ShrIntAPSUint8,
47937OP_ShrIntAPSSint16,
47938OP_ShrIntAPSUint16,
47939OP_ShrIntAPSSint32,
47940OP_ShrIntAPSUint32,
47941OP_ShrIntAPSSint64,
47942OP_ShrIntAPSUint64,
47943OP_ShrIntAPSIntAP,
47944OP_ShrIntAPSIntAPS,
47945#endif
47946#ifdef GET_INTERPFN_LIST
47947&Interp_ShrSint8Sint8,
47948&Interp_ShrSint8Uint8,
47949&Interp_ShrSint8Sint16,
47950&Interp_ShrSint8Uint16,
47951&Interp_ShrSint8Sint32,
47952&Interp_ShrSint8Uint32,
47953&Interp_ShrSint8Sint64,
47954&Interp_ShrSint8Uint64,
47955&Interp_ShrSint8IntAP,
47956&Interp_ShrSint8IntAPS,
47957&Interp_ShrUint8Sint8,
47958&Interp_ShrUint8Uint8,
47959&Interp_ShrUint8Sint16,
47960&Interp_ShrUint8Uint16,
47961&Interp_ShrUint8Sint32,
47962&Interp_ShrUint8Uint32,
47963&Interp_ShrUint8Sint64,
47964&Interp_ShrUint8Uint64,
47965&Interp_ShrUint8IntAP,
47966&Interp_ShrUint8IntAPS,
47967&Interp_ShrSint16Sint8,
47968&Interp_ShrSint16Uint8,
47969&Interp_ShrSint16Sint16,
47970&Interp_ShrSint16Uint16,
47971&Interp_ShrSint16Sint32,
47972&Interp_ShrSint16Uint32,
47973&Interp_ShrSint16Sint64,
47974&Interp_ShrSint16Uint64,
47975&Interp_ShrSint16IntAP,
47976&Interp_ShrSint16IntAPS,
47977&Interp_ShrUint16Sint8,
47978&Interp_ShrUint16Uint8,
47979&Interp_ShrUint16Sint16,
47980&Interp_ShrUint16Uint16,
47981&Interp_ShrUint16Sint32,
47982&Interp_ShrUint16Uint32,
47983&Interp_ShrUint16Sint64,
47984&Interp_ShrUint16Uint64,
47985&Interp_ShrUint16IntAP,
47986&Interp_ShrUint16IntAPS,
47987&Interp_ShrSint32Sint8,
47988&Interp_ShrSint32Uint8,
47989&Interp_ShrSint32Sint16,
47990&Interp_ShrSint32Uint16,
47991&Interp_ShrSint32Sint32,
47992&Interp_ShrSint32Uint32,
47993&Interp_ShrSint32Sint64,
47994&Interp_ShrSint32Uint64,
47995&Interp_ShrSint32IntAP,
47996&Interp_ShrSint32IntAPS,
47997&Interp_ShrUint32Sint8,
47998&Interp_ShrUint32Uint8,
47999&Interp_ShrUint32Sint16,
48000&Interp_ShrUint32Uint16,
48001&Interp_ShrUint32Sint32,
48002&Interp_ShrUint32Uint32,
48003&Interp_ShrUint32Sint64,
48004&Interp_ShrUint32Uint64,
48005&Interp_ShrUint32IntAP,
48006&Interp_ShrUint32IntAPS,
48007&Interp_ShrSint64Sint8,
48008&Interp_ShrSint64Uint8,
48009&Interp_ShrSint64Sint16,
48010&Interp_ShrSint64Uint16,
48011&Interp_ShrSint64Sint32,
48012&Interp_ShrSint64Uint32,
48013&Interp_ShrSint64Sint64,
48014&Interp_ShrSint64Uint64,
48015&Interp_ShrSint64IntAP,
48016&Interp_ShrSint64IntAPS,
48017&Interp_ShrUint64Sint8,
48018&Interp_ShrUint64Uint8,
48019&Interp_ShrUint64Sint16,
48020&Interp_ShrUint64Uint16,
48021&Interp_ShrUint64Sint32,
48022&Interp_ShrUint64Uint32,
48023&Interp_ShrUint64Sint64,
48024&Interp_ShrUint64Uint64,
48025&Interp_ShrUint64IntAP,
48026&Interp_ShrUint64IntAPS,
48027&Interp_ShrIntAPSint8,
48028&Interp_ShrIntAPUint8,
48029&Interp_ShrIntAPSint16,
48030&Interp_ShrIntAPUint16,
48031&Interp_ShrIntAPSint32,
48032&Interp_ShrIntAPUint32,
48033&Interp_ShrIntAPSint64,
48034&Interp_ShrIntAPUint64,
48035&Interp_ShrIntAPIntAP,
48036&Interp_ShrIntAPIntAPS,
48037&Interp_ShrIntAPSSint8,
48038&Interp_ShrIntAPSUint8,
48039&Interp_ShrIntAPSSint16,
48040&Interp_ShrIntAPSUint16,
48041&Interp_ShrIntAPSSint32,
48042&Interp_ShrIntAPSUint32,
48043&Interp_ShrIntAPSSint64,
48044&Interp_ShrIntAPSUint64,
48045&Interp_ShrIntAPSIntAP,
48046&Interp_ShrIntAPSIntAPS,
48047#endif
48048#ifdef GET_INTERPFN_DISPATCHERS
48049PRESERVE_NONE
48050static bool Interp_ShrSint8Sint8(InterpState &S) {
48051 if (!Shr<PT_Sint8, PT_Sint8>(S, S.PC)) return false;
48052#if USE_TAILCALLS
48053 MUSTTAIL return InterpNext(S);
48054#else
48055 return true;
48056#endif
48057}
48058PRESERVE_NONE
48059static bool Interp_ShrSint8Uint8(InterpState &S) {
48060 if (!Shr<PT_Sint8, PT_Uint8>(S, S.PC)) return false;
48061#if USE_TAILCALLS
48062 MUSTTAIL return InterpNext(S);
48063#else
48064 return true;
48065#endif
48066}
48067PRESERVE_NONE
48068static bool Interp_ShrSint8Sint16(InterpState &S) {
48069 if (!Shr<PT_Sint8, PT_Sint16>(S, S.PC)) return false;
48070#if USE_TAILCALLS
48071 MUSTTAIL return InterpNext(S);
48072#else
48073 return true;
48074#endif
48075}
48076PRESERVE_NONE
48077static bool Interp_ShrSint8Uint16(InterpState &S) {
48078 if (!Shr<PT_Sint8, PT_Uint16>(S, S.PC)) return false;
48079#if USE_TAILCALLS
48080 MUSTTAIL return InterpNext(S);
48081#else
48082 return true;
48083#endif
48084}
48085PRESERVE_NONE
48086static bool Interp_ShrSint8Sint32(InterpState &S) {
48087 if (!Shr<PT_Sint8, PT_Sint32>(S, S.PC)) return false;
48088#if USE_TAILCALLS
48089 MUSTTAIL return InterpNext(S);
48090#else
48091 return true;
48092#endif
48093}
48094PRESERVE_NONE
48095static bool Interp_ShrSint8Uint32(InterpState &S) {
48096 if (!Shr<PT_Sint8, PT_Uint32>(S, S.PC)) return false;
48097#if USE_TAILCALLS
48098 MUSTTAIL return InterpNext(S);
48099#else
48100 return true;
48101#endif
48102}
48103PRESERVE_NONE
48104static bool Interp_ShrSint8Sint64(InterpState &S) {
48105 if (!Shr<PT_Sint8, PT_Sint64>(S, S.PC)) return false;
48106#if USE_TAILCALLS
48107 MUSTTAIL return InterpNext(S);
48108#else
48109 return true;
48110#endif
48111}
48112PRESERVE_NONE
48113static bool Interp_ShrSint8Uint64(InterpState &S) {
48114 if (!Shr<PT_Sint8, PT_Uint64>(S, S.PC)) return false;
48115#if USE_TAILCALLS
48116 MUSTTAIL return InterpNext(S);
48117#else
48118 return true;
48119#endif
48120}
48121PRESERVE_NONE
48122static bool Interp_ShrSint8IntAP(InterpState &S) {
48123 if (!Shr<PT_Sint8, PT_IntAP>(S, S.PC)) return false;
48124#if USE_TAILCALLS
48125 MUSTTAIL return InterpNext(S);
48126#else
48127 return true;
48128#endif
48129}
48130PRESERVE_NONE
48131static bool Interp_ShrSint8IntAPS(InterpState &S) {
48132 if (!Shr<PT_Sint8, PT_IntAPS>(S, S.PC)) return false;
48133#if USE_TAILCALLS
48134 MUSTTAIL return InterpNext(S);
48135#else
48136 return true;
48137#endif
48138}
48139PRESERVE_NONE
48140static bool Interp_ShrUint8Sint8(InterpState &S) {
48141 if (!Shr<PT_Uint8, PT_Sint8>(S, S.PC)) return false;
48142#if USE_TAILCALLS
48143 MUSTTAIL return InterpNext(S);
48144#else
48145 return true;
48146#endif
48147}
48148PRESERVE_NONE
48149static bool Interp_ShrUint8Uint8(InterpState &S) {
48150 if (!Shr<PT_Uint8, PT_Uint8>(S, S.PC)) return false;
48151#if USE_TAILCALLS
48152 MUSTTAIL return InterpNext(S);
48153#else
48154 return true;
48155#endif
48156}
48157PRESERVE_NONE
48158static bool Interp_ShrUint8Sint16(InterpState &S) {
48159 if (!Shr<PT_Uint8, PT_Sint16>(S, S.PC)) return false;
48160#if USE_TAILCALLS
48161 MUSTTAIL return InterpNext(S);
48162#else
48163 return true;
48164#endif
48165}
48166PRESERVE_NONE
48167static bool Interp_ShrUint8Uint16(InterpState &S) {
48168 if (!Shr<PT_Uint8, PT_Uint16>(S, S.PC)) return false;
48169#if USE_TAILCALLS
48170 MUSTTAIL return InterpNext(S);
48171#else
48172 return true;
48173#endif
48174}
48175PRESERVE_NONE
48176static bool Interp_ShrUint8Sint32(InterpState &S) {
48177 if (!Shr<PT_Uint8, PT_Sint32>(S, S.PC)) return false;
48178#if USE_TAILCALLS
48179 MUSTTAIL return InterpNext(S);
48180#else
48181 return true;
48182#endif
48183}
48184PRESERVE_NONE
48185static bool Interp_ShrUint8Uint32(InterpState &S) {
48186 if (!Shr<PT_Uint8, PT_Uint32>(S, S.PC)) return false;
48187#if USE_TAILCALLS
48188 MUSTTAIL return InterpNext(S);
48189#else
48190 return true;
48191#endif
48192}
48193PRESERVE_NONE
48194static bool Interp_ShrUint8Sint64(InterpState &S) {
48195 if (!Shr<PT_Uint8, PT_Sint64>(S, S.PC)) return false;
48196#if USE_TAILCALLS
48197 MUSTTAIL return InterpNext(S);
48198#else
48199 return true;
48200#endif
48201}
48202PRESERVE_NONE
48203static bool Interp_ShrUint8Uint64(InterpState &S) {
48204 if (!Shr<PT_Uint8, PT_Uint64>(S, S.PC)) return false;
48205#if USE_TAILCALLS
48206 MUSTTAIL return InterpNext(S);
48207#else
48208 return true;
48209#endif
48210}
48211PRESERVE_NONE
48212static bool Interp_ShrUint8IntAP(InterpState &S) {
48213 if (!Shr<PT_Uint8, PT_IntAP>(S, S.PC)) return false;
48214#if USE_TAILCALLS
48215 MUSTTAIL return InterpNext(S);
48216#else
48217 return true;
48218#endif
48219}
48220PRESERVE_NONE
48221static bool Interp_ShrUint8IntAPS(InterpState &S) {
48222 if (!Shr<PT_Uint8, PT_IntAPS>(S, S.PC)) return false;
48223#if USE_TAILCALLS
48224 MUSTTAIL return InterpNext(S);
48225#else
48226 return true;
48227#endif
48228}
48229PRESERVE_NONE
48230static bool Interp_ShrSint16Sint8(InterpState &S) {
48231 if (!Shr<PT_Sint16, PT_Sint8>(S, S.PC)) return false;
48232#if USE_TAILCALLS
48233 MUSTTAIL return InterpNext(S);
48234#else
48235 return true;
48236#endif
48237}
48238PRESERVE_NONE
48239static bool Interp_ShrSint16Uint8(InterpState &S) {
48240 if (!Shr<PT_Sint16, PT_Uint8>(S, S.PC)) return false;
48241#if USE_TAILCALLS
48242 MUSTTAIL return InterpNext(S);
48243#else
48244 return true;
48245#endif
48246}
48247PRESERVE_NONE
48248static bool Interp_ShrSint16Sint16(InterpState &S) {
48249 if (!Shr<PT_Sint16, PT_Sint16>(S, S.PC)) return false;
48250#if USE_TAILCALLS
48251 MUSTTAIL return InterpNext(S);
48252#else
48253 return true;
48254#endif
48255}
48256PRESERVE_NONE
48257static bool Interp_ShrSint16Uint16(InterpState &S) {
48258 if (!Shr<PT_Sint16, PT_Uint16>(S, S.PC)) return false;
48259#if USE_TAILCALLS
48260 MUSTTAIL return InterpNext(S);
48261#else
48262 return true;
48263#endif
48264}
48265PRESERVE_NONE
48266static bool Interp_ShrSint16Sint32(InterpState &S) {
48267 if (!Shr<PT_Sint16, PT_Sint32>(S, S.PC)) return false;
48268#if USE_TAILCALLS
48269 MUSTTAIL return InterpNext(S);
48270#else
48271 return true;
48272#endif
48273}
48274PRESERVE_NONE
48275static bool Interp_ShrSint16Uint32(InterpState &S) {
48276 if (!Shr<PT_Sint16, PT_Uint32>(S, S.PC)) return false;
48277#if USE_TAILCALLS
48278 MUSTTAIL return InterpNext(S);
48279#else
48280 return true;
48281#endif
48282}
48283PRESERVE_NONE
48284static bool Interp_ShrSint16Sint64(InterpState &S) {
48285 if (!Shr<PT_Sint16, PT_Sint64>(S, S.PC)) return false;
48286#if USE_TAILCALLS
48287 MUSTTAIL return InterpNext(S);
48288#else
48289 return true;
48290#endif
48291}
48292PRESERVE_NONE
48293static bool Interp_ShrSint16Uint64(InterpState &S) {
48294 if (!Shr<PT_Sint16, PT_Uint64>(S, S.PC)) return false;
48295#if USE_TAILCALLS
48296 MUSTTAIL return InterpNext(S);
48297#else
48298 return true;
48299#endif
48300}
48301PRESERVE_NONE
48302static bool Interp_ShrSint16IntAP(InterpState &S) {
48303 if (!Shr<PT_Sint16, PT_IntAP>(S, S.PC)) return false;
48304#if USE_TAILCALLS
48305 MUSTTAIL return InterpNext(S);
48306#else
48307 return true;
48308#endif
48309}
48310PRESERVE_NONE
48311static bool Interp_ShrSint16IntAPS(InterpState &S) {
48312 if (!Shr<PT_Sint16, PT_IntAPS>(S, S.PC)) return false;
48313#if USE_TAILCALLS
48314 MUSTTAIL return InterpNext(S);
48315#else
48316 return true;
48317#endif
48318}
48319PRESERVE_NONE
48320static bool Interp_ShrUint16Sint8(InterpState &S) {
48321 if (!Shr<PT_Uint16, PT_Sint8>(S, S.PC)) return false;
48322#if USE_TAILCALLS
48323 MUSTTAIL return InterpNext(S);
48324#else
48325 return true;
48326#endif
48327}
48328PRESERVE_NONE
48329static bool Interp_ShrUint16Uint8(InterpState &S) {
48330 if (!Shr<PT_Uint16, PT_Uint8>(S, S.PC)) return false;
48331#if USE_TAILCALLS
48332 MUSTTAIL return InterpNext(S);
48333#else
48334 return true;
48335#endif
48336}
48337PRESERVE_NONE
48338static bool Interp_ShrUint16Sint16(InterpState &S) {
48339 if (!Shr<PT_Uint16, PT_Sint16>(S, S.PC)) return false;
48340#if USE_TAILCALLS
48341 MUSTTAIL return InterpNext(S);
48342#else
48343 return true;
48344#endif
48345}
48346PRESERVE_NONE
48347static bool Interp_ShrUint16Uint16(InterpState &S) {
48348 if (!Shr<PT_Uint16, PT_Uint16>(S, S.PC)) return false;
48349#if USE_TAILCALLS
48350 MUSTTAIL return InterpNext(S);
48351#else
48352 return true;
48353#endif
48354}
48355PRESERVE_NONE
48356static bool Interp_ShrUint16Sint32(InterpState &S) {
48357 if (!Shr<PT_Uint16, PT_Sint32>(S, S.PC)) return false;
48358#if USE_TAILCALLS
48359 MUSTTAIL return InterpNext(S);
48360#else
48361 return true;
48362#endif
48363}
48364PRESERVE_NONE
48365static bool Interp_ShrUint16Uint32(InterpState &S) {
48366 if (!Shr<PT_Uint16, PT_Uint32>(S, S.PC)) return false;
48367#if USE_TAILCALLS
48368 MUSTTAIL return InterpNext(S);
48369#else
48370 return true;
48371#endif
48372}
48373PRESERVE_NONE
48374static bool Interp_ShrUint16Sint64(InterpState &S) {
48375 if (!Shr<PT_Uint16, PT_Sint64>(S, S.PC)) return false;
48376#if USE_TAILCALLS
48377 MUSTTAIL return InterpNext(S);
48378#else
48379 return true;
48380#endif
48381}
48382PRESERVE_NONE
48383static bool Interp_ShrUint16Uint64(InterpState &S) {
48384 if (!Shr<PT_Uint16, PT_Uint64>(S, S.PC)) return false;
48385#if USE_TAILCALLS
48386 MUSTTAIL return InterpNext(S);
48387#else
48388 return true;
48389#endif
48390}
48391PRESERVE_NONE
48392static bool Interp_ShrUint16IntAP(InterpState &S) {
48393 if (!Shr<PT_Uint16, PT_IntAP>(S, S.PC)) return false;
48394#if USE_TAILCALLS
48395 MUSTTAIL return InterpNext(S);
48396#else
48397 return true;
48398#endif
48399}
48400PRESERVE_NONE
48401static bool Interp_ShrUint16IntAPS(InterpState &S) {
48402 if (!Shr<PT_Uint16, PT_IntAPS>(S, S.PC)) return false;
48403#if USE_TAILCALLS
48404 MUSTTAIL return InterpNext(S);
48405#else
48406 return true;
48407#endif
48408}
48409PRESERVE_NONE
48410static bool Interp_ShrSint32Sint8(InterpState &S) {
48411 if (!Shr<PT_Sint32, PT_Sint8>(S, S.PC)) return false;
48412#if USE_TAILCALLS
48413 MUSTTAIL return InterpNext(S);
48414#else
48415 return true;
48416#endif
48417}
48418PRESERVE_NONE
48419static bool Interp_ShrSint32Uint8(InterpState &S) {
48420 if (!Shr<PT_Sint32, PT_Uint8>(S, S.PC)) return false;
48421#if USE_TAILCALLS
48422 MUSTTAIL return InterpNext(S);
48423#else
48424 return true;
48425#endif
48426}
48427PRESERVE_NONE
48428static bool Interp_ShrSint32Sint16(InterpState &S) {
48429 if (!Shr<PT_Sint32, PT_Sint16>(S, S.PC)) return false;
48430#if USE_TAILCALLS
48431 MUSTTAIL return InterpNext(S);
48432#else
48433 return true;
48434#endif
48435}
48436PRESERVE_NONE
48437static bool Interp_ShrSint32Uint16(InterpState &S) {
48438 if (!Shr<PT_Sint32, PT_Uint16>(S, S.PC)) return false;
48439#if USE_TAILCALLS
48440 MUSTTAIL return InterpNext(S);
48441#else
48442 return true;
48443#endif
48444}
48445PRESERVE_NONE
48446static bool Interp_ShrSint32Sint32(InterpState &S) {
48447 if (!Shr<PT_Sint32, PT_Sint32>(S, S.PC)) return false;
48448#if USE_TAILCALLS
48449 MUSTTAIL return InterpNext(S);
48450#else
48451 return true;
48452#endif
48453}
48454PRESERVE_NONE
48455static bool Interp_ShrSint32Uint32(InterpState &S) {
48456 if (!Shr<PT_Sint32, PT_Uint32>(S, S.PC)) return false;
48457#if USE_TAILCALLS
48458 MUSTTAIL return InterpNext(S);
48459#else
48460 return true;
48461#endif
48462}
48463PRESERVE_NONE
48464static bool Interp_ShrSint32Sint64(InterpState &S) {
48465 if (!Shr<PT_Sint32, PT_Sint64>(S, S.PC)) return false;
48466#if USE_TAILCALLS
48467 MUSTTAIL return InterpNext(S);
48468#else
48469 return true;
48470#endif
48471}
48472PRESERVE_NONE
48473static bool Interp_ShrSint32Uint64(InterpState &S) {
48474 if (!Shr<PT_Sint32, PT_Uint64>(S, S.PC)) return false;
48475#if USE_TAILCALLS
48476 MUSTTAIL return InterpNext(S);
48477#else
48478 return true;
48479#endif
48480}
48481PRESERVE_NONE
48482static bool Interp_ShrSint32IntAP(InterpState &S) {
48483 if (!Shr<PT_Sint32, PT_IntAP>(S, S.PC)) return false;
48484#if USE_TAILCALLS
48485 MUSTTAIL return InterpNext(S);
48486#else
48487 return true;
48488#endif
48489}
48490PRESERVE_NONE
48491static bool Interp_ShrSint32IntAPS(InterpState &S) {
48492 if (!Shr<PT_Sint32, PT_IntAPS>(S, S.PC)) return false;
48493#if USE_TAILCALLS
48494 MUSTTAIL return InterpNext(S);
48495#else
48496 return true;
48497#endif
48498}
48499PRESERVE_NONE
48500static bool Interp_ShrUint32Sint8(InterpState &S) {
48501 if (!Shr<PT_Uint32, PT_Sint8>(S, S.PC)) return false;
48502#if USE_TAILCALLS
48503 MUSTTAIL return InterpNext(S);
48504#else
48505 return true;
48506#endif
48507}
48508PRESERVE_NONE
48509static bool Interp_ShrUint32Uint8(InterpState &S) {
48510 if (!Shr<PT_Uint32, PT_Uint8>(S, S.PC)) return false;
48511#if USE_TAILCALLS
48512 MUSTTAIL return InterpNext(S);
48513#else
48514 return true;
48515#endif
48516}
48517PRESERVE_NONE
48518static bool Interp_ShrUint32Sint16(InterpState &S) {
48519 if (!Shr<PT_Uint32, PT_Sint16>(S, S.PC)) return false;
48520#if USE_TAILCALLS
48521 MUSTTAIL return InterpNext(S);
48522#else
48523 return true;
48524#endif
48525}
48526PRESERVE_NONE
48527static bool Interp_ShrUint32Uint16(InterpState &S) {
48528 if (!Shr<PT_Uint32, PT_Uint16>(S, S.PC)) return false;
48529#if USE_TAILCALLS
48530 MUSTTAIL return InterpNext(S);
48531#else
48532 return true;
48533#endif
48534}
48535PRESERVE_NONE
48536static bool Interp_ShrUint32Sint32(InterpState &S) {
48537 if (!Shr<PT_Uint32, PT_Sint32>(S, S.PC)) return false;
48538#if USE_TAILCALLS
48539 MUSTTAIL return InterpNext(S);
48540#else
48541 return true;
48542#endif
48543}
48544PRESERVE_NONE
48545static bool Interp_ShrUint32Uint32(InterpState &S) {
48546 if (!Shr<PT_Uint32, PT_Uint32>(S, S.PC)) return false;
48547#if USE_TAILCALLS
48548 MUSTTAIL return InterpNext(S);
48549#else
48550 return true;
48551#endif
48552}
48553PRESERVE_NONE
48554static bool Interp_ShrUint32Sint64(InterpState &S) {
48555 if (!Shr<PT_Uint32, PT_Sint64>(S, S.PC)) return false;
48556#if USE_TAILCALLS
48557 MUSTTAIL return InterpNext(S);
48558#else
48559 return true;
48560#endif
48561}
48562PRESERVE_NONE
48563static bool Interp_ShrUint32Uint64(InterpState &S) {
48564 if (!Shr<PT_Uint32, PT_Uint64>(S, S.PC)) return false;
48565#if USE_TAILCALLS
48566 MUSTTAIL return InterpNext(S);
48567#else
48568 return true;
48569#endif
48570}
48571PRESERVE_NONE
48572static bool Interp_ShrUint32IntAP(InterpState &S) {
48573 if (!Shr<PT_Uint32, PT_IntAP>(S, S.PC)) return false;
48574#if USE_TAILCALLS
48575 MUSTTAIL return InterpNext(S);
48576#else
48577 return true;
48578#endif
48579}
48580PRESERVE_NONE
48581static bool Interp_ShrUint32IntAPS(InterpState &S) {
48582 if (!Shr<PT_Uint32, PT_IntAPS>(S, S.PC)) return false;
48583#if USE_TAILCALLS
48584 MUSTTAIL return InterpNext(S);
48585#else
48586 return true;
48587#endif
48588}
48589PRESERVE_NONE
48590static bool Interp_ShrSint64Sint8(InterpState &S) {
48591 if (!Shr<PT_Sint64, PT_Sint8>(S, S.PC)) return false;
48592#if USE_TAILCALLS
48593 MUSTTAIL return InterpNext(S);
48594#else
48595 return true;
48596#endif
48597}
48598PRESERVE_NONE
48599static bool Interp_ShrSint64Uint8(InterpState &S) {
48600 if (!Shr<PT_Sint64, PT_Uint8>(S, S.PC)) return false;
48601#if USE_TAILCALLS
48602 MUSTTAIL return InterpNext(S);
48603#else
48604 return true;
48605#endif
48606}
48607PRESERVE_NONE
48608static bool Interp_ShrSint64Sint16(InterpState &S) {
48609 if (!Shr<PT_Sint64, PT_Sint16>(S, S.PC)) return false;
48610#if USE_TAILCALLS
48611 MUSTTAIL return InterpNext(S);
48612#else
48613 return true;
48614#endif
48615}
48616PRESERVE_NONE
48617static bool Interp_ShrSint64Uint16(InterpState &S) {
48618 if (!Shr<PT_Sint64, PT_Uint16>(S, S.PC)) return false;
48619#if USE_TAILCALLS
48620 MUSTTAIL return InterpNext(S);
48621#else
48622 return true;
48623#endif
48624}
48625PRESERVE_NONE
48626static bool Interp_ShrSint64Sint32(InterpState &S) {
48627 if (!Shr<PT_Sint64, PT_Sint32>(S, S.PC)) return false;
48628#if USE_TAILCALLS
48629 MUSTTAIL return InterpNext(S);
48630#else
48631 return true;
48632#endif
48633}
48634PRESERVE_NONE
48635static bool Interp_ShrSint64Uint32(InterpState &S) {
48636 if (!Shr<PT_Sint64, PT_Uint32>(S, S.PC)) return false;
48637#if USE_TAILCALLS
48638 MUSTTAIL return InterpNext(S);
48639#else
48640 return true;
48641#endif
48642}
48643PRESERVE_NONE
48644static bool Interp_ShrSint64Sint64(InterpState &S) {
48645 if (!Shr<PT_Sint64, PT_Sint64>(S, S.PC)) return false;
48646#if USE_TAILCALLS
48647 MUSTTAIL return InterpNext(S);
48648#else
48649 return true;
48650#endif
48651}
48652PRESERVE_NONE
48653static bool Interp_ShrSint64Uint64(InterpState &S) {
48654 if (!Shr<PT_Sint64, PT_Uint64>(S, S.PC)) return false;
48655#if USE_TAILCALLS
48656 MUSTTAIL return InterpNext(S);
48657#else
48658 return true;
48659#endif
48660}
48661PRESERVE_NONE
48662static bool Interp_ShrSint64IntAP(InterpState &S) {
48663 if (!Shr<PT_Sint64, PT_IntAP>(S, S.PC)) return false;
48664#if USE_TAILCALLS
48665 MUSTTAIL return InterpNext(S);
48666#else
48667 return true;
48668#endif
48669}
48670PRESERVE_NONE
48671static bool Interp_ShrSint64IntAPS(InterpState &S) {
48672 if (!Shr<PT_Sint64, PT_IntAPS>(S, S.PC)) return false;
48673#if USE_TAILCALLS
48674 MUSTTAIL return InterpNext(S);
48675#else
48676 return true;
48677#endif
48678}
48679PRESERVE_NONE
48680static bool Interp_ShrUint64Sint8(InterpState &S) {
48681 if (!Shr<PT_Uint64, PT_Sint8>(S, S.PC)) return false;
48682#if USE_TAILCALLS
48683 MUSTTAIL return InterpNext(S);
48684#else
48685 return true;
48686#endif
48687}
48688PRESERVE_NONE
48689static bool Interp_ShrUint64Uint8(InterpState &S) {
48690 if (!Shr<PT_Uint64, PT_Uint8>(S, S.PC)) return false;
48691#if USE_TAILCALLS
48692 MUSTTAIL return InterpNext(S);
48693#else
48694 return true;
48695#endif
48696}
48697PRESERVE_NONE
48698static bool Interp_ShrUint64Sint16(InterpState &S) {
48699 if (!Shr<PT_Uint64, PT_Sint16>(S, S.PC)) return false;
48700#if USE_TAILCALLS
48701 MUSTTAIL return InterpNext(S);
48702#else
48703 return true;
48704#endif
48705}
48706PRESERVE_NONE
48707static bool Interp_ShrUint64Uint16(InterpState &S) {
48708 if (!Shr<PT_Uint64, PT_Uint16>(S, S.PC)) return false;
48709#if USE_TAILCALLS
48710 MUSTTAIL return InterpNext(S);
48711#else
48712 return true;
48713#endif
48714}
48715PRESERVE_NONE
48716static bool Interp_ShrUint64Sint32(InterpState &S) {
48717 if (!Shr<PT_Uint64, PT_Sint32>(S, S.PC)) return false;
48718#if USE_TAILCALLS
48719 MUSTTAIL return InterpNext(S);
48720#else
48721 return true;
48722#endif
48723}
48724PRESERVE_NONE
48725static bool Interp_ShrUint64Uint32(InterpState &S) {
48726 if (!Shr<PT_Uint64, PT_Uint32>(S, S.PC)) return false;
48727#if USE_TAILCALLS
48728 MUSTTAIL return InterpNext(S);
48729#else
48730 return true;
48731#endif
48732}
48733PRESERVE_NONE
48734static bool Interp_ShrUint64Sint64(InterpState &S) {
48735 if (!Shr<PT_Uint64, PT_Sint64>(S, S.PC)) return false;
48736#if USE_TAILCALLS
48737 MUSTTAIL return InterpNext(S);
48738#else
48739 return true;
48740#endif
48741}
48742PRESERVE_NONE
48743static bool Interp_ShrUint64Uint64(InterpState &S) {
48744 if (!Shr<PT_Uint64, PT_Uint64>(S, S.PC)) return false;
48745#if USE_TAILCALLS
48746 MUSTTAIL return InterpNext(S);
48747#else
48748 return true;
48749#endif
48750}
48751PRESERVE_NONE
48752static bool Interp_ShrUint64IntAP(InterpState &S) {
48753 if (!Shr<PT_Uint64, PT_IntAP>(S, S.PC)) return false;
48754#if USE_TAILCALLS
48755 MUSTTAIL return InterpNext(S);
48756#else
48757 return true;
48758#endif
48759}
48760PRESERVE_NONE
48761static bool Interp_ShrUint64IntAPS(InterpState &S) {
48762 if (!Shr<PT_Uint64, PT_IntAPS>(S, S.PC)) return false;
48763#if USE_TAILCALLS
48764 MUSTTAIL return InterpNext(S);
48765#else
48766 return true;
48767#endif
48768}
48769PRESERVE_NONE
48770static bool Interp_ShrIntAPSint8(InterpState &S) {
48771 if (!Shr<PT_IntAP, PT_Sint8>(S, S.PC)) return false;
48772#if USE_TAILCALLS
48773 MUSTTAIL return InterpNext(S);
48774#else
48775 return true;
48776#endif
48777}
48778PRESERVE_NONE
48779static bool Interp_ShrIntAPUint8(InterpState &S) {
48780 if (!Shr<PT_IntAP, PT_Uint8>(S, S.PC)) return false;
48781#if USE_TAILCALLS
48782 MUSTTAIL return InterpNext(S);
48783#else
48784 return true;
48785#endif
48786}
48787PRESERVE_NONE
48788static bool Interp_ShrIntAPSint16(InterpState &S) {
48789 if (!Shr<PT_IntAP, PT_Sint16>(S, S.PC)) return false;
48790#if USE_TAILCALLS
48791 MUSTTAIL return InterpNext(S);
48792#else
48793 return true;
48794#endif
48795}
48796PRESERVE_NONE
48797static bool Interp_ShrIntAPUint16(InterpState &S) {
48798 if (!Shr<PT_IntAP, PT_Uint16>(S, S.PC)) return false;
48799#if USE_TAILCALLS
48800 MUSTTAIL return InterpNext(S);
48801#else
48802 return true;
48803#endif
48804}
48805PRESERVE_NONE
48806static bool Interp_ShrIntAPSint32(InterpState &S) {
48807 if (!Shr<PT_IntAP, PT_Sint32>(S, S.PC)) return false;
48808#if USE_TAILCALLS
48809 MUSTTAIL return InterpNext(S);
48810#else
48811 return true;
48812#endif
48813}
48814PRESERVE_NONE
48815static bool Interp_ShrIntAPUint32(InterpState &S) {
48816 if (!Shr<PT_IntAP, PT_Uint32>(S, S.PC)) return false;
48817#if USE_TAILCALLS
48818 MUSTTAIL return InterpNext(S);
48819#else
48820 return true;
48821#endif
48822}
48823PRESERVE_NONE
48824static bool Interp_ShrIntAPSint64(InterpState &S) {
48825 if (!Shr<PT_IntAP, PT_Sint64>(S, S.PC)) return false;
48826#if USE_TAILCALLS
48827 MUSTTAIL return InterpNext(S);
48828#else
48829 return true;
48830#endif
48831}
48832PRESERVE_NONE
48833static bool Interp_ShrIntAPUint64(InterpState &S) {
48834 if (!Shr<PT_IntAP, PT_Uint64>(S, S.PC)) return false;
48835#if USE_TAILCALLS
48836 MUSTTAIL return InterpNext(S);
48837#else
48838 return true;
48839#endif
48840}
48841PRESERVE_NONE
48842static bool Interp_ShrIntAPIntAP(InterpState &S) {
48843 if (!Shr<PT_IntAP, PT_IntAP>(S, S.PC)) return false;
48844#if USE_TAILCALLS
48845 MUSTTAIL return InterpNext(S);
48846#else
48847 return true;
48848#endif
48849}
48850PRESERVE_NONE
48851static bool Interp_ShrIntAPIntAPS(InterpState &S) {
48852 if (!Shr<PT_IntAP, PT_IntAPS>(S, S.PC)) return false;
48853#if USE_TAILCALLS
48854 MUSTTAIL return InterpNext(S);
48855#else
48856 return true;
48857#endif
48858}
48859PRESERVE_NONE
48860static bool Interp_ShrIntAPSSint8(InterpState &S) {
48861 if (!Shr<PT_IntAPS, PT_Sint8>(S, S.PC)) return false;
48862#if USE_TAILCALLS
48863 MUSTTAIL return InterpNext(S);
48864#else
48865 return true;
48866#endif
48867}
48868PRESERVE_NONE
48869static bool Interp_ShrIntAPSUint8(InterpState &S) {
48870 if (!Shr<PT_IntAPS, PT_Uint8>(S, S.PC)) return false;
48871#if USE_TAILCALLS
48872 MUSTTAIL return InterpNext(S);
48873#else
48874 return true;
48875#endif
48876}
48877PRESERVE_NONE
48878static bool Interp_ShrIntAPSSint16(InterpState &S) {
48879 if (!Shr<PT_IntAPS, PT_Sint16>(S, S.PC)) return false;
48880#if USE_TAILCALLS
48881 MUSTTAIL return InterpNext(S);
48882#else
48883 return true;
48884#endif
48885}
48886PRESERVE_NONE
48887static bool Interp_ShrIntAPSUint16(InterpState &S) {
48888 if (!Shr<PT_IntAPS, PT_Uint16>(S, S.PC)) return false;
48889#if USE_TAILCALLS
48890 MUSTTAIL return InterpNext(S);
48891#else
48892 return true;
48893#endif
48894}
48895PRESERVE_NONE
48896static bool Interp_ShrIntAPSSint32(InterpState &S) {
48897 if (!Shr<PT_IntAPS, PT_Sint32>(S, S.PC)) return false;
48898#if USE_TAILCALLS
48899 MUSTTAIL return InterpNext(S);
48900#else
48901 return true;
48902#endif
48903}
48904PRESERVE_NONE
48905static bool Interp_ShrIntAPSUint32(InterpState &S) {
48906 if (!Shr<PT_IntAPS, PT_Uint32>(S, S.PC)) return false;
48907#if USE_TAILCALLS
48908 MUSTTAIL return InterpNext(S);
48909#else
48910 return true;
48911#endif
48912}
48913PRESERVE_NONE
48914static bool Interp_ShrIntAPSSint64(InterpState &S) {
48915 if (!Shr<PT_IntAPS, PT_Sint64>(S, S.PC)) return false;
48916#if USE_TAILCALLS
48917 MUSTTAIL return InterpNext(S);
48918#else
48919 return true;
48920#endif
48921}
48922PRESERVE_NONE
48923static bool Interp_ShrIntAPSUint64(InterpState &S) {
48924 if (!Shr<PT_IntAPS, PT_Uint64>(S, S.PC)) return false;
48925#if USE_TAILCALLS
48926 MUSTTAIL return InterpNext(S);
48927#else
48928 return true;
48929#endif
48930}
48931PRESERVE_NONE
48932static bool Interp_ShrIntAPSIntAP(InterpState &S) {
48933 if (!Shr<PT_IntAPS, PT_IntAP>(S, S.PC)) return false;
48934#if USE_TAILCALLS
48935 MUSTTAIL return InterpNext(S);
48936#else
48937 return true;
48938#endif
48939}
48940PRESERVE_NONE
48941static bool Interp_ShrIntAPSIntAPS(InterpState &S) {
48942 if (!Shr<PT_IntAPS, PT_IntAPS>(S, S.PC)) return false;
48943#if USE_TAILCALLS
48944 MUSTTAIL return InterpNext(S);
48945#else
48946 return true;
48947#endif
48948}
48949#endif
48950#ifdef GET_DISASM
48951case OP_ShrSint8Sint8:
48952 Text.Op = PrintName("ShrSint8Sint8");
48953 break;
48954case OP_ShrSint8Uint8:
48955 Text.Op = PrintName("ShrSint8Uint8");
48956 break;
48957case OP_ShrSint8Sint16:
48958 Text.Op = PrintName("ShrSint8Sint16");
48959 break;
48960case OP_ShrSint8Uint16:
48961 Text.Op = PrintName("ShrSint8Uint16");
48962 break;
48963case OP_ShrSint8Sint32:
48964 Text.Op = PrintName("ShrSint8Sint32");
48965 break;
48966case OP_ShrSint8Uint32:
48967 Text.Op = PrintName("ShrSint8Uint32");
48968 break;
48969case OP_ShrSint8Sint64:
48970 Text.Op = PrintName("ShrSint8Sint64");
48971 break;
48972case OP_ShrSint8Uint64:
48973 Text.Op = PrintName("ShrSint8Uint64");
48974 break;
48975case OP_ShrSint8IntAP:
48976 Text.Op = PrintName("ShrSint8IntAP");
48977 break;
48978case OP_ShrSint8IntAPS:
48979 Text.Op = PrintName("ShrSint8IntAPS");
48980 break;
48981case OP_ShrUint8Sint8:
48982 Text.Op = PrintName("ShrUint8Sint8");
48983 break;
48984case OP_ShrUint8Uint8:
48985 Text.Op = PrintName("ShrUint8Uint8");
48986 break;
48987case OP_ShrUint8Sint16:
48988 Text.Op = PrintName("ShrUint8Sint16");
48989 break;
48990case OP_ShrUint8Uint16:
48991 Text.Op = PrintName("ShrUint8Uint16");
48992 break;
48993case OP_ShrUint8Sint32:
48994 Text.Op = PrintName("ShrUint8Sint32");
48995 break;
48996case OP_ShrUint8Uint32:
48997 Text.Op = PrintName("ShrUint8Uint32");
48998 break;
48999case OP_ShrUint8Sint64:
49000 Text.Op = PrintName("ShrUint8Sint64");
49001 break;
49002case OP_ShrUint8Uint64:
49003 Text.Op = PrintName("ShrUint8Uint64");
49004 break;
49005case OP_ShrUint8IntAP:
49006 Text.Op = PrintName("ShrUint8IntAP");
49007 break;
49008case OP_ShrUint8IntAPS:
49009 Text.Op = PrintName("ShrUint8IntAPS");
49010 break;
49011case OP_ShrSint16Sint8:
49012 Text.Op = PrintName("ShrSint16Sint8");
49013 break;
49014case OP_ShrSint16Uint8:
49015 Text.Op = PrintName("ShrSint16Uint8");
49016 break;
49017case OP_ShrSint16Sint16:
49018 Text.Op = PrintName("ShrSint16Sint16");
49019 break;
49020case OP_ShrSint16Uint16:
49021 Text.Op = PrintName("ShrSint16Uint16");
49022 break;
49023case OP_ShrSint16Sint32:
49024 Text.Op = PrintName("ShrSint16Sint32");
49025 break;
49026case OP_ShrSint16Uint32:
49027 Text.Op = PrintName("ShrSint16Uint32");
49028 break;
49029case OP_ShrSint16Sint64:
49030 Text.Op = PrintName("ShrSint16Sint64");
49031 break;
49032case OP_ShrSint16Uint64:
49033 Text.Op = PrintName("ShrSint16Uint64");
49034 break;
49035case OP_ShrSint16IntAP:
49036 Text.Op = PrintName("ShrSint16IntAP");
49037 break;
49038case OP_ShrSint16IntAPS:
49039 Text.Op = PrintName("ShrSint16IntAPS");
49040 break;
49041case OP_ShrUint16Sint8:
49042 Text.Op = PrintName("ShrUint16Sint8");
49043 break;
49044case OP_ShrUint16Uint8:
49045 Text.Op = PrintName("ShrUint16Uint8");
49046 break;
49047case OP_ShrUint16Sint16:
49048 Text.Op = PrintName("ShrUint16Sint16");
49049 break;
49050case OP_ShrUint16Uint16:
49051 Text.Op = PrintName("ShrUint16Uint16");
49052 break;
49053case OP_ShrUint16Sint32:
49054 Text.Op = PrintName("ShrUint16Sint32");
49055 break;
49056case OP_ShrUint16Uint32:
49057 Text.Op = PrintName("ShrUint16Uint32");
49058 break;
49059case OP_ShrUint16Sint64:
49060 Text.Op = PrintName("ShrUint16Sint64");
49061 break;
49062case OP_ShrUint16Uint64:
49063 Text.Op = PrintName("ShrUint16Uint64");
49064 break;
49065case OP_ShrUint16IntAP:
49066 Text.Op = PrintName("ShrUint16IntAP");
49067 break;
49068case OP_ShrUint16IntAPS:
49069 Text.Op = PrintName("ShrUint16IntAPS");
49070 break;
49071case OP_ShrSint32Sint8:
49072 Text.Op = PrintName("ShrSint32Sint8");
49073 break;
49074case OP_ShrSint32Uint8:
49075 Text.Op = PrintName("ShrSint32Uint8");
49076 break;
49077case OP_ShrSint32Sint16:
49078 Text.Op = PrintName("ShrSint32Sint16");
49079 break;
49080case OP_ShrSint32Uint16:
49081 Text.Op = PrintName("ShrSint32Uint16");
49082 break;
49083case OP_ShrSint32Sint32:
49084 Text.Op = PrintName("ShrSint32Sint32");
49085 break;
49086case OP_ShrSint32Uint32:
49087 Text.Op = PrintName("ShrSint32Uint32");
49088 break;
49089case OP_ShrSint32Sint64:
49090 Text.Op = PrintName("ShrSint32Sint64");
49091 break;
49092case OP_ShrSint32Uint64:
49093 Text.Op = PrintName("ShrSint32Uint64");
49094 break;
49095case OP_ShrSint32IntAP:
49096 Text.Op = PrintName("ShrSint32IntAP");
49097 break;
49098case OP_ShrSint32IntAPS:
49099 Text.Op = PrintName("ShrSint32IntAPS");
49100 break;
49101case OP_ShrUint32Sint8:
49102 Text.Op = PrintName("ShrUint32Sint8");
49103 break;
49104case OP_ShrUint32Uint8:
49105 Text.Op = PrintName("ShrUint32Uint8");
49106 break;
49107case OP_ShrUint32Sint16:
49108 Text.Op = PrintName("ShrUint32Sint16");
49109 break;
49110case OP_ShrUint32Uint16:
49111 Text.Op = PrintName("ShrUint32Uint16");
49112 break;
49113case OP_ShrUint32Sint32:
49114 Text.Op = PrintName("ShrUint32Sint32");
49115 break;
49116case OP_ShrUint32Uint32:
49117 Text.Op = PrintName("ShrUint32Uint32");
49118 break;
49119case OP_ShrUint32Sint64:
49120 Text.Op = PrintName("ShrUint32Sint64");
49121 break;
49122case OP_ShrUint32Uint64:
49123 Text.Op = PrintName("ShrUint32Uint64");
49124 break;
49125case OP_ShrUint32IntAP:
49126 Text.Op = PrintName("ShrUint32IntAP");
49127 break;
49128case OP_ShrUint32IntAPS:
49129 Text.Op = PrintName("ShrUint32IntAPS");
49130 break;
49131case OP_ShrSint64Sint8:
49132 Text.Op = PrintName("ShrSint64Sint8");
49133 break;
49134case OP_ShrSint64Uint8:
49135 Text.Op = PrintName("ShrSint64Uint8");
49136 break;
49137case OP_ShrSint64Sint16:
49138 Text.Op = PrintName("ShrSint64Sint16");
49139 break;
49140case OP_ShrSint64Uint16:
49141 Text.Op = PrintName("ShrSint64Uint16");
49142 break;
49143case OP_ShrSint64Sint32:
49144 Text.Op = PrintName("ShrSint64Sint32");
49145 break;
49146case OP_ShrSint64Uint32:
49147 Text.Op = PrintName("ShrSint64Uint32");
49148 break;
49149case OP_ShrSint64Sint64:
49150 Text.Op = PrintName("ShrSint64Sint64");
49151 break;
49152case OP_ShrSint64Uint64:
49153 Text.Op = PrintName("ShrSint64Uint64");
49154 break;
49155case OP_ShrSint64IntAP:
49156 Text.Op = PrintName("ShrSint64IntAP");
49157 break;
49158case OP_ShrSint64IntAPS:
49159 Text.Op = PrintName("ShrSint64IntAPS");
49160 break;
49161case OP_ShrUint64Sint8:
49162 Text.Op = PrintName("ShrUint64Sint8");
49163 break;
49164case OP_ShrUint64Uint8:
49165 Text.Op = PrintName("ShrUint64Uint8");
49166 break;
49167case OP_ShrUint64Sint16:
49168 Text.Op = PrintName("ShrUint64Sint16");
49169 break;
49170case OP_ShrUint64Uint16:
49171 Text.Op = PrintName("ShrUint64Uint16");
49172 break;
49173case OP_ShrUint64Sint32:
49174 Text.Op = PrintName("ShrUint64Sint32");
49175 break;
49176case OP_ShrUint64Uint32:
49177 Text.Op = PrintName("ShrUint64Uint32");
49178 break;
49179case OP_ShrUint64Sint64:
49180 Text.Op = PrintName("ShrUint64Sint64");
49181 break;
49182case OP_ShrUint64Uint64:
49183 Text.Op = PrintName("ShrUint64Uint64");
49184 break;
49185case OP_ShrUint64IntAP:
49186 Text.Op = PrintName("ShrUint64IntAP");
49187 break;
49188case OP_ShrUint64IntAPS:
49189 Text.Op = PrintName("ShrUint64IntAPS");
49190 break;
49191case OP_ShrIntAPSint8:
49192 Text.Op = PrintName("ShrIntAPSint8");
49193 break;
49194case OP_ShrIntAPUint8:
49195 Text.Op = PrintName("ShrIntAPUint8");
49196 break;
49197case OP_ShrIntAPSint16:
49198 Text.Op = PrintName("ShrIntAPSint16");
49199 break;
49200case OP_ShrIntAPUint16:
49201 Text.Op = PrintName("ShrIntAPUint16");
49202 break;
49203case OP_ShrIntAPSint32:
49204 Text.Op = PrintName("ShrIntAPSint32");
49205 break;
49206case OP_ShrIntAPUint32:
49207 Text.Op = PrintName("ShrIntAPUint32");
49208 break;
49209case OP_ShrIntAPSint64:
49210 Text.Op = PrintName("ShrIntAPSint64");
49211 break;
49212case OP_ShrIntAPUint64:
49213 Text.Op = PrintName("ShrIntAPUint64");
49214 break;
49215case OP_ShrIntAPIntAP:
49216 Text.Op = PrintName("ShrIntAPIntAP");
49217 break;
49218case OP_ShrIntAPIntAPS:
49219 Text.Op = PrintName("ShrIntAPIntAPS");
49220 break;
49221case OP_ShrIntAPSSint8:
49222 Text.Op = PrintName("ShrIntAPSSint8");
49223 break;
49224case OP_ShrIntAPSUint8:
49225 Text.Op = PrintName("ShrIntAPSUint8");
49226 break;
49227case OP_ShrIntAPSSint16:
49228 Text.Op = PrintName("ShrIntAPSSint16");
49229 break;
49230case OP_ShrIntAPSUint16:
49231 Text.Op = PrintName("ShrIntAPSUint16");
49232 break;
49233case OP_ShrIntAPSSint32:
49234 Text.Op = PrintName("ShrIntAPSSint32");
49235 break;
49236case OP_ShrIntAPSUint32:
49237 Text.Op = PrintName("ShrIntAPSUint32");
49238 break;
49239case OP_ShrIntAPSSint64:
49240 Text.Op = PrintName("ShrIntAPSSint64");
49241 break;
49242case OP_ShrIntAPSUint64:
49243 Text.Op = PrintName("ShrIntAPSUint64");
49244 break;
49245case OP_ShrIntAPSIntAP:
49246 Text.Op = PrintName("ShrIntAPSIntAP");
49247 break;
49248case OP_ShrIntAPSIntAPS:
49249 Text.Op = PrintName("ShrIntAPSIntAPS");
49250 break;
49251#endif
49252#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
49253bool emitShrSint8Sint8(SourceInfo);
49254bool emitShrSint8Uint8(SourceInfo);
49255bool emitShrSint8Sint16(SourceInfo);
49256bool emitShrSint8Uint16(SourceInfo);
49257bool emitShrSint8Sint32(SourceInfo);
49258bool emitShrSint8Uint32(SourceInfo);
49259bool emitShrSint8Sint64(SourceInfo);
49260bool emitShrSint8Uint64(SourceInfo);
49261bool emitShrSint8IntAP(SourceInfo);
49262bool emitShrSint8IntAPS(SourceInfo);
49263bool emitShrUint8Sint8(SourceInfo);
49264bool emitShrUint8Uint8(SourceInfo);
49265bool emitShrUint8Sint16(SourceInfo);
49266bool emitShrUint8Uint16(SourceInfo);
49267bool emitShrUint8Sint32(SourceInfo);
49268bool emitShrUint8Uint32(SourceInfo);
49269bool emitShrUint8Sint64(SourceInfo);
49270bool emitShrUint8Uint64(SourceInfo);
49271bool emitShrUint8IntAP(SourceInfo);
49272bool emitShrUint8IntAPS(SourceInfo);
49273bool emitShrSint16Sint8(SourceInfo);
49274bool emitShrSint16Uint8(SourceInfo);
49275bool emitShrSint16Sint16(SourceInfo);
49276bool emitShrSint16Uint16(SourceInfo);
49277bool emitShrSint16Sint32(SourceInfo);
49278bool emitShrSint16Uint32(SourceInfo);
49279bool emitShrSint16Sint64(SourceInfo);
49280bool emitShrSint16Uint64(SourceInfo);
49281bool emitShrSint16IntAP(SourceInfo);
49282bool emitShrSint16IntAPS(SourceInfo);
49283bool emitShrUint16Sint8(SourceInfo);
49284bool emitShrUint16Uint8(SourceInfo);
49285bool emitShrUint16Sint16(SourceInfo);
49286bool emitShrUint16Uint16(SourceInfo);
49287bool emitShrUint16Sint32(SourceInfo);
49288bool emitShrUint16Uint32(SourceInfo);
49289bool emitShrUint16Sint64(SourceInfo);
49290bool emitShrUint16Uint64(SourceInfo);
49291bool emitShrUint16IntAP(SourceInfo);
49292bool emitShrUint16IntAPS(SourceInfo);
49293bool emitShrSint32Sint8(SourceInfo);
49294bool emitShrSint32Uint8(SourceInfo);
49295bool emitShrSint32Sint16(SourceInfo);
49296bool emitShrSint32Uint16(SourceInfo);
49297bool emitShrSint32Sint32(SourceInfo);
49298bool emitShrSint32Uint32(SourceInfo);
49299bool emitShrSint32Sint64(SourceInfo);
49300bool emitShrSint32Uint64(SourceInfo);
49301bool emitShrSint32IntAP(SourceInfo);
49302bool emitShrSint32IntAPS(SourceInfo);
49303bool emitShrUint32Sint8(SourceInfo);
49304bool emitShrUint32Uint8(SourceInfo);
49305bool emitShrUint32Sint16(SourceInfo);
49306bool emitShrUint32Uint16(SourceInfo);
49307bool emitShrUint32Sint32(SourceInfo);
49308bool emitShrUint32Uint32(SourceInfo);
49309bool emitShrUint32Sint64(SourceInfo);
49310bool emitShrUint32Uint64(SourceInfo);
49311bool emitShrUint32IntAP(SourceInfo);
49312bool emitShrUint32IntAPS(SourceInfo);
49313bool emitShrSint64Sint8(SourceInfo);
49314bool emitShrSint64Uint8(SourceInfo);
49315bool emitShrSint64Sint16(SourceInfo);
49316bool emitShrSint64Uint16(SourceInfo);
49317bool emitShrSint64Sint32(SourceInfo);
49318bool emitShrSint64Uint32(SourceInfo);
49319bool emitShrSint64Sint64(SourceInfo);
49320bool emitShrSint64Uint64(SourceInfo);
49321bool emitShrSint64IntAP(SourceInfo);
49322bool emitShrSint64IntAPS(SourceInfo);
49323bool emitShrUint64Sint8(SourceInfo);
49324bool emitShrUint64Uint8(SourceInfo);
49325bool emitShrUint64Sint16(SourceInfo);
49326bool emitShrUint64Uint16(SourceInfo);
49327bool emitShrUint64Sint32(SourceInfo);
49328bool emitShrUint64Uint32(SourceInfo);
49329bool emitShrUint64Sint64(SourceInfo);
49330bool emitShrUint64Uint64(SourceInfo);
49331bool emitShrUint64IntAP(SourceInfo);
49332bool emitShrUint64IntAPS(SourceInfo);
49333bool emitShrIntAPSint8(SourceInfo);
49334bool emitShrIntAPUint8(SourceInfo);
49335bool emitShrIntAPSint16(SourceInfo);
49336bool emitShrIntAPUint16(SourceInfo);
49337bool emitShrIntAPSint32(SourceInfo);
49338bool emitShrIntAPUint32(SourceInfo);
49339bool emitShrIntAPSint64(SourceInfo);
49340bool emitShrIntAPUint64(SourceInfo);
49341bool emitShrIntAPIntAP(SourceInfo);
49342bool emitShrIntAPIntAPS(SourceInfo);
49343bool emitShrIntAPSSint8(SourceInfo);
49344bool emitShrIntAPSUint8(SourceInfo);
49345bool emitShrIntAPSSint16(SourceInfo);
49346bool emitShrIntAPSUint16(SourceInfo);
49347bool emitShrIntAPSSint32(SourceInfo);
49348bool emitShrIntAPSUint32(SourceInfo);
49349bool emitShrIntAPSSint64(SourceInfo);
49350bool emitShrIntAPSUint64(SourceInfo);
49351bool emitShrIntAPSIntAP(SourceInfo);
49352bool emitShrIntAPSIntAPS(SourceInfo);
49353#endif
49354#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
49355[[nodiscard]] bool emitShr(PrimType, PrimType, SourceInfo I);
49356#endif
49357#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
49358bool
49359#if defined(GET_EVAL_IMPL)
49360EvalEmitter
49361#else
49362ByteCodeEmitter
49363#endif
49364::emitShr(PrimType T0, PrimType T1, SourceInfo I) {
49365 switch (T0) {
49366 case PT_Sint8:
49367 switch (T1) {
49368 case PT_Sint8:
49369 return emitShrSint8Sint8(I);
49370 case PT_Uint8:
49371 return emitShrSint8Uint8(I);
49372 case PT_Sint16:
49373 return emitShrSint8Sint16(I);
49374 case PT_Uint16:
49375 return emitShrSint8Uint16(I);
49376 case PT_Sint32:
49377 return emitShrSint8Sint32(I);
49378 case PT_Uint32:
49379 return emitShrSint8Uint32(I);
49380 case PT_Sint64:
49381 return emitShrSint8Sint64(I);
49382 case PT_Uint64:
49383 return emitShrSint8Uint64(I);
49384 case PT_IntAP:
49385 return emitShrSint8IntAP(I);
49386 case PT_IntAPS:
49387 return emitShrSint8IntAPS(I);
49388 default: llvm_unreachable("invalid type: emitShr");
49389 }
49390 llvm_unreachable("invalid enum value");
49391 case PT_Uint8:
49392 switch (T1) {
49393 case PT_Sint8:
49394 return emitShrUint8Sint8(I);
49395 case PT_Uint8:
49396 return emitShrUint8Uint8(I);
49397 case PT_Sint16:
49398 return emitShrUint8Sint16(I);
49399 case PT_Uint16:
49400 return emitShrUint8Uint16(I);
49401 case PT_Sint32:
49402 return emitShrUint8Sint32(I);
49403 case PT_Uint32:
49404 return emitShrUint8Uint32(I);
49405 case PT_Sint64:
49406 return emitShrUint8Sint64(I);
49407 case PT_Uint64:
49408 return emitShrUint8Uint64(I);
49409 case PT_IntAP:
49410 return emitShrUint8IntAP(I);
49411 case PT_IntAPS:
49412 return emitShrUint8IntAPS(I);
49413 default: llvm_unreachable("invalid type: emitShr");
49414 }
49415 llvm_unreachable("invalid enum value");
49416 case PT_Sint16:
49417 switch (T1) {
49418 case PT_Sint8:
49419 return emitShrSint16Sint8(I);
49420 case PT_Uint8:
49421 return emitShrSint16Uint8(I);
49422 case PT_Sint16:
49423 return emitShrSint16Sint16(I);
49424 case PT_Uint16:
49425 return emitShrSint16Uint16(I);
49426 case PT_Sint32:
49427 return emitShrSint16Sint32(I);
49428 case PT_Uint32:
49429 return emitShrSint16Uint32(I);
49430 case PT_Sint64:
49431 return emitShrSint16Sint64(I);
49432 case PT_Uint64:
49433 return emitShrSint16Uint64(I);
49434 case PT_IntAP:
49435 return emitShrSint16IntAP(I);
49436 case PT_IntAPS:
49437 return emitShrSint16IntAPS(I);
49438 default: llvm_unreachable("invalid type: emitShr");
49439 }
49440 llvm_unreachable("invalid enum value");
49441 case PT_Uint16:
49442 switch (T1) {
49443 case PT_Sint8:
49444 return emitShrUint16Sint8(I);
49445 case PT_Uint8:
49446 return emitShrUint16Uint8(I);
49447 case PT_Sint16:
49448 return emitShrUint16Sint16(I);
49449 case PT_Uint16:
49450 return emitShrUint16Uint16(I);
49451 case PT_Sint32:
49452 return emitShrUint16Sint32(I);
49453 case PT_Uint32:
49454 return emitShrUint16Uint32(I);
49455 case PT_Sint64:
49456 return emitShrUint16Sint64(I);
49457 case PT_Uint64:
49458 return emitShrUint16Uint64(I);
49459 case PT_IntAP:
49460 return emitShrUint16IntAP(I);
49461 case PT_IntAPS:
49462 return emitShrUint16IntAPS(I);
49463 default: llvm_unreachable("invalid type: emitShr");
49464 }
49465 llvm_unreachable("invalid enum value");
49466 case PT_Sint32:
49467 switch (T1) {
49468 case PT_Sint8:
49469 return emitShrSint32Sint8(I);
49470 case PT_Uint8:
49471 return emitShrSint32Uint8(I);
49472 case PT_Sint16:
49473 return emitShrSint32Sint16(I);
49474 case PT_Uint16:
49475 return emitShrSint32Uint16(I);
49476 case PT_Sint32:
49477 return emitShrSint32Sint32(I);
49478 case PT_Uint32:
49479 return emitShrSint32Uint32(I);
49480 case PT_Sint64:
49481 return emitShrSint32Sint64(I);
49482 case PT_Uint64:
49483 return emitShrSint32Uint64(I);
49484 case PT_IntAP:
49485 return emitShrSint32IntAP(I);
49486 case PT_IntAPS:
49487 return emitShrSint32IntAPS(I);
49488 default: llvm_unreachable("invalid type: emitShr");
49489 }
49490 llvm_unreachable("invalid enum value");
49491 case PT_Uint32:
49492 switch (T1) {
49493 case PT_Sint8:
49494 return emitShrUint32Sint8(I);
49495 case PT_Uint8:
49496 return emitShrUint32Uint8(I);
49497 case PT_Sint16:
49498 return emitShrUint32Sint16(I);
49499 case PT_Uint16:
49500 return emitShrUint32Uint16(I);
49501 case PT_Sint32:
49502 return emitShrUint32Sint32(I);
49503 case PT_Uint32:
49504 return emitShrUint32Uint32(I);
49505 case PT_Sint64:
49506 return emitShrUint32Sint64(I);
49507 case PT_Uint64:
49508 return emitShrUint32Uint64(I);
49509 case PT_IntAP:
49510 return emitShrUint32IntAP(I);
49511 case PT_IntAPS:
49512 return emitShrUint32IntAPS(I);
49513 default: llvm_unreachable("invalid type: emitShr");
49514 }
49515 llvm_unreachable("invalid enum value");
49516 case PT_Sint64:
49517 switch (T1) {
49518 case PT_Sint8:
49519 return emitShrSint64Sint8(I);
49520 case PT_Uint8:
49521 return emitShrSint64Uint8(I);
49522 case PT_Sint16:
49523 return emitShrSint64Sint16(I);
49524 case PT_Uint16:
49525 return emitShrSint64Uint16(I);
49526 case PT_Sint32:
49527 return emitShrSint64Sint32(I);
49528 case PT_Uint32:
49529 return emitShrSint64Uint32(I);
49530 case PT_Sint64:
49531 return emitShrSint64Sint64(I);
49532 case PT_Uint64:
49533 return emitShrSint64Uint64(I);
49534 case PT_IntAP:
49535 return emitShrSint64IntAP(I);
49536 case PT_IntAPS:
49537 return emitShrSint64IntAPS(I);
49538 default: llvm_unreachable("invalid type: emitShr");
49539 }
49540 llvm_unreachable("invalid enum value");
49541 case PT_Uint64:
49542 switch (T1) {
49543 case PT_Sint8:
49544 return emitShrUint64Sint8(I);
49545 case PT_Uint8:
49546 return emitShrUint64Uint8(I);
49547 case PT_Sint16:
49548 return emitShrUint64Sint16(I);
49549 case PT_Uint16:
49550 return emitShrUint64Uint16(I);
49551 case PT_Sint32:
49552 return emitShrUint64Sint32(I);
49553 case PT_Uint32:
49554 return emitShrUint64Uint32(I);
49555 case PT_Sint64:
49556 return emitShrUint64Sint64(I);
49557 case PT_Uint64:
49558 return emitShrUint64Uint64(I);
49559 case PT_IntAP:
49560 return emitShrUint64IntAP(I);
49561 case PT_IntAPS:
49562 return emitShrUint64IntAPS(I);
49563 default: llvm_unreachable("invalid type: emitShr");
49564 }
49565 llvm_unreachable("invalid enum value");
49566 case PT_IntAP:
49567 switch (T1) {
49568 case PT_Sint8:
49569 return emitShrIntAPSint8(I);
49570 case PT_Uint8:
49571 return emitShrIntAPUint8(I);
49572 case PT_Sint16:
49573 return emitShrIntAPSint16(I);
49574 case PT_Uint16:
49575 return emitShrIntAPUint16(I);
49576 case PT_Sint32:
49577 return emitShrIntAPSint32(I);
49578 case PT_Uint32:
49579 return emitShrIntAPUint32(I);
49580 case PT_Sint64:
49581 return emitShrIntAPSint64(I);
49582 case PT_Uint64:
49583 return emitShrIntAPUint64(I);
49584 case PT_IntAP:
49585 return emitShrIntAPIntAP(I);
49586 case PT_IntAPS:
49587 return emitShrIntAPIntAPS(I);
49588 default: llvm_unreachable("invalid type: emitShr");
49589 }
49590 llvm_unreachable("invalid enum value");
49591 case PT_IntAPS:
49592 switch (T1) {
49593 case PT_Sint8:
49594 return emitShrIntAPSSint8(I);
49595 case PT_Uint8:
49596 return emitShrIntAPSUint8(I);
49597 case PT_Sint16:
49598 return emitShrIntAPSSint16(I);
49599 case PT_Uint16:
49600 return emitShrIntAPSUint16(I);
49601 case PT_Sint32:
49602 return emitShrIntAPSSint32(I);
49603 case PT_Uint32:
49604 return emitShrIntAPSUint32(I);
49605 case PT_Sint64:
49606 return emitShrIntAPSSint64(I);
49607 case PT_Uint64:
49608 return emitShrIntAPSUint64(I);
49609 case PT_IntAP:
49610 return emitShrIntAPSIntAP(I);
49611 case PT_IntAPS:
49612 return emitShrIntAPSIntAPS(I);
49613 default: llvm_unreachable("invalid type: emitShr");
49614 }
49615 llvm_unreachable("invalid enum value");
49616 default: llvm_unreachable("invalid type: emitShr");
49617 }
49618 llvm_unreachable("invalid enum value");
49619}
49620#endif
49621#ifdef GET_LINK_IMPL
49622bool ByteCodeEmitter::emitShrSint8Sint8(SourceInfo L) {
49623 return emitOp<>(OP_ShrSint8Sint8, L);
49624}
49625bool ByteCodeEmitter::emitShrSint8Uint8(SourceInfo L) {
49626 return emitOp<>(OP_ShrSint8Uint8, L);
49627}
49628bool ByteCodeEmitter::emitShrSint8Sint16(SourceInfo L) {
49629 return emitOp<>(OP_ShrSint8Sint16, L);
49630}
49631bool ByteCodeEmitter::emitShrSint8Uint16(SourceInfo L) {
49632 return emitOp<>(OP_ShrSint8Uint16, L);
49633}
49634bool ByteCodeEmitter::emitShrSint8Sint32(SourceInfo L) {
49635 return emitOp<>(OP_ShrSint8Sint32, L);
49636}
49637bool ByteCodeEmitter::emitShrSint8Uint32(SourceInfo L) {
49638 return emitOp<>(OP_ShrSint8Uint32, L);
49639}
49640bool ByteCodeEmitter::emitShrSint8Sint64(SourceInfo L) {
49641 return emitOp<>(OP_ShrSint8Sint64, L);
49642}
49643bool ByteCodeEmitter::emitShrSint8Uint64(SourceInfo L) {
49644 return emitOp<>(OP_ShrSint8Uint64, L);
49645}
49646bool ByteCodeEmitter::emitShrSint8IntAP(SourceInfo L) {
49647 return emitOp<>(OP_ShrSint8IntAP, L);
49648}
49649bool ByteCodeEmitter::emitShrSint8IntAPS(SourceInfo L) {
49650 return emitOp<>(OP_ShrSint8IntAPS, L);
49651}
49652bool ByteCodeEmitter::emitShrUint8Sint8(SourceInfo L) {
49653 return emitOp<>(OP_ShrUint8Sint8, L);
49654}
49655bool ByteCodeEmitter::emitShrUint8Uint8(SourceInfo L) {
49656 return emitOp<>(OP_ShrUint8Uint8, L);
49657}
49658bool ByteCodeEmitter::emitShrUint8Sint16(SourceInfo L) {
49659 return emitOp<>(OP_ShrUint8Sint16, L);
49660}
49661bool ByteCodeEmitter::emitShrUint8Uint16(SourceInfo L) {
49662 return emitOp<>(OP_ShrUint8Uint16, L);
49663}
49664bool ByteCodeEmitter::emitShrUint8Sint32(SourceInfo L) {
49665 return emitOp<>(OP_ShrUint8Sint32, L);
49666}
49667bool ByteCodeEmitter::emitShrUint8Uint32(SourceInfo L) {
49668 return emitOp<>(OP_ShrUint8Uint32, L);
49669}
49670bool ByteCodeEmitter::emitShrUint8Sint64(SourceInfo L) {
49671 return emitOp<>(OP_ShrUint8Sint64, L);
49672}
49673bool ByteCodeEmitter::emitShrUint8Uint64(SourceInfo L) {
49674 return emitOp<>(OP_ShrUint8Uint64, L);
49675}
49676bool ByteCodeEmitter::emitShrUint8IntAP(SourceInfo L) {
49677 return emitOp<>(OP_ShrUint8IntAP, L);
49678}
49679bool ByteCodeEmitter::emitShrUint8IntAPS(SourceInfo L) {
49680 return emitOp<>(OP_ShrUint8IntAPS, L);
49681}
49682bool ByteCodeEmitter::emitShrSint16Sint8(SourceInfo L) {
49683 return emitOp<>(OP_ShrSint16Sint8, L);
49684}
49685bool ByteCodeEmitter::emitShrSint16Uint8(SourceInfo L) {
49686 return emitOp<>(OP_ShrSint16Uint8, L);
49687}
49688bool ByteCodeEmitter::emitShrSint16Sint16(SourceInfo L) {
49689 return emitOp<>(OP_ShrSint16Sint16, L);
49690}
49691bool ByteCodeEmitter::emitShrSint16Uint16(SourceInfo L) {
49692 return emitOp<>(OP_ShrSint16Uint16, L);
49693}
49694bool ByteCodeEmitter::emitShrSint16Sint32(SourceInfo L) {
49695 return emitOp<>(OP_ShrSint16Sint32, L);
49696}
49697bool ByteCodeEmitter::emitShrSint16Uint32(SourceInfo L) {
49698 return emitOp<>(OP_ShrSint16Uint32, L);
49699}
49700bool ByteCodeEmitter::emitShrSint16Sint64(SourceInfo L) {
49701 return emitOp<>(OP_ShrSint16Sint64, L);
49702}
49703bool ByteCodeEmitter::emitShrSint16Uint64(SourceInfo L) {
49704 return emitOp<>(OP_ShrSint16Uint64, L);
49705}
49706bool ByteCodeEmitter::emitShrSint16IntAP(SourceInfo L) {
49707 return emitOp<>(OP_ShrSint16IntAP, L);
49708}
49709bool ByteCodeEmitter::emitShrSint16IntAPS(SourceInfo L) {
49710 return emitOp<>(OP_ShrSint16IntAPS, L);
49711}
49712bool ByteCodeEmitter::emitShrUint16Sint8(SourceInfo L) {
49713 return emitOp<>(OP_ShrUint16Sint8, L);
49714}
49715bool ByteCodeEmitter::emitShrUint16Uint8(SourceInfo L) {
49716 return emitOp<>(OP_ShrUint16Uint8, L);
49717}
49718bool ByteCodeEmitter::emitShrUint16Sint16(SourceInfo L) {
49719 return emitOp<>(OP_ShrUint16Sint16, L);
49720}
49721bool ByteCodeEmitter::emitShrUint16Uint16(SourceInfo L) {
49722 return emitOp<>(OP_ShrUint16Uint16, L);
49723}
49724bool ByteCodeEmitter::emitShrUint16Sint32(SourceInfo L) {
49725 return emitOp<>(OP_ShrUint16Sint32, L);
49726}
49727bool ByteCodeEmitter::emitShrUint16Uint32(SourceInfo L) {
49728 return emitOp<>(OP_ShrUint16Uint32, L);
49729}
49730bool ByteCodeEmitter::emitShrUint16Sint64(SourceInfo L) {
49731 return emitOp<>(OP_ShrUint16Sint64, L);
49732}
49733bool ByteCodeEmitter::emitShrUint16Uint64(SourceInfo L) {
49734 return emitOp<>(OP_ShrUint16Uint64, L);
49735}
49736bool ByteCodeEmitter::emitShrUint16IntAP(SourceInfo L) {
49737 return emitOp<>(OP_ShrUint16IntAP, L);
49738}
49739bool ByteCodeEmitter::emitShrUint16IntAPS(SourceInfo L) {
49740 return emitOp<>(OP_ShrUint16IntAPS, L);
49741}
49742bool ByteCodeEmitter::emitShrSint32Sint8(SourceInfo L) {
49743 return emitOp<>(OP_ShrSint32Sint8, L);
49744}
49745bool ByteCodeEmitter::emitShrSint32Uint8(SourceInfo L) {
49746 return emitOp<>(OP_ShrSint32Uint8, L);
49747}
49748bool ByteCodeEmitter::emitShrSint32Sint16(SourceInfo L) {
49749 return emitOp<>(OP_ShrSint32Sint16, L);
49750}
49751bool ByteCodeEmitter::emitShrSint32Uint16(SourceInfo L) {
49752 return emitOp<>(OP_ShrSint32Uint16, L);
49753}
49754bool ByteCodeEmitter::emitShrSint32Sint32(SourceInfo L) {
49755 return emitOp<>(OP_ShrSint32Sint32, L);
49756}
49757bool ByteCodeEmitter::emitShrSint32Uint32(SourceInfo L) {
49758 return emitOp<>(OP_ShrSint32Uint32, L);
49759}
49760bool ByteCodeEmitter::emitShrSint32Sint64(SourceInfo L) {
49761 return emitOp<>(OP_ShrSint32Sint64, L);
49762}
49763bool ByteCodeEmitter::emitShrSint32Uint64(SourceInfo L) {
49764 return emitOp<>(OP_ShrSint32Uint64, L);
49765}
49766bool ByteCodeEmitter::emitShrSint32IntAP(SourceInfo L) {
49767 return emitOp<>(OP_ShrSint32IntAP, L);
49768}
49769bool ByteCodeEmitter::emitShrSint32IntAPS(SourceInfo L) {
49770 return emitOp<>(OP_ShrSint32IntAPS, L);
49771}
49772bool ByteCodeEmitter::emitShrUint32Sint8(SourceInfo L) {
49773 return emitOp<>(OP_ShrUint32Sint8, L);
49774}
49775bool ByteCodeEmitter::emitShrUint32Uint8(SourceInfo L) {
49776 return emitOp<>(OP_ShrUint32Uint8, L);
49777}
49778bool ByteCodeEmitter::emitShrUint32Sint16(SourceInfo L) {
49779 return emitOp<>(OP_ShrUint32Sint16, L);
49780}
49781bool ByteCodeEmitter::emitShrUint32Uint16(SourceInfo L) {
49782 return emitOp<>(OP_ShrUint32Uint16, L);
49783}
49784bool ByteCodeEmitter::emitShrUint32Sint32(SourceInfo L) {
49785 return emitOp<>(OP_ShrUint32Sint32, L);
49786}
49787bool ByteCodeEmitter::emitShrUint32Uint32(SourceInfo L) {
49788 return emitOp<>(OP_ShrUint32Uint32, L);
49789}
49790bool ByteCodeEmitter::emitShrUint32Sint64(SourceInfo L) {
49791 return emitOp<>(OP_ShrUint32Sint64, L);
49792}
49793bool ByteCodeEmitter::emitShrUint32Uint64(SourceInfo L) {
49794 return emitOp<>(OP_ShrUint32Uint64, L);
49795}
49796bool ByteCodeEmitter::emitShrUint32IntAP(SourceInfo L) {
49797 return emitOp<>(OP_ShrUint32IntAP, L);
49798}
49799bool ByteCodeEmitter::emitShrUint32IntAPS(SourceInfo L) {
49800 return emitOp<>(OP_ShrUint32IntAPS, L);
49801}
49802bool ByteCodeEmitter::emitShrSint64Sint8(SourceInfo L) {
49803 return emitOp<>(OP_ShrSint64Sint8, L);
49804}
49805bool ByteCodeEmitter::emitShrSint64Uint8(SourceInfo L) {
49806 return emitOp<>(OP_ShrSint64Uint8, L);
49807}
49808bool ByteCodeEmitter::emitShrSint64Sint16(SourceInfo L) {
49809 return emitOp<>(OP_ShrSint64Sint16, L);
49810}
49811bool ByteCodeEmitter::emitShrSint64Uint16(SourceInfo L) {
49812 return emitOp<>(OP_ShrSint64Uint16, L);
49813}
49814bool ByteCodeEmitter::emitShrSint64Sint32(SourceInfo L) {
49815 return emitOp<>(OP_ShrSint64Sint32, L);
49816}
49817bool ByteCodeEmitter::emitShrSint64Uint32(SourceInfo L) {
49818 return emitOp<>(OP_ShrSint64Uint32, L);
49819}
49820bool ByteCodeEmitter::emitShrSint64Sint64(SourceInfo L) {
49821 return emitOp<>(OP_ShrSint64Sint64, L);
49822}
49823bool ByteCodeEmitter::emitShrSint64Uint64(SourceInfo L) {
49824 return emitOp<>(OP_ShrSint64Uint64, L);
49825}
49826bool ByteCodeEmitter::emitShrSint64IntAP(SourceInfo L) {
49827 return emitOp<>(OP_ShrSint64IntAP, L);
49828}
49829bool ByteCodeEmitter::emitShrSint64IntAPS(SourceInfo L) {
49830 return emitOp<>(OP_ShrSint64IntAPS, L);
49831}
49832bool ByteCodeEmitter::emitShrUint64Sint8(SourceInfo L) {
49833 return emitOp<>(OP_ShrUint64Sint8, L);
49834}
49835bool ByteCodeEmitter::emitShrUint64Uint8(SourceInfo L) {
49836 return emitOp<>(OP_ShrUint64Uint8, L);
49837}
49838bool ByteCodeEmitter::emitShrUint64Sint16(SourceInfo L) {
49839 return emitOp<>(OP_ShrUint64Sint16, L);
49840}
49841bool ByteCodeEmitter::emitShrUint64Uint16(SourceInfo L) {
49842 return emitOp<>(OP_ShrUint64Uint16, L);
49843}
49844bool ByteCodeEmitter::emitShrUint64Sint32(SourceInfo L) {
49845 return emitOp<>(OP_ShrUint64Sint32, L);
49846}
49847bool ByteCodeEmitter::emitShrUint64Uint32(SourceInfo L) {
49848 return emitOp<>(OP_ShrUint64Uint32, L);
49849}
49850bool ByteCodeEmitter::emitShrUint64Sint64(SourceInfo L) {
49851 return emitOp<>(OP_ShrUint64Sint64, L);
49852}
49853bool ByteCodeEmitter::emitShrUint64Uint64(SourceInfo L) {
49854 return emitOp<>(OP_ShrUint64Uint64, L);
49855}
49856bool ByteCodeEmitter::emitShrUint64IntAP(SourceInfo L) {
49857 return emitOp<>(OP_ShrUint64IntAP, L);
49858}
49859bool ByteCodeEmitter::emitShrUint64IntAPS(SourceInfo L) {
49860 return emitOp<>(OP_ShrUint64IntAPS, L);
49861}
49862bool ByteCodeEmitter::emitShrIntAPSint8(SourceInfo L) {
49863 return emitOp<>(OP_ShrIntAPSint8, L);
49864}
49865bool ByteCodeEmitter::emitShrIntAPUint8(SourceInfo L) {
49866 return emitOp<>(OP_ShrIntAPUint8, L);
49867}
49868bool ByteCodeEmitter::emitShrIntAPSint16(SourceInfo L) {
49869 return emitOp<>(OP_ShrIntAPSint16, L);
49870}
49871bool ByteCodeEmitter::emitShrIntAPUint16(SourceInfo L) {
49872 return emitOp<>(OP_ShrIntAPUint16, L);
49873}
49874bool ByteCodeEmitter::emitShrIntAPSint32(SourceInfo L) {
49875 return emitOp<>(OP_ShrIntAPSint32, L);
49876}
49877bool ByteCodeEmitter::emitShrIntAPUint32(SourceInfo L) {
49878 return emitOp<>(OP_ShrIntAPUint32, L);
49879}
49880bool ByteCodeEmitter::emitShrIntAPSint64(SourceInfo L) {
49881 return emitOp<>(OP_ShrIntAPSint64, L);
49882}
49883bool ByteCodeEmitter::emitShrIntAPUint64(SourceInfo L) {
49884 return emitOp<>(OP_ShrIntAPUint64, L);
49885}
49886bool ByteCodeEmitter::emitShrIntAPIntAP(SourceInfo L) {
49887 return emitOp<>(OP_ShrIntAPIntAP, L);
49888}
49889bool ByteCodeEmitter::emitShrIntAPIntAPS(SourceInfo L) {
49890 return emitOp<>(OP_ShrIntAPIntAPS, L);
49891}
49892bool ByteCodeEmitter::emitShrIntAPSSint8(SourceInfo L) {
49893 return emitOp<>(OP_ShrIntAPSSint8, L);
49894}
49895bool ByteCodeEmitter::emitShrIntAPSUint8(SourceInfo L) {
49896 return emitOp<>(OP_ShrIntAPSUint8, L);
49897}
49898bool ByteCodeEmitter::emitShrIntAPSSint16(SourceInfo L) {
49899 return emitOp<>(OP_ShrIntAPSSint16, L);
49900}
49901bool ByteCodeEmitter::emitShrIntAPSUint16(SourceInfo L) {
49902 return emitOp<>(OP_ShrIntAPSUint16, L);
49903}
49904bool ByteCodeEmitter::emitShrIntAPSSint32(SourceInfo L) {
49905 return emitOp<>(OP_ShrIntAPSSint32, L);
49906}
49907bool ByteCodeEmitter::emitShrIntAPSUint32(SourceInfo L) {
49908 return emitOp<>(OP_ShrIntAPSUint32, L);
49909}
49910bool ByteCodeEmitter::emitShrIntAPSSint64(SourceInfo L) {
49911 return emitOp<>(OP_ShrIntAPSSint64, L);
49912}
49913bool ByteCodeEmitter::emitShrIntAPSUint64(SourceInfo L) {
49914 return emitOp<>(OP_ShrIntAPSUint64, L);
49915}
49916bool ByteCodeEmitter::emitShrIntAPSIntAP(SourceInfo L) {
49917 return emitOp<>(OP_ShrIntAPSIntAP, L);
49918}
49919bool ByteCodeEmitter::emitShrIntAPSIntAPS(SourceInfo L) {
49920 return emitOp<>(OP_ShrIntAPSIntAPS, L);
49921}
49922#endif
49923#ifdef GET_EVAL_IMPL
49924bool EvalEmitter::emitShrSint8Sint8(SourceInfo L) {
49925 if (!isActive()) return true;
49926 CurrentSource = L;
49927 return Shr<PT_Sint8, PT_Sint8>(S, CodePtr());
49928}
49929bool EvalEmitter::emitShrSint8Uint8(SourceInfo L) {
49930 if (!isActive()) return true;
49931 CurrentSource = L;
49932 return Shr<PT_Sint8, PT_Uint8>(S, CodePtr());
49933}
49934bool EvalEmitter::emitShrSint8Sint16(SourceInfo L) {
49935 if (!isActive()) return true;
49936 CurrentSource = L;
49937 return Shr<PT_Sint8, PT_Sint16>(S, CodePtr());
49938}
49939bool EvalEmitter::emitShrSint8Uint16(SourceInfo L) {
49940 if (!isActive()) return true;
49941 CurrentSource = L;
49942 return Shr<PT_Sint8, PT_Uint16>(S, CodePtr());
49943}
49944bool EvalEmitter::emitShrSint8Sint32(SourceInfo L) {
49945 if (!isActive()) return true;
49946 CurrentSource = L;
49947 return Shr<PT_Sint8, PT_Sint32>(S, CodePtr());
49948}
49949bool EvalEmitter::emitShrSint8Uint32(SourceInfo L) {
49950 if (!isActive()) return true;
49951 CurrentSource = L;
49952 return Shr<PT_Sint8, PT_Uint32>(S, CodePtr());
49953}
49954bool EvalEmitter::emitShrSint8Sint64(SourceInfo L) {
49955 if (!isActive()) return true;
49956 CurrentSource = L;
49957 return Shr<PT_Sint8, PT_Sint64>(S, CodePtr());
49958}
49959bool EvalEmitter::emitShrSint8Uint64(SourceInfo L) {
49960 if (!isActive()) return true;
49961 CurrentSource = L;
49962 return Shr<PT_Sint8, PT_Uint64>(S, CodePtr());
49963}
49964bool EvalEmitter::emitShrSint8IntAP(SourceInfo L) {
49965 if (!isActive()) return true;
49966 CurrentSource = L;
49967 return Shr<PT_Sint8, PT_IntAP>(S, CodePtr());
49968}
49969bool EvalEmitter::emitShrSint8IntAPS(SourceInfo L) {
49970 if (!isActive()) return true;
49971 CurrentSource = L;
49972 return Shr<PT_Sint8, PT_IntAPS>(S, CodePtr());
49973}
49974bool EvalEmitter::emitShrUint8Sint8(SourceInfo L) {
49975 if (!isActive()) return true;
49976 CurrentSource = L;
49977 return Shr<PT_Uint8, PT_Sint8>(S, CodePtr());
49978}
49979bool EvalEmitter::emitShrUint8Uint8(SourceInfo L) {
49980 if (!isActive()) return true;
49981 CurrentSource = L;
49982 return Shr<PT_Uint8, PT_Uint8>(S, CodePtr());
49983}
49984bool EvalEmitter::emitShrUint8Sint16(SourceInfo L) {
49985 if (!isActive()) return true;
49986 CurrentSource = L;
49987 return Shr<PT_Uint8, PT_Sint16>(S, CodePtr());
49988}
49989bool EvalEmitter::emitShrUint8Uint16(SourceInfo L) {
49990 if (!isActive()) return true;
49991 CurrentSource = L;
49992 return Shr<PT_Uint8, PT_Uint16>(S, CodePtr());
49993}
49994bool EvalEmitter::emitShrUint8Sint32(SourceInfo L) {
49995 if (!isActive()) return true;
49996 CurrentSource = L;
49997 return Shr<PT_Uint8, PT_Sint32>(S, CodePtr());
49998}
49999bool EvalEmitter::emitShrUint8Uint32(SourceInfo L) {
50000 if (!isActive()) return true;
50001 CurrentSource = L;
50002 return Shr<PT_Uint8, PT_Uint32>(S, CodePtr());
50003}
50004bool EvalEmitter::emitShrUint8Sint64(SourceInfo L) {
50005 if (!isActive()) return true;
50006 CurrentSource = L;
50007 return Shr<PT_Uint8, PT_Sint64>(S, CodePtr());
50008}
50009bool EvalEmitter::emitShrUint8Uint64(SourceInfo L) {
50010 if (!isActive()) return true;
50011 CurrentSource = L;
50012 return Shr<PT_Uint8, PT_Uint64>(S, CodePtr());
50013}
50014bool EvalEmitter::emitShrUint8IntAP(SourceInfo L) {
50015 if (!isActive()) return true;
50016 CurrentSource = L;
50017 return Shr<PT_Uint8, PT_IntAP>(S, CodePtr());
50018}
50019bool EvalEmitter::emitShrUint8IntAPS(SourceInfo L) {
50020 if (!isActive()) return true;
50021 CurrentSource = L;
50022 return Shr<PT_Uint8, PT_IntAPS>(S, CodePtr());
50023}
50024bool EvalEmitter::emitShrSint16Sint8(SourceInfo L) {
50025 if (!isActive()) return true;
50026 CurrentSource = L;
50027 return Shr<PT_Sint16, PT_Sint8>(S, CodePtr());
50028}
50029bool EvalEmitter::emitShrSint16Uint8(SourceInfo L) {
50030 if (!isActive()) return true;
50031 CurrentSource = L;
50032 return Shr<PT_Sint16, PT_Uint8>(S, CodePtr());
50033}
50034bool EvalEmitter::emitShrSint16Sint16(SourceInfo L) {
50035 if (!isActive()) return true;
50036 CurrentSource = L;
50037 return Shr<PT_Sint16, PT_Sint16>(S, CodePtr());
50038}
50039bool EvalEmitter::emitShrSint16Uint16(SourceInfo L) {
50040 if (!isActive()) return true;
50041 CurrentSource = L;
50042 return Shr<PT_Sint16, PT_Uint16>(S, CodePtr());
50043}
50044bool EvalEmitter::emitShrSint16Sint32(SourceInfo L) {
50045 if (!isActive()) return true;
50046 CurrentSource = L;
50047 return Shr<PT_Sint16, PT_Sint32>(S, CodePtr());
50048}
50049bool EvalEmitter::emitShrSint16Uint32(SourceInfo L) {
50050 if (!isActive()) return true;
50051 CurrentSource = L;
50052 return Shr<PT_Sint16, PT_Uint32>(S, CodePtr());
50053}
50054bool EvalEmitter::emitShrSint16Sint64(SourceInfo L) {
50055 if (!isActive()) return true;
50056 CurrentSource = L;
50057 return Shr<PT_Sint16, PT_Sint64>(S, CodePtr());
50058}
50059bool EvalEmitter::emitShrSint16Uint64(SourceInfo L) {
50060 if (!isActive()) return true;
50061 CurrentSource = L;
50062 return Shr<PT_Sint16, PT_Uint64>(S, CodePtr());
50063}
50064bool EvalEmitter::emitShrSint16IntAP(SourceInfo L) {
50065 if (!isActive()) return true;
50066 CurrentSource = L;
50067 return Shr<PT_Sint16, PT_IntAP>(S, CodePtr());
50068}
50069bool EvalEmitter::emitShrSint16IntAPS(SourceInfo L) {
50070 if (!isActive()) return true;
50071 CurrentSource = L;
50072 return Shr<PT_Sint16, PT_IntAPS>(S, CodePtr());
50073}
50074bool EvalEmitter::emitShrUint16Sint8(SourceInfo L) {
50075 if (!isActive()) return true;
50076 CurrentSource = L;
50077 return Shr<PT_Uint16, PT_Sint8>(S, CodePtr());
50078}
50079bool EvalEmitter::emitShrUint16Uint8(SourceInfo L) {
50080 if (!isActive()) return true;
50081 CurrentSource = L;
50082 return Shr<PT_Uint16, PT_Uint8>(S, CodePtr());
50083}
50084bool EvalEmitter::emitShrUint16Sint16(SourceInfo L) {
50085 if (!isActive()) return true;
50086 CurrentSource = L;
50087 return Shr<PT_Uint16, PT_Sint16>(S, CodePtr());
50088}
50089bool EvalEmitter::emitShrUint16Uint16(SourceInfo L) {
50090 if (!isActive()) return true;
50091 CurrentSource = L;
50092 return Shr<PT_Uint16, PT_Uint16>(S, CodePtr());
50093}
50094bool EvalEmitter::emitShrUint16Sint32(SourceInfo L) {
50095 if (!isActive()) return true;
50096 CurrentSource = L;
50097 return Shr<PT_Uint16, PT_Sint32>(S, CodePtr());
50098}
50099bool EvalEmitter::emitShrUint16Uint32(SourceInfo L) {
50100 if (!isActive()) return true;
50101 CurrentSource = L;
50102 return Shr<PT_Uint16, PT_Uint32>(S, CodePtr());
50103}
50104bool EvalEmitter::emitShrUint16Sint64(SourceInfo L) {
50105 if (!isActive()) return true;
50106 CurrentSource = L;
50107 return Shr<PT_Uint16, PT_Sint64>(S, CodePtr());
50108}
50109bool EvalEmitter::emitShrUint16Uint64(SourceInfo L) {
50110 if (!isActive()) return true;
50111 CurrentSource = L;
50112 return Shr<PT_Uint16, PT_Uint64>(S, CodePtr());
50113}
50114bool EvalEmitter::emitShrUint16IntAP(SourceInfo L) {
50115 if (!isActive()) return true;
50116 CurrentSource = L;
50117 return Shr<PT_Uint16, PT_IntAP>(S, CodePtr());
50118}
50119bool EvalEmitter::emitShrUint16IntAPS(SourceInfo L) {
50120 if (!isActive()) return true;
50121 CurrentSource = L;
50122 return Shr<PT_Uint16, PT_IntAPS>(S, CodePtr());
50123}
50124bool EvalEmitter::emitShrSint32Sint8(SourceInfo L) {
50125 if (!isActive()) return true;
50126 CurrentSource = L;
50127 return Shr<PT_Sint32, PT_Sint8>(S, CodePtr());
50128}
50129bool EvalEmitter::emitShrSint32Uint8(SourceInfo L) {
50130 if (!isActive()) return true;
50131 CurrentSource = L;
50132 return Shr<PT_Sint32, PT_Uint8>(S, CodePtr());
50133}
50134bool EvalEmitter::emitShrSint32Sint16(SourceInfo L) {
50135 if (!isActive()) return true;
50136 CurrentSource = L;
50137 return Shr<PT_Sint32, PT_Sint16>(S, CodePtr());
50138}
50139bool EvalEmitter::emitShrSint32Uint16(SourceInfo L) {
50140 if (!isActive()) return true;
50141 CurrentSource = L;
50142 return Shr<PT_Sint32, PT_Uint16>(S, CodePtr());
50143}
50144bool EvalEmitter::emitShrSint32Sint32(SourceInfo L) {
50145 if (!isActive()) return true;
50146 CurrentSource = L;
50147 return Shr<PT_Sint32, PT_Sint32>(S, CodePtr());
50148}
50149bool EvalEmitter::emitShrSint32Uint32(SourceInfo L) {
50150 if (!isActive()) return true;
50151 CurrentSource = L;
50152 return Shr<PT_Sint32, PT_Uint32>(S, CodePtr());
50153}
50154bool EvalEmitter::emitShrSint32Sint64(SourceInfo L) {
50155 if (!isActive()) return true;
50156 CurrentSource = L;
50157 return Shr<PT_Sint32, PT_Sint64>(S, CodePtr());
50158}
50159bool EvalEmitter::emitShrSint32Uint64(SourceInfo L) {
50160 if (!isActive()) return true;
50161 CurrentSource = L;
50162 return Shr<PT_Sint32, PT_Uint64>(S, CodePtr());
50163}
50164bool EvalEmitter::emitShrSint32IntAP(SourceInfo L) {
50165 if (!isActive()) return true;
50166 CurrentSource = L;
50167 return Shr<PT_Sint32, PT_IntAP>(S, CodePtr());
50168}
50169bool EvalEmitter::emitShrSint32IntAPS(SourceInfo L) {
50170 if (!isActive()) return true;
50171 CurrentSource = L;
50172 return Shr<PT_Sint32, PT_IntAPS>(S, CodePtr());
50173}
50174bool EvalEmitter::emitShrUint32Sint8(SourceInfo L) {
50175 if (!isActive()) return true;
50176 CurrentSource = L;
50177 return Shr<PT_Uint32, PT_Sint8>(S, CodePtr());
50178}
50179bool EvalEmitter::emitShrUint32Uint8(SourceInfo L) {
50180 if (!isActive()) return true;
50181 CurrentSource = L;
50182 return Shr<PT_Uint32, PT_Uint8>(S, CodePtr());
50183}
50184bool EvalEmitter::emitShrUint32Sint16(SourceInfo L) {
50185 if (!isActive()) return true;
50186 CurrentSource = L;
50187 return Shr<PT_Uint32, PT_Sint16>(S, CodePtr());
50188}
50189bool EvalEmitter::emitShrUint32Uint16(SourceInfo L) {
50190 if (!isActive()) return true;
50191 CurrentSource = L;
50192 return Shr<PT_Uint32, PT_Uint16>(S, CodePtr());
50193}
50194bool EvalEmitter::emitShrUint32Sint32(SourceInfo L) {
50195 if (!isActive()) return true;
50196 CurrentSource = L;
50197 return Shr<PT_Uint32, PT_Sint32>(S, CodePtr());
50198}
50199bool EvalEmitter::emitShrUint32Uint32(SourceInfo L) {
50200 if (!isActive()) return true;
50201 CurrentSource = L;
50202 return Shr<PT_Uint32, PT_Uint32>(S, CodePtr());
50203}
50204bool EvalEmitter::emitShrUint32Sint64(SourceInfo L) {
50205 if (!isActive()) return true;
50206 CurrentSource = L;
50207 return Shr<PT_Uint32, PT_Sint64>(S, CodePtr());
50208}
50209bool EvalEmitter::emitShrUint32Uint64(SourceInfo L) {
50210 if (!isActive()) return true;
50211 CurrentSource = L;
50212 return Shr<PT_Uint32, PT_Uint64>(S, CodePtr());
50213}
50214bool EvalEmitter::emitShrUint32IntAP(SourceInfo L) {
50215 if (!isActive()) return true;
50216 CurrentSource = L;
50217 return Shr<PT_Uint32, PT_IntAP>(S, CodePtr());
50218}
50219bool EvalEmitter::emitShrUint32IntAPS(SourceInfo L) {
50220 if (!isActive()) return true;
50221 CurrentSource = L;
50222 return Shr<PT_Uint32, PT_IntAPS>(S, CodePtr());
50223}
50224bool EvalEmitter::emitShrSint64Sint8(SourceInfo L) {
50225 if (!isActive()) return true;
50226 CurrentSource = L;
50227 return Shr<PT_Sint64, PT_Sint8>(S, CodePtr());
50228}
50229bool EvalEmitter::emitShrSint64Uint8(SourceInfo L) {
50230 if (!isActive()) return true;
50231 CurrentSource = L;
50232 return Shr<PT_Sint64, PT_Uint8>(S, CodePtr());
50233}
50234bool EvalEmitter::emitShrSint64Sint16(SourceInfo L) {
50235 if (!isActive()) return true;
50236 CurrentSource = L;
50237 return Shr<PT_Sint64, PT_Sint16>(S, CodePtr());
50238}
50239bool EvalEmitter::emitShrSint64Uint16(SourceInfo L) {
50240 if (!isActive()) return true;
50241 CurrentSource = L;
50242 return Shr<PT_Sint64, PT_Uint16>(S, CodePtr());
50243}
50244bool EvalEmitter::emitShrSint64Sint32(SourceInfo L) {
50245 if (!isActive()) return true;
50246 CurrentSource = L;
50247 return Shr<PT_Sint64, PT_Sint32>(S, CodePtr());
50248}
50249bool EvalEmitter::emitShrSint64Uint32(SourceInfo L) {
50250 if (!isActive()) return true;
50251 CurrentSource = L;
50252 return Shr<PT_Sint64, PT_Uint32>(S, CodePtr());
50253}
50254bool EvalEmitter::emitShrSint64Sint64(SourceInfo L) {
50255 if (!isActive()) return true;
50256 CurrentSource = L;
50257 return Shr<PT_Sint64, PT_Sint64>(S, CodePtr());
50258}
50259bool EvalEmitter::emitShrSint64Uint64(SourceInfo L) {
50260 if (!isActive()) return true;
50261 CurrentSource = L;
50262 return Shr<PT_Sint64, PT_Uint64>(S, CodePtr());
50263}
50264bool EvalEmitter::emitShrSint64IntAP(SourceInfo L) {
50265 if (!isActive()) return true;
50266 CurrentSource = L;
50267 return Shr<PT_Sint64, PT_IntAP>(S, CodePtr());
50268}
50269bool EvalEmitter::emitShrSint64IntAPS(SourceInfo L) {
50270 if (!isActive()) return true;
50271 CurrentSource = L;
50272 return Shr<PT_Sint64, PT_IntAPS>(S, CodePtr());
50273}
50274bool EvalEmitter::emitShrUint64Sint8(SourceInfo L) {
50275 if (!isActive()) return true;
50276 CurrentSource = L;
50277 return Shr<PT_Uint64, PT_Sint8>(S, CodePtr());
50278}
50279bool EvalEmitter::emitShrUint64Uint8(SourceInfo L) {
50280 if (!isActive()) return true;
50281 CurrentSource = L;
50282 return Shr<PT_Uint64, PT_Uint8>(S, CodePtr());
50283}
50284bool EvalEmitter::emitShrUint64Sint16(SourceInfo L) {
50285 if (!isActive()) return true;
50286 CurrentSource = L;
50287 return Shr<PT_Uint64, PT_Sint16>(S, CodePtr());
50288}
50289bool EvalEmitter::emitShrUint64Uint16(SourceInfo L) {
50290 if (!isActive()) return true;
50291 CurrentSource = L;
50292 return Shr<PT_Uint64, PT_Uint16>(S, CodePtr());
50293}
50294bool EvalEmitter::emitShrUint64Sint32(SourceInfo L) {
50295 if (!isActive()) return true;
50296 CurrentSource = L;
50297 return Shr<PT_Uint64, PT_Sint32>(S, CodePtr());
50298}
50299bool EvalEmitter::emitShrUint64Uint32(SourceInfo L) {
50300 if (!isActive()) return true;
50301 CurrentSource = L;
50302 return Shr<PT_Uint64, PT_Uint32>(S, CodePtr());
50303}
50304bool EvalEmitter::emitShrUint64Sint64(SourceInfo L) {
50305 if (!isActive()) return true;
50306 CurrentSource = L;
50307 return Shr<PT_Uint64, PT_Sint64>(S, CodePtr());
50308}
50309bool EvalEmitter::emitShrUint64Uint64(SourceInfo L) {
50310 if (!isActive()) return true;
50311 CurrentSource = L;
50312 return Shr<PT_Uint64, PT_Uint64>(S, CodePtr());
50313}
50314bool EvalEmitter::emitShrUint64IntAP(SourceInfo L) {
50315 if (!isActive()) return true;
50316 CurrentSource = L;
50317 return Shr<PT_Uint64, PT_IntAP>(S, CodePtr());
50318}
50319bool EvalEmitter::emitShrUint64IntAPS(SourceInfo L) {
50320 if (!isActive()) return true;
50321 CurrentSource = L;
50322 return Shr<PT_Uint64, PT_IntAPS>(S, CodePtr());
50323}
50324bool EvalEmitter::emitShrIntAPSint8(SourceInfo L) {
50325 if (!isActive()) return true;
50326 CurrentSource = L;
50327 return Shr<PT_IntAP, PT_Sint8>(S, CodePtr());
50328}
50329bool EvalEmitter::emitShrIntAPUint8(SourceInfo L) {
50330 if (!isActive()) return true;
50331 CurrentSource = L;
50332 return Shr<PT_IntAP, PT_Uint8>(S, CodePtr());
50333}
50334bool EvalEmitter::emitShrIntAPSint16(SourceInfo L) {
50335 if (!isActive()) return true;
50336 CurrentSource = L;
50337 return Shr<PT_IntAP, PT_Sint16>(S, CodePtr());
50338}
50339bool EvalEmitter::emitShrIntAPUint16(SourceInfo L) {
50340 if (!isActive()) return true;
50341 CurrentSource = L;
50342 return Shr<PT_IntAP, PT_Uint16>(S, CodePtr());
50343}
50344bool EvalEmitter::emitShrIntAPSint32(SourceInfo L) {
50345 if (!isActive()) return true;
50346 CurrentSource = L;
50347 return Shr<PT_IntAP, PT_Sint32>(S, CodePtr());
50348}
50349bool EvalEmitter::emitShrIntAPUint32(SourceInfo L) {
50350 if (!isActive()) return true;
50351 CurrentSource = L;
50352 return Shr<PT_IntAP, PT_Uint32>(S, CodePtr());
50353}
50354bool EvalEmitter::emitShrIntAPSint64(SourceInfo L) {
50355 if (!isActive()) return true;
50356 CurrentSource = L;
50357 return Shr<PT_IntAP, PT_Sint64>(S, CodePtr());
50358}
50359bool EvalEmitter::emitShrIntAPUint64(SourceInfo L) {
50360 if (!isActive()) return true;
50361 CurrentSource = L;
50362 return Shr<PT_IntAP, PT_Uint64>(S, CodePtr());
50363}
50364bool EvalEmitter::emitShrIntAPIntAP(SourceInfo L) {
50365 if (!isActive()) return true;
50366 CurrentSource = L;
50367 return Shr<PT_IntAP, PT_IntAP>(S, CodePtr());
50368}
50369bool EvalEmitter::emitShrIntAPIntAPS(SourceInfo L) {
50370 if (!isActive()) return true;
50371 CurrentSource = L;
50372 return Shr<PT_IntAP, PT_IntAPS>(S, CodePtr());
50373}
50374bool EvalEmitter::emitShrIntAPSSint8(SourceInfo L) {
50375 if (!isActive()) return true;
50376 CurrentSource = L;
50377 return Shr<PT_IntAPS, PT_Sint8>(S, CodePtr());
50378}
50379bool EvalEmitter::emitShrIntAPSUint8(SourceInfo L) {
50380 if (!isActive()) return true;
50381 CurrentSource = L;
50382 return Shr<PT_IntAPS, PT_Uint8>(S, CodePtr());
50383}
50384bool EvalEmitter::emitShrIntAPSSint16(SourceInfo L) {
50385 if (!isActive()) return true;
50386 CurrentSource = L;
50387 return Shr<PT_IntAPS, PT_Sint16>(S, CodePtr());
50388}
50389bool EvalEmitter::emitShrIntAPSUint16(SourceInfo L) {
50390 if (!isActive()) return true;
50391 CurrentSource = L;
50392 return Shr<PT_IntAPS, PT_Uint16>(S, CodePtr());
50393}
50394bool EvalEmitter::emitShrIntAPSSint32(SourceInfo L) {
50395 if (!isActive()) return true;
50396 CurrentSource = L;
50397 return Shr<PT_IntAPS, PT_Sint32>(S, CodePtr());
50398}
50399bool EvalEmitter::emitShrIntAPSUint32(SourceInfo L) {
50400 if (!isActive()) return true;
50401 CurrentSource = L;
50402 return Shr<PT_IntAPS, PT_Uint32>(S, CodePtr());
50403}
50404bool EvalEmitter::emitShrIntAPSSint64(SourceInfo L) {
50405 if (!isActive()) return true;
50406 CurrentSource = L;
50407 return Shr<PT_IntAPS, PT_Sint64>(S, CodePtr());
50408}
50409bool EvalEmitter::emitShrIntAPSUint64(SourceInfo L) {
50410 if (!isActive()) return true;
50411 CurrentSource = L;
50412 return Shr<PT_IntAPS, PT_Uint64>(S, CodePtr());
50413}
50414bool EvalEmitter::emitShrIntAPSIntAP(SourceInfo L) {
50415 if (!isActive()) return true;
50416 CurrentSource = L;
50417 return Shr<PT_IntAPS, PT_IntAP>(S, CodePtr());
50418}
50419bool EvalEmitter::emitShrIntAPSIntAPS(SourceInfo L) {
50420 if (!isActive()) return true;
50421 CurrentSource = L;
50422 return Shr<PT_IntAPS, PT_IntAPS>(S, CodePtr());
50423}
50424#endif
50425#ifdef GET_OPCODE_NAMES
50426OP_SideEffect,
50427#endif
50428#ifdef GET_INTERPFN_LIST
50429&Interp_SideEffect,
50430#endif
50431#ifdef GET_INTERPFN_DISPATCHERS
50432PRESERVE_NONE
50433static bool Interp_SideEffect(InterpState &S) {
50434 if (!SideEffect(S)) return false;
50435#if USE_TAILCALLS
50436 MUSTTAIL return InterpNext(S);
50437#else
50438 return true;
50439#endif
50440}
50441#endif
50442#ifdef GET_DISASM
50443case OP_SideEffect:
50444 Text.Op = PrintName("SideEffect");
50445 break;
50446#endif
50447#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
50448bool emitSideEffect(SourceInfo);
50449#endif
50450#ifdef GET_LINK_IMPL
50451bool ByteCodeEmitter::emitSideEffect(SourceInfo L) {
50452 return emitOp<>(OP_SideEffect, L);
50453}
50454#endif
50455#ifdef GET_EVAL_IMPL
50456bool EvalEmitter::emitSideEffect(SourceInfo L) {
50457 if (!isActive()) return true;
50458 CurrentSource = L;
50459 return SideEffect(S);
50460}
50461#endif
50462#ifdef GET_OPCODE_NAMES
50463OP_SizelessVectorElementSize,
50464#endif
50465#ifdef GET_INTERPFN_LIST
50466&Interp_SizelessVectorElementSize,
50467#endif
50468#ifdef GET_INTERPFN_DISPATCHERS
50469PRESERVE_NONE
50470static bool Interp_SizelessVectorElementSize(InterpState &S) {
50471 if (!SizelessVectorElementSize(S, S.PC)) return false;
50472#if USE_TAILCALLS
50473 MUSTTAIL return InterpNext(S);
50474#else
50475 return true;
50476#endif
50477}
50478#endif
50479#ifdef GET_DISASM
50480case OP_SizelessVectorElementSize:
50481 Text.Op = PrintName("SizelessVectorElementSize");
50482 break;
50483#endif
50484#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
50485bool emitSizelessVectorElementSize(SourceInfo);
50486#endif
50487#ifdef GET_LINK_IMPL
50488bool ByteCodeEmitter::emitSizelessVectorElementSize(SourceInfo L) {
50489 return emitOp<>(OP_SizelessVectorElementSize, L);
50490}
50491#endif
50492#ifdef GET_EVAL_IMPL
50493bool EvalEmitter::emitSizelessVectorElementSize(SourceInfo L) {
50494 if (!isActive()) return true;
50495 CurrentSource = L;
50496 return SizelessVectorElementSize(S, CodePtr());
50497}
50498#endif
50499#ifdef GET_OPCODE_NAMES
50500OP_StartInit,
50501#endif
50502#ifdef GET_INTERPFN_LIST
50503&Interp_StartInit,
50504#endif
50505#ifdef GET_INTERPFN_DISPATCHERS
50506PRESERVE_NONE
50507static bool Interp_StartInit(InterpState &S) {
50508 StartInit(S);
50509#if USE_TAILCALLS
50510 MUSTTAIL return InterpNext(S);
50511#else
50512 return true;
50513#endif
50514}
50515#endif
50516#ifdef GET_DISASM
50517case OP_StartInit:
50518 Text.Op = PrintName("StartInit");
50519 break;
50520#endif
50521#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
50522bool emitStartInit(SourceInfo);
50523#endif
50524#ifdef GET_LINK_IMPL
50525bool ByteCodeEmitter::emitStartInit(SourceInfo L) {
50526 return emitOp<>(OP_StartInit, L);
50527}
50528#endif
50529#ifdef GET_EVAL_IMPL
50530bool EvalEmitter::emitStartInit(SourceInfo L) {
50531 if (!isActive()) return true;
50532 CurrentSource = L;
50533 return StartInit(S);
50534}
50535#endif
50536#ifdef GET_OPCODE_NAMES
50537OP_StartSpeculation,
50538#endif
50539#ifdef GET_INTERPFN_LIST
50540&Interp_StartSpeculation,
50541#endif
50542#ifdef GET_INTERPFN_DISPATCHERS
50543PRESERVE_NONE
50544static bool Interp_StartSpeculation(InterpState &S) {
50545 StartSpeculation(S);
50546#if USE_TAILCALLS
50547 MUSTTAIL return InterpNext(S);
50548#else
50549 return true;
50550#endif
50551}
50552#endif
50553#ifdef GET_DISASM
50554case OP_StartSpeculation:
50555 Text.Op = PrintName("StartSpeculation");
50556 break;
50557#endif
50558#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
50559bool emitStartSpeculation(SourceInfo);
50560#endif
50561#ifdef GET_LINK_IMPL
50562bool ByteCodeEmitter::emitStartSpeculation(SourceInfo L) {
50563 return emitOp<>(OP_StartSpeculation, L);
50564}
50565#endif
50566#ifdef GET_EVAL_IMPL
50567bool EvalEmitter::emitStartSpeculation(SourceInfo L) {
50568 if (!isActive()) return true;
50569 CurrentSource = L;
50570 return StartSpeculation(S);
50571}
50572#endif
50573#ifdef GET_OPCODE_NAMES
50574OP_StartThisLifetime,
50575#endif
50576#ifdef GET_INTERPFN_LIST
50577&Interp_StartThisLifetime,
50578#endif
50579#ifdef GET_INTERPFN_DISPATCHERS
50580PRESERVE_NONE
50581static bool Interp_StartThisLifetime(InterpState &S) {
50582 if (!StartThisLifetime(S)) return false;
50583#if USE_TAILCALLS
50584 MUSTTAIL return InterpNext(S);
50585#else
50586 return true;
50587#endif
50588}
50589#endif
50590#ifdef GET_DISASM
50591case OP_StartThisLifetime:
50592 Text.Op = PrintName("StartThisLifetime");
50593 break;
50594#endif
50595#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
50596bool emitStartThisLifetime(SourceInfo);
50597#endif
50598#ifdef GET_LINK_IMPL
50599bool ByteCodeEmitter::emitStartThisLifetime(SourceInfo L) {
50600 return emitOp<>(OP_StartThisLifetime, L);
50601}
50602#endif
50603#ifdef GET_EVAL_IMPL
50604bool EvalEmitter::emitStartThisLifetime(SourceInfo L) {
50605 if (!isActive()) return true;
50606 CurrentSource = L;
50607 return StartThisLifetime(S);
50608}
50609#endif
50610#ifdef GET_OPCODE_NAMES
50611OP_StartThisLifetime1,
50612#endif
50613#ifdef GET_INTERPFN_LIST
50614&Interp_StartThisLifetime1,
50615#endif
50616#ifdef GET_INTERPFN_DISPATCHERS
50617PRESERVE_NONE
50618static bool Interp_StartThisLifetime1(InterpState &S) {
50619 if (!StartThisLifetime1(S)) return false;
50620#if USE_TAILCALLS
50621 MUSTTAIL return InterpNext(S);
50622#else
50623 return true;
50624#endif
50625}
50626#endif
50627#ifdef GET_DISASM
50628case OP_StartThisLifetime1:
50629 Text.Op = PrintName("StartThisLifetime1");
50630 break;
50631#endif
50632#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
50633bool emitStartThisLifetime1(SourceInfo);
50634#endif
50635#ifdef GET_LINK_IMPL
50636bool ByteCodeEmitter::emitStartThisLifetime1(SourceInfo L) {
50637 return emitOp<>(OP_StartThisLifetime1, L);
50638}
50639#endif
50640#ifdef GET_EVAL_IMPL
50641bool EvalEmitter::emitStartThisLifetime1(SourceInfo L) {
50642 if (!isActive()) return true;
50643 CurrentSource = L;
50644 return StartThisLifetime1(S);
50645}
50646#endif
50647#ifdef GET_OPCODE_NAMES
50648OP_StoreSint8,
50649OP_StoreUint8,
50650OP_StoreSint16,
50651OP_StoreUint16,
50652OP_StoreSint32,
50653OP_StoreUint32,
50654OP_StoreSint64,
50655OP_StoreUint64,
50656OP_StoreIntAP,
50657OP_StoreIntAPS,
50658OP_StoreBool,
50659OP_StoreFixedPoint,
50660OP_StorePtr,
50661OP_StoreMemberPtr,
50662OP_StoreFloat,
50663#endif
50664#ifdef GET_INTERPFN_LIST
50665&Interp_StoreSint8,
50666&Interp_StoreUint8,
50667&Interp_StoreSint16,
50668&Interp_StoreUint16,
50669&Interp_StoreSint32,
50670&Interp_StoreUint32,
50671&Interp_StoreSint64,
50672&Interp_StoreUint64,
50673&Interp_StoreIntAP,
50674&Interp_StoreIntAPS,
50675&Interp_StoreBool,
50676&Interp_StoreFixedPoint,
50677&Interp_StorePtr,
50678&Interp_StoreMemberPtr,
50679&Interp_StoreFloat,
50680#endif
50681#ifdef GET_INTERPFN_DISPATCHERS
50682PRESERVE_NONE
50683static bool Interp_StoreSint8(InterpState &S) {
50684 if (!Store<PT_Sint8>(S, S.PC)) return false;
50685#if USE_TAILCALLS
50686 MUSTTAIL return InterpNext(S);
50687#else
50688 return true;
50689#endif
50690}
50691PRESERVE_NONE
50692static bool Interp_StoreUint8(InterpState &S) {
50693 if (!Store<PT_Uint8>(S, S.PC)) return false;
50694#if USE_TAILCALLS
50695 MUSTTAIL return InterpNext(S);
50696#else
50697 return true;
50698#endif
50699}
50700PRESERVE_NONE
50701static bool Interp_StoreSint16(InterpState &S) {
50702 if (!Store<PT_Sint16>(S, S.PC)) return false;
50703#if USE_TAILCALLS
50704 MUSTTAIL return InterpNext(S);
50705#else
50706 return true;
50707#endif
50708}
50709PRESERVE_NONE
50710static bool Interp_StoreUint16(InterpState &S) {
50711 if (!Store<PT_Uint16>(S, S.PC)) return false;
50712#if USE_TAILCALLS
50713 MUSTTAIL return InterpNext(S);
50714#else
50715 return true;
50716#endif
50717}
50718PRESERVE_NONE
50719static bool Interp_StoreSint32(InterpState &S) {
50720 if (!Store<PT_Sint32>(S, S.PC)) return false;
50721#if USE_TAILCALLS
50722 MUSTTAIL return InterpNext(S);
50723#else
50724 return true;
50725#endif
50726}
50727PRESERVE_NONE
50728static bool Interp_StoreUint32(InterpState &S) {
50729 if (!Store<PT_Uint32>(S, S.PC)) return false;
50730#if USE_TAILCALLS
50731 MUSTTAIL return InterpNext(S);
50732#else
50733 return true;
50734#endif
50735}
50736PRESERVE_NONE
50737static bool Interp_StoreSint64(InterpState &S) {
50738 if (!Store<PT_Sint64>(S, S.PC)) return false;
50739#if USE_TAILCALLS
50740 MUSTTAIL return InterpNext(S);
50741#else
50742 return true;
50743#endif
50744}
50745PRESERVE_NONE
50746static bool Interp_StoreUint64(InterpState &S) {
50747 if (!Store<PT_Uint64>(S, S.PC)) return false;
50748#if USE_TAILCALLS
50749 MUSTTAIL return InterpNext(S);
50750#else
50751 return true;
50752#endif
50753}
50754PRESERVE_NONE
50755static bool Interp_StoreIntAP(InterpState &S) {
50756 if (!Store<PT_IntAP>(S, S.PC)) return false;
50757#if USE_TAILCALLS
50758 MUSTTAIL return InterpNext(S);
50759#else
50760 return true;
50761#endif
50762}
50763PRESERVE_NONE
50764static bool Interp_StoreIntAPS(InterpState &S) {
50765 if (!Store<PT_IntAPS>(S, S.PC)) return false;
50766#if USE_TAILCALLS
50767 MUSTTAIL return InterpNext(S);
50768#else
50769 return true;
50770#endif
50771}
50772PRESERVE_NONE
50773static bool Interp_StoreBool(InterpState &S) {
50774 if (!Store<PT_Bool>(S, S.PC)) return false;
50775#if USE_TAILCALLS
50776 MUSTTAIL return InterpNext(S);
50777#else
50778 return true;
50779#endif
50780}
50781PRESERVE_NONE
50782static bool Interp_StoreFixedPoint(InterpState &S) {
50783 if (!Store<PT_FixedPoint>(S, S.PC)) return false;
50784#if USE_TAILCALLS
50785 MUSTTAIL return InterpNext(S);
50786#else
50787 return true;
50788#endif
50789}
50790PRESERVE_NONE
50791static bool Interp_StorePtr(InterpState &S) {
50792 if (!Store<PT_Ptr>(S, S.PC)) return false;
50793#if USE_TAILCALLS
50794 MUSTTAIL return InterpNext(S);
50795#else
50796 return true;
50797#endif
50798}
50799PRESERVE_NONE
50800static bool Interp_StoreMemberPtr(InterpState &S) {
50801 if (!Store<PT_MemberPtr>(S, S.PC)) return false;
50802#if USE_TAILCALLS
50803 MUSTTAIL return InterpNext(S);
50804#else
50805 return true;
50806#endif
50807}
50808PRESERVE_NONE
50809static bool Interp_StoreFloat(InterpState &S) {
50810 if (!Store<PT_Float>(S, S.PC)) return false;
50811#if USE_TAILCALLS
50812 MUSTTAIL return InterpNext(S);
50813#else
50814 return true;
50815#endif
50816}
50817#endif
50818#ifdef GET_DISASM
50819case OP_StoreSint8:
50820 Text.Op = PrintName("StoreSint8");
50821 break;
50822case OP_StoreUint8:
50823 Text.Op = PrintName("StoreUint8");
50824 break;
50825case OP_StoreSint16:
50826 Text.Op = PrintName("StoreSint16");
50827 break;
50828case OP_StoreUint16:
50829 Text.Op = PrintName("StoreUint16");
50830 break;
50831case OP_StoreSint32:
50832 Text.Op = PrintName("StoreSint32");
50833 break;
50834case OP_StoreUint32:
50835 Text.Op = PrintName("StoreUint32");
50836 break;
50837case OP_StoreSint64:
50838 Text.Op = PrintName("StoreSint64");
50839 break;
50840case OP_StoreUint64:
50841 Text.Op = PrintName("StoreUint64");
50842 break;
50843case OP_StoreIntAP:
50844 Text.Op = PrintName("StoreIntAP");
50845 break;
50846case OP_StoreIntAPS:
50847 Text.Op = PrintName("StoreIntAPS");
50848 break;
50849case OP_StoreBool:
50850 Text.Op = PrintName("StoreBool");
50851 break;
50852case OP_StoreFixedPoint:
50853 Text.Op = PrintName("StoreFixedPoint");
50854 break;
50855case OP_StorePtr:
50856 Text.Op = PrintName("StorePtr");
50857 break;
50858case OP_StoreMemberPtr:
50859 Text.Op = PrintName("StoreMemberPtr");
50860 break;
50861case OP_StoreFloat:
50862 Text.Op = PrintName("StoreFloat");
50863 break;
50864#endif
50865#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
50866bool emitStoreSint8(SourceInfo);
50867bool emitStoreUint8(SourceInfo);
50868bool emitStoreSint16(SourceInfo);
50869bool emitStoreUint16(SourceInfo);
50870bool emitStoreSint32(SourceInfo);
50871bool emitStoreUint32(SourceInfo);
50872bool emitStoreSint64(SourceInfo);
50873bool emitStoreUint64(SourceInfo);
50874bool emitStoreIntAP(SourceInfo);
50875bool emitStoreIntAPS(SourceInfo);
50876bool emitStoreBool(SourceInfo);
50877bool emitStoreFixedPoint(SourceInfo);
50878bool emitStorePtr(SourceInfo);
50879bool emitStoreMemberPtr(SourceInfo);
50880bool emitStoreFloat(SourceInfo);
50881#endif
50882#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
50883[[nodiscard]] bool emitStore(PrimType, SourceInfo I);
50884#endif
50885#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
50886bool
50887#if defined(GET_EVAL_IMPL)
50888EvalEmitter
50889#else
50890ByteCodeEmitter
50891#endif
50892::emitStore(PrimType T0, SourceInfo I) {
50893 switch (T0) {
50894 case PT_Sint8:
50895 return emitStoreSint8(I);
50896 case PT_Uint8:
50897 return emitStoreUint8(I);
50898 case PT_Sint16:
50899 return emitStoreSint16(I);
50900 case PT_Uint16:
50901 return emitStoreUint16(I);
50902 case PT_Sint32:
50903 return emitStoreSint32(I);
50904 case PT_Uint32:
50905 return emitStoreUint32(I);
50906 case PT_Sint64:
50907 return emitStoreSint64(I);
50908 case PT_Uint64:
50909 return emitStoreUint64(I);
50910 case PT_IntAP:
50911 return emitStoreIntAP(I);
50912 case PT_IntAPS:
50913 return emitStoreIntAPS(I);
50914 case PT_Bool:
50915 return emitStoreBool(I);
50916 case PT_FixedPoint:
50917 return emitStoreFixedPoint(I);
50918 case PT_Ptr:
50919 return emitStorePtr(I);
50920 case PT_MemberPtr:
50921 return emitStoreMemberPtr(I);
50922 case PT_Float:
50923 return emitStoreFloat(I);
50924 }
50925 llvm_unreachable("invalid enum value");
50926}
50927#endif
50928#ifdef GET_LINK_IMPL
50929bool ByteCodeEmitter::emitStoreSint8(SourceInfo L) {
50930 return emitOp<>(OP_StoreSint8, L);
50931}
50932bool ByteCodeEmitter::emitStoreUint8(SourceInfo L) {
50933 return emitOp<>(OP_StoreUint8, L);
50934}
50935bool ByteCodeEmitter::emitStoreSint16(SourceInfo L) {
50936 return emitOp<>(OP_StoreSint16, L);
50937}
50938bool ByteCodeEmitter::emitStoreUint16(SourceInfo L) {
50939 return emitOp<>(OP_StoreUint16, L);
50940}
50941bool ByteCodeEmitter::emitStoreSint32(SourceInfo L) {
50942 return emitOp<>(OP_StoreSint32, L);
50943}
50944bool ByteCodeEmitter::emitStoreUint32(SourceInfo L) {
50945 return emitOp<>(OP_StoreUint32, L);
50946}
50947bool ByteCodeEmitter::emitStoreSint64(SourceInfo L) {
50948 return emitOp<>(OP_StoreSint64, L);
50949}
50950bool ByteCodeEmitter::emitStoreUint64(SourceInfo L) {
50951 return emitOp<>(OP_StoreUint64, L);
50952}
50953bool ByteCodeEmitter::emitStoreIntAP(SourceInfo L) {
50954 return emitOp<>(OP_StoreIntAP, L);
50955}
50956bool ByteCodeEmitter::emitStoreIntAPS(SourceInfo L) {
50957 return emitOp<>(OP_StoreIntAPS, L);
50958}
50959bool ByteCodeEmitter::emitStoreBool(SourceInfo L) {
50960 return emitOp<>(OP_StoreBool, L);
50961}
50962bool ByteCodeEmitter::emitStoreFixedPoint(SourceInfo L) {
50963 return emitOp<>(OP_StoreFixedPoint, L);
50964}
50965bool ByteCodeEmitter::emitStorePtr(SourceInfo L) {
50966 return emitOp<>(OP_StorePtr, L);
50967}
50968bool ByteCodeEmitter::emitStoreMemberPtr(SourceInfo L) {
50969 return emitOp<>(OP_StoreMemberPtr, L);
50970}
50971bool ByteCodeEmitter::emitStoreFloat(SourceInfo L) {
50972 return emitOp<>(OP_StoreFloat, L);
50973}
50974#endif
50975#ifdef GET_EVAL_IMPL
50976bool EvalEmitter::emitStoreSint8(SourceInfo L) {
50977 if (!isActive()) return true;
50978 CurrentSource = L;
50979 return Store<PT_Sint8>(S, CodePtr());
50980}
50981bool EvalEmitter::emitStoreUint8(SourceInfo L) {
50982 if (!isActive()) return true;
50983 CurrentSource = L;
50984 return Store<PT_Uint8>(S, CodePtr());
50985}
50986bool EvalEmitter::emitStoreSint16(SourceInfo L) {
50987 if (!isActive()) return true;
50988 CurrentSource = L;
50989 return Store<PT_Sint16>(S, CodePtr());
50990}
50991bool EvalEmitter::emitStoreUint16(SourceInfo L) {
50992 if (!isActive()) return true;
50993 CurrentSource = L;
50994 return Store<PT_Uint16>(S, CodePtr());
50995}
50996bool EvalEmitter::emitStoreSint32(SourceInfo L) {
50997 if (!isActive()) return true;
50998 CurrentSource = L;
50999 return Store<PT_Sint32>(S, CodePtr());
51000}
51001bool EvalEmitter::emitStoreUint32(SourceInfo L) {
51002 if (!isActive()) return true;
51003 CurrentSource = L;
51004 return Store<PT_Uint32>(S, CodePtr());
51005}
51006bool EvalEmitter::emitStoreSint64(SourceInfo L) {
51007 if (!isActive()) return true;
51008 CurrentSource = L;
51009 return Store<PT_Sint64>(S, CodePtr());
51010}
51011bool EvalEmitter::emitStoreUint64(SourceInfo L) {
51012 if (!isActive()) return true;
51013 CurrentSource = L;
51014 return Store<PT_Uint64>(S, CodePtr());
51015}
51016bool EvalEmitter::emitStoreIntAP(SourceInfo L) {
51017 if (!isActive()) return true;
51018 CurrentSource = L;
51019 return Store<PT_IntAP>(S, CodePtr());
51020}
51021bool EvalEmitter::emitStoreIntAPS(SourceInfo L) {
51022 if (!isActive()) return true;
51023 CurrentSource = L;
51024 return Store<PT_IntAPS>(S, CodePtr());
51025}
51026bool EvalEmitter::emitStoreBool(SourceInfo L) {
51027 if (!isActive()) return true;
51028 CurrentSource = L;
51029 return Store<PT_Bool>(S, CodePtr());
51030}
51031bool EvalEmitter::emitStoreFixedPoint(SourceInfo L) {
51032 if (!isActive()) return true;
51033 CurrentSource = L;
51034 return Store<PT_FixedPoint>(S, CodePtr());
51035}
51036bool EvalEmitter::emitStorePtr(SourceInfo L) {
51037 if (!isActive()) return true;
51038 CurrentSource = L;
51039 return Store<PT_Ptr>(S, CodePtr());
51040}
51041bool EvalEmitter::emitStoreMemberPtr(SourceInfo L) {
51042 if (!isActive()) return true;
51043 CurrentSource = L;
51044 return Store<PT_MemberPtr>(S, CodePtr());
51045}
51046bool EvalEmitter::emitStoreFloat(SourceInfo L) {
51047 if (!isActive()) return true;
51048 CurrentSource = L;
51049 return Store<PT_Float>(S, CodePtr());
51050}
51051#endif
51052#ifdef GET_OPCODE_NAMES
51053OP_StoreActivateSint8,
51054OP_StoreActivateUint8,
51055OP_StoreActivateSint16,
51056OP_StoreActivateUint16,
51057OP_StoreActivateSint32,
51058OP_StoreActivateUint32,
51059OP_StoreActivateSint64,
51060OP_StoreActivateUint64,
51061OP_StoreActivateIntAP,
51062OP_StoreActivateIntAPS,
51063OP_StoreActivateBool,
51064OP_StoreActivateFixedPoint,
51065OP_StoreActivatePtr,
51066OP_StoreActivateMemberPtr,
51067OP_StoreActivateFloat,
51068#endif
51069#ifdef GET_INTERPFN_LIST
51070&Interp_StoreActivateSint8,
51071&Interp_StoreActivateUint8,
51072&Interp_StoreActivateSint16,
51073&Interp_StoreActivateUint16,
51074&Interp_StoreActivateSint32,
51075&Interp_StoreActivateUint32,
51076&Interp_StoreActivateSint64,
51077&Interp_StoreActivateUint64,
51078&Interp_StoreActivateIntAP,
51079&Interp_StoreActivateIntAPS,
51080&Interp_StoreActivateBool,
51081&Interp_StoreActivateFixedPoint,
51082&Interp_StoreActivatePtr,
51083&Interp_StoreActivateMemberPtr,
51084&Interp_StoreActivateFloat,
51085#endif
51086#ifdef GET_INTERPFN_DISPATCHERS
51087PRESERVE_NONE
51088static bool Interp_StoreActivateSint8(InterpState &S) {
51089 if (!StoreActivate<PT_Sint8>(S, S.PC)) return false;
51090#if USE_TAILCALLS
51091 MUSTTAIL return InterpNext(S);
51092#else
51093 return true;
51094#endif
51095}
51096PRESERVE_NONE
51097static bool Interp_StoreActivateUint8(InterpState &S) {
51098 if (!StoreActivate<PT_Uint8>(S, S.PC)) return false;
51099#if USE_TAILCALLS
51100 MUSTTAIL return InterpNext(S);
51101#else
51102 return true;
51103#endif
51104}
51105PRESERVE_NONE
51106static bool Interp_StoreActivateSint16(InterpState &S) {
51107 if (!StoreActivate<PT_Sint16>(S, S.PC)) return false;
51108#if USE_TAILCALLS
51109 MUSTTAIL return InterpNext(S);
51110#else
51111 return true;
51112#endif
51113}
51114PRESERVE_NONE
51115static bool Interp_StoreActivateUint16(InterpState &S) {
51116 if (!StoreActivate<PT_Uint16>(S, S.PC)) return false;
51117#if USE_TAILCALLS
51118 MUSTTAIL return InterpNext(S);
51119#else
51120 return true;
51121#endif
51122}
51123PRESERVE_NONE
51124static bool Interp_StoreActivateSint32(InterpState &S) {
51125 if (!StoreActivate<PT_Sint32>(S, S.PC)) return false;
51126#if USE_TAILCALLS
51127 MUSTTAIL return InterpNext(S);
51128#else
51129 return true;
51130#endif
51131}
51132PRESERVE_NONE
51133static bool Interp_StoreActivateUint32(InterpState &S) {
51134 if (!StoreActivate<PT_Uint32>(S, S.PC)) return false;
51135#if USE_TAILCALLS
51136 MUSTTAIL return InterpNext(S);
51137#else
51138 return true;
51139#endif
51140}
51141PRESERVE_NONE
51142static bool Interp_StoreActivateSint64(InterpState &S) {
51143 if (!StoreActivate<PT_Sint64>(S, S.PC)) return false;
51144#if USE_TAILCALLS
51145 MUSTTAIL return InterpNext(S);
51146#else
51147 return true;
51148#endif
51149}
51150PRESERVE_NONE
51151static bool Interp_StoreActivateUint64(InterpState &S) {
51152 if (!StoreActivate<PT_Uint64>(S, S.PC)) return false;
51153#if USE_TAILCALLS
51154 MUSTTAIL return InterpNext(S);
51155#else
51156 return true;
51157#endif
51158}
51159PRESERVE_NONE
51160static bool Interp_StoreActivateIntAP(InterpState &S) {
51161 if (!StoreActivate<PT_IntAP>(S, S.PC)) return false;
51162#if USE_TAILCALLS
51163 MUSTTAIL return InterpNext(S);
51164#else
51165 return true;
51166#endif
51167}
51168PRESERVE_NONE
51169static bool Interp_StoreActivateIntAPS(InterpState &S) {
51170 if (!StoreActivate<PT_IntAPS>(S, S.PC)) return false;
51171#if USE_TAILCALLS
51172 MUSTTAIL return InterpNext(S);
51173#else
51174 return true;
51175#endif
51176}
51177PRESERVE_NONE
51178static bool Interp_StoreActivateBool(InterpState &S) {
51179 if (!StoreActivate<PT_Bool>(S, S.PC)) return false;
51180#if USE_TAILCALLS
51181 MUSTTAIL return InterpNext(S);
51182#else
51183 return true;
51184#endif
51185}
51186PRESERVE_NONE
51187static bool Interp_StoreActivateFixedPoint(InterpState &S) {
51188 if (!StoreActivate<PT_FixedPoint>(S, S.PC)) return false;
51189#if USE_TAILCALLS
51190 MUSTTAIL return InterpNext(S);
51191#else
51192 return true;
51193#endif
51194}
51195PRESERVE_NONE
51196static bool Interp_StoreActivatePtr(InterpState &S) {
51197 if (!StoreActivate<PT_Ptr>(S, S.PC)) return false;
51198#if USE_TAILCALLS
51199 MUSTTAIL return InterpNext(S);
51200#else
51201 return true;
51202#endif
51203}
51204PRESERVE_NONE
51205static bool Interp_StoreActivateMemberPtr(InterpState &S) {
51206 if (!StoreActivate<PT_MemberPtr>(S, S.PC)) return false;
51207#if USE_TAILCALLS
51208 MUSTTAIL return InterpNext(S);
51209#else
51210 return true;
51211#endif
51212}
51213PRESERVE_NONE
51214static bool Interp_StoreActivateFloat(InterpState &S) {
51215 if (!StoreActivate<PT_Float>(S, S.PC)) return false;
51216#if USE_TAILCALLS
51217 MUSTTAIL return InterpNext(S);
51218#else
51219 return true;
51220#endif
51221}
51222#endif
51223#ifdef GET_DISASM
51224case OP_StoreActivateSint8:
51225 Text.Op = PrintName("StoreActivateSint8");
51226 break;
51227case OP_StoreActivateUint8:
51228 Text.Op = PrintName("StoreActivateUint8");
51229 break;
51230case OP_StoreActivateSint16:
51231 Text.Op = PrintName("StoreActivateSint16");
51232 break;
51233case OP_StoreActivateUint16:
51234 Text.Op = PrintName("StoreActivateUint16");
51235 break;
51236case OP_StoreActivateSint32:
51237 Text.Op = PrintName("StoreActivateSint32");
51238 break;
51239case OP_StoreActivateUint32:
51240 Text.Op = PrintName("StoreActivateUint32");
51241 break;
51242case OP_StoreActivateSint64:
51243 Text.Op = PrintName("StoreActivateSint64");
51244 break;
51245case OP_StoreActivateUint64:
51246 Text.Op = PrintName("StoreActivateUint64");
51247 break;
51248case OP_StoreActivateIntAP:
51249 Text.Op = PrintName("StoreActivateIntAP");
51250 break;
51251case OP_StoreActivateIntAPS:
51252 Text.Op = PrintName("StoreActivateIntAPS");
51253 break;
51254case OP_StoreActivateBool:
51255 Text.Op = PrintName("StoreActivateBool");
51256 break;
51257case OP_StoreActivateFixedPoint:
51258 Text.Op = PrintName("StoreActivateFixedPoint");
51259 break;
51260case OP_StoreActivatePtr:
51261 Text.Op = PrintName("StoreActivatePtr");
51262 break;
51263case OP_StoreActivateMemberPtr:
51264 Text.Op = PrintName("StoreActivateMemberPtr");
51265 break;
51266case OP_StoreActivateFloat:
51267 Text.Op = PrintName("StoreActivateFloat");
51268 break;
51269#endif
51270#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51271bool emitStoreActivateSint8(SourceInfo);
51272bool emitStoreActivateUint8(SourceInfo);
51273bool emitStoreActivateSint16(SourceInfo);
51274bool emitStoreActivateUint16(SourceInfo);
51275bool emitStoreActivateSint32(SourceInfo);
51276bool emitStoreActivateUint32(SourceInfo);
51277bool emitStoreActivateSint64(SourceInfo);
51278bool emitStoreActivateUint64(SourceInfo);
51279bool emitStoreActivateIntAP(SourceInfo);
51280bool emitStoreActivateIntAPS(SourceInfo);
51281bool emitStoreActivateBool(SourceInfo);
51282bool emitStoreActivateFixedPoint(SourceInfo);
51283bool emitStoreActivatePtr(SourceInfo);
51284bool emitStoreActivateMemberPtr(SourceInfo);
51285bool emitStoreActivateFloat(SourceInfo);
51286#endif
51287#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51288[[nodiscard]] bool emitStoreActivate(PrimType, SourceInfo I);
51289#endif
51290#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
51291bool
51292#if defined(GET_EVAL_IMPL)
51293EvalEmitter
51294#else
51295ByteCodeEmitter
51296#endif
51297::emitStoreActivate(PrimType T0, SourceInfo I) {
51298 switch (T0) {
51299 case PT_Sint8:
51300 return emitStoreActivateSint8(I);
51301 case PT_Uint8:
51302 return emitStoreActivateUint8(I);
51303 case PT_Sint16:
51304 return emitStoreActivateSint16(I);
51305 case PT_Uint16:
51306 return emitStoreActivateUint16(I);
51307 case PT_Sint32:
51308 return emitStoreActivateSint32(I);
51309 case PT_Uint32:
51310 return emitStoreActivateUint32(I);
51311 case PT_Sint64:
51312 return emitStoreActivateSint64(I);
51313 case PT_Uint64:
51314 return emitStoreActivateUint64(I);
51315 case PT_IntAP:
51316 return emitStoreActivateIntAP(I);
51317 case PT_IntAPS:
51318 return emitStoreActivateIntAPS(I);
51319 case PT_Bool:
51320 return emitStoreActivateBool(I);
51321 case PT_FixedPoint:
51322 return emitStoreActivateFixedPoint(I);
51323 case PT_Ptr:
51324 return emitStoreActivatePtr(I);
51325 case PT_MemberPtr:
51326 return emitStoreActivateMemberPtr(I);
51327 case PT_Float:
51328 return emitStoreActivateFloat(I);
51329 }
51330 llvm_unreachable("invalid enum value");
51331}
51332#endif
51333#ifdef GET_LINK_IMPL
51334bool ByteCodeEmitter::emitStoreActivateSint8(SourceInfo L) {
51335 return emitOp<>(OP_StoreActivateSint8, L);
51336}
51337bool ByteCodeEmitter::emitStoreActivateUint8(SourceInfo L) {
51338 return emitOp<>(OP_StoreActivateUint8, L);
51339}
51340bool ByteCodeEmitter::emitStoreActivateSint16(SourceInfo L) {
51341 return emitOp<>(OP_StoreActivateSint16, L);
51342}
51343bool ByteCodeEmitter::emitStoreActivateUint16(SourceInfo L) {
51344 return emitOp<>(OP_StoreActivateUint16, L);
51345}
51346bool ByteCodeEmitter::emitStoreActivateSint32(SourceInfo L) {
51347 return emitOp<>(OP_StoreActivateSint32, L);
51348}
51349bool ByteCodeEmitter::emitStoreActivateUint32(SourceInfo L) {
51350 return emitOp<>(OP_StoreActivateUint32, L);
51351}
51352bool ByteCodeEmitter::emitStoreActivateSint64(SourceInfo L) {
51353 return emitOp<>(OP_StoreActivateSint64, L);
51354}
51355bool ByteCodeEmitter::emitStoreActivateUint64(SourceInfo L) {
51356 return emitOp<>(OP_StoreActivateUint64, L);
51357}
51358bool ByteCodeEmitter::emitStoreActivateIntAP(SourceInfo L) {
51359 return emitOp<>(OP_StoreActivateIntAP, L);
51360}
51361bool ByteCodeEmitter::emitStoreActivateIntAPS(SourceInfo L) {
51362 return emitOp<>(OP_StoreActivateIntAPS, L);
51363}
51364bool ByteCodeEmitter::emitStoreActivateBool(SourceInfo L) {
51365 return emitOp<>(OP_StoreActivateBool, L);
51366}
51367bool ByteCodeEmitter::emitStoreActivateFixedPoint(SourceInfo L) {
51368 return emitOp<>(OP_StoreActivateFixedPoint, L);
51369}
51370bool ByteCodeEmitter::emitStoreActivatePtr(SourceInfo L) {
51371 return emitOp<>(OP_StoreActivatePtr, L);
51372}
51373bool ByteCodeEmitter::emitStoreActivateMemberPtr(SourceInfo L) {
51374 return emitOp<>(OP_StoreActivateMemberPtr, L);
51375}
51376bool ByteCodeEmitter::emitStoreActivateFloat(SourceInfo L) {
51377 return emitOp<>(OP_StoreActivateFloat, L);
51378}
51379#endif
51380#ifdef GET_EVAL_IMPL
51381bool EvalEmitter::emitStoreActivateSint8(SourceInfo L) {
51382 if (!isActive()) return true;
51383 CurrentSource = L;
51384 return StoreActivate<PT_Sint8>(S, CodePtr());
51385}
51386bool EvalEmitter::emitStoreActivateUint8(SourceInfo L) {
51387 if (!isActive()) return true;
51388 CurrentSource = L;
51389 return StoreActivate<PT_Uint8>(S, CodePtr());
51390}
51391bool EvalEmitter::emitStoreActivateSint16(SourceInfo L) {
51392 if (!isActive()) return true;
51393 CurrentSource = L;
51394 return StoreActivate<PT_Sint16>(S, CodePtr());
51395}
51396bool EvalEmitter::emitStoreActivateUint16(SourceInfo L) {
51397 if (!isActive()) return true;
51398 CurrentSource = L;
51399 return StoreActivate<PT_Uint16>(S, CodePtr());
51400}
51401bool EvalEmitter::emitStoreActivateSint32(SourceInfo L) {
51402 if (!isActive()) return true;
51403 CurrentSource = L;
51404 return StoreActivate<PT_Sint32>(S, CodePtr());
51405}
51406bool EvalEmitter::emitStoreActivateUint32(SourceInfo L) {
51407 if (!isActive()) return true;
51408 CurrentSource = L;
51409 return StoreActivate<PT_Uint32>(S, CodePtr());
51410}
51411bool EvalEmitter::emitStoreActivateSint64(SourceInfo L) {
51412 if (!isActive()) return true;
51413 CurrentSource = L;
51414 return StoreActivate<PT_Sint64>(S, CodePtr());
51415}
51416bool EvalEmitter::emitStoreActivateUint64(SourceInfo L) {
51417 if (!isActive()) return true;
51418 CurrentSource = L;
51419 return StoreActivate<PT_Uint64>(S, CodePtr());
51420}
51421bool EvalEmitter::emitStoreActivateIntAP(SourceInfo L) {
51422 if (!isActive()) return true;
51423 CurrentSource = L;
51424 return StoreActivate<PT_IntAP>(S, CodePtr());
51425}
51426bool EvalEmitter::emitStoreActivateIntAPS(SourceInfo L) {
51427 if (!isActive()) return true;
51428 CurrentSource = L;
51429 return StoreActivate<PT_IntAPS>(S, CodePtr());
51430}
51431bool EvalEmitter::emitStoreActivateBool(SourceInfo L) {
51432 if (!isActive()) return true;
51433 CurrentSource = L;
51434 return StoreActivate<PT_Bool>(S, CodePtr());
51435}
51436bool EvalEmitter::emitStoreActivateFixedPoint(SourceInfo L) {
51437 if (!isActive()) return true;
51438 CurrentSource = L;
51439 return StoreActivate<PT_FixedPoint>(S, CodePtr());
51440}
51441bool EvalEmitter::emitStoreActivatePtr(SourceInfo L) {
51442 if (!isActive()) return true;
51443 CurrentSource = L;
51444 return StoreActivate<PT_Ptr>(S, CodePtr());
51445}
51446bool EvalEmitter::emitStoreActivateMemberPtr(SourceInfo L) {
51447 if (!isActive()) return true;
51448 CurrentSource = L;
51449 return StoreActivate<PT_MemberPtr>(S, CodePtr());
51450}
51451bool EvalEmitter::emitStoreActivateFloat(SourceInfo L) {
51452 if (!isActive()) return true;
51453 CurrentSource = L;
51454 return StoreActivate<PT_Float>(S, CodePtr());
51455}
51456#endif
51457#ifdef GET_OPCODE_NAMES
51458OP_StoreActivatePopSint8,
51459OP_StoreActivatePopUint8,
51460OP_StoreActivatePopSint16,
51461OP_StoreActivatePopUint16,
51462OP_StoreActivatePopSint32,
51463OP_StoreActivatePopUint32,
51464OP_StoreActivatePopSint64,
51465OP_StoreActivatePopUint64,
51466OP_StoreActivatePopIntAP,
51467OP_StoreActivatePopIntAPS,
51468OP_StoreActivatePopBool,
51469OP_StoreActivatePopFixedPoint,
51470OP_StoreActivatePopPtr,
51471OP_StoreActivatePopMemberPtr,
51472OP_StoreActivatePopFloat,
51473#endif
51474#ifdef GET_INTERPFN_LIST
51475&Interp_StoreActivatePopSint8,
51476&Interp_StoreActivatePopUint8,
51477&Interp_StoreActivatePopSint16,
51478&Interp_StoreActivatePopUint16,
51479&Interp_StoreActivatePopSint32,
51480&Interp_StoreActivatePopUint32,
51481&Interp_StoreActivatePopSint64,
51482&Interp_StoreActivatePopUint64,
51483&Interp_StoreActivatePopIntAP,
51484&Interp_StoreActivatePopIntAPS,
51485&Interp_StoreActivatePopBool,
51486&Interp_StoreActivatePopFixedPoint,
51487&Interp_StoreActivatePopPtr,
51488&Interp_StoreActivatePopMemberPtr,
51489&Interp_StoreActivatePopFloat,
51490#endif
51491#ifdef GET_INTERPFN_DISPATCHERS
51492PRESERVE_NONE
51493static bool Interp_StoreActivatePopSint8(InterpState &S) {
51494 if (!StoreActivatePop<PT_Sint8>(S, S.PC)) return false;
51495#if USE_TAILCALLS
51496 MUSTTAIL return InterpNext(S);
51497#else
51498 return true;
51499#endif
51500}
51501PRESERVE_NONE
51502static bool Interp_StoreActivatePopUint8(InterpState &S) {
51503 if (!StoreActivatePop<PT_Uint8>(S, S.PC)) return false;
51504#if USE_TAILCALLS
51505 MUSTTAIL return InterpNext(S);
51506#else
51507 return true;
51508#endif
51509}
51510PRESERVE_NONE
51511static bool Interp_StoreActivatePopSint16(InterpState &S) {
51512 if (!StoreActivatePop<PT_Sint16>(S, S.PC)) return false;
51513#if USE_TAILCALLS
51514 MUSTTAIL return InterpNext(S);
51515#else
51516 return true;
51517#endif
51518}
51519PRESERVE_NONE
51520static bool Interp_StoreActivatePopUint16(InterpState &S) {
51521 if (!StoreActivatePop<PT_Uint16>(S, S.PC)) return false;
51522#if USE_TAILCALLS
51523 MUSTTAIL return InterpNext(S);
51524#else
51525 return true;
51526#endif
51527}
51528PRESERVE_NONE
51529static bool Interp_StoreActivatePopSint32(InterpState &S) {
51530 if (!StoreActivatePop<PT_Sint32>(S, S.PC)) return false;
51531#if USE_TAILCALLS
51532 MUSTTAIL return InterpNext(S);
51533#else
51534 return true;
51535#endif
51536}
51537PRESERVE_NONE
51538static bool Interp_StoreActivatePopUint32(InterpState &S) {
51539 if (!StoreActivatePop<PT_Uint32>(S, S.PC)) return false;
51540#if USE_TAILCALLS
51541 MUSTTAIL return InterpNext(S);
51542#else
51543 return true;
51544#endif
51545}
51546PRESERVE_NONE
51547static bool Interp_StoreActivatePopSint64(InterpState &S) {
51548 if (!StoreActivatePop<PT_Sint64>(S, S.PC)) return false;
51549#if USE_TAILCALLS
51550 MUSTTAIL return InterpNext(S);
51551#else
51552 return true;
51553#endif
51554}
51555PRESERVE_NONE
51556static bool Interp_StoreActivatePopUint64(InterpState &S) {
51557 if (!StoreActivatePop<PT_Uint64>(S, S.PC)) return false;
51558#if USE_TAILCALLS
51559 MUSTTAIL return InterpNext(S);
51560#else
51561 return true;
51562#endif
51563}
51564PRESERVE_NONE
51565static bool Interp_StoreActivatePopIntAP(InterpState &S) {
51566 if (!StoreActivatePop<PT_IntAP>(S, S.PC)) return false;
51567#if USE_TAILCALLS
51568 MUSTTAIL return InterpNext(S);
51569#else
51570 return true;
51571#endif
51572}
51573PRESERVE_NONE
51574static bool Interp_StoreActivatePopIntAPS(InterpState &S) {
51575 if (!StoreActivatePop<PT_IntAPS>(S, S.PC)) return false;
51576#if USE_TAILCALLS
51577 MUSTTAIL return InterpNext(S);
51578#else
51579 return true;
51580#endif
51581}
51582PRESERVE_NONE
51583static bool Interp_StoreActivatePopBool(InterpState &S) {
51584 if (!StoreActivatePop<PT_Bool>(S, S.PC)) return false;
51585#if USE_TAILCALLS
51586 MUSTTAIL return InterpNext(S);
51587#else
51588 return true;
51589#endif
51590}
51591PRESERVE_NONE
51592static bool Interp_StoreActivatePopFixedPoint(InterpState &S) {
51593 if (!StoreActivatePop<PT_FixedPoint>(S, S.PC)) return false;
51594#if USE_TAILCALLS
51595 MUSTTAIL return InterpNext(S);
51596#else
51597 return true;
51598#endif
51599}
51600PRESERVE_NONE
51601static bool Interp_StoreActivatePopPtr(InterpState &S) {
51602 if (!StoreActivatePop<PT_Ptr>(S, S.PC)) return false;
51603#if USE_TAILCALLS
51604 MUSTTAIL return InterpNext(S);
51605#else
51606 return true;
51607#endif
51608}
51609PRESERVE_NONE
51610static bool Interp_StoreActivatePopMemberPtr(InterpState &S) {
51611 if (!StoreActivatePop<PT_MemberPtr>(S, S.PC)) return false;
51612#if USE_TAILCALLS
51613 MUSTTAIL return InterpNext(S);
51614#else
51615 return true;
51616#endif
51617}
51618PRESERVE_NONE
51619static bool Interp_StoreActivatePopFloat(InterpState &S) {
51620 if (!StoreActivatePop<PT_Float>(S, S.PC)) return false;
51621#if USE_TAILCALLS
51622 MUSTTAIL return InterpNext(S);
51623#else
51624 return true;
51625#endif
51626}
51627#endif
51628#ifdef GET_DISASM
51629case OP_StoreActivatePopSint8:
51630 Text.Op = PrintName("StoreActivatePopSint8");
51631 break;
51632case OP_StoreActivatePopUint8:
51633 Text.Op = PrintName("StoreActivatePopUint8");
51634 break;
51635case OP_StoreActivatePopSint16:
51636 Text.Op = PrintName("StoreActivatePopSint16");
51637 break;
51638case OP_StoreActivatePopUint16:
51639 Text.Op = PrintName("StoreActivatePopUint16");
51640 break;
51641case OP_StoreActivatePopSint32:
51642 Text.Op = PrintName("StoreActivatePopSint32");
51643 break;
51644case OP_StoreActivatePopUint32:
51645 Text.Op = PrintName("StoreActivatePopUint32");
51646 break;
51647case OP_StoreActivatePopSint64:
51648 Text.Op = PrintName("StoreActivatePopSint64");
51649 break;
51650case OP_StoreActivatePopUint64:
51651 Text.Op = PrintName("StoreActivatePopUint64");
51652 break;
51653case OP_StoreActivatePopIntAP:
51654 Text.Op = PrintName("StoreActivatePopIntAP");
51655 break;
51656case OP_StoreActivatePopIntAPS:
51657 Text.Op = PrintName("StoreActivatePopIntAPS");
51658 break;
51659case OP_StoreActivatePopBool:
51660 Text.Op = PrintName("StoreActivatePopBool");
51661 break;
51662case OP_StoreActivatePopFixedPoint:
51663 Text.Op = PrintName("StoreActivatePopFixedPoint");
51664 break;
51665case OP_StoreActivatePopPtr:
51666 Text.Op = PrintName("StoreActivatePopPtr");
51667 break;
51668case OP_StoreActivatePopMemberPtr:
51669 Text.Op = PrintName("StoreActivatePopMemberPtr");
51670 break;
51671case OP_StoreActivatePopFloat:
51672 Text.Op = PrintName("StoreActivatePopFloat");
51673 break;
51674#endif
51675#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51676bool emitStoreActivatePopSint8(SourceInfo);
51677bool emitStoreActivatePopUint8(SourceInfo);
51678bool emitStoreActivatePopSint16(SourceInfo);
51679bool emitStoreActivatePopUint16(SourceInfo);
51680bool emitStoreActivatePopSint32(SourceInfo);
51681bool emitStoreActivatePopUint32(SourceInfo);
51682bool emitStoreActivatePopSint64(SourceInfo);
51683bool emitStoreActivatePopUint64(SourceInfo);
51684bool emitStoreActivatePopIntAP(SourceInfo);
51685bool emitStoreActivatePopIntAPS(SourceInfo);
51686bool emitStoreActivatePopBool(SourceInfo);
51687bool emitStoreActivatePopFixedPoint(SourceInfo);
51688bool emitStoreActivatePopPtr(SourceInfo);
51689bool emitStoreActivatePopMemberPtr(SourceInfo);
51690bool emitStoreActivatePopFloat(SourceInfo);
51691#endif
51692#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51693[[nodiscard]] bool emitStoreActivatePop(PrimType, SourceInfo I);
51694#endif
51695#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
51696bool
51697#if defined(GET_EVAL_IMPL)
51698EvalEmitter
51699#else
51700ByteCodeEmitter
51701#endif
51702::emitStoreActivatePop(PrimType T0, SourceInfo I) {
51703 switch (T0) {
51704 case PT_Sint8:
51705 return emitStoreActivatePopSint8(I);
51706 case PT_Uint8:
51707 return emitStoreActivatePopUint8(I);
51708 case PT_Sint16:
51709 return emitStoreActivatePopSint16(I);
51710 case PT_Uint16:
51711 return emitStoreActivatePopUint16(I);
51712 case PT_Sint32:
51713 return emitStoreActivatePopSint32(I);
51714 case PT_Uint32:
51715 return emitStoreActivatePopUint32(I);
51716 case PT_Sint64:
51717 return emitStoreActivatePopSint64(I);
51718 case PT_Uint64:
51719 return emitStoreActivatePopUint64(I);
51720 case PT_IntAP:
51721 return emitStoreActivatePopIntAP(I);
51722 case PT_IntAPS:
51723 return emitStoreActivatePopIntAPS(I);
51724 case PT_Bool:
51725 return emitStoreActivatePopBool(I);
51726 case PT_FixedPoint:
51727 return emitStoreActivatePopFixedPoint(I);
51728 case PT_Ptr:
51729 return emitStoreActivatePopPtr(I);
51730 case PT_MemberPtr:
51731 return emitStoreActivatePopMemberPtr(I);
51732 case PT_Float:
51733 return emitStoreActivatePopFloat(I);
51734 }
51735 llvm_unreachable("invalid enum value");
51736}
51737#endif
51738#ifdef GET_LINK_IMPL
51739bool ByteCodeEmitter::emitStoreActivatePopSint8(SourceInfo L) {
51740 return emitOp<>(OP_StoreActivatePopSint8, L);
51741}
51742bool ByteCodeEmitter::emitStoreActivatePopUint8(SourceInfo L) {
51743 return emitOp<>(OP_StoreActivatePopUint8, L);
51744}
51745bool ByteCodeEmitter::emitStoreActivatePopSint16(SourceInfo L) {
51746 return emitOp<>(OP_StoreActivatePopSint16, L);
51747}
51748bool ByteCodeEmitter::emitStoreActivatePopUint16(SourceInfo L) {
51749 return emitOp<>(OP_StoreActivatePopUint16, L);
51750}
51751bool ByteCodeEmitter::emitStoreActivatePopSint32(SourceInfo L) {
51752 return emitOp<>(OP_StoreActivatePopSint32, L);
51753}
51754bool ByteCodeEmitter::emitStoreActivatePopUint32(SourceInfo L) {
51755 return emitOp<>(OP_StoreActivatePopUint32, L);
51756}
51757bool ByteCodeEmitter::emitStoreActivatePopSint64(SourceInfo L) {
51758 return emitOp<>(OP_StoreActivatePopSint64, L);
51759}
51760bool ByteCodeEmitter::emitStoreActivatePopUint64(SourceInfo L) {
51761 return emitOp<>(OP_StoreActivatePopUint64, L);
51762}
51763bool ByteCodeEmitter::emitStoreActivatePopIntAP(SourceInfo L) {
51764 return emitOp<>(OP_StoreActivatePopIntAP, L);
51765}
51766bool ByteCodeEmitter::emitStoreActivatePopIntAPS(SourceInfo L) {
51767 return emitOp<>(OP_StoreActivatePopIntAPS, L);
51768}
51769bool ByteCodeEmitter::emitStoreActivatePopBool(SourceInfo L) {
51770 return emitOp<>(OP_StoreActivatePopBool, L);
51771}
51772bool ByteCodeEmitter::emitStoreActivatePopFixedPoint(SourceInfo L) {
51773 return emitOp<>(OP_StoreActivatePopFixedPoint, L);
51774}
51775bool ByteCodeEmitter::emitStoreActivatePopPtr(SourceInfo L) {
51776 return emitOp<>(OP_StoreActivatePopPtr, L);
51777}
51778bool ByteCodeEmitter::emitStoreActivatePopMemberPtr(SourceInfo L) {
51779 return emitOp<>(OP_StoreActivatePopMemberPtr, L);
51780}
51781bool ByteCodeEmitter::emitStoreActivatePopFloat(SourceInfo L) {
51782 return emitOp<>(OP_StoreActivatePopFloat, L);
51783}
51784#endif
51785#ifdef GET_EVAL_IMPL
51786bool EvalEmitter::emitStoreActivatePopSint8(SourceInfo L) {
51787 if (!isActive()) return true;
51788 CurrentSource = L;
51789 return StoreActivatePop<PT_Sint8>(S, CodePtr());
51790}
51791bool EvalEmitter::emitStoreActivatePopUint8(SourceInfo L) {
51792 if (!isActive()) return true;
51793 CurrentSource = L;
51794 return StoreActivatePop<PT_Uint8>(S, CodePtr());
51795}
51796bool EvalEmitter::emitStoreActivatePopSint16(SourceInfo L) {
51797 if (!isActive()) return true;
51798 CurrentSource = L;
51799 return StoreActivatePop<PT_Sint16>(S, CodePtr());
51800}
51801bool EvalEmitter::emitStoreActivatePopUint16(SourceInfo L) {
51802 if (!isActive()) return true;
51803 CurrentSource = L;
51804 return StoreActivatePop<PT_Uint16>(S, CodePtr());
51805}
51806bool EvalEmitter::emitStoreActivatePopSint32(SourceInfo L) {
51807 if (!isActive()) return true;
51808 CurrentSource = L;
51809 return StoreActivatePop<PT_Sint32>(S, CodePtr());
51810}
51811bool EvalEmitter::emitStoreActivatePopUint32(SourceInfo L) {
51812 if (!isActive()) return true;
51813 CurrentSource = L;
51814 return StoreActivatePop<PT_Uint32>(S, CodePtr());
51815}
51816bool EvalEmitter::emitStoreActivatePopSint64(SourceInfo L) {
51817 if (!isActive()) return true;
51818 CurrentSource = L;
51819 return StoreActivatePop<PT_Sint64>(S, CodePtr());
51820}
51821bool EvalEmitter::emitStoreActivatePopUint64(SourceInfo L) {
51822 if (!isActive()) return true;
51823 CurrentSource = L;
51824 return StoreActivatePop<PT_Uint64>(S, CodePtr());
51825}
51826bool EvalEmitter::emitStoreActivatePopIntAP(SourceInfo L) {
51827 if (!isActive()) return true;
51828 CurrentSource = L;
51829 return StoreActivatePop<PT_IntAP>(S, CodePtr());
51830}
51831bool EvalEmitter::emitStoreActivatePopIntAPS(SourceInfo L) {
51832 if (!isActive()) return true;
51833 CurrentSource = L;
51834 return StoreActivatePop<PT_IntAPS>(S, CodePtr());
51835}
51836bool EvalEmitter::emitStoreActivatePopBool(SourceInfo L) {
51837 if (!isActive()) return true;
51838 CurrentSource = L;
51839 return StoreActivatePop<PT_Bool>(S, CodePtr());
51840}
51841bool EvalEmitter::emitStoreActivatePopFixedPoint(SourceInfo L) {
51842 if (!isActive()) return true;
51843 CurrentSource = L;
51844 return StoreActivatePop<PT_FixedPoint>(S, CodePtr());
51845}
51846bool EvalEmitter::emitStoreActivatePopPtr(SourceInfo L) {
51847 if (!isActive()) return true;
51848 CurrentSource = L;
51849 return StoreActivatePop<PT_Ptr>(S, CodePtr());
51850}
51851bool EvalEmitter::emitStoreActivatePopMemberPtr(SourceInfo L) {
51852 if (!isActive()) return true;
51853 CurrentSource = L;
51854 return StoreActivatePop<PT_MemberPtr>(S, CodePtr());
51855}
51856bool EvalEmitter::emitStoreActivatePopFloat(SourceInfo L) {
51857 if (!isActive()) return true;
51858 CurrentSource = L;
51859 return StoreActivatePop<PT_Float>(S, CodePtr());
51860}
51861#endif
51862#ifdef GET_OPCODE_NAMES
51863OP_StoreBitFieldSint8,
51864OP_StoreBitFieldUint8,
51865OP_StoreBitFieldSint16,
51866OP_StoreBitFieldUint16,
51867OP_StoreBitFieldSint32,
51868OP_StoreBitFieldUint32,
51869OP_StoreBitFieldSint64,
51870OP_StoreBitFieldUint64,
51871OP_StoreBitFieldIntAP,
51872OP_StoreBitFieldIntAPS,
51873OP_StoreBitFieldBool,
51874OP_StoreBitFieldFixedPoint,
51875#endif
51876#ifdef GET_INTERPFN_LIST
51877&Interp_StoreBitFieldSint8,
51878&Interp_StoreBitFieldUint8,
51879&Interp_StoreBitFieldSint16,
51880&Interp_StoreBitFieldUint16,
51881&Interp_StoreBitFieldSint32,
51882&Interp_StoreBitFieldUint32,
51883&Interp_StoreBitFieldSint64,
51884&Interp_StoreBitFieldUint64,
51885&Interp_StoreBitFieldIntAP,
51886&Interp_StoreBitFieldIntAPS,
51887&Interp_StoreBitFieldBool,
51888&Interp_StoreBitFieldFixedPoint,
51889#endif
51890#ifdef GET_INTERPFN_DISPATCHERS
51891PRESERVE_NONE
51892static bool Interp_StoreBitFieldSint8(InterpState &S) {
51893 if (!StoreBitField<PT_Sint8>(S, S.PC)) return false;
51894#if USE_TAILCALLS
51895 MUSTTAIL return InterpNext(S);
51896#else
51897 return true;
51898#endif
51899}
51900PRESERVE_NONE
51901static bool Interp_StoreBitFieldUint8(InterpState &S) {
51902 if (!StoreBitField<PT_Uint8>(S, S.PC)) return false;
51903#if USE_TAILCALLS
51904 MUSTTAIL return InterpNext(S);
51905#else
51906 return true;
51907#endif
51908}
51909PRESERVE_NONE
51910static bool Interp_StoreBitFieldSint16(InterpState &S) {
51911 if (!StoreBitField<PT_Sint16>(S, S.PC)) return false;
51912#if USE_TAILCALLS
51913 MUSTTAIL return InterpNext(S);
51914#else
51915 return true;
51916#endif
51917}
51918PRESERVE_NONE
51919static bool Interp_StoreBitFieldUint16(InterpState &S) {
51920 if (!StoreBitField<PT_Uint16>(S, S.PC)) return false;
51921#if USE_TAILCALLS
51922 MUSTTAIL return InterpNext(S);
51923#else
51924 return true;
51925#endif
51926}
51927PRESERVE_NONE
51928static bool Interp_StoreBitFieldSint32(InterpState &S) {
51929 if (!StoreBitField<PT_Sint32>(S, S.PC)) return false;
51930#if USE_TAILCALLS
51931 MUSTTAIL return InterpNext(S);
51932#else
51933 return true;
51934#endif
51935}
51936PRESERVE_NONE
51937static bool Interp_StoreBitFieldUint32(InterpState &S) {
51938 if (!StoreBitField<PT_Uint32>(S, S.PC)) return false;
51939#if USE_TAILCALLS
51940 MUSTTAIL return InterpNext(S);
51941#else
51942 return true;
51943#endif
51944}
51945PRESERVE_NONE
51946static bool Interp_StoreBitFieldSint64(InterpState &S) {
51947 if (!StoreBitField<PT_Sint64>(S, S.PC)) return false;
51948#if USE_TAILCALLS
51949 MUSTTAIL return InterpNext(S);
51950#else
51951 return true;
51952#endif
51953}
51954PRESERVE_NONE
51955static bool Interp_StoreBitFieldUint64(InterpState &S) {
51956 if (!StoreBitField<PT_Uint64>(S, S.PC)) return false;
51957#if USE_TAILCALLS
51958 MUSTTAIL return InterpNext(S);
51959#else
51960 return true;
51961#endif
51962}
51963PRESERVE_NONE
51964static bool Interp_StoreBitFieldIntAP(InterpState &S) {
51965 if (!StoreBitField<PT_IntAP>(S, S.PC)) return false;
51966#if USE_TAILCALLS
51967 MUSTTAIL return InterpNext(S);
51968#else
51969 return true;
51970#endif
51971}
51972PRESERVE_NONE
51973static bool Interp_StoreBitFieldIntAPS(InterpState &S) {
51974 if (!StoreBitField<PT_IntAPS>(S, S.PC)) return false;
51975#if USE_TAILCALLS
51976 MUSTTAIL return InterpNext(S);
51977#else
51978 return true;
51979#endif
51980}
51981PRESERVE_NONE
51982static bool Interp_StoreBitFieldBool(InterpState &S) {
51983 if (!StoreBitField<PT_Bool>(S, S.PC)) return false;
51984#if USE_TAILCALLS
51985 MUSTTAIL return InterpNext(S);
51986#else
51987 return true;
51988#endif
51989}
51990PRESERVE_NONE
51991static bool Interp_StoreBitFieldFixedPoint(InterpState &S) {
51992 if (!StoreBitField<PT_FixedPoint>(S, S.PC)) return false;
51993#if USE_TAILCALLS
51994 MUSTTAIL return InterpNext(S);
51995#else
51996 return true;
51997#endif
51998}
51999#endif
52000#ifdef GET_DISASM
52001case OP_StoreBitFieldSint8:
52002 Text.Op = PrintName("StoreBitFieldSint8");
52003 break;
52004case OP_StoreBitFieldUint8:
52005 Text.Op = PrintName("StoreBitFieldUint8");
52006 break;
52007case OP_StoreBitFieldSint16:
52008 Text.Op = PrintName("StoreBitFieldSint16");
52009 break;
52010case OP_StoreBitFieldUint16:
52011 Text.Op = PrintName("StoreBitFieldUint16");
52012 break;
52013case OP_StoreBitFieldSint32:
52014 Text.Op = PrintName("StoreBitFieldSint32");
52015 break;
52016case OP_StoreBitFieldUint32:
52017 Text.Op = PrintName("StoreBitFieldUint32");
52018 break;
52019case OP_StoreBitFieldSint64:
52020 Text.Op = PrintName("StoreBitFieldSint64");
52021 break;
52022case OP_StoreBitFieldUint64:
52023 Text.Op = PrintName("StoreBitFieldUint64");
52024 break;
52025case OP_StoreBitFieldIntAP:
52026 Text.Op = PrintName("StoreBitFieldIntAP");
52027 break;
52028case OP_StoreBitFieldIntAPS:
52029 Text.Op = PrintName("StoreBitFieldIntAPS");
52030 break;
52031case OP_StoreBitFieldBool:
52032 Text.Op = PrintName("StoreBitFieldBool");
52033 break;
52034case OP_StoreBitFieldFixedPoint:
52035 Text.Op = PrintName("StoreBitFieldFixedPoint");
52036 break;
52037#endif
52038#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52039bool emitStoreBitFieldSint8(SourceInfo);
52040bool emitStoreBitFieldUint8(SourceInfo);
52041bool emitStoreBitFieldSint16(SourceInfo);
52042bool emitStoreBitFieldUint16(SourceInfo);
52043bool emitStoreBitFieldSint32(SourceInfo);
52044bool emitStoreBitFieldUint32(SourceInfo);
52045bool emitStoreBitFieldSint64(SourceInfo);
52046bool emitStoreBitFieldUint64(SourceInfo);
52047bool emitStoreBitFieldIntAP(SourceInfo);
52048bool emitStoreBitFieldIntAPS(SourceInfo);
52049bool emitStoreBitFieldBool(SourceInfo);
52050bool emitStoreBitFieldFixedPoint(SourceInfo);
52051#endif
52052#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52053[[nodiscard]] bool emitStoreBitField(PrimType, SourceInfo I);
52054#endif
52055#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
52056bool
52057#if defined(GET_EVAL_IMPL)
52058EvalEmitter
52059#else
52060ByteCodeEmitter
52061#endif
52062::emitStoreBitField(PrimType T0, SourceInfo I) {
52063 switch (T0) {
52064 case PT_Sint8:
52065 return emitStoreBitFieldSint8(I);
52066 case PT_Uint8:
52067 return emitStoreBitFieldUint8(I);
52068 case PT_Sint16:
52069 return emitStoreBitFieldSint16(I);
52070 case PT_Uint16:
52071 return emitStoreBitFieldUint16(I);
52072 case PT_Sint32:
52073 return emitStoreBitFieldSint32(I);
52074 case PT_Uint32:
52075 return emitStoreBitFieldUint32(I);
52076 case PT_Sint64:
52077 return emitStoreBitFieldSint64(I);
52078 case PT_Uint64:
52079 return emitStoreBitFieldUint64(I);
52080 case PT_IntAP:
52081 return emitStoreBitFieldIntAP(I);
52082 case PT_IntAPS:
52083 return emitStoreBitFieldIntAPS(I);
52084 case PT_Bool:
52085 return emitStoreBitFieldBool(I);
52086 case PT_FixedPoint:
52087 return emitStoreBitFieldFixedPoint(I);
52088 default: llvm_unreachable("invalid type: emitStoreBitField");
52089 }
52090 llvm_unreachable("invalid enum value");
52091}
52092#endif
52093#ifdef GET_LINK_IMPL
52094bool ByteCodeEmitter::emitStoreBitFieldSint8(SourceInfo L) {
52095 return emitOp<>(OP_StoreBitFieldSint8, L);
52096}
52097bool ByteCodeEmitter::emitStoreBitFieldUint8(SourceInfo L) {
52098 return emitOp<>(OP_StoreBitFieldUint8, L);
52099}
52100bool ByteCodeEmitter::emitStoreBitFieldSint16(SourceInfo L) {
52101 return emitOp<>(OP_StoreBitFieldSint16, L);
52102}
52103bool ByteCodeEmitter::emitStoreBitFieldUint16(SourceInfo L) {
52104 return emitOp<>(OP_StoreBitFieldUint16, L);
52105}
52106bool ByteCodeEmitter::emitStoreBitFieldSint32(SourceInfo L) {
52107 return emitOp<>(OP_StoreBitFieldSint32, L);
52108}
52109bool ByteCodeEmitter::emitStoreBitFieldUint32(SourceInfo L) {
52110 return emitOp<>(OP_StoreBitFieldUint32, L);
52111}
52112bool ByteCodeEmitter::emitStoreBitFieldSint64(SourceInfo L) {
52113 return emitOp<>(OP_StoreBitFieldSint64, L);
52114}
52115bool ByteCodeEmitter::emitStoreBitFieldUint64(SourceInfo L) {
52116 return emitOp<>(OP_StoreBitFieldUint64, L);
52117}
52118bool ByteCodeEmitter::emitStoreBitFieldIntAP(SourceInfo L) {
52119 return emitOp<>(OP_StoreBitFieldIntAP, L);
52120}
52121bool ByteCodeEmitter::emitStoreBitFieldIntAPS(SourceInfo L) {
52122 return emitOp<>(OP_StoreBitFieldIntAPS, L);
52123}
52124bool ByteCodeEmitter::emitStoreBitFieldBool(SourceInfo L) {
52125 return emitOp<>(OP_StoreBitFieldBool, L);
52126}
52127bool ByteCodeEmitter::emitStoreBitFieldFixedPoint(SourceInfo L) {
52128 return emitOp<>(OP_StoreBitFieldFixedPoint, L);
52129}
52130#endif
52131#ifdef GET_EVAL_IMPL
52132bool EvalEmitter::emitStoreBitFieldSint8(SourceInfo L) {
52133 if (!isActive()) return true;
52134 CurrentSource = L;
52135 return StoreBitField<PT_Sint8>(S, CodePtr());
52136}
52137bool EvalEmitter::emitStoreBitFieldUint8(SourceInfo L) {
52138 if (!isActive()) return true;
52139 CurrentSource = L;
52140 return StoreBitField<PT_Uint8>(S, CodePtr());
52141}
52142bool EvalEmitter::emitStoreBitFieldSint16(SourceInfo L) {
52143 if (!isActive()) return true;
52144 CurrentSource = L;
52145 return StoreBitField<PT_Sint16>(S, CodePtr());
52146}
52147bool EvalEmitter::emitStoreBitFieldUint16(SourceInfo L) {
52148 if (!isActive()) return true;
52149 CurrentSource = L;
52150 return StoreBitField<PT_Uint16>(S, CodePtr());
52151}
52152bool EvalEmitter::emitStoreBitFieldSint32(SourceInfo L) {
52153 if (!isActive()) return true;
52154 CurrentSource = L;
52155 return StoreBitField<PT_Sint32>(S, CodePtr());
52156}
52157bool EvalEmitter::emitStoreBitFieldUint32(SourceInfo L) {
52158 if (!isActive()) return true;
52159 CurrentSource = L;
52160 return StoreBitField<PT_Uint32>(S, CodePtr());
52161}
52162bool EvalEmitter::emitStoreBitFieldSint64(SourceInfo L) {
52163 if (!isActive()) return true;
52164 CurrentSource = L;
52165 return StoreBitField<PT_Sint64>(S, CodePtr());
52166}
52167bool EvalEmitter::emitStoreBitFieldUint64(SourceInfo L) {
52168 if (!isActive()) return true;
52169 CurrentSource = L;
52170 return StoreBitField<PT_Uint64>(S, CodePtr());
52171}
52172bool EvalEmitter::emitStoreBitFieldIntAP(SourceInfo L) {
52173 if (!isActive()) return true;
52174 CurrentSource = L;
52175 return StoreBitField<PT_IntAP>(S, CodePtr());
52176}
52177bool EvalEmitter::emitStoreBitFieldIntAPS(SourceInfo L) {
52178 if (!isActive()) return true;
52179 CurrentSource = L;
52180 return StoreBitField<PT_IntAPS>(S, CodePtr());
52181}
52182bool EvalEmitter::emitStoreBitFieldBool(SourceInfo L) {
52183 if (!isActive()) return true;
52184 CurrentSource = L;
52185 return StoreBitField<PT_Bool>(S, CodePtr());
52186}
52187bool EvalEmitter::emitStoreBitFieldFixedPoint(SourceInfo L) {
52188 if (!isActive()) return true;
52189 CurrentSource = L;
52190 return StoreBitField<PT_FixedPoint>(S, CodePtr());
52191}
52192#endif
52193#ifdef GET_OPCODE_NAMES
52194OP_StoreBitFieldActivateSint8,
52195OP_StoreBitFieldActivateUint8,
52196OP_StoreBitFieldActivateSint16,
52197OP_StoreBitFieldActivateUint16,
52198OP_StoreBitFieldActivateSint32,
52199OP_StoreBitFieldActivateUint32,
52200OP_StoreBitFieldActivateSint64,
52201OP_StoreBitFieldActivateUint64,
52202OP_StoreBitFieldActivateIntAP,
52203OP_StoreBitFieldActivateIntAPS,
52204OP_StoreBitFieldActivateBool,
52205OP_StoreBitFieldActivateFixedPoint,
52206#endif
52207#ifdef GET_INTERPFN_LIST
52208&Interp_StoreBitFieldActivateSint8,
52209&Interp_StoreBitFieldActivateUint8,
52210&Interp_StoreBitFieldActivateSint16,
52211&Interp_StoreBitFieldActivateUint16,
52212&Interp_StoreBitFieldActivateSint32,
52213&Interp_StoreBitFieldActivateUint32,
52214&Interp_StoreBitFieldActivateSint64,
52215&Interp_StoreBitFieldActivateUint64,
52216&Interp_StoreBitFieldActivateIntAP,
52217&Interp_StoreBitFieldActivateIntAPS,
52218&Interp_StoreBitFieldActivateBool,
52219&Interp_StoreBitFieldActivateFixedPoint,
52220#endif
52221#ifdef GET_INTERPFN_DISPATCHERS
52222PRESERVE_NONE
52223static bool Interp_StoreBitFieldActivateSint8(InterpState &S) {
52224 if (!StoreBitFieldActivate<PT_Sint8>(S, S.PC)) return false;
52225#if USE_TAILCALLS
52226 MUSTTAIL return InterpNext(S);
52227#else
52228 return true;
52229#endif
52230}
52231PRESERVE_NONE
52232static bool Interp_StoreBitFieldActivateUint8(InterpState &S) {
52233 if (!StoreBitFieldActivate<PT_Uint8>(S, S.PC)) return false;
52234#if USE_TAILCALLS
52235 MUSTTAIL return InterpNext(S);
52236#else
52237 return true;
52238#endif
52239}
52240PRESERVE_NONE
52241static bool Interp_StoreBitFieldActivateSint16(InterpState &S) {
52242 if (!StoreBitFieldActivate<PT_Sint16>(S, S.PC)) return false;
52243#if USE_TAILCALLS
52244 MUSTTAIL return InterpNext(S);
52245#else
52246 return true;
52247#endif
52248}
52249PRESERVE_NONE
52250static bool Interp_StoreBitFieldActivateUint16(InterpState &S) {
52251 if (!StoreBitFieldActivate<PT_Uint16>(S, S.PC)) return false;
52252#if USE_TAILCALLS
52253 MUSTTAIL return InterpNext(S);
52254#else
52255 return true;
52256#endif
52257}
52258PRESERVE_NONE
52259static bool Interp_StoreBitFieldActivateSint32(InterpState &S) {
52260 if (!StoreBitFieldActivate<PT_Sint32>(S, S.PC)) return false;
52261#if USE_TAILCALLS
52262 MUSTTAIL return InterpNext(S);
52263#else
52264 return true;
52265#endif
52266}
52267PRESERVE_NONE
52268static bool Interp_StoreBitFieldActivateUint32(InterpState &S) {
52269 if (!StoreBitFieldActivate<PT_Uint32>(S, S.PC)) return false;
52270#if USE_TAILCALLS
52271 MUSTTAIL return InterpNext(S);
52272#else
52273 return true;
52274#endif
52275}
52276PRESERVE_NONE
52277static bool Interp_StoreBitFieldActivateSint64(InterpState &S) {
52278 if (!StoreBitFieldActivate<PT_Sint64>(S, S.PC)) return false;
52279#if USE_TAILCALLS
52280 MUSTTAIL return InterpNext(S);
52281#else
52282 return true;
52283#endif
52284}
52285PRESERVE_NONE
52286static bool Interp_StoreBitFieldActivateUint64(InterpState &S) {
52287 if (!StoreBitFieldActivate<PT_Uint64>(S, S.PC)) return false;
52288#if USE_TAILCALLS
52289 MUSTTAIL return InterpNext(S);
52290#else
52291 return true;
52292#endif
52293}
52294PRESERVE_NONE
52295static bool Interp_StoreBitFieldActivateIntAP(InterpState &S) {
52296 if (!StoreBitFieldActivate<PT_IntAP>(S, S.PC)) return false;
52297#if USE_TAILCALLS
52298 MUSTTAIL return InterpNext(S);
52299#else
52300 return true;
52301#endif
52302}
52303PRESERVE_NONE
52304static bool Interp_StoreBitFieldActivateIntAPS(InterpState &S) {
52305 if (!StoreBitFieldActivate<PT_IntAPS>(S, S.PC)) return false;
52306#if USE_TAILCALLS
52307 MUSTTAIL return InterpNext(S);
52308#else
52309 return true;
52310#endif
52311}
52312PRESERVE_NONE
52313static bool Interp_StoreBitFieldActivateBool(InterpState &S) {
52314 if (!StoreBitFieldActivate<PT_Bool>(S, S.PC)) return false;
52315#if USE_TAILCALLS
52316 MUSTTAIL return InterpNext(S);
52317#else
52318 return true;
52319#endif
52320}
52321PRESERVE_NONE
52322static bool Interp_StoreBitFieldActivateFixedPoint(InterpState &S) {
52323 if (!StoreBitFieldActivate<PT_FixedPoint>(S, S.PC)) return false;
52324#if USE_TAILCALLS
52325 MUSTTAIL return InterpNext(S);
52326#else
52327 return true;
52328#endif
52329}
52330#endif
52331#ifdef GET_DISASM
52332case OP_StoreBitFieldActivateSint8:
52333 Text.Op = PrintName("StoreBitFieldActivateSint8");
52334 break;
52335case OP_StoreBitFieldActivateUint8:
52336 Text.Op = PrintName("StoreBitFieldActivateUint8");
52337 break;
52338case OP_StoreBitFieldActivateSint16:
52339 Text.Op = PrintName("StoreBitFieldActivateSint16");
52340 break;
52341case OP_StoreBitFieldActivateUint16:
52342 Text.Op = PrintName("StoreBitFieldActivateUint16");
52343 break;
52344case OP_StoreBitFieldActivateSint32:
52345 Text.Op = PrintName("StoreBitFieldActivateSint32");
52346 break;
52347case OP_StoreBitFieldActivateUint32:
52348 Text.Op = PrintName("StoreBitFieldActivateUint32");
52349 break;
52350case OP_StoreBitFieldActivateSint64:
52351 Text.Op = PrintName("StoreBitFieldActivateSint64");
52352 break;
52353case OP_StoreBitFieldActivateUint64:
52354 Text.Op = PrintName("StoreBitFieldActivateUint64");
52355 break;
52356case OP_StoreBitFieldActivateIntAP:
52357 Text.Op = PrintName("StoreBitFieldActivateIntAP");
52358 break;
52359case OP_StoreBitFieldActivateIntAPS:
52360 Text.Op = PrintName("StoreBitFieldActivateIntAPS");
52361 break;
52362case OP_StoreBitFieldActivateBool:
52363 Text.Op = PrintName("StoreBitFieldActivateBool");
52364 break;
52365case OP_StoreBitFieldActivateFixedPoint:
52366 Text.Op = PrintName("StoreBitFieldActivateFixedPoint");
52367 break;
52368#endif
52369#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52370bool emitStoreBitFieldActivateSint8(SourceInfo);
52371bool emitStoreBitFieldActivateUint8(SourceInfo);
52372bool emitStoreBitFieldActivateSint16(SourceInfo);
52373bool emitStoreBitFieldActivateUint16(SourceInfo);
52374bool emitStoreBitFieldActivateSint32(SourceInfo);
52375bool emitStoreBitFieldActivateUint32(SourceInfo);
52376bool emitStoreBitFieldActivateSint64(SourceInfo);
52377bool emitStoreBitFieldActivateUint64(SourceInfo);
52378bool emitStoreBitFieldActivateIntAP(SourceInfo);
52379bool emitStoreBitFieldActivateIntAPS(SourceInfo);
52380bool emitStoreBitFieldActivateBool(SourceInfo);
52381bool emitStoreBitFieldActivateFixedPoint(SourceInfo);
52382#endif
52383#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52384[[nodiscard]] bool emitStoreBitFieldActivate(PrimType, SourceInfo I);
52385#endif
52386#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
52387bool
52388#if defined(GET_EVAL_IMPL)
52389EvalEmitter
52390#else
52391ByteCodeEmitter
52392#endif
52393::emitStoreBitFieldActivate(PrimType T0, SourceInfo I) {
52394 switch (T0) {
52395 case PT_Sint8:
52396 return emitStoreBitFieldActivateSint8(I);
52397 case PT_Uint8:
52398 return emitStoreBitFieldActivateUint8(I);
52399 case PT_Sint16:
52400 return emitStoreBitFieldActivateSint16(I);
52401 case PT_Uint16:
52402 return emitStoreBitFieldActivateUint16(I);
52403 case PT_Sint32:
52404 return emitStoreBitFieldActivateSint32(I);
52405 case PT_Uint32:
52406 return emitStoreBitFieldActivateUint32(I);
52407 case PT_Sint64:
52408 return emitStoreBitFieldActivateSint64(I);
52409 case PT_Uint64:
52410 return emitStoreBitFieldActivateUint64(I);
52411 case PT_IntAP:
52412 return emitStoreBitFieldActivateIntAP(I);
52413 case PT_IntAPS:
52414 return emitStoreBitFieldActivateIntAPS(I);
52415 case PT_Bool:
52416 return emitStoreBitFieldActivateBool(I);
52417 case PT_FixedPoint:
52418 return emitStoreBitFieldActivateFixedPoint(I);
52419 default: llvm_unreachable("invalid type: emitStoreBitFieldActivate");
52420 }
52421 llvm_unreachable("invalid enum value");
52422}
52423#endif
52424#ifdef GET_LINK_IMPL
52425bool ByteCodeEmitter::emitStoreBitFieldActivateSint8(SourceInfo L) {
52426 return emitOp<>(OP_StoreBitFieldActivateSint8, L);
52427}
52428bool ByteCodeEmitter::emitStoreBitFieldActivateUint8(SourceInfo L) {
52429 return emitOp<>(OP_StoreBitFieldActivateUint8, L);
52430}
52431bool ByteCodeEmitter::emitStoreBitFieldActivateSint16(SourceInfo L) {
52432 return emitOp<>(OP_StoreBitFieldActivateSint16, L);
52433}
52434bool ByteCodeEmitter::emitStoreBitFieldActivateUint16(SourceInfo L) {
52435 return emitOp<>(OP_StoreBitFieldActivateUint16, L);
52436}
52437bool ByteCodeEmitter::emitStoreBitFieldActivateSint32(SourceInfo L) {
52438 return emitOp<>(OP_StoreBitFieldActivateSint32, L);
52439}
52440bool ByteCodeEmitter::emitStoreBitFieldActivateUint32(SourceInfo L) {
52441 return emitOp<>(OP_StoreBitFieldActivateUint32, L);
52442}
52443bool ByteCodeEmitter::emitStoreBitFieldActivateSint64(SourceInfo L) {
52444 return emitOp<>(OP_StoreBitFieldActivateSint64, L);
52445}
52446bool ByteCodeEmitter::emitStoreBitFieldActivateUint64(SourceInfo L) {
52447 return emitOp<>(OP_StoreBitFieldActivateUint64, L);
52448}
52449bool ByteCodeEmitter::emitStoreBitFieldActivateIntAP(SourceInfo L) {
52450 return emitOp<>(OP_StoreBitFieldActivateIntAP, L);
52451}
52452bool ByteCodeEmitter::emitStoreBitFieldActivateIntAPS(SourceInfo L) {
52453 return emitOp<>(OP_StoreBitFieldActivateIntAPS, L);
52454}
52455bool ByteCodeEmitter::emitStoreBitFieldActivateBool(SourceInfo L) {
52456 return emitOp<>(OP_StoreBitFieldActivateBool, L);
52457}
52458bool ByteCodeEmitter::emitStoreBitFieldActivateFixedPoint(SourceInfo L) {
52459 return emitOp<>(OP_StoreBitFieldActivateFixedPoint, L);
52460}
52461#endif
52462#ifdef GET_EVAL_IMPL
52463bool EvalEmitter::emitStoreBitFieldActivateSint8(SourceInfo L) {
52464 if (!isActive()) return true;
52465 CurrentSource = L;
52466 return StoreBitFieldActivate<PT_Sint8>(S, CodePtr());
52467}
52468bool EvalEmitter::emitStoreBitFieldActivateUint8(SourceInfo L) {
52469 if (!isActive()) return true;
52470 CurrentSource = L;
52471 return StoreBitFieldActivate<PT_Uint8>(S, CodePtr());
52472}
52473bool EvalEmitter::emitStoreBitFieldActivateSint16(SourceInfo L) {
52474 if (!isActive()) return true;
52475 CurrentSource = L;
52476 return StoreBitFieldActivate<PT_Sint16>(S, CodePtr());
52477}
52478bool EvalEmitter::emitStoreBitFieldActivateUint16(SourceInfo L) {
52479 if (!isActive()) return true;
52480 CurrentSource = L;
52481 return StoreBitFieldActivate<PT_Uint16>(S, CodePtr());
52482}
52483bool EvalEmitter::emitStoreBitFieldActivateSint32(SourceInfo L) {
52484 if (!isActive()) return true;
52485 CurrentSource = L;
52486 return StoreBitFieldActivate<PT_Sint32>(S, CodePtr());
52487}
52488bool EvalEmitter::emitStoreBitFieldActivateUint32(SourceInfo L) {
52489 if (!isActive()) return true;
52490 CurrentSource = L;
52491 return StoreBitFieldActivate<PT_Uint32>(S, CodePtr());
52492}
52493bool EvalEmitter::emitStoreBitFieldActivateSint64(SourceInfo L) {
52494 if (!isActive()) return true;
52495 CurrentSource = L;
52496 return StoreBitFieldActivate<PT_Sint64>(S, CodePtr());
52497}
52498bool EvalEmitter::emitStoreBitFieldActivateUint64(SourceInfo L) {
52499 if (!isActive()) return true;
52500 CurrentSource = L;
52501 return StoreBitFieldActivate<PT_Uint64>(S, CodePtr());
52502}
52503bool EvalEmitter::emitStoreBitFieldActivateIntAP(SourceInfo L) {
52504 if (!isActive()) return true;
52505 CurrentSource = L;
52506 return StoreBitFieldActivate<PT_IntAP>(S, CodePtr());
52507}
52508bool EvalEmitter::emitStoreBitFieldActivateIntAPS(SourceInfo L) {
52509 if (!isActive()) return true;
52510 CurrentSource = L;
52511 return StoreBitFieldActivate<PT_IntAPS>(S, CodePtr());
52512}
52513bool EvalEmitter::emitStoreBitFieldActivateBool(SourceInfo L) {
52514 if (!isActive()) return true;
52515 CurrentSource = L;
52516 return StoreBitFieldActivate<PT_Bool>(S, CodePtr());
52517}
52518bool EvalEmitter::emitStoreBitFieldActivateFixedPoint(SourceInfo L) {
52519 if (!isActive()) return true;
52520 CurrentSource = L;
52521 return StoreBitFieldActivate<PT_FixedPoint>(S, CodePtr());
52522}
52523#endif
52524#ifdef GET_OPCODE_NAMES
52525OP_StoreBitFieldActivatePopSint8,
52526OP_StoreBitFieldActivatePopUint8,
52527OP_StoreBitFieldActivatePopSint16,
52528OP_StoreBitFieldActivatePopUint16,
52529OP_StoreBitFieldActivatePopSint32,
52530OP_StoreBitFieldActivatePopUint32,
52531OP_StoreBitFieldActivatePopSint64,
52532OP_StoreBitFieldActivatePopUint64,
52533OP_StoreBitFieldActivatePopIntAP,
52534OP_StoreBitFieldActivatePopIntAPS,
52535OP_StoreBitFieldActivatePopBool,
52536OP_StoreBitFieldActivatePopFixedPoint,
52537#endif
52538#ifdef GET_INTERPFN_LIST
52539&Interp_StoreBitFieldActivatePopSint8,
52540&Interp_StoreBitFieldActivatePopUint8,
52541&Interp_StoreBitFieldActivatePopSint16,
52542&Interp_StoreBitFieldActivatePopUint16,
52543&Interp_StoreBitFieldActivatePopSint32,
52544&Interp_StoreBitFieldActivatePopUint32,
52545&Interp_StoreBitFieldActivatePopSint64,
52546&Interp_StoreBitFieldActivatePopUint64,
52547&Interp_StoreBitFieldActivatePopIntAP,
52548&Interp_StoreBitFieldActivatePopIntAPS,
52549&Interp_StoreBitFieldActivatePopBool,
52550&Interp_StoreBitFieldActivatePopFixedPoint,
52551#endif
52552#ifdef GET_INTERPFN_DISPATCHERS
52553PRESERVE_NONE
52554static bool Interp_StoreBitFieldActivatePopSint8(InterpState &S) {
52555 if (!StoreBitFieldActivatePop<PT_Sint8>(S, S.PC)) return false;
52556#if USE_TAILCALLS
52557 MUSTTAIL return InterpNext(S);
52558#else
52559 return true;
52560#endif
52561}
52562PRESERVE_NONE
52563static bool Interp_StoreBitFieldActivatePopUint8(InterpState &S) {
52564 if (!StoreBitFieldActivatePop<PT_Uint8>(S, S.PC)) return false;
52565#if USE_TAILCALLS
52566 MUSTTAIL return InterpNext(S);
52567#else
52568 return true;
52569#endif
52570}
52571PRESERVE_NONE
52572static bool Interp_StoreBitFieldActivatePopSint16(InterpState &S) {
52573 if (!StoreBitFieldActivatePop<PT_Sint16>(S, S.PC)) return false;
52574#if USE_TAILCALLS
52575 MUSTTAIL return InterpNext(S);
52576#else
52577 return true;
52578#endif
52579}
52580PRESERVE_NONE
52581static bool Interp_StoreBitFieldActivatePopUint16(InterpState &S) {
52582 if (!StoreBitFieldActivatePop<PT_Uint16>(S, S.PC)) return false;
52583#if USE_TAILCALLS
52584 MUSTTAIL return InterpNext(S);
52585#else
52586 return true;
52587#endif
52588}
52589PRESERVE_NONE
52590static bool Interp_StoreBitFieldActivatePopSint32(InterpState &S) {
52591 if (!StoreBitFieldActivatePop<PT_Sint32>(S, S.PC)) return false;
52592#if USE_TAILCALLS
52593 MUSTTAIL return InterpNext(S);
52594#else
52595 return true;
52596#endif
52597}
52598PRESERVE_NONE
52599static bool Interp_StoreBitFieldActivatePopUint32(InterpState &S) {
52600 if (!StoreBitFieldActivatePop<PT_Uint32>(S, S.PC)) return false;
52601#if USE_TAILCALLS
52602 MUSTTAIL return InterpNext(S);
52603#else
52604 return true;
52605#endif
52606}
52607PRESERVE_NONE
52608static bool Interp_StoreBitFieldActivatePopSint64(InterpState &S) {
52609 if (!StoreBitFieldActivatePop<PT_Sint64>(S, S.PC)) return false;
52610#if USE_TAILCALLS
52611 MUSTTAIL return InterpNext(S);
52612#else
52613 return true;
52614#endif
52615}
52616PRESERVE_NONE
52617static bool Interp_StoreBitFieldActivatePopUint64(InterpState &S) {
52618 if (!StoreBitFieldActivatePop<PT_Uint64>(S, S.PC)) return false;
52619#if USE_TAILCALLS
52620 MUSTTAIL return InterpNext(S);
52621#else
52622 return true;
52623#endif
52624}
52625PRESERVE_NONE
52626static bool Interp_StoreBitFieldActivatePopIntAP(InterpState &S) {
52627 if (!StoreBitFieldActivatePop<PT_IntAP>(S, S.PC)) return false;
52628#if USE_TAILCALLS
52629 MUSTTAIL return InterpNext(S);
52630#else
52631 return true;
52632#endif
52633}
52634PRESERVE_NONE
52635static bool Interp_StoreBitFieldActivatePopIntAPS(InterpState &S) {
52636 if (!StoreBitFieldActivatePop<PT_IntAPS>(S, S.PC)) return false;
52637#if USE_TAILCALLS
52638 MUSTTAIL return InterpNext(S);
52639#else
52640 return true;
52641#endif
52642}
52643PRESERVE_NONE
52644static bool Interp_StoreBitFieldActivatePopBool(InterpState &S) {
52645 if (!StoreBitFieldActivatePop<PT_Bool>(S, S.PC)) return false;
52646#if USE_TAILCALLS
52647 MUSTTAIL return InterpNext(S);
52648#else
52649 return true;
52650#endif
52651}
52652PRESERVE_NONE
52653static bool Interp_StoreBitFieldActivatePopFixedPoint(InterpState &S) {
52654 if (!StoreBitFieldActivatePop<PT_FixedPoint>(S, S.PC)) return false;
52655#if USE_TAILCALLS
52656 MUSTTAIL return InterpNext(S);
52657#else
52658 return true;
52659#endif
52660}
52661#endif
52662#ifdef GET_DISASM
52663case OP_StoreBitFieldActivatePopSint8:
52664 Text.Op = PrintName("StoreBitFieldActivatePopSint8");
52665 break;
52666case OP_StoreBitFieldActivatePopUint8:
52667 Text.Op = PrintName("StoreBitFieldActivatePopUint8");
52668 break;
52669case OP_StoreBitFieldActivatePopSint16:
52670 Text.Op = PrintName("StoreBitFieldActivatePopSint16");
52671 break;
52672case OP_StoreBitFieldActivatePopUint16:
52673 Text.Op = PrintName("StoreBitFieldActivatePopUint16");
52674 break;
52675case OP_StoreBitFieldActivatePopSint32:
52676 Text.Op = PrintName("StoreBitFieldActivatePopSint32");
52677 break;
52678case OP_StoreBitFieldActivatePopUint32:
52679 Text.Op = PrintName("StoreBitFieldActivatePopUint32");
52680 break;
52681case OP_StoreBitFieldActivatePopSint64:
52682 Text.Op = PrintName("StoreBitFieldActivatePopSint64");
52683 break;
52684case OP_StoreBitFieldActivatePopUint64:
52685 Text.Op = PrintName("StoreBitFieldActivatePopUint64");
52686 break;
52687case OP_StoreBitFieldActivatePopIntAP:
52688 Text.Op = PrintName("StoreBitFieldActivatePopIntAP");
52689 break;
52690case OP_StoreBitFieldActivatePopIntAPS:
52691 Text.Op = PrintName("StoreBitFieldActivatePopIntAPS");
52692 break;
52693case OP_StoreBitFieldActivatePopBool:
52694 Text.Op = PrintName("StoreBitFieldActivatePopBool");
52695 break;
52696case OP_StoreBitFieldActivatePopFixedPoint:
52697 Text.Op = PrintName("StoreBitFieldActivatePopFixedPoint");
52698 break;
52699#endif
52700#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52701bool emitStoreBitFieldActivatePopSint8(SourceInfo);
52702bool emitStoreBitFieldActivatePopUint8(SourceInfo);
52703bool emitStoreBitFieldActivatePopSint16(SourceInfo);
52704bool emitStoreBitFieldActivatePopUint16(SourceInfo);
52705bool emitStoreBitFieldActivatePopSint32(SourceInfo);
52706bool emitStoreBitFieldActivatePopUint32(SourceInfo);
52707bool emitStoreBitFieldActivatePopSint64(SourceInfo);
52708bool emitStoreBitFieldActivatePopUint64(SourceInfo);
52709bool emitStoreBitFieldActivatePopIntAP(SourceInfo);
52710bool emitStoreBitFieldActivatePopIntAPS(SourceInfo);
52711bool emitStoreBitFieldActivatePopBool(SourceInfo);
52712bool emitStoreBitFieldActivatePopFixedPoint(SourceInfo);
52713#endif
52714#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52715[[nodiscard]] bool emitStoreBitFieldActivatePop(PrimType, SourceInfo I);
52716#endif
52717#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
52718bool
52719#if defined(GET_EVAL_IMPL)
52720EvalEmitter
52721#else
52722ByteCodeEmitter
52723#endif
52724::emitStoreBitFieldActivatePop(PrimType T0, SourceInfo I) {
52725 switch (T0) {
52726 case PT_Sint8:
52727 return emitStoreBitFieldActivatePopSint8(I);
52728 case PT_Uint8:
52729 return emitStoreBitFieldActivatePopUint8(I);
52730 case PT_Sint16:
52731 return emitStoreBitFieldActivatePopSint16(I);
52732 case PT_Uint16:
52733 return emitStoreBitFieldActivatePopUint16(I);
52734 case PT_Sint32:
52735 return emitStoreBitFieldActivatePopSint32(I);
52736 case PT_Uint32:
52737 return emitStoreBitFieldActivatePopUint32(I);
52738 case PT_Sint64:
52739 return emitStoreBitFieldActivatePopSint64(I);
52740 case PT_Uint64:
52741 return emitStoreBitFieldActivatePopUint64(I);
52742 case PT_IntAP:
52743 return emitStoreBitFieldActivatePopIntAP(I);
52744 case PT_IntAPS:
52745 return emitStoreBitFieldActivatePopIntAPS(I);
52746 case PT_Bool:
52747 return emitStoreBitFieldActivatePopBool(I);
52748 case PT_FixedPoint:
52749 return emitStoreBitFieldActivatePopFixedPoint(I);
52750 default: llvm_unreachable("invalid type: emitStoreBitFieldActivatePop");
52751 }
52752 llvm_unreachable("invalid enum value");
52753}
52754#endif
52755#ifdef GET_LINK_IMPL
52756bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint8(SourceInfo L) {
52757 return emitOp<>(OP_StoreBitFieldActivatePopSint8, L);
52758}
52759bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint8(SourceInfo L) {
52760 return emitOp<>(OP_StoreBitFieldActivatePopUint8, L);
52761}
52762bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint16(SourceInfo L) {
52763 return emitOp<>(OP_StoreBitFieldActivatePopSint16, L);
52764}
52765bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint16(SourceInfo L) {
52766 return emitOp<>(OP_StoreBitFieldActivatePopUint16, L);
52767}
52768bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint32(SourceInfo L) {
52769 return emitOp<>(OP_StoreBitFieldActivatePopSint32, L);
52770}
52771bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint32(SourceInfo L) {
52772 return emitOp<>(OP_StoreBitFieldActivatePopUint32, L);
52773}
52774bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint64(SourceInfo L) {
52775 return emitOp<>(OP_StoreBitFieldActivatePopSint64, L);
52776}
52777bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint64(SourceInfo L) {
52778 return emitOp<>(OP_StoreBitFieldActivatePopUint64, L);
52779}
52780bool ByteCodeEmitter::emitStoreBitFieldActivatePopIntAP(SourceInfo L) {
52781 return emitOp<>(OP_StoreBitFieldActivatePopIntAP, L);
52782}
52783bool ByteCodeEmitter::emitStoreBitFieldActivatePopIntAPS(SourceInfo L) {
52784 return emitOp<>(OP_StoreBitFieldActivatePopIntAPS, L);
52785}
52786bool ByteCodeEmitter::emitStoreBitFieldActivatePopBool(SourceInfo L) {
52787 return emitOp<>(OP_StoreBitFieldActivatePopBool, L);
52788}
52789bool ByteCodeEmitter::emitStoreBitFieldActivatePopFixedPoint(SourceInfo L) {
52790 return emitOp<>(OP_StoreBitFieldActivatePopFixedPoint, L);
52791}
52792#endif
52793#ifdef GET_EVAL_IMPL
52794bool EvalEmitter::emitStoreBitFieldActivatePopSint8(SourceInfo L) {
52795 if (!isActive()) return true;
52796 CurrentSource = L;
52797 return StoreBitFieldActivatePop<PT_Sint8>(S, CodePtr());
52798}
52799bool EvalEmitter::emitStoreBitFieldActivatePopUint8(SourceInfo L) {
52800 if (!isActive()) return true;
52801 CurrentSource = L;
52802 return StoreBitFieldActivatePop<PT_Uint8>(S, CodePtr());
52803}
52804bool EvalEmitter::emitStoreBitFieldActivatePopSint16(SourceInfo L) {
52805 if (!isActive()) return true;
52806 CurrentSource = L;
52807 return StoreBitFieldActivatePop<PT_Sint16>(S, CodePtr());
52808}
52809bool EvalEmitter::emitStoreBitFieldActivatePopUint16(SourceInfo L) {
52810 if (!isActive()) return true;
52811 CurrentSource = L;
52812 return StoreBitFieldActivatePop<PT_Uint16>(S, CodePtr());
52813}
52814bool EvalEmitter::emitStoreBitFieldActivatePopSint32(SourceInfo L) {
52815 if (!isActive()) return true;
52816 CurrentSource = L;
52817 return StoreBitFieldActivatePop<PT_Sint32>(S, CodePtr());
52818}
52819bool EvalEmitter::emitStoreBitFieldActivatePopUint32(SourceInfo L) {
52820 if (!isActive()) return true;
52821 CurrentSource = L;
52822 return StoreBitFieldActivatePop<PT_Uint32>(S, CodePtr());
52823}
52824bool EvalEmitter::emitStoreBitFieldActivatePopSint64(SourceInfo L) {
52825 if (!isActive()) return true;
52826 CurrentSource = L;
52827 return StoreBitFieldActivatePop<PT_Sint64>(S, CodePtr());
52828}
52829bool EvalEmitter::emitStoreBitFieldActivatePopUint64(SourceInfo L) {
52830 if (!isActive()) return true;
52831 CurrentSource = L;
52832 return StoreBitFieldActivatePop<PT_Uint64>(S, CodePtr());
52833}
52834bool EvalEmitter::emitStoreBitFieldActivatePopIntAP(SourceInfo L) {
52835 if (!isActive()) return true;
52836 CurrentSource = L;
52837 return StoreBitFieldActivatePop<PT_IntAP>(S, CodePtr());
52838}
52839bool EvalEmitter::emitStoreBitFieldActivatePopIntAPS(SourceInfo L) {
52840 if (!isActive()) return true;
52841 CurrentSource = L;
52842 return StoreBitFieldActivatePop<PT_IntAPS>(S, CodePtr());
52843}
52844bool EvalEmitter::emitStoreBitFieldActivatePopBool(SourceInfo L) {
52845 if (!isActive()) return true;
52846 CurrentSource = L;
52847 return StoreBitFieldActivatePop<PT_Bool>(S, CodePtr());
52848}
52849bool EvalEmitter::emitStoreBitFieldActivatePopFixedPoint(SourceInfo L) {
52850 if (!isActive()) return true;
52851 CurrentSource = L;
52852 return StoreBitFieldActivatePop<PT_FixedPoint>(S, CodePtr());
52853}
52854#endif
52855#ifdef GET_OPCODE_NAMES
52856OP_StoreBitFieldPopSint8,
52857OP_StoreBitFieldPopUint8,
52858OP_StoreBitFieldPopSint16,
52859OP_StoreBitFieldPopUint16,
52860OP_StoreBitFieldPopSint32,
52861OP_StoreBitFieldPopUint32,
52862OP_StoreBitFieldPopSint64,
52863OP_StoreBitFieldPopUint64,
52864OP_StoreBitFieldPopIntAP,
52865OP_StoreBitFieldPopIntAPS,
52866OP_StoreBitFieldPopBool,
52867OP_StoreBitFieldPopFixedPoint,
52868#endif
52869#ifdef GET_INTERPFN_LIST
52870&Interp_StoreBitFieldPopSint8,
52871&Interp_StoreBitFieldPopUint8,
52872&Interp_StoreBitFieldPopSint16,
52873&Interp_StoreBitFieldPopUint16,
52874&Interp_StoreBitFieldPopSint32,
52875&Interp_StoreBitFieldPopUint32,
52876&Interp_StoreBitFieldPopSint64,
52877&Interp_StoreBitFieldPopUint64,
52878&Interp_StoreBitFieldPopIntAP,
52879&Interp_StoreBitFieldPopIntAPS,
52880&Interp_StoreBitFieldPopBool,
52881&Interp_StoreBitFieldPopFixedPoint,
52882#endif
52883#ifdef GET_INTERPFN_DISPATCHERS
52884PRESERVE_NONE
52885static bool Interp_StoreBitFieldPopSint8(InterpState &S) {
52886 if (!StoreBitFieldPop<PT_Sint8>(S, S.PC)) return false;
52887#if USE_TAILCALLS
52888 MUSTTAIL return InterpNext(S);
52889#else
52890 return true;
52891#endif
52892}
52893PRESERVE_NONE
52894static bool Interp_StoreBitFieldPopUint8(InterpState &S) {
52895 if (!StoreBitFieldPop<PT_Uint8>(S, S.PC)) return false;
52896#if USE_TAILCALLS
52897 MUSTTAIL return InterpNext(S);
52898#else
52899 return true;
52900#endif
52901}
52902PRESERVE_NONE
52903static bool Interp_StoreBitFieldPopSint16(InterpState &S) {
52904 if (!StoreBitFieldPop<PT_Sint16>(S, S.PC)) return false;
52905#if USE_TAILCALLS
52906 MUSTTAIL return InterpNext(S);
52907#else
52908 return true;
52909#endif
52910}
52911PRESERVE_NONE
52912static bool Interp_StoreBitFieldPopUint16(InterpState &S) {
52913 if (!StoreBitFieldPop<PT_Uint16>(S, S.PC)) return false;
52914#if USE_TAILCALLS
52915 MUSTTAIL return InterpNext(S);
52916#else
52917 return true;
52918#endif
52919}
52920PRESERVE_NONE
52921static bool Interp_StoreBitFieldPopSint32(InterpState &S) {
52922 if (!StoreBitFieldPop<PT_Sint32>(S, S.PC)) return false;
52923#if USE_TAILCALLS
52924 MUSTTAIL return InterpNext(S);
52925#else
52926 return true;
52927#endif
52928}
52929PRESERVE_NONE
52930static bool Interp_StoreBitFieldPopUint32(InterpState &S) {
52931 if (!StoreBitFieldPop<PT_Uint32>(S, S.PC)) return false;
52932#if USE_TAILCALLS
52933 MUSTTAIL return InterpNext(S);
52934#else
52935 return true;
52936#endif
52937}
52938PRESERVE_NONE
52939static bool Interp_StoreBitFieldPopSint64(InterpState &S) {
52940 if (!StoreBitFieldPop<PT_Sint64>(S, S.PC)) return false;
52941#if USE_TAILCALLS
52942 MUSTTAIL return InterpNext(S);
52943#else
52944 return true;
52945#endif
52946}
52947PRESERVE_NONE
52948static bool Interp_StoreBitFieldPopUint64(InterpState &S) {
52949 if (!StoreBitFieldPop<PT_Uint64>(S, S.PC)) return false;
52950#if USE_TAILCALLS
52951 MUSTTAIL return InterpNext(S);
52952#else
52953 return true;
52954#endif
52955}
52956PRESERVE_NONE
52957static bool Interp_StoreBitFieldPopIntAP(InterpState &S) {
52958 if (!StoreBitFieldPop<PT_IntAP>(S, S.PC)) return false;
52959#if USE_TAILCALLS
52960 MUSTTAIL return InterpNext(S);
52961#else
52962 return true;
52963#endif
52964}
52965PRESERVE_NONE
52966static bool Interp_StoreBitFieldPopIntAPS(InterpState &S) {
52967 if (!StoreBitFieldPop<PT_IntAPS>(S, S.PC)) return false;
52968#if USE_TAILCALLS
52969 MUSTTAIL return InterpNext(S);
52970#else
52971 return true;
52972#endif
52973}
52974PRESERVE_NONE
52975static bool Interp_StoreBitFieldPopBool(InterpState &S) {
52976 if (!StoreBitFieldPop<PT_Bool>(S, S.PC)) return false;
52977#if USE_TAILCALLS
52978 MUSTTAIL return InterpNext(S);
52979#else
52980 return true;
52981#endif
52982}
52983PRESERVE_NONE
52984static bool Interp_StoreBitFieldPopFixedPoint(InterpState &S) {
52985 if (!StoreBitFieldPop<PT_FixedPoint>(S, S.PC)) return false;
52986#if USE_TAILCALLS
52987 MUSTTAIL return InterpNext(S);
52988#else
52989 return true;
52990#endif
52991}
52992#endif
52993#ifdef GET_DISASM
52994case OP_StoreBitFieldPopSint8:
52995 Text.Op = PrintName("StoreBitFieldPopSint8");
52996 break;
52997case OP_StoreBitFieldPopUint8:
52998 Text.Op = PrintName("StoreBitFieldPopUint8");
52999 break;
53000case OP_StoreBitFieldPopSint16:
53001 Text.Op = PrintName("StoreBitFieldPopSint16");
53002 break;
53003case OP_StoreBitFieldPopUint16:
53004 Text.Op = PrintName("StoreBitFieldPopUint16");
53005 break;
53006case OP_StoreBitFieldPopSint32:
53007 Text.Op = PrintName("StoreBitFieldPopSint32");
53008 break;
53009case OP_StoreBitFieldPopUint32:
53010 Text.Op = PrintName("StoreBitFieldPopUint32");
53011 break;
53012case OP_StoreBitFieldPopSint64:
53013 Text.Op = PrintName("StoreBitFieldPopSint64");
53014 break;
53015case OP_StoreBitFieldPopUint64:
53016 Text.Op = PrintName("StoreBitFieldPopUint64");
53017 break;
53018case OP_StoreBitFieldPopIntAP:
53019 Text.Op = PrintName("StoreBitFieldPopIntAP");
53020 break;
53021case OP_StoreBitFieldPopIntAPS:
53022 Text.Op = PrintName("StoreBitFieldPopIntAPS");
53023 break;
53024case OP_StoreBitFieldPopBool:
53025 Text.Op = PrintName("StoreBitFieldPopBool");
53026 break;
53027case OP_StoreBitFieldPopFixedPoint:
53028 Text.Op = PrintName("StoreBitFieldPopFixedPoint");
53029 break;
53030#endif
53031#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53032bool emitStoreBitFieldPopSint8(SourceInfo);
53033bool emitStoreBitFieldPopUint8(SourceInfo);
53034bool emitStoreBitFieldPopSint16(SourceInfo);
53035bool emitStoreBitFieldPopUint16(SourceInfo);
53036bool emitStoreBitFieldPopSint32(SourceInfo);
53037bool emitStoreBitFieldPopUint32(SourceInfo);
53038bool emitStoreBitFieldPopSint64(SourceInfo);
53039bool emitStoreBitFieldPopUint64(SourceInfo);
53040bool emitStoreBitFieldPopIntAP(SourceInfo);
53041bool emitStoreBitFieldPopIntAPS(SourceInfo);
53042bool emitStoreBitFieldPopBool(SourceInfo);
53043bool emitStoreBitFieldPopFixedPoint(SourceInfo);
53044#endif
53045#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53046[[nodiscard]] bool emitStoreBitFieldPop(PrimType, SourceInfo I);
53047#endif
53048#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
53049bool
53050#if defined(GET_EVAL_IMPL)
53051EvalEmitter
53052#else
53053ByteCodeEmitter
53054#endif
53055::emitStoreBitFieldPop(PrimType T0, SourceInfo I) {
53056 switch (T0) {
53057 case PT_Sint8:
53058 return emitStoreBitFieldPopSint8(I);
53059 case PT_Uint8:
53060 return emitStoreBitFieldPopUint8(I);
53061 case PT_Sint16:
53062 return emitStoreBitFieldPopSint16(I);
53063 case PT_Uint16:
53064 return emitStoreBitFieldPopUint16(I);
53065 case PT_Sint32:
53066 return emitStoreBitFieldPopSint32(I);
53067 case PT_Uint32:
53068 return emitStoreBitFieldPopUint32(I);
53069 case PT_Sint64:
53070 return emitStoreBitFieldPopSint64(I);
53071 case PT_Uint64:
53072 return emitStoreBitFieldPopUint64(I);
53073 case PT_IntAP:
53074 return emitStoreBitFieldPopIntAP(I);
53075 case PT_IntAPS:
53076 return emitStoreBitFieldPopIntAPS(I);
53077 case PT_Bool:
53078 return emitStoreBitFieldPopBool(I);
53079 case PT_FixedPoint:
53080 return emitStoreBitFieldPopFixedPoint(I);
53081 default: llvm_unreachable("invalid type: emitStoreBitFieldPop");
53082 }
53083 llvm_unreachable("invalid enum value");
53084}
53085#endif
53086#ifdef GET_LINK_IMPL
53087bool ByteCodeEmitter::emitStoreBitFieldPopSint8(SourceInfo L) {
53088 return emitOp<>(OP_StoreBitFieldPopSint8, L);
53089}
53090bool ByteCodeEmitter::emitStoreBitFieldPopUint8(SourceInfo L) {
53091 return emitOp<>(OP_StoreBitFieldPopUint8, L);
53092}
53093bool ByteCodeEmitter::emitStoreBitFieldPopSint16(SourceInfo L) {
53094 return emitOp<>(OP_StoreBitFieldPopSint16, L);
53095}
53096bool ByteCodeEmitter::emitStoreBitFieldPopUint16(SourceInfo L) {
53097 return emitOp<>(OP_StoreBitFieldPopUint16, L);
53098}
53099bool ByteCodeEmitter::emitStoreBitFieldPopSint32(SourceInfo L) {
53100 return emitOp<>(OP_StoreBitFieldPopSint32, L);
53101}
53102bool ByteCodeEmitter::emitStoreBitFieldPopUint32(SourceInfo L) {
53103 return emitOp<>(OP_StoreBitFieldPopUint32, L);
53104}
53105bool ByteCodeEmitter::emitStoreBitFieldPopSint64(SourceInfo L) {
53106 return emitOp<>(OP_StoreBitFieldPopSint64, L);
53107}
53108bool ByteCodeEmitter::emitStoreBitFieldPopUint64(SourceInfo L) {
53109 return emitOp<>(OP_StoreBitFieldPopUint64, L);
53110}
53111bool ByteCodeEmitter::emitStoreBitFieldPopIntAP(SourceInfo L) {
53112 return emitOp<>(OP_StoreBitFieldPopIntAP, L);
53113}
53114bool ByteCodeEmitter::emitStoreBitFieldPopIntAPS(SourceInfo L) {
53115 return emitOp<>(OP_StoreBitFieldPopIntAPS, L);
53116}
53117bool ByteCodeEmitter::emitStoreBitFieldPopBool(SourceInfo L) {
53118 return emitOp<>(OP_StoreBitFieldPopBool, L);
53119}
53120bool ByteCodeEmitter::emitStoreBitFieldPopFixedPoint(SourceInfo L) {
53121 return emitOp<>(OP_StoreBitFieldPopFixedPoint, L);
53122}
53123#endif
53124#ifdef GET_EVAL_IMPL
53125bool EvalEmitter::emitStoreBitFieldPopSint8(SourceInfo L) {
53126 if (!isActive()) return true;
53127 CurrentSource = L;
53128 return StoreBitFieldPop<PT_Sint8>(S, CodePtr());
53129}
53130bool EvalEmitter::emitStoreBitFieldPopUint8(SourceInfo L) {
53131 if (!isActive()) return true;
53132 CurrentSource = L;
53133 return StoreBitFieldPop<PT_Uint8>(S, CodePtr());
53134}
53135bool EvalEmitter::emitStoreBitFieldPopSint16(SourceInfo L) {
53136 if (!isActive()) return true;
53137 CurrentSource = L;
53138 return StoreBitFieldPop<PT_Sint16>(S, CodePtr());
53139}
53140bool EvalEmitter::emitStoreBitFieldPopUint16(SourceInfo L) {
53141 if (!isActive()) return true;
53142 CurrentSource = L;
53143 return StoreBitFieldPop<PT_Uint16>(S, CodePtr());
53144}
53145bool EvalEmitter::emitStoreBitFieldPopSint32(SourceInfo L) {
53146 if (!isActive()) return true;
53147 CurrentSource = L;
53148 return StoreBitFieldPop<PT_Sint32>(S, CodePtr());
53149}
53150bool EvalEmitter::emitStoreBitFieldPopUint32(SourceInfo L) {
53151 if (!isActive()) return true;
53152 CurrentSource = L;
53153 return StoreBitFieldPop<PT_Uint32>(S, CodePtr());
53154}
53155bool EvalEmitter::emitStoreBitFieldPopSint64(SourceInfo L) {
53156 if (!isActive()) return true;
53157 CurrentSource = L;
53158 return StoreBitFieldPop<PT_Sint64>(S, CodePtr());
53159}
53160bool EvalEmitter::emitStoreBitFieldPopUint64(SourceInfo L) {
53161 if (!isActive()) return true;
53162 CurrentSource = L;
53163 return StoreBitFieldPop<PT_Uint64>(S, CodePtr());
53164}
53165bool EvalEmitter::emitStoreBitFieldPopIntAP(SourceInfo L) {
53166 if (!isActive()) return true;
53167 CurrentSource = L;
53168 return StoreBitFieldPop<PT_IntAP>(S, CodePtr());
53169}
53170bool EvalEmitter::emitStoreBitFieldPopIntAPS(SourceInfo L) {
53171 if (!isActive()) return true;
53172 CurrentSource = L;
53173 return StoreBitFieldPop<PT_IntAPS>(S, CodePtr());
53174}
53175bool EvalEmitter::emitStoreBitFieldPopBool(SourceInfo L) {
53176 if (!isActive()) return true;
53177 CurrentSource = L;
53178 return StoreBitFieldPop<PT_Bool>(S, CodePtr());
53179}
53180bool EvalEmitter::emitStoreBitFieldPopFixedPoint(SourceInfo L) {
53181 if (!isActive()) return true;
53182 CurrentSource = L;
53183 return StoreBitFieldPop<PT_FixedPoint>(S, CodePtr());
53184}
53185#endif
53186#ifdef GET_OPCODE_NAMES
53187OP_StorePopSint8,
53188OP_StorePopUint8,
53189OP_StorePopSint16,
53190OP_StorePopUint16,
53191OP_StorePopSint32,
53192OP_StorePopUint32,
53193OP_StorePopSint64,
53194OP_StorePopUint64,
53195OP_StorePopIntAP,
53196OP_StorePopIntAPS,
53197OP_StorePopBool,
53198OP_StorePopFixedPoint,
53199OP_StorePopPtr,
53200OP_StorePopMemberPtr,
53201OP_StorePopFloat,
53202#endif
53203#ifdef GET_INTERPFN_LIST
53204&Interp_StorePopSint8,
53205&Interp_StorePopUint8,
53206&Interp_StorePopSint16,
53207&Interp_StorePopUint16,
53208&Interp_StorePopSint32,
53209&Interp_StorePopUint32,
53210&Interp_StorePopSint64,
53211&Interp_StorePopUint64,
53212&Interp_StorePopIntAP,
53213&Interp_StorePopIntAPS,
53214&Interp_StorePopBool,
53215&Interp_StorePopFixedPoint,
53216&Interp_StorePopPtr,
53217&Interp_StorePopMemberPtr,
53218&Interp_StorePopFloat,
53219#endif
53220#ifdef GET_INTERPFN_DISPATCHERS
53221PRESERVE_NONE
53222static bool Interp_StorePopSint8(InterpState &S) {
53223 if (!StorePop<PT_Sint8>(S, S.PC)) return false;
53224#if USE_TAILCALLS
53225 MUSTTAIL return InterpNext(S);
53226#else
53227 return true;
53228#endif
53229}
53230PRESERVE_NONE
53231static bool Interp_StorePopUint8(InterpState &S) {
53232 if (!StorePop<PT_Uint8>(S, S.PC)) return false;
53233#if USE_TAILCALLS
53234 MUSTTAIL return InterpNext(S);
53235#else
53236 return true;
53237#endif
53238}
53239PRESERVE_NONE
53240static bool Interp_StorePopSint16(InterpState &S) {
53241 if (!StorePop<PT_Sint16>(S, S.PC)) return false;
53242#if USE_TAILCALLS
53243 MUSTTAIL return InterpNext(S);
53244#else
53245 return true;
53246#endif
53247}
53248PRESERVE_NONE
53249static bool Interp_StorePopUint16(InterpState &S) {
53250 if (!StorePop<PT_Uint16>(S, S.PC)) return false;
53251#if USE_TAILCALLS
53252 MUSTTAIL return InterpNext(S);
53253#else
53254 return true;
53255#endif
53256}
53257PRESERVE_NONE
53258static bool Interp_StorePopSint32(InterpState &S) {
53259 if (!StorePop<PT_Sint32>(S, S.PC)) return false;
53260#if USE_TAILCALLS
53261 MUSTTAIL return InterpNext(S);
53262#else
53263 return true;
53264#endif
53265}
53266PRESERVE_NONE
53267static bool Interp_StorePopUint32(InterpState &S) {
53268 if (!StorePop<PT_Uint32>(S, S.PC)) return false;
53269#if USE_TAILCALLS
53270 MUSTTAIL return InterpNext(S);
53271#else
53272 return true;
53273#endif
53274}
53275PRESERVE_NONE
53276static bool Interp_StorePopSint64(InterpState &S) {
53277 if (!StorePop<PT_Sint64>(S, S.PC)) return false;
53278#if USE_TAILCALLS
53279 MUSTTAIL return InterpNext(S);
53280#else
53281 return true;
53282#endif
53283}
53284PRESERVE_NONE
53285static bool Interp_StorePopUint64(InterpState &S) {
53286 if (!StorePop<PT_Uint64>(S, S.PC)) return false;
53287#if USE_TAILCALLS
53288 MUSTTAIL return InterpNext(S);
53289#else
53290 return true;
53291#endif
53292}
53293PRESERVE_NONE
53294static bool Interp_StorePopIntAP(InterpState &S) {
53295 if (!StorePop<PT_IntAP>(S, S.PC)) return false;
53296#if USE_TAILCALLS
53297 MUSTTAIL return InterpNext(S);
53298#else
53299 return true;
53300#endif
53301}
53302PRESERVE_NONE
53303static bool Interp_StorePopIntAPS(InterpState &S) {
53304 if (!StorePop<PT_IntAPS>(S, S.PC)) return false;
53305#if USE_TAILCALLS
53306 MUSTTAIL return InterpNext(S);
53307#else
53308 return true;
53309#endif
53310}
53311PRESERVE_NONE
53312static bool Interp_StorePopBool(InterpState &S) {
53313 if (!StorePop<PT_Bool>(S, S.PC)) return false;
53314#if USE_TAILCALLS
53315 MUSTTAIL return InterpNext(S);
53316#else
53317 return true;
53318#endif
53319}
53320PRESERVE_NONE
53321static bool Interp_StorePopFixedPoint(InterpState &S) {
53322 if (!StorePop<PT_FixedPoint>(S, S.PC)) return false;
53323#if USE_TAILCALLS
53324 MUSTTAIL return InterpNext(S);
53325#else
53326 return true;
53327#endif
53328}
53329PRESERVE_NONE
53330static bool Interp_StorePopPtr(InterpState &S) {
53331 if (!StorePop<PT_Ptr>(S, S.PC)) return false;
53332#if USE_TAILCALLS
53333 MUSTTAIL return InterpNext(S);
53334#else
53335 return true;
53336#endif
53337}
53338PRESERVE_NONE
53339static bool Interp_StorePopMemberPtr(InterpState &S) {
53340 if (!StorePop<PT_MemberPtr>(S, S.PC)) return false;
53341#if USE_TAILCALLS
53342 MUSTTAIL return InterpNext(S);
53343#else
53344 return true;
53345#endif
53346}
53347PRESERVE_NONE
53348static bool Interp_StorePopFloat(InterpState &S) {
53349 if (!StorePop<PT_Float>(S, S.PC)) return false;
53350#if USE_TAILCALLS
53351 MUSTTAIL return InterpNext(S);
53352#else
53353 return true;
53354#endif
53355}
53356#endif
53357#ifdef GET_DISASM
53358case OP_StorePopSint8:
53359 Text.Op = PrintName("StorePopSint8");
53360 break;
53361case OP_StorePopUint8:
53362 Text.Op = PrintName("StorePopUint8");
53363 break;
53364case OP_StorePopSint16:
53365 Text.Op = PrintName("StorePopSint16");
53366 break;
53367case OP_StorePopUint16:
53368 Text.Op = PrintName("StorePopUint16");
53369 break;
53370case OP_StorePopSint32:
53371 Text.Op = PrintName("StorePopSint32");
53372 break;
53373case OP_StorePopUint32:
53374 Text.Op = PrintName("StorePopUint32");
53375 break;
53376case OP_StorePopSint64:
53377 Text.Op = PrintName("StorePopSint64");
53378 break;
53379case OP_StorePopUint64:
53380 Text.Op = PrintName("StorePopUint64");
53381 break;
53382case OP_StorePopIntAP:
53383 Text.Op = PrintName("StorePopIntAP");
53384 break;
53385case OP_StorePopIntAPS:
53386 Text.Op = PrintName("StorePopIntAPS");
53387 break;
53388case OP_StorePopBool:
53389 Text.Op = PrintName("StorePopBool");
53390 break;
53391case OP_StorePopFixedPoint:
53392 Text.Op = PrintName("StorePopFixedPoint");
53393 break;
53394case OP_StorePopPtr:
53395 Text.Op = PrintName("StorePopPtr");
53396 break;
53397case OP_StorePopMemberPtr:
53398 Text.Op = PrintName("StorePopMemberPtr");
53399 break;
53400case OP_StorePopFloat:
53401 Text.Op = PrintName("StorePopFloat");
53402 break;
53403#endif
53404#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53405bool emitStorePopSint8(SourceInfo);
53406bool emitStorePopUint8(SourceInfo);
53407bool emitStorePopSint16(SourceInfo);
53408bool emitStorePopUint16(SourceInfo);
53409bool emitStorePopSint32(SourceInfo);
53410bool emitStorePopUint32(SourceInfo);
53411bool emitStorePopSint64(SourceInfo);
53412bool emitStorePopUint64(SourceInfo);
53413bool emitStorePopIntAP(SourceInfo);
53414bool emitStorePopIntAPS(SourceInfo);
53415bool emitStorePopBool(SourceInfo);
53416bool emitStorePopFixedPoint(SourceInfo);
53417bool emitStorePopPtr(SourceInfo);
53418bool emitStorePopMemberPtr(SourceInfo);
53419bool emitStorePopFloat(SourceInfo);
53420#endif
53421#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53422[[nodiscard]] bool emitStorePop(PrimType, SourceInfo I);
53423#endif
53424#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
53425bool
53426#if defined(GET_EVAL_IMPL)
53427EvalEmitter
53428#else
53429ByteCodeEmitter
53430#endif
53431::emitStorePop(PrimType T0, SourceInfo I) {
53432 switch (T0) {
53433 case PT_Sint8:
53434 return emitStorePopSint8(I);
53435 case PT_Uint8:
53436 return emitStorePopUint8(I);
53437 case PT_Sint16:
53438 return emitStorePopSint16(I);
53439 case PT_Uint16:
53440 return emitStorePopUint16(I);
53441 case PT_Sint32:
53442 return emitStorePopSint32(I);
53443 case PT_Uint32:
53444 return emitStorePopUint32(I);
53445 case PT_Sint64:
53446 return emitStorePopSint64(I);
53447 case PT_Uint64:
53448 return emitStorePopUint64(I);
53449 case PT_IntAP:
53450 return emitStorePopIntAP(I);
53451 case PT_IntAPS:
53452 return emitStorePopIntAPS(I);
53453 case PT_Bool:
53454 return emitStorePopBool(I);
53455 case PT_FixedPoint:
53456 return emitStorePopFixedPoint(I);
53457 case PT_Ptr:
53458 return emitStorePopPtr(I);
53459 case PT_MemberPtr:
53460 return emitStorePopMemberPtr(I);
53461 case PT_Float:
53462 return emitStorePopFloat(I);
53463 }
53464 llvm_unreachable("invalid enum value");
53465}
53466#endif
53467#ifdef GET_LINK_IMPL
53468bool ByteCodeEmitter::emitStorePopSint8(SourceInfo L) {
53469 return emitOp<>(OP_StorePopSint8, L);
53470}
53471bool ByteCodeEmitter::emitStorePopUint8(SourceInfo L) {
53472 return emitOp<>(OP_StorePopUint8, L);
53473}
53474bool ByteCodeEmitter::emitStorePopSint16(SourceInfo L) {
53475 return emitOp<>(OP_StorePopSint16, L);
53476}
53477bool ByteCodeEmitter::emitStorePopUint16(SourceInfo L) {
53478 return emitOp<>(OP_StorePopUint16, L);
53479}
53480bool ByteCodeEmitter::emitStorePopSint32(SourceInfo L) {
53481 return emitOp<>(OP_StorePopSint32, L);
53482}
53483bool ByteCodeEmitter::emitStorePopUint32(SourceInfo L) {
53484 return emitOp<>(OP_StorePopUint32, L);
53485}
53486bool ByteCodeEmitter::emitStorePopSint64(SourceInfo L) {
53487 return emitOp<>(OP_StorePopSint64, L);
53488}
53489bool ByteCodeEmitter::emitStorePopUint64(SourceInfo L) {
53490 return emitOp<>(OP_StorePopUint64, L);
53491}
53492bool ByteCodeEmitter::emitStorePopIntAP(SourceInfo L) {
53493 return emitOp<>(OP_StorePopIntAP, L);
53494}
53495bool ByteCodeEmitter::emitStorePopIntAPS(SourceInfo L) {
53496 return emitOp<>(OP_StorePopIntAPS, L);
53497}
53498bool ByteCodeEmitter::emitStorePopBool(SourceInfo L) {
53499 return emitOp<>(OP_StorePopBool, L);
53500}
53501bool ByteCodeEmitter::emitStorePopFixedPoint(SourceInfo L) {
53502 return emitOp<>(OP_StorePopFixedPoint, L);
53503}
53504bool ByteCodeEmitter::emitStorePopPtr(SourceInfo L) {
53505 return emitOp<>(OP_StorePopPtr, L);
53506}
53507bool ByteCodeEmitter::emitStorePopMemberPtr(SourceInfo L) {
53508 return emitOp<>(OP_StorePopMemberPtr, L);
53509}
53510bool ByteCodeEmitter::emitStorePopFloat(SourceInfo L) {
53511 return emitOp<>(OP_StorePopFloat, L);
53512}
53513#endif
53514#ifdef GET_EVAL_IMPL
53515bool EvalEmitter::emitStorePopSint8(SourceInfo L) {
53516 if (!isActive()) return true;
53517 CurrentSource = L;
53518 return StorePop<PT_Sint8>(S, CodePtr());
53519}
53520bool EvalEmitter::emitStorePopUint8(SourceInfo L) {
53521 if (!isActive()) return true;
53522 CurrentSource = L;
53523 return StorePop<PT_Uint8>(S, CodePtr());
53524}
53525bool EvalEmitter::emitStorePopSint16(SourceInfo L) {
53526 if (!isActive()) return true;
53527 CurrentSource = L;
53528 return StorePop<PT_Sint16>(S, CodePtr());
53529}
53530bool EvalEmitter::emitStorePopUint16(SourceInfo L) {
53531 if (!isActive()) return true;
53532 CurrentSource = L;
53533 return StorePop<PT_Uint16>(S, CodePtr());
53534}
53535bool EvalEmitter::emitStorePopSint32(SourceInfo L) {
53536 if (!isActive()) return true;
53537 CurrentSource = L;
53538 return StorePop<PT_Sint32>(S, CodePtr());
53539}
53540bool EvalEmitter::emitStorePopUint32(SourceInfo L) {
53541 if (!isActive()) return true;
53542 CurrentSource = L;
53543 return StorePop<PT_Uint32>(S, CodePtr());
53544}
53545bool EvalEmitter::emitStorePopSint64(SourceInfo L) {
53546 if (!isActive()) return true;
53547 CurrentSource = L;
53548 return StorePop<PT_Sint64>(S, CodePtr());
53549}
53550bool EvalEmitter::emitStorePopUint64(SourceInfo L) {
53551 if (!isActive()) return true;
53552 CurrentSource = L;
53553 return StorePop<PT_Uint64>(S, CodePtr());
53554}
53555bool EvalEmitter::emitStorePopIntAP(SourceInfo L) {
53556 if (!isActive()) return true;
53557 CurrentSource = L;
53558 return StorePop<PT_IntAP>(S, CodePtr());
53559}
53560bool EvalEmitter::emitStorePopIntAPS(SourceInfo L) {
53561 if (!isActive()) return true;
53562 CurrentSource = L;
53563 return StorePop<PT_IntAPS>(S, CodePtr());
53564}
53565bool EvalEmitter::emitStorePopBool(SourceInfo L) {
53566 if (!isActive()) return true;
53567 CurrentSource = L;
53568 return StorePop<PT_Bool>(S, CodePtr());
53569}
53570bool EvalEmitter::emitStorePopFixedPoint(SourceInfo L) {
53571 if (!isActive()) return true;
53572 CurrentSource = L;
53573 return StorePop<PT_FixedPoint>(S, CodePtr());
53574}
53575bool EvalEmitter::emitStorePopPtr(SourceInfo L) {
53576 if (!isActive()) return true;
53577 CurrentSource = L;
53578 return StorePop<PT_Ptr>(S, CodePtr());
53579}
53580bool EvalEmitter::emitStorePopMemberPtr(SourceInfo L) {
53581 if (!isActive()) return true;
53582 CurrentSource = L;
53583 return StorePop<PT_MemberPtr>(S, CodePtr());
53584}
53585bool EvalEmitter::emitStorePopFloat(SourceInfo L) {
53586 if (!isActive()) return true;
53587 CurrentSource = L;
53588 return StorePop<PT_Float>(S, CodePtr());
53589}
53590#endif
53591#ifdef GET_OPCODE_NAMES
53592OP_SubSint8,
53593OP_SubUint8,
53594OP_SubSint16,
53595OP_SubUint16,
53596OP_SubSint32,
53597OP_SubUint32,
53598OP_SubSint64,
53599OP_SubUint64,
53600OP_SubIntAP,
53601OP_SubIntAPS,
53602OP_SubBool,
53603OP_SubFixedPoint,
53604#endif
53605#ifdef GET_INTERPFN_LIST
53606&Interp_SubSint8,
53607&Interp_SubUint8,
53608&Interp_SubSint16,
53609&Interp_SubUint16,
53610&Interp_SubSint32,
53611&Interp_SubUint32,
53612&Interp_SubSint64,
53613&Interp_SubUint64,
53614&Interp_SubIntAP,
53615&Interp_SubIntAPS,
53616&Interp_SubBool,
53617&Interp_SubFixedPoint,
53618#endif
53619#ifdef GET_INTERPFN_DISPATCHERS
53620PRESERVE_NONE
53621static bool Interp_SubSint8(InterpState &S) {
53622 if (!Sub<PT_Sint8>(S, S.PC)) return false;
53623#if USE_TAILCALLS
53624 MUSTTAIL return InterpNext(S);
53625#else
53626 return true;
53627#endif
53628}
53629PRESERVE_NONE
53630static bool Interp_SubUint8(InterpState &S) {
53631 if (!Sub<PT_Uint8>(S, S.PC)) return false;
53632#if USE_TAILCALLS
53633 MUSTTAIL return InterpNext(S);
53634#else
53635 return true;
53636#endif
53637}
53638PRESERVE_NONE
53639static bool Interp_SubSint16(InterpState &S) {
53640 if (!Sub<PT_Sint16>(S, S.PC)) return false;
53641#if USE_TAILCALLS
53642 MUSTTAIL return InterpNext(S);
53643#else
53644 return true;
53645#endif
53646}
53647PRESERVE_NONE
53648static bool Interp_SubUint16(InterpState &S) {
53649 if (!Sub<PT_Uint16>(S, S.PC)) return false;
53650#if USE_TAILCALLS
53651 MUSTTAIL return InterpNext(S);
53652#else
53653 return true;
53654#endif
53655}
53656PRESERVE_NONE
53657static bool Interp_SubSint32(InterpState &S) {
53658 if (!Sub<PT_Sint32>(S, S.PC)) return false;
53659#if USE_TAILCALLS
53660 MUSTTAIL return InterpNext(S);
53661#else
53662 return true;
53663#endif
53664}
53665PRESERVE_NONE
53666static bool Interp_SubUint32(InterpState &S) {
53667 if (!Sub<PT_Uint32>(S, S.PC)) return false;
53668#if USE_TAILCALLS
53669 MUSTTAIL return InterpNext(S);
53670#else
53671 return true;
53672#endif
53673}
53674PRESERVE_NONE
53675static bool Interp_SubSint64(InterpState &S) {
53676 if (!Sub<PT_Sint64>(S, S.PC)) return false;
53677#if USE_TAILCALLS
53678 MUSTTAIL return InterpNext(S);
53679#else
53680 return true;
53681#endif
53682}
53683PRESERVE_NONE
53684static bool Interp_SubUint64(InterpState &S) {
53685 if (!Sub<PT_Uint64>(S, S.PC)) return false;
53686#if USE_TAILCALLS
53687 MUSTTAIL return InterpNext(S);
53688#else
53689 return true;
53690#endif
53691}
53692PRESERVE_NONE
53693static bool Interp_SubIntAP(InterpState &S) {
53694 if (!Sub<PT_IntAP>(S, S.PC)) return false;
53695#if USE_TAILCALLS
53696 MUSTTAIL return InterpNext(S);
53697#else
53698 return true;
53699#endif
53700}
53701PRESERVE_NONE
53702static bool Interp_SubIntAPS(InterpState &S) {
53703 if (!Sub<PT_IntAPS>(S, S.PC)) return false;
53704#if USE_TAILCALLS
53705 MUSTTAIL return InterpNext(S);
53706#else
53707 return true;
53708#endif
53709}
53710PRESERVE_NONE
53711static bool Interp_SubBool(InterpState &S) {
53712 if (!Sub<PT_Bool>(S, S.PC)) return false;
53713#if USE_TAILCALLS
53714 MUSTTAIL return InterpNext(S);
53715#else
53716 return true;
53717#endif
53718}
53719PRESERVE_NONE
53720static bool Interp_SubFixedPoint(InterpState &S) {
53721 if (!Sub<PT_FixedPoint>(S, S.PC)) return false;
53722#if USE_TAILCALLS
53723 MUSTTAIL return InterpNext(S);
53724#else
53725 return true;
53726#endif
53727}
53728#endif
53729#ifdef GET_DISASM
53730case OP_SubSint8:
53731 Text.Op = PrintName("SubSint8");
53732 break;
53733case OP_SubUint8:
53734 Text.Op = PrintName("SubUint8");
53735 break;
53736case OP_SubSint16:
53737 Text.Op = PrintName("SubSint16");
53738 break;
53739case OP_SubUint16:
53740 Text.Op = PrintName("SubUint16");
53741 break;
53742case OP_SubSint32:
53743 Text.Op = PrintName("SubSint32");
53744 break;
53745case OP_SubUint32:
53746 Text.Op = PrintName("SubUint32");
53747 break;
53748case OP_SubSint64:
53749 Text.Op = PrintName("SubSint64");
53750 break;
53751case OP_SubUint64:
53752 Text.Op = PrintName("SubUint64");
53753 break;
53754case OP_SubIntAP:
53755 Text.Op = PrintName("SubIntAP");
53756 break;
53757case OP_SubIntAPS:
53758 Text.Op = PrintName("SubIntAPS");
53759 break;
53760case OP_SubBool:
53761 Text.Op = PrintName("SubBool");
53762 break;
53763case OP_SubFixedPoint:
53764 Text.Op = PrintName("SubFixedPoint");
53765 break;
53766#endif
53767#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53768bool emitSubSint8(SourceInfo);
53769bool emitSubUint8(SourceInfo);
53770bool emitSubSint16(SourceInfo);
53771bool emitSubUint16(SourceInfo);
53772bool emitSubSint32(SourceInfo);
53773bool emitSubUint32(SourceInfo);
53774bool emitSubSint64(SourceInfo);
53775bool emitSubUint64(SourceInfo);
53776bool emitSubIntAP(SourceInfo);
53777bool emitSubIntAPS(SourceInfo);
53778bool emitSubBool(SourceInfo);
53779bool emitSubFixedPoint(SourceInfo);
53780#endif
53781#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53782[[nodiscard]] bool emitSub(PrimType, SourceInfo I);
53783#endif
53784#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
53785bool
53786#if defined(GET_EVAL_IMPL)
53787EvalEmitter
53788#else
53789ByteCodeEmitter
53790#endif
53791::emitSub(PrimType T0, SourceInfo I) {
53792 switch (T0) {
53793 case PT_Sint8:
53794 return emitSubSint8(I);
53795 case PT_Uint8:
53796 return emitSubUint8(I);
53797 case PT_Sint16:
53798 return emitSubSint16(I);
53799 case PT_Uint16:
53800 return emitSubUint16(I);
53801 case PT_Sint32:
53802 return emitSubSint32(I);
53803 case PT_Uint32:
53804 return emitSubUint32(I);
53805 case PT_Sint64:
53806 return emitSubSint64(I);
53807 case PT_Uint64:
53808 return emitSubUint64(I);
53809 case PT_IntAP:
53810 return emitSubIntAP(I);
53811 case PT_IntAPS:
53812 return emitSubIntAPS(I);
53813 case PT_Bool:
53814 return emitSubBool(I);
53815 case PT_FixedPoint:
53816 return emitSubFixedPoint(I);
53817 default: llvm_unreachable("invalid type: emitSub");
53818 }
53819 llvm_unreachable("invalid enum value");
53820}
53821#endif
53822#ifdef GET_LINK_IMPL
53823bool ByteCodeEmitter::emitSubSint8(SourceInfo L) {
53824 return emitOp<>(OP_SubSint8, L);
53825}
53826bool ByteCodeEmitter::emitSubUint8(SourceInfo L) {
53827 return emitOp<>(OP_SubUint8, L);
53828}
53829bool ByteCodeEmitter::emitSubSint16(SourceInfo L) {
53830 return emitOp<>(OP_SubSint16, L);
53831}
53832bool ByteCodeEmitter::emitSubUint16(SourceInfo L) {
53833 return emitOp<>(OP_SubUint16, L);
53834}
53835bool ByteCodeEmitter::emitSubSint32(SourceInfo L) {
53836 return emitOp<>(OP_SubSint32, L);
53837}
53838bool ByteCodeEmitter::emitSubUint32(SourceInfo L) {
53839 return emitOp<>(OP_SubUint32, L);
53840}
53841bool ByteCodeEmitter::emitSubSint64(SourceInfo L) {
53842 return emitOp<>(OP_SubSint64, L);
53843}
53844bool ByteCodeEmitter::emitSubUint64(SourceInfo L) {
53845 return emitOp<>(OP_SubUint64, L);
53846}
53847bool ByteCodeEmitter::emitSubIntAP(SourceInfo L) {
53848 return emitOp<>(OP_SubIntAP, L);
53849}
53850bool ByteCodeEmitter::emitSubIntAPS(SourceInfo L) {
53851 return emitOp<>(OP_SubIntAPS, L);
53852}
53853bool ByteCodeEmitter::emitSubBool(SourceInfo L) {
53854 return emitOp<>(OP_SubBool, L);
53855}
53856bool ByteCodeEmitter::emitSubFixedPoint(SourceInfo L) {
53857 return emitOp<>(OP_SubFixedPoint, L);
53858}
53859#endif
53860#ifdef GET_EVAL_IMPL
53861bool EvalEmitter::emitSubSint8(SourceInfo L) {
53862 if (!isActive()) return true;
53863 CurrentSource = L;
53864 return Sub<PT_Sint8>(S, CodePtr());
53865}
53866bool EvalEmitter::emitSubUint8(SourceInfo L) {
53867 if (!isActive()) return true;
53868 CurrentSource = L;
53869 return Sub<PT_Uint8>(S, CodePtr());
53870}
53871bool EvalEmitter::emitSubSint16(SourceInfo L) {
53872 if (!isActive()) return true;
53873 CurrentSource = L;
53874 return Sub<PT_Sint16>(S, CodePtr());
53875}
53876bool EvalEmitter::emitSubUint16(SourceInfo L) {
53877 if (!isActive()) return true;
53878 CurrentSource = L;
53879 return Sub<PT_Uint16>(S, CodePtr());
53880}
53881bool EvalEmitter::emitSubSint32(SourceInfo L) {
53882 if (!isActive()) return true;
53883 CurrentSource = L;
53884 return Sub<PT_Sint32>(S, CodePtr());
53885}
53886bool EvalEmitter::emitSubUint32(SourceInfo L) {
53887 if (!isActive()) return true;
53888 CurrentSource = L;
53889 return Sub<PT_Uint32>(S, CodePtr());
53890}
53891bool EvalEmitter::emitSubSint64(SourceInfo L) {
53892 if (!isActive()) return true;
53893 CurrentSource = L;
53894 return Sub<PT_Sint64>(S, CodePtr());
53895}
53896bool EvalEmitter::emitSubUint64(SourceInfo L) {
53897 if (!isActive()) return true;
53898 CurrentSource = L;
53899 return Sub<PT_Uint64>(S, CodePtr());
53900}
53901bool EvalEmitter::emitSubIntAP(SourceInfo L) {
53902 if (!isActive()) return true;
53903 CurrentSource = L;
53904 return Sub<PT_IntAP>(S, CodePtr());
53905}
53906bool EvalEmitter::emitSubIntAPS(SourceInfo L) {
53907 if (!isActive()) return true;
53908 CurrentSource = L;
53909 return Sub<PT_IntAPS>(S, CodePtr());
53910}
53911bool EvalEmitter::emitSubBool(SourceInfo L) {
53912 if (!isActive()) return true;
53913 CurrentSource = L;
53914 return Sub<PT_Bool>(S, CodePtr());
53915}
53916bool EvalEmitter::emitSubFixedPoint(SourceInfo L) {
53917 if (!isActive()) return true;
53918 CurrentSource = L;
53919 return Sub<PT_FixedPoint>(S, CodePtr());
53920}
53921#endif
53922#ifdef GET_OPCODE_NAMES
53923OP_SubOffsetSint8,
53924OP_SubOffsetUint8,
53925OP_SubOffsetSint16,
53926OP_SubOffsetUint16,
53927OP_SubOffsetSint32,
53928OP_SubOffsetUint32,
53929OP_SubOffsetSint64,
53930OP_SubOffsetUint64,
53931OP_SubOffsetIntAP,
53932OP_SubOffsetIntAPS,
53933OP_SubOffsetBool,
53934#endif
53935#ifdef GET_INTERPFN_LIST
53936&Interp_SubOffsetSint8,
53937&Interp_SubOffsetUint8,
53938&Interp_SubOffsetSint16,
53939&Interp_SubOffsetUint16,
53940&Interp_SubOffsetSint32,
53941&Interp_SubOffsetUint32,
53942&Interp_SubOffsetSint64,
53943&Interp_SubOffsetUint64,
53944&Interp_SubOffsetIntAP,
53945&Interp_SubOffsetIntAPS,
53946&Interp_SubOffsetBool,
53947#endif
53948#ifdef GET_INTERPFN_DISPATCHERS
53949PRESERVE_NONE
53950static bool Interp_SubOffsetSint8(InterpState &S) {
53951 if (!SubOffset<PT_Sint8>(S, S.PC)) return false;
53952#if USE_TAILCALLS
53953 MUSTTAIL return InterpNext(S);
53954#else
53955 return true;
53956#endif
53957}
53958PRESERVE_NONE
53959static bool Interp_SubOffsetUint8(InterpState &S) {
53960 if (!SubOffset<PT_Uint8>(S, S.PC)) return false;
53961#if USE_TAILCALLS
53962 MUSTTAIL return InterpNext(S);
53963#else
53964 return true;
53965#endif
53966}
53967PRESERVE_NONE
53968static bool Interp_SubOffsetSint16(InterpState &S) {
53969 if (!SubOffset<PT_Sint16>(S, S.PC)) return false;
53970#if USE_TAILCALLS
53971 MUSTTAIL return InterpNext(S);
53972#else
53973 return true;
53974#endif
53975}
53976PRESERVE_NONE
53977static bool Interp_SubOffsetUint16(InterpState &S) {
53978 if (!SubOffset<PT_Uint16>(S, S.PC)) return false;
53979#if USE_TAILCALLS
53980 MUSTTAIL return InterpNext(S);
53981#else
53982 return true;
53983#endif
53984}
53985PRESERVE_NONE
53986static bool Interp_SubOffsetSint32(InterpState &S) {
53987 if (!SubOffset<PT_Sint32>(S, S.PC)) return false;
53988#if USE_TAILCALLS
53989 MUSTTAIL return InterpNext(S);
53990#else
53991 return true;
53992#endif
53993}
53994PRESERVE_NONE
53995static bool Interp_SubOffsetUint32(InterpState &S) {
53996 if (!SubOffset<PT_Uint32>(S, S.PC)) return false;
53997#if USE_TAILCALLS
53998 MUSTTAIL return InterpNext(S);
53999#else
54000 return true;
54001#endif
54002}
54003PRESERVE_NONE
54004static bool Interp_SubOffsetSint64(InterpState &S) {
54005 if (!SubOffset<PT_Sint64>(S, S.PC)) return false;
54006#if USE_TAILCALLS
54007 MUSTTAIL return InterpNext(S);
54008#else
54009 return true;
54010#endif
54011}
54012PRESERVE_NONE
54013static bool Interp_SubOffsetUint64(InterpState &S) {
54014 if (!SubOffset<PT_Uint64>(S, S.PC)) return false;
54015#if USE_TAILCALLS
54016 MUSTTAIL return InterpNext(S);
54017#else
54018 return true;
54019#endif
54020}
54021PRESERVE_NONE
54022static bool Interp_SubOffsetIntAP(InterpState &S) {
54023 if (!SubOffset<PT_IntAP>(S, S.PC)) return false;
54024#if USE_TAILCALLS
54025 MUSTTAIL return InterpNext(S);
54026#else
54027 return true;
54028#endif
54029}
54030PRESERVE_NONE
54031static bool Interp_SubOffsetIntAPS(InterpState &S) {
54032 if (!SubOffset<PT_IntAPS>(S, S.PC)) return false;
54033#if USE_TAILCALLS
54034 MUSTTAIL return InterpNext(S);
54035#else
54036 return true;
54037#endif
54038}
54039PRESERVE_NONE
54040static bool Interp_SubOffsetBool(InterpState &S) {
54041 if (!SubOffset<PT_Bool>(S, S.PC)) return false;
54042#if USE_TAILCALLS
54043 MUSTTAIL return InterpNext(S);
54044#else
54045 return true;
54046#endif
54047}
54048#endif
54049#ifdef GET_DISASM
54050case OP_SubOffsetSint8:
54051 Text.Op = PrintName("SubOffsetSint8");
54052 break;
54053case OP_SubOffsetUint8:
54054 Text.Op = PrintName("SubOffsetUint8");
54055 break;
54056case OP_SubOffsetSint16:
54057 Text.Op = PrintName("SubOffsetSint16");
54058 break;
54059case OP_SubOffsetUint16:
54060 Text.Op = PrintName("SubOffsetUint16");
54061 break;
54062case OP_SubOffsetSint32:
54063 Text.Op = PrintName("SubOffsetSint32");
54064 break;
54065case OP_SubOffsetUint32:
54066 Text.Op = PrintName("SubOffsetUint32");
54067 break;
54068case OP_SubOffsetSint64:
54069 Text.Op = PrintName("SubOffsetSint64");
54070 break;
54071case OP_SubOffsetUint64:
54072 Text.Op = PrintName("SubOffsetUint64");
54073 break;
54074case OP_SubOffsetIntAP:
54075 Text.Op = PrintName("SubOffsetIntAP");
54076 break;
54077case OP_SubOffsetIntAPS:
54078 Text.Op = PrintName("SubOffsetIntAPS");
54079 break;
54080case OP_SubOffsetBool:
54081 Text.Op = PrintName("SubOffsetBool");
54082 break;
54083#endif
54084#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54085bool emitSubOffsetSint8(SourceInfo);
54086bool emitSubOffsetUint8(SourceInfo);
54087bool emitSubOffsetSint16(SourceInfo);
54088bool emitSubOffsetUint16(SourceInfo);
54089bool emitSubOffsetSint32(SourceInfo);
54090bool emitSubOffsetUint32(SourceInfo);
54091bool emitSubOffsetSint64(SourceInfo);
54092bool emitSubOffsetUint64(SourceInfo);
54093bool emitSubOffsetIntAP(SourceInfo);
54094bool emitSubOffsetIntAPS(SourceInfo);
54095bool emitSubOffsetBool(SourceInfo);
54096#endif
54097#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54098[[nodiscard]] bool emitSubOffset(PrimType, SourceInfo I);
54099#endif
54100#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
54101bool
54102#if defined(GET_EVAL_IMPL)
54103EvalEmitter
54104#else
54105ByteCodeEmitter
54106#endif
54107::emitSubOffset(PrimType T0, SourceInfo I) {
54108 switch (T0) {
54109 case PT_Sint8:
54110 return emitSubOffsetSint8(I);
54111 case PT_Uint8:
54112 return emitSubOffsetUint8(I);
54113 case PT_Sint16:
54114 return emitSubOffsetSint16(I);
54115 case PT_Uint16:
54116 return emitSubOffsetUint16(I);
54117 case PT_Sint32:
54118 return emitSubOffsetSint32(I);
54119 case PT_Uint32:
54120 return emitSubOffsetUint32(I);
54121 case PT_Sint64:
54122 return emitSubOffsetSint64(I);
54123 case PT_Uint64:
54124 return emitSubOffsetUint64(I);
54125 case PT_IntAP:
54126 return emitSubOffsetIntAP(I);
54127 case PT_IntAPS:
54128 return emitSubOffsetIntAPS(I);
54129 case PT_Bool:
54130 return emitSubOffsetBool(I);
54131 default: llvm_unreachable("invalid type: emitSubOffset");
54132 }
54133 llvm_unreachable("invalid enum value");
54134}
54135#endif
54136#ifdef GET_LINK_IMPL
54137bool ByteCodeEmitter::emitSubOffsetSint8(SourceInfo L) {
54138 return emitOp<>(OP_SubOffsetSint8, L);
54139}
54140bool ByteCodeEmitter::emitSubOffsetUint8(SourceInfo L) {
54141 return emitOp<>(OP_SubOffsetUint8, L);
54142}
54143bool ByteCodeEmitter::emitSubOffsetSint16(SourceInfo L) {
54144 return emitOp<>(OP_SubOffsetSint16, L);
54145}
54146bool ByteCodeEmitter::emitSubOffsetUint16(SourceInfo L) {
54147 return emitOp<>(OP_SubOffsetUint16, L);
54148}
54149bool ByteCodeEmitter::emitSubOffsetSint32(SourceInfo L) {
54150 return emitOp<>(OP_SubOffsetSint32, L);
54151}
54152bool ByteCodeEmitter::emitSubOffsetUint32(SourceInfo L) {
54153 return emitOp<>(OP_SubOffsetUint32, L);
54154}
54155bool ByteCodeEmitter::emitSubOffsetSint64(SourceInfo L) {
54156 return emitOp<>(OP_SubOffsetSint64, L);
54157}
54158bool ByteCodeEmitter::emitSubOffsetUint64(SourceInfo L) {
54159 return emitOp<>(OP_SubOffsetUint64, L);
54160}
54161bool ByteCodeEmitter::emitSubOffsetIntAP(SourceInfo L) {
54162 return emitOp<>(OP_SubOffsetIntAP, L);
54163}
54164bool ByteCodeEmitter::emitSubOffsetIntAPS(SourceInfo L) {
54165 return emitOp<>(OP_SubOffsetIntAPS, L);
54166}
54167bool ByteCodeEmitter::emitSubOffsetBool(SourceInfo L) {
54168 return emitOp<>(OP_SubOffsetBool, L);
54169}
54170#endif
54171#ifdef GET_EVAL_IMPL
54172bool EvalEmitter::emitSubOffsetSint8(SourceInfo L) {
54173 if (!isActive()) return true;
54174 CurrentSource = L;
54175 return SubOffset<PT_Sint8>(S, CodePtr());
54176}
54177bool EvalEmitter::emitSubOffsetUint8(SourceInfo L) {
54178 if (!isActive()) return true;
54179 CurrentSource = L;
54180 return SubOffset<PT_Uint8>(S, CodePtr());
54181}
54182bool EvalEmitter::emitSubOffsetSint16(SourceInfo L) {
54183 if (!isActive()) return true;
54184 CurrentSource = L;
54185 return SubOffset<PT_Sint16>(S, CodePtr());
54186}
54187bool EvalEmitter::emitSubOffsetUint16(SourceInfo L) {
54188 if (!isActive()) return true;
54189 CurrentSource = L;
54190 return SubOffset<PT_Uint16>(S, CodePtr());
54191}
54192bool EvalEmitter::emitSubOffsetSint32(SourceInfo L) {
54193 if (!isActive()) return true;
54194 CurrentSource = L;
54195 return SubOffset<PT_Sint32>(S, CodePtr());
54196}
54197bool EvalEmitter::emitSubOffsetUint32(SourceInfo L) {
54198 if (!isActive()) return true;
54199 CurrentSource = L;
54200 return SubOffset<PT_Uint32>(S, CodePtr());
54201}
54202bool EvalEmitter::emitSubOffsetSint64(SourceInfo L) {
54203 if (!isActive()) return true;
54204 CurrentSource = L;
54205 return SubOffset<PT_Sint64>(S, CodePtr());
54206}
54207bool EvalEmitter::emitSubOffsetUint64(SourceInfo L) {
54208 if (!isActive()) return true;
54209 CurrentSource = L;
54210 return SubOffset<PT_Uint64>(S, CodePtr());
54211}
54212bool EvalEmitter::emitSubOffsetIntAP(SourceInfo L) {
54213 if (!isActive()) return true;
54214 CurrentSource = L;
54215 return SubOffset<PT_IntAP>(S, CodePtr());
54216}
54217bool EvalEmitter::emitSubOffsetIntAPS(SourceInfo L) {
54218 if (!isActive()) return true;
54219 CurrentSource = L;
54220 return SubOffset<PT_IntAPS>(S, CodePtr());
54221}
54222bool EvalEmitter::emitSubOffsetBool(SourceInfo L) {
54223 if (!isActive()) return true;
54224 CurrentSource = L;
54225 return SubOffset<PT_Bool>(S, CodePtr());
54226}
54227#endif
54228#ifdef GET_OPCODE_NAMES
54229OP_SubPtrSint8,
54230OP_SubPtrUint8,
54231OP_SubPtrSint16,
54232OP_SubPtrUint16,
54233OP_SubPtrSint32,
54234OP_SubPtrUint32,
54235OP_SubPtrSint64,
54236OP_SubPtrUint64,
54237OP_SubPtrIntAP,
54238OP_SubPtrIntAPS,
54239#endif
54240#ifdef GET_INTERPFN_LIST
54241&Interp_SubPtrSint8,
54242&Interp_SubPtrUint8,
54243&Interp_SubPtrSint16,
54244&Interp_SubPtrUint16,
54245&Interp_SubPtrSint32,
54246&Interp_SubPtrUint32,
54247&Interp_SubPtrSint64,
54248&Interp_SubPtrUint64,
54249&Interp_SubPtrIntAP,
54250&Interp_SubPtrIntAPS,
54251#endif
54252#ifdef GET_INTERPFN_DISPATCHERS
54253PRESERVE_NONE
54254static bool Interp_SubPtrSint8(InterpState &S) {
54255 {
54256 CodePtr OpPC = S.PC;
54257 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54258 if (!SubPtr<PT_Sint8>(S, OpPC, V0)) return false;
54259 }
54260#if USE_TAILCALLS
54261 MUSTTAIL return InterpNext(S);
54262#else
54263 return true;
54264#endif
54265}
54266PRESERVE_NONE
54267static bool Interp_SubPtrUint8(InterpState &S) {
54268 {
54269 CodePtr OpPC = S.PC;
54270 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54271 if (!SubPtr<PT_Uint8>(S, OpPC, V0)) return false;
54272 }
54273#if USE_TAILCALLS
54274 MUSTTAIL return InterpNext(S);
54275#else
54276 return true;
54277#endif
54278}
54279PRESERVE_NONE
54280static bool Interp_SubPtrSint16(InterpState &S) {
54281 {
54282 CodePtr OpPC = S.PC;
54283 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54284 if (!SubPtr<PT_Sint16>(S, OpPC, V0)) return false;
54285 }
54286#if USE_TAILCALLS
54287 MUSTTAIL return InterpNext(S);
54288#else
54289 return true;
54290#endif
54291}
54292PRESERVE_NONE
54293static bool Interp_SubPtrUint16(InterpState &S) {
54294 {
54295 CodePtr OpPC = S.PC;
54296 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54297 if (!SubPtr<PT_Uint16>(S, OpPC, V0)) return false;
54298 }
54299#if USE_TAILCALLS
54300 MUSTTAIL return InterpNext(S);
54301#else
54302 return true;
54303#endif
54304}
54305PRESERVE_NONE
54306static bool Interp_SubPtrSint32(InterpState &S) {
54307 {
54308 CodePtr OpPC = S.PC;
54309 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54310 if (!SubPtr<PT_Sint32>(S, OpPC, V0)) return false;
54311 }
54312#if USE_TAILCALLS
54313 MUSTTAIL return InterpNext(S);
54314#else
54315 return true;
54316#endif
54317}
54318PRESERVE_NONE
54319static bool Interp_SubPtrUint32(InterpState &S) {
54320 {
54321 CodePtr OpPC = S.PC;
54322 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54323 if (!SubPtr<PT_Uint32>(S, OpPC, V0)) return false;
54324 }
54325#if USE_TAILCALLS
54326 MUSTTAIL return InterpNext(S);
54327#else
54328 return true;
54329#endif
54330}
54331PRESERVE_NONE
54332static bool Interp_SubPtrSint64(InterpState &S) {
54333 {
54334 CodePtr OpPC = S.PC;
54335 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54336 if (!SubPtr<PT_Sint64>(S, OpPC, V0)) return false;
54337 }
54338#if USE_TAILCALLS
54339 MUSTTAIL return InterpNext(S);
54340#else
54341 return true;
54342#endif
54343}
54344PRESERVE_NONE
54345static bool Interp_SubPtrUint64(InterpState &S) {
54346 {
54347 CodePtr OpPC = S.PC;
54348 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54349 if (!SubPtr<PT_Uint64>(S, OpPC, V0)) return false;
54350 }
54351#if USE_TAILCALLS
54352 MUSTTAIL return InterpNext(S);
54353#else
54354 return true;
54355#endif
54356}
54357PRESERVE_NONE
54358static bool Interp_SubPtrIntAP(InterpState &S) {
54359 {
54360 CodePtr OpPC = S.PC;
54361 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54362 if (!SubPtr<PT_IntAP>(S, OpPC, V0)) return false;
54363 }
54364#if USE_TAILCALLS
54365 MUSTTAIL return InterpNext(S);
54366#else
54367 return true;
54368#endif
54369}
54370PRESERVE_NONE
54371static bool Interp_SubPtrIntAPS(InterpState &S) {
54372 {
54373 CodePtr OpPC = S.PC;
54374 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54375 if (!SubPtr<PT_IntAPS>(S, OpPC, V0)) return false;
54376 }
54377#if USE_TAILCALLS
54378 MUSTTAIL return InterpNext(S);
54379#else
54380 return true;
54381#endif
54382}
54383#endif
54384#ifdef GET_DISASM
54385case OP_SubPtrSint8:
54386 Text.Op = PrintName("SubPtrSint8");
54387 Text.Args.push_back(printArg<uint32_t>(PC));
54388 break;
54389case OP_SubPtrUint8:
54390 Text.Op = PrintName("SubPtrUint8");
54391 Text.Args.push_back(printArg<uint32_t>(PC));
54392 break;
54393case OP_SubPtrSint16:
54394 Text.Op = PrintName("SubPtrSint16");
54395 Text.Args.push_back(printArg<uint32_t>(PC));
54396 break;
54397case OP_SubPtrUint16:
54398 Text.Op = PrintName("SubPtrUint16");
54399 Text.Args.push_back(printArg<uint32_t>(PC));
54400 break;
54401case OP_SubPtrSint32:
54402 Text.Op = PrintName("SubPtrSint32");
54403 Text.Args.push_back(printArg<uint32_t>(PC));
54404 break;
54405case OP_SubPtrUint32:
54406 Text.Op = PrintName("SubPtrUint32");
54407 Text.Args.push_back(printArg<uint32_t>(PC));
54408 break;
54409case OP_SubPtrSint64:
54410 Text.Op = PrintName("SubPtrSint64");
54411 Text.Args.push_back(printArg<uint32_t>(PC));
54412 break;
54413case OP_SubPtrUint64:
54414 Text.Op = PrintName("SubPtrUint64");
54415 Text.Args.push_back(printArg<uint32_t>(PC));
54416 break;
54417case OP_SubPtrIntAP:
54418 Text.Op = PrintName("SubPtrIntAP");
54419 Text.Args.push_back(printArg<uint32_t>(PC));
54420 break;
54421case OP_SubPtrIntAPS:
54422 Text.Op = PrintName("SubPtrIntAPS");
54423 Text.Args.push_back(printArg<uint32_t>(PC));
54424 break;
54425#endif
54426#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54427bool emitSubPtrSint8( uint32_t , SourceInfo);
54428bool emitSubPtrUint8( uint32_t , SourceInfo);
54429bool emitSubPtrSint16( uint32_t , SourceInfo);
54430bool emitSubPtrUint16( uint32_t , SourceInfo);
54431bool emitSubPtrSint32( uint32_t , SourceInfo);
54432bool emitSubPtrUint32( uint32_t , SourceInfo);
54433bool emitSubPtrSint64( uint32_t , SourceInfo);
54434bool emitSubPtrUint64( uint32_t , SourceInfo);
54435bool emitSubPtrIntAP( uint32_t , SourceInfo);
54436bool emitSubPtrIntAPS( uint32_t , SourceInfo);
54437#endif
54438#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54439[[nodiscard]] bool emitSubPtr(PrimType, uint32_t, SourceInfo I);
54440#endif
54441#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
54442bool
54443#if defined(GET_EVAL_IMPL)
54444EvalEmitter
54445#else
54446ByteCodeEmitter
54447#endif
54448::emitSubPtr(PrimType T0, uint32_t A0, SourceInfo I) {
54449 switch (T0) {
54450 case PT_Sint8:
54451 return emitSubPtrSint8(A0, I);
54452 case PT_Uint8:
54453 return emitSubPtrUint8(A0, I);
54454 case PT_Sint16:
54455 return emitSubPtrSint16(A0, I);
54456 case PT_Uint16:
54457 return emitSubPtrUint16(A0, I);
54458 case PT_Sint32:
54459 return emitSubPtrSint32(A0, I);
54460 case PT_Uint32:
54461 return emitSubPtrUint32(A0, I);
54462 case PT_Sint64:
54463 return emitSubPtrSint64(A0, I);
54464 case PT_Uint64:
54465 return emitSubPtrUint64(A0, I);
54466 case PT_IntAP:
54467 return emitSubPtrIntAP(A0, I);
54468 case PT_IntAPS:
54469 return emitSubPtrIntAPS(A0, I);
54470 default: llvm_unreachable("invalid type: emitSubPtr");
54471 }
54472 llvm_unreachable("invalid enum value");
54473}
54474#endif
54475#ifdef GET_LINK_IMPL
54476bool ByteCodeEmitter::emitSubPtrSint8( uint32_t A0, SourceInfo L) {
54477 return emitOp<uint32_t>(OP_SubPtrSint8, A0, L);
54478}
54479bool ByteCodeEmitter::emitSubPtrUint8( uint32_t A0, SourceInfo L) {
54480 return emitOp<uint32_t>(OP_SubPtrUint8, A0, L);
54481}
54482bool ByteCodeEmitter::emitSubPtrSint16( uint32_t A0, SourceInfo L) {
54483 return emitOp<uint32_t>(OP_SubPtrSint16, A0, L);
54484}
54485bool ByteCodeEmitter::emitSubPtrUint16( uint32_t A0, SourceInfo L) {
54486 return emitOp<uint32_t>(OP_SubPtrUint16, A0, L);
54487}
54488bool ByteCodeEmitter::emitSubPtrSint32( uint32_t A0, SourceInfo L) {
54489 return emitOp<uint32_t>(OP_SubPtrSint32, A0, L);
54490}
54491bool ByteCodeEmitter::emitSubPtrUint32( uint32_t A0, SourceInfo L) {
54492 return emitOp<uint32_t>(OP_SubPtrUint32, A0, L);
54493}
54494bool ByteCodeEmitter::emitSubPtrSint64( uint32_t A0, SourceInfo L) {
54495 return emitOp<uint32_t>(OP_SubPtrSint64, A0, L);
54496}
54497bool ByteCodeEmitter::emitSubPtrUint64( uint32_t A0, SourceInfo L) {
54498 return emitOp<uint32_t>(OP_SubPtrUint64, A0, L);
54499}
54500bool ByteCodeEmitter::emitSubPtrIntAP( uint32_t A0, SourceInfo L) {
54501 return emitOp<uint32_t>(OP_SubPtrIntAP, A0, L);
54502}
54503bool ByteCodeEmitter::emitSubPtrIntAPS( uint32_t A0, SourceInfo L) {
54504 return emitOp<uint32_t>(OP_SubPtrIntAPS, A0, L);
54505}
54506#endif
54507#ifdef GET_EVAL_IMPL
54508bool EvalEmitter::emitSubPtrSint8( uint32_t A0, SourceInfo L) {
54509 if (!isActive()) return true;
54510 CurrentSource = L;
54511 return SubPtr<PT_Sint8>(S, CodePtr(), A0);
54512}
54513bool EvalEmitter::emitSubPtrUint8( uint32_t A0, SourceInfo L) {
54514 if (!isActive()) return true;
54515 CurrentSource = L;
54516 return SubPtr<PT_Uint8>(S, CodePtr(), A0);
54517}
54518bool EvalEmitter::emitSubPtrSint16( uint32_t A0, SourceInfo L) {
54519 if (!isActive()) return true;
54520 CurrentSource = L;
54521 return SubPtr<PT_Sint16>(S, CodePtr(), A0);
54522}
54523bool EvalEmitter::emitSubPtrUint16( uint32_t A0, SourceInfo L) {
54524 if (!isActive()) return true;
54525 CurrentSource = L;
54526 return SubPtr<PT_Uint16>(S, CodePtr(), A0);
54527}
54528bool EvalEmitter::emitSubPtrSint32( uint32_t A0, SourceInfo L) {
54529 if (!isActive()) return true;
54530 CurrentSource = L;
54531 return SubPtr<PT_Sint32>(S, CodePtr(), A0);
54532}
54533bool EvalEmitter::emitSubPtrUint32( uint32_t A0, SourceInfo L) {
54534 if (!isActive()) return true;
54535 CurrentSource = L;
54536 return SubPtr<PT_Uint32>(S, CodePtr(), A0);
54537}
54538bool EvalEmitter::emitSubPtrSint64( uint32_t A0, SourceInfo L) {
54539 if (!isActive()) return true;
54540 CurrentSource = L;
54541 return SubPtr<PT_Sint64>(S, CodePtr(), A0);
54542}
54543bool EvalEmitter::emitSubPtrUint64( uint32_t A0, SourceInfo L) {
54544 if (!isActive()) return true;
54545 CurrentSource = L;
54546 return SubPtr<PT_Uint64>(S, CodePtr(), A0);
54547}
54548bool EvalEmitter::emitSubPtrIntAP( uint32_t A0, SourceInfo L) {
54549 if (!isActive()) return true;
54550 CurrentSource = L;
54551 return SubPtr<PT_IntAP>(S, CodePtr(), A0);
54552}
54553bool EvalEmitter::emitSubPtrIntAPS( uint32_t A0, SourceInfo L) {
54554 if (!isActive()) return true;
54555 CurrentSource = L;
54556 return SubPtr<PT_IntAPS>(S, CodePtr(), A0);
54557}
54558#endif
54559#ifdef GET_OPCODE_NAMES
54560OP_Subf,
54561#endif
54562#ifdef GET_INTERPFN_LIST
54563&Interp_Subf,
54564#endif
54565#ifdef GET_INTERPFN_DISPATCHERS
54566PRESERVE_NONE
54567static bool Interp_Subf(InterpState &S) {
54568 {
54569 CodePtr OpPC = S.PC;
54570 const auto V0 = ReadArg<uint32_t>(S, S.PC);
54571 if (!Subf(S, OpPC, V0)) return false;
54572 }
54573#if USE_TAILCALLS
54574 MUSTTAIL return InterpNext(S);
54575#else
54576 return true;
54577#endif
54578}
54579#endif
54580#ifdef GET_DISASM
54581case OP_Subf:
54582 Text.Op = PrintName("Subf");
54583 Text.Args.push_back(printArg<uint32_t>(PC));
54584 break;
54585#endif
54586#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54587bool emitSubf( uint32_t , SourceInfo);
54588#endif
54589#ifdef GET_LINK_IMPL
54590bool ByteCodeEmitter::emitSubf( uint32_t A0, SourceInfo L) {
54591 return emitOp<uint32_t>(OP_Subf, A0, L);
54592}
54593#endif
54594#ifdef GET_EVAL_IMPL
54595bool EvalEmitter::emitSubf( uint32_t A0, SourceInfo L) {
54596 if (!isActive()) return true;
54597 CurrentSource = L;
54598 return Subf(S, CodePtr(), A0);
54599}
54600#endif
54601#ifdef GET_OPCODE_NAMES
54602OP_This,
54603#endif
54604#ifdef GET_INTERPFN_LIST
54605&Interp_This,
54606#endif
54607#ifdef GET_INTERPFN_DISPATCHERS
54608PRESERVE_NONE
54609static bool Interp_This(InterpState &S) {
54610 if (!This(S, S.PC)) return false;
54611#if USE_TAILCALLS
54612 MUSTTAIL return InterpNext(S);
54613#else
54614 return true;
54615#endif
54616}
54617#endif
54618#ifdef GET_DISASM
54619case OP_This:
54620 Text.Op = PrintName("This");
54621 break;
54622#endif
54623#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54624bool emitThis(SourceInfo);
54625#endif
54626#ifdef GET_LINK_IMPL
54627bool ByteCodeEmitter::emitThis(SourceInfo L) {
54628 return emitOp<>(OP_This, L);
54629}
54630#endif
54631#ifdef GET_EVAL_IMPL
54632bool EvalEmitter::emitThis(SourceInfo L) {
54633 if (!isActive()) return true;
54634 CurrentSource = L;
54635 return This(S, CodePtr());
54636}
54637#endif
54638#ifdef GET_OPCODE_NAMES
54639OP_ToMemberPtr,
54640#endif
54641#ifdef GET_INTERPFN_LIST
54642&Interp_ToMemberPtr,
54643#endif
54644#ifdef GET_INTERPFN_DISPATCHERS
54645PRESERVE_NONE
54646static bool Interp_ToMemberPtr(InterpState &S) {
54647 ToMemberPtr(S);
54648#if USE_TAILCALLS
54649 MUSTTAIL return InterpNext(S);
54650#else
54651 return true;
54652#endif
54653}
54654#endif
54655#ifdef GET_DISASM
54656case OP_ToMemberPtr:
54657 Text.Op = PrintName("ToMemberPtr");
54658 break;
54659#endif
54660#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54661bool emitToMemberPtr(SourceInfo);
54662#endif
54663#ifdef GET_LINK_IMPL
54664bool ByteCodeEmitter::emitToMemberPtr(SourceInfo L) {
54665 return emitOp<>(OP_ToMemberPtr, L);
54666}
54667#endif
54668#ifdef GET_EVAL_IMPL
54669bool EvalEmitter::emitToMemberPtr(SourceInfo L) {
54670 if (!isActive()) return true;
54671 CurrentSource = L;
54672 return ToMemberPtr(S);
54673}
54674#endif
54675#ifdef GET_OPCODE_NAMES
54676OP_TrivialCopy,
54677#endif
54678#ifdef GET_INTERPFN_LIST
54679&Interp_TrivialCopy,
54680#endif
54681#ifdef GET_INTERPFN_DISPATCHERS
54682PRESERVE_NONE
54683static bool Interp_TrivialCopy(InterpState &S) {
54684 {
54685 CodePtr OpPC = S.PC;
54686 const auto V0 = ReadArg<bool>(S, S.PC);
54687 const auto V1 = ReadArg<const Function *>(S, S.PC);
54688 if (!TrivialCopy(S, OpPC, V0, V1)) return false;
54689 }
54690#if USE_TAILCALLS
54691 MUSTTAIL return InterpNext(S);
54692#else
54693 return true;
54694#endif
54695}
54696#endif
54697#ifdef GET_DISASM
54698case OP_TrivialCopy:
54699 Text.Op = PrintName("TrivialCopy");
54700 Text.Args.push_back(printArg<bool>(PC));
54701 Text.Args.push_back(printArg<const Function *>(PC));
54702 break;
54703#endif
54704#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54705bool emitTrivialCopy( bool , const Function * , SourceInfo);
54706#endif
54707#ifdef GET_LINK_IMPL
54708bool ByteCodeEmitter::emitTrivialCopy( bool A0, const Function * A1, SourceInfo L) {
54709 return emitOp<bool, const Function *>(OP_TrivialCopy, A0, A1, L);
54710}
54711#endif
54712#ifdef GET_EVAL_IMPL
54713bool EvalEmitter::emitTrivialCopy( bool A0, const Function * A1, SourceInfo L) {
54714 if (!isActive()) return true;
54715 CurrentSource = L;
54716 return TrivialCopy(S, CodePtr(), A0, A1);
54717}
54718#endif
54719#ifdef GET_OPCODE_NAMES
54720OP_Unsupported,
54721#endif
54722#ifdef GET_INTERPFN_LIST
54723&Interp_Unsupported,
54724#endif
54725#ifdef GET_INTERPFN_DISPATCHERS
54726PRESERVE_NONE
54727static bool Interp_Unsupported(InterpState &S) {
54728 if (!Unsupported(S, S.PC)) return false;
54729#if USE_TAILCALLS
54730 MUSTTAIL return InterpNext(S);
54731#else
54732 return true;
54733#endif
54734}
54735#endif
54736#ifdef GET_DISASM
54737case OP_Unsupported:
54738 Text.Op = PrintName("Unsupported");
54739 break;
54740#endif
54741#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54742bool emitUnsupported(SourceInfo);
54743#endif
54744#ifdef GET_LINK_IMPL
54745bool ByteCodeEmitter::emitUnsupported(SourceInfo L) {
54746 return emitOp<>(OP_Unsupported, L);
54747}
54748#endif
54749#ifdef GET_EVAL_IMPL
54750bool EvalEmitter::emitUnsupported(SourceInfo L) {
54751 if (!isActive()) return true;
54752 CurrentSource = L;
54753 return Unsupported(S, CodePtr());
54754}
54755#endif
54756#ifdef GET_OPCODE_NAMES
54757OP_ZeroSint8,
54758OP_ZeroUint8,
54759OP_ZeroSint16,
54760OP_ZeroUint16,
54761OP_ZeroSint32,
54762OP_ZeroUint32,
54763OP_ZeroSint64,
54764OP_ZeroUint64,
54765OP_ZeroBool,
54766#endif
54767#ifdef GET_INTERPFN_LIST
54768&Interp_ZeroSint8,
54769&Interp_ZeroUint8,
54770&Interp_ZeroSint16,
54771&Interp_ZeroUint16,
54772&Interp_ZeroSint32,
54773&Interp_ZeroUint32,
54774&Interp_ZeroSint64,
54775&Interp_ZeroUint64,
54776&Interp_ZeroBool,
54777#endif
54778#ifdef GET_INTERPFN_DISPATCHERS
54779PRESERVE_NONE
54780static bool Interp_ZeroSint8(InterpState &S) {
54781 Zero<PT_Sint8>(S);
54782#if USE_TAILCALLS
54783 MUSTTAIL return InterpNext(S);
54784#else
54785 return true;
54786#endif
54787}
54788PRESERVE_NONE
54789static bool Interp_ZeroUint8(InterpState &S) {
54790 Zero<PT_Uint8>(S);
54791#if USE_TAILCALLS
54792 MUSTTAIL return InterpNext(S);
54793#else
54794 return true;
54795#endif
54796}
54797PRESERVE_NONE
54798static bool Interp_ZeroSint16(InterpState &S) {
54799 Zero<PT_Sint16>(S);
54800#if USE_TAILCALLS
54801 MUSTTAIL return InterpNext(S);
54802#else
54803 return true;
54804#endif
54805}
54806PRESERVE_NONE
54807static bool Interp_ZeroUint16(InterpState &S) {
54808 Zero<PT_Uint16>(S);
54809#if USE_TAILCALLS
54810 MUSTTAIL return InterpNext(S);
54811#else
54812 return true;
54813#endif
54814}
54815PRESERVE_NONE
54816static bool Interp_ZeroSint32(InterpState &S) {
54817 Zero<PT_Sint32>(S);
54818#if USE_TAILCALLS
54819 MUSTTAIL return InterpNext(S);
54820#else
54821 return true;
54822#endif
54823}
54824PRESERVE_NONE
54825static bool Interp_ZeroUint32(InterpState &S) {
54826 Zero<PT_Uint32>(S);
54827#if USE_TAILCALLS
54828 MUSTTAIL return InterpNext(S);
54829#else
54830 return true;
54831#endif
54832}
54833PRESERVE_NONE
54834static bool Interp_ZeroSint64(InterpState &S) {
54835 Zero<PT_Sint64>(S);
54836#if USE_TAILCALLS
54837 MUSTTAIL return InterpNext(S);
54838#else
54839 return true;
54840#endif
54841}
54842PRESERVE_NONE
54843static bool Interp_ZeroUint64(InterpState &S) {
54844 Zero<PT_Uint64>(S);
54845#if USE_TAILCALLS
54846 MUSTTAIL return InterpNext(S);
54847#else
54848 return true;
54849#endif
54850}
54851PRESERVE_NONE
54852static bool Interp_ZeroBool(InterpState &S) {
54853 Zero<PT_Bool>(S);
54854#if USE_TAILCALLS
54855 MUSTTAIL return InterpNext(S);
54856#else
54857 return true;
54858#endif
54859}
54860#endif
54861#ifdef GET_DISASM
54862case OP_ZeroSint8:
54863 Text.Op = PrintName("ZeroSint8");
54864 break;
54865case OP_ZeroUint8:
54866 Text.Op = PrintName("ZeroUint8");
54867 break;
54868case OP_ZeroSint16:
54869 Text.Op = PrintName("ZeroSint16");
54870 break;
54871case OP_ZeroUint16:
54872 Text.Op = PrintName("ZeroUint16");
54873 break;
54874case OP_ZeroSint32:
54875 Text.Op = PrintName("ZeroSint32");
54876 break;
54877case OP_ZeroUint32:
54878 Text.Op = PrintName("ZeroUint32");
54879 break;
54880case OP_ZeroSint64:
54881 Text.Op = PrintName("ZeroSint64");
54882 break;
54883case OP_ZeroUint64:
54884 Text.Op = PrintName("ZeroUint64");
54885 break;
54886case OP_ZeroBool:
54887 Text.Op = PrintName("ZeroBool");
54888 break;
54889#endif
54890#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54891bool emitZeroSint8(SourceInfo);
54892bool emitZeroUint8(SourceInfo);
54893bool emitZeroSint16(SourceInfo);
54894bool emitZeroUint16(SourceInfo);
54895bool emitZeroSint32(SourceInfo);
54896bool emitZeroUint32(SourceInfo);
54897bool emitZeroSint64(SourceInfo);
54898bool emitZeroUint64(SourceInfo);
54899bool emitZeroBool(SourceInfo);
54900#endif
54901#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54902[[nodiscard]] bool emitZero(PrimType, SourceInfo I);
54903#endif
54904#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
54905bool
54906#if defined(GET_EVAL_IMPL)
54907EvalEmitter
54908#else
54909ByteCodeEmitter
54910#endif
54911::emitZero(PrimType T0, SourceInfo I) {
54912 switch (T0) {
54913 case PT_Sint8:
54914 return emitZeroSint8(I);
54915 case PT_Uint8:
54916 return emitZeroUint8(I);
54917 case PT_Sint16:
54918 return emitZeroSint16(I);
54919 case PT_Uint16:
54920 return emitZeroUint16(I);
54921 case PT_Sint32:
54922 return emitZeroSint32(I);
54923 case PT_Uint32:
54924 return emitZeroUint32(I);
54925 case PT_Sint64:
54926 return emitZeroSint64(I);
54927 case PT_Uint64:
54928 return emitZeroUint64(I);
54929 case PT_Bool:
54930 return emitZeroBool(I);
54931 default: llvm_unreachable("invalid type: emitZero");
54932 }
54933 llvm_unreachable("invalid enum value");
54934}
54935#endif
54936#ifdef GET_LINK_IMPL
54937bool ByteCodeEmitter::emitZeroSint8(SourceInfo L) {
54938 return emitOp<>(OP_ZeroSint8, L);
54939}
54940bool ByteCodeEmitter::emitZeroUint8(SourceInfo L) {
54941 return emitOp<>(OP_ZeroUint8, L);
54942}
54943bool ByteCodeEmitter::emitZeroSint16(SourceInfo L) {
54944 return emitOp<>(OP_ZeroSint16, L);
54945}
54946bool ByteCodeEmitter::emitZeroUint16(SourceInfo L) {
54947 return emitOp<>(OP_ZeroUint16, L);
54948}
54949bool ByteCodeEmitter::emitZeroSint32(SourceInfo L) {
54950 return emitOp<>(OP_ZeroSint32, L);
54951}
54952bool ByteCodeEmitter::emitZeroUint32(SourceInfo L) {
54953 return emitOp<>(OP_ZeroUint32, L);
54954}
54955bool ByteCodeEmitter::emitZeroSint64(SourceInfo L) {
54956 return emitOp<>(OP_ZeroSint64, L);
54957}
54958bool ByteCodeEmitter::emitZeroUint64(SourceInfo L) {
54959 return emitOp<>(OP_ZeroUint64, L);
54960}
54961bool ByteCodeEmitter::emitZeroBool(SourceInfo L) {
54962 return emitOp<>(OP_ZeroBool, L);
54963}
54964#endif
54965#ifdef GET_EVAL_IMPL
54966bool EvalEmitter::emitZeroSint8(SourceInfo L) {
54967 if (!isActive()) return true;
54968 CurrentSource = L;
54969 return Zero<PT_Sint8>(S);
54970}
54971bool EvalEmitter::emitZeroUint8(SourceInfo L) {
54972 if (!isActive()) return true;
54973 CurrentSource = L;
54974 return Zero<PT_Uint8>(S);
54975}
54976bool EvalEmitter::emitZeroSint16(SourceInfo L) {
54977 if (!isActive()) return true;
54978 CurrentSource = L;
54979 return Zero<PT_Sint16>(S);
54980}
54981bool EvalEmitter::emitZeroUint16(SourceInfo L) {
54982 if (!isActive()) return true;
54983 CurrentSource = L;
54984 return Zero<PT_Uint16>(S);
54985}
54986bool EvalEmitter::emitZeroSint32(SourceInfo L) {
54987 if (!isActive()) return true;
54988 CurrentSource = L;
54989 return Zero<PT_Sint32>(S);
54990}
54991bool EvalEmitter::emitZeroUint32(SourceInfo L) {
54992 if (!isActive()) return true;
54993 CurrentSource = L;
54994 return Zero<PT_Uint32>(S);
54995}
54996bool EvalEmitter::emitZeroSint64(SourceInfo L) {
54997 if (!isActive()) return true;
54998 CurrentSource = L;
54999 return Zero<PT_Sint64>(S);
55000}
55001bool EvalEmitter::emitZeroUint64(SourceInfo L) {
55002 if (!isActive()) return true;
55003 CurrentSource = L;
55004 return Zero<PT_Uint64>(S);
55005}
55006bool EvalEmitter::emitZeroBool(SourceInfo L) {
55007 if (!isActive()) return true;
55008 CurrentSource = L;
55009 return Zero<PT_Bool>(S);
55010}
55011#endif
55012#ifdef GET_OPCODE_NAMES
55013OP_ZeroIntAP,
55014#endif
55015#ifdef GET_INTERPFN_LIST
55016&Interp_ZeroIntAP,
55017#endif
55018#ifdef GET_INTERPFN_DISPATCHERS
55019PRESERVE_NONE
55020static bool Interp_ZeroIntAP(InterpState &S) {
55021 {
55022 const auto V0 = ReadArg<uint32_t>(S, S.PC);
55023 ZeroIntAP(S, V0);
55024 }
55025#if USE_TAILCALLS
55026 MUSTTAIL return InterpNext(S);
55027#else
55028 return true;
55029#endif
55030}
55031#endif
55032#ifdef GET_DISASM
55033case OP_ZeroIntAP:
55034 Text.Op = PrintName("ZeroIntAP");
55035 Text.Args.push_back(printArg<uint32_t>(PC));
55036 break;
55037#endif
55038#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
55039bool emitZeroIntAP( uint32_t , SourceInfo);
55040#endif
55041#ifdef GET_LINK_IMPL
55042bool ByteCodeEmitter::emitZeroIntAP( uint32_t A0, SourceInfo L) {
55043 return emitOp<uint32_t>(OP_ZeroIntAP, A0, L);
55044}
55045#endif
55046#ifdef GET_EVAL_IMPL
55047bool EvalEmitter::emitZeroIntAP( uint32_t A0, SourceInfo L) {
55048 if (!isActive()) return true;
55049 CurrentSource = L;
55050 return ZeroIntAP(S, A0);
55051}
55052#endif
55053#ifdef GET_OPCODE_NAMES
55054OP_ZeroIntAPS,
55055#endif
55056#ifdef GET_INTERPFN_LIST
55057&Interp_ZeroIntAPS,
55058#endif
55059#ifdef GET_INTERPFN_DISPATCHERS
55060PRESERVE_NONE
55061static bool Interp_ZeroIntAPS(InterpState &S) {
55062 {
55063 const auto V0 = ReadArg<uint32_t>(S, S.PC);
55064 ZeroIntAPS(S, V0);
55065 }
55066#if USE_TAILCALLS
55067 MUSTTAIL return InterpNext(S);
55068#else
55069 return true;
55070#endif
55071}
55072#endif
55073#ifdef GET_DISASM
55074case OP_ZeroIntAPS:
55075 Text.Op = PrintName("ZeroIntAPS");
55076 Text.Args.push_back(printArg<uint32_t>(PC));
55077 break;
55078#endif
55079#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
55080bool emitZeroIntAPS( uint32_t , SourceInfo);
55081#endif
55082#ifdef GET_LINK_IMPL
55083bool ByteCodeEmitter::emitZeroIntAPS( uint32_t A0, SourceInfo L) {
55084 return emitOp<uint32_t>(OP_ZeroIntAPS, A0, L);
55085}
55086#endif
55087#ifdef GET_EVAL_IMPL
55088bool EvalEmitter::emitZeroIntAPS( uint32_t A0, SourceInfo L) {
55089 if (!isActive()) return true;
55090 CurrentSource = L;
55091 return ZeroIntAPS(S, A0);
55092}
55093#endif
55094