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, CodePtr &PC) {
10 Activate(S, PC);
11#if USE_TAILCALLS
12 MUSTTAIL return InterpNext(S, PC);
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, OpPC);
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, CodePtr &PC) {
47 {
48 CodePtr OpPC = PC;
49 const auto V0 = ReadArg<uint32_t>(S, PC);
50 if (!ActivateThisField(S, OpPC, V0)) return false;
51 }
52#if USE_TAILCALLS
53 MUSTTAIL return InterpNext(S, PC);
54#else
55 return true;
56#endif
57}
58#endif
59#ifdef GET_DISASM
60case OP_ActivateThisField:
61 Text.Op = PrintName("ActivateThisField");
62 Text.Args.push_back(printArg<uint32_t>(P, PC));
63 break;
64#endif
65#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
66bool emitActivateThisField( uint32_t , SourceInfo);
67#endif
68#ifdef GET_LINK_IMPL
69bool ByteCodeEmitter::emitActivateThisField( uint32_t A0, SourceInfo L) {
70 return emitOp<uint32_t>(OP_ActivateThisField, A0, L);
71}
72#endif
73#ifdef GET_EVAL_IMPL
74bool EvalEmitter::emitActivateThisField( uint32_t A0, SourceInfo L) {
75 if (!isActive()) return true;
76 CurrentSource = L;
77 return ActivateThisField(S, OpPC, A0);
78}
79#endif
80#ifdef GET_OPCODE_NAMES
81OP_AddSint8,
82OP_AddUint8,
83OP_AddSint16,
84OP_AddUint16,
85OP_AddSint32,
86OP_AddUint32,
87OP_AddSint64,
88OP_AddUint64,
89OP_AddIntAP,
90OP_AddIntAPS,
91OP_AddBool,
92OP_AddFixedPoint,
93#endif
94#ifdef GET_INTERPFN_LIST
95&Interp_AddSint8,
96&Interp_AddUint8,
97&Interp_AddSint16,
98&Interp_AddUint16,
99&Interp_AddSint32,
100&Interp_AddUint32,
101&Interp_AddSint64,
102&Interp_AddUint64,
103&Interp_AddIntAP,
104&Interp_AddIntAPS,
105&Interp_AddBool,
106&Interp_AddFixedPoint,
107#endif
108#ifdef GET_INTERPFN_DISPATCHERS
109PRESERVE_NONE
110static bool Interp_AddSint8(InterpState &S, CodePtr &PC) {
111 if (!Add<PT_Sint8>(S, PC)) return false;
112#if USE_TAILCALLS
113 MUSTTAIL return InterpNext(S, PC);
114#else
115 return true;
116#endif
117}
118PRESERVE_NONE
119static bool Interp_AddUint8(InterpState &S, CodePtr &PC) {
120 if (!Add<PT_Uint8>(S, PC)) return false;
121#if USE_TAILCALLS
122 MUSTTAIL return InterpNext(S, PC);
123#else
124 return true;
125#endif
126}
127PRESERVE_NONE
128static bool Interp_AddSint16(InterpState &S, CodePtr &PC) {
129 if (!Add<PT_Sint16>(S, PC)) return false;
130#if USE_TAILCALLS
131 MUSTTAIL return InterpNext(S, PC);
132#else
133 return true;
134#endif
135}
136PRESERVE_NONE
137static bool Interp_AddUint16(InterpState &S, CodePtr &PC) {
138 if (!Add<PT_Uint16>(S, PC)) return false;
139#if USE_TAILCALLS
140 MUSTTAIL return InterpNext(S, PC);
141#else
142 return true;
143#endif
144}
145PRESERVE_NONE
146static bool Interp_AddSint32(InterpState &S, CodePtr &PC) {
147 if (!Add<PT_Sint32>(S, PC)) return false;
148#if USE_TAILCALLS
149 MUSTTAIL return InterpNext(S, PC);
150#else
151 return true;
152#endif
153}
154PRESERVE_NONE
155static bool Interp_AddUint32(InterpState &S, CodePtr &PC) {
156 if (!Add<PT_Uint32>(S, PC)) return false;
157#if USE_TAILCALLS
158 MUSTTAIL return InterpNext(S, PC);
159#else
160 return true;
161#endif
162}
163PRESERVE_NONE
164static bool Interp_AddSint64(InterpState &S, CodePtr &PC) {
165 if (!Add<PT_Sint64>(S, PC)) return false;
166#if USE_TAILCALLS
167 MUSTTAIL return InterpNext(S, PC);
168#else
169 return true;
170#endif
171}
172PRESERVE_NONE
173static bool Interp_AddUint64(InterpState &S, CodePtr &PC) {
174 if (!Add<PT_Uint64>(S, PC)) return false;
175#if USE_TAILCALLS
176 MUSTTAIL return InterpNext(S, PC);
177#else
178 return true;
179#endif
180}
181PRESERVE_NONE
182static bool Interp_AddIntAP(InterpState &S, CodePtr &PC) {
183 if (!Add<PT_IntAP>(S, PC)) return false;
184#if USE_TAILCALLS
185 MUSTTAIL return InterpNext(S, PC);
186#else
187 return true;
188#endif
189}
190PRESERVE_NONE
191static bool Interp_AddIntAPS(InterpState &S, CodePtr &PC) {
192 if (!Add<PT_IntAPS>(S, PC)) return false;
193#if USE_TAILCALLS
194 MUSTTAIL return InterpNext(S, PC);
195#else
196 return true;
197#endif
198}
199PRESERVE_NONE
200static bool Interp_AddBool(InterpState &S, CodePtr &PC) {
201 if (!Add<PT_Bool>(S, PC)) return false;
202#if USE_TAILCALLS
203 MUSTTAIL return InterpNext(S, PC);
204#else
205 return true;
206#endif
207}
208PRESERVE_NONE
209static bool Interp_AddFixedPoint(InterpState &S, CodePtr &PC) {
210 if (!Add<PT_FixedPoint>(S, PC)) return false;
211#if USE_TAILCALLS
212 MUSTTAIL return InterpNext(S, PC);
213#else
214 return true;
215#endif
216}
217#endif
218#ifdef GET_DISASM
219case OP_AddSint8:
220 Text.Op = PrintName("AddSint8");
221 break;
222case OP_AddUint8:
223 Text.Op = PrintName("AddUint8");
224 break;
225case OP_AddSint16:
226 Text.Op = PrintName("AddSint16");
227 break;
228case OP_AddUint16:
229 Text.Op = PrintName("AddUint16");
230 break;
231case OP_AddSint32:
232 Text.Op = PrintName("AddSint32");
233 break;
234case OP_AddUint32:
235 Text.Op = PrintName("AddUint32");
236 break;
237case OP_AddSint64:
238 Text.Op = PrintName("AddSint64");
239 break;
240case OP_AddUint64:
241 Text.Op = PrintName("AddUint64");
242 break;
243case OP_AddIntAP:
244 Text.Op = PrintName("AddIntAP");
245 break;
246case OP_AddIntAPS:
247 Text.Op = PrintName("AddIntAPS");
248 break;
249case OP_AddBool:
250 Text.Op = PrintName("AddBool");
251 break;
252case OP_AddFixedPoint:
253 Text.Op = PrintName("AddFixedPoint");
254 break;
255#endif
256#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
257bool emitAddSint8(SourceInfo);
258bool emitAddUint8(SourceInfo);
259bool emitAddSint16(SourceInfo);
260bool emitAddUint16(SourceInfo);
261bool emitAddSint32(SourceInfo);
262bool emitAddUint32(SourceInfo);
263bool emitAddSint64(SourceInfo);
264bool emitAddUint64(SourceInfo);
265bool emitAddIntAP(SourceInfo);
266bool emitAddIntAPS(SourceInfo);
267bool emitAddBool(SourceInfo);
268bool emitAddFixedPoint(SourceInfo);
269#endif
270#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
271[[nodiscard]] bool emitAdd(PrimType, SourceInfo I);
272#endif
273#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
274bool
275#if defined(GET_EVAL_IMPL)
276EvalEmitter
277#else
278ByteCodeEmitter
279#endif
280::emitAdd(PrimType T0, SourceInfo I) {
281 switch (T0) {
282 case PT_Sint8:
283 return emitAddSint8(I);
284 case PT_Uint8:
285 return emitAddUint8(I);
286 case PT_Sint16:
287 return emitAddSint16(I);
288 case PT_Uint16:
289 return emitAddUint16(I);
290 case PT_Sint32:
291 return emitAddSint32(I);
292 case PT_Uint32:
293 return emitAddUint32(I);
294 case PT_Sint64:
295 return emitAddSint64(I);
296 case PT_Uint64:
297 return emitAddUint64(I);
298 case PT_IntAP:
299 return emitAddIntAP(I);
300 case PT_IntAPS:
301 return emitAddIntAPS(I);
302 case PT_Bool:
303 return emitAddBool(I);
304 case PT_FixedPoint:
305 return emitAddFixedPoint(I);
306 default: llvm_unreachable("invalid type: emitAdd");
307 }
308 llvm_unreachable("invalid enum value");
309}
310#endif
311#ifdef GET_LINK_IMPL
312bool ByteCodeEmitter::emitAddSint8(SourceInfo L) {
313 return emitOp<>(OP_AddSint8, L);
314}
315bool ByteCodeEmitter::emitAddUint8(SourceInfo L) {
316 return emitOp<>(OP_AddUint8, L);
317}
318bool ByteCodeEmitter::emitAddSint16(SourceInfo L) {
319 return emitOp<>(OP_AddSint16, L);
320}
321bool ByteCodeEmitter::emitAddUint16(SourceInfo L) {
322 return emitOp<>(OP_AddUint16, L);
323}
324bool ByteCodeEmitter::emitAddSint32(SourceInfo L) {
325 return emitOp<>(OP_AddSint32, L);
326}
327bool ByteCodeEmitter::emitAddUint32(SourceInfo L) {
328 return emitOp<>(OP_AddUint32, L);
329}
330bool ByteCodeEmitter::emitAddSint64(SourceInfo L) {
331 return emitOp<>(OP_AddSint64, L);
332}
333bool ByteCodeEmitter::emitAddUint64(SourceInfo L) {
334 return emitOp<>(OP_AddUint64, L);
335}
336bool ByteCodeEmitter::emitAddIntAP(SourceInfo L) {
337 return emitOp<>(OP_AddIntAP, L);
338}
339bool ByteCodeEmitter::emitAddIntAPS(SourceInfo L) {
340 return emitOp<>(OP_AddIntAPS, L);
341}
342bool ByteCodeEmitter::emitAddBool(SourceInfo L) {
343 return emitOp<>(OP_AddBool, L);
344}
345bool ByteCodeEmitter::emitAddFixedPoint(SourceInfo L) {
346 return emitOp<>(OP_AddFixedPoint, L);
347}
348#endif
349#ifdef GET_EVAL_IMPL
350bool EvalEmitter::emitAddSint8(SourceInfo L) {
351 if (!isActive()) return true;
352 CurrentSource = L;
353 return Add<PT_Sint8>(S, OpPC);
354}
355bool EvalEmitter::emitAddUint8(SourceInfo L) {
356 if (!isActive()) return true;
357 CurrentSource = L;
358 return Add<PT_Uint8>(S, OpPC);
359}
360bool EvalEmitter::emitAddSint16(SourceInfo L) {
361 if (!isActive()) return true;
362 CurrentSource = L;
363 return Add<PT_Sint16>(S, OpPC);
364}
365bool EvalEmitter::emitAddUint16(SourceInfo L) {
366 if (!isActive()) return true;
367 CurrentSource = L;
368 return Add<PT_Uint16>(S, OpPC);
369}
370bool EvalEmitter::emitAddSint32(SourceInfo L) {
371 if (!isActive()) return true;
372 CurrentSource = L;
373 return Add<PT_Sint32>(S, OpPC);
374}
375bool EvalEmitter::emitAddUint32(SourceInfo L) {
376 if (!isActive()) return true;
377 CurrentSource = L;
378 return Add<PT_Uint32>(S, OpPC);
379}
380bool EvalEmitter::emitAddSint64(SourceInfo L) {
381 if (!isActive()) return true;
382 CurrentSource = L;
383 return Add<PT_Sint64>(S, OpPC);
384}
385bool EvalEmitter::emitAddUint64(SourceInfo L) {
386 if (!isActive()) return true;
387 CurrentSource = L;
388 return Add<PT_Uint64>(S, OpPC);
389}
390bool EvalEmitter::emitAddIntAP(SourceInfo L) {
391 if (!isActive()) return true;
392 CurrentSource = L;
393 return Add<PT_IntAP>(S, OpPC);
394}
395bool EvalEmitter::emitAddIntAPS(SourceInfo L) {
396 if (!isActive()) return true;
397 CurrentSource = L;
398 return Add<PT_IntAPS>(S, OpPC);
399}
400bool EvalEmitter::emitAddBool(SourceInfo L) {
401 if (!isActive()) return true;
402 CurrentSource = L;
403 return Add<PT_Bool>(S, OpPC);
404}
405bool EvalEmitter::emitAddFixedPoint(SourceInfo L) {
406 if (!isActive()) return true;
407 CurrentSource = L;
408 return Add<PT_FixedPoint>(S, OpPC);
409}
410#endif
411#ifdef GET_OPCODE_NAMES
412OP_AddOffsetSint8,
413OP_AddOffsetUint8,
414OP_AddOffsetSint16,
415OP_AddOffsetUint16,
416OP_AddOffsetSint32,
417OP_AddOffsetUint32,
418OP_AddOffsetSint64,
419OP_AddOffsetUint64,
420OP_AddOffsetIntAP,
421OP_AddOffsetIntAPS,
422OP_AddOffsetBool,
423#endif
424#ifdef GET_INTERPFN_LIST
425&Interp_AddOffsetSint8,
426&Interp_AddOffsetUint8,
427&Interp_AddOffsetSint16,
428&Interp_AddOffsetUint16,
429&Interp_AddOffsetSint32,
430&Interp_AddOffsetUint32,
431&Interp_AddOffsetSint64,
432&Interp_AddOffsetUint64,
433&Interp_AddOffsetIntAP,
434&Interp_AddOffsetIntAPS,
435&Interp_AddOffsetBool,
436#endif
437#ifdef GET_INTERPFN_DISPATCHERS
438PRESERVE_NONE
439static bool Interp_AddOffsetSint8(InterpState &S, CodePtr &PC) {
440 if (!AddOffset<PT_Sint8>(S, PC)) return false;
441#if USE_TAILCALLS
442 MUSTTAIL return InterpNext(S, PC);
443#else
444 return true;
445#endif
446}
447PRESERVE_NONE
448static bool Interp_AddOffsetUint8(InterpState &S, CodePtr &PC) {
449 if (!AddOffset<PT_Uint8>(S, PC)) return false;
450#if USE_TAILCALLS
451 MUSTTAIL return InterpNext(S, PC);
452#else
453 return true;
454#endif
455}
456PRESERVE_NONE
457static bool Interp_AddOffsetSint16(InterpState &S, CodePtr &PC) {
458 if (!AddOffset<PT_Sint16>(S, PC)) return false;
459#if USE_TAILCALLS
460 MUSTTAIL return InterpNext(S, PC);
461#else
462 return true;
463#endif
464}
465PRESERVE_NONE
466static bool Interp_AddOffsetUint16(InterpState &S, CodePtr &PC) {
467 if (!AddOffset<PT_Uint16>(S, PC)) return false;
468#if USE_TAILCALLS
469 MUSTTAIL return InterpNext(S, PC);
470#else
471 return true;
472#endif
473}
474PRESERVE_NONE
475static bool Interp_AddOffsetSint32(InterpState &S, CodePtr &PC) {
476 if (!AddOffset<PT_Sint32>(S, PC)) return false;
477#if USE_TAILCALLS
478 MUSTTAIL return InterpNext(S, PC);
479#else
480 return true;
481#endif
482}
483PRESERVE_NONE
484static bool Interp_AddOffsetUint32(InterpState &S, CodePtr &PC) {
485 if (!AddOffset<PT_Uint32>(S, PC)) return false;
486#if USE_TAILCALLS
487 MUSTTAIL return InterpNext(S, PC);
488#else
489 return true;
490#endif
491}
492PRESERVE_NONE
493static bool Interp_AddOffsetSint64(InterpState &S, CodePtr &PC) {
494 if (!AddOffset<PT_Sint64>(S, PC)) return false;
495#if USE_TAILCALLS
496 MUSTTAIL return InterpNext(S, PC);
497#else
498 return true;
499#endif
500}
501PRESERVE_NONE
502static bool Interp_AddOffsetUint64(InterpState &S, CodePtr &PC) {
503 if (!AddOffset<PT_Uint64>(S, PC)) return false;
504#if USE_TAILCALLS
505 MUSTTAIL return InterpNext(S, PC);
506#else
507 return true;
508#endif
509}
510PRESERVE_NONE
511static bool Interp_AddOffsetIntAP(InterpState &S, CodePtr &PC) {
512 if (!AddOffset<PT_IntAP>(S, PC)) return false;
513#if USE_TAILCALLS
514 MUSTTAIL return InterpNext(S, PC);
515#else
516 return true;
517#endif
518}
519PRESERVE_NONE
520static bool Interp_AddOffsetIntAPS(InterpState &S, CodePtr &PC) {
521 if (!AddOffset<PT_IntAPS>(S, PC)) return false;
522#if USE_TAILCALLS
523 MUSTTAIL return InterpNext(S, PC);
524#else
525 return true;
526#endif
527}
528PRESERVE_NONE
529static bool Interp_AddOffsetBool(InterpState &S, CodePtr &PC) {
530 if (!AddOffset<PT_Bool>(S, PC)) return false;
531#if USE_TAILCALLS
532 MUSTTAIL return InterpNext(S, PC);
533#else
534 return true;
535#endif
536}
537#endif
538#ifdef GET_DISASM
539case OP_AddOffsetSint8:
540 Text.Op = PrintName("AddOffsetSint8");
541 break;
542case OP_AddOffsetUint8:
543 Text.Op = PrintName("AddOffsetUint8");
544 break;
545case OP_AddOffsetSint16:
546 Text.Op = PrintName("AddOffsetSint16");
547 break;
548case OP_AddOffsetUint16:
549 Text.Op = PrintName("AddOffsetUint16");
550 break;
551case OP_AddOffsetSint32:
552 Text.Op = PrintName("AddOffsetSint32");
553 break;
554case OP_AddOffsetUint32:
555 Text.Op = PrintName("AddOffsetUint32");
556 break;
557case OP_AddOffsetSint64:
558 Text.Op = PrintName("AddOffsetSint64");
559 break;
560case OP_AddOffsetUint64:
561 Text.Op = PrintName("AddOffsetUint64");
562 break;
563case OP_AddOffsetIntAP:
564 Text.Op = PrintName("AddOffsetIntAP");
565 break;
566case OP_AddOffsetIntAPS:
567 Text.Op = PrintName("AddOffsetIntAPS");
568 break;
569case OP_AddOffsetBool:
570 Text.Op = PrintName("AddOffsetBool");
571 break;
572#endif
573#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
574bool emitAddOffsetSint8(SourceInfo);
575bool emitAddOffsetUint8(SourceInfo);
576bool emitAddOffsetSint16(SourceInfo);
577bool emitAddOffsetUint16(SourceInfo);
578bool emitAddOffsetSint32(SourceInfo);
579bool emitAddOffsetUint32(SourceInfo);
580bool emitAddOffsetSint64(SourceInfo);
581bool emitAddOffsetUint64(SourceInfo);
582bool emitAddOffsetIntAP(SourceInfo);
583bool emitAddOffsetIntAPS(SourceInfo);
584bool emitAddOffsetBool(SourceInfo);
585#endif
586#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
587[[nodiscard]] bool emitAddOffset(PrimType, SourceInfo I);
588#endif
589#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
590bool
591#if defined(GET_EVAL_IMPL)
592EvalEmitter
593#else
594ByteCodeEmitter
595#endif
596::emitAddOffset(PrimType T0, SourceInfo I) {
597 switch (T0) {
598 case PT_Sint8:
599 return emitAddOffsetSint8(I);
600 case PT_Uint8:
601 return emitAddOffsetUint8(I);
602 case PT_Sint16:
603 return emitAddOffsetSint16(I);
604 case PT_Uint16:
605 return emitAddOffsetUint16(I);
606 case PT_Sint32:
607 return emitAddOffsetSint32(I);
608 case PT_Uint32:
609 return emitAddOffsetUint32(I);
610 case PT_Sint64:
611 return emitAddOffsetSint64(I);
612 case PT_Uint64:
613 return emitAddOffsetUint64(I);
614 case PT_IntAP:
615 return emitAddOffsetIntAP(I);
616 case PT_IntAPS:
617 return emitAddOffsetIntAPS(I);
618 case PT_Bool:
619 return emitAddOffsetBool(I);
620 default: llvm_unreachable("invalid type: emitAddOffset");
621 }
622 llvm_unreachable("invalid enum value");
623}
624#endif
625#ifdef GET_LINK_IMPL
626bool ByteCodeEmitter::emitAddOffsetSint8(SourceInfo L) {
627 return emitOp<>(OP_AddOffsetSint8, L);
628}
629bool ByteCodeEmitter::emitAddOffsetUint8(SourceInfo L) {
630 return emitOp<>(OP_AddOffsetUint8, L);
631}
632bool ByteCodeEmitter::emitAddOffsetSint16(SourceInfo L) {
633 return emitOp<>(OP_AddOffsetSint16, L);
634}
635bool ByteCodeEmitter::emitAddOffsetUint16(SourceInfo L) {
636 return emitOp<>(OP_AddOffsetUint16, L);
637}
638bool ByteCodeEmitter::emitAddOffsetSint32(SourceInfo L) {
639 return emitOp<>(OP_AddOffsetSint32, L);
640}
641bool ByteCodeEmitter::emitAddOffsetUint32(SourceInfo L) {
642 return emitOp<>(OP_AddOffsetUint32, L);
643}
644bool ByteCodeEmitter::emitAddOffsetSint64(SourceInfo L) {
645 return emitOp<>(OP_AddOffsetSint64, L);
646}
647bool ByteCodeEmitter::emitAddOffsetUint64(SourceInfo L) {
648 return emitOp<>(OP_AddOffsetUint64, L);
649}
650bool ByteCodeEmitter::emitAddOffsetIntAP(SourceInfo L) {
651 return emitOp<>(OP_AddOffsetIntAP, L);
652}
653bool ByteCodeEmitter::emitAddOffsetIntAPS(SourceInfo L) {
654 return emitOp<>(OP_AddOffsetIntAPS, L);
655}
656bool ByteCodeEmitter::emitAddOffsetBool(SourceInfo L) {
657 return emitOp<>(OP_AddOffsetBool, L);
658}
659#endif
660#ifdef GET_EVAL_IMPL
661bool EvalEmitter::emitAddOffsetSint8(SourceInfo L) {
662 if (!isActive()) return true;
663 CurrentSource = L;
664 return AddOffset<PT_Sint8>(S, OpPC);
665}
666bool EvalEmitter::emitAddOffsetUint8(SourceInfo L) {
667 if (!isActive()) return true;
668 CurrentSource = L;
669 return AddOffset<PT_Uint8>(S, OpPC);
670}
671bool EvalEmitter::emitAddOffsetSint16(SourceInfo L) {
672 if (!isActive()) return true;
673 CurrentSource = L;
674 return AddOffset<PT_Sint16>(S, OpPC);
675}
676bool EvalEmitter::emitAddOffsetUint16(SourceInfo L) {
677 if (!isActive()) return true;
678 CurrentSource = L;
679 return AddOffset<PT_Uint16>(S, OpPC);
680}
681bool EvalEmitter::emitAddOffsetSint32(SourceInfo L) {
682 if (!isActive()) return true;
683 CurrentSource = L;
684 return AddOffset<PT_Sint32>(S, OpPC);
685}
686bool EvalEmitter::emitAddOffsetUint32(SourceInfo L) {
687 if (!isActive()) return true;
688 CurrentSource = L;
689 return AddOffset<PT_Uint32>(S, OpPC);
690}
691bool EvalEmitter::emitAddOffsetSint64(SourceInfo L) {
692 if (!isActive()) return true;
693 CurrentSource = L;
694 return AddOffset<PT_Sint64>(S, OpPC);
695}
696bool EvalEmitter::emitAddOffsetUint64(SourceInfo L) {
697 if (!isActive()) return true;
698 CurrentSource = L;
699 return AddOffset<PT_Uint64>(S, OpPC);
700}
701bool EvalEmitter::emitAddOffsetIntAP(SourceInfo L) {
702 if (!isActive()) return true;
703 CurrentSource = L;
704 return AddOffset<PT_IntAP>(S, OpPC);
705}
706bool EvalEmitter::emitAddOffsetIntAPS(SourceInfo L) {
707 if (!isActive()) return true;
708 CurrentSource = L;
709 return AddOffset<PT_IntAPS>(S, OpPC);
710}
711bool EvalEmitter::emitAddOffsetBool(SourceInfo L) {
712 if (!isActive()) return true;
713 CurrentSource = L;
714 return AddOffset<PT_Bool>(S, OpPC);
715}
716#endif
717#ifdef GET_OPCODE_NAMES
718OP_Addf,
719#endif
720#ifdef GET_INTERPFN_LIST
721&Interp_Addf,
722#endif
723#ifdef GET_INTERPFN_DISPATCHERS
724PRESERVE_NONE
725static bool Interp_Addf(InterpState &S, CodePtr &PC) {
726 {
727 CodePtr OpPC = PC;
728 const auto V0 = ReadArg<uint32_t>(S, PC);
729 if (!Addf(S, OpPC, V0)) return false;
730 }
731#if USE_TAILCALLS
732 MUSTTAIL return InterpNext(S, PC);
733#else
734 return true;
735#endif
736}
737#endif
738#ifdef GET_DISASM
739case OP_Addf:
740 Text.Op = PrintName("Addf");
741 Text.Args.push_back(printArg<uint32_t>(P, PC));
742 break;
743#endif
744#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
745bool emitAddf( uint32_t , SourceInfo);
746#endif
747#ifdef GET_LINK_IMPL
748bool ByteCodeEmitter::emitAddf( uint32_t A0, SourceInfo L) {
749 return emitOp<uint32_t>(OP_Addf, A0, L);
750}
751#endif
752#ifdef GET_EVAL_IMPL
753bool EvalEmitter::emitAddf( uint32_t A0, SourceInfo L) {
754 if (!isActive()) return true;
755 CurrentSource = L;
756 return Addf(S, OpPC, A0);
757}
758#endif
759#ifdef GET_OPCODE_NAMES
760OP_Alloc,
761#endif
762#ifdef GET_INTERPFN_LIST
763&Interp_Alloc,
764#endif
765#ifdef GET_INTERPFN_DISPATCHERS
766PRESERVE_NONE
767static bool Interp_Alloc(InterpState &S, CodePtr &PC) {
768 {
769 CodePtr OpPC = PC;
770 const auto V0 = ReadArg<const Descriptor *>(S, PC);
771 if (!Alloc(S, OpPC, V0)) return false;
772 }
773#if USE_TAILCALLS
774 MUSTTAIL return InterpNext(S, PC);
775#else
776 return true;
777#endif
778}
779#endif
780#ifdef GET_DISASM
781case OP_Alloc:
782 Text.Op = PrintName("Alloc");
783 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
784 break;
785#endif
786#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
787bool emitAlloc( const Descriptor * , SourceInfo);
788#endif
789#ifdef GET_LINK_IMPL
790bool ByteCodeEmitter::emitAlloc( const Descriptor * A0, SourceInfo L) {
791 return emitOp<const Descriptor *>(OP_Alloc, A0, L);
792}
793#endif
794#ifdef GET_EVAL_IMPL
795bool EvalEmitter::emitAlloc( const Descriptor * A0, SourceInfo L) {
796 if (!isActive()) return true;
797 CurrentSource = L;
798 return Alloc(S, OpPC, A0);
799}
800#endif
801#ifdef GET_OPCODE_NAMES
802OP_AllocCNSint8,
803OP_AllocCNUint8,
804OP_AllocCNSint16,
805OP_AllocCNUint16,
806OP_AllocCNSint32,
807OP_AllocCNUint32,
808OP_AllocCNSint64,
809OP_AllocCNUint64,
810OP_AllocCNIntAP,
811OP_AllocCNIntAPS,
812OP_AllocCNBool,
813#endif
814#ifdef GET_INTERPFN_LIST
815&Interp_AllocCNSint8,
816&Interp_AllocCNUint8,
817&Interp_AllocCNSint16,
818&Interp_AllocCNUint16,
819&Interp_AllocCNSint32,
820&Interp_AllocCNUint32,
821&Interp_AllocCNSint64,
822&Interp_AllocCNUint64,
823&Interp_AllocCNIntAP,
824&Interp_AllocCNIntAPS,
825&Interp_AllocCNBool,
826#endif
827#ifdef GET_INTERPFN_DISPATCHERS
828PRESERVE_NONE
829static bool Interp_AllocCNSint8(InterpState &S, CodePtr &PC) {
830 {
831 CodePtr OpPC = PC;
832 const auto V0 = ReadArg<const Descriptor *>(S, PC);
833 const auto V1 = ReadArg<bool>(S, PC);
834 if (!AllocCN<PT_Sint8>(S, OpPC, V0, V1)) return false;
835 }
836#if USE_TAILCALLS
837 MUSTTAIL return InterpNext(S, PC);
838#else
839 return true;
840#endif
841}
842PRESERVE_NONE
843static bool Interp_AllocCNUint8(InterpState &S, CodePtr &PC) {
844 {
845 CodePtr OpPC = PC;
846 const auto V0 = ReadArg<const Descriptor *>(S, PC);
847 const auto V1 = ReadArg<bool>(S, PC);
848 if (!AllocCN<PT_Uint8>(S, OpPC, V0, V1)) return false;
849 }
850#if USE_TAILCALLS
851 MUSTTAIL return InterpNext(S, PC);
852#else
853 return true;
854#endif
855}
856PRESERVE_NONE
857static bool Interp_AllocCNSint16(InterpState &S, CodePtr &PC) {
858 {
859 CodePtr OpPC = PC;
860 const auto V0 = ReadArg<const Descriptor *>(S, PC);
861 const auto V1 = ReadArg<bool>(S, PC);
862 if (!AllocCN<PT_Sint16>(S, OpPC, V0, V1)) return false;
863 }
864#if USE_TAILCALLS
865 MUSTTAIL return InterpNext(S, PC);
866#else
867 return true;
868#endif
869}
870PRESERVE_NONE
871static bool Interp_AllocCNUint16(InterpState &S, CodePtr &PC) {
872 {
873 CodePtr OpPC = PC;
874 const auto V0 = ReadArg<const Descriptor *>(S, PC);
875 const auto V1 = ReadArg<bool>(S, PC);
876 if (!AllocCN<PT_Uint16>(S, OpPC, V0, V1)) return false;
877 }
878#if USE_TAILCALLS
879 MUSTTAIL return InterpNext(S, PC);
880#else
881 return true;
882#endif
883}
884PRESERVE_NONE
885static bool Interp_AllocCNSint32(InterpState &S, CodePtr &PC) {
886 {
887 CodePtr OpPC = PC;
888 const auto V0 = ReadArg<const Descriptor *>(S, PC);
889 const auto V1 = ReadArg<bool>(S, PC);
890 if (!AllocCN<PT_Sint32>(S, OpPC, V0, V1)) return false;
891 }
892#if USE_TAILCALLS
893 MUSTTAIL return InterpNext(S, PC);
894#else
895 return true;
896#endif
897}
898PRESERVE_NONE
899static bool Interp_AllocCNUint32(InterpState &S, CodePtr &PC) {
900 {
901 CodePtr OpPC = PC;
902 const auto V0 = ReadArg<const Descriptor *>(S, PC);
903 const auto V1 = ReadArg<bool>(S, PC);
904 if (!AllocCN<PT_Uint32>(S, OpPC, V0, V1)) return false;
905 }
906#if USE_TAILCALLS
907 MUSTTAIL return InterpNext(S, PC);
908#else
909 return true;
910#endif
911}
912PRESERVE_NONE
913static bool Interp_AllocCNSint64(InterpState &S, CodePtr &PC) {
914 {
915 CodePtr OpPC = PC;
916 const auto V0 = ReadArg<const Descriptor *>(S, PC);
917 const auto V1 = ReadArg<bool>(S, PC);
918 if (!AllocCN<PT_Sint64>(S, OpPC, V0, V1)) return false;
919 }
920#if USE_TAILCALLS
921 MUSTTAIL return InterpNext(S, PC);
922#else
923 return true;
924#endif
925}
926PRESERVE_NONE
927static bool Interp_AllocCNUint64(InterpState &S, CodePtr &PC) {
928 {
929 CodePtr OpPC = PC;
930 const auto V0 = ReadArg<const Descriptor *>(S, PC);
931 const auto V1 = ReadArg<bool>(S, PC);
932 if (!AllocCN<PT_Uint64>(S, OpPC, V0, V1)) return false;
933 }
934#if USE_TAILCALLS
935 MUSTTAIL return InterpNext(S, PC);
936#else
937 return true;
938#endif
939}
940PRESERVE_NONE
941static bool Interp_AllocCNIntAP(InterpState &S, CodePtr &PC) {
942 {
943 CodePtr OpPC = PC;
944 const auto V0 = ReadArg<const Descriptor *>(S, PC);
945 const auto V1 = ReadArg<bool>(S, PC);
946 if (!AllocCN<PT_IntAP>(S, OpPC, V0, V1)) return false;
947 }
948#if USE_TAILCALLS
949 MUSTTAIL return InterpNext(S, PC);
950#else
951 return true;
952#endif
953}
954PRESERVE_NONE
955static bool Interp_AllocCNIntAPS(InterpState &S, CodePtr &PC) {
956 {
957 CodePtr OpPC = PC;
958 const auto V0 = ReadArg<const Descriptor *>(S, PC);
959 const auto V1 = ReadArg<bool>(S, PC);
960 if (!AllocCN<PT_IntAPS>(S, OpPC, V0, V1)) return false;
961 }
962#if USE_TAILCALLS
963 MUSTTAIL return InterpNext(S, PC);
964#else
965 return true;
966#endif
967}
968PRESERVE_NONE
969static bool Interp_AllocCNBool(InterpState &S, CodePtr &PC) {
970 {
971 CodePtr OpPC = PC;
972 const auto V0 = ReadArg<const Descriptor *>(S, PC);
973 const auto V1 = ReadArg<bool>(S, PC);
974 if (!AllocCN<PT_Bool>(S, OpPC, V0, V1)) return false;
975 }
976#if USE_TAILCALLS
977 MUSTTAIL return InterpNext(S, PC);
978#else
979 return true;
980#endif
981}
982#endif
983#ifdef GET_DISASM
984case OP_AllocCNSint8:
985 Text.Op = PrintName("AllocCNSint8");
986 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
987 Text.Args.push_back(printArg<bool>(P, PC));
988 break;
989case OP_AllocCNUint8:
990 Text.Op = PrintName("AllocCNUint8");
991 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
992 Text.Args.push_back(printArg<bool>(P, PC));
993 break;
994case OP_AllocCNSint16:
995 Text.Op = PrintName("AllocCNSint16");
996 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
997 Text.Args.push_back(printArg<bool>(P, PC));
998 break;
999case OP_AllocCNUint16:
1000 Text.Op = PrintName("AllocCNUint16");
1001 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1002 Text.Args.push_back(printArg<bool>(P, PC));
1003 break;
1004case OP_AllocCNSint32:
1005 Text.Op = PrintName("AllocCNSint32");
1006 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1007 Text.Args.push_back(printArg<bool>(P, PC));
1008 break;
1009case OP_AllocCNUint32:
1010 Text.Op = PrintName("AllocCNUint32");
1011 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1012 Text.Args.push_back(printArg<bool>(P, PC));
1013 break;
1014case OP_AllocCNSint64:
1015 Text.Op = PrintName("AllocCNSint64");
1016 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1017 Text.Args.push_back(printArg<bool>(P, PC));
1018 break;
1019case OP_AllocCNUint64:
1020 Text.Op = PrintName("AllocCNUint64");
1021 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1022 Text.Args.push_back(printArg<bool>(P, PC));
1023 break;
1024case OP_AllocCNIntAP:
1025 Text.Op = PrintName("AllocCNIntAP");
1026 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1027 Text.Args.push_back(printArg<bool>(P, PC));
1028 break;
1029case OP_AllocCNIntAPS:
1030 Text.Op = PrintName("AllocCNIntAPS");
1031 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1032 Text.Args.push_back(printArg<bool>(P, PC));
1033 break;
1034case OP_AllocCNBool:
1035 Text.Op = PrintName("AllocCNBool");
1036 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
1037 Text.Args.push_back(printArg<bool>(P, PC));
1038 break;
1039#endif
1040#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1041bool emitAllocCNSint8( const Descriptor * , bool , SourceInfo);
1042bool emitAllocCNUint8( const Descriptor * , bool , SourceInfo);
1043bool emitAllocCNSint16( const Descriptor * , bool , SourceInfo);
1044bool emitAllocCNUint16( const Descriptor * , bool , SourceInfo);
1045bool emitAllocCNSint32( const Descriptor * , bool , SourceInfo);
1046bool emitAllocCNUint32( const Descriptor * , bool , SourceInfo);
1047bool emitAllocCNSint64( const Descriptor * , bool , SourceInfo);
1048bool emitAllocCNUint64( const Descriptor * , bool , SourceInfo);
1049bool emitAllocCNIntAP( const Descriptor * , bool , SourceInfo);
1050bool emitAllocCNIntAPS( const Descriptor * , bool , SourceInfo);
1051bool emitAllocCNBool( const Descriptor * , bool , SourceInfo);
1052#endif
1053#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1054[[nodiscard]] bool emitAllocCN(PrimType, const Descriptor *, bool, SourceInfo I);
1055#endif
1056#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
1057bool
1058#if defined(GET_EVAL_IMPL)
1059EvalEmitter
1060#else
1061ByteCodeEmitter
1062#endif
1063::emitAllocCN(PrimType T0, const Descriptor * A0, bool A1, SourceInfo I) {
1064 switch (T0) {
1065 case PT_Sint8:
1066 return emitAllocCNSint8(A0, A1, I);
1067 case PT_Uint8:
1068 return emitAllocCNUint8(A0, A1, I);
1069 case PT_Sint16:
1070 return emitAllocCNSint16(A0, A1, I);
1071 case PT_Uint16:
1072 return emitAllocCNUint16(A0, A1, I);
1073 case PT_Sint32:
1074 return emitAllocCNSint32(A0, A1, I);
1075 case PT_Uint32:
1076 return emitAllocCNUint32(A0, A1, I);
1077 case PT_Sint64:
1078 return emitAllocCNSint64(A0, A1, I);
1079 case PT_Uint64:
1080 return emitAllocCNUint64(A0, A1, I);
1081 case PT_IntAP:
1082 return emitAllocCNIntAP(A0, A1, I);
1083 case PT_IntAPS:
1084 return emitAllocCNIntAPS(A0, A1, I);
1085 case PT_Bool:
1086 return emitAllocCNBool(A0, A1, I);
1087 default: llvm_unreachable("invalid type: emitAllocCN");
1088 }
1089 llvm_unreachable("invalid enum value");
1090}
1091#endif
1092#ifdef GET_LINK_IMPL
1093bool ByteCodeEmitter::emitAllocCNSint8( const Descriptor * A0, bool A1, SourceInfo L) {
1094 return emitOp<const Descriptor *, bool>(OP_AllocCNSint8, A0, A1, L);
1095}
1096bool ByteCodeEmitter::emitAllocCNUint8( const Descriptor * A0, bool A1, SourceInfo L) {
1097 return emitOp<const Descriptor *, bool>(OP_AllocCNUint8, A0, A1, L);
1098}
1099bool ByteCodeEmitter::emitAllocCNSint16( const Descriptor * A0, bool A1, SourceInfo L) {
1100 return emitOp<const Descriptor *, bool>(OP_AllocCNSint16, A0, A1, L);
1101}
1102bool ByteCodeEmitter::emitAllocCNUint16( const Descriptor * A0, bool A1, SourceInfo L) {
1103 return emitOp<const Descriptor *, bool>(OP_AllocCNUint16, A0, A1, L);
1104}
1105bool ByteCodeEmitter::emitAllocCNSint32( const Descriptor * A0, bool A1, SourceInfo L) {
1106 return emitOp<const Descriptor *, bool>(OP_AllocCNSint32, A0, A1, L);
1107}
1108bool ByteCodeEmitter::emitAllocCNUint32( const Descriptor * A0, bool A1, SourceInfo L) {
1109 return emitOp<const Descriptor *, bool>(OP_AllocCNUint32, A0, A1, L);
1110}
1111bool ByteCodeEmitter::emitAllocCNSint64( const Descriptor * A0, bool A1, SourceInfo L) {
1112 return emitOp<const Descriptor *, bool>(OP_AllocCNSint64, A0, A1, L);
1113}
1114bool ByteCodeEmitter::emitAllocCNUint64( const Descriptor * A0, bool A1, SourceInfo L) {
1115 return emitOp<const Descriptor *, bool>(OP_AllocCNUint64, A0, A1, L);
1116}
1117bool ByteCodeEmitter::emitAllocCNIntAP( const Descriptor * A0, bool A1, SourceInfo L) {
1118 return emitOp<const Descriptor *, bool>(OP_AllocCNIntAP, A0, A1, L);
1119}
1120bool ByteCodeEmitter::emitAllocCNIntAPS( const Descriptor * A0, bool A1, SourceInfo L) {
1121 return emitOp<const Descriptor *, bool>(OP_AllocCNIntAPS, A0, A1, L);
1122}
1123bool ByteCodeEmitter::emitAllocCNBool( const Descriptor * A0, bool A1, SourceInfo L) {
1124 return emitOp<const Descriptor *, bool>(OP_AllocCNBool, A0, A1, L);
1125}
1126#endif
1127#ifdef GET_EVAL_IMPL
1128bool EvalEmitter::emitAllocCNSint8( const Descriptor * A0, bool A1, SourceInfo L) {
1129 if (!isActive()) return true;
1130 CurrentSource = L;
1131 return AllocCN<PT_Sint8>(S, OpPC, A0, A1);
1132}
1133bool EvalEmitter::emitAllocCNUint8( const Descriptor * A0, bool A1, SourceInfo L) {
1134 if (!isActive()) return true;
1135 CurrentSource = L;
1136 return AllocCN<PT_Uint8>(S, OpPC, A0, A1);
1137}
1138bool EvalEmitter::emitAllocCNSint16( const Descriptor * A0, bool A1, SourceInfo L) {
1139 if (!isActive()) return true;
1140 CurrentSource = L;
1141 return AllocCN<PT_Sint16>(S, OpPC, A0, A1);
1142}
1143bool EvalEmitter::emitAllocCNUint16( const Descriptor * A0, bool A1, SourceInfo L) {
1144 if (!isActive()) return true;
1145 CurrentSource = L;
1146 return AllocCN<PT_Uint16>(S, OpPC, A0, A1);
1147}
1148bool EvalEmitter::emitAllocCNSint32( const Descriptor * A0, bool A1, SourceInfo L) {
1149 if (!isActive()) return true;
1150 CurrentSource = L;
1151 return AllocCN<PT_Sint32>(S, OpPC, A0, A1);
1152}
1153bool EvalEmitter::emitAllocCNUint32( const Descriptor * A0, bool A1, SourceInfo L) {
1154 if (!isActive()) return true;
1155 CurrentSource = L;
1156 return AllocCN<PT_Uint32>(S, OpPC, A0, A1);
1157}
1158bool EvalEmitter::emitAllocCNSint64( const Descriptor * A0, bool A1, SourceInfo L) {
1159 if (!isActive()) return true;
1160 CurrentSource = L;
1161 return AllocCN<PT_Sint64>(S, OpPC, A0, A1);
1162}
1163bool EvalEmitter::emitAllocCNUint64( const Descriptor * A0, bool A1, SourceInfo L) {
1164 if (!isActive()) return true;
1165 CurrentSource = L;
1166 return AllocCN<PT_Uint64>(S, OpPC, A0, A1);
1167}
1168bool EvalEmitter::emitAllocCNIntAP( const Descriptor * A0, bool A1, SourceInfo L) {
1169 if (!isActive()) return true;
1170 CurrentSource = L;
1171 return AllocCN<PT_IntAP>(S, OpPC, A0, A1);
1172}
1173bool EvalEmitter::emitAllocCNIntAPS( const Descriptor * A0, bool A1, SourceInfo L) {
1174 if (!isActive()) return true;
1175 CurrentSource = L;
1176 return AllocCN<PT_IntAPS>(S, OpPC, A0, A1);
1177}
1178bool EvalEmitter::emitAllocCNBool( const Descriptor * A0, bool A1, SourceInfo L) {
1179 if (!isActive()) return true;
1180 CurrentSource = L;
1181 return AllocCN<PT_Bool>(S, OpPC, A0, A1);
1182}
1183#endif
1184#ifdef GET_OPCODE_NAMES
1185OP_AllocNSint8,
1186OP_AllocNUint8,
1187OP_AllocNSint16,
1188OP_AllocNUint16,
1189OP_AllocNSint32,
1190OP_AllocNUint32,
1191OP_AllocNSint64,
1192OP_AllocNUint64,
1193OP_AllocNIntAP,
1194OP_AllocNIntAPS,
1195OP_AllocNBool,
1196#endif
1197#ifdef GET_INTERPFN_LIST
1198&Interp_AllocNSint8,
1199&Interp_AllocNUint8,
1200&Interp_AllocNSint16,
1201&Interp_AllocNUint16,
1202&Interp_AllocNSint32,
1203&Interp_AllocNUint32,
1204&Interp_AllocNSint64,
1205&Interp_AllocNUint64,
1206&Interp_AllocNIntAP,
1207&Interp_AllocNIntAPS,
1208&Interp_AllocNBool,
1209#endif
1210#ifdef GET_INTERPFN_DISPATCHERS
1211PRESERVE_NONE
1212static bool Interp_AllocNSint8(InterpState &S, CodePtr &PC) {
1213 {
1214 CodePtr OpPC = PC;
1215 const auto V0 = ReadArg<PrimType>(S, PC);
1216 const auto V1 = ReadArg<const Expr *>(S, PC);
1217 const auto V2 = ReadArg<bool>(S, PC);
1218 if (!AllocN<PT_Sint8>(S, OpPC, V0, V1, V2)) return false;
1219 }
1220#if USE_TAILCALLS
1221 MUSTTAIL return InterpNext(S, PC);
1222#else
1223 return true;
1224#endif
1225}
1226PRESERVE_NONE
1227static bool Interp_AllocNUint8(InterpState &S, CodePtr &PC) {
1228 {
1229 CodePtr OpPC = PC;
1230 const auto V0 = ReadArg<PrimType>(S, PC);
1231 const auto V1 = ReadArg<const Expr *>(S, PC);
1232 const auto V2 = ReadArg<bool>(S, PC);
1233 if (!AllocN<PT_Uint8>(S, OpPC, V0, V1, V2)) return false;
1234 }
1235#if USE_TAILCALLS
1236 MUSTTAIL return InterpNext(S, PC);
1237#else
1238 return true;
1239#endif
1240}
1241PRESERVE_NONE
1242static bool Interp_AllocNSint16(InterpState &S, CodePtr &PC) {
1243 {
1244 CodePtr OpPC = PC;
1245 const auto V0 = ReadArg<PrimType>(S, PC);
1246 const auto V1 = ReadArg<const Expr *>(S, PC);
1247 const auto V2 = ReadArg<bool>(S, PC);
1248 if (!AllocN<PT_Sint16>(S, OpPC, V0, V1, V2)) return false;
1249 }
1250#if USE_TAILCALLS
1251 MUSTTAIL return InterpNext(S, PC);
1252#else
1253 return true;
1254#endif
1255}
1256PRESERVE_NONE
1257static bool Interp_AllocNUint16(InterpState &S, CodePtr &PC) {
1258 {
1259 CodePtr OpPC = PC;
1260 const auto V0 = ReadArg<PrimType>(S, PC);
1261 const auto V1 = ReadArg<const Expr *>(S, PC);
1262 const auto V2 = ReadArg<bool>(S, PC);
1263 if (!AllocN<PT_Uint16>(S, OpPC, V0, V1, V2)) return false;
1264 }
1265#if USE_TAILCALLS
1266 MUSTTAIL return InterpNext(S, PC);
1267#else
1268 return true;
1269#endif
1270}
1271PRESERVE_NONE
1272static bool Interp_AllocNSint32(InterpState &S, CodePtr &PC) {
1273 {
1274 CodePtr OpPC = PC;
1275 const auto V0 = ReadArg<PrimType>(S, PC);
1276 const auto V1 = ReadArg<const Expr *>(S, PC);
1277 const auto V2 = ReadArg<bool>(S, PC);
1278 if (!AllocN<PT_Sint32>(S, OpPC, V0, V1, V2)) return false;
1279 }
1280#if USE_TAILCALLS
1281 MUSTTAIL return InterpNext(S, PC);
1282#else
1283 return true;
1284#endif
1285}
1286PRESERVE_NONE
1287static bool Interp_AllocNUint32(InterpState &S, CodePtr &PC) {
1288 {
1289 CodePtr OpPC = PC;
1290 const auto V0 = ReadArg<PrimType>(S, PC);
1291 const auto V1 = ReadArg<const Expr *>(S, PC);
1292 const auto V2 = ReadArg<bool>(S, PC);
1293 if (!AllocN<PT_Uint32>(S, OpPC, V0, V1, V2)) return false;
1294 }
1295#if USE_TAILCALLS
1296 MUSTTAIL return InterpNext(S, PC);
1297#else
1298 return true;
1299#endif
1300}
1301PRESERVE_NONE
1302static bool Interp_AllocNSint64(InterpState &S, CodePtr &PC) {
1303 {
1304 CodePtr OpPC = PC;
1305 const auto V0 = ReadArg<PrimType>(S, PC);
1306 const auto V1 = ReadArg<const Expr *>(S, PC);
1307 const auto V2 = ReadArg<bool>(S, PC);
1308 if (!AllocN<PT_Sint64>(S, OpPC, V0, V1, V2)) return false;
1309 }
1310#if USE_TAILCALLS
1311 MUSTTAIL return InterpNext(S, PC);
1312#else
1313 return true;
1314#endif
1315}
1316PRESERVE_NONE
1317static bool Interp_AllocNUint64(InterpState &S, CodePtr &PC) {
1318 {
1319 CodePtr OpPC = PC;
1320 const auto V0 = ReadArg<PrimType>(S, PC);
1321 const auto V1 = ReadArg<const Expr *>(S, PC);
1322 const auto V2 = ReadArg<bool>(S, PC);
1323 if (!AllocN<PT_Uint64>(S, OpPC, V0, V1, V2)) return false;
1324 }
1325#if USE_TAILCALLS
1326 MUSTTAIL return InterpNext(S, PC);
1327#else
1328 return true;
1329#endif
1330}
1331PRESERVE_NONE
1332static bool Interp_AllocNIntAP(InterpState &S, CodePtr &PC) {
1333 {
1334 CodePtr OpPC = PC;
1335 const auto V0 = ReadArg<PrimType>(S, PC);
1336 const auto V1 = ReadArg<const Expr *>(S, PC);
1337 const auto V2 = ReadArg<bool>(S, PC);
1338 if (!AllocN<PT_IntAP>(S, OpPC, V0, V1, V2)) return false;
1339 }
1340#if USE_TAILCALLS
1341 MUSTTAIL return InterpNext(S, PC);
1342#else
1343 return true;
1344#endif
1345}
1346PRESERVE_NONE
1347static bool Interp_AllocNIntAPS(InterpState &S, CodePtr &PC) {
1348 {
1349 CodePtr OpPC = PC;
1350 const auto V0 = ReadArg<PrimType>(S, PC);
1351 const auto V1 = ReadArg<const Expr *>(S, PC);
1352 const auto V2 = ReadArg<bool>(S, PC);
1353 if (!AllocN<PT_IntAPS>(S, OpPC, V0, V1, V2)) return false;
1354 }
1355#if USE_TAILCALLS
1356 MUSTTAIL return InterpNext(S, PC);
1357#else
1358 return true;
1359#endif
1360}
1361PRESERVE_NONE
1362static bool Interp_AllocNBool(InterpState &S, CodePtr &PC) {
1363 {
1364 CodePtr OpPC = PC;
1365 const auto V0 = ReadArg<PrimType>(S, PC);
1366 const auto V1 = ReadArg<const Expr *>(S, PC);
1367 const auto V2 = ReadArg<bool>(S, PC);
1368 if (!AllocN<PT_Bool>(S, OpPC, V0, V1, V2)) return false;
1369 }
1370#if USE_TAILCALLS
1371 MUSTTAIL return InterpNext(S, PC);
1372#else
1373 return true;
1374#endif
1375}
1376#endif
1377#ifdef GET_DISASM
1378case OP_AllocNSint8:
1379 Text.Op = PrintName("AllocNSint8");
1380 Text.Args.push_back(printArg<PrimType>(P, PC));
1381 Text.Args.push_back(printArg<const Expr *>(P, PC));
1382 Text.Args.push_back(printArg<bool>(P, PC));
1383 break;
1384case OP_AllocNUint8:
1385 Text.Op = PrintName("AllocNUint8");
1386 Text.Args.push_back(printArg<PrimType>(P, PC));
1387 Text.Args.push_back(printArg<const Expr *>(P, PC));
1388 Text.Args.push_back(printArg<bool>(P, PC));
1389 break;
1390case OP_AllocNSint16:
1391 Text.Op = PrintName("AllocNSint16");
1392 Text.Args.push_back(printArg<PrimType>(P, PC));
1393 Text.Args.push_back(printArg<const Expr *>(P, PC));
1394 Text.Args.push_back(printArg<bool>(P, PC));
1395 break;
1396case OP_AllocNUint16:
1397 Text.Op = PrintName("AllocNUint16");
1398 Text.Args.push_back(printArg<PrimType>(P, PC));
1399 Text.Args.push_back(printArg<const Expr *>(P, PC));
1400 Text.Args.push_back(printArg<bool>(P, PC));
1401 break;
1402case OP_AllocNSint32:
1403 Text.Op = PrintName("AllocNSint32");
1404 Text.Args.push_back(printArg<PrimType>(P, PC));
1405 Text.Args.push_back(printArg<const Expr *>(P, PC));
1406 Text.Args.push_back(printArg<bool>(P, PC));
1407 break;
1408case OP_AllocNUint32:
1409 Text.Op = PrintName("AllocNUint32");
1410 Text.Args.push_back(printArg<PrimType>(P, PC));
1411 Text.Args.push_back(printArg<const Expr *>(P, PC));
1412 Text.Args.push_back(printArg<bool>(P, PC));
1413 break;
1414case OP_AllocNSint64:
1415 Text.Op = PrintName("AllocNSint64");
1416 Text.Args.push_back(printArg<PrimType>(P, PC));
1417 Text.Args.push_back(printArg<const Expr *>(P, PC));
1418 Text.Args.push_back(printArg<bool>(P, PC));
1419 break;
1420case OP_AllocNUint64:
1421 Text.Op = PrintName("AllocNUint64");
1422 Text.Args.push_back(printArg<PrimType>(P, PC));
1423 Text.Args.push_back(printArg<const Expr *>(P, PC));
1424 Text.Args.push_back(printArg<bool>(P, PC));
1425 break;
1426case OP_AllocNIntAP:
1427 Text.Op = PrintName("AllocNIntAP");
1428 Text.Args.push_back(printArg<PrimType>(P, PC));
1429 Text.Args.push_back(printArg<const Expr *>(P, PC));
1430 Text.Args.push_back(printArg<bool>(P, PC));
1431 break;
1432case OP_AllocNIntAPS:
1433 Text.Op = PrintName("AllocNIntAPS");
1434 Text.Args.push_back(printArg<PrimType>(P, PC));
1435 Text.Args.push_back(printArg<const Expr *>(P, PC));
1436 Text.Args.push_back(printArg<bool>(P, PC));
1437 break;
1438case OP_AllocNBool:
1439 Text.Op = PrintName("AllocNBool");
1440 Text.Args.push_back(printArg<PrimType>(P, PC));
1441 Text.Args.push_back(printArg<const Expr *>(P, PC));
1442 Text.Args.push_back(printArg<bool>(P, PC));
1443 break;
1444#endif
1445#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1446bool emitAllocNSint8( PrimType , const Expr * , bool , SourceInfo);
1447bool emitAllocNUint8( PrimType , const Expr * , bool , SourceInfo);
1448bool emitAllocNSint16( PrimType , const Expr * , bool , SourceInfo);
1449bool emitAllocNUint16( PrimType , const Expr * , bool , SourceInfo);
1450bool emitAllocNSint32( PrimType , const Expr * , bool , SourceInfo);
1451bool emitAllocNUint32( PrimType , const Expr * , bool , SourceInfo);
1452bool emitAllocNSint64( PrimType , const Expr * , bool , SourceInfo);
1453bool emitAllocNUint64( PrimType , const Expr * , bool , SourceInfo);
1454bool emitAllocNIntAP( PrimType , const Expr * , bool , SourceInfo);
1455bool emitAllocNIntAPS( PrimType , const Expr * , bool , SourceInfo);
1456bool emitAllocNBool( PrimType , const Expr * , bool , SourceInfo);
1457#endif
1458#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1459[[nodiscard]] bool emitAllocN(PrimType, PrimType, const Expr *, bool, SourceInfo I);
1460#endif
1461#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
1462bool
1463#if defined(GET_EVAL_IMPL)
1464EvalEmitter
1465#else
1466ByteCodeEmitter
1467#endif
1468::emitAllocN(PrimType T0, PrimType A0, const Expr * A1, bool A2, SourceInfo I) {
1469 switch (T0) {
1470 case PT_Sint8:
1471 return emitAllocNSint8(A0, A1, A2, I);
1472 case PT_Uint8:
1473 return emitAllocNUint8(A0, A1, A2, I);
1474 case PT_Sint16:
1475 return emitAllocNSint16(A0, A1, A2, I);
1476 case PT_Uint16:
1477 return emitAllocNUint16(A0, A1, A2, I);
1478 case PT_Sint32:
1479 return emitAllocNSint32(A0, A1, A2, I);
1480 case PT_Uint32:
1481 return emitAllocNUint32(A0, A1, A2, I);
1482 case PT_Sint64:
1483 return emitAllocNSint64(A0, A1, A2, I);
1484 case PT_Uint64:
1485 return emitAllocNUint64(A0, A1, A2, I);
1486 case PT_IntAP:
1487 return emitAllocNIntAP(A0, A1, A2, I);
1488 case PT_IntAPS:
1489 return emitAllocNIntAPS(A0, A1, A2, I);
1490 case PT_Bool:
1491 return emitAllocNBool(A0, A1, A2, I);
1492 default: llvm_unreachable("invalid type: emitAllocN");
1493 }
1494 llvm_unreachable("invalid enum value");
1495}
1496#endif
1497#ifdef GET_LINK_IMPL
1498bool ByteCodeEmitter::emitAllocNSint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1499 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint8, A0, A1, A2, L);
1500}
1501bool ByteCodeEmitter::emitAllocNUint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1502 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint8, A0, A1, A2, L);
1503}
1504bool ByteCodeEmitter::emitAllocNSint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1505 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint16, A0, A1, A2, L);
1506}
1507bool ByteCodeEmitter::emitAllocNUint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1508 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint16, A0, A1, A2, L);
1509}
1510bool ByteCodeEmitter::emitAllocNSint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1511 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint32, A0, A1, A2, L);
1512}
1513bool ByteCodeEmitter::emitAllocNUint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1514 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint32, A0, A1, A2, L);
1515}
1516bool ByteCodeEmitter::emitAllocNSint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1517 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint64, A0, A1, A2, L);
1518}
1519bool ByteCodeEmitter::emitAllocNUint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1520 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint64, A0, A1, A2, L);
1521}
1522bool ByteCodeEmitter::emitAllocNIntAP( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1523 return emitOp<PrimType, const Expr *, bool>(OP_AllocNIntAP, A0, A1, A2, L);
1524}
1525bool ByteCodeEmitter::emitAllocNIntAPS( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1526 return emitOp<PrimType, const Expr *, bool>(OP_AllocNIntAPS, A0, A1, A2, L);
1527}
1528bool ByteCodeEmitter::emitAllocNBool( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1529 return emitOp<PrimType, const Expr *, bool>(OP_AllocNBool, A0, A1, A2, L);
1530}
1531#endif
1532#ifdef GET_EVAL_IMPL
1533bool EvalEmitter::emitAllocNSint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1534 if (!isActive()) return true;
1535 CurrentSource = L;
1536 return AllocN<PT_Sint8>(S, OpPC, A0, A1, A2);
1537}
1538bool EvalEmitter::emitAllocNUint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1539 if (!isActive()) return true;
1540 CurrentSource = L;
1541 return AllocN<PT_Uint8>(S, OpPC, A0, A1, A2);
1542}
1543bool EvalEmitter::emitAllocNSint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1544 if (!isActive()) return true;
1545 CurrentSource = L;
1546 return AllocN<PT_Sint16>(S, OpPC, A0, A1, A2);
1547}
1548bool EvalEmitter::emitAllocNUint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1549 if (!isActive()) return true;
1550 CurrentSource = L;
1551 return AllocN<PT_Uint16>(S, OpPC, A0, A1, A2);
1552}
1553bool EvalEmitter::emitAllocNSint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1554 if (!isActive()) return true;
1555 CurrentSource = L;
1556 return AllocN<PT_Sint32>(S, OpPC, A0, A1, A2);
1557}
1558bool EvalEmitter::emitAllocNUint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1559 if (!isActive()) return true;
1560 CurrentSource = L;
1561 return AllocN<PT_Uint32>(S, OpPC, A0, A1, A2);
1562}
1563bool EvalEmitter::emitAllocNSint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1564 if (!isActive()) return true;
1565 CurrentSource = L;
1566 return AllocN<PT_Sint64>(S, OpPC, A0, A1, A2);
1567}
1568bool EvalEmitter::emitAllocNUint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1569 if (!isActive()) return true;
1570 CurrentSource = L;
1571 return AllocN<PT_Uint64>(S, OpPC, A0, A1, A2);
1572}
1573bool EvalEmitter::emitAllocNIntAP( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1574 if (!isActive()) return true;
1575 CurrentSource = L;
1576 return AllocN<PT_IntAP>(S, OpPC, A0, A1, A2);
1577}
1578bool EvalEmitter::emitAllocNIntAPS( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1579 if (!isActive()) return true;
1580 CurrentSource = L;
1581 return AllocN<PT_IntAPS>(S, OpPC, A0, A1, A2);
1582}
1583bool EvalEmitter::emitAllocNBool( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1584 if (!isActive()) return true;
1585 CurrentSource = L;
1586 return AllocN<PT_Bool>(S, OpPC, A0, A1, A2);
1587}
1588#endif
1589#ifdef GET_OPCODE_NAMES
1590OP_ArrayDecay,
1591#endif
1592#ifdef GET_INTERPFN_LIST
1593&Interp_ArrayDecay,
1594#endif
1595#ifdef GET_INTERPFN_DISPATCHERS
1596PRESERVE_NONE
1597static bool Interp_ArrayDecay(InterpState &S, CodePtr &PC) {
1598 if (!ArrayDecay(S, PC)) return false;
1599#if USE_TAILCALLS
1600 MUSTTAIL return InterpNext(S, PC);
1601#else
1602 return true;
1603#endif
1604}
1605#endif
1606#ifdef GET_DISASM
1607case OP_ArrayDecay:
1608 Text.Op = PrintName("ArrayDecay");
1609 break;
1610#endif
1611#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1612bool emitArrayDecay(SourceInfo);
1613#endif
1614#ifdef GET_LINK_IMPL
1615bool ByteCodeEmitter::emitArrayDecay(SourceInfo L) {
1616 return emitOp<>(OP_ArrayDecay, L);
1617}
1618#endif
1619#ifdef GET_EVAL_IMPL
1620bool EvalEmitter::emitArrayDecay(SourceInfo L) {
1621 if (!isActive()) return true;
1622 CurrentSource = L;
1623 return ArrayDecay(S, OpPC);
1624}
1625#endif
1626#ifdef GET_OPCODE_NAMES
1627OP_ArrayElemSint8,
1628OP_ArrayElemUint8,
1629OP_ArrayElemSint16,
1630OP_ArrayElemUint16,
1631OP_ArrayElemSint32,
1632OP_ArrayElemUint32,
1633OP_ArrayElemSint64,
1634OP_ArrayElemUint64,
1635OP_ArrayElemIntAP,
1636OP_ArrayElemIntAPS,
1637OP_ArrayElemBool,
1638OP_ArrayElemFixedPoint,
1639OP_ArrayElemPtr,
1640OP_ArrayElemMemberPtr,
1641OP_ArrayElemFloat,
1642#endif
1643#ifdef GET_INTERPFN_LIST
1644&Interp_ArrayElemSint8,
1645&Interp_ArrayElemUint8,
1646&Interp_ArrayElemSint16,
1647&Interp_ArrayElemUint16,
1648&Interp_ArrayElemSint32,
1649&Interp_ArrayElemUint32,
1650&Interp_ArrayElemSint64,
1651&Interp_ArrayElemUint64,
1652&Interp_ArrayElemIntAP,
1653&Interp_ArrayElemIntAPS,
1654&Interp_ArrayElemBool,
1655&Interp_ArrayElemFixedPoint,
1656&Interp_ArrayElemPtr,
1657&Interp_ArrayElemMemberPtr,
1658&Interp_ArrayElemFloat,
1659#endif
1660#ifdef GET_INTERPFN_DISPATCHERS
1661PRESERVE_NONE
1662static bool Interp_ArrayElemSint8(InterpState &S, CodePtr &PC) {
1663 {
1664 CodePtr OpPC = PC;
1665 const auto V0 = ReadArg<uint32_t>(S, PC);
1666 if (!ArrayElem<PT_Sint8>(S, OpPC, V0)) return false;
1667 }
1668#if USE_TAILCALLS
1669 MUSTTAIL return InterpNext(S, PC);
1670#else
1671 return true;
1672#endif
1673}
1674PRESERVE_NONE
1675static bool Interp_ArrayElemUint8(InterpState &S, CodePtr &PC) {
1676 {
1677 CodePtr OpPC = PC;
1678 const auto V0 = ReadArg<uint32_t>(S, PC);
1679 if (!ArrayElem<PT_Uint8>(S, OpPC, V0)) return false;
1680 }
1681#if USE_TAILCALLS
1682 MUSTTAIL return InterpNext(S, PC);
1683#else
1684 return true;
1685#endif
1686}
1687PRESERVE_NONE
1688static bool Interp_ArrayElemSint16(InterpState &S, CodePtr &PC) {
1689 {
1690 CodePtr OpPC = PC;
1691 const auto V0 = ReadArg<uint32_t>(S, PC);
1692 if (!ArrayElem<PT_Sint16>(S, OpPC, V0)) return false;
1693 }
1694#if USE_TAILCALLS
1695 MUSTTAIL return InterpNext(S, PC);
1696#else
1697 return true;
1698#endif
1699}
1700PRESERVE_NONE
1701static bool Interp_ArrayElemUint16(InterpState &S, CodePtr &PC) {
1702 {
1703 CodePtr OpPC = PC;
1704 const auto V0 = ReadArg<uint32_t>(S, PC);
1705 if (!ArrayElem<PT_Uint16>(S, OpPC, V0)) return false;
1706 }
1707#if USE_TAILCALLS
1708 MUSTTAIL return InterpNext(S, PC);
1709#else
1710 return true;
1711#endif
1712}
1713PRESERVE_NONE
1714static bool Interp_ArrayElemSint32(InterpState &S, CodePtr &PC) {
1715 {
1716 CodePtr OpPC = PC;
1717 const auto V0 = ReadArg<uint32_t>(S, PC);
1718 if (!ArrayElem<PT_Sint32>(S, OpPC, V0)) return false;
1719 }
1720#if USE_TAILCALLS
1721 MUSTTAIL return InterpNext(S, PC);
1722#else
1723 return true;
1724#endif
1725}
1726PRESERVE_NONE
1727static bool Interp_ArrayElemUint32(InterpState &S, CodePtr &PC) {
1728 {
1729 CodePtr OpPC = PC;
1730 const auto V0 = ReadArg<uint32_t>(S, PC);
1731 if (!ArrayElem<PT_Uint32>(S, OpPC, V0)) return false;
1732 }
1733#if USE_TAILCALLS
1734 MUSTTAIL return InterpNext(S, PC);
1735#else
1736 return true;
1737#endif
1738}
1739PRESERVE_NONE
1740static bool Interp_ArrayElemSint64(InterpState &S, CodePtr &PC) {
1741 {
1742 CodePtr OpPC = PC;
1743 const auto V0 = ReadArg<uint32_t>(S, PC);
1744 if (!ArrayElem<PT_Sint64>(S, OpPC, V0)) return false;
1745 }
1746#if USE_TAILCALLS
1747 MUSTTAIL return InterpNext(S, PC);
1748#else
1749 return true;
1750#endif
1751}
1752PRESERVE_NONE
1753static bool Interp_ArrayElemUint64(InterpState &S, CodePtr &PC) {
1754 {
1755 CodePtr OpPC = PC;
1756 const auto V0 = ReadArg<uint32_t>(S, PC);
1757 if (!ArrayElem<PT_Uint64>(S, OpPC, V0)) return false;
1758 }
1759#if USE_TAILCALLS
1760 MUSTTAIL return InterpNext(S, PC);
1761#else
1762 return true;
1763#endif
1764}
1765PRESERVE_NONE
1766static bool Interp_ArrayElemIntAP(InterpState &S, CodePtr &PC) {
1767 {
1768 CodePtr OpPC = PC;
1769 const auto V0 = ReadArg<uint32_t>(S, PC);
1770 if (!ArrayElem<PT_IntAP>(S, OpPC, V0)) return false;
1771 }
1772#if USE_TAILCALLS
1773 MUSTTAIL return InterpNext(S, PC);
1774#else
1775 return true;
1776#endif
1777}
1778PRESERVE_NONE
1779static bool Interp_ArrayElemIntAPS(InterpState &S, CodePtr &PC) {
1780 {
1781 CodePtr OpPC = PC;
1782 const auto V0 = ReadArg<uint32_t>(S, PC);
1783 if (!ArrayElem<PT_IntAPS>(S, OpPC, V0)) return false;
1784 }
1785#if USE_TAILCALLS
1786 MUSTTAIL return InterpNext(S, PC);
1787#else
1788 return true;
1789#endif
1790}
1791PRESERVE_NONE
1792static bool Interp_ArrayElemBool(InterpState &S, CodePtr &PC) {
1793 {
1794 CodePtr OpPC = PC;
1795 const auto V0 = ReadArg<uint32_t>(S, PC);
1796 if (!ArrayElem<PT_Bool>(S, OpPC, V0)) return false;
1797 }
1798#if USE_TAILCALLS
1799 MUSTTAIL return InterpNext(S, PC);
1800#else
1801 return true;
1802#endif
1803}
1804PRESERVE_NONE
1805static bool Interp_ArrayElemFixedPoint(InterpState &S, CodePtr &PC) {
1806 {
1807 CodePtr OpPC = PC;
1808 const auto V0 = ReadArg<uint32_t>(S, PC);
1809 if (!ArrayElem<PT_FixedPoint>(S, OpPC, V0)) return false;
1810 }
1811#if USE_TAILCALLS
1812 MUSTTAIL return InterpNext(S, PC);
1813#else
1814 return true;
1815#endif
1816}
1817PRESERVE_NONE
1818static bool Interp_ArrayElemPtr(InterpState &S, CodePtr &PC) {
1819 {
1820 CodePtr OpPC = PC;
1821 const auto V0 = ReadArg<uint32_t>(S, PC);
1822 if (!ArrayElem<PT_Ptr>(S, OpPC, V0)) return false;
1823 }
1824#if USE_TAILCALLS
1825 MUSTTAIL return InterpNext(S, PC);
1826#else
1827 return true;
1828#endif
1829}
1830PRESERVE_NONE
1831static bool Interp_ArrayElemMemberPtr(InterpState &S, CodePtr &PC) {
1832 {
1833 CodePtr OpPC = PC;
1834 const auto V0 = ReadArg<uint32_t>(S, PC);
1835 if (!ArrayElem<PT_MemberPtr>(S, OpPC, V0)) return false;
1836 }
1837#if USE_TAILCALLS
1838 MUSTTAIL return InterpNext(S, PC);
1839#else
1840 return true;
1841#endif
1842}
1843PRESERVE_NONE
1844static bool Interp_ArrayElemFloat(InterpState &S, CodePtr &PC) {
1845 {
1846 CodePtr OpPC = PC;
1847 const auto V0 = ReadArg<uint32_t>(S, PC);
1848 if (!ArrayElem<PT_Float>(S, OpPC, V0)) return false;
1849 }
1850#if USE_TAILCALLS
1851 MUSTTAIL return InterpNext(S, PC);
1852#else
1853 return true;
1854#endif
1855}
1856#endif
1857#ifdef GET_DISASM
1858case OP_ArrayElemSint8:
1859 Text.Op = PrintName("ArrayElemSint8");
1860 Text.Args.push_back(printArg<uint32_t>(P, PC));
1861 break;
1862case OP_ArrayElemUint8:
1863 Text.Op = PrintName("ArrayElemUint8");
1864 Text.Args.push_back(printArg<uint32_t>(P, PC));
1865 break;
1866case OP_ArrayElemSint16:
1867 Text.Op = PrintName("ArrayElemSint16");
1868 Text.Args.push_back(printArg<uint32_t>(P, PC));
1869 break;
1870case OP_ArrayElemUint16:
1871 Text.Op = PrintName("ArrayElemUint16");
1872 Text.Args.push_back(printArg<uint32_t>(P, PC));
1873 break;
1874case OP_ArrayElemSint32:
1875 Text.Op = PrintName("ArrayElemSint32");
1876 Text.Args.push_back(printArg<uint32_t>(P, PC));
1877 break;
1878case OP_ArrayElemUint32:
1879 Text.Op = PrintName("ArrayElemUint32");
1880 Text.Args.push_back(printArg<uint32_t>(P, PC));
1881 break;
1882case OP_ArrayElemSint64:
1883 Text.Op = PrintName("ArrayElemSint64");
1884 Text.Args.push_back(printArg<uint32_t>(P, PC));
1885 break;
1886case OP_ArrayElemUint64:
1887 Text.Op = PrintName("ArrayElemUint64");
1888 Text.Args.push_back(printArg<uint32_t>(P, PC));
1889 break;
1890case OP_ArrayElemIntAP:
1891 Text.Op = PrintName("ArrayElemIntAP");
1892 Text.Args.push_back(printArg<uint32_t>(P, PC));
1893 break;
1894case OP_ArrayElemIntAPS:
1895 Text.Op = PrintName("ArrayElemIntAPS");
1896 Text.Args.push_back(printArg<uint32_t>(P, PC));
1897 break;
1898case OP_ArrayElemBool:
1899 Text.Op = PrintName("ArrayElemBool");
1900 Text.Args.push_back(printArg<uint32_t>(P, PC));
1901 break;
1902case OP_ArrayElemFixedPoint:
1903 Text.Op = PrintName("ArrayElemFixedPoint");
1904 Text.Args.push_back(printArg<uint32_t>(P, PC));
1905 break;
1906case OP_ArrayElemPtr:
1907 Text.Op = PrintName("ArrayElemPtr");
1908 Text.Args.push_back(printArg<uint32_t>(P, PC));
1909 break;
1910case OP_ArrayElemMemberPtr:
1911 Text.Op = PrintName("ArrayElemMemberPtr");
1912 Text.Args.push_back(printArg<uint32_t>(P, PC));
1913 break;
1914case OP_ArrayElemFloat:
1915 Text.Op = PrintName("ArrayElemFloat");
1916 Text.Args.push_back(printArg<uint32_t>(P, PC));
1917 break;
1918#endif
1919#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1920bool emitArrayElemSint8( uint32_t , SourceInfo);
1921bool emitArrayElemUint8( uint32_t , SourceInfo);
1922bool emitArrayElemSint16( uint32_t , SourceInfo);
1923bool emitArrayElemUint16( uint32_t , SourceInfo);
1924bool emitArrayElemSint32( uint32_t , SourceInfo);
1925bool emitArrayElemUint32( uint32_t , SourceInfo);
1926bool emitArrayElemSint64( uint32_t , SourceInfo);
1927bool emitArrayElemUint64( uint32_t , SourceInfo);
1928bool emitArrayElemIntAP( uint32_t , SourceInfo);
1929bool emitArrayElemIntAPS( uint32_t , SourceInfo);
1930bool emitArrayElemBool( uint32_t , SourceInfo);
1931bool emitArrayElemFixedPoint( uint32_t , SourceInfo);
1932bool emitArrayElemPtr( uint32_t , SourceInfo);
1933bool emitArrayElemMemberPtr( uint32_t , SourceInfo);
1934bool emitArrayElemFloat( uint32_t , SourceInfo);
1935#endif
1936#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1937[[nodiscard]] bool emitArrayElem(PrimType, uint32_t, SourceInfo I);
1938#endif
1939#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
1940bool
1941#if defined(GET_EVAL_IMPL)
1942EvalEmitter
1943#else
1944ByteCodeEmitter
1945#endif
1946::emitArrayElem(PrimType T0, uint32_t A0, SourceInfo I) {
1947 switch (T0) {
1948 case PT_Sint8:
1949 return emitArrayElemSint8(A0, I);
1950 case PT_Uint8:
1951 return emitArrayElemUint8(A0, I);
1952 case PT_Sint16:
1953 return emitArrayElemSint16(A0, I);
1954 case PT_Uint16:
1955 return emitArrayElemUint16(A0, I);
1956 case PT_Sint32:
1957 return emitArrayElemSint32(A0, I);
1958 case PT_Uint32:
1959 return emitArrayElemUint32(A0, I);
1960 case PT_Sint64:
1961 return emitArrayElemSint64(A0, I);
1962 case PT_Uint64:
1963 return emitArrayElemUint64(A0, I);
1964 case PT_IntAP:
1965 return emitArrayElemIntAP(A0, I);
1966 case PT_IntAPS:
1967 return emitArrayElemIntAPS(A0, I);
1968 case PT_Bool:
1969 return emitArrayElemBool(A0, I);
1970 case PT_FixedPoint:
1971 return emitArrayElemFixedPoint(A0, I);
1972 case PT_Ptr:
1973 return emitArrayElemPtr(A0, I);
1974 case PT_MemberPtr:
1975 return emitArrayElemMemberPtr(A0, I);
1976 case PT_Float:
1977 return emitArrayElemFloat(A0, I);
1978 }
1979 llvm_unreachable("invalid enum value");
1980}
1981#endif
1982#ifdef GET_LINK_IMPL
1983bool ByteCodeEmitter::emitArrayElemSint8( uint32_t A0, SourceInfo L) {
1984 return emitOp<uint32_t>(OP_ArrayElemSint8, A0, L);
1985}
1986bool ByteCodeEmitter::emitArrayElemUint8( uint32_t A0, SourceInfo L) {
1987 return emitOp<uint32_t>(OP_ArrayElemUint8, A0, L);
1988}
1989bool ByteCodeEmitter::emitArrayElemSint16( uint32_t A0, SourceInfo L) {
1990 return emitOp<uint32_t>(OP_ArrayElemSint16, A0, L);
1991}
1992bool ByteCodeEmitter::emitArrayElemUint16( uint32_t A0, SourceInfo L) {
1993 return emitOp<uint32_t>(OP_ArrayElemUint16, A0, L);
1994}
1995bool ByteCodeEmitter::emitArrayElemSint32( uint32_t A0, SourceInfo L) {
1996 return emitOp<uint32_t>(OP_ArrayElemSint32, A0, L);
1997}
1998bool ByteCodeEmitter::emitArrayElemUint32( uint32_t A0, SourceInfo L) {
1999 return emitOp<uint32_t>(OP_ArrayElemUint32, A0, L);
2000}
2001bool ByteCodeEmitter::emitArrayElemSint64( uint32_t A0, SourceInfo L) {
2002 return emitOp<uint32_t>(OP_ArrayElemSint64, A0, L);
2003}
2004bool ByteCodeEmitter::emitArrayElemUint64( uint32_t A0, SourceInfo L) {
2005 return emitOp<uint32_t>(OP_ArrayElemUint64, A0, L);
2006}
2007bool ByteCodeEmitter::emitArrayElemIntAP( uint32_t A0, SourceInfo L) {
2008 return emitOp<uint32_t>(OP_ArrayElemIntAP, A0, L);
2009}
2010bool ByteCodeEmitter::emitArrayElemIntAPS( uint32_t A0, SourceInfo L) {
2011 return emitOp<uint32_t>(OP_ArrayElemIntAPS, A0, L);
2012}
2013bool ByteCodeEmitter::emitArrayElemBool( uint32_t A0, SourceInfo L) {
2014 return emitOp<uint32_t>(OP_ArrayElemBool, A0, L);
2015}
2016bool ByteCodeEmitter::emitArrayElemFixedPoint( uint32_t A0, SourceInfo L) {
2017 return emitOp<uint32_t>(OP_ArrayElemFixedPoint, A0, L);
2018}
2019bool ByteCodeEmitter::emitArrayElemPtr( uint32_t A0, SourceInfo L) {
2020 return emitOp<uint32_t>(OP_ArrayElemPtr, A0, L);
2021}
2022bool ByteCodeEmitter::emitArrayElemMemberPtr( uint32_t A0, SourceInfo L) {
2023 return emitOp<uint32_t>(OP_ArrayElemMemberPtr, A0, L);
2024}
2025bool ByteCodeEmitter::emitArrayElemFloat( uint32_t A0, SourceInfo L) {
2026 return emitOp<uint32_t>(OP_ArrayElemFloat, A0, L);
2027}
2028#endif
2029#ifdef GET_EVAL_IMPL
2030bool EvalEmitter::emitArrayElemSint8( uint32_t A0, SourceInfo L) {
2031 if (!isActive()) return true;
2032 CurrentSource = L;
2033 return ArrayElem<PT_Sint8>(S, OpPC, A0);
2034}
2035bool EvalEmitter::emitArrayElemUint8( uint32_t A0, SourceInfo L) {
2036 if (!isActive()) return true;
2037 CurrentSource = L;
2038 return ArrayElem<PT_Uint8>(S, OpPC, A0);
2039}
2040bool EvalEmitter::emitArrayElemSint16( uint32_t A0, SourceInfo L) {
2041 if (!isActive()) return true;
2042 CurrentSource = L;
2043 return ArrayElem<PT_Sint16>(S, OpPC, A0);
2044}
2045bool EvalEmitter::emitArrayElemUint16( uint32_t A0, SourceInfo L) {
2046 if (!isActive()) return true;
2047 CurrentSource = L;
2048 return ArrayElem<PT_Uint16>(S, OpPC, A0);
2049}
2050bool EvalEmitter::emitArrayElemSint32( uint32_t A0, SourceInfo L) {
2051 if (!isActive()) return true;
2052 CurrentSource = L;
2053 return ArrayElem<PT_Sint32>(S, OpPC, A0);
2054}
2055bool EvalEmitter::emitArrayElemUint32( uint32_t A0, SourceInfo L) {
2056 if (!isActive()) return true;
2057 CurrentSource = L;
2058 return ArrayElem<PT_Uint32>(S, OpPC, A0);
2059}
2060bool EvalEmitter::emitArrayElemSint64( uint32_t A0, SourceInfo L) {
2061 if (!isActive()) return true;
2062 CurrentSource = L;
2063 return ArrayElem<PT_Sint64>(S, OpPC, A0);
2064}
2065bool EvalEmitter::emitArrayElemUint64( uint32_t A0, SourceInfo L) {
2066 if (!isActive()) return true;
2067 CurrentSource = L;
2068 return ArrayElem<PT_Uint64>(S, OpPC, A0);
2069}
2070bool EvalEmitter::emitArrayElemIntAP( uint32_t A0, SourceInfo L) {
2071 if (!isActive()) return true;
2072 CurrentSource = L;
2073 return ArrayElem<PT_IntAP>(S, OpPC, A0);
2074}
2075bool EvalEmitter::emitArrayElemIntAPS( uint32_t A0, SourceInfo L) {
2076 if (!isActive()) return true;
2077 CurrentSource = L;
2078 return ArrayElem<PT_IntAPS>(S, OpPC, A0);
2079}
2080bool EvalEmitter::emitArrayElemBool( uint32_t A0, SourceInfo L) {
2081 if (!isActive()) return true;
2082 CurrentSource = L;
2083 return ArrayElem<PT_Bool>(S, OpPC, A0);
2084}
2085bool EvalEmitter::emitArrayElemFixedPoint( uint32_t A0, SourceInfo L) {
2086 if (!isActive()) return true;
2087 CurrentSource = L;
2088 return ArrayElem<PT_FixedPoint>(S, OpPC, A0);
2089}
2090bool EvalEmitter::emitArrayElemPtr( uint32_t A0, SourceInfo L) {
2091 if (!isActive()) return true;
2092 CurrentSource = L;
2093 return ArrayElem<PT_Ptr>(S, OpPC, A0);
2094}
2095bool EvalEmitter::emitArrayElemMemberPtr( uint32_t A0, SourceInfo L) {
2096 if (!isActive()) return true;
2097 CurrentSource = L;
2098 return ArrayElem<PT_MemberPtr>(S, OpPC, A0);
2099}
2100bool EvalEmitter::emitArrayElemFloat( uint32_t A0, SourceInfo L) {
2101 if (!isActive()) return true;
2102 CurrentSource = L;
2103 return ArrayElem<PT_Float>(S, OpPC, A0);
2104}
2105#endif
2106#ifdef GET_OPCODE_NAMES
2107OP_ArrayElemPopSint8,
2108OP_ArrayElemPopUint8,
2109OP_ArrayElemPopSint16,
2110OP_ArrayElemPopUint16,
2111OP_ArrayElemPopSint32,
2112OP_ArrayElemPopUint32,
2113OP_ArrayElemPopSint64,
2114OP_ArrayElemPopUint64,
2115OP_ArrayElemPopIntAP,
2116OP_ArrayElemPopIntAPS,
2117OP_ArrayElemPopBool,
2118OP_ArrayElemPopFixedPoint,
2119OP_ArrayElemPopPtr,
2120OP_ArrayElemPopMemberPtr,
2121OP_ArrayElemPopFloat,
2122#endif
2123#ifdef GET_INTERPFN_LIST
2124&Interp_ArrayElemPopSint8,
2125&Interp_ArrayElemPopUint8,
2126&Interp_ArrayElemPopSint16,
2127&Interp_ArrayElemPopUint16,
2128&Interp_ArrayElemPopSint32,
2129&Interp_ArrayElemPopUint32,
2130&Interp_ArrayElemPopSint64,
2131&Interp_ArrayElemPopUint64,
2132&Interp_ArrayElemPopIntAP,
2133&Interp_ArrayElemPopIntAPS,
2134&Interp_ArrayElemPopBool,
2135&Interp_ArrayElemPopFixedPoint,
2136&Interp_ArrayElemPopPtr,
2137&Interp_ArrayElemPopMemberPtr,
2138&Interp_ArrayElemPopFloat,
2139#endif
2140#ifdef GET_INTERPFN_DISPATCHERS
2141PRESERVE_NONE
2142static bool Interp_ArrayElemPopSint8(InterpState &S, CodePtr &PC) {
2143 {
2144 CodePtr OpPC = PC;
2145 const auto V0 = ReadArg<uint32_t>(S, PC);
2146 if (!ArrayElemPop<PT_Sint8>(S, OpPC, V0)) return false;
2147 }
2148#if USE_TAILCALLS
2149 MUSTTAIL return InterpNext(S, PC);
2150#else
2151 return true;
2152#endif
2153}
2154PRESERVE_NONE
2155static bool Interp_ArrayElemPopUint8(InterpState &S, CodePtr &PC) {
2156 {
2157 CodePtr OpPC = PC;
2158 const auto V0 = ReadArg<uint32_t>(S, PC);
2159 if (!ArrayElemPop<PT_Uint8>(S, OpPC, V0)) return false;
2160 }
2161#if USE_TAILCALLS
2162 MUSTTAIL return InterpNext(S, PC);
2163#else
2164 return true;
2165#endif
2166}
2167PRESERVE_NONE
2168static bool Interp_ArrayElemPopSint16(InterpState &S, CodePtr &PC) {
2169 {
2170 CodePtr OpPC = PC;
2171 const auto V0 = ReadArg<uint32_t>(S, PC);
2172 if (!ArrayElemPop<PT_Sint16>(S, OpPC, V0)) return false;
2173 }
2174#if USE_TAILCALLS
2175 MUSTTAIL return InterpNext(S, PC);
2176#else
2177 return true;
2178#endif
2179}
2180PRESERVE_NONE
2181static bool Interp_ArrayElemPopUint16(InterpState &S, CodePtr &PC) {
2182 {
2183 CodePtr OpPC = PC;
2184 const auto V0 = ReadArg<uint32_t>(S, PC);
2185 if (!ArrayElemPop<PT_Uint16>(S, OpPC, V0)) return false;
2186 }
2187#if USE_TAILCALLS
2188 MUSTTAIL return InterpNext(S, PC);
2189#else
2190 return true;
2191#endif
2192}
2193PRESERVE_NONE
2194static bool Interp_ArrayElemPopSint32(InterpState &S, CodePtr &PC) {
2195 {
2196 CodePtr OpPC = PC;
2197 const auto V0 = ReadArg<uint32_t>(S, PC);
2198 if (!ArrayElemPop<PT_Sint32>(S, OpPC, V0)) return false;
2199 }
2200#if USE_TAILCALLS
2201 MUSTTAIL return InterpNext(S, PC);
2202#else
2203 return true;
2204#endif
2205}
2206PRESERVE_NONE
2207static bool Interp_ArrayElemPopUint32(InterpState &S, CodePtr &PC) {
2208 {
2209 CodePtr OpPC = PC;
2210 const auto V0 = ReadArg<uint32_t>(S, PC);
2211 if (!ArrayElemPop<PT_Uint32>(S, OpPC, V0)) return false;
2212 }
2213#if USE_TAILCALLS
2214 MUSTTAIL return InterpNext(S, PC);
2215#else
2216 return true;
2217#endif
2218}
2219PRESERVE_NONE
2220static bool Interp_ArrayElemPopSint64(InterpState &S, CodePtr &PC) {
2221 {
2222 CodePtr OpPC = PC;
2223 const auto V0 = ReadArg<uint32_t>(S, PC);
2224 if (!ArrayElemPop<PT_Sint64>(S, OpPC, V0)) return false;
2225 }
2226#if USE_TAILCALLS
2227 MUSTTAIL return InterpNext(S, PC);
2228#else
2229 return true;
2230#endif
2231}
2232PRESERVE_NONE
2233static bool Interp_ArrayElemPopUint64(InterpState &S, CodePtr &PC) {
2234 {
2235 CodePtr OpPC = PC;
2236 const auto V0 = ReadArg<uint32_t>(S, PC);
2237 if (!ArrayElemPop<PT_Uint64>(S, OpPC, V0)) return false;
2238 }
2239#if USE_TAILCALLS
2240 MUSTTAIL return InterpNext(S, PC);
2241#else
2242 return true;
2243#endif
2244}
2245PRESERVE_NONE
2246static bool Interp_ArrayElemPopIntAP(InterpState &S, CodePtr &PC) {
2247 {
2248 CodePtr OpPC = PC;
2249 const auto V0 = ReadArg<uint32_t>(S, PC);
2250 if (!ArrayElemPop<PT_IntAP>(S, OpPC, V0)) return false;
2251 }
2252#if USE_TAILCALLS
2253 MUSTTAIL return InterpNext(S, PC);
2254#else
2255 return true;
2256#endif
2257}
2258PRESERVE_NONE
2259static bool Interp_ArrayElemPopIntAPS(InterpState &S, CodePtr &PC) {
2260 {
2261 CodePtr OpPC = PC;
2262 const auto V0 = ReadArg<uint32_t>(S, PC);
2263 if (!ArrayElemPop<PT_IntAPS>(S, OpPC, V0)) return false;
2264 }
2265#if USE_TAILCALLS
2266 MUSTTAIL return InterpNext(S, PC);
2267#else
2268 return true;
2269#endif
2270}
2271PRESERVE_NONE
2272static bool Interp_ArrayElemPopBool(InterpState &S, CodePtr &PC) {
2273 {
2274 CodePtr OpPC = PC;
2275 const auto V0 = ReadArg<uint32_t>(S, PC);
2276 if (!ArrayElemPop<PT_Bool>(S, OpPC, V0)) return false;
2277 }
2278#if USE_TAILCALLS
2279 MUSTTAIL return InterpNext(S, PC);
2280#else
2281 return true;
2282#endif
2283}
2284PRESERVE_NONE
2285static bool Interp_ArrayElemPopFixedPoint(InterpState &S, CodePtr &PC) {
2286 {
2287 CodePtr OpPC = PC;
2288 const auto V0 = ReadArg<uint32_t>(S, PC);
2289 if (!ArrayElemPop<PT_FixedPoint>(S, OpPC, V0)) return false;
2290 }
2291#if USE_TAILCALLS
2292 MUSTTAIL return InterpNext(S, PC);
2293#else
2294 return true;
2295#endif
2296}
2297PRESERVE_NONE
2298static bool Interp_ArrayElemPopPtr(InterpState &S, CodePtr &PC) {
2299 {
2300 CodePtr OpPC = PC;
2301 const auto V0 = ReadArg<uint32_t>(S, PC);
2302 if (!ArrayElemPop<PT_Ptr>(S, OpPC, V0)) return false;
2303 }
2304#if USE_TAILCALLS
2305 MUSTTAIL return InterpNext(S, PC);
2306#else
2307 return true;
2308#endif
2309}
2310PRESERVE_NONE
2311static bool Interp_ArrayElemPopMemberPtr(InterpState &S, CodePtr &PC) {
2312 {
2313 CodePtr OpPC = PC;
2314 const auto V0 = ReadArg<uint32_t>(S, PC);
2315 if (!ArrayElemPop<PT_MemberPtr>(S, OpPC, V0)) return false;
2316 }
2317#if USE_TAILCALLS
2318 MUSTTAIL return InterpNext(S, PC);
2319#else
2320 return true;
2321#endif
2322}
2323PRESERVE_NONE
2324static bool Interp_ArrayElemPopFloat(InterpState &S, CodePtr &PC) {
2325 {
2326 CodePtr OpPC = PC;
2327 const auto V0 = ReadArg<uint32_t>(S, PC);
2328 if (!ArrayElemPop<PT_Float>(S, OpPC, V0)) return false;
2329 }
2330#if USE_TAILCALLS
2331 MUSTTAIL return InterpNext(S, PC);
2332#else
2333 return true;
2334#endif
2335}
2336#endif
2337#ifdef GET_DISASM
2338case OP_ArrayElemPopSint8:
2339 Text.Op = PrintName("ArrayElemPopSint8");
2340 Text.Args.push_back(printArg<uint32_t>(P, PC));
2341 break;
2342case OP_ArrayElemPopUint8:
2343 Text.Op = PrintName("ArrayElemPopUint8");
2344 Text.Args.push_back(printArg<uint32_t>(P, PC));
2345 break;
2346case OP_ArrayElemPopSint16:
2347 Text.Op = PrintName("ArrayElemPopSint16");
2348 Text.Args.push_back(printArg<uint32_t>(P, PC));
2349 break;
2350case OP_ArrayElemPopUint16:
2351 Text.Op = PrintName("ArrayElemPopUint16");
2352 Text.Args.push_back(printArg<uint32_t>(P, PC));
2353 break;
2354case OP_ArrayElemPopSint32:
2355 Text.Op = PrintName("ArrayElemPopSint32");
2356 Text.Args.push_back(printArg<uint32_t>(P, PC));
2357 break;
2358case OP_ArrayElemPopUint32:
2359 Text.Op = PrintName("ArrayElemPopUint32");
2360 Text.Args.push_back(printArg<uint32_t>(P, PC));
2361 break;
2362case OP_ArrayElemPopSint64:
2363 Text.Op = PrintName("ArrayElemPopSint64");
2364 Text.Args.push_back(printArg<uint32_t>(P, PC));
2365 break;
2366case OP_ArrayElemPopUint64:
2367 Text.Op = PrintName("ArrayElemPopUint64");
2368 Text.Args.push_back(printArg<uint32_t>(P, PC));
2369 break;
2370case OP_ArrayElemPopIntAP:
2371 Text.Op = PrintName("ArrayElemPopIntAP");
2372 Text.Args.push_back(printArg<uint32_t>(P, PC));
2373 break;
2374case OP_ArrayElemPopIntAPS:
2375 Text.Op = PrintName("ArrayElemPopIntAPS");
2376 Text.Args.push_back(printArg<uint32_t>(P, PC));
2377 break;
2378case OP_ArrayElemPopBool:
2379 Text.Op = PrintName("ArrayElemPopBool");
2380 Text.Args.push_back(printArg<uint32_t>(P, PC));
2381 break;
2382case OP_ArrayElemPopFixedPoint:
2383 Text.Op = PrintName("ArrayElemPopFixedPoint");
2384 Text.Args.push_back(printArg<uint32_t>(P, PC));
2385 break;
2386case OP_ArrayElemPopPtr:
2387 Text.Op = PrintName("ArrayElemPopPtr");
2388 Text.Args.push_back(printArg<uint32_t>(P, PC));
2389 break;
2390case OP_ArrayElemPopMemberPtr:
2391 Text.Op = PrintName("ArrayElemPopMemberPtr");
2392 Text.Args.push_back(printArg<uint32_t>(P, PC));
2393 break;
2394case OP_ArrayElemPopFloat:
2395 Text.Op = PrintName("ArrayElemPopFloat");
2396 Text.Args.push_back(printArg<uint32_t>(P, PC));
2397 break;
2398#endif
2399#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2400bool emitArrayElemPopSint8( uint32_t , SourceInfo);
2401bool emitArrayElemPopUint8( uint32_t , SourceInfo);
2402bool emitArrayElemPopSint16( uint32_t , SourceInfo);
2403bool emitArrayElemPopUint16( uint32_t , SourceInfo);
2404bool emitArrayElemPopSint32( uint32_t , SourceInfo);
2405bool emitArrayElemPopUint32( uint32_t , SourceInfo);
2406bool emitArrayElemPopSint64( uint32_t , SourceInfo);
2407bool emitArrayElemPopUint64( uint32_t , SourceInfo);
2408bool emitArrayElemPopIntAP( uint32_t , SourceInfo);
2409bool emitArrayElemPopIntAPS( uint32_t , SourceInfo);
2410bool emitArrayElemPopBool( uint32_t , SourceInfo);
2411bool emitArrayElemPopFixedPoint( uint32_t , SourceInfo);
2412bool emitArrayElemPopPtr( uint32_t , SourceInfo);
2413bool emitArrayElemPopMemberPtr( uint32_t , SourceInfo);
2414bool emitArrayElemPopFloat( uint32_t , SourceInfo);
2415#endif
2416#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2417[[nodiscard]] bool emitArrayElemPop(PrimType, uint32_t, SourceInfo I);
2418#endif
2419#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
2420bool
2421#if defined(GET_EVAL_IMPL)
2422EvalEmitter
2423#else
2424ByteCodeEmitter
2425#endif
2426::emitArrayElemPop(PrimType T0, uint32_t A0, SourceInfo I) {
2427 switch (T0) {
2428 case PT_Sint8:
2429 return emitArrayElemPopSint8(A0, I);
2430 case PT_Uint8:
2431 return emitArrayElemPopUint8(A0, I);
2432 case PT_Sint16:
2433 return emitArrayElemPopSint16(A0, I);
2434 case PT_Uint16:
2435 return emitArrayElemPopUint16(A0, I);
2436 case PT_Sint32:
2437 return emitArrayElemPopSint32(A0, I);
2438 case PT_Uint32:
2439 return emitArrayElemPopUint32(A0, I);
2440 case PT_Sint64:
2441 return emitArrayElemPopSint64(A0, I);
2442 case PT_Uint64:
2443 return emitArrayElemPopUint64(A0, I);
2444 case PT_IntAP:
2445 return emitArrayElemPopIntAP(A0, I);
2446 case PT_IntAPS:
2447 return emitArrayElemPopIntAPS(A0, I);
2448 case PT_Bool:
2449 return emitArrayElemPopBool(A0, I);
2450 case PT_FixedPoint:
2451 return emitArrayElemPopFixedPoint(A0, I);
2452 case PT_Ptr:
2453 return emitArrayElemPopPtr(A0, I);
2454 case PT_MemberPtr:
2455 return emitArrayElemPopMemberPtr(A0, I);
2456 case PT_Float:
2457 return emitArrayElemPopFloat(A0, I);
2458 }
2459 llvm_unreachable("invalid enum value");
2460}
2461#endif
2462#ifdef GET_LINK_IMPL
2463bool ByteCodeEmitter::emitArrayElemPopSint8( uint32_t A0, SourceInfo L) {
2464 return emitOp<uint32_t>(OP_ArrayElemPopSint8, A0, L);
2465}
2466bool ByteCodeEmitter::emitArrayElemPopUint8( uint32_t A0, SourceInfo L) {
2467 return emitOp<uint32_t>(OP_ArrayElemPopUint8, A0, L);
2468}
2469bool ByteCodeEmitter::emitArrayElemPopSint16( uint32_t A0, SourceInfo L) {
2470 return emitOp<uint32_t>(OP_ArrayElemPopSint16, A0, L);
2471}
2472bool ByteCodeEmitter::emitArrayElemPopUint16( uint32_t A0, SourceInfo L) {
2473 return emitOp<uint32_t>(OP_ArrayElemPopUint16, A0, L);
2474}
2475bool ByteCodeEmitter::emitArrayElemPopSint32( uint32_t A0, SourceInfo L) {
2476 return emitOp<uint32_t>(OP_ArrayElemPopSint32, A0, L);
2477}
2478bool ByteCodeEmitter::emitArrayElemPopUint32( uint32_t A0, SourceInfo L) {
2479 return emitOp<uint32_t>(OP_ArrayElemPopUint32, A0, L);
2480}
2481bool ByteCodeEmitter::emitArrayElemPopSint64( uint32_t A0, SourceInfo L) {
2482 return emitOp<uint32_t>(OP_ArrayElemPopSint64, A0, L);
2483}
2484bool ByteCodeEmitter::emitArrayElemPopUint64( uint32_t A0, SourceInfo L) {
2485 return emitOp<uint32_t>(OP_ArrayElemPopUint64, A0, L);
2486}
2487bool ByteCodeEmitter::emitArrayElemPopIntAP( uint32_t A0, SourceInfo L) {
2488 return emitOp<uint32_t>(OP_ArrayElemPopIntAP, A0, L);
2489}
2490bool ByteCodeEmitter::emitArrayElemPopIntAPS( uint32_t A0, SourceInfo L) {
2491 return emitOp<uint32_t>(OP_ArrayElemPopIntAPS, A0, L);
2492}
2493bool ByteCodeEmitter::emitArrayElemPopBool( uint32_t A0, SourceInfo L) {
2494 return emitOp<uint32_t>(OP_ArrayElemPopBool, A0, L);
2495}
2496bool ByteCodeEmitter::emitArrayElemPopFixedPoint( uint32_t A0, SourceInfo L) {
2497 return emitOp<uint32_t>(OP_ArrayElemPopFixedPoint, A0, L);
2498}
2499bool ByteCodeEmitter::emitArrayElemPopPtr( uint32_t A0, SourceInfo L) {
2500 return emitOp<uint32_t>(OP_ArrayElemPopPtr, A0, L);
2501}
2502bool ByteCodeEmitter::emitArrayElemPopMemberPtr( uint32_t A0, SourceInfo L) {
2503 return emitOp<uint32_t>(OP_ArrayElemPopMemberPtr, A0, L);
2504}
2505bool ByteCodeEmitter::emitArrayElemPopFloat( uint32_t A0, SourceInfo L) {
2506 return emitOp<uint32_t>(OP_ArrayElemPopFloat, A0, L);
2507}
2508#endif
2509#ifdef GET_EVAL_IMPL
2510bool EvalEmitter::emitArrayElemPopSint8( uint32_t A0, SourceInfo L) {
2511 if (!isActive()) return true;
2512 CurrentSource = L;
2513 return ArrayElemPop<PT_Sint8>(S, OpPC, A0);
2514}
2515bool EvalEmitter::emitArrayElemPopUint8( uint32_t A0, SourceInfo L) {
2516 if (!isActive()) return true;
2517 CurrentSource = L;
2518 return ArrayElemPop<PT_Uint8>(S, OpPC, A0);
2519}
2520bool EvalEmitter::emitArrayElemPopSint16( uint32_t A0, SourceInfo L) {
2521 if (!isActive()) return true;
2522 CurrentSource = L;
2523 return ArrayElemPop<PT_Sint16>(S, OpPC, A0);
2524}
2525bool EvalEmitter::emitArrayElemPopUint16( uint32_t A0, SourceInfo L) {
2526 if (!isActive()) return true;
2527 CurrentSource = L;
2528 return ArrayElemPop<PT_Uint16>(S, OpPC, A0);
2529}
2530bool EvalEmitter::emitArrayElemPopSint32( uint32_t A0, SourceInfo L) {
2531 if (!isActive()) return true;
2532 CurrentSource = L;
2533 return ArrayElemPop<PT_Sint32>(S, OpPC, A0);
2534}
2535bool EvalEmitter::emitArrayElemPopUint32( uint32_t A0, SourceInfo L) {
2536 if (!isActive()) return true;
2537 CurrentSource = L;
2538 return ArrayElemPop<PT_Uint32>(S, OpPC, A0);
2539}
2540bool EvalEmitter::emitArrayElemPopSint64( uint32_t A0, SourceInfo L) {
2541 if (!isActive()) return true;
2542 CurrentSource = L;
2543 return ArrayElemPop<PT_Sint64>(S, OpPC, A0);
2544}
2545bool EvalEmitter::emitArrayElemPopUint64( uint32_t A0, SourceInfo L) {
2546 if (!isActive()) return true;
2547 CurrentSource = L;
2548 return ArrayElemPop<PT_Uint64>(S, OpPC, A0);
2549}
2550bool EvalEmitter::emitArrayElemPopIntAP( uint32_t A0, SourceInfo L) {
2551 if (!isActive()) return true;
2552 CurrentSource = L;
2553 return ArrayElemPop<PT_IntAP>(S, OpPC, A0);
2554}
2555bool EvalEmitter::emitArrayElemPopIntAPS( uint32_t A0, SourceInfo L) {
2556 if (!isActive()) return true;
2557 CurrentSource = L;
2558 return ArrayElemPop<PT_IntAPS>(S, OpPC, A0);
2559}
2560bool EvalEmitter::emitArrayElemPopBool( uint32_t A0, SourceInfo L) {
2561 if (!isActive()) return true;
2562 CurrentSource = L;
2563 return ArrayElemPop<PT_Bool>(S, OpPC, A0);
2564}
2565bool EvalEmitter::emitArrayElemPopFixedPoint( uint32_t A0, SourceInfo L) {
2566 if (!isActive()) return true;
2567 CurrentSource = L;
2568 return ArrayElemPop<PT_FixedPoint>(S, OpPC, A0);
2569}
2570bool EvalEmitter::emitArrayElemPopPtr( uint32_t A0, SourceInfo L) {
2571 if (!isActive()) return true;
2572 CurrentSource = L;
2573 return ArrayElemPop<PT_Ptr>(S, OpPC, A0);
2574}
2575bool EvalEmitter::emitArrayElemPopMemberPtr( uint32_t A0, SourceInfo L) {
2576 if (!isActive()) return true;
2577 CurrentSource = L;
2578 return ArrayElemPop<PT_MemberPtr>(S, OpPC, A0);
2579}
2580bool EvalEmitter::emitArrayElemPopFloat( uint32_t A0, SourceInfo L) {
2581 if (!isActive()) return true;
2582 CurrentSource = L;
2583 return ArrayElemPop<PT_Float>(S, OpPC, A0);
2584}
2585#endif
2586#ifdef GET_OPCODE_NAMES
2587OP_ArrayElemPtrSint8,
2588OP_ArrayElemPtrUint8,
2589OP_ArrayElemPtrSint16,
2590OP_ArrayElemPtrUint16,
2591OP_ArrayElemPtrSint32,
2592OP_ArrayElemPtrUint32,
2593OP_ArrayElemPtrSint64,
2594OP_ArrayElemPtrUint64,
2595OP_ArrayElemPtrIntAP,
2596OP_ArrayElemPtrIntAPS,
2597OP_ArrayElemPtrBool,
2598#endif
2599#ifdef GET_INTERPFN_LIST
2600&Interp_ArrayElemPtrSint8,
2601&Interp_ArrayElemPtrUint8,
2602&Interp_ArrayElemPtrSint16,
2603&Interp_ArrayElemPtrUint16,
2604&Interp_ArrayElemPtrSint32,
2605&Interp_ArrayElemPtrUint32,
2606&Interp_ArrayElemPtrSint64,
2607&Interp_ArrayElemPtrUint64,
2608&Interp_ArrayElemPtrIntAP,
2609&Interp_ArrayElemPtrIntAPS,
2610&Interp_ArrayElemPtrBool,
2611#endif
2612#ifdef GET_INTERPFN_DISPATCHERS
2613PRESERVE_NONE
2614static bool Interp_ArrayElemPtrSint8(InterpState &S, CodePtr &PC) {
2615 if (!ArrayElemPtr<PT_Sint8>(S, PC)) return false;
2616#if USE_TAILCALLS
2617 MUSTTAIL return InterpNext(S, PC);
2618#else
2619 return true;
2620#endif
2621}
2622PRESERVE_NONE
2623static bool Interp_ArrayElemPtrUint8(InterpState &S, CodePtr &PC) {
2624 if (!ArrayElemPtr<PT_Uint8>(S, PC)) return false;
2625#if USE_TAILCALLS
2626 MUSTTAIL return InterpNext(S, PC);
2627#else
2628 return true;
2629#endif
2630}
2631PRESERVE_NONE
2632static bool Interp_ArrayElemPtrSint16(InterpState &S, CodePtr &PC) {
2633 if (!ArrayElemPtr<PT_Sint16>(S, PC)) return false;
2634#if USE_TAILCALLS
2635 MUSTTAIL return InterpNext(S, PC);
2636#else
2637 return true;
2638#endif
2639}
2640PRESERVE_NONE
2641static bool Interp_ArrayElemPtrUint16(InterpState &S, CodePtr &PC) {
2642 if (!ArrayElemPtr<PT_Uint16>(S, PC)) return false;
2643#if USE_TAILCALLS
2644 MUSTTAIL return InterpNext(S, PC);
2645#else
2646 return true;
2647#endif
2648}
2649PRESERVE_NONE
2650static bool Interp_ArrayElemPtrSint32(InterpState &S, CodePtr &PC) {
2651 if (!ArrayElemPtr<PT_Sint32>(S, PC)) return false;
2652#if USE_TAILCALLS
2653 MUSTTAIL return InterpNext(S, PC);
2654#else
2655 return true;
2656#endif
2657}
2658PRESERVE_NONE
2659static bool Interp_ArrayElemPtrUint32(InterpState &S, CodePtr &PC) {
2660 if (!ArrayElemPtr<PT_Uint32>(S, PC)) return false;
2661#if USE_TAILCALLS
2662 MUSTTAIL return InterpNext(S, PC);
2663#else
2664 return true;
2665#endif
2666}
2667PRESERVE_NONE
2668static bool Interp_ArrayElemPtrSint64(InterpState &S, CodePtr &PC) {
2669 if (!ArrayElemPtr<PT_Sint64>(S, PC)) return false;
2670#if USE_TAILCALLS
2671 MUSTTAIL return InterpNext(S, PC);
2672#else
2673 return true;
2674#endif
2675}
2676PRESERVE_NONE
2677static bool Interp_ArrayElemPtrUint64(InterpState &S, CodePtr &PC) {
2678 if (!ArrayElemPtr<PT_Uint64>(S, PC)) return false;
2679#if USE_TAILCALLS
2680 MUSTTAIL return InterpNext(S, PC);
2681#else
2682 return true;
2683#endif
2684}
2685PRESERVE_NONE
2686static bool Interp_ArrayElemPtrIntAP(InterpState &S, CodePtr &PC) {
2687 if (!ArrayElemPtr<PT_IntAP>(S, PC)) return false;
2688#if USE_TAILCALLS
2689 MUSTTAIL return InterpNext(S, PC);
2690#else
2691 return true;
2692#endif
2693}
2694PRESERVE_NONE
2695static bool Interp_ArrayElemPtrIntAPS(InterpState &S, CodePtr &PC) {
2696 if (!ArrayElemPtr<PT_IntAPS>(S, PC)) return false;
2697#if USE_TAILCALLS
2698 MUSTTAIL return InterpNext(S, PC);
2699#else
2700 return true;
2701#endif
2702}
2703PRESERVE_NONE
2704static bool Interp_ArrayElemPtrBool(InterpState &S, CodePtr &PC) {
2705 if (!ArrayElemPtr<PT_Bool>(S, PC)) return false;
2706#if USE_TAILCALLS
2707 MUSTTAIL return InterpNext(S, PC);
2708#else
2709 return true;
2710#endif
2711}
2712#endif
2713#ifdef GET_DISASM
2714case OP_ArrayElemPtrSint8:
2715 Text.Op = PrintName("ArrayElemPtrSint8");
2716 break;
2717case OP_ArrayElemPtrUint8:
2718 Text.Op = PrintName("ArrayElemPtrUint8");
2719 break;
2720case OP_ArrayElemPtrSint16:
2721 Text.Op = PrintName("ArrayElemPtrSint16");
2722 break;
2723case OP_ArrayElemPtrUint16:
2724 Text.Op = PrintName("ArrayElemPtrUint16");
2725 break;
2726case OP_ArrayElemPtrSint32:
2727 Text.Op = PrintName("ArrayElemPtrSint32");
2728 break;
2729case OP_ArrayElemPtrUint32:
2730 Text.Op = PrintName("ArrayElemPtrUint32");
2731 break;
2732case OP_ArrayElemPtrSint64:
2733 Text.Op = PrintName("ArrayElemPtrSint64");
2734 break;
2735case OP_ArrayElemPtrUint64:
2736 Text.Op = PrintName("ArrayElemPtrUint64");
2737 break;
2738case OP_ArrayElemPtrIntAP:
2739 Text.Op = PrintName("ArrayElemPtrIntAP");
2740 break;
2741case OP_ArrayElemPtrIntAPS:
2742 Text.Op = PrintName("ArrayElemPtrIntAPS");
2743 break;
2744case OP_ArrayElemPtrBool:
2745 Text.Op = PrintName("ArrayElemPtrBool");
2746 break;
2747#endif
2748#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2749bool emitArrayElemPtrSint8(SourceInfo);
2750bool emitArrayElemPtrUint8(SourceInfo);
2751bool emitArrayElemPtrSint16(SourceInfo);
2752bool emitArrayElemPtrUint16(SourceInfo);
2753bool emitArrayElemPtrSint32(SourceInfo);
2754bool emitArrayElemPtrUint32(SourceInfo);
2755bool emitArrayElemPtrSint64(SourceInfo);
2756bool emitArrayElemPtrUint64(SourceInfo);
2757bool emitArrayElemPtrIntAP(SourceInfo);
2758bool emitArrayElemPtrIntAPS(SourceInfo);
2759bool emitArrayElemPtrBool(SourceInfo);
2760#endif
2761#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2762[[nodiscard]] bool emitArrayElemPtr(PrimType, SourceInfo I);
2763#endif
2764#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
2765bool
2766#if defined(GET_EVAL_IMPL)
2767EvalEmitter
2768#else
2769ByteCodeEmitter
2770#endif
2771::emitArrayElemPtr(PrimType T0, SourceInfo I) {
2772 switch (T0) {
2773 case PT_Sint8:
2774 return emitArrayElemPtrSint8(I);
2775 case PT_Uint8:
2776 return emitArrayElemPtrUint8(I);
2777 case PT_Sint16:
2778 return emitArrayElemPtrSint16(I);
2779 case PT_Uint16:
2780 return emitArrayElemPtrUint16(I);
2781 case PT_Sint32:
2782 return emitArrayElemPtrSint32(I);
2783 case PT_Uint32:
2784 return emitArrayElemPtrUint32(I);
2785 case PT_Sint64:
2786 return emitArrayElemPtrSint64(I);
2787 case PT_Uint64:
2788 return emitArrayElemPtrUint64(I);
2789 case PT_IntAP:
2790 return emitArrayElemPtrIntAP(I);
2791 case PT_IntAPS:
2792 return emitArrayElemPtrIntAPS(I);
2793 case PT_Bool:
2794 return emitArrayElemPtrBool(I);
2795 default: llvm_unreachable("invalid type: emitArrayElemPtr");
2796 }
2797 llvm_unreachable("invalid enum value");
2798}
2799#endif
2800#ifdef GET_LINK_IMPL
2801bool ByteCodeEmitter::emitArrayElemPtrSint8(SourceInfo L) {
2802 return emitOp<>(OP_ArrayElemPtrSint8, L);
2803}
2804bool ByteCodeEmitter::emitArrayElemPtrUint8(SourceInfo L) {
2805 return emitOp<>(OP_ArrayElemPtrUint8, L);
2806}
2807bool ByteCodeEmitter::emitArrayElemPtrSint16(SourceInfo L) {
2808 return emitOp<>(OP_ArrayElemPtrSint16, L);
2809}
2810bool ByteCodeEmitter::emitArrayElemPtrUint16(SourceInfo L) {
2811 return emitOp<>(OP_ArrayElemPtrUint16, L);
2812}
2813bool ByteCodeEmitter::emitArrayElemPtrSint32(SourceInfo L) {
2814 return emitOp<>(OP_ArrayElemPtrSint32, L);
2815}
2816bool ByteCodeEmitter::emitArrayElemPtrUint32(SourceInfo L) {
2817 return emitOp<>(OP_ArrayElemPtrUint32, L);
2818}
2819bool ByteCodeEmitter::emitArrayElemPtrSint64(SourceInfo L) {
2820 return emitOp<>(OP_ArrayElemPtrSint64, L);
2821}
2822bool ByteCodeEmitter::emitArrayElemPtrUint64(SourceInfo L) {
2823 return emitOp<>(OP_ArrayElemPtrUint64, L);
2824}
2825bool ByteCodeEmitter::emitArrayElemPtrIntAP(SourceInfo L) {
2826 return emitOp<>(OP_ArrayElemPtrIntAP, L);
2827}
2828bool ByteCodeEmitter::emitArrayElemPtrIntAPS(SourceInfo L) {
2829 return emitOp<>(OP_ArrayElemPtrIntAPS, L);
2830}
2831bool ByteCodeEmitter::emitArrayElemPtrBool(SourceInfo L) {
2832 return emitOp<>(OP_ArrayElemPtrBool, L);
2833}
2834#endif
2835#ifdef GET_EVAL_IMPL
2836bool EvalEmitter::emitArrayElemPtrSint8(SourceInfo L) {
2837 if (!isActive()) return true;
2838 CurrentSource = L;
2839 return ArrayElemPtr<PT_Sint8>(S, OpPC);
2840}
2841bool EvalEmitter::emitArrayElemPtrUint8(SourceInfo L) {
2842 if (!isActive()) return true;
2843 CurrentSource = L;
2844 return ArrayElemPtr<PT_Uint8>(S, OpPC);
2845}
2846bool EvalEmitter::emitArrayElemPtrSint16(SourceInfo L) {
2847 if (!isActive()) return true;
2848 CurrentSource = L;
2849 return ArrayElemPtr<PT_Sint16>(S, OpPC);
2850}
2851bool EvalEmitter::emitArrayElemPtrUint16(SourceInfo L) {
2852 if (!isActive()) return true;
2853 CurrentSource = L;
2854 return ArrayElemPtr<PT_Uint16>(S, OpPC);
2855}
2856bool EvalEmitter::emitArrayElemPtrSint32(SourceInfo L) {
2857 if (!isActive()) return true;
2858 CurrentSource = L;
2859 return ArrayElemPtr<PT_Sint32>(S, OpPC);
2860}
2861bool EvalEmitter::emitArrayElemPtrUint32(SourceInfo L) {
2862 if (!isActive()) return true;
2863 CurrentSource = L;
2864 return ArrayElemPtr<PT_Uint32>(S, OpPC);
2865}
2866bool EvalEmitter::emitArrayElemPtrSint64(SourceInfo L) {
2867 if (!isActive()) return true;
2868 CurrentSource = L;
2869 return ArrayElemPtr<PT_Sint64>(S, OpPC);
2870}
2871bool EvalEmitter::emitArrayElemPtrUint64(SourceInfo L) {
2872 if (!isActive()) return true;
2873 CurrentSource = L;
2874 return ArrayElemPtr<PT_Uint64>(S, OpPC);
2875}
2876bool EvalEmitter::emitArrayElemPtrIntAP(SourceInfo L) {
2877 if (!isActive()) return true;
2878 CurrentSource = L;
2879 return ArrayElemPtr<PT_IntAP>(S, OpPC);
2880}
2881bool EvalEmitter::emitArrayElemPtrIntAPS(SourceInfo L) {
2882 if (!isActive()) return true;
2883 CurrentSource = L;
2884 return ArrayElemPtr<PT_IntAPS>(S, OpPC);
2885}
2886bool EvalEmitter::emitArrayElemPtrBool(SourceInfo L) {
2887 if (!isActive()) return true;
2888 CurrentSource = L;
2889 return ArrayElemPtr<PT_Bool>(S, OpPC);
2890}
2891#endif
2892#ifdef GET_OPCODE_NAMES
2893OP_ArrayElemPtrPopSint8,
2894OP_ArrayElemPtrPopUint8,
2895OP_ArrayElemPtrPopSint16,
2896OP_ArrayElemPtrPopUint16,
2897OP_ArrayElemPtrPopSint32,
2898OP_ArrayElemPtrPopUint32,
2899OP_ArrayElemPtrPopSint64,
2900OP_ArrayElemPtrPopUint64,
2901OP_ArrayElemPtrPopIntAP,
2902OP_ArrayElemPtrPopIntAPS,
2903OP_ArrayElemPtrPopBool,
2904#endif
2905#ifdef GET_INTERPFN_LIST
2906&Interp_ArrayElemPtrPopSint8,
2907&Interp_ArrayElemPtrPopUint8,
2908&Interp_ArrayElemPtrPopSint16,
2909&Interp_ArrayElemPtrPopUint16,
2910&Interp_ArrayElemPtrPopSint32,
2911&Interp_ArrayElemPtrPopUint32,
2912&Interp_ArrayElemPtrPopSint64,
2913&Interp_ArrayElemPtrPopUint64,
2914&Interp_ArrayElemPtrPopIntAP,
2915&Interp_ArrayElemPtrPopIntAPS,
2916&Interp_ArrayElemPtrPopBool,
2917#endif
2918#ifdef GET_INTERPFN_DISPATCHERS
2919PRESERVE_NONE
2920static bool Interp_ArrayElemPtrPopSint8(InterpState &S, CodePtr &PC) {
2921 if (!ArrayElemPtrPop<PT_Sint8>(S, PC)) return false;
2922#if USE_TAILCALLS
2923 MUSTTAIL return InterpNext(S, PC);
2924#else
2925 return true;
2926#endif
2927}
2928PRESERVE_NONE
2929static bool Interp_ArrayElemPtrPopUint8(InterpState &S, CodePtr &PC) {
2930 if (!ArrayElemPtrPop<PT_Uint8>(S, PC)) return false;
2931#if USE_TAILCALLS
2932 MUSTTAIL return InterpNext(S, PC);
2933#else
2934 return true;
2935#endif
2936}
2937PRESERVE_NONE
2938static bool Interp_ArrayElemPtrPopSint16(InterpState &S, CodePtr &PC) {
2939 if (!ArrayElemPtrPop<PT_Sint16>(S, PC)) return false;
2940#if USE_TAILCALLS
2941 MUSTTAIL return InterpNext(S, PC);
2942#else
2943 return true;
2944#endif
2945}
2946PRESERVE_NONE
2947static bool Interp_ArrayElemPtrPopUint16(InterpState &S, CodePtr &PC) {
2948 if (!ArrayElemPtrPop<PT_Uint16>(S, PC)) return false;
2949#if USE_TAILCALLS
2950 MUSTTAIL return InterpNext(S, PC);
2951#else
2952 return true;
2953#endif
2954}
2955PRESERVE_NONE
2956static bool Interp_ArrayElemPtrPopSint32(InterpState &S, CodePtr &PC) {
2957 if (!ArrayElemPtrPop<PT_Sint32>(S, PC)) return false;
2958#if USE_TAILCALLS
2959 MUSTTAIL return InterpNext(S, PC);
2960#else
2961 return true;
2962#endif
2963}
2964PRESERVE_NONE
2965static bool Interp_ArrayElemPtrPopUint32(InterpState &S, CodePtr &PC) {
2966 if (!ArrayElemPtrPop<PT_Uint32>(S, PC)) return false;
2967#if USE_TAILCALLS
2968 MUSTTAIL return InterpNext(S, PC);
2969#else
2970 return true;
2971#endif
2972}
2973PRESERVE_NONE
2974static bool Interp_ArrayElemPtrPopSint64(InterpState &S, CodePtr &PC) {
2975 if (!ArrayElemPtrPop<PT_Sint64>(S, PC)) return false;
2976#if USE_TAILCALLS
2977 MUSTTAIL return InterpNext(S, PC);
2978#else
2979 return true;
2980#endif
2981}
2982PRESERVE_NONE
2983static bool Interp_ArrayElemPtrPopUint64(InterpState &S, CodePtr &PC) {
2984 if (!ArrayElemPtrPop<PT_Uint64>(S, PC)) return false;
2985#if USE_TAILCALLS
2986 MUSTTAIL return InterpNext(S, PC);
2987#else
2988 return true;
2989#endif
2990}
2991PRESERVE_NONE
2992static bool Interp_ArrayElemPtrPopIntAP(InterpState &S, CodePtr &PC) {
2993 if (!ArrayElemPtrPop<PT_IntAP>(S, PC)) return false;
2994#if USE_TAILCALLS
2995 MUSTTAIL return InterpNext(S, PC);
2996#else
2997 return true;
2998#endif
2999}
3000PRESERVE_NONE
3001static bool Interp_ArrayElemPtrPopIntAPS(InterpState &S, CodePtr &PC) {
3002 if (!ArrayElemPtrPop<PT_IntAPS>(S, PC)) return false;
3003#if USE_TAILCALLS
3004 MUSTTAIL return InterpNext(S, PC);
3005#else
3006 return true;
3007#endif
3008}
3009PRESERVE_NONE
3010static bool Interp_ArrayElemPtrPopBool(InterpState &S, CodePtr &PC) {
3011 if (!ArrayElemPtrPop<PT_Bool>(S, PC)) return false;
3012#if USE_TAILCALLS
3013 MUSTTAIL return InterpNext(S, PC);
3014#else
3015 return true;
3016#endif
3017}
3018#endif
3019#ifdef GET_DISASM
3020case OP_ArrayElemPtrPopSint8:
3021 Text.Op = PrintName("ArrayElemPtrPopSint8");
3022 break;
3023case OP_ArrayElemPtrPopUint8:
3024 Text.Op = PrintName("ArrayElemPtrPopUint8");
3025 break;
3026case OP_ArrayElemPtrPopSint16:
3027 Text.Op = PrintName("ArrayElemPtrPopSint16");
3028 break;
3029case OP_ArrayElemPtrPopUint16:
3030 Text.Op = PrintName("ArrayElemPtrPopUint16");
3031 break;
3032case OP_ArrayElemPtrPopSint32:
3033 Text.Op = PrintName("ArrayElemPtrPopSint32");
3034 break;
3035case OP_ArrayElemPtrPopUint32:
3036 Text.Op = PrintName("ArrayElemPtrPopUint32");
3037 break;
3038case OP_ArrayElemPtrPopSint64:
3039 Text.Op = PrintName("ArrayElemPtrPopSint64");
3040 break;
3041case OP_ArrayElemPtrPopUint64:
3042 Text.Op = PrintName("ArrayElemPtrPopUint64");
3043 break;
3044case OP_ArrayElemPtrPopIntAP:
3045 Text.Op = PrintName("ArrayElemPtrPopIntAP");
3046 break;
3047case OP_ArrayElemPtrPopIntAPS:
3048 Text.Op = PrintName("ArrayElemPtrPopIntAPS");
3049 break;
3050case OP_ArrayElemPtrPopBool:
3051 Text.Op = PrintName("ArrayElemPtrPopBool");
3052 break;
3053#endif
3054#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3055bool emitArrayElemPtrPopSint8(SourceInfo);
3056bool emitArrayElemPtrPopUint8(SourceInfo);
3057bool emitArrayElemPtrPopSint16(SourceInfo);
3058bool emitArrayElemPtrPopUint16(SourceInfo);
3059bool emitArrayElemPtrPopSint32(SourceInfo);
3060bool emitArrayElemPtrPopUint32(SourceInfo);
3061bool emitArrayElemPtrPopSint64(SourceInfo);
3062bool emitArrayElemPtrPopUint64(SourceInfo);
3063bool emitArrayElemPtrPopIntAP(SourceInfo);
3064bool emitArrayElemPtrPopIntAPS(SourceInfo);
3065bool emitArrayElemPtrPopBool(SourceInfo);
3066#endif
3067#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3068[[nodiscard]] bool emitArrayElemPtrPop(PrimType, SourceInfo I);
3069#endif
3070#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
3071bool
3072#if defined(GET_EVAL_IMPL)
3073EvalEmitter
3074#else
3075ByteCodeEmitter
3076#endif
3077::emitArrayElemPtrPop(PrimType T0, SourceInfo I) {
3078 switch (T0) {
3079 case PT_Sint8:
3080 return emitArrayElemPtrPopSint8(I);
3081 case PT_Uint8:
3082 return emitArrayElemPtrPopUint8(I);
3083 case PT_Sint16:
3084 return emitArrayElemPtrPopSint16(I);
3085 case PT_Uint16:
3086 return emitArrayElemPtrPopUint16(I);
3087 case PT_Sint32:
3088 return emitArrayElemPtrPopSint32(I);
3089 case PT_Uint32:
3090 return emitArrayElemPtrPopUint32(I);
3091 case PT_Sint64:
3092 return emitArrayElemPtrPopSint64(I);
3093 case PT_Uint64:
3094 return emitArrayElemPtrPopUint64(I);
3095 case PT_IntAP:
3096 return emitArrayElemPtrPopIntAP(I);
3097 case PT_IntAPS:
3098 return emitArrayElemPtrPopIntAPS(I);
3099 case PT_Bool:
3100 return emitArrayElemPtrPopBool(I);
3101 default: llvm_unreachable("invalid type: emitArrayElemPtrPop");
3102 }
3103 llvm_unreachable("invalid enum value");
3104}
3105#endif
3106#ifdef GET_LINK_IMPL
3107bool ByteCodeEmitter::emitArrayElemPtrPopSint8(SourceInfo L) {
3108 return emitOp<>(OP_ArrayElemPtrPopSint8, L);
3109}
3110bool ByteCodeEmitter::emitArrayElemPtrPopUint8(SourceInfo L) {
3111 return emitOp<>(OP_ArrayElemPtrPopUint8, L);
3112}
3113bool ByteCodeEmitter::emitArrayElemPtrPopSint16(SourceInfo L) {
3114 return emitOp<>(OP_ArrayElemPtrPopSint16, L);
3115}
3116bool ByteCodeEmitter::emitArrayElemPtrPopUint16(SourceInfo L) {
3117 return emitOp<>(OP_ArrayElemPtrPopUint16, L);
3118}
3119bool ByteCodeEmitter::emitArrayElemPtrPopSint32(SourceInfo L) {
3120 return emitOp<>(OP_ArrayElemPtrPopSint32, L);
3121}
3122bool ByteCodeEmitter::emitArrayElemPtrPopUint32(SourceInfo L) {
3123 return emitOp<>(OP_ArrayElemPtrPopUint32, L);
3124}
3125bool ByteCodeEmitter::emitArrayElemPtrPopSint64(SourceInfo L) {
3126 return emitOp<>(OP_ArrayElemPtrPopSint64, L);
3127}
3128bool ByteCodeEmitter::emitArrayElemPtrPopUint64(SourceInfo L) {
3129 return emitOp<>(OP_ArrayElemPtrPopUint64, L);
3130}
3131bool ByteCodeEmitter::emitArrayElemPtrPopIntAP(SourceInfo L) {
3132 return emitOp<>(OP_ArrayElemPtrPopIntAP, L);
3133}
3134bool ByteCodeEmitter::emitArrayElemPtrPopIntAPS(SourceInfo L) {
3135 return emitOp<>(OP_ArrayElemPtrPopIntAPS, L);
3136}
3137bool ByteCodeEmitter::emitArrayElemPtrPopBool(SourceInfo L) {
3138 return emitOp<>(OP_ArrayElemPtrPopBool, L);
3139}
3140#endif
3141#ifdef GET_EVAL_IMPL
3142bool EvalEmitter::emitArrayElemPtrPopSint8(SourceInfo L) {
3143 if (!isActive()) return true;
3144 CurrentSource = L;
3145 return ArrayElemPtrPop<PT_Sint8>(S, OpPC);
3146}
3147bool EvalEmitter::emitArrayElemPtrPopUint8(SourceInfo L) {
3148 if (!isActive()) return true;
3149 CurrentSource = L;
3150 return ArrayElemPtrPop<PT_Uint8>(S, OpPC);
3151}
3152bool EvalEmitter::emitArrayElemPtrPopSint16(SourceInfo L) {
3153 if (!isActive()) return true;
3154 CurrentSource = L;
3155 return ArrayElemPtrPop<PT_Sint16>(S, OpPC);
3156}
3157bool EvalEmitter::emitArrayElemPtrPopUint16(SourceInfo L) {
3158 if (!isActive()) return true;
3159 CurrentSource = L;
3160 return ArrayElemPtrPop<PT_Uint16>(S, OpPC);
3161}
3162bool EvalEmitter::emitArrayElemPtrPopSint32(SourceInfo L) {
3163 if (!isActive()) return true;
3164 CurrentSource = L;
3165 return ArrayElemPtrPop<PT_Sint32>(S, OpPC);
3166}
3167bool EvalEmitter::emitArrayElemPtrPopUint32(SourceInfo L) {
3168 if (!isActive()) return true;
3169 CurrentSource = L;
3170 return ArrayElemPtrPop<PT_Uint32>(S, OpPC);
3171}
3172bool EvalEmitter::emitArrayElemPtrPopSint64(SourceInfo L) {
3173 if (!isActive()) return true;
3174 CurrentSource = L;
3175 return ArrayElemPtrPop<PT_Sint64>(S, OpPC);
3176}
3177bool EvalEmitter::emitArrayElemPtrPopUint64(SourceInfo L) {
3178 if (!isActive()) return true;
3179 CurrentSource = L;
3180 return ArrayElemPtrPop<PT_Uint64>(S, OpPC);
3181}
3182bool EvalEmitter::emitArrayElemPtrPopIntAP(SourceInfo L) {
3183 if (!isActive()) return true;
3184 CurrentSource = L;
3185 return ArrayElemPtrPop<PT_IntAP>(S, OpPC);
3186}
3187bool EvalEmitter::emitArrayElemPtrPopIntAPS(SourceInfo L) {
3188 if (!isActive()) return true;
3189 CurrentSource = L;
3190 return ArrayElemPtrPop<PT_IntAPS>(S, OpPC);
3191}
3192bool EvalEmitter::emitArrayElemPtrPopBool(SourceInfo L) {
3193 if (!isActive()) return true;
3194 CurrentSource = L;
3195 return ArrayElemPtrPop<PT_Bool>(S, OpPC);
3196}
3197#endif
3198#ifdef GET_OPCODE_NAMES
3199OP_Assume,
3200#endif
3201#ifdef GET_INTERPFN_LIST
3202&Interp_Assume,
3203#endif
3204#ifdef GET_INTERPFN_DISPATCHERS
3205PRESERVE_NONE
3206static bool Interp_Assume(InterpState &S, CodePtr &PC) {
3207 if (!Assume(S, PC)) return false;
3208#if USE_TAILCALLS
3209 MUSTTAIL return InterpNext(S, PC);
3210#else
3211 return true;
3212#endif
3213}
3214#endif
3215#ifdef GET_DISASM
3216case OP_Assume:
3217 Text.Op = PrintName("Assume");
3218 break;
3219#endif
3220#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3221bool emitAssume(SourceInfo);
3222#endif
3223#ifdef GET_LINK_IMPL
3224bool ByteCodeEmitter::emitAssume(SourceInfo L) {
3225 return emitOp<>(OP_Assume, L);
3226}
3227#endif
3228#ifdef GET_EVAL_IMPL
3229bool EvalEmitter::emitAssume(SourceInfo L) {
3230 if (!isActive()) return true;
3231 CurrentSource = L;
3232 return Assume(S, OpPC);
3233}
3234#endif
3235#ifdef GET_OPCODE_NAMES
3236OP_BCP,
3237#endif
3238#ifdef GET_INTERPFN_LIST
3239&Interp_BCP,
3240#endif
3241#ifdef GET_INTERPFN_DISPATCHERS
3242PRESERVE_NONE
3243static bool Interp_BCP(InterpState &S, CodePtr &PC) {
3244 {
3245 const auto V0 = ReadArg<int32_t>(S, PC);
3246 const auto V1 = ReadArg<PrimType>(S, PC);
3247 if (!BCP(S, PC, V0, V1)) return false;
3248 }
3249#if USE_TAILCALLS
3250 MUSTTAIL return InterpNext(S, PC);
3251#else
3252 return true;
3253#endif
3254}
3255#endif
3256#ifdef GET_DISASM
3257case OP_BCP:
3258 Text.Op = PrintName("BCP");
3259 Text.Args.push_back(printArg<int32_t>(P, PC));
3260 Text.Args.push_back(printArg<PrimType>(P, PC));
3261 break;
3262#endif
3263#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3264bool emitBCP( int32_t , PrimType , SourceInfo);
3265#endif
3266#ifdef GET_LINK_IMPL
3267bool ByteCodeEmitter::emitBCP( int32_t A0, PrimType A1, SourceInfo L) {
3268 return emitOp<int32_t, PrimType>(OP_BCP, A0, A1, L);
3269}
3270#endif
3271#ifdef GET_OPCODE_NAMES
3272OP_BitAndSint8,
3273OP_BitAndUint8,
3274OP_BitAndSint16,
3275OP_BitAndUint16,
3276OP_BitAndSint32,
3277OP_BitAndUint32,
3278OP_BitAndSint64,
3279OP_BitAndUint64,
3280OP_BitAndIntAP,
3281OP_BitAndIntAPS,
3282OP_BitAndFixedPoint,
3283#endif
3284#ifdef GET_INTERPFN_LIST
3285&Interp_BitAndSint8,
3286&Interp_BitAndUint8,
3287&Interp_BitAndSint16,
3288&Interp_BitAndUint16,
3289&Interp_BitAndSint32,
3290&Interp_BitAndUint32,
3291&Interp_BitAndSint64,
3292&Interp_BitAndUint64,
3293&Interp_BitAndIntAP,
3294&Interp_BitAndIntAPS,
3295&Interp_BitAndFixedPoint,
3296#endif
3297#ifdef GET_INTERPFN_DISPATCHERS
3298PRESERVE_NONE
3299static bool Interp_BitAndSint8(InterpState &S, CodePtr &PC) {
3300 if (!BitAnd<PT_Sint8>(S, PC)) return false;
3301#if USE_TAILCALLS
3302 MUSTTAIL return InterpNext(S, PC);
3303#else
3304 return true;
3305#endif
3306}
3307PRESERVE_NONE
3308static bool Interp_BitAndUint8(InterpState &S, CodePtr &PC) {
3309 if (!BitAnd<PT_Uint8>(S, PC)) return false;
3310#if USE_TAILCALLS
3311 MUSTTAIL return InterpNext(S, PC);
3312#else
3313 return true;
3314#endif
3315}
3316PRESERVE_NONE
3317static bool Interp_BitAndSint16(InterpState &S, CodePtr &PC) {
3318 if (!BitAnd<PT_Sint16>(S, PC)) return false;
3319#if USE_TAILCALLS
3320 MUSTTAIL return InterpNext(S, PC);
3321#else
3322 return true;
3323#endif
3324}
3325PRESERVE_NONE
3326static bool Interp_BitAndUint16(InterpState &S, CodePtr &PC) {
3327 if (!BitAnd<PT_Uint16>(S, PC)) return false;
3328#if USE_TAILCALLS
3329 MUSTTAIL return InterpNext(S, PC);
3330#else
3331 return true;
3332#endif
3333}
3334PRESERVE_NONE
3335static bool Interp_BitAndSint32(InterpState &S, CodePtr &PC) {
3336 if (!BitAnd<PT_Sint32>(S, PC)) return false;
3337#if USE_TAILCALLS
3338 MUSTTAIL return InterpNext(S, PC);
3339#else
3340 return true;
3341#endif
3342}
3343PRESERVE_NONE
3344static bool Interp_BitAndUint32(InterpState &S, CodePtr &PC) {
3345 if (!BitAnd<PT_Uint32>(S, PC)) return false;
3346#if USE_TAILCALLS
3347 MUSTTAIL return InterpNext(S, PC);
3348#else
3349 return true;
3350#endif
3351}
3352PRESERVE_NONE
3353static bool Interp_BitAndSint64(InterpState &S, CodePtr &PC) {
3354 if (!BitAnd<PT_Sint64>(S, PC)) return false;
3355#if USE_TAILCALLS
3356 MUSTTAIL return InterpNext(S, PC);
3357#else
3358 return true;
3359#endif
3360}
3361PRESERVE_NONE
3362static bool Interp_BitAndUint64(InterpState &S, CodePtr &PC) {
3363 if (!BitAnd<PT_Uint64>(S, PC)) return false;
3364#if USE_TAILCALLS
3365 MUSTTAIL return InterpNext(S, PC);
3366#else
3367 return true;
3368#endif
3369}
3370PRESERVE_NONE
3371static bool Interp_BitAndIntAP(InterpState &S, CodePtr &PC) {
3372 if (!BitAnd<PT_IntAP>(S, PC)) return false;
3373#if USE_TAILCALLS
3374 MUSTTAIL return InterpNext(S, PC);
3375#else
3376 return true;
3377#endif
3378}
3379PRESERVE_NONE
3380static bool Interp_BitAndIntAPS(InterpState &S, CodePtr &PC) {
3381 if (!BitAnd<PT_IntAPS>(S, PC)) return false;
3382#if USE_TAILCALLS
3383 MUSTTAIL return InterpNext(S, PC);
3384#else
3385 return true;
3386#endif
3387}
3388PRESERVE_NONE
3389static bool Interp_BitAndFixedPoint(InterpState &S, CodePtr &PC) {
3390 if (!BitAnd<PT_FixedPoint>(S, PC)) return false;
3391#if USE_TAILCALLS
3392 MUSTTAIL return InterpNext(S, PC);
3393#else
3394 return true;
3395#endif
3396}
3397#endif
3398#ifdef GET_DISASM
3399case OP_BitAndSint8:
3400 Text.Op = PrintName("BitAndSint8");
3401 break;
3402case OP_BitAndUint8:
3403 Text.Op = PrintName("BitAndUint8");
3404 break;
3405case OP_BitAndSint16:
3406 Text.Op = PrintName("BitAndSint16");
3407 break;
3408case OP_BitAndUint16:
3409 Text.Op = PrintName("BitAndUint16");
3410 break;
3411case OP_BitAndSint32:
3412 Text.Op = PrintName("BitAndSint32");
3413 break;
3414case OP_BitAndUint32:
3415 Text.Op = PrintName("BitAndUint32");
3416 break;
3417case OP_BitAndSint64:
3418 Text.Op = PrintName("BitAndSint64");
3419 break;
3420case OP_BitAndUint64:
3421 Text.Op = PrintName("BitAndUint64");
3422 break;
3423case OP_BitAndIntAP:
3424 Text.Op = PrintName("BitAndIntAP");
3425 break;
3426case OP_BitAndIntAPS:
3427 Text.Op = PrintName("BitAndIntAPS");
3428 break;
3429case OP_BitAndFixedPoint:
3430 Text.Op = PrintName("BitAndFixedPoint");
3431 break;
3432#endif
3433#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3434bool emitBitAndSint8(SourceInfo);
3435bool emitBitAndUint8(SourceInfo);
3436bool emitBitAndSint16(SourceInfo);
3437bool emitBitAndUint16(SourceInfo);
3438bool emitBitAndSint32(SourceInfo);
3439bool emitBitAndUint32(SourceInfo);
3440bool emitBitAndSint64(SourceInfo);
3441bool emitBitAndUint64(SourceInfo);
3442bool emitBitAndIntAP(SourceInfo);
3443bool emitBitAndIntAPS(SourceInfo);
3444bool emitBitAndFixedPoint(SourceInfo);
3445#endif
3446#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3447[[nodiscard]] bool emitBitAnd(PrimType, SourceInfo I);
3448#endif
3449#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
3450bool
3451#if defined(GET_EVAL_IMPL)
3452EvalEmitter
3453#else
3454ByteCodeEmitter
3455#endif
3456::emitBitAnd(PrimType T0, SourceInfo I) {
3457 switch (T0) {
3458 case PT_Sint8:
3459 return emitBitAndSint8(I);
3460 case PT_Uint8:
3461 return emitBitAndUint8(I);
3462 case PT_Sint16:
3463 return emitBitAndSint16(I);
3464 case PT_Uint16:
3465 return emitBitAndUint16(I);
3466 case PT_Sint32:
3467 return emitBitAndSint32(I);
3468 case PT_Uint32:
3469 return emitBitAndUint32(I);
3470 case PT_Sint64:
3471 return emitBitAndSint64(I);
3472 case PT_Uint64:
3473 return emitBitAndUint64(I);
3474 case PT_IntAP:
3475 return emitBitAndIntAP(I);
3476 case PT_IntAPS:
3477 return emitBitAndIntAPS(I);
3478 case PT_FixedPoint:
3479 return emitBitAndFixedPoint(I);
3480 default: llvm_unreachable("invalid type: emitBitAnd");
3481 }
3482 llvm_unreachable("invalid enum value");
3483}
3484#endif
3485#ifdef GET_LINK_IMPL
3486bool ByteCodeEmitter::emitBitAndSint8(SourceInfo L) {
3487 return emitOp<>(OP_BitAndSint8, L);
3488}
3489bool ByteCodeEmitter::emitBitAndUint8(SourceInfo L) {
3490 return emitOp<>(OP_BitAndUint8, L);
3491}
3492bool ByteCodeEmitter::emitBitAndSint16(SourceInfo L) {
3493 return emitOp<>(OP_BitAndSint16, L);
3494}
3495bool ByteCodeEmitter::emitBitAndUint16(SourceInfo L) {
3496 return emitOp<>(OP_BitAndUint16, L);
3497}
3498bool ByteCodeEmitter::emitBitAndSint32(SourceInfo L) {
3499 return emitOp<>(OP_BitAndSint32, L);
3500}
3501bool ByteCodeEmitter::emitBitAndUint32(SourceInfo L) {
3502 return emitOp<>(OP_BitAndUint32, L);
3503}
3504bool ByteCodeEmitter::emitBitAndSint64(SourceInfo L) {
3505 return emitOp<>(OP_BitAndSint64, L);
3506}
3507bool ByteCodeEmitter::emitBitAndUint64(SourceInfo L) {
3508 return emitOp<>(OP_BitAndUint64, L);
3509}
3510bool ByteCodeEmitter::emitBitAndIntAP(SourceInfo L) {
3511 return emitOp<>(OP_BitAndIntAP, L);
3512}
3513bool ByteCodeEmitter::emitBitAndIntAPS(SourceInfo L) {
3514 return emitOp<>(OP_BitAndIntAPS, L);
3515}
3516bool ByteCodeEmitter::emitBitAndFixedPoint(SourceInfo L) {
3517 return emitOp<>(OP_BitAndFixedPoint, L);
3518}
3519#endif
3520#ifdef GET_EVAL_IMPL
3521bool EvalEmitter::emitBitAndSint8(SourceInfo L) {
3522 if (!isActive()) return true;
3523 CurrentSource = L;
3524 return BitAnd<PT_Sint8>(S, OpPC);
3525}
3526bool EvalEmitter::emitBitAndUint8(SourceInfo L) {
3527 if (!isActive()) return true;
3528 CurrentSource = L;
3529 return BitAnd<PT_Uint8>(S, OpPC);
3530}
3531bool EvalEmitter::emitBitAndSint16(SourceInfo L) {
3532 if (!isActive()) return true;
3533 CurrentSource = L;
3534 return BitAnd<PT_Sint16>(S, OpPC);
3535}
3536bool EvalEmitter::emitBitAndUint16(SourceInfo L) {
3537 if (!isActive()) return true;
3538 CurrentSource = L;
3539 return BitAnd<PT_Uint16>(S, OpPC);
3540}
3541bool EvalEmitter::emitBitAndSint32(SourceInfo L) {
3542 if (!isActive()) return true;
3543 CurrentSource = L;
3544 return BitAnd<PT_Sint32>(S, OpPC);
3545}
3546bool EvalEmitter::emitBitAndUint32(SourceInfo L) {
3547 if (!isActive()) return true;
3548 CurrentSource = L;
3549 return BitAnd<PT_Uint32>(S, OpPC);
3550}
3551bool EvalEmitter::emitBitAndSint64(SourceInfo L) {
3552 if (!isActive()) return true;
3553 CurrentSource = L;
3554 return BitAnd<PT_Sint64>(S, OpPC);
3555}
3556bool EvalEmitter::emitBitAndUint64(SourceInfo L) {
3557 if (!isActive()) return true;
3558 CurrentSource = L;
3559 return BitAnd<PT_Uint64>(S, OpPC);
3560}
3561bool EvalEmitter::emitBitAndIntAP(SourceInfo L) {
3562 if (!isActive()) return true;
3563 CurrentSource = L;
3564 return BitAnd<PT_IntAP>(S, OpPC);
3565}
3566bool EvalEmitter::emitBitAndIntAPS(SourceInfo L) {
3567 if (!isActive()) return true;
3568 CurrentSource = L;
3569 return BitAnd<PT_IntAPS>(S, OpPC);
3570}
3571bool EvalEmitter::emitBitAndFixedPoint(SourceInfo L) {
3572 if (!isActive()) return true;
3573 CurrentSource = L;
3574 return BitAnd<PT_FixedPoint>(S, OpPC);
3575}
3576#endif
3577#ifdef GET_OPCODE_NAMES
3578OP_BitCast,
3579#endif
3580#ifdef GET_INTERPFN_LIST
3581&Interp_BitCast,
3582#endif
3583#ifdef GET_INTERPFN_DISPATCHERS
3584PRESERVE_NONE
3585static bool Interp_BitCast(InterpState &S, CodePtr &PC) {
3586 if (!BitCast(S, PC)) return false;
3587#if USE_TAILCALLS
3588 MUSTTAIL return InterpNext(S, PC);
3589#else
3590 return true;
3591#endif
3592}
3593#endif
3594#ifdef GET_DISASM
3595case OP_BitCast:
3596 Text.Op = PrintName("BitCast");
3597 break;
3598#endif
3599#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3600bool emitBitCast(SourceInfo);
3601#endif
3602#ifdef GET_LINK_IMPL
3603bool ByteCodeEmitter::emitBitCast(SourceInfo L) {
3604 return emitOp<>(OP_BitCast, L);
3605}
3606#endif
3607#ifdef GET_EVAL_IMPL
3608bool EvalEmitter::emitBitCast(SourceInfo L) {
3609 if (!isActive()) return true;
3610 CurrentSource = L;
3611 return BitCast(S, OpPC);
3612}
3613#endif
3614#ifdef GET_OPCODE_NAMES
3615OP_BitCastPrimUint8,
3616OP_BitCastPrimSint8,
3617OP_BitCastPrimUint16,
3618OP_BitCastPrimSint16,
3619OP_BitCastPrimUint32,
3620OP_BitCastPrimSint32,
3621OP_BitCastPrimUint64,
3622OP_BitCastPrimSint64,
3623OP_BitCastPrimIntAP,
3624OP_BitCastPrimIntAPS,
3625OP_BitCastPrimBool,
3626OP_BitCastPrimFloat,
3627OP_BitCastPrimPtr,
3628OP_BitCastPrimMemberPtr,
3629#endif
3630#ifdef GET_INTERPFN_LIST
3631&Interp_BitCastPrimUint8,
3632&Interp_BitCastPrimSint8,
3633&Interp_BitCastPrimUint16,
3634&Interp_BitCastPrimSint16,
3635&Interp_BitCastPrimUint32,
3636&Interp_BitCastPrimSint32,
3637&Interp_BitCastPrimUint64,
3638&Interp_BitCastPrimSint64,
3639&Interp_BitCastPrimIntAP,
3640&Interp_BitCastPrimIntAPS,
3641&Interp_BitCastPrimBool,
3642&Interp_BitCastPrimFloat,
3643&Interp_BitCastPrimPtr,
3644&Interp_BitCastPrimMemberPtr,
3645#endif
3646#ifdef GET_INTERPFN_DISPATCHERS
3647PRESERVE_NONE
3648static bool Interp_BitCastPrimUint8(InterpState &S, CodePtr &PC) {
3649 {
3650 CodePtr OpPC = PC;
3651 const auto V0 = ReadArg<bool>(S, PC);
3652 const auto V1 = ReadArg<uint32_t>(S, PC);
3653 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3654 const auto V3 = ReadArg<const Type *>(S, PC);
3655 if (!BitCastPrim<PT_Uint8>(S, OpPC, V0, V1, V2, V3)) return false;
3656 }
3657#if USE_TAILCALLS
3658 MUSTTAIL return InterpNext(S, PC);
3659#else
3660 return true;
3661#endif
3662}
3663PRESERVE_NONE
3664static bool Interp_BitCastPrimSint8(InterpState &S, CodePtr &PC) {
3665 {
3666 CodePtr OpPC = PC;
3667 const auto V0 = ReadArg<bool>(S, PC);
3668 const auto V1 = ReadArg<uint32_t>(S, PC);
3669 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3670 const auto V3 = ReadArg<const Type *>(S, PC);
3671 if (!BitCastPrim<PT_Sint8>(S, OpPC, V0, V1, V2, V3)) return false;
3672 }
3673#if USE_TAILCALLS
3674 MUSTTAIL return InterpNext(S, PC);
3675#else
3676 return true;
3677#endif
3678}
3679PRESERVE_NONE
3680static bool Interp_BitCastPrimUint16(InterpState &S, CodePtr &PC) {
3681 {
3682 CodePtr OpPC = PC;
3683 const auto V0 = ReadArg<bool>(S, PC);
3684 const auto V1 = ReadArg<uint32_t>(S, PC);
3685 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3686 const auto V3 = ReadArg<const Type *>(S, PC);
3687 if (!BitCastPrim<PT_Uint16>(S, OpPC, V0, V1, V2, V3)) return false;
3688 }
3689#if USE_TAILCALLS
3690 MUSTTAIL return InterpNext(S, PC);
3691#else
3692 return true;
3693#endif
3694}
3695PRESERVE_NONE
3696static bool Interp_BitCastPrimSint16(InterpState &S, CodePtr &PC) {
3697 {
3698 CodePtr OpPC = PC;
3699 const auto V0 = ReadArg<bool>(S, PC);
3700 const auto V1 = ReadArg<uint32_t>(S, PC);
3701 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3702 const auto V3 = ReadArg<const Type *>(S, PC);
3703 if (!BitCastPrim<PT_Sint16>(S, OpPC, V0, V1, V2, V3)) return false;
3704 }
3705#if USE_TAILCALLS
3706 MUSTTAIL return InterpNext(S, PC);
3707#else
3708 return true;
3709#endif
3710}
3711PRESERVE_NONE
3712static bool Interp_BitCastPrimUint32(InterpState &S, CodePtr &PC) {
3713 {
3714 CodePtr OpPC = PC;
3715 const auto V0 = ReadArg<bool>(S, PC);
3716 const auto V1 = ReadArg<uint32_t>(S, PC);
3717 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3718 const auto V3 = ReadArg<const Type *>(S, PC);
3719 if (!BitCastPrim<PT_Uint32>(S, OpPC, V0, V1, V2, V3)) return false;
3720 }
3721#if USE_TAILCALLS
3722 MUSTTAIL return InterpNext(S, PC);
3723#else
3724 return true;
3725#endif
3726}
3727PRESERVE_NONE
3728static bool Interp_BitCastPrimSint32(InterpState &S, CodePtr &PC) {
3729 {
3730 CodePtr OpPC = PC;
3731 const auto V0 = ReadArg<bool>(S, PC);
3732 const auto V1 = ReadArg<uint32_t>(S, PC);
3733 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3734 const auto V3 = ReadArg<const Type *>(S, PC);
3735 if (!BitCastPrim<PT_Sint32>(S, OpPC, V0, V1, V2, V3)) return false;
3736 }
3737#if USE_TAILCALLS
3738 MUSTTAIL return InterpNext(S, PC);
3739#else
3740 return true;
3741#endif
3742}
3743PRESERVE_NONE
3744static bool Interp_BitCastPrimUint64(InterpState &S, CodePtr &PC) {
3745 {
3746 CodePtr OpPC = PC;
3747 const auto V0 = ReadArg<bool>(S, PC);
3748 const auto V1 = ReadArg<uint32_t>(S, PC);
3749 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3750 const auto V3 = ReadArg<const Type *>(S, PC);
3751 if (!BitCastPrim<PT_Uint64>(S, OpPC, V0, V1, V2, V3)) return false;
3752 }
3753#if USE_TAILCALLS
3754 MUSTTAIL return InterpNext(S, PC);
3755#else
3756 return true;
3757#endif
3758}
3759PRESERVE_NONE
3760static bool Interp_BitCastPrimSint64(InterpState &S, CodePtr &PC) {
3761 {
3762 CodePtr OpPC = PC;
3763 const auto V0 = ReadArg<bool>(S, PC);
3764 const auto V1 = ReadArg<uint32_t>(S, PC);
3765 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3766 const auto V3 = ReadArg<const Type *>(S, PC);
3767 if (!BitCastPrim<PT_Sint64>(S, OpPC, V0, V1, V2, V3)) return false;
3768 }
3769#if USE_TAILCALLS
3770 MUSTTAIL return InterpNext(S, PC);
3771#else
3772 return true;
3773#endif
3774}
3775PRESERVE_NONE
3776static bool Interp_BitCastPrimIntAP(InterpState &S, CodePtr &PC) {
3777 {
3778 CodePtr OpPC = PC;
3779 const auto V0 = ReadArg<bool>(S, PC);
3780 const auto V1 = ReadArg<uint32_t>(S, PC);
3781 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3782 const auto V3 = ReadArg<const Type *>(S, PC);
3783 if (!BitCastPrim<PT_IntAP>(S, OpPC, V0, V1, V2, V3)) return false;
3784 }
3785#if USE_TAILCALLS
3786 MUSTTAIL return InterpNext(S, PC);
3787#else
3788 return true;
3789#endif
3790}
3791PRESERVE_NONE
3792static bool Interp_BitCastPrimIntAPS(InterpState &S, CodePtr &PC) {
3793 {
3794 CodePtr OpPC = PC;
3795 const auto V0 = ReadArg<bool>(S, PC);
3796 const auto V1 = ReadArg<uint32_t>(S, PC);
3797 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3798 const auto V3 = ReadArg<const Type *>(S, PC);
3799 if (!BitCastPrim<PT_IntAPS>(S, OpPC, V0, V1, V2, V3)) return false;
3800 }
3801#if USE_TAILCALLS
3802 MUSTTAIL return InterpNext(S, PC);
3803#else
3804 return true;
3805#endif
3806}
3807PRESERVE_NONE
3808static bool Interp_BitCastPrimBool(InterpState &S, CodePtr &PC) {
3809 {
3810 CodePtr OpPC = PC;
3811 const auto V0 = ReadArg<bool>(S, PC);
3812 const auto V1 = ReadArg<uint32_t>(S, PC);
3813 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3814 const auto V3 = ReadArg<const Type *>(S, PC);
3815 if (!BitCastPrim<PT_Bool>(S, OpPC, V0, V1, V2, V3)) return false;
3816 }
3817#if USE_TAILCALLS
3818 MUSTTAIL return InterpNext(S, PC);
3819#else
3820 return true;
3821#endif
3822}
3823PRESERVE_NONE
3824static bool Interp_BitCastPrimFloat(InterpState &S, CodePtr &PC) {
3825 {
3826 CodePtr OpPC = PC;
3827 const auto V0 = ReadArg<bool>(S, PC);
3828 const auto V1 = ReadArg<uint32_t>(S, PC);
3829 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3830 const auto V3 = ReadArg<const Type *>(S, PC);
3831 if (!BitCastPrim<PT_Float>(S, OpPC, V0, V1, V2, V3)) return false;
3832 }
3833#if USE_TAILCALLS
3834 MUSTTAIL return InterpNext(S, PC);
3835#else
3836 return true;
3837#endif
3838}
3839PRESERVE_NONE
3840static bool Interp_BitCastPrimPtr(InterpState &S, CodePtr &PC) {
3841 {
3842 CodePtr OpPC = PC;
3843 const auto V0 = ReadArg<bool>(S, PC);
3844 const auto V1 = ReadArg<uint32_t>(S, PC);
3845 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3846 const auto V3 = ReadArg<const Type *>(S, PC);
3847 if (!BitCastPrim<PT_Ptr>(S, OpPC, V0, V1, V2, V3)) return false;
3848 }
3849#if USE_TAILCALLS
3850 MUSTTAIL return InterpNext(S, PC);
3851#else
3852 return true;
3853#endif
3854}
3855PRESERVE_NONE
3856static bool Interp_BitCastPrimMemberPtr(InterpState &S, CodePtr &PC) {
3857 {
3858 CodePtr OpPC = PC;
3859 const auto V0 = ReadArg<bool>(S, PC);
3860 const auto V1 = ReadArg<uint32_t>(S, PC);
3861 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
3862 const auto V3 = ReadArg<const Type *>(S, PC);
3863 if (!BitCastPrim<PT_MemberPtr>(S, OpPC, V0, V1, V2, V3)) return false;
3864 }
3865#if USE_TAILCALLS
3866 MUSTTAIL return InterpNext(S, PC);
3867#else
3868 return true;
3869#endif
3870}
3871#endif
3872#ifdef GET_DISASM
3873case OP_BitCastPrimUint8:
3874 Text.Op = PrintName("BitCastPrimUint8");
3875 Text.Args.push_back(printArg<bool>(P, PC));
3876 Text.Args.push_back(printArg<uint32_t>(P, PC));
3877 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3878 Text.Args.push_back(printArg<const Type *>(P, PC));
3879 break;
3880case OP_BitCastPrimSint8:
3881 Text.Op = PrintName("BitCastPrimSint8");
3882 Text.Args.push_back(printArg<bool>(P, PC));
3883 Text.Args.push_back(printArg<uint32_t>(P, PC));
3884 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3885 Text.Args.push_back(printArg<const Type *>(P, PC));
3886 break;
3887case OP_BitCastPrimUint16:
3888 Text.Op = PrintName("BitCastPrimUint16");
3889 Text.Args.push_back(printArg<bool>(P, PC));
3890 Text.Args.push_back(printArg<uint32_t>(P, PC));
3891 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3892 Text.Args.push_back(printArg<const Type *>(P, PC));
3893 break;
3894case OP_BitCastPrimSint16:
3895 Text.Op = PrintName("BitCastPrimSint16");
3896 Text.Args.push_back(printArg<bool>(P, PC));
3897 Text.Args.push_back(printArg<uint32_t>(P, PC));
3898 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3899 Text.Args.push_back(printArg<const Type *>(P, PC));
3900 break;
3901case OP_BitCastPrimUint32:
3902 Text.Op = PrintName("BitCastPrimUint32");
3903 Text.Args.push_back(printArg<bool>(P, PC));
3904 Text.Args.push_back(printArg<uint32_t>(P, PC));
3905 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3906 Text.Args.push_back(printArg<const Type *>(P, PC));
3907 break;
3908case OP_BitCastPrimSint32:
3909 Text.Op = PrintName("BitCastPrimSint32");
3910 Text.Args.push_back(printArg<bool>(P, PC));
3911 Text.Args.push_back(printArg<uint32_t>(P, PC));
3912 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3913 Text.Args.push_back(printArg<const Type *>(P, PC));
3914 break;
3915case OP_BitCastPrimUint64:
3916 Text.Op = PrintName("BitCastPrimUint64");
3917 Text.Args.push_back(printArg<bool>(P, PC));
3918 Text.Args.push_back(printArg<uint32_t>(P, PC));
3919 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3920 Text.Args.push_back(printArg<const Type *>(P, PC));
3921 break;
3922case OP_BitCastPrimSint64:
3923 Text.Op = PrintName("BitCastPrimSint64");
3924 Text.Args.push_back(printArg<bool>(P, PC));
3925 Text.Args.push_back(printArg<uint32_t>(P, PC));
3926 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3927 Text.Args.push_back(printArg<const Type *>(P, PC));
3928 break;
3929case OP_BitCastPrimIntAP:
3930 Text.Op = PrintName("BitCastPrimIntAP");
3931 Text.Args.push_back(printArg<bool>(P, PC));
3932 Text.Args.push_back(printArg<uint32_t>(P, PC));
3933 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3934 Text.Args.push_back(printArg<const Type *>(P, PC));
3935 break;
3936case OP_BitCastPrimIntAPS:
3937 Text.Op = PrintName("BitCastPrimIntAPS");
3938 Text.Args.push_back(printArg<bool>(P, PC));
3939 Text.Args.push_back(printArg<uint32_t>(P, PC));
3940 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3941 Text.Args.push_back(printArg<const Type *>(P, PC));
3942 break;
3943case OP_BitCastPrimBool:
3944 Text.Op = PrintName("BitCastPrimBool");
3945 Text.Args.push_back(printArg<bool>(P, PC));
3946 Text.Args.push_back(printArg<uint32_t>(P, PC));
3947 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3948 Text.Args.push_back(printArg<const Type *>(P, PC));
3949 break;
3950case OP_BitCastPrimFloat:
3951 Text.Op = PrintName("BitCastPrimFloat");
3952 Text.Args.push_back(printArg<bool>(P, PC));
3953 Text.Args.push_back(printArg<uint32_t>(P, PC));
3954 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3955 Text.Args.push_back(printArg<const Type *>(P, PC));
3956 break;
3957case OP_BitCastPrimPtr:
3958 Text.Op = PrintName("BitCastPrimPtr");
3959 Text.Args.push_back(printArg<bool>(P, PC));
3960 Text.Args.push_back(printArg<uint32_t>(P, PC));
3961 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3962 Text.Args.push_back(printArg<const Type *>(P, PC));
3963 break;
3964case OP_BitCastPrimMemberPtr:
3965 Text.Op = PrintName("BitCastPrimMemberPtr");
3966 Text.Args.push_back(printArg<bool>(P, PC));
3967 Text.Args.push_back(printArg<uint32_t>(P, PC));
3968 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3969 Text.Args.push_back(printArg<const Type *>(P, PC));
3970 break;
3971#endif
3972#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3973bool emitBitCastPrimUint8( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3974bool emitBitCastPrimSint8( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3975bool emitBitCastPrimUint16( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3976bool emitBitCastPrimSint16( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3977bool emitBitCastPrimUint32( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3978bool emitBitCastPrimSint32( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3979bool emitBitCastPrimUint64( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3980bool emitBitCastPrimSint64( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3981bool emitBitCastPrimIntAP( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3982bool emitBitCastPrimIntAPS( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3983bool emitBitCastPrimBool( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3984bool emitBitCastPrimFloat( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3985bool emitBitCastPrimPtr( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3986bool emitBitCastPrimMemberPtr( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3987#endif
3988#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3989[[nodiscard]] bool emitBitCastPrim(PrimType, bool, uint32_t, const llvm::fltSemantics *, const Type *, SourceInfo I);
3990#endif
3991#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
3992bool
3993#if defined(GET_EVAL_IMPL)
3994EvalEmitter
3995#else
3996ByteCodeEmitter
3997#endif
3998::emitBitCastPrim(PrimType T0, bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo I) {
3999 switch (T0) {
4000 case PT_Uint8:
4001 return emitBitCastPrimUint8(A0, A1, A2, A3, I);
4002 case PT_Sint8:
4003 return emitBitCastPrimSint8(A0, A1, A2, A3, I);
4004 case PT_Uint16:
4005 return emitBitCastPrimUint16(A0, A1, A2, A3, I);
4006 case PT_Sint16:
4007 return emitBitCastPrimSint16(A0, A1, A2, A3, I);
4008 case PT_Uint32:
4009 return emitBitCastPrimUint32(A0, A1, A2, A3, I);
4010 case PT_Sint32:
4011 return emitBitCastPrimSint32(A0, A1, A2, A3, I);
4012 case PT_Uint64:
4013 return emitBitCastPrimUint64(A0, A1, A2, A3, I);
4014 case PT_Sint64:
4015 return emitBitCastPrimSint64(A0, A1, A2, A3, I);
4016 case PT_IntAP:
4017 return emitBitCastPrimIntAP(A0, A1, A2, A3, I);
4018 case PT_IntAPS:
4019 return emitBitCastPrimIntAPS(A0, A1, A2, A3, I);
4020 case PT_Bool:
4021 return emitBitCastPrimBool(A0, A1, A2, A3, I);
4022 case PT_Float:
4023 return emitBitCastPrimFloat(A0, A1, A2, A3, I);
4024 case PT_Ptr:
4025 return emitBitCastPrimPtr(A0, A1, A2, A3, I);
4026 case PT_MemberPtr:
4027 return emitBitCastPrimMemberPtr(A0, A1, A2, A3, I);
4028 default: llvm_unreachable("invalid type: emitBitCastPrim");
4029 }
4030 llvm_unreachable("invalid enum value");
4031}
4032#endif
4033#ifdef GET_LINK_IMPL
4034bool ByteCodeEmitter::emitBitCastPrimUint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4035 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint8, A0, A1, A2, A3, L);
4036}
4037bool ByteCodeEmitter::emitBitCastPrimSint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4038 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint8, A0, A1, A2, A3, L);
4039}
4040bool ByteCodeEmitter::emitBitCastPrimUint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4041 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint16, A0, A1, A2, A3, L);
4042}
4043bool ByteCodeEmitter::emitBitCastPrimSint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4044 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint16, A0, A1, A2, A3, L);
4045}
4046bool ByteCodeEmitter::emitBitCastPrimUint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4047 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint32, A0, A1, A2, A3, L);
4048}
4049bool ByteCodeEmitter::emitBitCastPrimSint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4050 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint32, A0, A1, A2, A3, L);
4051}
4052bool ByteCodeEmitter::emitBitCastPrimUint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4053 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint64, A0, A1, A2, A3, L);
4054}
4055bool ByteCodeEmitter::emitBitCastPrimSint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4056 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint64, A0, A1, A2, A3, L);
4057}
4058bool ByteCodeEmitter::emitBitCastPrimIntAP( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4059 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimIntAP, A0, A1, A2, A3, L);
4060}
4061bool ByteCodeEmitter::emitBitCastPrimIntAPS( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4062 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimIntAPS, A0, A1, A2, A3, L);
4063}
4064bool ByteCodeEmitter::emitBitCastPrimBool( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4065 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimBool, A0, A1, A2, A3, L);
4066}
4067bool ByteCodeEmitter::emitBitCastPrimFloat( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4068 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimFloat, A0, A1, A2, A3, L);
4069}
4070bool ByteCodeEmitter::emitBitCastPrimPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4071 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimPtr, A0, A1, A2, A3, L);
4072}
4073bool ByteCodeEmitter::emitBitCastPrimMemberPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4074 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimMemberPtr, A0, A1, A2, A3, L);
4075}
4076#endif
4077#ifdef GET_EVAL_IMPL
4078bool EvalEmitter::emitBitCastPrimUint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4079 if (!isActive()) return true;
4080 CurrentSource = L;
4081 return BitCastPrim<PT_Uint8>(S, OpPC, A0, A1, A2, A3);
4082}
4083bool EvalEmitter::emitBitCastPrimSint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4084 if (!isActive()) return true;
4085 CurrentSource = L;
4086 return BitCastPrim<PT_Sint8>(S, OpPC, A0, A1, A2, A3);
4087}
4088bool EvalEmitter::emitBitCastPrimUint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4089 if (!isActive()) return true;
4090 CurrentSource = L;
4091 return BitCastPrim<PT_Uint16>(S, OpPC, A0, A1, A2, A3);
4092}
4093bool EvalEmitter::emitBitCastPrimSint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4094 if (!isActive()) return true;
4095 CurrentSource = L;
4096 return BitCastPrim<PT_Sint16>(S, OpPC, A0, A1, A2, A3);
4097}
4098bool EvalEmitter::emitBitCastPrimUint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4099 if (!isActive()) return true;
4100 CurrentSource = L;
4101 return BitCastPrim<PT_Uint32>(S, OpPC, A0, A1, A2, A3);
4102}
4103bool EvalEmitter::emitBitCastPrimSint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4104 if (!isActive()) return true;
4105 CurrentSource = L;
4106 return BitCastPrim<PT_Sint32>(S, OpPC, A0, A1, A2, A3);
4107}
4108bool EvalEmitter::emitBitCastPrimUint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4109 if (!isActive()) return true;
4110 CurrentSource = L;
4111 return BitCastPrim<PT_Uint64>(S, OpPC, A0, A1, A2, A3);
4112}
4113bool EvalEmitter::emitBitCastPrimSint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4114 if (!isActive()) return true;
4115 CurrentSource = L;
4116 return BitCastPrim<PT_Sint64>(S, OpPC, A0, A1, A2, A3);
4117}
4118bool EvalEmitter::emitBitCastPrimIntAP( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4119 if (!isActive()) return true;
4120 CurrentSource = L;
4121 return BitCastPrim<PT_IntAP>(S, OpPC, A0, A1, A2, A3);
4122}
4123bool EvalEmitter::emitBitCastPrimIntAPS( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4124 if (!isActive()) return true;
4125 CurrentSource = L;
4126 return BitCastPrim<PT_IntAPS>(S, OpPC, A0, A1, A2, A3);
4127}
4128bool EvalEmitter::emitBitCastPrimBool( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4129 if (!isActive()) return true;
4130 CurrentSource = L;
4131 return BitCastPrim<PT_Bool>(S, OpPC, A0, A1, A2, A3);
4132}
4133bool EvalEmitter::emitBitCastPrimFloat( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4134 if (!isActive()) return true;
4135 CurrentSource = L;
4136 return BitCastPrim<PT_Float>(S, OpPC, A0, A1, A2, A3);
4137}
4138bool EvalEmitter::emitBitCastPrimPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4139 if (!isActive()) return true;
4140 CurrentSource = L;
4141 return BitCastPrim<PT_Ptr>(S, OpPC, A0, A1, A2, A3);
4142}
4143bool EvalEmitter::emitBitCastPrimMemberPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
4144 if (!isActive()) return true;
4145 CurrentSource = L;
4146 return BitCastPrim<PT_MemberPtr>(S, OpPC, A0, A1, A2, A3);
4147}
4148#endif
4149#ifdef GET_OPCODE_NAMES
4150OP_BitOrSint8,
4151OP_BitOrUint8,
4152OP_BitOrSint16,
4153OP_BitOrUint16,
4154OP_BitOrSint32,
4155OP_BitOrUint32,
4156OP_BitOrSint64,
4157OP_BitOrUint64,
4158OP_BitOrIntAP,
4159OP_BitOrIntAPS,
4160OP_BitOrFixedPoint,
4161#endif
4162#ifdef GET_INTERPFN_LIST
4163&Interp_BitOrSint8,
4164&Interp_BitOrUint8,
4165&Interp_BitOrSint16,
4166&Interp_BitOrUint16,
4167&Interp_BitOrSint32,
4168&Interp_BitOrUint32,
4169&Interp_BitOrSint64,
4170&Interp_BitOrUint64,
4171&Interp_BitOrIntAP,
4172&Interp_BitOrIntAPS,
4173&Interp_BitOrFixedPoint,
4174#endif
4175#ifdef GET_INTERPFN_DISPATCHERS
4176PRESERVE_NONE
4177static bool Interp_BitOrSint8(InterpState &S, CodePtr &PC) {
4178 if (!BitOr<PT_Sint8>(S, PC)) return false;
4179#if USE_TAILCALLS
4180 MUSTTAIL return InterpNext(S, PC);
4181#else
4182 return true;
4183#endif
4184}
4185PRESERVE_NONE
4186static bool Interp_BitOrUint8(InterpState &S, CodePtr &PC) {
4187 if (!BitOr<PT_Uint8>(S, PC)) return false;
4188#if USE_TAILCALLS
4189 MUSTTAIL return InterpNext(S, PC);
4190#else
4191 return true;
4192#endif
4193}
4194PRESERVE_NONE
4195static bool Interp_BitOrSint16(InterpState &S, CodePtr &PC) {
4196 if (!BitOr<PT_Sint16>(S, PC)) return false;
4197#if USE_TAILCALLS
4198 MUSTTAIL return InterpNext(S, PC);
4199#else
4200 return true;
4201#endif
4202}
4203PRESERVE_NONE
4204static bool Interp_BitOrUint16(InterpState &S, CodePtr &PC) {
4205 if (!BitOr<PT_Uint16>(S, PC)) return false;
4206#if USE_TAILCALLS
4207 MUSTTAIL return InterpNext(S, PC);
4208#else
4209 return true;
4210#endif
4211}
4212PRESERVE_NONE
4213static bool Interp_BitOrSint32(InterpState &S, CodePtr &PC) {
4214 if (!BitOr<PT_Sint32>(S, PC)) return false;
4215#if USE_TAILCALLS
4216 MUSTTAIL return InterpNext(S, PC);
4217#else
4218 return true;
4219#endif
4220}
4221PRESERVE_NONE
4222static bool Interp_BitOrUint32(InterpState &S, CodePtr &PC) {
4223 if (!BitOr<PT_Uint32>(S, PC)) return false;
4224#if USE_TAILCALLS
4225 MUSTTAIL return InterpNext(S, PC);
4226#else
4227 return true;
4228#endif
4229}
4230PRESERVE_NONE
4231static bool Interp_BitOrSint64(InterpState &S, CodePtr &PC) {
4232 if (!BitOr<PT_Sint64>(S, PC)) return false;
4233#if USE_TAILCALLS
4234 MUSTTAIL return InterpNext(S, PC);
4235#else
4236 return true;
4237#endif
4238}
4239PRESERVE_NONE
4240static bool Interp_BitOrUint64(InterpState &S, CodePtr &PC) {
4241 if (!BitOr<PT_Uint64>(S, PC)) return false;
4242#if USE_TAILCALLS
4243 MUSTTAIL return InterpNext(S, PC);
4244#else
4245 return true;
4246#endif
4247}
4248PRESERVE_NONE
4249static bool Interp_BitOrIntAP(InterpState &S, CodePtr &PC) {
4250 if (!BitOr<PT_IntAP>(S, PC)) return false;
4251#if USE_TAILCALLS
4252 MUSTTAIL return InterpNext(S, PC);
4253#else
4254 return true;
4255#endif
4256}
4257PRESERVE_NONE
4258static bool Interp_BitOrIntAPS(InterpState &S, CodePtr &PC) {
4259 if (!BitOr<PT_IntAPS>(S, PC)) return false;
4260#if USE_TAILCALLS
4261 MUSTTAIL return InterpNext(S, PC);
4262#else
4263 return true;
4264#endif
4265}
4266PRESERVE_NONE
4267static bool Interp_BitOrFixedPoint(InterpState &S, CodePtr &PC) {
4268 if (!BitOr<PT_FixedPoint>(S, PC)) return false;
4269#if USE_TAILCALLS
4270 MUSTTAIL return InterpNext(S, PC);
4271#else
4272 return true;
4273#endif
4274}
4275#endif
4276#ifdef GET_DISASM
4277case OP_BitOrSint8:
4278 Text.Op = PrintName("BitOrSint8");
4279 break;
4280case OP_BitOrUint8:
4281 Text.Op = PrintName("BitOrUint8");
4282 break;
4283case OP_BitOrSint16:
4284 Text.Op = PrintName("BitOrSint16");
4285 break;
4286case OP_BitOrUint16:
4287 Text.Op = PrintName("BitOrUint16");
4288 break;
4289case OP_BitOrSint32:
4290 Text.Op = PrintName("BitOrSint32");
4291 break;
4292case OP_BitOrUint32:
4293 Text.Op = PrintName("BitOrUint32");
4294 break;
4295case OP_BitOrSint64:
4296 Text.Op = PrintName("BitOrSint64");
4297 break;
4298case OP_BitOrUint64:
4299 Text.Op = PrintName("BitOrUint64");
4300 break;
4301case OP_BitOrIntAP:
4302 Text.Op = PrintName("BitOrIntAP");
4303 break;
4304case OP_BitOrIntAPS:
4305 Text.Op = PrintName("BitOrIntAPS");
4306 break;
4307case OP_BitOrFixedPoint:
4308 Text.Op = PrintName("BitOrFixedPoint");
4309 break;
4310#endif
4311#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4312bool emitBitOrSint8(SourceInfo);
4313bool emitBitOrUint8(SourceInfo);
4314bool emitBitOrSint16(SourceInfo);
4315bool emitBitOrUint16(SourceInfo);
4316bool emitBitOrSint32(SourceInfo);
4317bool emitBitOrUint32(SourceInfo);
4318bool emitBitOrSint64(SourceInfo);
4319bool emitBitOrUint64(SourceInfo);
4320bool emitBitOrIntAP(SourceInfo);
4321bool emitBitOrIntAPS(SourceInfo);
4322bool emitBitOrFixedPoint(SourceInfo);
4323#endif
4324#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4325[[nodiscard]] bool emitBitOr(PrimType, SourceInfo I);
4326#endif
4327#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
4328bool
4329#if defined(GET_EVAL_IMPL)
4330EvalEmitter
4331#else
4332ByteCodeEmitter
4333#endif
4334::emitBitOr(PrimType T0, SourceInfo I) {
4335 switch (T0) {
4336 case PT_Sint8:
4337 return emitBitOrSint8(I);
4338 case PT_Uint8:
4339 return emitBitOrUint8(I);
4340 case PT_Sint16:
4341 return emitBitOrSint16(I);
4342 case PT_Uint16:
4343 return emitBitOrUint16(I);
4344 case PT_Sint32:
4345 return emitBitOrSint32(I);
4346 case PT_Uint32:
4347 return emitBitOrUint32(I);
4348 case PT_Sint64:
4349 return emitBitOrSint64(I);
4350 case PT_Uint64:
4351 return emitBitOrUint64(I);
4352 case PT_IntAP:
4353 return emitBitOrIntAP(I);
4354 case PT_IntAPS:
4355 return emitBitOrIntAPS(I);
4356 case PT_FixedPoint:
4357 return emitBitOrFixedPoint(I);
4358 default: llvm_unreachable("invalid type: emitBitOr");
4359 }
4360 llvm_unreachable("invalid enum value");
4361}
4362#endif
4363#ifdef GET_LINK_IMPL
4364bool ByteCodeEmitter::emitBitOrSint8(SourceInfo L) {
4365 return emitOp<>(OP_BitOrSint8, L);
4366}
4367bool ByteCodeEmitter::emitBitOrUint8(SourceInfo L) {
4368 return emitOp<>(OP_BitOrUint8, L);
4369}
4370bool ByteCodeEmitter::emitBitOrSint16(SourceInfo L) {
4371 return emitOp<>(OP_BitOrSint16, L);
4372}
4373bool ByteCodeEmitter::emitBitOrUint16(SourceInfo L) {
4374 return emitOp<>(OP_BitOrUint16, L);
4375}
4376bool ByteCodeEmitter::emitBitOrSint32(SourceInfo L) {
4377 return emitOp<>(OP_BitOrSint32, L);
4378}
4379bool ByteCodeEmitter::emitBitOrUint32(SourceInfo L) {
4380 return emitOp<>(OP_BitOrUint32, L);
4381}
4382bool ByteCodeEmitter::emitBitOrSint64(SourceInfo L) {
4383 return emitOp<>(OP_BitOrSint64, L);
4384}
4385bool ByteCodeEmitter::emitBitOrUint64(SourceInfo L) {
4386 return emitOp<>(OP_BitOrUint64, L);
4387}
4388bool ByteCodeEmitter::emitBitOrIntAP(SourceInfo L) {
4389 return emitOp<>(OP_BitOrIntAP, L);
4390}
4391bool ByteCodeEmitter::emitBitOrIntAPS(SourceInfo L) {
4392 return emitOp<>(OP_BitOrIntAPS, L);
4393}
4394bool ByteCodeEmitter::emitBitOrFixedPoint(SourceInfo L) {
4395 return emitOp<>(OP_BitOrFixedPoint, L);
4396}
4397#endif
4398#ifdef GET_EVAL_IMPL
4399bool EvalEmitter::emitBitOrSint8(SourceInfo L) {
4400 if (!isActive()) return true;
4401 CurrentSource = L;
4402 return BitOr<PT_Sint8>(S, OpPC);
4403}
4404bool EvalEmitter::emitBitOrUint8(SourceInfo L) {
4405 if (!isActive()) return true;
4406 CurrentSource = L;
4407 return BitOr<PT_Uint8>(S, OpPC);
4408}
4409bool EvalEmitter::emitBitOrSint16(SourceInfo L) {
4410 if (!isActive()) return true;
4411 CurrentSource = L;
4412 return BitOr<PT_Sint16>(S, OpPC);
4413}
4414bool EvalEmitter::emitBitOrUint16(SourceInfo L) {
4415 if (!isActive()) return true;
4416 CurrentSource = L;
4417 return BitOr<PT_Uint16>(S, OpPC);
4418}
4419bool EvalEmitter::emitBitOrSint32(SourceInfo L) {
4420 if (!isActive()) return true;
4421 CurrentSource = L;
4422 return BitOr<PT_Sint32>(S, OpPC);
4423}
4424bool EvalEmitter::emitBitOrUint32(SourceInfo L) {
4425 if (!isActive()) return true;
4426 CurrentSource = L;
4427 return BitOr<PT_Uint32>(S, OpPC);
4428}
4429bool EvalEmitter::emitBitOrSint64(SourceInfo L) {
4430 if (!isActive()) return true;
4431 CurrentSource = L;
4432 return BitOr<PT_Sint64>(S, OpPC);
4433}
4434bool EvalEmitter::emitBitOrUint64(SourceInfo L) {
4435 if (!isActive()) return true;
4436 CurrentSource = L;
4437 return BitOr<PT_Uint64>(S, OpPC);
4438}
4439bool EvalEmitter::emitBitOrIntAP(SourceInfo L) {
4440 if (!isActive()) return true;
4441 CurrentSource = L;
4442 return BitOr<PT_IntAP>(S, OpPC);
4443}
4444bool EvalEmitter::emitBitOrIntAPS(SourceInfo L) {
4445 if (!isActive()) return true;
4446 CurrentSource = L;
4447 return BitOr<PT_IntAPS>(S, OpPC);
4448}
4449bool EvalEmitter::emitBitOrFixedPoint(SourceInfo L) {
4450 if (!isActive()) return true;
4451 CurrentSource = L;
4452 return BitOr<PT_FixedPoint>(S, OpPC);
4453}
4454#endif
4455#ifdef GET_OPCODE_NAMES
4456OP_BitXorSint8,
4457OP_BitXorUint8,
4458OP_BitXorSint16,
4459OP_BitXorUint16,
4460OP_BitXorSint32,
4461OP_BitXorUint32,
4462OP_BitXorSint64,
4463OP_BitXorUint64,
4464OP_BitXorIntAP,
4465OP_BitXorIntAPS,
4466OP_BitXorFixedPoint,
4467#endif
4468#ifdef GET_INTERPFN_LIST
4469&Interp_BitXorSint8,
4470&Interp_BitXorUint8,
4471&Interp_BitXorSint16,
4472&Interp_BitXorUint16,
4473&Interp_BitXorSint32,
4474&Interp_BitXorUint32,
4475&Interp_BitXorSint64,
4476&Interp_BitXorUint64,
4477&Interp_BitXorIntAP,
4478&Interp_BitXorIntAPS,
4479&Interp_BitXorFixedPoint,
4480#endif
4481#ifdef GET_INTERPFN_DISPATCHERS
4482PRESERVE_NONE
4483static bool Interp_BitXorSint8(InterpState &S, CodePtr &PC) {
4484 if (!BitXor<PT_Sint8>(S, PC)) return false;
4485#if USE_TAILCALLS
4486 MUSTTAIL return InterpNext(S, PC);
4487#else
4488 return true;
4489#endif
4490}
4491PRESERVE_NONE
4492static bool Interp_BitXorUint8(InterpState &S, CodePtr &PC) {
4493 if (!BitXor<PT_Uint8>(S, PC)) return false;
4494#if USE_TAILCALLS
4495 MUSTTAIL return InterpNext(S, PC);
4496#else
4497 return true;
4498#endif
4499}
4500PRESERVE_NONE
4501static bool Interp_BitXorSint16(InterpState &S, CodePtr &PC) {
4502 if (!BitXor<PT_Sint16>(S, PC)) return false;
4503#if USE_TAILCALLS
4504 MUSTTAIL return InterpNext(S, PC);
4505#else
4506 return true;
4507#endif
4508}
4509PRESERVE_NONE
4510static bool Interp_BitXorUint16(InterpState &S, CodePtr &PC) {
4511 if (!BitXor<PT_Uint16>(S, PC)) return false;
4512#if USE_TAILCALLS
4513 MUSTTAIL return InterpNext(S, PC);
4514#else
4515 return true;
4516#endif
4517}
4518PRESERVE_NONE
4519static bool Interp_BitXorSint32(InterpState &S, CodePtr &PC) {
4520 if (!BitXor<PT_Sint32>(S, PC)) return false;
4521#if USE_TAILCALLS
4522 MUSTTAIL return InterpNext(S, PC);
4523#else
4524 return true;
4525#endif
4526}
4527PRESERVE_NONE
4528static bool Interp_BitXorUint32(InterpState &S, CodePtr &PC) {
4529 if (!BitXor<PT_Uint32>(S, PC)) return false;
4530#if USE_TAILCALLS
4531 MUSTTAIL return InterpNext(S, PC);
4532#else
4533 return true;
4534#endif
4535}
4536PRESERVE_NONE
4537static bool Interp_BitXorSint64(InterpState &S, CodePtr &PC) {
4538 if (!BitXor<PT_Sint64>(S, PC)) return false;
4539#if USE_TAILCALLS
4540 MUSTTAIL return InterpNext(S, PC);
4541#else
4542 return true;
4543#endif
4544}
4545PRESERVE_NONE
4546static bool Interp_BitXorUint64(InterpState &S, CodePtr &PC) {
4547 if (!BitXor<PT_Uint64>(S, PC)) return false;
4548#if USE_TAILCALLS
4549 MUSTTAIL return InterpNext(S, PC);
4550#else
4551 return true;
4552#endif
4553}
4554PRESERVE_NONE
4555static bool Interp_BitXorIntAP(InterpState &S, CodePtr &PC) {
4556 if (!BitXor<PT_IntAP>(S, PC)) return false;
4557#if USE_TAILCALLS
4558 MUSTTAIL return InterpNext(S, PC);
4559#else
4560 return true;
4561#endif
4562}
4563PRESERVE_NONE
4564static bool Interp_BitXorIntAPS(InterpState &S, CodePtr &PC) {
4565 if (!BitXor<PT_IntAPS>(S, PC)) return false;
4566#if USE_TAILCALLS
4567 MUSTTAIL return InterpNext(S, PC);
4568#else
4569 return true;
4570#endif
4571}
4572PRESERVE_NONE
4573static bool Interp_BitXorFixedPoint(InterpState &S, CodePtr &PC) {
4574 if (!BitXor<PT_FixedPoint>(S, PC)) return false;
4575#if USE_TAILCALLS
4576 MUSTTAIL return InterpNext(S, PC);
4577#else
4578 return true;
4579#endif
4580}
4581#endif
4582#ifdef GET_DISASM
4583case OP_BitXorSint8:
4584 Text.Op = PrintName("BitXorSint8");
4585 break;
4586case OP_BitXorUint8:
4587 Text.Op = PrintName("BitXorUint8");
4588 break;
4589case OP_BitXorSint16:
4590 Text.Op = PrintName("BitXorSint16");
4591 break;
4592case OP_BitXorUint16:
4593 Text.Op = PrintName("BitXorUint16");
4594 break;
4595case OP_BitXorSint32:
4596 Text.Op = PrintName("BitXorSint32");
4597 break;
4598case OP_BitXorUint32:
4599 Text.Op = PrintName("BitXorUint32");
4600 break;
4601case OP_BitXorSint64:
4602 Text.Op = PrintName("BitXorSint64");
4603 break;
4604case OP_BitXorUint64:
4605 Text.Op = PrintName("BitXorUint64");
4606 break;
4607case OP_BitXorIntAP:
4608 Text.Op = PrintName("BitXorIntAP");
4609 break;
4610case OP_BitXorIntAPS:
4611 Text.Op = PrintName("BitXorIntAPS");
4612 break;
4613case OP_BitXorFixedPoint:
4614 Text.Op = PrintName("BitXorFixedPoint");
4615 break;
4616#endif
4617#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4618bool emitBitXorSint8(SourceInfo);
4619bool emitBitXorUint8(SourceInfo);
4620bool emitBitXorSint16(SourceInfo);
4621bool emitBitXorUint16(SourceInfo);
4622bool emitBitXorSint32(SourceInfo);
4623bool emitBitXorUint32(SourceInfo);
4624bool emitBitXorSint64(SourceInfo);
4625bool emitBitXorUint64(SourceInfo);
4626bool emitBitXorIntAP(SourceInfo);
4627bool emitBitXorIntAPS(SourceInfo);
4628bool emitBitXorFixedPoint(SourceInfo);
4629#endif
4630#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4631[[nodiscard]] bool emitBitXor(PrimType, SourceInfo I);
4632#endif
4633#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
4634bool
4635#if defined(GET_EVAL_IMPL)
4636EvalEmitter
4637#else
4638ByteCodeEmitter
4639#endif
4640::emitBitXor(PrimType T0, SourceInfo I) {
4641 switch (T0) {
4642 case PT_Sint8:
4643 return emitBitXorSint8(I);
4644 case PT_Uint8:
4645 return emitBitXorUint8(I);
4646 case PT_Sint16:
4647 return emitBitXorSint16(I);
4648 case PT_Uint16:
4649 return emitBitXorUint16(I);
4650 case PT_Sint32:
4651 return emitBitXorSint32(I);
4652 case PT_Uint32:
4653 return emitBitXorUint32(I);
4654 case PT_Sint64:
4655 return emitBitXorSint64(I);
4656 case PT_Uint64:
4657 return emitBitXorUint64(I);
4658 case PT_IntAP:
4659 return emitBitXorIntAP(I);
4660 case PT_IntAPS:
4661 return emitBitXorIntAPS(I);
4662 case PT_FixedPoint:
4663 return emitBitXorFixedPoint(I);
4664 default: llvm_unreachable("invalid type: emitBitXor");
4665 }
4666 llvm_unreachable("invalid enum value");
4667}
4668#endif
4669#ifdef GET_LINK_IMPL
4670bool ByteCodeEmitter::emitBitXorSint8(SourceInfo L) {
4671 return emitOp<>(OP_BitXorSint8, L);
4672}
4673bool ByteCodeEmitter::emitBitXorUint8(SourceInfo L) {
4674 return emitOp<>(OP_BitXorUint8, L);
4675}
4676bool ByteCodeEmitter::emitBitXorSint16(SourceInfo L) {
4677 return emitOp<>(OP_BitXorSint16, L);
4678}
4679bool ByteCodeEmitter::emitBitXorUint16(SourceInfo L) {
4680 return emitOp<>(OP_BitXorUint16, L);
4681}
4682bool ByteCodeEmitter::emitBitXorSint32(SourceInfo L) {
4683 return emitOp<>(OP_BitXorSint32, L);
4684}
4685bool ByteCodeEmitter::emitBitXorUint32(SourceInfo L) {
4686 return emitOp<>(OP_BitXorUint32, L);
4687}
4688bool ByteCodeEmitter::emitBitXorSint64(SourceInfo L) {
4689 return emitOp<>(OP_BitXorSint64, L);
4690}
4691bool ByteCodeEmitter::emitBitXorUint64(SourceInfo L) {
4692 return emitOp<>(OP_BitXorUint64, L);
4693}
4694bool ByteCodeEmitter::emitBitXorIntAP(SourceInfo L) {
4695 return emitOp<>(OP_BitXorIntAP, L);
4696}
4697bool ByteCodeEmitter::emitBitXorIntAPS(SourceInfo L) {
4698 return emitOp<>(OP_BitXorIntAPS, L);
4699}
4700bool ByteCodeEmitter::emitBitXorFixedPoint(SourceInfo L) {
4701 return emitOp<>(OP_BitXorFixedPoint, L);
4702}
4703#endif
4704#ifdef GET_EVAL_IMPL
4705bool EvalEmitter::emitBitXorSint8(SourceInfo L) {
4706 if (!isActive()) return true;
4707 CurrentSource = L;
4708 return BitXor<PT_Sint8>(S, OpPC);
4709}
4710bool EvalEmitter::emitBitXorUint8(SourceInfo L) {
4711 if (!isActive()) return true;
4712 CurrentSource = L;
4713 return BitXor<PT_Uint8>(S, OpPC);
4714}
4715bool EvalEmitter::emitBitXorSint16(SourceInfo L) {
4716 if (!isActive()) return true;
4717 CurrentSource = L;
4718 return BitXor<PT_Sint16>(S, OpPC);
4719}
4720bool EvalEmitter::emitBitXorUint16(SourceInfo L) {
4721 if (!isActive()) return true;
4722 CurrentSource = L;
4723 return BitXor<PT_Uint16>(S, OpPC);
4724}
4725bool EvalEmitter::emitBitXorSint32(SourceInfo L) {
4726 if (!isActive()) return true;
4727 CurrentSource = L;
4728 return BitXor<PT_Sint32>(S, OpPC);
4729}
4730bool EvalEmitter::emitBitXorUint32(SourceInfo L) {
4731 if (!isActive()) return true;
4732 CurrentSource = L;
4733 return BitXor<PT_Uint32>(S, OpPC);
4734}
4735bool EvalEmitter::emitBitXorSint64(SourceInfo L) {
4736 if (!isActive()) return true;
4737 CurrentSource = L;
4738 return BitXor<PT_Sint64>(S, OpPC);
4739}
4740bool EvalEmitter::emitBitXorUint64(SourceInfo L) {
4741 if (!isActive()) return true;
4742 CurrentSource = L;
4743 return BitXor<PT_Uint64>(S, OpPC);
4744}
4745bool EvalEmitter::emitBitXorIntAP(SourceInfo L) {
4746 if (!isActive()) return true;
4747 CurrentSource = L;
4748 return BitXor<PT_IntAP>(S, OpPC);
4749}
4750bool EvalEmitter::emitBitXorIntAPS(SourceInfo L) {
4751 if (!isActive()) return true;
4752 CurrentSource = L;
4753 return BitXor<PT_IntAPS>(S, OpPC);
4754}
4755bool EvalEmitter::emitBitXorFixedPoint(SourceInfo L) {
4756 if (!isActive()) return true;
4757 CurrentSource = L;
4758 return BitXor<PT_FixedPoint>(S, OpPC);
4759}
4760#endif
4761#ifdef GET_OPCODE_NAMES
4762OP_CMP3Sint8,
4763OP_CMP3Uint8,
4764OP_CMP3Sint16,
4765OP_CMP3Uint16,
4766OP_CMP3Sint32,
4767OP_CMP3Uint32,
4768OP_CMP3Sint64,
4769OP_CMP3Uint64,
4770OP_CMP3IntAP,
4771OP_CMP3IntAPS,
4772OP_CMP3Bool,
4773OP_CMP3FixedPoint,
4774OP_CMP3Ptr,
4775OP_CMP3Float,
4776#endif
4777#ifdef GET_INTERPFN_LIST
4778&Interp_CMP3Sint8,
4779&Interp_CMP3Uint8,
4780&Interp_CMP3Sint16,
4781&Interp_CMP3Uint16,
4782&Interp_CMP3Sint32,
4783&Interp_CMP3Uint32,
4784&Interp_CMP3Sint64,
4785&Interp_CMP3Uint64,
4786&Interp_CMP3IntAP,
4787&Interp_CMP3IntAPS,
4788&Interp_CMP3Bool,
4789&Interp_CMP3FixedPoint,
4790&Interp_CMP3Ptr,
4791&Interp_CMP3Float,
4792#endif
4793#ifdef GET_INTERPFN_DISPATCHERS
4794PRESERVE_NONE
4795static bool Interp_CMP3Sint8(InterpState &S, CodePtr &PC) {
4796 {
4797 CodePtr OpPC = PC;
4798 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
4799 if (!CMP3<PT_Sint8>(S, OpPC, V0)) return false;
4800 }
4801#if USE_TAILCALLS
4802 MUSTTAIL return InterpNext(S, PC);
4803#else
4804 return true;
4805#endif
4806}
4807PRESERVE_NONE
4808static bool Interp_CMP3Uint8(InterpState &S, CodePtr &PC) {
4809 {
4810 CodePtr OpPC = PC;
4811 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
4812 if (!CMP3<PT_Uint8>(S, OpPC, V0)) return false;
4813 }
4814#if USE_TAILCALLS
4815 MUSTTAIL return InterpNext(S, PC);
4816#else
4817 return true;
4818#endif
4819}
4820PRESERVE_NONE
4821static bool Interp_CMP3Sint16(InterpState &S, CodePtr &PC) {
4822 {
4823 CodePtr OpPC = PC;
4824 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
4825 if (!CMP3<PT_Sint16>(S, OpPC, V0)) return false;
4826 }
4827#if USE_TAILCALLS
4828 MUSTTAIL return InterpNext(S, PC);
4829#else
4830 return true;
4831#endif
4832}
4833PRESERVE_NONE
4834static bool Interp_CMP3Uint16(InterpState &S, CodePtr &PC) {
4835 {
4836 CodePtr OpPC = PC;
4837 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
4838 if (!CMP3<PT_Uint16>(S, OpPC, V0)) return false;
4839 }
4840#if USE_TAILCALLS
4841 MUSTTAIL return InterpNext(S, PC);
4842#else
4843 return true;
4844#endif
4845}
4846PRESERVE_NONE
4847static bool Interp_CMP3Sint32(InterpState &S, CodePtr &PC) {
4848 {
4849 CodePtr OpPC = PC;
4850 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
4851 if (!CMP3<PT_Sint32>(S, OpPC, V0)) return false;
4852 }
4853#if USE_TAILCALLS
4854 MUSTTAIL return InterpNext(S, PC);
4855#else
4856 return true;
4857#endif
4858}
4859PRESERVE_NONE
4860static bool Interp_CMP3Uint32(InterpState &S, CodePtr &PC) {
4861 {
4862 CodePtr OpPC = PC;
4863 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
4864 if (!CMP3<PT_Uint32>(S, OpPC, V0)) return false;
4865 }
4866#if USE_TAILCALLS
4867 MUSTTAIL return InterpNext(S, PC);
4868#else
4869 return true;
4870#endif
4871}
4872PRESERVE_NONE
4873static bool Interp_CMP3Sint64(InterpState &S, CodePtr &PC) {
4874 {
4875 CodePtr OpPC = PC;
4876 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
4877 if (!CMP3<PT_Sint64>(S, OpPC, V0)) return false;
4878 }
4879#if USE_TAILCALLS
4880 MUSTTAIL return InterpNext(S, PC);
4881#else
4882 return true;
4883#endif
4884}
4885PRESERVE_NONE
4886static bool Interp_CMP3Uint64(InterpState &S, CodePtr &PC) {
4887 {
4888 CodePtr OpPC = PC;
4889 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
4890 if (!CMP3<PT_Uint64>(S, OpPC, V0)) return false;
4891 }
4892#if USE_TAILCALLS
4893 MUSTTAIL return InterpNext(S, PC);
4894#else
4895 return true;
4896#endif
4897}
4898PRESERVE_NONE
4899static bool Interp_CMP3IntAP(InterpState &S, CodePtr &PC) {
4900 {
4901 CodePtr OpPC = PC;
4902 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
4903 if (!CMP3<PT_IntAP>(S, OpPC, V0)) return false;
4904 }
4905#if USE_TAILCALLS
4906 MUSTTAIL return InterpNext(S, PC);
4907#else
4908 return true;
4909#endif
4910}
4911PRESERVE_NONE
4912static bool Interp_CMP3IntAPS(InterpState &S, CodePtr &PC) {
4913 {
4914 CodePtr OpPC = PC;
4915 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
4916 if (!CMP3<PT_IntAPS>(S, OpPC, V0)) return false;
4917 }
4918#if USE_TAILCALLS
4919 MUSTTAIL return InterpNext(S, PC);
4920#else
4921 return true;
4922#endif
4923}
4924PRESERVE_NONE
4925static bool Interp_CMP3Bool(InterpState &S, CodePtr &PC) {
4926 {
4927 CodePtr OpPC = PC;
4928 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
4929 if (!CMP3<PT_Bool>(S, OpPC, V0)) return false;
4930 }
4931#if USE_TAILCALLS
4932 MUSTTAIL return InterpNext(S, PC);
4933#else
4934 return true;
4935#endif
4936}
4937PRESERVE_NONE
4938static bool Interp_CMP3FixedPoint(InterpState &S, CodePtr &PC) {
4939 {
4940 CodePtr OpPC = PC;
4941 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
4942 if (!CMP3<PT_FixedPoint>(S, OpPC, V0)) return false;
4943 }
4944#if USE_TAILCALLS
4945 MUSTTAIL return InterpNext(S, PC);
4946#else
4947 return true;
4948#endif
4949}
4950PRESERVE_NONE
4951static bool Interp_CMP3Ptr(InterpState &S, CodePtr &PC) {
4952 {
4953 CodePtr OpPC = PC;
4954 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
4955 if (!CMP3<PT_Ptr>(S, OpPC, V0)) return false;
4956 }
4957#if USE_TAILCALLS
4958 MUSTTAIL return InterpNext(S, PC);
4959#else
4960 return true;
4961#endif
4962}
4963PRESERVE_NONE
4964static bool Interp_CMP3Float(InterpState &S, CodePtr &PC) {
4965 {
4966 CodePtr OpPC = PC;
4967 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
4968 if (!CMP3<PT_Float>(S, OpPC, V0)) return false;
4969 }
4970#if USE_TAILCALLS
4971 MUSTTAIL return InterpNext(S, PC);
4972#else
4973 return true;
4974#endif
4975}
4976#endif
4977#ifdef GET_DISASM
4978case OP_CMP3Sint8:
4979 Text.Op = PrintName("CMP3Sint8");
4980 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
4981 break;
4982case OP_CMP3Uint8:
4983 Text.Op = PrintName("CMP3Uint8");
4984 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
4985 break;
4986case OP_CMP3Sint16:
4987 Text.Op = PrintName("CMP3Sint16");
4988 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
4989 break;
4990case OP_CMP3Uint16:
4991 Text.Op = PrintName("CMP3Uint16");
4992 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
4993 break;
4994case OP_CMP3Sint32:
4995 Text.Op = PrintName("CMP3Sint32");
4996 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
4997 break;
4998case OP_CMP3Uint32:
4999 Text.Op = PrintName("CMP3Uint32");
5000 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5001 break;
5002case OP_CMP3Sint64:
5003 Text.Op = PrintName("CMP3Sint64");
5004 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5005 break;
5006case OP_CMP3Uint64:
5007 Text.Op = PrintName("CMP3Uint64");
5008 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5009 break;
5010case OP_CMP3IntAP:
5011 Text.Op = PrintName("CMP3IntAP");
5012 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5013 break;
5014case OP_CMP3IntAPS:
5015 Text.Op = PrintName("CMP3IntAPS");
5016 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5017 break;
5018case OP_CMP3Bool:
5019 Text.Op = PrintName("CMP3Bool");
5020 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5021 break;
5022case OP_CMP3FixedPoint:
5023 Text.Op = PrintName("CMP3FixedPoint");
5024 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5025 break;
5026case OP_CMP3Ptr:
5027 Text.Op = PrintName("CMP3Ptr");
5028 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5029 break;
5030case OP_CMP3Float:
5031 Text.Op = PrintName("CMP3Float");
5032 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
5033 break;
5034#endif
5035#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5036bool emitCMP3Sint8( const ComparisonCategoryInfo * , SourceInfo);
5037bool emitCMP3Uint8( const ComparisonCategoryInfo * , SourceInfo);
5038bool emitCMP3Sint16( const ComparisonCategoryInfo * , SourceInfo);
5039bool emitCMP3Uint16( const ComparisonCategoryInfo * , SourceInfo);
5040bool emitCMP3Sint32( const ComparisonCategoryInfo * , SourceInfo);
5041bool emitCMP3Uint32( const ComparisonCategoryInfo * , SourceInfo);
5042bool emitCMP3Sint64( const ComparisonCategoryInfo * , SourceInfo);
5043bool emitCMP3Uint64( const ComparisonCategoryInfo * , SourceInfo);
5044bool emitCMP3IntAP( const ComparisonCategoryInfo * , SourceInfo);
5045bool emitCMP3IntAPS( const ComparisonCategoryInfo * , SourceInfo);
5046bool emitCMP3Bool( const ComparisonCategoryInfo * , SourceInfo);
5047bool emitCMP3FixedPoint( const ComparisonCategoryInfo * , SourceInfo);
5048bool emitCMP3Ptr( const ComparisonCategoryInfo * , SourceInfo);
5049bool emitCMP3Float( const ComparisonCategoryInfo * , SourceInfo);
5050#endif
5051#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5052[[nodiscard]] bool emitCMP3(PrimType, const ComparisonCategoryInfo *, SourceInfo I);
5053#endif
5054#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
5055bool
5056#if defined(GET_EVAL_IMPL)
5057EvalEmitter
5058#else
5059ByteCodeEmitter
5060#endif
5061::emitCMP3(PrimType T0, const ComparisonCategoryInfo * A0, SourceInfo I) {
5062 switch (T0) {
5063 case PT_Sint8:
5064 return emitCMP3Sint8(A0, I);
5065 case PT_Uint8:
5066 return emitCMP3Uint8(A0, I);
5067 case PT_Sint16:
5068 return emitCMP3Sint16(A0, I);
5069 case PT_Uint16:
5070 return emitCMP3Uint16(A0, I);
5071 case PT_Sint32:
5072 return emitCMP3Sint32(A0, I);
5073 case PT_Uint32:
5074 return emitCMP3Uint32(A0, I);
5075 case PT_Sint64:
5076 return emitCMP3Sint64(A0, I);
5077 case PT_Uint64:
5078 return emitCMP3Uint64(A0, I);
5079 case PT_IntAP:
5080 return emitCMP3IntAP(A0, I);
5081 case PT_IntAPS:
5082 return emitCMP3IntAPS(A0, I);
5083 case PT_Bool:
5084 return emitCMP3Bool(A0, I);
5085 case PT_FixedPoint:
5086 return emitCMP3FixedPoint(A0, I);
5087 case PT_Ptr:
5088 return emitCMP3Ptr(A0, I);
5089 case PT_Float:
5090 return emitCMP3Float(A0, I);
5091 default: llvm_unreachable("invalid type: emitCMP3");
5092 }
5093 llvm_unreachable("invalid enum value");
5094}
5095#endif
5096#ifdef GET_LINK_IMPL
5097bool ByteCodeEmitter::emitCMP3Sint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
5098 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint8, A0, L);
5099}
5100bool ByteCodeEmitter::emitCMP3Uint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
5101 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint8, A0, L);
5102}
5103bool ByteCodeEmitter::emitCMP3Sint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
5104 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint16, A0, L);
5105}
5106bool ByteCodeEmitter::emitCMP3Uint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
5107 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint16, A0, L);
5108}
5109bool ByteCodeEmitter::emitCMP3Sint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
5110 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint32, A0, L);
5111}
5112bool ByteCodeEmitter::emitCMP3Uint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
5113 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint32, A0, L);
5114}
5115bool ByteCodeEmitter::emitCMP3Sint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
5116 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint64, A0, L);
5117}
5118bool ByteCodeEmitter::emitCMP3Uint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
5119 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint64, A0, L);
5120}
5121bool ByteCodeEmitter::emitCMP3IntAP( const ComparisonCategoryInfo * A0, SourceInfo L) {
5122 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3IntAP, A0, L);
5123}
5124bool ByteCodeEmitter::emitCMP3IntAPS( const ComparisonCategoryInfo * A0, SourceInfo L) {
5125 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3IntAPS, A0, L);
5126}
5127bool ByteCodeEmitter::emitCMP3Bool( const ComparisonCategoryInfo * A0, SourceInfo L) {
5128 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Bool, A0, L);
5129}
5130bool ByteCodeEmitter::emitCMP3FixedPoint( const ComparisonCategoryInfo * A0, SourceInfo L) {
5131 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3FixedPoint, A0, L);
5132}
5133bool ByteCodeEmitter::emitCMP3Ptr( const ComparisonCategoryInfo * A0, SourceInfo L) {
5134 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Ptr, A0, L);
5135}
5136bool ByteCodeEmitter::emitCMP3Float( const ComparisonCategoryInfo * A0, SourceInfo L) {
5137 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Float, A0, L);
5138}
5139#endif
5140#ifdef GET_EVAL_IMPL
5141bool EvalEmitter::emitCMP3Sint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
5142 if (!isActive()) return true;
5143 CurrentSource = L;
5144 return CMP3<PT_Sint8>(S, OpPC, A0);
5145}
5146bool EvalEmitter::emitCMP3Uint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
5147 if (!isActive()) return true;
5148 CurrentSource = L;
5149 return CMP3<PT_Uint8>(S, OpPC, A0);
5150}
5151bool EvalEmitter::emitCMP3Sint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
5152 if (!isActive()) return true;
5153 CurrentSource = L;
5154 return CMP3<PT_Sint16>(S, OpPC, A0);
5155}
5156bool EvalEmitter::emitCMP3Uint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
5157 if (!isActive()) return true;
5158 CurrentSource = L;
5159 return CMP3<PT_Uint16>(S, OpPC, A0);
5160}
5161bool EvalEmitter::emitCMP3Sint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
5162 if (!isActive()) return true;
5163 CurrentSource = L;
5164 return CMP3<PT_Sint32>(S, OpPC, A0);
5165}
5166bool EvalEmitter::emitCMP3Uint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
5167 if (!isActive()) return true;
5168 CurrentSource = L;
5169 return CMP3<PT_Uint32>(S, OpPC, A0);
5170}
5171bool EvalEmitter::emitCMP3Sint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
5172 if (!isActive()) return true;
5173 CurrentSource = L;
5174 return CMP3<PT_Sint64>(S, OpPC, A0);
5175}
5176bool EvalEmitter::emitCMP3Uint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
5177 if (!isActive()) return true;
5178 CurrentSource = L;
5179 return CMP3<PT_Uint64>(S, OpPC, A0);
5180}
5181bool EvalEmitter::emitCMP3IntAP( const ComparisonCategoryInfo * A0, SourceInfo L) {
5182 if (!isActive()) return true;
5183 CurrentSource = L;
5184 return CMP3<PT_IntAP>(S, OpPC, A0);
5185}
5186bool EvalEmitter::emitCMP3IntAPS( const ComparisonCategoryInfo * A0, SourceInfo L) {
5187 if (!isActive()) return true;
5188 CurrentSource = L;
5189 return CMP3<PT_IntAPS>(S, OpPC, A0);
5190}
5191bool EvalEmitter::emitCMP3Bool( const ComparisonCategoryInfo * A0, SourceInfo L) {
5192 if (!isActive()) return true;
5193 CurrentSource = L;
5194 return CMP3<PT_Bool>(S, OpPC, A0);
5195}
5196bool EvalEmitter::emitCMP3FixedPoint( const ComparisonCategoryInfo * A0, SourceInfo L) {
5197 if (!isActive()) return true;
5198 CurrentSource = L;
5199 return CMP3<PT_FixedPoint>(S, OpPC, A0);
5200}
5201bool EvalEmitter::emitCMP3Ptr( const ComparisonCategoryInfo * A0, SourceInfo L) {
5202 if (!isActive()) return true;
5203 CurrentSource = L;
5204 return CMP3<PT_Ptr>(S, OpPC, A0);
5205}
5206bool EvalEmitter::emitCMP3Float( const ComparisonCategoryInfo * A0, SourceInfo L) {
5207 if (!isActive()) return true;
5208 CurrentSource = L;
5209 return CMP3<PT_Float>(S, OpPC, A0);
5210}
5211#endif
5212#ifdef GET_OPCODE_NAMES
5213OP_Call,
5214#endif
5215#ifdef GET_INTERPFN_LIST
5216&Interp_Call,
5217#endif
5218#ifdef GET_INTERPFN_DISPATCHERS
5219PRESERVE_NONE
5220static bool Interp_Call(InterpState &S, CodePtr &PC) {
5221 {
5222 CodePtr OpPC = PC;
5223 const auto V0 = ReadArg<const Function *>(S, PC);
5224 const auto V1 = ReadArg<uint32_t>(S, PC);
5225 if (!Call(S, OpPC, V0, V1)) return false;
5226 }
5227#if USE_TAILCALLS
5228 MUSTTAIL return InterpNext(S, PC);
5229#else
5230 return true;
5231#endif
5232}
5233#endif
5234#ifdef GET_DISASM
5235case OP_Call:
5236 Text.Op = PrintName("Call");
5237 Text.Args.push_back(printArg<const Function *>(P, PC));
5238 Text.Args.push_back(printArg<uint32_t>(P, PC));
5239 break;
5240#endif
5241#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5242bool emitCall( const Function * , uint32_t , SourceInfo);
5243#endif
5244#ifdef GET_LINK_IMPL
5245bool ByteCodeEmitter::emitCall( const Function * A0, uint32_t A1, SourceInfo L) {
5246 return emitOp<const Function *, uint32_t>(OP_Call, A0, A1, L);
5247}
5248#endif
5249#ifdef GET_EVAL_IMPL
5250bool EvalEmitter::emitCall( const Function * A0, uint32_t A1, SourceInfo L) {
5251 if (!isActive()) return true;
5252 CurrentSource = L;
5253 return Call(S, OpPC, A0, A1);
5254}
5255#endif
5256#ifdef GET_OPCODE_NAMES
5257OP_CallBI,
5258#endif
5259#ifdef GET_INTERPFN_LIST
5260&Interp_CallBI,
5261#endif
5262#ifdef GET_INTERPFN_DISPATCHERS
5263PRESERVE_NONE
5264static bool Interp_CallBI(InterpState &S, CodePtr &PC) {
5265 {
5266 CodePtr OpPC = PC;
5267 const auto V0 = ReadArg<const CallExpr *>(S, PC);
5268 const auto V1 = ReadArg<uint32_t>(S, PC);
5269 if (!CallBI(S, OpPC, V0, V1)) return false;
5270 }
5271#if USE_TAILCALLS
5272 MUSTTAIL return InterpNext(S, PC);
5273#else
5274 return true;
5275#endif
5276}
5277#endif
5278#ifdef GET_DISASM
5279case OP_CallBI:
5280 Text.Op = PrintName("CallBI");
5281 Text.Args.push_back(printArg<const CallExpr *>(P, PC));
5282 Text.Args.push_back(printArg<uint32_t>(P, PC));
5283 break;
5284#endif
5285#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5286bool emitCallBI( const CallExpr * , uint32_t , SourceInfo);
5287#endif
5288#ifdef GET_LINK_IMPL
5289bool ByteCodeEmitter::emitCallBI( const CallExpr * A0, uint32_t A1, SourceInfo L) {
5290 return emitOp<const CallExpr *, uint32_t>(OP_CallBI, A0, A1, L);
5291}
5292#endif
5293#ifdef GET_EVAL_IMPL
5294bool EvalEmitter::emitCallBI( const CallExpr * A0, uint32_t A1, SourceInfo L) {
5295 if (!isActive()) return true;
5296 CurrentSource = L;
5297 return CallBI(S, OpPC, A0, A1);
5298}
5299#endif
5300#ifdef GET_OPCODE_NAMES
5301OP_CallPtr,
5302#endif
5303#ifdef GET_INTERPFN_LIST
5304&Interp_CallPtr,
5305#endif
5306#ifdef GET_INTERPFN_DISPATCHERS
5307PRESERVE_NONE
5308static bool Interp_CallPtr(InterpState &S, CodePtr &PC) {
5309 {
5310 CodePtr OpPC = PC;
5311 const auto V0 = ReadArg<uint32_t>(S, PC);
5312 const auto V1 = ReadArg<const CallExpr *>(S, PC);
5313 if (!CallPtr(S, OpPC, V0, V1)) return false;
5314 }
5315#if USE_TAILCALLS
5316 MUSTTAIL return InterpNext(S, PC);
5317#else
5318 return true;
5319#endif
5320}
5321#endif
5322#ifdef GET_DISASM
5323case OP_CallPtr:
5324 Text.Op = PrintName("CallPtr");
5325 Text.Args.push_back(printArg<uint32_t>(P, PC));
5326 Text.Args.push_back(printArg<const CallExpr *>(P, PC));
5327 break;
5328#endif
5329#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5330bool emitCallPtr( uint32_t , const CallExpr * , SourceInfo);
5331#endif
5332#ifdef GET_LINK_IMPL
5333bool ByteCodeEmitter::emitCallPtr( uint32_t A0, const CallExpr * A1, SourceInfo L) {
5334 return emitOp<uint32_t, const CallExpr *>(OP_CallPtr, A0, A1, L);
5335}
5336#endif
5337#ifdef GET_EVAL_IMPL
5338bool EvalEmitter::emitCallPtr( uint32_t A0, const CallExpr * A1, SourceInfo L) {
5339 if (!isActive()) return true;
5340 CurrentSource = L;
5341 return CallPtr(S, OpPC, A0, A1);
5342}
5343#endif
5344#ifdef GET_OPCODE_NAMES
5345OP_CallVar,
5346#endif
5347#ifdef GET_INTERPFN_LIST
5348&Interp_CallVar,
5349#endif
5350#ifdef GET_INTERPFN_DISPATCHERS
5351PRESERVE_NONE
5352static bool Interp_CallVar(InterpState &S, CodePtr &PC) {
5353 {
5354 CodePtr OpPC = PC;
5355 const auto V0 = ReadArg<const Function *>(S, PC);
5356 const auto V1 = ReadArg<uint32_t>(S, PC);
5357 if (!CallVar(S, OpPC, V0, V1)) return false;
5358 }
5359#if USE_TAILCALLS
5360 MUSTTAIL return InterpNext(S, PC);
5361#else
5362 return true;
5363#endif
5364}
5365#endif
5366#ifdef GET_DISASM
5367case OP_CallVar:
5368 Text.Op = PrintName("CallVar");
5369 Text.Args.push_back(printArg<const Function *>(P, PC));
5370 Text.Args.push_back(printArg<uint32_t>(P, PC));
5371 break;
5372#endif
5373#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5374bool emitCallVar( const Function * , uint32_t , SourceInfo);
5375#endif
5376#ifdef GET_LINK_IMPL
5377bool ByteCodeEmitter::emitCallVar( const Function * A0, uint32_t A1, SourceInfo L) {
5378 return emitOp<const Function *, uint32_t>(OP_CallVar, A0, A1, L);
5379}
5380#endif
5381#ifdef GET_EVAL_IMPL
5382bool EvalEmitter::emitCallVar( const Function * A0, uint32_t A1, SourceInfo L) {
5383 if (!isActive()) return true;
5384 CurrentSource = L;
5385 return CallVar(S, OpPC, A0, A1);
5386}
5387#endif
5388#ifdef GET_OPCODE_NAMES
5389OP_CallVirt,
5390#endif
5391#ifdef GET_INTERPFN_LIST
5392&Interp_CallVirt,
5393#endif
5394#ifdef GET_INTERPFN_DISPATCHERS
5395PRESERVE_NONE
5396static bool Interp_CallVirt(InterpState &S, CodePtr &PC) {
5397 {
5398 CodePtr OpPC = PC;
5399 const auto V0 = ReadArg<const Function *>(S, PC);
5400 const auto V1 = ReadArg<uint32_t>(S, PC);
5401 if (!CallVirt(S, OpPC, V0, V1)) return false;
5402 }
5403#if USE_TAILCALLS
5404 MUSTTAIL return InterpNext(S, PC);
5405#else
5406 return true;
5407#endif
5408}
5409#endif
5410#ifdef GET_DISASM
5411case OP_CallVirt:
5412 Text.Op = PrintName("CallVirt");
5413 Text.Args.push_back(printArg<const Function *>(P, PC));
5414 Text.Args.push_back(printArg<uint32_t>(P, PC));
5415 break;
5416#endif
5417#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5418bool emitCallVirt( const Function * , uint32_t , SourceInfo);
5419#endif
5420#ifdef GET_LINK_IMPL
5421bool ByteCodeEmitter::emitCallVirt( const Function * A0, uint32_t A1, SourceInfo L) {
5422 return emitOp<const Function *, uint32_t>(OP_CallVirt, A0, A1, L);
5423}
5424#endif
5425#ifdef GET_EVAL_IMPL
5426bool EvalEmitter::emitCallVirt( const Function * A0, uint32_t A1, SourceInfo L) {
5427 if (!isActive()) return true;
5428 CurrentSource = L;
5429 return CallVirt(S, OpPC, A0, A1);
5430}
5431#endif
5432#ifdef GET_OPCODE_NAMES
5433OP_CastUint8Uint8,
5434OP_CastUint8Sint8,
5435OP_CastUint8Uint16,
5436OP_CastUint8Sint16,
5437OP_CastUint8Uint32,
5438OP_CastUint8Sint32,
5439OP_CastUint8Uint64,
5440OP_CastUint8Sint64,
5441OP_CastUint8Bool,
5442OP_CastSint8Uint8,
5443OP_CastSint8Sint8,
5444OP_CastSint8Uint16,
5445OP_CastSint8Sint16,
5446OP_CastSint8Uint32,
5447OP_CastSint8Sint32,
5448OP_CastSint8Uint64,
5449OP_CastSint8Sint64,
5450OP_CastSint8Bool,
5451OP_CastUint16Uint8,
5452OP_CastUint16Sint8,
5453OP_CastUint16Uint16,
5454OP_CastUint16Sint16,
5455OP_CastUint16Uint32,
5456OP_CastUint16Sint32,
5457OP_CastUint16Uint64,
5458OP_CastUint16Sint64,
5459OP_CastUint16Bool,
5460OP_CastSint16Uint8,
5461OP_CastSint16Sint8,
5462OP_CastSint16Uint16,
5463OP_CastSint16Sint16,
5464OP_CastSint16Uint32,
5465OP_CastSint16Sint32,
5466OP_CastSint16Uint64,
5467OP_CastSint16Sint64,
5468OP_CastSint16Bool,
5469OP_CastUint32Uint8,
5470OP_CastUint32Sint8,
5471OP_CastUint32Uint16,
5472OP_CastUint32Sint16,
5473OP_CastUint32Uint32,
5474OP_CastUint32Sint32,
5475OP_CastUint32Uint64,
5476OP_CastUint32Sint64,
5477OP_CastUint32Bool,
5478OP_CastSint32Uint8,
5479OP_CastSint32Sint8,
5480OP_CastSint32Uint16,
5481OP_CastSint32Sint16,
5482OP_CastSint32Uint32,
5483OP_CastSint32Sint32,
5484OP_CastSint32Uint64,
5485OP_CastSint32Sint64,
5486OP_CastSint32Bool,
5487OP_CastUint64Uint8,
5488OP_CastUint64Sint8,
5489OP_CastUint64Uint16,
5490OP_CastUint64Sint16,
5491OP_CastUint64Uint32,
5492OP_CastUint64Sint32,
5493OP_CastUint64Uint64,
5494OP_CastUint64Sint64,
5495OP_CastUint64Bool,
5496OP_CastSint64Uint8,
5497OP_CastSint64Sint8,
5498OP_CastSint64Uint16,
5499OP_CastSint64Sint16,
5500OP_CastSint64Uint32,
5501OP_CastSint64Sint32,
5502OP_CastSint64Uint64,
5503OP_CastSint64Sint64,
5504OP_CastSint64Bool,
5505OP_CastBoolUint8,
5506OP_CastBoolSint8,
5507OP_CastBoolUint16,
5508OP_CastBoolSint16,
5509OP_CastBoolUint32,
5510OP_CastBoolSint32,
5511OP_CastBoolUint64,
5512OP_CastBoolSint64,
5513OP_CastBoolBool,
5514OP_CastIntAPUint8,
5515OP_CastIntAPSint8,
5516OP_CastIntAPUint16,
5517OP_CastIntAPSint16,
5518OP_CastIntAPUint32,
5519OP_CastIntAPSint32,
5520OP_CastIntAPUint64,
5521OP_CastIntAPSint64,
5522OP_CastIntAPBool,
5523OP_CastIntAPSUint8,
5524OP_CastIntAPSSint8,
5525OP_CastIntAPSUint16,
5526OP_CastIntAPSSint16,
5527OP_CastIntAPSUint32,
5528OP_CastIntAPSSint32,
5529OP_CastIntAPSUint64,
5530OP_CastIntAPSSint64,
5531OP_CastIntAPSBool,
5532OP_CastFixedPointUint8,
5533OP_CastFixedPointSint8,
5534OP_CastFixedPointUint16,
5535OP_CastFixedPointSint16,
5536OP_CastFixedPointUint32,
5537OP_CastFixedPointSint32,
5538OP_CastFixedPointUint64,
5539OP_CastFixedPointSint64,
5540OP_CastFixedPointBool,
5541#endif
5542#ifdef GET_INTERPFN_LIST
5543&Interp_CastUint8Uint8,
5544&Interp_CastUint8Sint8,
5545&Interp_CastUint8Uint16,
5546&Interp_CastUint8Sint16,
5547&Interp_CastUint8Uint32,
5548&Interp_CastUint8Sint32,
5549&Interp_CastUint8Uint64,
5550&Interp_CastUint8Sint64,
5551&Interp_CastUint8Bool,
5552&Interp_CastSint8Uint8,
5553&Interp_CastSint8Sint8,
5554&Interp_CastSint8Uint16,
5555&Interp_CastSint8Sint16,
5556&Interp_CastSint8Uint32,
5557&Interp_CastSint8Sint32,
5558&Interp_CastSint8Uint64,
5559&Interp_CastSint8Sint64,
5560&Interp_CastSint8Bool,
5561&Interp_CastUint16Uint8,
5562&Interp_CastUint16Sint8,
5563&Interp_CastUint16Uint16,
5564&Interp_CastUint16Sint16,
5565&Interp_CastUint16Uint32,
5566&Interp_CastUint16Sint32,
5567&Interp_CastUint16Uint64,
5568&Interp_CastUint16Sint64,
5569&Interp_CastUint16Bool,
5570&Interp_CastSint16Uint8,
5571&Interp_CastSint16Sint8,
5572&Interp_CastSint16Uint16,
5573&Interp_CastSint16Sint16,
5574&Interp_CastSint16Uint32,
5575&Interp_CastSint16Sint32,
5576&Interp_CastSint16Uint64,
5577&Interp_CastSint16Sint64,
5578&Interp_CastSint16Bool,
5579&Interp_CastUint32Uint8,
5580&Interp_CastUint32Sint8,
5581&Interp_CastUint32Uint16,
5582&Interp_CastUint32Sint16,
5583&Interp_CastUint32Uint32,
5584&Interp_CastUint32Sint32,
5585&Interp_CastUint32Uint64,
5586&Interp_CastUint32Sint64,
5587&Interp_CastUint32Bool,
5588&Interp_CastSint32Uint8,
5589&Interp_CastSint32Sint8,
5590&Interp_CastSint32Uint16,
5591&Interp_CastSint32Sint16,
5592&Interp_CastSint32Uint32,
5593&Interp_CastSint32Sint32,
5594&Interp_CastSint32Uint64,
5595&Interp_CastSint32Sint64,
5596&Interp_CastSint32Bool,
5597&Interp_CastUint64Uint8,
5598&Interp_CastUint64Sint8,
5599&Interp_CastUint64Uint16,
5600&Interp_CastUint64Sint16,
5601&Interp_CastUint64Uint32,
5602&Interp_CastUint64Sint32,
5603&Interp_CastUint64Uint64,
5604&Interp_CastUint64Sint64,
5605&Interp_CastUint64Bool,
5606&Interp_CastSint64Uint8,
5607&Interp_CastSint64Sint8,
5608&Interp_CastSint64Uint16,
5609&Interp_CastSint64Sint16,
5610&Interp_CastSint64Uint32,
5611&Interp_CastSint64Sint32,
5612&Interp_CastSint64Uint64,
5613&Interp_CastSint64Sint64,
5614&Interp_CastSint64Bool,
5615&Interp_CastBoolUint8,
5616&Interp_CastBoolSint8,
5617&Interp_CastBoolUint16,
5618&Interp_CastBoolSint16,
5619&Interp_CastBoolUint32,
5620&Interp_CastBoolSint32,
5621&Interp_CastBoolUint64,
5622&Interp_CastBoolSint64,
5623&Interp_CastBoolBool,
5624&Interp_CastIntAPUint8,
5625&Interp_CastIntAPSint8,
5626&Interp_CastIntAPUint16,
5627&Interp_CastIntAPSint16,
5628&Interp_CastIntAPUint32,
5629&Interp_CastIntAPSint32,
5630&Interp_CastIntAPUint64,
5631&Interp_CastIntAPSint64,
5632&Interp_CastIntAPBool,
5633&Interp_CastIntAPSUint8,
5634&Interp_CastIntAPSSint8,
5635&Interp_CastIntAPSUint16,
5636&Interp_CastIntAPSSint16,
5637&Interp_CastIntAPSUint32,
5638&Interp_CastIntAPSSint32,
5639&Interp_CastIntAPSUint64,
5640&Interp_CastIntAPSSint64,
5641&Interp_CastIntAPSBool,
5642&Interp_CastFixedPointUint8,
5643&Interp_CastFixedPointSint8,
5644&Interp_CastFixedPointUint16,
5645&Interp_CastFixedPointSint16,
5646&Interp_CastFixedPointUint32,
5647&Interp_CastFixedPointSint32,
5648&Interp_CastFixedPointUint64,
5649&Interp_CastFixedPointSint64,
5650&Interp_CastFixedPointBool,
5651#endif
5652#ifdef GET_INTERPFN_DISPATCHERS
5653PRESERVE_NONE
5654static bool Interp_CastUint8Uint8(InterpState &S, CodePtr &PC) {
5655 if (!Cast<PT_Uint8, PT_Uint8>(S, PC)) return false;
5656#if USE_TAILCALLS
5657 MUSTTAIL return InterpNext(S, PC);
5658#else
5659 return true;
5660#endif
5661}
5662PRESERVE_NONE
5663static bool Interp_CastUint8Sint8(InterpState &S, CodePtr &PC) {
5664 if (!Cast<PT_Uint8, PT_Sint8>(S, PC)) return false;
5665#if USE_TAILCALLS
5666 MUSTTAIL return InterpNext(S, PC);
5667#else
5668 return true;
5669#endif
5670}
5671PRESERVE_NONE
5672static bool Interp_CastUint8Uint16(InterpState &S, CodePtr &PC) {
5673 if (!Cast<PT_Uint8, PT_Uint16>(S, PC)) return false;
5674#if USE_TAILCALLS
5675 MUSTTAIL return InterpNext(S, PC);
5676#else
5677 return true;
5678#endif
5679}
5680PRESERVE_NONE
5681static bool Interp_CastUint8Sint16(InterpState &S, CodePtr &PC) {
5682 if (!Cast<PT_Uint8, PT_Sint16>(S, PC)) return false;
5683#if USE_TAILCALLS
5684 MUSTTAIL return InterpNext(S, PC);
5685#else
5686 return true;
5687#endif
5688}
5689PRESERVE_NONE
5690static bool Interp_CastUint8Uint32(InterpState &S, CodePtr &PC) {
5691 if (!Cast<PT_Uint8, PT_Uint32>(S, PC)) return false;
5692#if USE_TAILCALLS
5693 MUSTTAIL return InterpNext(S, PC);
5694#else
5695 return true;
5696#endif
5697}
5698PRESERVE_NONE
5699static bool Interp_CastUint8Sint32(InterpState &S, CodePtr &PC) {
5700 if (!Cast<PT_Uint8, PT_Sint32>(S, PC)) return false;
5701#if USE_TAILCALLS
5702 MUSTTAIL return InterpNext(S, PC);
5703#else
5704 return true;
5705#endif
5706}
5707PRESERVE_NONE
5708static bool Interp_CastUint8Uint64(InterpState &S, CodePtr &PC) {
5709 if (!Cast<PT_Uint8, PT_Uint64>(S, PC)) return false;
5710#if USE_TAILCALLS
5711 MUSTTAIL return InterpNext(S, PC);
5712#else
5713 return true;
5714#endif
5715}
5716PRESERVE_NONE
5717static bool Interp_CastUint8Sint64(InterpState &S, CodePtr &PC) {
5718 if (!Cast<PT_Uint8, PT_Sint64>(S, PC)) return false;
5719#if USE_TAILCALLS
5720 MUSTTAIL return InterpNext(S, PC);
5721#else
5722 return true;
5723#endif
5724}
5725PRESERVE_NONE
5726static bool Interp_CastUint8Bool(InterpState &S, CodePtr &PC) {
5727 if (!Cast<PT_Uint8, PT_Bool>(S, PC)) return false;
5728#if USE_TAILCALLS
5729 MUSTTAIL return InterpNext(S, PC);
5730#else
5731 return true;
5732#endif
5733}
5734PRESERVE_NONE
5735static bool Interp_CastSint8Uint8(InterpState &S, CodePtr &PC) {
5736 if (!Cast<PT_Sint8, PT_Uint8>(S, PC)) return false;
5737#if USE_TAILCALLS
5738 MUSTTAIL return InterpNext(S, PC);
5739#else
5740 return true;
5741#endif
5742}
5743PRESERVE_NONE
5744static bool Interp_CastSint8Sint8(InterpState &S, CodePtr &PC) {
5745 if (!Cast<PT_Sint8, PT_Sint8>(S, PC)) return false;
5746#if USE_TAILCALLS
5747 MUSTTAIL return InterpNext(S, PC);
5748#else
5749 return true;
5750#endif
5751}
5752PRESERVE_NONE
5753static bool Interp_CastSint8Uint16(InterpState &S, CodePtr &PC) {
5754 if (!Cast<PT_Sint8, PT_Uint16>(S, PC)) return false;
5755#if USE_TAILCALLS
5756 MUSTTAIL return InterpNext(S, PC);
5757#else
5758 return true;
5759#endif
5760}
5761PRESERVE_NONE
5762static bool Interp_CastSint8Sint16(InterpState &S, CodePtr &PC) {
5763 if (!Cast<PT_Sint8, PT_Sint16>(S, PC)) return false;
5764#if USE_TAILCALLS
5765 MUSTTAIL return InterpNext(S, PC);
5766#else
5767 return true;
5768#endif
5769}
5770PRESERVE_NONE
5771static bool Interp_CastSint8Uint32(InterpState &S, CodePtr &PC) {
5772 if (!Cast<PT_Sint8, PT_Uint32>(S, PC)) return false;
5773#if USE_TAILCALLS
5774 MUSTTAIL return InterpNext(S, PC);
5775#else
5776 return true;
5777#endif
5778}
5779PRESERVE_NONE
5780static bool Interp_CastSint8Sint32(InterpState &S, CodePtr &PC) {
5781 if (!Cast<PT_Sint8, PT_Sint32>(S, PC)) return false;
5782#if USE_TAILCALLS
5783 MUSTTAIL return InterpNext(S, PC);
5784#else
5785 return true;
5786#endif
5787}
5788PRESERVE_NONE
5789static bool Interp_CastSint8Uint64(InterpState &S, CodePtr &PC) {
5790 if (!Cast<PT_Sint8, PT_Uint64>(S, PC)) return false;
5791#if USE_TAILCALLS
5792 MUSTTAIL return InterpNext(S, PC);
5793#else
5794 return true;
5795#endif
5796}
5797PRESERVE_NONE
5798static bool Interp_CastSint8Sint64(InterpState &S, CodePtr &PC) {
5799 if (!Cast<PT_Sint8, PT_Sint64>(S, PC)) return false;
5800#if USE_TAILCALLS
5801 MUSTTAIL return InterpNext(S, PC);
5802#else
5803 return true;
5804#endif
5805}
5806PRESERVE_NONE
5807static bool Interp_CastSint8Bool(InterpState &S, CodePtr &PC) {
5808 if (!Cast<PT_Sint8, PT_Bool>(S, PC)) return false;
5809#if USE_TAILCALLS
5810 MUSTTAIL return InterpNext(S, PC);
5811#else
5812 return true;
5813#endif
5814}
5815PRESERVE_NONE
5816static bool Interp_CastUint16Uint8(InterpState &S, CodePtr &PC) {
5817 if (!Cast<PT_Uint16, PT_Uint8>(S, PC)) return false;
5818#if USE_TAILCALLS
5819 MUSTTAIL return InterpNext(S, PC);
5820#else
5821 return true;
5822#endif
5823}
5824PRESERVE_NONE
5825static bool Interp_CastUint16Sint8(InterpState &S, CodePtr &PC) {
5826 if (!Cast<PT_Uint16, PT_Sint8>(S, PC)) return false;
5827#if USE_TAILCALLS
5828 MUSTTAIL return InterpNext(S, PC);
5829#else
5830 return true;
5831#endif
5832}
5833PRESERVE_NONE
5834static bool Interp_CastUint16Uint16(InterpState &S, CodePtr &PC) {
5835 if (!Cast<PT_Uint16, PT_Uint16>(S, PC)) return false;
5836#if USE_TAILCALLS
5837 MUSTTAIL return InterpNext(S, PC);
5838#else
5839 return true;
5840#endif
5841}
5842PRESERVE_NONE
5843static bool Interp_CastUint16Sint16(InterpState &S, CodePtr &PC) {
5844 if (!Cast<PT_Uint16, PT_Sint16>(S, PC)) return false;
5845#if USE_TAILCALLS
5846 MUSTTAIL return InterpNext(S, PC);
5847#else
5848 return true;
5849#endif
5850}
5851PRESERVE_NONE
5852static bool Interp_CastUint16Uint32(InterpState &S, CodePtr &PC) {
5853 if (!Cast<PT_Uint16, PT_Uint32>(S, PC)) return false;
5854#if USE_TAILCALLS
5855 MUSTTAIL return InterpNext(S, PC);
5856#else
5857 return true;
5858#endif
5859}
5860PRESERVE_NONE
5861static bool Interp_CastUint16Sint32(InterpState &S, CodePtr &PC) {
5862 if (!Cast<PT_Uint16, PT_Sint32>(S, PC)) return false;
5863#if USE_TAILCALLS
5864 MUSTTAIL return InterpNext(S, PC);
5865#else
5866 return true;
5867#endif
5868}
5869PRESERVE_NONE
5870static bool Interp_CastUint16Uint64(InterpState &S, CodePtr &PC) {
5871 if (!Cast<PT_Uint16, PT_Uint64>(S, PC)) return false;
5872#if USE_TAILCALLS
5873 MUSTTAIL return InterpNext(S, PC);
5874#else
5875 return true;
5876#endif
5877}
5878PRESERVE_NONE
5879static bool Interp_CastUint16Sint64(InterpState &S, CodePtr &PC) {
5880 if (!Cast<PT_Uint16, PT_Sint64>(S, PC)) return false;
5881#if USE_TAILCALLS
5882 MUSTTAIL return InterpNext(S, PC);
5883#else
5884 return true;
5885#endif
5886}
5887PRESERVE_NONE
5888static bool Interp_CastUint16Bool(InterpState &S, CodePtr &PC) {
5889 if (!Cast<PT_Uint16, PT_Bool>(S, PC)) return false;
5890#if USE_TAILCALLS
5891 MUSTTAIL return InterpNext(S, PC);
5892#else
5893 return true;
5894#endif
5895}
5896PRESERVE_NONE
5897static bool Interp_CastSint16Uint8(InterpState &S, CodePtr &PC) {
5898 if (!Cast<PT_Sint16, PT_Uint8>(S, PC)) return false;
5899#if USE_TAILCALLS
5900 MUSTTAIL return InterpNext(S, PC);
5901#else
5902 return true;
5903#endif
5904}
5905PRESERVE_NONE
5906static bool Interp_CastSint16Sint8(InterpState &S, CodePtr &PC) {
5907 if (!Cast<PT_Sint16, PT_Sint8>(S, PC)) return false;
5908#if USE_TAILCALLS
5909 MUSTTAIL return InterpNext(S, PC);
5910#else
5911 return true;
5912#endif
5913}
5914PRESERVE_NONE
5915static bool Interp_CastSint16Uint16(InterpState &S, CodePtr &PC) {
5916 if (!Cast<PT_Sint16, PT_Uint16>(S, PC)) return false;
5917#if USE_TAILCALLS
5918 MUSTTAIL return InterpNext(S, PC);
5919#else
5920 return true;
5921#endif
5922}
5923PRESERVE_NONE
5924static bool Interp_CastSint16Sint16(InterpState &S, CodePtr &PC) {
5925 if (!Cast<PT_Sint16, PT_Sint16>(S, PC)) return false;
5926#if USE_TAILCALLS
5927 MUSTTAIL return InterpNext(S, PC);
5928#else
5929 return true;
5930#endif
5931}
5932PRESERVE_NONE
5933static bool Interp_CastSint16Uint32(InterpState &S, CodePtr &PC) {
5934 if (!Cast<PT_Sint16, PT_Uint32>(S, PC)) return false;
5935#if USE_TAILCALLS
5936 MUSTTAIL return InterpNext(S, PC);
5937#else
5938 return true;
5939#endif
5940}
5941PRESERVE_NONE
5942static bool Interp_CastSint16Sint32(InterpState &S, CodePtr &PC) {
5943 if (!Cast<PT_Sint16, PT_Sint32>(S, PC)) return false;
5944#if USE_TAILCALLS
5945 MUSTTAIL return InterpNext(S, PC);
5946#else
5947 return true;
5948#endif
5949}
5950PRESERVE_NONE
5951static bool Interp_CastSint16Uint64(InterpState &S, CodePtr &PC) {
5952 if (!Cast<PT_Sint16, PT_Uint64>(S, PC)) return false;
5953#if USE_TAILCALLS
5954 MUSTTAIL return InterpNext(S, PC);
5955#else
5956 return true;
5957#endif
5958}
5959PRESERVE_NONE
5960static bool Interp_CastSint16Sint64(InterpState &S, CodePtr &PC) {
5961 if (!Cast<PT_Sint16, PT_Sint64>(S, PC)) return false;
5962#if USE_TAILCALLS
5963 MUSTTAIL return InterpNext(S, PC);
5964#else
5965 return true;
5966#endif
5967}
5968PRESERVE_NONE
5969static bool Interp_CastSint16Bool(InterpState &S, CodePtr &PC) {
5970 if (!Cast<PT_Sint16, PT_Bool>(S, PC)) return false;
5971#if USE_TAILCALLS
5972 MUSTTAIL return InterpNext(S, PC);
5973#else
5974 return true;
5975#endif
5976}
5977PRESERVE_NONE
5978static bool Interp_CastUint32Uint8(InterpState &S, CodePtr &PC) {
5979 if (!Cast<PT_Uint32, PT_Uint8>(S, PC)) return false;
5980#if USE_TAILCALLS
5981 MUSTTAIL return InterpNext(S, PC);
5982#else
5983 return true;
5984#endif
5985}
5986PRESERVE_NONE
5987static bool Interp_CastUint32Sint8(InterpState &S, CodePtr &PC) {
5988 if (!Cast<PT_Uint32, PT_Sint8>(S, PC)) return false;
5989#if USE_TAILCALLS
5990 MUSTTAIL return InterpNext(S, PC);
5991#else
5992 return true;
5993#endif
5994}
5995PRESERVE_NONE
5996static bool Interp_CastUint32Uint16(InterpState &S, CodePtr &PC) {
5997 if (!Cast<PT_Uint32, PT_Uint16>(S, PC)) return false;
5998#if USE_TAILCALLS
5999 MUSTTAIL return InterpNext(S, PC);
6000#else
6001 return true;
6002#endif
6003}
6004PRESERVE_NONE
6005static bool Interp_CastUint32Sint16(InterpState &S, CodePtr &PC) {
6006 if (!Cast<PT_Uint32, PT_Sint16>(S, PC)) return false;
6007#if USE_TAILCALLS
6008 MUSTTAIL return InterpNext(S, PC);
6009#else
6010 return true;
6011#endif
6012}
6013PRESERVE_NONE
6014static bool Interp_CastUint32Uint32(InterpState &S, CodePtr &PC) {
6015 if (!Cast<PT_Uint32, PT_Uint32>(S, PC)) return false;
6016#if USE_TAILCALLS
6017 MUSTTAIL return InterpNext(S, PC);
6018#else
6019 return true;
6020#endif
6021}
6022PRESERVE_NONE
6023static bool Interp_CastUint32Sint32(InterpState &S, CodePtr &PC) {
6024 if (!Cast<PT_Uint32, PT_Sint32>(S, PC)) return false;
6025#if USE_TAILCALLS
6026 MUSTTAIL return InterpNext(S, PC);
6027#else
6028 return true;
6029#endif
6030}
6031PRESERVE_NONE
6032static bool Interp_CastUint32Uint64(InterpState &S, CodePtr &PC) {
6033 if (!Cast<PT_Uint32, PT_Uint64>(S, PC)) return false;
6034#if USE_TAILCALLS
6035 MUSTTAIL return InterpNext(S, PC);
6036#else
6037 return true;
6038#endif
6039}
6040PRESERVE_NONE
6041static bool Interp_CastUint32Sint64(InterpState &S, CodePtr &PC) {
6042 if (!Cast<PT_Uint32, PT_Sint64>(S, PC)) return false;
6043#if USE_TAILCALLS
6044 MUSTTAIL return InterpNext(S, PC);
6045#else
6046 return true;
6047#endif
6048}
6049PRESERVE_NONE
6050static bool Interp_CastUint32Bool(InterpState &S, CodePtr &PC) {
6051 if (!Cast<PT_Uint32, PT_Bool>(S, PC)) return false;
6052#if USE_TAILCALLS
6053 MUSTTAIL return InterpNext(S, PC);
6054#else
6055 return true;
6056#endif
6057}
6058PRESERVE_NONE
6059static bool Interp_CastSint32Uint8(InterpState &S, CodePtr &PC) {
6060 if (!Cast<PT_Sint32, PT_Uint8>(S, PC)) return false;
6061#if USE_TAILCALLS
6062 MUSTTAIL return InterpNext(S, PC);
6063#else
6064 return true;
6065#endif
6066}
6067PRESERVE_NONE
6068static bool Interp_CastSint32Sint8(InterpState &S, CodePtr &PC) {
6069 if (!Cast<PT_Sint32, PT_Sint8>(S, PC)) return false;
6070#if USE_TAILCALLS
6071 MUSTTAIL return InterpNext(S, PC);
6072#else
6073 return true;
6074#endif
6075}
6076PRESERVE_NONE
6077static bool Interp_CastSint32Uint16(InterpState &S, CodePtr &PC) {
6078 if (!Cast<PT_Sint32, PT_Uint16>(S, PC)) return false;
6079#if USE_TAILCALLS
6080 MUSTTAIL return InterpNext(S, PC);
6081#else
6082 return true;
6083#endif
6084}
6085PRESERVE_NONE
6086static bool Interp_CastSint32Sint16(InterpState &S, CodePtr &PC) {
6087 if (!Cast<PT_Sint32, PT_Sint16>(S, PC)) return false;
6088#if USE_TAILCALLS
6089 MUSTTAIL return InterpNext(S, PC);
6090#else
6091 return true;
6092#endif
6093}
6094PRESERVE_NONE
6095static bool Interp_CastSint32Uint32(InterpState &S, CodePtr &PC) {
6096 if (!Cast<PT_Sint32, PT_Uint32>(S, PC)) return false;
6097#if USE_TAILCALLS
6098 MUSTTAIL return InterpNext(S, PC);
6099#else
6100 return true;
6101#endif
6102}
6103PRESERVE_NONE
6104static bool Interp_CastSint32Sint32(InterpState &S, CodePtr &PC) {
6105 if (!Cast<PT_Sint32, PT_Sint32>(S, PC)) return false;
6106#if USE_TAILCALLS
6107 MUSTTAIL return InterpNext(S, PC);
6108#else
6109 return true;
6110#endif
6111}
6112PRESERVE_NONE
6113static bool Interp_CastSint32Uint64(InterpState &S, CodePtr &PC) {
6114 if (!Cast<PT_Sint32, PT_Uint64>(S, PC)) return false;
6115#if USE_TAILCALLS
6116 MUSTTAIL return InterpNext(S, PC);
6117#else
6118 return true;
6119#endif
6120}
6121PRESERVE_NONE
6122static bool Interp_CastSint32Sint64(InterpState &S, CodePtr &PC) {
6123 if (!Cast<PT_Sint32, PT_Sint64>(S, PC)) return false;
6124#if USE_TAILCALLS
6125 MUSTTAIL return InterpNext(S, PC);
6126#else
6127 return true;
6128#endif
6129}
6130PRESERVE_NONE
6131static bool Interp_CastSint32Bool(InterpState &S, CodePtr &PC) {
6132 if (!Cast<PT_Sint32, PT_Bool>(S, PC)) return false;
6133#if USE_TAILCALLS
6134 MUSTTAIL return InterpNext(S, PC);
6135#else
6136 return true;
6137#endif
6138}
6139PRESERVE_NONE
6140static bool Interp_CastUint64Uint8(InterpState &S, CodePtr &PC) {
6141 if (!Cast<PT_Uint64, PT_Uint8>(S, PC)) return false;
6142#if USE_TAILCALLS
6143 MUSTTAIL return InterpNext(S, PC);
6144#else
6145 return true;
6146#endif
6147}
6148PRESERVE_NONE
6149static bool Interp_CastUint64Sint8(InterpState &S, CodePtr &PC) {
6150 if (!Cast<PT_Uint64, PT_Sint8>(S, PC)) return false;
6151#if USE_TAILCALLS
6152 MUSTTAIL return InterpNext(S, PC);
6153#else
6154 return true;
6155#endif
6156}
6157PRESERVE_NONE
6158static bool Interp_CastUint64Uint16(InterpState &S, CodePtr &PC) {
6159 if (!Cast<PT_Uint64, PT_Uint16>(S, PC)) return false;
6160#if USE_TAILCALLS
6161 MUSTTAIL return InterpNext(S, PC);
6162#else
6163 return true;
6164#endif
6165}
6166PRESERVE_NONE
6167static bool Interp_CastUint64Sint16(InterpState &S, CodePtr &PC) {
6168 if (!Cast<PT_Uint64, PT_Sint16>(S, PC)) return false;
6169#if USE_TAILCALLS
6170 MUSTTAIL return InterpNext(S, PC);
6171#else
6172 return true;
6173#endif
6174}
6175PRESERVE_NONE
6176static bool Interp_CastUint64Uint32(InterpState &S, CodePtr &PC) {
6177 if (!Cast<PT_Uint64, PT_Uint32>(S, PC)) return false;
6178#if USE_TAILCALLS
6179 MUSTTAIL return InterpNext(S, PC);
6180#else
6181 return true;
6182#endif
6183}
6184PRESERVE_NONE
6185static bool Interp_CastUint64Sint32(InterpState &S, CodePtr &PC) {
6186 if (!Cast<PT_Uint64, PT_Sint32>(S, PC)) return false;
6187#if USE_TAILCALLS
6188 MUSTTAIL return InterpNext(S, PC);
6189#else
6190 return true;
6191#endif
6192}
6193PRESERVE_NONE
6194static bool Interp_CastUint64Uint64(InterpState &S, CodePtr &PC) {
6195 if (!Cast<PT_Uint64, PT_Uint64>(S, PC)) return false;
6196#if USE_TAILCALLS
6197 MUSTTAIL return InterpNext(S, PC);
6198#else
6199 return true;
6200#endif
6201}
6202PRESERVE_NONE
6203static bool Interp_CastUint64Sint64(InterpState &S, CodePtr &PC) {
6204 if (!Cast<PT_Uint64, PT_Sint64>(S, PC)) return false;
6205#if USE_TAILCALLS
6206 MUSTTAIL return InterpNext(S, PC);
6207#else
6208 return true;
6209#endif
6210}
6211PRESERVE_NONE
6212static bool Interp_CastUint64Bool(InterpState &S, CodePtr &PC) {
6213 if (!Cast<PT_Uint64, PT_Bool>(S, PC)) return false;
6214#if USE_TAILCALLS
6215 MUSTTAIL return InterpNext(S, PC);
6216#else
6217 return true;
6218#endif
6219}
6220PRESERVE_NONE
6221static bool Interp_CastSint64Uint8(InterpState &S, CodePtr &PC) {
6222 if (!Cast<PT_Sint64, PT_Uint8>(S, PC)) return false;
6223#if USE_TAILCALLS
6224 MUSTTAIL return InterpNext(S, PC);
6225#else
6226 return true;
6227#endif
6228}
6229PRESERVE_NONE
6230static bool Interp_CastSint64Sint8(InterpState &S, CodePtr &PC) {
6231 if (!Cast<PT_Sint64, PT_Sint8>(S, PC)) return false;
6232#if USE_TAILCALLS
6233 MUSTTAIL return InterpNext(S, PC);
6234#else
6235 return true;
6236#endif
6237}
6238PRESERVE_NONE
6239static bool Interp_CastSint64Uint16(InterpState &S, CodePtr &PC) {
6240 if (!Cast<PT_Sint64, PT_Uint16>(S, PC)) return false;
6241#if USE_TAILCALLS
6242 MUSTTAIL return InterpNext(S, PC);
6243#else
6244 return true;
6245#endif
6246}
6247PRESERVE_NONE
6248static bool Interp_CastSint64Sint16(InterpState &S, CodePtr &PC) {
6249 if (!Cast<PT_Sint64, PT_Sint16>(S, PC)) return false;
6250#if USE_TAILCALLS
6251 MUSTTAIL return InterpNext(S, PC);
6252#else
6253 return true;
6254#endif
6255}
6256PRESERVE_NONE
6257static bool Interp_CastSint64Uint32(InterpState &S, CodePtr &PC) {
6258 if (!Cast<PT_Sint64, PT_Uint32>(S, PC)) return false;
6259#if USE_TAILCALLS
6260 MUSTTAIL return InterpNext(S, PC);
6261#else
6262 return true;
6263#endif
6264}
6265PRESERVE_NONE
6266static bool Interp_CastSint64Sint32(InterpState &S, CodePtr &PC) {
6267 if (!Cast<PT_Sint64, PT_Sint32>(S, PC)) return false;
6268#if USE_TAILCALLS
6269 MUSTTAIL return InterpNext(S, PC);
6270#else
6271 return true;
6272#endif
6273}
6274PRESERVE_NONE
6275static bool Interp_CastSint64Uint64(InterpState &S, CodePtr &PC) {
6276 if (!Cast<PT_Sint64, PT_Uint64>(S, PC)) return false;
6277#if USE_TAILCALLS
6278 MUSTTAIL return InterpNext(S, PC);
6279#else
6280 return true;
6281#endif
6282}
6283PRESERVE_NONE
6284static bool Interp_CastSint64Sint64(InterpState &S, CodePtr &PC) {
6285 if (!Cast<PT_Sint64, PT_Sint64>(S, PC)) return false;
6286#if USE_TAILCALLS
6287 MUSTTAIL return InterpNext(S, PC);
6288#else
6289 return true;
6290#endif
6291}
6292PRESERVE_NONE
6293static bool Interp_CastSint64Bool(InterpState &S, CodePtr &PC) {
6294 if (!Cast<PT_Sint64, PT_Bool>(S, PC)) return false;
6295#if USE_TAILCALLS
6296 MUSTTAIL return InterpNext(S, PC);
6297#else
6298 return true;
6299#endif
6300}
6301PRESERVE_NONE
6302static bool Interp_CastBoolUint8(InterpState &S, CodePtr &PC) {
6303 if (!Cast<PT_Bool, PT_Uint8>(S, PC)) return false;
6304#if USE_TAILCALLS
6305 MUSTTAIL return InterpNext(S, PC);
6306#else
6307 return true;
6308#endif
6309}
6310PRESERVE_NONE
6311static bool Interp_CastBoolSint8(InterpState &S, CodePtr &PC) {
6312 if (!Cast<PT_Bool, PT_Sint8>(S, PC)) return false;
6313#if USE_TAILCALLS
6314 MUSTTAIL return InterpNext(S, PC);
6315#else
6316 return true;
6317#endif
6318}
6319PRESERVE_NONE
6320static bool Interp_CastBoolUint16(InterpState &S, CodePtr &PC) {
6321 if (!Cast<PT_Bool, PT_Uint16>(S, PC)) return false;
6322#if USE_TAILCALLS
6323 MUSTTAIL return InterpNext(S, PC);
6324#else
6325 return true;
6326#endif
6327}
6328PRESERVE_NONE
6329static bool Interp_CastBoolSint16(InterpState &S, CodePtr &PC) {
6330 if (!Cast<PT_Bool, PT_Sint16>(S, PC)) return false;
6331#if USE_TAILCALLS
6332 MUSTTAIL return InterpNext(S, PC);
6333#else
6334 return true;
6335#endif
6336}
6337PRESERVE_NONE
6338static bool Interp_CastBoolUint32(InterpState &S, CodePtr &PC) {
6339 if (!Cast<PT_Bool, PT_Uint32>(S, PC)) return false;
6340#if USE_TAILCALLS
6341 MUSTTAIL return InterpNext(S, PC);
6342#else
6343 return true;
6344#endif
6345}
6346PRESERVE_NONE
6347static bool Interp_CastBoolSint32(InterpState &S, CodePtr &PC) {
6348 if (!Cast<PT_Bool, PT_Sint32>(S, PC)) return false;
6349#if USE_TAILCALLS
6350 MUSTTAIL return InterpNext(S, PC);
6351#else
6352 return true;
6353#endif
6354}
6355PRESERVE_NONE
6356static bool Interp_CastBoolUint64(InterpState &S, CodePtr &PC) {
6357 if (!Cast<PT_Bool, PT_Uint64>(S, PC)) return false;
6358#if USE_TAILCALLS
6359 MUSTTAIL return InterpNext(S, PC);
6360#else
6361 return true;
6362#endif
6363}
6364PRESERVE_NONE
6365static bool Interp_CastBoolSint64(InterpState &S, CodePtr &PC) {
6366 if (!Cast<PT_Bool, PT_Sint64>(S, PC)) return false;
6367#if USE_TAILCALLS
6368 MUSTTAIL return InterpNext(S, PC);
6369#else
6370 return true;
6371#endif
6372}
6373PRESERVE_NONE
6374static bool Interp_CastBoolBool(InterpState &S, CodePtr &PC) {
6375 if (!Cast<PT_Bool, PT_Bool>(S, PC)) return false;
6376#if USE_TAILCALLS
6377 MUSTTAIL return InterpNext(S, PC);
6378#else
6379 return true;
6380#endif
6381}
6382PRESERVE_NONE
6383static bool Interp_CastIntAPUint8(InterpState &S, CodePtr &PC) {
6384 if (!Cast<PT_IntAP, PT_Uint8>(S, PC)) return false;
6385#if USE_TAILCALLS
6386 MUSTTAIL return InterpNext(S, PC);
6387#else
6388 return true;
6389#endif
6390}
6391PRESERVE_NONE
6392static bool Interp_CastIntAPSint8(InterpState &S, CodePtr &PC) {
6393 if (!Cast<PT_IntAP, PT_Sint8>(S, PC)) return false;
6394#if USE_TAILCALLS
6395 MUSTTAIL return InterpNext(S, PC);
6396#else
6397 return true;
6398#endif
6399}
6400PRESERVE_NONE
6401static bool Interp_CastIntAPUint16(InterpState &S, CodePtr &PC) {
6402 if (!Cast<PT_IntAP, PT_Uint16>(S, PC)) return false;
6403#if USE_TAILCALLS
6404 MUSTTAIL return InterpNext(S, PC);
6405#else
6406 return true;
6407#endif
6408}
6409PRESERVE_NONE
6410static bool Interp_CastIntAPSint16(InterpState &S, CodePtr &PC) {
6411 if (!Cast<PT_IntAP, PT_Sint16>(S, PC)) return false;
6412#if USE_TAILCALLS
6413 MUSTTAIL return InterpNext(S, PC);
6414#else
6415 return true;
6416#endif
6417}
6418PRESERVE_NONE
6419static bool Interp_CastIntAPUint32(InterpState &S, CodePtr &PC) {
6420 if (!Cast<PT_IntAP, PT_Uint32>(S, PC)) return false;
6421#if USE_TAILCALLS
6422 MUSTTAIL return InterpNext(S, PC);
6423#else
6424 return true;
6425#endif
6426}
6427PRESERVE_NONE
6428static bool Interp_CastIntAPSint32(InterpState &S, CodePtr &PC) {
6429 if (!Cast<PT_IntAP, PT_Sint32>(S, PC)) return false;
6430#if USE_TAILCALLS
6431 MUSTTAIL return InterpNext(S, PC);
6432#else
6433 return true;
6434#endif
6435}
6436PRESERVE_NONE
6437static bool Interp_CastIntAPUint64(InterpState &S, CodePtr &PC) {
6438 if (!Cast<PT_IntAP, PT_Uint64>(S, PC)) return false;
6439#if USE_TAILCALLS
6440 MUSTTAIL return InterpNext(S, PC);
6441#else
6442 return true;
6443#endif
6444}
6445PRESERVE_NONE
6446static bool Interp_CastIntAPSint64(InterpState &S, CodePtr &PC) {
6447 if (!Cast<PT_IntAP, PT_Sint64>(S, PC)) return false;
6448#if USE_TAILCALLS
6449 MUSTTAIL return InterpNext(S, PC);
6450#else
6451 return true;
6452#endif
6453}
6454PRESERVE_NONE
6455static bool Interp_CastIntAPBool(InterpState &S, CodePtr &PC) {
6456 if (!Cast<PT_IntAP, PT_Bool>(S, PC)) return false;
6457#if USE_TAILCALLS
6458 MUSTTAIL return InterpNext(S, PC);
6459#else
6460 return true;
6461#endif
6462}
6463PRESERVE_NONE
6464static bool Interp_CastIntAPSUint8(InterpState &S, CodePtr &PC) {
6465 if (!Cast<PT_IntAPS, PT_Uint8>(S, PC)) return false;
6466#if USE_TAILCALLS
6467 MUSTTAIL return InterpNext(S, PC);
6468#else
6469 return true;
6470#endif
6471}
6472PRESERVE_NONE
6473static bool Interp_CastIntAPSSint8(InterpState &S, CodePtr &PC) {
6474 if (!Cast<PT_IntAPS, PT_Sint8>(S, PC)) return false;
6475#if USE_TAILCALLS
6476 MUSTTAIL return InterpNext(S, PC);
6477#else
6478 return true;
6479#endif
6480}
6481PRESERVE_NONE
6482static bool Interp_CastIntAPSUint16(InterpState &S, CodePtr &PC) {
6483 if (!Cast<PT_IntAPS, PT_Uint16>(S, PC)) return false;
6484#if USE_TAILCALLS
6485 MUSTTAIL return InterpNext(S, PC);
6486#else
6487 return true;
6488#endif
6489}
6490PRESERVE_NONE
6491static bool Interp_CastIntAPSSint16(InterpState &S, CodePtr &PC) {
6492 if (!Cast<PT_IntAPS, PT_Sint16>(S, PC)) return false;
6493#if USE_TAILCALLS
6494 MUSTTAIL return InterpNext(S, PC);
6495#else
6496 return true;
6497#endif
6498}
6499PRESERVE_NONE
6500static bool Interp_CastIntAPSUint32(InterpState &S, CodePtr &PC) {
6501 if (!Cast<PT_IntAPS, PT_Uint32>(S, PC)) return false;
6502#if USE_TAILCALLS
6503 MUSTTAIL return InterpNext(S, PC);
6504#else
6505 return true;
6506#endif
6507}
6508PRESERVE_NONE
6509static bool Interp_CastIntAPSSint32(InterpState &S, CodePtr &PC) {
6510 if (!Cast<PT_IntAPS, PT_Sint32>(S, PC)) return false;
6511#if USE_TAILCALLS
6512 MUSTTAIL return InterpNext(S, PC);
6513#else
6514 return true;
6515#endif
6516}
6517PRESERVE_NONE
6518static bool Interp_CastIntAPSUint64(InterpState &S, CodePtr &PC) {
6519 if (!Cast<PT_IntAPS, PT_Uint64>(S, PC)) return false;
6520#if USE_TAILCALLS
6521 MUSTTAIL return InterpNext(S, PC);
6522#else
6523 return true;
6524#endif
6525}
6526PRESERVE_NONE
6527static bool Interp_CastIntAPSSint64(InterpState &S, CodePtr &PC) {
6528 if (!Cast<PT_IntAPS, PT_Sint64>(S, PC)) return false;
6529#if USE_TAILCALLS
6530 MUSTTAIL return InterpNext(S, PC);
6531#else
6532 return true;
6533#endif
6534}
6535PRESERVE_NONE
6536static bool Interp_CastIntAPSBool(InterpState &S, CodePtr &PC) {
6537 if (!Cast<PT_IntAPS, PT_Bool>(S, PC)) return false;
6538#if USE_TAILCALLS
6539 MUSTTAIL return InterpNext(S, PC);
6540#else
6541 return true;
6542#endif
6543}
6544PRESERVE_NONE
6545static bool Interp_CastFixedPointUint8(InterpState &S, CodePtr &PC) {
6546 if (!Cast<PT_FixedPoint, PT_Uint8>(S, PC)) return false;
6547#if USE_TAILCALLS
6548 MUSTTAIL return InterpNext(S, PC);
6549#else
6550 return true;
6551#endif
6552}
6553PRESERVE_NONE
6554static bool Interp_CastFixedPointSint8(InterpState &S, CodePtr &PC) {
6555 if (!Cast<PT_FixedPoint, PT_Sint8>(S, PC)) return false;
6556#if USE_TAILCALLS
6557 MUSTTAIL return InterpNext(S, PC);
6558#else
6559 return true;
6560#endif
6561}
6562PRESERVE_NONE
6563static bool Interp_CastFixedPointUint16(InterpState &S, CodePtr &PC) {
6564 if (!Cast<PT_FixedPoint, PT_Uint16>(S, PC)) return false;
6565#if USE_TAILCALLS
6566 MUSTTAIL return InterpNext(S, PC);
6567#else
6568 return true;
6569#endif
6570}
6571PRESERVE_NONE
6572static bool Interp_CastFixedPointSint16(InterpState &S, CodePtr &PC) {
6573 if (!Cast<PT_FixedPoint, PT_Sint16>(S, PC)) return false;
6574#if USE_TAILCALLS
6575 MUSTTAIL return InterpNext(S, PC);
6576#else
6577 return true;
6578#endif
6579}
6580PRESERVE_NONE
6581static bool Interp_CastFixedPointUint32(InterpState &S, CodePtr &PC) {
6582 if (!Cast<PT_FixedPoint, PT_Uint32>(S, PC)) return false;
6583#if USE_TAILCALLS
6584 MUSTTAIL return InterpNext(S, PC);
6585#else
6586 return true;
6587#endif
6588}
6589PRESERVE_NONE
6590static bool Interp_CastFixedPointSint32(InterpState &S, CodePtr &PC) {
6591 if (!Cast<PT_FixedPoint, PT_Sint32>(S, PC)) return false;
6592#if USE_TAILCALLS
6593 MUSTTAIL return InterpNext(S, PC);
6594#else
6595 return true;
6596#endif
6597}
6598PRESERVE_NONE
6599static bool Interp_CastFixedPointUint64(InterpState &S, CodePtr &PC) {
6600 if (!Cast<PT_FixedPoint, PT_Uint64>(S, PC)) return false;
6601#if USE_TAILCALLS
6602 MUSTTAIL return InterpNext(S, PC);
6603#else
6604 return true;
6605#endif
6606}
6607PRESERVE_NONE
6608static bool Interp_CastFixedPointSint64(InterpState &S, CodePtr &PC) {
6609 if (!Cast<PT_FixedPoint, PT_Sint64>(S, PC)) return false;
6610#if USE_TAILCALLS
6611 MUSTTAIL return InterpNext(S, PC);
6612#else
6613 return true;
6614#endif
6615}
6616PRESERVE_NONE
6617static bool Interp_CastFixedPointBool(InterpState &S, CodePtr &PC) {
6618 if (!Cast<PT_FixedPoint, PT_Bool>(S, PC)) return false;
6619#if USE_TAILCALLS
6620 MUSTTAIL return InterpNext(S, PC);
6621#else
6622 return true;
6623#endif
6624}
6625#endif
6626#ifdef GET_DISASM
6627case OP_CastUint8Uint8:
6628 Text.Op = PrintName("CastUint8Uint8");
6629 break;
6630case OP_CastUint8Sint8:
6631 Text.Op = PrintName("CastUint8Sint8");
6632 break;
6633case OP_CastUint8Uint16:
6634 Text.Op = PrintName("CastUint8Uint16");
6635 break;
6636case OP_CastUint8Sint16:
6637 Text.Op = PrintName("CastUint8Sint16");
6638 break;
6639case OP_CastUint8Uint32:
6640 Text.Op = PrintName("CastUint8Uint32");
6641 break;
6642case OP_CastUint8Sint32:
6643 Text.Op = PrintName("CastUint8Sint32");
6644 break;
6645case OP_CastUint8Uint64:
6646 Text.Op = PrintName("CastUint8Uint64");
6647 break;
6648case OP_CastUint8Sint64:
6649 Text.Op = PrintName("CastUint8Sint64");
6650 break;
6651case OP_CastUint8Bool:
6652 Text.Op = PrintName("CastUint8Bool");
6653 break;
6654case OP_CastSint8Uint8:
6655 Text.Op = PrintName("CastSint8Uint8");
6656 break;
6657case OP_CastSint8Sint8:
6658 Text.Op = PrintName("CastSint8Sint8");
6659 break;
6660case OP_CastSint8Uint16:
6661 Text.Op = PrintName("CastSint8Uint16");
6662 break;
6663case OP_CastSint8Sint16:
6664 Text.Op = PrintName("CastSint8Sint16");
6665 break;
6666case OP_CastSint8Uint32:
6667 Text.Op = PrintName("CastSint8Uint32");
6668 break;
6669case OP_CastSint8Sint32:
6670 Text.Op = PrintName("CastSint8Sint32");
6671 break;
6672case OP_CastSint8Uint64:
6673 Text.Op = PrintName("CastSint8Uint64");
6674 break;
6675case OP_CastSint8Sint64:
6676 Text.Op = PrintName("CastSint8Sint64");
6677 break;
6678case OP_CastSint8Bool:
6679 Text.Op = PrintName("CastSint8Bool");
6680 break;
6681case OP_CastUint16Uint8:
6682 Text.Op = PrintName("CastUint16Uint8");
6683 break;
6684case OP_CastUint16Sint8:
6685 Text.Op = PrintName("CastUint16Sint8");
6686 break;
6687case OP_CastUint16Uint16:
6688 Text.Op = PrintName("CastUint16Uint16");
6689 break;
6690case OP_CastUint16Sint16:
6691 Text.Op = PrintName("CastUint16Sint16");
6692 break;
6693case OP_CastUint16Uint32:
6694 Text.Op = PrintName("CastUint16Uint32");
6695 break;
6696case OP_CastUint16Sint32:
6697 Text.Op = PrintName("CastUint16Sint32");
6698 break;
6699case OP_CastUint16Uint64:
6700 Text.Op = PrintName("CastUint16Uint64");
6701 break;
6702case OP_CastUint16Sint64:
6703 Text.Op = PrintName("CastUint16Sint64");
6704 break;
6705case OP_CastUint16Bool:
6706 Text.Op = PrintName("CastUint16Bool");
6707 break;
6708case OP_CastSint16Uint8:
6709 Text.Op = PrintName("CastSint16Uint8");
6710 break;
6711case OP_CastSint16Sint8:
6712 Text.Op = PrintName("CastSint16Sint8");
6713 break;
6714case OP_CastSint16Uint16:
6715 Text.Op = PrintName("CastSint16Uint16");
6716 break;
6717case OP_CastSint16Sint16:
6718 Text.Op = PrintName("CastSint16Sint16");
6719 break;
6720case OP_CastSint16Uint32:
6721 Text.Op = PrintName("CastSint16Uint32");
6722 break;
6723case OP_CastSint16Sint32:
6724 Text.Op = PrintName("CastSint16Sint32");
6725 break;
6726case OP_CastSint16Uint64:
6727 Text.Op = PrintName("CastSint16Uint64");
6728 break;
6729case OP_CastSint16Sint64:
6730 Text.Op = PrintName("CastSint16Sint64");
6731 break;
6732case OP_CastSint16Bool:
6733 Text.Op = PrintName("CastSint16Bool");
6734 break;
6735case OP_CastUint32Uint8:
6736 Text.Op = PrintName("CastUint32Uint8");
6737 break;
6738case OP_CastUint32Sint8:
6739 Text.Op = PrintName("CastUint32Sint8");
6740 break;
6741case OP_CastUint32Uint16:
6742 Text.Op = PrintName("CastUint32Uint16");
6743 break;
6744case OP_CastUint32Sint16:
6745 Text.Op = PrintName("CastUint32Sint16");
6746 break;
6747case OP_CastUint32Uint32:
6748 Text.Op = PrintName("CastUint32Uint32");
6749 break;
6750case OP_CastUint32Sint32:
6751 Text.Op = PrintName("CastUint32Sint32");
6752 break;
6753case OP_CastUint32Uint64:
6754 Text.Op = PrintName("CastUint32Uint64");
6755 break;
6756case OP_CastUint32Sint64:
6757 Text.Op = PrintName("CastUint32Sint64");
6758 break;
6759case OP_CastUint32Bool:
6760 Text.Op = PrintName("CastUint32Bool");
6761 break;
6762case OP_CastSint32Uint8:
6763 Text.Op = PrintName("CastSint32Uint8");
6764 break;
6765case OP_CastSint32Sint8:
6766 Text.Op = PrintName("CastSint32Sint8");
6767 break;
6768case OP_CastSint32Uint16:
6769 Text.Op = PrintName("CastSint32Uint16");
6770 break;
6771case OP_CastSint32Sint16:
6772 Text.Op = PrintName("CastSint32Sint16");
6773 break;
6774case OP_CastSint32Uint32:
6775 Text.Op = PrintName("CastSint32Uint32");
6776 break;
6777case OP_CastSint32Sint32:
6778 Text.Op = PrintName("CastSint32Sint32");
6779 break;
6780case OP_CastSint32Uint64:
6781 Text.Op = PrintName("CastSint32Uint64");
6782 break;
6783case OP_CastSint32Sint64:
6784 Text.Op = PrintName("CastSint32Sint64");
6785 break;
6786case OP_CastSint32Bool:
6787 Text.Op = PrintName("CastSint32Bool");
6788 break;
6789case OP_CastUint64Uint8:
6790 Text.Op = PrintName("CastUint64Uint8");
6791 break;
6792case OP_CastUint64Sint8:
6793 Text.Op = PrintName("CastUint64Sint8");
6794 break;
6795case OP_CastUint64Uint16:
6796 Text.Op = PrintName("CastUint64Uint16");
6797 break;
6798case OP_CastUint64Sint16:
6799 Text.Op = PrintName("CastUint64Sint16");
6800 break;
6801case OP_CastUint64Uint32:
6802 Text.Op = PrintName("CastUint64Uint32");
6803 break;
6804case OP_CastUint64Sint32:
6805 Text.Op = PrintName("CastUint64Sint32");
6806 break;
6807case OP_CastUint64Uint64:
6808 Text.Op = PrintName("CastUint64Uint64");
6809 break;
6810case OP_CastUint64Sint64:
6811 Text.Op = PrintName("CastUint64Sint64");
6812 break;
6813case OP_CastUint64Bool:
6814 Text.Op = PrintName("CastUint64Bool");
6815 break;
6816case OP_CastSint64Uint8:
6817 Text.Op = PrintName("CastSint64Uint8");
6818 break;
6819case OP_CastSint64Sint8:
6820 Text.Op = PrintName("CastSint64Sint8");
6821 break;
6822case OP_CastSint64Uint16:
6823 Text.Op = PrintName("CastSint64Uint16");
6824 break;
6825case OP_CastSint64Sint16:
6826 Text.Op = PrintName("CastSint64Sint16");
6827 break;
6828case OP_CastSint64Uint32:
6829 Text.Op = PrintName("CastSint64Uint32");
6830 break;
6831case OP_CastSint64Sint32:
6832 Text.Op = PrintName("CastSint64Sint32");
6833 break;
6834case OP_CastSint64Uint64:
6835 Text.Op = PrintName("CastSint64Uint64");
6836 break;
6837case OP_CastSint64Sint64:
6838 Text.Op = PrintName("CastSint64Sint64");
6839 break;
6840case OP_CastSint64Bool:
6841 Text.Op = PrintName("CastSint64Bool");
6842 break;
6843case OP_CastBoolUint8:
6844 Text.Op = PrintName("CastBoolUint8");
6845 break;
6846case OP_CastBoolSint8:
6847 Text.Op = PrintName("CastBoolSint8");
6848 break;
6849case OP_CastBoolUint16:
6850 Text.Op = PrintName("CastBoolUint16");
6851 break;
6852case OP_CastBoolSint16:
6853 Text.Op = PrintName("CastBoolSint16");
6854 break;
6855case OP_CastBoolUint32:
6856 Text.Op = PrintName("CastBoolUint32");
6857 break;
6858case OP_CastBoolSint32:
6859 Text.Op = PrintName("CastBoolSint32");
6860 break;
6861case OP_CastBoolUint64:
6862 Text.Op = PrintName("CastBoolUint64");
6863 break;
6864case OP_CastBoolSint64:
6865 Text.Op = PrintName("CastBoolSint64");
6866 break;
6867case OP_CastBoolBool:
6868 Text.Op = PrintName("CastBoolBool");
6869 break;
6870case OP_CastIntAPUint8:
6871 Text.Op = PrintName("CastIntAPUint8");
6872 break;
6873case OP_CastIntAPSint8:
6874 Text.Op = PrintName("CastIntAPSint8");
6875 break;
6876case OP_CastIntAPUint16:
6877 Text.Op = PrintName("CastIntAPUint16");
6878 break;
6879case OP_CastIntAPSint16:
6880 Text.Op = PrintName("CastIntAPSint16");
6881 break;
6882case OP_CastIntAPUint32:
6883 Text.Op = PrintName("CastIntAPUint32");
6884 break;
6885case OP_CastIntAPSint32:
6886 Text.Op = PrintName("CastIntAPSint32");
6887 break;
6888case OP_CastIntAPUint64:
6889 Text.Op = PrintName("CastIntAPUint64");
6890 break;
6891case OP_CastIntAPSint64:
6892 Text.Op = PrintName("CastIntAPSint64");
6893 break;
6894case OP_CastIntAPBool:
6895 Text.Op = PrintName("CastIntAPBool");
6896 break;
6897case OP_CastIntAPSUint8:
6898 Text.Op = PrintName("CastIntAPSUint8");
6899 break;
6900case OP_CastIntAPSSint8:
6901 Text.Op = PrintName("CastIntAPSSint8");
6902 break;
6903case OP_CastIntAPSUint16:
6904 Text.Op = PrintName("CastIntAPSUint16");
6905 break;
6906case OP_CastIntAPSSint16:
6907 Text.Op = PrintName("CastIntAPSSint16");
6908 break;
6909case OP_CastIntAPSUint32:
6910 Text.Op = PrintName("CastIntAPSUint32");
6911 break;
6912case OP_CastIntAPSSint32:
6913 Text.Op = PrintName("CastIntAPSSint32");
6914 break;
6915case OP_CastIntAPSUint64:
6916 Text.Op = PrintName("CastIntAPSUint64");
6917 break;
6918case OP_CastIntAPSSint64:
6919 Text.Op = PrintName("CastIntAPSSint64");
6920 break;
6921case OP_CastIntAPSBool:
6922 Text.Op = PrintName("CastIntAPSBool");
6923 break;
6924case OP_CastFixedPointUint8:
6925 Text.Op = PrintName("CastFixedPointUint8");
6926 break;
6927case OP_CastFixedPointSint8:
6928 Text.Op = PrintName("CastFixedPointSint8");
6929 break;
6930case OP_CastFixedPointUint16:
6931 Text.Op = PrintName("CastFixedPointUint16");
6932 break;
6933case OP_CastFixedPointSint16:
6934 Text.Op = PrintName("CastFixedPointSint16");
6935 break;
6936case OP_CastFixedPointUint32:
6937 Text.Op = PrintName("CastFixedPointUint32");
6938 break;
6939case OP_CastFixedPointSint32:
6940 Text.Op = PrintName("CastFixedPointSint32");
6941 break;
6942case OP_CastFixedPointUint64:
6943 Text.Op = PrintName("CastFixedPointUint64");
6944 break;
6945case OP_CastFixedPointSint64:
6946 Text.Op = PrintName("CastFixedPointSint64");
6947 break;
6948case OP_CastFixedPointBool:
6949 Text.Op = PrintName("CastFixedPointBool");
6950 break;
6951#endif
6952#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
6953bool emitCastUint8Uint8(SourceInfo);
6954bool emitCastUint8Sint8(SourceInfo);
6955bool emitCastUint8Uint16(SourceInfo);
6956bool emitCastUint8Sint16(SourceInfo);
6957bool emitCastUint8Uint32(SourceInfo);
6958bool emitCastUint8Sint32(SourceInfo);
6959bool emitCastUint8Uint64(SourceInfo);
6960bool emitCastUint8Sint64(SourceInfo);
6961bool emitCastUint8Bool(SourceInfo);
6962bool emitCastSint8Uint8(SourceInfo);
6963bool emitCastSint8Sint8(SourceInfo);
6964bool emitCastSint8Uint16(SourceInfo);
6965bool emitCastSint8Sint16(SourceInfo);
6966bool emitCastSint8Uint32(SourceInfo);
6967bool emitCastSint8Sint32(SourceInfo);
6968bool emitCastSint8Uint64(SourceInfo);
6969bool emitCastSint8Sint64(SourceInfo);
6970bool emitCastSint8Bool(SourceInfo);
6971bool emitCastUint16Uint8(SourceInfo);
6972bool emitCastUint16Sint8(SourceInfo);
6973bool emitCastUint16Uint16(SourceInfo);
6974bool emitCastUint16Sint16(SourceInfo);
6975bool emitCastUint16Uint32(SourceInfo);
6976bool emitCastUint16Sint32(SourceInfo);
6977bool emitCastUint16Uint64(SourceInfo);
6978bool emitCastUint16Sint64(SourceInfo);
6979bool emitCastUint16Bool(SourceInfo);
6980bool emitCastSint16Uint8(SourceInfo);
6981bool emitCastSint16Sint8(SourceInfo);
6982bool emitCastSint16Uint16(SourceInfo);
6983bool emitCastSint16Sint16(SourceInfo);
6984bool emitCastSint16Uint32(SourceInfo);
6985bool emitCastSint16Sint32(SourceInfo);
6986bool emitCastSint16Uint64(SourceInfo);
6987bool emitCastSint16Sint64(SourceInfo);
6988bool emitCastSint16Bool(SourceInfo);
6989bool emitCastUint32Uint8(SourceInfo);
6990bool emitCastUint32Sint8(SourceInfo);
6991bool emitCastUint32Uint16(SourceInfo);
6992bool emitCastUint32Sint16(SourceInfo);
6993bool emitCastUint32Uint32(SourceInfo);
6994bool emitCastUint32Sint32(SourceInfo);
6995bool emitCastUint32Uint64(SourceInfo);
6996bool emitCastUint32Sint64(SourceInfo);
6997bool emitCastUint32Bool(SourceInfo);
6998bool emitCastSint32Uint8(SourceInfo);
6999bool emitCastSint32Sint8(SourceInfo);
7000bool emitCastSint32Uint16(SourceInfo);
7001bool emitCastSint32Sint16(SourceInfo);
7002bool emitCastSint32Uint32(SourceInfo);
7003bool emitCastSint32Sint32(SourceInfo);
7004bool emitCastSint32Uint64(SourceInfo);
7005bool emitCastSint32Sint64(SourceInfo);
7006bool emitCastSint32Bool(SourceInfo);
7007bool emitCastUint64Uint8(SourceInfo);
7008bool emitCastUint64Sint8(SourceInfo);
7009bool emitCastUint64Uint16(SourceInfo);
7010bool emitCastUint64Sint16(SourceInfo);
7011bool emitCastUint64Uint32(SourceInfo);
7012bool emitCastUint64Sint32(SourceInfo);
7013bool emitCastUint64Uint64(SourceInfo);
7014bool emitCastUint64Sint64(SourceInfo);
7015bool emitCastUint64Bool(SourceInfo);
7016bool emitCastSint64Uint8(SourceInfo);
7017bool emitCastSint64Sint8(SourceInfo);
7018bool emitCastSint64Uint16(SourceInfo);
7019bool emitCastSint64Sint16(SourceInfo);
7020bool emitCastSint64Uint32(SourceInfo);
7021bool emitCastSint64Sint32(SourceInfo);
7022bool emitCastSint64Uint64(SourceInfo);
7023bool emitCastSint64Sint64(SourceInfo);
7024bool emitCastSint64Bool(SourceInfo);
7025bool emitCastBoolUint8(SourceInfo);
7026bool emitCastBoolSint8(SourceInfo);
7027bool emitCastBoolUint16(SourceInfo);
7028bool emitCastBoolSint16(SourceInfo);
7029bool emitCastBoolUint32(SourceInfo);
7030bool emitCastBoolSint32(SourceInfo);
7031bool emitCastBoolUint64(SourceInfo);
7032bool emitCastBoolSint64(SourceInfo);
7033bool emitCastBoolBool(SourceInfo);
7034bool emitCastIntAPUint8(SourceInfo);
7035bool emitCastIntAPSint8(SourceInfo);
7036bool emitCastIntAPUint16(SourceInfo);
7037bool emitCastIntAPSint16(SourceInfo);
7038bool emitCastIntAPUint32(SourceInfo);
7039bool emitCastIntAPSint32(SourceInfo);
7040bool emitCastIntAPUint64(SourceInfo);
7041bool emitCastIntAPSint64(SourceInfo);
7042bool emitCastIntAPBool(SourceInfo);
7043bool emitCastIntAPSUint8(SourceInfo);
7044bool emitCastIntAPSSint8(SourceInfo);
7045bool emitCastIntAPSUint16(SourceInfo);
7046bool emitCastIntAPSSint16(SourceInfo);
7047bool emitCastIntAPSUint32(SourceInfo);
7048bool emitCastIntAPSSint32(SourceInfo);
7049bool emitCastIntAPSUint64(SourceInfo);
7050bool emitCastIntAPSSint64(SourceInfo);
7051bool emitCastIntAPSBool(SourceInfo);
7052bool emitCastFixedPointUint8(SourceInfo);
7053bool emitCastFixedPointSint8(SourceInfo);
7054bool emitCastFixedPointUint16(SourceInfo);
7055bool emitCastFixedPointSint16(SourceInfo);
7056bool emitCastFixedPointUint32(SourceInfo);
7057bool emitCastFixedPointSint32(SourceInfo);
7058bool emitCastFixedPointUint64(SourceInfo);
7059bool emitCastFixedPointSint64(SourceInfo);
7060bool emitCastFixedPointBool(SourceInfo);
7061#endif
7062#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7063[[nodiscard]] bool emitCast(PrimType, PrimType, SourceInfo I);
7064#endif
7065#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
7066bool
7067#if defined(GET_EVAL_IMPL)
7068EvalEmitter
7069#else
7070ByteCodeEmitter
7071#endif
7072::emitCast(PrimType T0, PrimType T1, SourceInfo I) {
7073 switch (T0) {
7074 case PT_Uint8:
7075 switch (T1) {
7076 case PT_Uint8:
7077 return emitCastUint8Uint8(I);
7078 case PT_Sint8:
7079 return emitCastUint8Sint8(I);
7080 case PT_Uint16:
7081 return emitCastUint8Uint16(I);
7082 case PT_Sint16:
7083 return emitCastUint8Sint16(I);
7084 case PT_Uint32:
7085 return emitCastUint8Uint32(I);
7086 case PT_Sint32:
7087 return emitCastUint8Sint32(I);
7088 case PT_Uint64:
7089 return emitCastUint8Uint64(I);
7090 case PT_Sint64:
7091 return emitCastUint8Sint64(I);
7092 case PT_Bool:
7093 return emitCastUint8Bool(I);
7094 default: llvm_unreachable("invalid type: emitCast");
7095 }
7096 llvm_unreachable("invalid enum value");
7097 case PT_Sint8:
7098 switch (T1) {
7099 case PT_Uint8:
7100 return emitCastSint8Uint8(I);
7101 case PT_Sint8:
7102 return emitCastSint8Sint8(I);
7103 case PT_Uint16:
7104 return emitCastSint8Uint16(I);
7105 case PT_Sint16:
7106 return emitCastSint8Sint16(I);
7107 case PT_Uint32:
7108 return emitCastSint8Uint32(I);
7109 case PT_Sint32:
7110 return emitCastSint8Sint32(I);
7111 case PT_Uint64:
7112 return emitCastSint8Uint64(I);
7113 case PT_Sint64:
7114 return emitCastSint8Sint64(I);
7115 case PT_Bool:
7116 return emitCastSint8Bool(I);
7117 default: llvm_unreachable("invalid type: emitCast");
7118 }
7119 llvm_unreachable("invalid enum value");
7120 case PT_Uint16:
7121 switch (T1) {
7122 case PT_Uint8:
7123 return emitCastUint16Uint8(I);
7124 case PT_Sint8:
7125 return emitCastUint16Sint8(I);
7126 case PT_Uint16:
7127 return emitCastUint16Uint16(I);
7128 case PT_Sint16:
7129 return emitCastUint16Sint16(I);
7130 case PT_Uint32:
7131 return emitCastUint16Uint32(I);
7132 case PT_Sint32:
7133 return emitCastUint16Sint32(I);
7134 case PT_Uint64:
7135 return emitCastUint16Uint64(I);
7136 case PT_Sint64:
7137 return emitCastUint16Sint64(I);
7138 case PT_Bool:
7139 return emitCastUint16Bool(I);
7140 default: llvm_unreachable("invalid type: emitCast");
7141 }
7142 llvm_unreachable("invalid enum value");
7143 case PT_Sint16:
7144 switch (T1) {
7145 case PT_Uint8:
7146 return emitCastSint16Uint8(I);
7147 case PT_Sint8:
7148 return emitCastSint16Sint8(I);
7149 case PT_Uint16:
7150 return emitCastSint16Uint16(I);
7151 case PT_Sint16:
7152 return emitCastSint16Sint16(I);
7153 case PT_Uint32:
7154 return emitCastSint16Uint32(I);
7155 case PT_Sint32:
7156 return emitCastSint16Sint32(I);
7157 case PT_Uint64:
7158 return emitCastSint16Uint64(I);
7159 case PT_Sint64:
7160 return emitCastSint16Sint64(I);
7161 case PT_Bool:
7162 return emitCastSint16Bool(I);
7163 default: llvm_unreachable("invalid type: emitCast");
7164 }
7165 llvm_unreachable("invalid enum value");
7166 case PT_Uint32:
7167 switch (T1) {
7168 case PT_Uint8:
7169 return emitCastUint32Uint8(I);
7170 case PT_Sint8:
7171 return emitCastUint32Sint8(I);
7172 case PT_Uint16:
7173 return emitCastUint32Uint16(I);
7174 case PT_Sint16:
7175 return emitCastUint32Sint16(I);
7176 case PT_Uint32:
7177 return emitCastUint32Uint32(I);
7178 case PT_Sint32:
7179 return emitCastUint32Sint32(I);
7180 case PT_Uint64:
7181 return emitCastUint32Uint64(I);
7182 case PT_Sint64:
7183 return emitCastUint32Sint64(I);
7184 case PT_Bool:
7185 return emitCastUint32Bool(I);
7186 default: llvm_unreachable("invalid type: emitCast");
7187 }
7188 llvm_unreachable("invalid enum value");
7189 case PT_Sint32:
7190 switch (T1) {
7191 case PT_Uint8:
7192 return emitCastSint32Uint8(I);
7193 case PT_Sint8:
7194 return emitCastSint32Sint8(I);
7195 case PT_Uint16:
7196 return emitCastSint32Uint16(I);
7197 case PT_Sint16:
7198 return emitCastSint32Sint16(I);
7199 case PT_Uint32:
7200 return emitCastSint32Uint32(I);
7201 case PT_Sint32:
7202 return emitCastSint32Sint32(I);
7203 case PT_Uint64:
7204 return emitCastSint32Uint64(I);
7205 case PT_Sint64:
7206 return emitCastSint32Sint64(I);
7207 case PT_Bool:
7208 return emitCastSint32Bool(I);
7209 default: llvm_unreachable("invalid type: emitCast");
7210 }
7211 llvm_unreachable("invalid enum value");
7212 case PT_Uint64:
7213 switch (T1) {
7214 case PT_Uint8:
7215 return emitCastUint64Uint8(I);
7216 case PT_Sint8:
7217 return emitCastUint64Sint8(I);
7218 case PT_Uint16:
7219 return emitCastUint64Uint16(I);
7220 case PT_Sint16:
7221 return emitCastUint64Sint16(I);
7222 case PT_Uint32:
7223 return emitCastUint64Uint32(I);
7224 case PT_Sint32:
7225 return emitCastUint64Sint32(I);
7226 case PT_Uint64:
7227 return emitCastUint64Uint64(I);
7228 case PT_Sint64:
7229 return emitCastUint64Sint64(I);
7230 case PT_Bool:
7231 return emitCastUint64Bool(I);
7232 default: llvm_unreachable("invalid type: emitCast");
7233 }
7234 llvm_unreachable("invalid enum value");
7235 case PT_Sint64:
7236 switch (T1) {
7237 case PT_Uint8:
7238 return emitCastSint64Uint8(I);
7239 case PT_Sint8:
7240 return emitCastSint64Sint8(I);
7241 case PT_Uint16:
7242 return emitCastSint64Uint16(I);
7243 case PT_Sint16:
7244 return emitCastSint64Sint16(I);
7245 case PT_Uint32:
7246 return emitCastSint64Uint32(I);
7247 case PT_Sint32:
7248 return emitCastSint64Sint32(I);
7249 case PT_Uint64:
7250 return emitCastSint64Uint64(I);
7251 case PT_Sint64:
7252 return emitCastSint64Sint64(I);
7253 case PT_Bool:
7254 return emitCastSint64Bool(I);
7255 default: llvm_unreachable("invalid type: emitCast");
7256 }
7257 llvm_unreachable("invalid enum value");
7258 case PT_Bool:
7259 switch (T1) {
7260 case PT_Uint8:
7261 return emitCastBoolUint8(I);
7262 case PT_Sint8:
7263 return emitCastBoolSint8(I);
7264 case PT_Uint16:
7265 return emitCastBoolUint16(I);
7266 case PT_Sint16:
7267 return emitCastBoolSint16(I);
7268 case PT_Uint32:
7269 return emitCastBoolUint32(I);
7270 case PT_Sint32:
7271 return emitCastBoolSint32(I);
7272 case PT_Uint64:
7273 return emitCastBoolUint64(I);
7274 case PT_Sint64:
7275 return emitCastBoolSint64(I);
7276 case PT_Bool:
7277 return emitCastBoolBool(I);
7278 default: llvm_unreachable("invalid type: emitCast");
7279 }
7280 llvm_unreachable("invalid enum value");
7281 case PT_IntAP:
7282 switch (T1) {
7283 case PT_Uint8:
7284 return emitCastIntAPUint8(I);
7285 case PT_Sint8:
7286 return emitCastIntAPSint8(I);
7287 case PT_Uint16:
7288 return emitCastIntAPUint16(I);
7289 case PT_Sint16:
7290 return emitCastIntAPSint16(I);
7291 case PT_Uint32:
7292 return emitCastIntAPUint32(I);
7293 case PT_Sint32:
7294 return emitCastIntAPSint32(I);
7295 case PT_Uint64:
7296 return emitCastIntAPUint64(I);
7297 case PT_Sint64:
7298 return emitCastIntAPSint64(I);
7299 case PT_Bool:
7300 return emitCastIntAPBool(I);
7301 default: llvm_unreachable("invalid type: emitCast");
7302 }
7303 llvm_unreachable("invalid enum value");
7304 case PT_IntAPS:
7305 switch (T1) {
7306 case PT_Uint8:
7307 return emitCastIntAPSUint8(I);
7308 case PT_Sint8:
7309 return emitCastIntAPSSint8(I);
7310 case PT_Uint16:
7311 return emitCastIntAPSUint16(I);
7312 case PT_Sint16:
7313 return emitCastIntAPSSint16(I);
7314 case PT_Uint32:
7315 return emitCastIntAPSUint32(I);
7316 case PT_Sint32:
7317 return emitCastIntAPSSint32(I);
7318 case PT_Uint64:
7319 return emitCastIntAPSUint64(I);
7320 case PT_Sint64:
7321 return emitCastIntAPSSint64(I);
7322 case PT_Bool:
7323 return emitCastIntAPSBool(I);
7324 default: llvm_unreachable("invalid type: emitCast");
7325 }
7326 llvm_unreachable("invalid enum value");
7327 case PT_FixedPoint:
7328 switch (T1) {
7329 case PT_Uint8:
7330 return emitCastFixedPointUint8(I);
7331 case PT_Sint8:
7332 return emitCastFixedPointSint8(I);
7333 case PT_Uint16:
7334 return emitCastFixedPointUint16(I);
7335 case PT_Sint16:
7336 return emitCastFixedPointSint16(I);
7337 case PT_Uint32:
7338 return emitCastFixedPointUint32(I);
7339 case PT_Sint32:
7340 return emitCastFixedPointSint32(I);
7341 case PT_Uint64:
7342 return emitCastFixedPointUint64(I);
7343 case PT_Sint64:
7344 return emitCastFixedPointSint64(I);
7345 case PT_Bool:
7346 return emitCastFixedPointBool(I);
7347 default: llvm_unreachable("invalid type: emitCast");
7348 }
7349 llvm_unreachable("invalid enum value");
7350 default: llvm_unreachable("invalid type: emitCast");
7351 }
7352 llvm_unreachable("invalid enum value");
7353}
7354#endif
7355#ifdef GET_LINK_IMPL
7356bool ByteCodeEmitter::emitCastUint8Uint8(SourceInfo L) {
7357 return emitOp<>(OP_CastUint8Uint8, L);
7358}
7359bool ByteCodeEmitter::emitCastUint8Sint8(SourceInfo L) {
7360 return emitOp<>(OP_CastUint8Sint8, L);
7361}
7362bool ByteCodeEmitter::emitCastUint8Uint16(SourceInfo L) {
7363 return emitOp<>(OP_CastUint8Uint16, L);
7364}
7365bool ByteCodeEmitter::emitCastUint8Sint16(SourceInfo L) {
7366 return emitOp<>(OP_CastUint8Sint16, L);
7367}
7368bool ByteCodeEmitter::emitCastUint8Uint32(SourceInfo L) {
7369 return emitOp<>(OP_CastUint8Uint32, L);
7370}
7371bool ByteCodeEmitter::emitCastUint8Sint32(SourceInfo L) {
7372 return emitOp<>(OP_CastUint8Sint32, L);
7373}
7374bool ByteCodeEmitter::emitCastUint8Uint64(SourceInfo L) {
7375 return emitOp<>(OP_CastUint8Uint64, L);
7376}
7377bool ByteCodeEmitter::emitCastUint8Sint64(SourceInfo L) {
7378 return emitOp<>(OP_CastUint8Sint64, L);
7379}
7380bool ByteCodeEmitter::emitCastUint8Bool(SourceInfo L) {
7381 return emitOp<>(OP_CastUint8Bool, L);
7382}
7383bool ByteCodeEmitter::emitCastSint8Uint8(SourceInfo L) {
7384 return emitOp<>(OP_CastSint8Uint8, L);
7385}
7386bool ByteCodeEmitter::emitCastSint8Sint8(SourceInfo L) {
7387 return emitOp<>(OP_CastSint8Sint8, L);
7388}
7389bool ByteCodeEmitter::emitCastSint8Uint16(SourceInfo L) {
7390 return emitOp<>(OP_CastSint8Uint16, L);
7391}
7392bool ByteCodeEmitter::emitCastSint8Sint16(SourceInfo L) {
7393 return emitOp<>(OP_CastSint8Sint16, L);
7394}
7395bool ByteCodeEmitter::emitCastSint8Uint32(SourceInfo L) {
7396 return emitOp<>(OP_CastSint8Uint32, L);
7397}
7398bool ByteCodeEmitter::emitCastSint8Sint32(SourceInfo L) {
7399 return emitOp<>(OP_CastSint8Sint32, L);
7400}
7401bool ByteCodeEmitter::emitCastSint8Uint64(SourceInfo L) {
7402 return emitOp<>(OP_CastSint8Uint64, L);
7403}
7404bool ByteCodeEmitter::emitCastSint8Sint64(SourceInfo L) {
7405 return emitOp<>(OP_CastSint8Sint64, L);
7406}
7407bool ByteCodeEmitter::emitCastSint8Bool(SourceInfo L) {
7408 return emitOp<>(OP_CastSint8Bool, L);
7409}
7410bool ByteCodeEmitter::emitCastUint16Uint8(SourceInfo L) {
7411 return emitOp<>(OP_CastUint16Uint8, L);
7412}
7413bool ByteCodeEmitter::emitCastUint16Sint8(SourceInfo L) {
7414 return emitOp<>(OP_CastUint16Sint8, L);
7415}
7416bool ByteCodeEmitter::emitCastUint16Uint16(SourceInfo L) {
7417 return emitOp<>(OP_CastUint16Uint16, L);
7418}
7419bool ByteCodeEmitter::emitCastUint16Sint16(SourceInfo L) {
7420 return emitOp<>(OP_CastUint16Sint16, L);
7421}
7422bool ByteCodeEmitter::emitCastUint16Uint32(SourceInfo L) {
7423 return emitOp<>(OP_CastUint16Uint32, L);
7424}
7425bool ByteCodeEmitter::emitCastUint16Sint32(SourceInfo L) {
7426 return emitOp<>(OP_CastUint16Sint32, L);
7427}
7428bool ByteCodeEmitter::emitCastUint16Uint64(SourceInfo L) {
7429 return emitOp<>(OP_CastUint16Uint64, L);
7430}
7431bool ByteCodeEmitter::emitCastUint16Sint64(SourceInfo L) {
7432 return emitOp<>(OP_CastUint16Sint64, L);
7433}
7434bool ByteCodeEmitter::emitCastUint16Bool(SourceInfo L) {
7435 return emitOp<>(OP_CastUint16Bool, L);
7436}
7437bool ByteCodeEmitter::emitCastSint16Uint8(SourceInfo L) {
7438 return emitOp<>(OP_CastSint16Uint8, L);
7439}
7440bool ByteCodeEmitter::emitCastSint16Sint8(SourceInfo L) {
7441 return emitOp<>(OP_CastSint16Sint8, L);
7442}
7443bool ByteCodeEmitter::emitCastSint16Uint16(SourceInfo L) {
7444 return emitOp<>(OP_CastSint16Uint16, L);
7445}
7446bool ByteCodeEmitter::emitCastSint16Sint16(SourceInfo L) {
7447 return emitOp<>(OP_CastSint16Sint16, L);
7448}
7449bool ByteCodeEmitter::emitCastSint16Uint32(SourceInfo L) {
7450 return emitOp<>(OP_CastSint16Uint32, L);
7451}
7452bool ByteCodeEmitter::emitCastSint16Sint32(SourceInfo L) {
7453 return emitOp<>(OP_CastSint16Sint32, L);
7454}
7455bool ByteCodeEmitter::emitCastSint16Uint64(SourceInfo L) {
7456 return emitOp<>(OP_CastSint16Uint64, L);
7457}
7458bool ByteCodeEmitter::emitCastSint16Sint64(SourceInfo L) {
7459 return emitOp<>(OP_CastSint16Sint64, L);
7460}
7461bool ByteCodeEmitter::emitCastSint16Bool(SourceInfo L) {
7462 return emitOp<>(OP_CastSint16Bool, L);
7463}
7464bool ByteCodeEmitter::emitCastUint32Uint8(SourceInfo L) {
7465 return emitOp<>(OP_CastUint32Uint8, L);
7466}
7467bool ByteCodeEmitter::emitCastUint32Sint8(SourceInfo L) {
7468 return emitOp<>(OP_CastUint32Sint8, L);
7469}
7470bool ByteCodeEmitter::emitCastUint32Uint16(SourceInfo L) {
7471 return emitOp<>(OP_CastUint32Uint16, L);
7472}
7473bool ByteCodeEmitter::emitCastUint32Sint16(SourceInfo L) {
7474 return emitOp<>(OP_CastUint32Sint16, L);
7475}
7476bool ByteCodeEmitter::emitCastUint32Uint32(SourceInfo L) {
7477 return emitOp<>(OP_CastUint32Uint32, L);
7478}
7479bool ByteCodeEmitter::emitCastUint32Sint32(SourceInfo L) {
7480 return emitOp<>(OP_CastUint32Sint32, L);
7481}
7482bool ByteCodeEmitter::emitCastUint32Uint64(SourceInfo L) {
7483 return emitOp<>(OP_CastUint32Uint64, L);
7484}
7485bool ByteCodeEmitter::emitCastUint32Sint64(SourceInfo L) {
7486 return emitOp<>(OP_CastUint32Sint64, L);
7487}
7488bool ByteCodeEmitter::emitCastUint32Bool(SourceInfo L) {
7489 return emitOp<>(OP_CastUint32Bool, L);
7490}
7491bool ByteCodeEmitter::emitCastSint32Uint8(SourceInfo L) {
7492 return emitOp<>(OP_CastSint32Uint8, L);
7493}
7494bool ByteCodeEmitter::emitCastSint32Sint8(SourceInfo L) {
7495 return emitOp<>(OP_CastSint32Sint8, L);
7496}
7497bool ByteCodeEmitter::emitCastSint32Uint16(SourceInfo L) {
7498 return emitOp<>(OP_CastSint32Uint16, L);
7499}
7500bool ByteCodeEmitter::emitCastSint32Sint16(SourceInfo L) {
7501 return emitOp<>(OP_CastSint32Sint16, L);
7502}
7503bool ByteCodeEmitter::emitCastSint32Uint32(SourceInfo L) {
7504 return emitOp<>(OP_CastSint32Uint32, L);
7505}
7506bool ByteCodeEmitter::emitCastSint32Sint32(SourceInfo L) {
7507 return emitOp<>(OP_CastSint32Sint32, L);
7508}
7509bool ByteCodeEmitter::emitCastSint32Uint64(SourceInfo L) {
7510 return emitOp<>(OP_CastSint32Uint64, L);
7511}
7512bool ByteCodeEmitter::emitCastSint32Sint64(SourceInfo L) {
7513 return emitOp<>(OP_CastSint32Sint64, L);
7514}
7515bool ByteCodeEmitter::emitCastSint32Bool(SourceInfo L) {
7516 return emitOp<>(OP_CastSint32Bool, L);
7517}
7518bool ByteCodeEmitter::emitCastUint64Uint8(SourceInfo L) {
7519 return emitOp<>(OP_CastUint64Uint8, L);
7520}
7521bool ByteCodeEmitter::emitCastUint64Sint8(SourceInfo L) {
7522 return emitOp<>(OP_CastUint64Sint8, L);
7523}
7524bool ByteCodeEmitter::emitCastUint64Uint16(SourceInfo L) {
7525 return emitOp<>(OP_CastUint64Uint16, L);
7526}
7527bool ByteCodeEmitter::emitCastUint64Sint16(SourceInfo L) {
7528 return emitOp<>(OP_CastUint64Sint16, L);
7529}
7530bool ByteCodeEmitter::emitCastUint64Uint32(SourceInfo L) {
7531 return emitOp<>(OP_CastUint64Uint32, L);
7532}
7533bool ByteCodeEmitter::emitCastUint64Sint32(SourceInfo L) {
7534 return emitOp<>(OP_CastUint64Sint32, L);
7535}
7536bool ByteCodeEmitter::emitCastUint64Uint64(SourceInfo L) {
7537 return emitOp<>(OP_CastUint64Uint64, L);
7538}
7539bool ByteCodeEmitter::emitCastUint64Sint64(SourceInfo L) {
7540 return emitOp<>(OP_CastUint64Sint64, L);
7541}
7542bool ByteCodeEmitter::emitCastUint64Bool(SourceInfo L) {
7543 return emitOp<>(OP_CastUint64Bool, L);
7544}
7545bool ByteCodeEmitter::emitCastSint64Uint8(SourceInfo L) {
7546 return emitOp<>(OP_CastSint64Uint8, L);
7547}
7548bool ByteCodeEmitter::emitCastSint64Sint8(SourceInfo L) {
7549 return emitOp<>(OP_CastSint64Sint8, L);
7550}
7551bool ByteCodeEmitter::emitCastSint64Uint16(SourceInfo L) {
7552 return emitOp<>(OP_CastSint64Uint16, L);
7553}
7554bool ByteCodeEmitter::emitCastSint64Sint16(SourceInfo L) {
7555 return emitOp<>(OP_CastSint64Sint16, L);
7556}
7557bool ByteCodeEmitter::emitCastSint64Uint32(SourceInfo L) {
7558 return emitOp<>(OP_CastSint64Uint32, L);
7559}
7560bool ByteCodeEmitter::emitCastSint64Sint32(SourceInfo L) {
7561 return emitOp<>(OP_CastSint64Sint32, L);
7562}
7563bool ByteCodeEmitter::emitCastSint64Uint64(SourceInfo L) {
7564 return emitOp<>(OP_CastSint64Uint64, L);
7565}
7566bool ByteCodeEmitter::emitCastSint64Sint64(SourceInfo L) {
7567 return emitOp<>(OP_CastSint64Sint64, L);
7568}
7569bool ByteCodeEmitter::emitCastSint64Bool(SourceInfo L) {
7570 return emitOp<>(OP_CastSint64Bool, L);
7571}
7572bool ByteCodeEmitter::emitCastBoolUint8(SourceInfo L) {
7573 return emitOp<>(OP_CastBoolUint8, L);
7574}
7575bool ByteCodeEmitter::emitCastBoolSint8(SourceInfo L) {
7576 return emitOp<>(OP_CastBoolSint8, L);
7577}
7578bool ByteCodeEmitter::emitCastBoolUint16(SourceInfo L) {
7579 return emitOp<>(OP_CastBoolUint16, L);
7580}
7581bool ByteCodeEmitter::emitCastBoolSint16(SourceInfo L) {
7582 return emitOp<>(OP_CastBoolSint16, L);
7583}
7584bool ByteCodeEmitter::emitCastBoolUint32(SourceInfo L) {
7585 return emitOp<>(OP_CastBoolUint32, L);
7586}
7587bool ByteCodeEmitter::emitCastBoolSint32(SourceInfo L) {
7588 return emitOp<>(OP_CastBoolSint32, L);
7589}
7590bool ByteCodeEmitter::emitCastBoolUint64(SourceInfo L) {
7591 return emitOp<>(OP_CastBoolUint64, L);
7592}
7593bool ByteCodeEmitter::emitCastBoolSint64(SourceInfo L) {
7594 return emitOp<>(OP_CastBoolSint64, L);
7595}
7596bool ByteCodeEmitter::emitCastBoolBool(SourceInfo L) {
7597 return emitOp<>(OP_CastBoolBool, L);
7598}
7599bool ByteCodeEmitter::emitCastIntAPUint8(SourceInfo L) {
7600 return emitOp<>(OP_CastIntAPUint8, L);
7601}
7602bool ByteCodeEmitter::emitCastIntAPSint8(SourceInfo L) {
7603 return emitOp<>(OP_CastIntAPSint8, L);
7604}
7605bool ByteCodeEmitter::emitCastIntAPUint16(SourceInfo L) {
7606 return emitOp<>(OP_CastIntAPUint16, L);
7607}
7608bool ByteCodeEmitter::emitCastIntAPSint16(SourceInfo L) {
7609 return emitOp<>(OP_CastIntAPSint16, L);
7610}
7611bool ByteCodeEmitter::emitCastIntAPUint32(SourceInfo L) {
7612 return emitOp<>(OP_CastIntAPUint32, L);
7613}
7614bool ByteCodeEmitter::emitCastIntAPSint32(SourceInfo L) {
7615 return emitOp<>(OP_CastIntAPSint32, L);
7616}
7617bool ByteCodeEmitter::emitCastIntAPUint64(SourceInfo L) {
7618 return emitOp<>(OP_CastIntAPUint64, L);
7619}
7620bool ByteCodeEmitter::emitCastIntAPSint64(SourceInfo L) {
7621 return emitOp<>(OP_CastIntAPSint64, L);
7622}
7623bool ByteCodeEmitter::emitCastIntAPBool(SourceInfo L) {
7624 return emitOp<>(OP_CastIntAPBool, L);
7625}
7626bool ByteCodeEmitter::emitCastIntAPSUint8(SourceInfo L) {
7627 return emitOp<>(OP_CastIntAPSUint8, L);
7628}
7629bool ByteCodeEmitter::emitCastIntAPSSint8(SourceInfo L) {
7630 return emitOp<>(OP_CastIntAPSSint8, L);
7631}
7632bool ByteCodeEmitter::emitCastIntAPSUint16(SourceInfo L) {
7633 return emitOp<>(OP_CastIntAPSUint16, L);
7634}
7635bool ByteCodeEmitter::emitCastIntAPSSint16(SourceInfo L) {
7636 return emitOp<>(OP_CastIntAPSSint16, L);
7637}
7638bool ByteCodeEmitter::emitCastIntAPSUint32(SourceInfo L) {
7639 return emitOp<>(OP_CastIntAPSUint32, L);
7640}
7641bool ByteCodeEmitter::emitCastIntAPSSint32(SourceInfo L) {
7642 return emitOp<>(OP_CastIntAPSSint32, L);
7643}
7644bool ByteCodeEmitter::emitCastIntAPSUint64(SourceInfo L) {
7645 return emitOp<>(OP_CastIntAPSUint64, L);
7646}
7647bool ByteCodeEmitter::emitCastIntAPSSint64(SourceInfo L) {
7648 return emitOp<>(OP_CastIntAPSSint64, L);
7649}
7650bool ByteCodeEmitter::emitCastIntAPSBool(SourceInfo L) {
7651 return emitOp<>(OP_CastIntAPSBool, L);
7652}
7653bool ByteCodeEmitter::emitCastFixedPointUint8(SourceInfo L) {
7654 return emitOp<>(OP_CastFixedPointUint8, L);
7655}
7656bool ByteCodeEmitter::emitCastFixedPointSint8(SourceInfo L) {
7657 return emitOp<>(OP_CastFixedPointSint8, L);
7658}
7659bool ByteCodeEmitter::emitCastFixedPointUint16(SourceInfo L) {
7660 return emitOp<>(OP_CastFixedPointUint16, L);
7661}
7662bool ByteCodeEmitter::emitCastFixedPointSint16(SourceInfo L) {
7663 return emitOp<>(OP_CastFixedPointSint16, L);
7664}
7665bool ByteCodeEmitter::emitCastFixedPointUint32(SourceInfo L) {
7666 return emitOp<>(OP_CastFixedPointUint32, L);
7667}
7668bool ByteCodeEmitter::emitCastFixedPointSint32(SourceInfo L) {
7669 return emitOp<>(OP_CastFixedPointSint32, L);
7670}
7671bool ByteCodeEmitter::emitCastFixedPointUint64(SourceInfo L) {
7672 return emitOp<>(OP_CastFixedPointUint64, L);
7673}
7674bool ByteCodeEmitter::emitCastFixedPointSint64(SourceInfo L) {
7675 return emitOp<>(OP_CastFixedPointSint64, L);
7676}
7677bool ByteCodeEmitter::emitCastFixedPointBool(SourceInfo L) {
7678 return emitOp<>(OP_CastFixedPointBool, L);
7679}
7680#endif
7681#ifdef GET_EVAL_IMPL
7682bool EvalEmitter::emitCastUint8Uint8(SourceInfo L) {
7683 if (!isActive()) return true;
7684 CurrentSource = L;
7685 return Cast<PT_Uint8, PT_Uint8>(S, OpPC);
7686}
7687bool EvalEmitter::emitCastUint8Sint8(SourceInfo L) {
7688 if (!isActive()) return true;
7689 CurrentSource = L;
7690 return Cast<PT_Uint8, PT_Sint8>(S, OpPC);
7691}
7692bool EvalEmitter::emitCastUint8Uint16(SourceInfo L) {
7693 if (!isActive()) return true;
7694 CurrentSource = L;
7695 return Cast<PT_Uint8, PT_Uint16>(S, OpPC);
7696}
7697bool EvalEmitter::emitCastUint8Sint16(SourceInfo L) {
7698 if (!isActive()) return true;
7699 CurrentSource = L;
7700 return Cast<PT_Uint8, PT_Sint16>(S, OpPC);
7701}
7702bool EvalEmitter::emitCastUint8Uint32(SourceInfo L) {
7703 if (!isActive()) return true;
7704 CurrentSource = L;
7705 return Cast<PT_Uint8, PT_Uint32>(S, OpPC);
7706}
7707bool EvalEmitter::emitCastUint8Sint32(SourceInfo L) {
7708 if (!isActive()) return true;
7709 CurrentSource = L;
7710 return Cast<PT_Uint8, PT_Sint32>(S, OpPC);
7711}
7712bool EvalEmitter::emitCastUint8Uint64(SourceInfo L) {
7713 if (!isActive()) return true;
7714 CurrentSource = L;
7715 return Cast<PT_Uint8, PT_Uint64>(S, OpPC);
7716}
7717bool EvalEmitter::emitCastUint8Sint64(SourceInfo L) {
7718 if (!isActive()) return true;
7719 CurrentSource = L;
7720 return Cast<PT_Uint8, PT_Sint64>(S, OpPC);
7721}
7722bool EvalEmitter::emitCastUint8Bool(SourceInfo L) {
7723 if (!isActive()) return true;
7724 CurrentSource = L;
7725 return Cast<PT_Uint8, PT_Bool>(S, OpPC);
7726}
7727bool EvalEmitter::emitCastSint8Uint8(SourceInfo L) {
7728 if (!isActive()) return true;
7729 CurrentSource = L;
7730 return Cast<PT_Sint8, PT_Uint8>(S, OpPC);
7731}
7732bool EvalEmitter::emitCastSint8Sint8(SourceInfo L) {
7733 if (!isActive()) return true;
7734 CurrentSource = L;
7735 return Cast<PT_Sint8, PT_Sint8>(S, OpPC);
7736}
7737bool EvalEmitter::emitCastSint8Uint16(SourceInfo L) {
7738 if (!isActive()) return true;
7739 CurrentSource = L;
7740 return Cast<PT_Sint8, PT_Uint16>(S, OpPC);
7741}
7742bool EvalEmitter::emitCastSint8Sint16(SourceInfo L) {
7743 if (!isActive()) return true;
7744 CurrentSource = L;
7745 return Cast<PT_Sint8, PT_Sint16>(S, OpPC);
7746}
7747bool EvalEmitter::emitCastSint8Uint32(SourceInfo L) {
7748 if (!isActive()) return true;
7749 CurrentSource = L;
7750 return Cast<PT_Sint8, PT_Uint32>(S, OpPC);
7751}
7752bool EvalEmitter::emitCastSint8Sint32(SourceInfo L) {
7753 if (!isActive()) return true;
7754 CurrentSource = L;
7755 return Cast<PT_Sint8, PT_Sint32>(S, OpPC);
7756}
7757bool EvalEmitter::emitCastSint8Uint64(SourceInfo L) {
7758 if (!isActive()) return true;
7759 CurrentSource = L;
7760 return Cast<PT_Sint8, PT_Uint64>(S, OpPC);
7761}
7762bool EvalEmitter::emitCastSint8Sint64(SourceInfo L) {
7763 if (!isActive()) return true;
7764 CurrentSource = L;
7765 return Cast<PT_Sint8, PT_Sint64>(S, OpPC);
7766}
7767bool EvalEmitter::emitCastSint8Bool(SourceInfo L) {
7768 if (!isActive()) return true;
7769 CurrentSource = L;
7770 return Cast<PT_Sint8, PT_Bool>(S, OpPC);
7771}
7772bool EvalEmitter::emitCastUint16Uint8(SourceInfo L) {
7773 if (!isActive()) return true;
7774 CurrentSource = L;
7775 return Cast<PT_Uint16, PT_Uint8>(S, OpPC);
7776}
7777bool EvalEmitter::emitCastUint16Sint8(SourceInfo L) {
7778 if (!isActive()) return true;
7779 CurrentSource = L;
7780 return Cast<PT_Uint16, PT_Sint8>(S, OpPC);
7781}
7782bool EvalEmitter::emitCastUint16Uint16(SourceInfo L) {
7783 if (!isActive()) return true;
7784 CurrentSource = L;
7785 return Cast<PT_Uint16, PT_Uint16>(S, OpPC);
7786}
7787bool EvalEmitter::emitCastUint16Sint16(SourceInfo L) {
7788 if (!isActive()) return true;
7789 CurrentSource = L;
7790 return Cast<PT_Uint16, PT_Sint16>(S, OpPC);
7791}
7792bool EvalEmitter::emitCastUint16Uint32(SourceInfo L) {
7793 if (!isActive()) return true;
7794 CurrentSource = L;
7795 return Cast<PT_Uint16, PT_Uint32>(S, OpPC);
7796}
7797bool EvalEmitter::emitCastUint16Sint32(SourceInfo L) {
7798 if (!isActive()) return true;
7799 CurrentSource = L;
7800 return Cast<PT_Uint16, PT_Sint32>(S, OpPC);
7801}
7802bool EvalEmitter::emitCastUint16Uint64(SourceInfo L) {
7803 if (!isActive()) return true;
7804 CurrentSource = L;
7805 return Cast<PT_Uint16, PT_Uint64>(S, OpPC);
7806}
7807bool EvalEmitter::emitCastUint16Sint64(SourceInfo L) {
7808 if (!isActive()) return true;
7809 CurrentSource = L;
7810 return Cast<PT_Uint16, PT_Sint64>(S, OpPC);
7811}
7812bool EvalEmitter::emitCastUint16Bool(SourceInfo L) {
7813 if (!isActive()) return true;
7814 CurrentSource = L;
7815 return Cast<PT_Uint16, PT_Bool>(S, OpPC);
7816}
7817bool EvalEmitter::emitCastSint16Uint8(SourceInfo L) {
7818 if (!isActive()) return true;
7819 CurrentSource = L;
7820 return Cast<PT_Sint16, PT_Uint8>(S, OpPC);
7821}
7822bool EvalEmitter::emitCastSint16Sint8(SourceInfo L) {
7823 if (!isActive()) return true;
7824 CurrentSource = L;
7825 return Cast<PT_Sint16, PT_Sint8>(S, OpPC);
7826}
7827bool EvalEmitter::emitCastSint16Uint16(SourceInfo L) {
7828 if (!isActive()) return true;
7829 CurrentSource = L;
7830 return Cast<PT_Sint16, PT_Uint16>(S, OpPC);
7831}
7832bool EvalEmitter::emitCastSint16Sint16(SourceInfo L) {
7833 if (!isActive()) return true;
7834 CurrentSource = L;
7835 return Cast<PT_Sint16, PT_Sint16>(S, OpPC);
7836}
7837bool EvalEmitter::emitCastSint16Uint32(SourceInfo L) {
7838 if (!isActive()) return true;
7839 CurrentSource = L;
7840 return Cast<PT_Sint16, PT_Uint32>(S, OpPC);
7841}
7842bool EvalEmitter::emitCastSint16Sint32(SourceInfo L) {
7843 if (!isActive()) return true;
7844 CurrentSource = L;
7845 return Cast<PT_Sint16, PT_Sint32>(S, OpPC);
7846}
7847bool EvalEmitter::emitCastSint16Uint64(SourceInfo L) {
7848 if (!isActive()) return true;
7849 CurrentSource = L;
7850 return Cast<PT_Sint16, PT_Uint64>(S, OpPC);
7851}
7852bool EvalEmitter::emitCastSint16Sint64(SourceInfo L) {
7853 if (!isActive()) return true;
7854 CurrentSource = L;
7855 return Cast<PT_Sint16, PT_Sint64>(S, OpPC);
7856}
7857bool EvalEmitter::emitCastSint16Bool(SourceInfo L) {
7858 if (!isActive()) return true;
7859 CurrentSource = L;
7860 return Cast<PT_Sint16, PT_Bool>(S, OpPC);
7861}
7862bool EvalEmitter::emitCastUint32Uint8(SourceInfo L) {
7863 if (!isActive()) return true;
7864 CurrentSource = L;
7865 return Cast<PT_Uint32, PT_Uint8>(S, OpPC);
7866}
7867bool EvalEmitter::emitCastUint32Sint8(SourceInfo L) {
7868 if (!isActive()) return true;
7869 CurrentSource = L;
7870 return Cast<PT_Uint32, PT_Sint8>(S, OpPC);
7871}
7872bool EvalEmitter::emitCastUint32Uint16(SourceInfo L) {
7873 if (!isActive()) return true;
7874 CurrentSource = L;
7875 return Cast<PT_Uint32, PT_Uint16>(S, OpPC);
7876}
7877bool EvalEmitter::emitCastUint32Sint16(SourceInfo L) {
7878 if (!isActive()) return true;
7879 CurrentSource = L;
7880 return Cast<PT_Uint32, PT_Sint16>(S, OpPC);
7881}
7882bool EvalEmitter::emitCastUint32Uint32(SourceInfo L) {
7883 if (!isActive()) return true;
7884 CurrentSource = L;
7885 return Cast<PT_Uint32, PT_Uint32>(S, OpPC);
7886}
7887bool EvalEmitter::emitCastUint32Sint32(SourceInfo L) {
7888 if (!isActive()) return true;
7889 CurrentSource = L;
7890 return Cast<PT_Uint32, PT_Sint32>(S, OpPC);
7891}
7892bool EvalEmitter::emitCastUint32Uint64(SourceInfo L) {
7893 if (!isActive()) return true;
7894 CurrentSource = L;
7895 return Cast<PT_Uint32, PT_Uint64>(S, OpPC);
7896}
7897bool EvalEmitter::emitCastUint32Sint64(SourceInfo L) {
7898 if (!isActive()) return true;
7899 CurrentSource = L;
7900 return Cast<PT_Uint32, PT_Sint64>(S, OpPC);
7901}
7902bool EvalEmitter::emitCastUint32Bool(SourceInfo L) {
7903 if (!isActive()) return true;
7904 CurrentSource = L;
7905 return Cast<PT_Uint32, PT_Bool>(S, OpPC);
7906}
7907bool EvalEmitter::emitCastSint32Uint8(SourceInfo L) {
7908 if (!isActive()) return true;
7909 CurrentSource = L;
7910 return Cast<PT_Sint32, PT_Uint8>(S, OpPC);
7911}
7912bool EvalEmitter::emitCastSint32Sint8(SourceInfo L) {
7913 if (!isActive()) return true;
7914 CurrentSource = L;
7915 return Cast<PT_Sint32, PT_Sint8>(S, OpPC);
7916}
7917bool EvalEmitter::emitCastSint32Uint16(SourceInfo L) {
7918 if (!isActive()) return true;
7919 CurrentSource = L;
7920 return Cast<PT_Sint32, PT_Uint16>(S, OpPC);
7921}
7922bool EvalEmitter::emitCastSint32Sint16(SourceInfo L) {
7923 if (!isActive()) return true;
7924 CurrentSource = L;
7925 return Cast<PT_Sint32, PT_Sint16>(S, OpPC);
7926}
7927bool EvalEmitter::emitCastSint32Uint32(SourceInfo L) {
7928 if (!isActive()) return true;
7929 CurrentSource = L;
7930 return Cast<PT_Sint32, PT_Uint32>(S, OpPC);
7931}
7932bool EvalEmitter::emitCastSint32Sint32(SourceInfo L) {
7933 if (!isActive()) return true;
7934 CurrentSource = L;
7935 return Cast<PT_Sint32, PT_Sint32>(S, OpPC);
7936}
7937bool EvalEmitter::emitCastSint32Uint64(SourceInfo L) {
7938 if (!isActive()) return true;
7939 CurrentSource = L;
7940 return Cast<PT_Sint32, PT_Uint64>(S, OpPC);
7941}
7942bool EvalEmitter::emitCastSint32Sint64(SourceInfo L) {
7943 if (!isActive()) return true;
7944 CurrentSource = L;
7945 return Cast<PT_Sint32, PT_Sint64>(S, OpPC);
7946}
7947bool EvalEmitter::emitCastSint32Bool(SourceInfo L) {
7948 if (!isActive()) return true;
7949 CurrentSource = L;
7950 return Cast<PT_Sint32, PT_Bool>(S, OpPC);
7951}
7952bool EvalEmitter::emitCastUint64Uint8(SourceInfo L) {
7953 if (!isActive()) return true;
7954 CurrentSource = L;
7955 return Cast<PT_Uint64, PT_Uint8>(S, OpPC);
7956}
7957bool EvalEmitter::emitCastUint64Sint8(SourceInfo L) {
7958 if (!isActive()) return true;
7959 CurrentSource = L;
7960 return Cast<PT_Uint64, PT_Sint8>(S, OpPC);
7961}
7962bool EvalEmitter::emitCastUint64Uint16(SourceInfo L) {
7963 if (!isActive()) return true;
7964 CurrentSource = L;
7965 return Cast<PT_Uint64, PT_Uint16>(S, OpPC);
7966}
7967bool EvalEmitter::emitCastUint64Sint16(SourceInfo L) {
7968 if (!isActive()) return true;
7969 CurrentSource = L;
7970 return Cast<PT_Uint64, PT_Sint16>(S, OpPC);
7971}
7972bool EvalEmitter::emitCastUint64Uint32(SourceInfo L) {
7973 if (!isActive()) return true;
7974 CurrentSource = L;
7975 return Cast<PT_Uint64, PT_Uint32>(S, OpPC);
7976}
7977bool EvalEmitter::emitCastUint64Sint32(SourceInfo L) {
7978 if (!isActive()) return true;
7979 CurrentSource = L;
7980 return Cast<PT_Uint64, PT_Sint32>(S, OpPC);
7981}
7982bool EvalEmitter::emitCastUint64Uint64(SourceInfo L) {
7983 if (!isActive()) return true;
7984 CurrentSource = L;
7985 return Cast<PT_Uint64, PT_Uint64>(S, OpPC);
7986}
7987bool EvalEmitter::emitCastUint64Sint64(SourceInfo L) {
7988 if (!isActive()) return true;
7989 CurrentSource = L;
7990 return Cast<PT_Uint64, PT_Sint64>(S, OpPC);
7991}
7992bool EvalEmitter::emitCastUint64Bool(SourceInfo L) {
7993 if (!isActive()) return true;
7994 CurrentSource = L;
7995 return Cast<PT_Uint64, PT_Bool>(S, OpPC);
7996}
7997bool EvalEmitter::emitCastSint64Uint8(SourceInfo L) {
7998 if (!isActive()) return true;
7999 CurrentSource = L;
8000 return Cast<PT_Sint64, PT_Uint8>(S, OpPC);
8001}
8002bool EvalEmitter::emitCastSint64Sint8(SourceInfo L) {
8003 if (!isActive()) return true;
8004 CurrentSource = L;
8005 return Cast<PT_Sint64, PT_Sint8>(S, OpPC);
8006}
8007bool EvalEmitter::emitCastSint64Uint16(SourceInfo L) {
8008 if (!isActive()) return true;
8009 CurrentSource = L;
8010 return Cast<PT_Sint64, PT_Uint16>(S, OpPC);
8011}
8012bool EvalEmitter::emitCastSint64Sint16(SourceInfo L) {
8013 if (!isActive()) return true;
8014 CurrentSource = L;
8015 return Cast<PT_Sint64, PT_Sint16>(S, OpPC);
8016}
8017bool EvalEmitter::emitCastSint64Uint32(SourceInfo L) {
8018 if (!isActive()) return true;
8019 CurrentSource = L;
8020 return Cast<PT_Sint64, PT_Uint32>(S, OpPC);
8021}
8022bool EvalEmitter::emitCastSint64Sint32(SourceInfo L) {
8023 if (!isActive()) return true;
8024 CurrentSource = L;
8025 return Cast<PT_Sint64, PT_Sint32>(S, OpPC);
8026}
8027bool EvalEmitter::emitCastSint64Uint64(SourceInfo L) {
8028 if (!isActive()) return true;
8029 CurrentSource = L;
8030 return Cast<PT_Sint64, PT_Uint64>(S, OpPC);
8031}
8032bool EvalEmitter::emitCastSint64Sint64(SourceInfo L) {
8033 if (!isActive()) return true;
8034 CurrentSource = L;
8035 return Cast<PT_Sint64, PT_Sint64>(S, OpPC);
8036}
8037bool EvalEmitter::emitCastSint64Bool(SourceInfo L) {
8038 if (!isActive()) return true;
8039 CurrentSource = L;
8040 return Cast<PT_Sint64, PT_Bool>(S, OpPC);
8041}
8042bool EvalEmitter::emitCastBoolUint8(SourceInfo L) {
8043 if (!isActive()) return true;
8044 CurrentSource = L;
8045 return Cast<PT_Bool, PT_Uint8>(S, OpPC);
8046}
8047bool EvalEmitter::emitCastBoolSint8(SourceInfo L) {
8048 if (!isActive()) return true;
8049 CurrentSource = L;
8050 return Cast<PT_Bool, PT_Sint8>(S, OpPC);
8051}
8052bool EvalEmitter::emitCastBoolUint16(SourceInfo L) {
8053 if (!isActive()) return true;
8054 CurrentSource = L;
8055 return Cast<PT_Bool, PT_Uint16>(S, OpPC);
8056}
8057bool EvalEmitter::emitCastBoolSint16(SourceInfo L) {
8058 if (!isActive()) return true;
8059 CurrentSource = L;
8060 return Cast<PT_Bool, PT_Sint16>(S, OpPC);
8061}
8062bool EvalEmitter::emitCastBoolUint32(SourceInfo L) {
8063 if (!isActive()) return true;
8064 CurrentSource = L;
8065 return Cast<PT_Bool, PT_Uint32>(S, OpPC);
8066}
8067bool EvalEmitter::emitCastBoolSint32(SourceInfo L) {
8068 if (!isActive()) return true;
8069 CurrentSource = L;
8070 return Cast<PT_Bool, PT_Sint32>(S, OpPC);
8071}
8072bool EvalEmitter::emitCastBoolUint64(SourceInfo L) {
8073 if (!isActive()) return true;
8074 CurrentSource = L;
8075 return Cast<PT_Bool, PT_Uint64>(S, OpPC);
8076}
8077bool EvalEmitter::emitCastBoolSint64(SourceInfo L) {
8078 if (!isActive()) return true;
8079 CurrentSource = L;
8080 return Cast<PT_Bool, PT_Sint64>(S, OpPC);
8081}
8082bool EvalEmitter::emitCastBoolBool(SourceInfo L) {
8083 if (!isActive()) return true;
8084 CurrentSource = L;
8085 return Cast<PT_Bool, PT_Bool>(S, OpPC);
8086}
8087bool EvalEmitter::emitCastIntAPUint8(SourceInfo L) {
8088 if (!isActive()) return true;
8089 CurrentSource = L;
8090 return Cast<PT_IntAP, PT_Uint8>(S, OpPC);
8091}
8092bool EvalEmitter::emitCastIntAPSint8(SourceInfo L) {
8093 if (!isActive()) return true;
8094 CurrentSource = L;
8095 return Cast<PT_IntAP, PT_Sint8>(S, OpPC);
8096}
8097bool EvalEmitter::emitCastIntAPUint16(SourceInfo L) {
8098 if (!isActive()) return true;
8099 CurrentSource = L;
8100 return Cast<PT_IntAP, PT_Uint16>(S, OpPC);
8101}
8102bool EvalEmitter::emitCastIntAPSint16(SourceInfo L) {
8103 if (!isActive()) return true;
8104 CurrentSource = L;
8105 return Cast<PT_IntAP, PT_Sint16>(S, OpPC);
8106}
8107bool EvalEmitter::emitCastIntAPUint32(SourceInfo L) {
8108 if (!isActive()) return true;
8109 CurrentSource = L;
8110 return Cast<PT_IntAP, PT_Uint32>(S, OpPC);
8111}
8112bool EvalEmitter::emitCastIntAPSint32(SourceInfo L) {
8113 if (!isActive()) return true;
8114 CurrentSource = L;
8115 return Cast<PT_IntAP, PT_Sint32>(S, OpPC);
8116}
8117bool EvalEmitter::emitCastIntAPUint64(SourceInfo L) {
8118 if (!isActive()) return true;
8119 CurrentSource = L;
8120 return Cast<PT_IntAP, PT_Uint64>(S, OpPC);
8121}
8122bool EvalEmitter::emitCastIntAPSint64(SourceInfo L) {
8123 if (!isActive()) return true;
8124 CurrentSource = L;
8125 return Cast<PT_IntAP, PT_Sint64>(S, OpPC);
8126}
8127bool EvalEmitter::emitCastIntAPBool(SourceInfo L) {
8128 if (!isActive()) return true;
8129 CurrentSource = L;
8130 return Cast<PT_IntAP, PT_Bool>(S, OpPC);
8131}
8132bool EvalEmitter::emitCastIntAPSUint8(SourceInfo L) {
8133 if (!isActive()) return true;
8134 CurrentSource = L;
8135 return Cast<PT_IntAPS, PT_Uint8>(S, OpPC);
8136}
8137bool EvalEmitter::emitCastIntAPSSint8(SourceInfo L) {
8138 if (!isActive()) return true;
8139 CurrentSource = L;
8140 return Cast<PT_IntAPS, PT_Sint8>(S, OpPC);
8141}
8142bool EvalEmitter::emitCastIntAPSUint16(SourceInfo L) {
8143 if (!isActive()) return true;
8144 CurrentSource = L;
8145 return Cast<PT_IntAPS, PT_Uint16>(S, OpPC);
8146}
8147bool EvalEmitter::emitCastIntAPSSint16(SourceInfo L) {
8148 if (!isActive()) return true;
8149 CurrentSource = L;
8150 return Cast<PT_IntAPS, PT_Sint16>(S, OpPC);
8151}
8152bool EvalEmitter::emitCastIntAPSUint32(SourceInfo L) {
8153 if (!isActive()) return true;
8154 CurrentSource = L;
8155 return Cast<PT_IntAPS, PT_Uint32>(S, OpPC);
8156}
8157bool EvalEmitter::emitCastIntAPSSint32(SourceInfo L) {
8158 if (!isActive()) return true;
8159 CurrentSource = L;
8160 return Cast<PT_IntAPS, PT_Sint32>(S, OpPC);
8161}
8162bool EvalEmitter::emitCastIntAPSUint64(SourceInfo L) {
8163 if (!isActive()) return true;
8164 CurrentSource = L;
8165 return Cast<PT_IntAPS, PT_Uint64>(S, OpPC);
8166}
8167bool EvalEmitter::emitCastIntAPSSint64(SourceInfo L) {
8168 if (!isActive()) return true;
8169 CurrentSource = L;
8170 return Cast<PT_IntAPS, PT_Sint64>(S, OpPC);
8171}
8172bool EvalEmitter::emitCastIntAPSBool(SourceInfo L) {
8173 if (!isActive()) return true;
8174 CurrentSource = L;
8175 return Cast<PT_IntAPS, PT_Bool>(S, OpPC);
8176}
8177bool EvalEmitter::emitCastFixedPointUint8(SourceInfo L) {
8178 if (!isActive()) return true;
8179 CurrentSource = L;
8180 return Cast<PT_FixedPoint, PT_Uint8>(S, OpPC);
8181}
8182bool EvalEmitter::emitCastFixedPointSint8(SourceInfo L) {
8183 if (!isActive()) return true;
8184 CurrentSource = L;
8185 return Cast<PT_FixedPoint, PT_Sint8>(S, OpPC);
8186}
8187bool EvalEmitter::emitCastFixedPointUint16(SourceInfo L) {
8188 if (!isActive()) return true;
8189 CurrentSource = L;
8190 return Cast<PT_FixedPoint, PT_Uint16>(S, OpPC);
8191}
8192bool EvalEmitter::emitCastFixedPointSint16(SourceInfo L) {
8193 if (!isActive()) return true;
8194 CurrentSource = L;
8195 return Cast<PT_FixedPoint, PT_Sint16>(S, OpPC);
8196}
8197bool EvalEmitter::emitCastFixedPointUint32(SourceInfo L) {
8198 if (!isActive()) return true;
8199 CurrentSource = L;
8200 return Cast<PT_FixedPoint, PT_Uint32>(S, OpPC);
8201}
8202bool EvalEmitter::emitCastFixedPointSint32(SourceInfo L) {
8203 if (!isActive()) return true;
8204 CurrentSource = L;
8205 return Cast<PT_FixedPoint, PT_Sint32>(S, OpPC);
8206}
8207bool EvalEmitter::emitCastFixedPointUint64(SourceInfo L) {
8208 if (!isActive()) return true;
8209 CurrentSource = L;
8210 return Cast<PT_FixedPoint, PT_Uint64>(S, OpPC);
8211}
8212bool EvalEmitter::emitCastFixedPointSint64(SourceInfo L) {
8213 if (!isActive()) return true;
8214 CurrentSource = L;
8215 return Cast<PT_FixedPoint, PT_Sint64>(S, OpPC);
8216}
8217bool EvalEmitter::emitCastFixedPointBool(SourceInfo L) {
8218 if (!isActive()) return true;
8219 CurrentSource = L;
8220 return Cast<PT_FixedPoint, PT_Bool>(S, OpPC);
8221}
8222#endif
8223#ifdef GET_OPCODE_NAMES
8224OP_CastAPSint8,
8225OP_CastAPUint8,
8226OP_CastAPSint16,
8227OP_CastAPUint16,
8228OP_CastAPSint32,
8229OP_CastAPUint32,
8230OP_CastAPSint64,
8231OP_CastAPUint64,
8232OP_CastAPIntAP,
8233OP_CastAPIntAPS,
8234OP_CastAPBool,
8235OP_CastAPFixedPoint,
8236#endif
8237#ifdef GET_INTERPFN_LIST
8238&Interp_CastAPSint8,
8239&Interp_CastAPUint8,
8240&Interp_CastAPSint16,
8241&Interp_CastAPUint16,
8242&Interp_CastAPSint32,
8243&Interp_CastAPUint32,
8244&Interp_CastAPSint64,
8245&Interp_CastAPUint64,
8246&Interp_CastAPIntAP,
8247&Interp_CastAPIntAPS,
8248&Interp_CastAPBool,
8249&Interp_CastAPFixedPoint,
8250#endif
8251#ifdef GET_INTERPFN_DISPATCHERS
8252PRESERVE_NONE
8253static bool Interp_CastAPSint8(InterpState &S, CodePtr &PC) {
8254 {
8255 CodePtr OpPC = PC;
8256 const auto V0 = ReadArg<uint32_t>(S, PC);
8257 if (!CastAP<PT_Sint8>(S, OpPC, V0)) return false;
8258 }
8259#if USE_TAILCALLS
8260 MUSTTAIL return InterpNext(S, PC);
8261#else
8262 return true;
8263#endif
8264}
8265PRESERVE_NONE
8266static bool Interp_CastAPUint8(InterpState &S, CodePtr &PC) {
8267 {
8268 CodePtr OpPC = PC;
8269 const auto V0 = ReadArg<uint32_t>(S, PC);
8270 if (!CastAP<PT_Uint8>(S, OpPC, V0)) return false;
8271 }
8272#if USE_TAILCALLS
8273 MUSTTAIL return InterpNext(S, PC);
8274#else
8275 return true;
8276#endif
8277}
8278PRESERVE_NONE
8279static bool Interp_CastAPSint16(InterpState &S, CodePtr &PC) {
8280 {
8281 CodePtr OpPC = PC;
8282 const auto V0 = ReadArg<uint32_t>(S, PC);
8283 if (!CastAP<PT_Sint16>(S, OpPC, V0)) return false;
8284 }
8285#if USE_TAILCALLS
8286 MUSTTAIL return InterpNext(S, PC);
8287#else
8288 return true;
8289#endif
8290}
8291PRESERVE_NONE
8292static bool Interp_CastAPUint16(InterpState &S, CodePtr &PC) {
8293 {
8294 CodePtr OpPC = PC;
8295 const auto V0 = ReadArg<uint32_t>(S, PC);
8296 if (!CastAP<PT_Uint16>(S, OpPC, V0)) return false;
8297 }
8298#if USE_TAILCALLS
8299 MUSTTAIL return InterpNext(S, PC);
8300#else
8301 return true;
8302#endif
8303}
8304PRESERVE_NONE
8305static bool Interp_CastAPSint32(InterpState &S, CodePtr &PC) {
8306 {
8307 CodePtr OpPC = PC;
8308 const auto V0 = ReadArg<uint32_t>(S, PC);
8309 if (!CastAP<PT_Sint32>(S, OpPC, V0)) return false;
8310 }
8311#if USE_TAILCALLS
8312 MUSTTAIL return InterpNext(S, PC);
8313#else
8314 return true;
8315#endif
8316}
8317PRESERVE_NONE
8318static bool Interp_CastAPUint32(InterpState &S, CodePtr &PC) {
8319 {
8320 CodePtr OpPC = PC;
8321 const auto V0 = ReadArg<uint32_t>(S, PC);
8322 if (!CastAP<PT_Uint32>(S, OpPC, V0)) return false;
8323 }
8324#if USE_TAILCALLS
8325 MUSTTAIL return InterpNext(S, PC);
8326#else
8327 return true;
8328#endif
8329}
8330PRESERVE_NONE
8331static bool Interp_CastAPSint64(InterpState &S, CodePtr &PC) {
8332 {
8333 CodePtr OpPC = PC;
8334 const auto V0 = ReadArg<uint32_t>(S, PC);
8335 if (!CastAP<PT_Sint64>(S, OpPC, V0)) return false;
8336 }
8337#if USE_TAILCALLS
8338 MUSTTAIL return InterpNext(S, PC);
8339#else
8340 return true;
8341#endif
8342}
8343PRESERVE_NONE
8344static bool Interp_CastAPUint64(InterpState &S, CodePtr &PC) {
8345 {
8346 CodePtr OpPC = PC;
8347 const auto V0 = ReadArg<uint32_t>(S, PC);
8348 if (!CastAP<PT_Uint64>(S, OpPC, V0)) return false;
8349 }
8350#if USE_TAILCALLS
8351 MUSTTAIL return InterpNext(S, PC);
8352#else
8353 return true;
8354#endif
8355}
8356PRESERVE_NONE
8357static bool Interp_CastAPIntAP(InterpState &S, CodePtr &PC) {
8358 {
8359 CodePtr OpPC = PC;
8360 const auto V0 = ReadArg<uint32_t>(S, PC);
8361 if (!CastAP<PT_IntAP>(S, OpPC, V0)) return false;
8362 }
8363#if USE_TAILCALLS
8364 MUSTTAIL return InterpNext(S, PC);
8365#else
8366 return true;
8367#endif
8368}
8369PRESERVE_NONE
8370static bool Interp_CastAPIntAPS(InterpState &S, CodePtr &PC) {
8371 {
8372 CodePtr OpPC = PC;
8373 const auto V0 = ReadArg<uint32_t>(S, PC);
8374 if (!CastAP<PT_IntAPS>(S, OpPC, V0)) return false;
8375 }
8376#if USE_TAILCALLS
8377 MUSTTAIL return InterpNext(S, PC);
8378#else
8379 return true;
8380#endif
8381}
8382PRESERVE_NONE
8383static bool Interp_CastAPBool(InterpState &S, CodePtr &PC) {
8384 {
8385 CodePtr OpPC = PC;
8386 const auto V0 = ReadArg<uint32_t>(S, PC);
8387 if (!CastAP<PT_Bool>(S, OpPC, V0)) return false;
8388 }
8389#if USE_TAILCALLS
8390 MUSTTAIL return InterpNext(S, PC);
8391#else
8392 return true;
8393#endif
8394}
8395PRESERVE_NONE
8396static bool Interp_CastAPFixedPoint(InterpState &S, CodePtr &PC) {
8397 {
8398 CodePtr OpPC = PC;
8399 const auto V0 = ReadArg<uint32_t>(S, PC);
8400 if (!CastAP<PT_FixedPoint>(S, OpPC, V0)) return false;
8401 }
8402#if USE_TAILCALLS
8403 MUSTTAIL return InterpNext(S, PC);
8404#else
8405 return true;
8406#endif
8407}
8408#endif
8409#ifdef GET_DISASM
8410case OP_CastAPSint8:
8411 Text.Op = PrintName("CastAPSint8");
8412 Text.Args.push_back(printArg<uint32_t>(P, PC));
8413 break;
8414case OP_CastAPUint8:
8415 Text.Op = PrintName("CastAPUint8");
8416 Text.Args.push_back(printArg<uint32_t>(P, PC));
8417 break;
8418case OP_CastAPSint16:
8419 Text.Op = PrintName("CastAPSint16");
8420 Text.Args.push_back(printArg<uint32_t>(P, PC));
8421 break;
8422case OP_CastAPUint16:
8423 Text.Op = PrintName("CastAPUint16");
8424 Text.Args.push_back(printArg<uint32_t>(P, PC));
8425 break;
8426case OP_CastAPSint32:
8427 Text.Op = PrintName("CastAPSint32");
8428 Text.Args.push_back(printArg<uint32_t>(P, PC));
8429 break;
8430case OP_CastAPUint32:
8431 Text.Op = PrintName("CastAPUint32");
8432 Text.Args.push_back(printArg<uint32_t>(P, PC));
8433 break;
8434case OP_CastAPSint64:
8435 Text.Op = PrintName("CastAPSint64");
8436 Text.Args.push_back(printArg<uint32_t>(P, PC));
8437 break;
8438case OP_CastAPUint64:
8439 Text.Op = PrintName("CastAPUint64");
8440 Text.Args.push_back(printArg<uint32_t>(P, PC));
8441 break;
8442case OP_CastAPIntAP:
8443 Text.Op = PrintName("CastAPIntAP");
8444 Text.Args.push_back(printArg<uint32_t>(P, PC));
8445 break;
8446case OP_CastAPIntAPS:
8447 Text.Op = PrintName("CastAPIntAPS");
8448 Text.Args.push_back(printArg<uint32_t>(P, PC));
8449 break;
8450case OP_CastAPBool:
8451 Text.Op = PrintName("CastAPBool");
8452 Text.Args.push_back(printArg<uint32_t>(P, PC));
8453 break;
8454case OP_CastAPFixedPoint:
8455 Text.Op = PrintName("CastAPFixedPoint");
8456 Text.Args.push_back(printArg<uint32_t>(P, PC));
8457 break;
8458#endif
8459#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8460bool emitCastAPSint8( uint32_t , SourceInfo);
8461bool emitCastAPUint8( uint32_t , SourceInfo);
8462bool emitCastAPSint16( uint32_t , SourceInfo);
8463bool emitCastAPUint16( uint32_t , SourceInfo);
8464bool emitCastAPSint32( uint32_t , SourceInfo);
8465bool emitCastAPUint32( uint32_t , SourceInfo);
8466bool emitCastAPSint64( uint32_t , SourceInfo);
8467bool emitCastAPUint64( uint32_t , SourceInfo);
8468bool emitCastAPIntAP( uint32_t , SourceInfo);
8469bool emitCastAPIntAPS( uint32_t , SourceInfo);
8470bool emitCastAPBool( uint32_t , SourceInfo);
8471bool emitCastAPFixedPoint( uint32_t , SourceInfo);
8472#endif
8473#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8474[[nodiscard]] bool emitCastAP(PrimType, uint32_t, SourceInfo I);
8475#endif
8476#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
8477bool
8478#if defined(GET_EVAL_IMPL)
8479EvalEmitter
8480#else
8481ByteCodeEmitter
8482#endif
8483::emitCastAP(PrimType T0, uint32_t A0, SourceInfo I) {
8484 switch (T0) {
8485 case PT_Sint8:
8486 return emitCastAPSint8(A0, I);
8487 case PT_Uint8:
8488 return emitCastAPUint8(A0, I);
8489 case PT_Sint16:
8490 return emitCastAPSint16(A0, I);
8491 case PT_Uint16:
8492 return emitCastAPUint16(A0, I);
8493 case PT_Sint32:
8494 return emitCastAPSint32(A0, I);
8495 case PT_Uint32:
8496 return emitCastAPUint32(A0, I);
8497 case PT_Sint64:
8498 return emitCastAPSint64(A0, I);
8499 case PT_Uint64:
8500 return emitCastAPUint64(A0, I);
8501 case PT_IntAP:
8502 return emitCastAPIntAP(A0, I);
8503 case PT_IntAPS:
8504 return emitCastAPIntAPS(A0, I);
8505 case PT_Bool:
8506 return emitCastAPBool(A0, I);
8507 case PT_FixedPoint:
8508 return emitCastAPFixedPoint(A0, I);
8509 default: llvm_unreachable("invalid type: emitCastAP");
8510 }
8511 llvm_unreachable("invalid enum value");
8512}
8513#endif
8514#ifdef GET_LINK_IMPL
8515bool ByteCodeEmitter::emitCastAPSint8( uint32_t A0, SourceInfo L) {
8516 return emitOp<uint32_t>(OP_CastAPSint8, A0, L);
8517}
8518bool ByteCodeEmitter::emitCastAPUint8( uint32_t A0, SourceInfo L) {
8519 return emitOp<uint32_t>(OP_CastAPUint8, A0, L);
8520}
8521bool ByteCodeEmitter::emitCastAPSint16( uint32_t A0, SourceInfo L) {
8522 return emitOp<uint32_t>(OP_CastAPSint16, A0, L);
8523}
8524bool ByteCodeEmitter::emitCastAPUint16( uint32_t A0, SourceInfo L) {
8525 return emitOp<uint32_t>(OP_CastAPUint16, A0, L);
8526}
8527bool ByteCodeEmitter::emitCastAPSint32( uint32_t A0, SourceInfo L) {
8528 return emitOp<uint32_t>(OP_CastAPSint32, A0, L);
8529}
8530bool ByteCodeEmitter::emitCastAPUint32( uint32_t A0, SourceInfo L) {
8531 return emitOp<uint32_t>(OP_CastAPUint32, A0, L);
8532}
8533bool ByteCodeEmitter::emitCastAPSint64( uint32_t A0, SourceInfo L) {
8534 return emitOp<uint32_t>(OP_CastAPSint64, A0, L);
8535}
8536bool ByteCodeEmitter::emitCastAPUint64( uint32_t A0, SourceInfo L) {
8537 return emitOp<uint32_t>(OP_CastAPUint64, A0, L);
8538}
8539bool ByteCodeEmitter::emitCastAPIntAP( uint32_t A0, SourceInfo L) {
8540 return emitOp<uint32_t>(OP_CastAPIntAP, A0, L);
8541}
8542bool ByteCodeEmitter::emitCastAPIntAPS( uint32_t A0, SourceInfo L) {
8543 return emitOp<uint32_t>(OP_CastAPIntAPS, A0, L);
8544}
8545bool ByteCodeEmitter::emitCastAPBool( uint32_t A0, SourceInfo L) {
8546 return emitOp<uint32_t>(OP_CastAPBool, A0, L);
8547}
8548bool ByteCodeEmitter::emitCastAPFixedPoint( uint32_t A0, SourceInfo L) {
8549 return emitOp<uint32_t>(OP_CastAPFixedPoint, A0, L);
8550}
8551#endif
8552#ifdef GET_EVAL_IMPL
8553bool EvalEmitter::emitCastAPSint8( uint32_t A0, SourceInfo L) {
8554 if (!isActive()) return true;
8555 CurrentSource = L;
8556 return CastAP<PT_Sint8>(S, OpPC, A0);
8557}
8558bool EvalEmitter::emitCastAPUint8( uint32_t A0, SourceInfo L) {
8559 if (!isActive()) return true;
8560 CurrentSource = L;
8561 return CastAP<PT_Uint8>(S, OpPC, A0);
8562}
8563bool EvalEmitter::emitCastAPSint16( uint32_t A0, SourceInfo L) {
8564 if (!isActive()) return true;
8565 CurrentSource = L;
8566 return CastAP<PT_Sint16>(S, OpPC, A0);
8567}
8568bool EvalEmitter::emitCastAPUint16( uint32_t A0, SourceInfo L) {
8569 if (!isActive()) return true;
8570 CurrentSource = L;
8571 return CastAP<PT_Uint16>(S, OpPC, A0);
8572}
8573bool EvalEmitter::emitCastAPSint32( uint32_t A0, SourceInfo L) {
8574 if (!isActive()) return true;
8575 CurrentSource = L;
8576 return CastAP<PT_Sint32>(S, OpPC, A0);
8577}
8578bool EvalEmitter::emitCastAPUint32( uint32_t A0, SourceInfo L) {
8579 if (!isActive()) return true;
8580 CurrentSource = L;
8581 return CastAP<PT_Uint32>(S, OpPC, A0);
8582}
8583bool EvalEmitter::emitCastAPSint64( uint32_t A0, SourceInfo L) {
8584 if (!isActive()) return true;
8585 CurrentSource = L;
8586 return CastAP<PT_Sint64>(S, OpPC, A0);
8587}
8588bool EvalEmitter::emitCastAPUint64( uint32_t A0, SourceInfo L) {
8589 if (!isActive()) return true;
8590 CurrentSource = L;
8591 return CastAP<PT_Uint64>(S, OpPC, A0);
8592}
8593bool EvalEmitter::emitCastAPIntAP( uint32_t A0, SourceInfo L) {
8594 if (!isActive()) return true;
8595 CurrentSource = L;
8596 return CastAP<PT_IntAP>(S, OpPC, A0);
8597}
8598bool EvalEmitter::emitCastAPIntAPS( uint32_t A0, SourceInfo L) {
8599 if (!isActive()) return true;
8600 CurrentSource = L;
8601 return CastAP<PT_IntAPS>(S, OpPC, A0);
8602}
8603bool EvalEmitter::emitCastAPBool( uint32_t A0, SourceInfo L) {
8604 if (!isActive()) return true;
8605 CurrentSource = L;
8606 return CastAP<PT_Bool>(S, OpPC, A0);
8607}
8608bool EvalEmitter::emitCastAPFixedPoint( uint32_t A0, SourceInfo L) {
8609 if (!isActive()) return true;
8610 CurrentSource = L;
8611 return CastAP<PT_FixedPoint>(S, OpPC, A0);
8612}
8613#endif
8614#ifdef GET_OPCODE_NAMES
8615OP_CastAPSSint8,
8616OP_CastAPSUint8,
8617OP_CastAPSSint16,
8618OP_CastAPSUint16,
8619OP_CastAPSSint32,
8620OP_CastAPSUint32,
8621OP_CastAPSSint64,
8622OP_CastAPSUint64,
8623OP_CastAPSIntAP,
8624OP_CastAPSIntAPS,
8625OP_CastAPSBool,
8626OP_CastAPSFixedPoint,
8627#endif
8628#ifdef GET_INTERPFN_LIST
8629&Interp_CastAPSSint8,
8630&Interp_CastAPSUint8,
8631&Interp_CastAPSSint16,
8632&Interp_CastAPSUint16,
8633&Interp_CastAPSSint32,
8634&Interp_CastAPSUint32,
8635&Interp_CastAPSSint64,
8636&Interp_CastAPSUint64,
8637&Interp_CastAPSIntAP,
8638&Interp_CastAPSIntAPS,
8639&Interp_CastAPSBool,
8640&Interp_CastAPSFixedPoint,
8641#endif
8642#ifdef GET_INTERPFN_DISPATCHERS
8643PRESERVE_NONE
8644static bool Interp_CastAPSSint8(InterpState &S, CodePtr &PC) {
8645 {
8646 CodePtr OpPC = PC;
8647 const auto V0 = ReadArg<uint32_t>(S, PC);
8648 if (!CastAPS<PT_Sint8>(S, OpPC, V0)) return false;
8649 }
8650#if USE_TAILCALLS
8651 MUSTTAIL return InterpNext(S, PC);
8652#else
8653 return true;
8654#endif
8655}
8656PRESERVE_NONE
8657static bool Interp_CastAPSUint8(InterpState &S, CodePtr &PC) {
8658 {
8659 CodePtr OpPC = PC;
8660 const auto V0 = ReadArg<uint32_t>(S, PC);
8661 if (!CastAPS<PT_Uint8>(S, OpPC, V0)) return false;
8662 }
8663#if USE_TAILCALLS
8664 MUSTTAIL return InterpNext(S, PC);
8665#else
8666 return true;
8667#endif
8668}
8669PRESERVE_NONE
8670static bool Interp_CastAPSSint16(InterpState &S, CodePtr &PC) {
8671 {
8672 CodePtr OpPC = PC;
8673 const auto V0 = ReadArg<uint32_t>(S, PC);
8674 if (!CastAPS<PT_Sint16>(S, OpPC, V0)) return false;
8675 }
8676#if USE_TAILCALLS
8677 MUSTTAIL return InterpNext(S, PC);
8678#else
8679 return true;
8680#endif
8681}
8682PRESERVE_NONE
8683static bool Interp_CastAPSUint16(InterpState &S, CodePtr &PC) {
8684 {
8685 CodePtr OpPC = PC;
8686 const auto V0 = ReadArg<uint32_t>(S, PC);
8687 if (!CastAPS<PT_Uint16>(S, OpPC, V0)) return false;
8688 }
8689#if USE_TAILCALLS
8690 MUSTTAIL return InterpNext(S, PC);
8691#else
8692 return true;
8693#endif
8694}
8695PRESERVE_NONE
8696static bool Interp_CastAPSSint32(InterpState &S, CodePtr &PC) {
8697 {
8698 CodePtr OpPC = PC;
8699 const auto V0 = ReadArg<uint32_t>(S, PC);
8700 if (!CastAPS<PT_Sint32>(S, OpPC, V0)) return false;
8701 }
8702#if USE_TAILCALLS
8703 MUSTTAIL return InterpNext(S, PC);
8704#else
8705 return true;
8706#endif
8707}
8708PRESERVE_NONE
8709static bool Interp_CastAPSUint32(InterpState &S, CodePtr &PC) {
8710 {
8711 CodePtr OpPC = PC;
8712 const auto V0 = ReadArg<uint32_t>(S, PC);
8713 if (!CastAPS<PT_Uint32>(S, OpPC, V0)) return false;
8714 }
8715#if USE_TAILCALLS
8716 MUSTTAIL return InterpNext(S, PC);
8717#else
8718 return true;
8719#endif
8720}
8721PRESERVE_NONE
8722static bool Interp_CastAPSSint64(InterpState &S, CodePtr &PC) {
8723 {
8724 CodePtr OpPC = PC;
8725 const auto V0 = ReadArg<uint32_t>(S, PC);
8726 if (!CastAPS<PT_Sint64>(S, OpPC, V0)) return false;
8727 }
8728#if USE_TAILCALLS
8729 MUSTTAIL return InterpNext(S, PC);
8730#else
8731 return true;
8732#endif
8733}
8734PRESERVE_NONE
8735static bool Interp_CastAPSUint64(InterpState &S, CodePtr &PC) {
8736 {
8737 CodePtr OpPC = PC;
8738 const auto V0 = ReadArg<uint32_t>(S, PC);
8739 if (!CastAPS<PT_Uint64>(S, OpPC, V0)) return false;
8740 }
8741#if USE_TAILCALLS
8742 MUSTTAIL return InterpNext(S, PC);
8743#else
8744 return true;
8745#endif
8746}
8747PRESERVE_NONE
8748static bool Interp_CastAPSIntAP(InterpState &S, CodePtr &PC) {
8749 {
8750 CodePtr OpPC = PC;
8751 const auto V0 = ReadArg<uint32_t>(S, PC);
8752 if (!CastAPS<PT_IntAP>(S, OpPC, V0)) return false;
8753 }
8754#if USE_TAILCALLS
8755 MUSTTAIL return InterpNext(S, PC);
8756#else
8757 return true;
8758#endif
8759}
8760PRESERVE_NONE
8761static bool Interp_CastAPSIntAPS(InterpState &S, CodePtr &PC) {
8762 {
8763 CodePtr OpPC = PC;
8764 const auto V0 = ReadArg<uint32_t>(S, PC);
8765 if (!CastAPS<PT_IntAPS>(S, OpPC, V0)) return false;
8766 }
8767#if USE_TAILCALLS
8768 MUSTTAIL return InterpNext(S, PC);
8769#else
8770 return true;
8771#endif
8772}
8773PRESERVE_NONE
8774static bool Interp_CastAPSBool(InterpState &S, CodePtr &PC) {
8775 {
8776 CodePtr OpPC = PC;
8777 const auto V0 = ReadArg<uint32_t>(S, PC);
8778 if (!CastAPS<PT_Bool>(S, OpPC, V0)) return false;
8779 }
8780#if USE_TAILCALLS
8781 MUSTTAIL return InterpNext(S, PC);
8782#else
8783 return true;
8784#endif
8785}
8786PRESERVE_NONE
8787static bool Interp_CastAPSFixedPoint(InterpState &S, CodePtr &PC) {
8788 {
8789 CodePtr OpPC = PC;
8790 const auto V0 = ReadArg<uint32_t>(S, PC);
8791 if (!CastAPS<PT_FixedPoint>(S, OpPC, V0)) return false;
8792 }
8793#if USE_TAILCALLS
8794 MUSTTAIL return InterpNext(S, PC);
8795#else
8796 return true;
8797#endif
8798}
8799#endif
8800#ifdef GET_DISASM
8801case OP_CastAPSSint8:
8802 Text.Op = PrintName("CastAPSSint8");
8803 Text.Args.push_back(printArg<uint32_t>(P, PC));
8804 break;
8805case OP_CastAPSUint8:
8806 Text.Op = PrintName("CastAPSUint8");
8807 Text.Args.push_back(printArg<uint32_t>(P, PC));
8808 break;
8809case OP_CastAPSSint16:
8810 Text.Op = PrintName("CastAPSSint16");
8811 Text.Args.push_back(printArg<uint32_t>(P, PC));
8812 break;
8813case OP_CastAPSUint16:
8814 Text.Op = PrintName("CastAPSUint16");
8815 Text.Args.push_back(printArg<uint32_t>(P, PC));
8816 break;
8817case OP_CastAPSSint32:
8818 Text.Op = PrintName("CastAPSSint32");
8819 Text.Args.push_back(printArg<uint32_t>(P, PC));
8820 break;
8821case OP_CastAPSUint32:
8822 Text.Op = PrintName("CastAPSUint32");
8823 Text.Args.push_back(printArg<uint32_t>(P, PC));
8824 break;
8825case OP_CastAPSSint64:
8826 Text.Op = PrintName("CastAPSSint64");
8827 Text.Args.push_back(printArg<uint32_t>(P, PC));
8828 break;
8829case OP_CastAPSUint64:
8830 Text.Op = PrintName("CastAPSUint64");
8831 Text.Args.push_back(printArg<uint32_t>(P, PC));
8832 break;
8833case OP_CastAPSIntAP:
8834 Text.Op = PrintName("CastAPSIntAP");
8835 Text.Args.push_back(printArg<uint32_t>(P, PC));
8836 break;
8837case OP_CastAPSIntAPS:
8838 Text.Op = PrintName("CastAPSIntAPS");
8839 Text.Args.push_back(printArg<uint32_t>(P, PC));
8840 break;
8841case OP_CastAPSBool:
8842 Text.Op = PrintName("CastAPSBool");
8843 Text.Args.push_back(printArg<uint32_t>(P, PC));
8844 break;
8845case OP_CastAPSFixedPoint:
8846 Text.Op = PrintName("CastAPSFixedPoint");
8847 Text.Args.push_back(printArg<uint32_t>(P, PC));
8848 break;
8849#endif
8850#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8851bool emitCastAPSSint8( uint32_t , SourceInfo);
8852bool emitCastAPSUint8( uint32_t , SourceInfo);
8853bool emitCastAPSSint16( uint32_t , SourceInfo);
8854bool emitCastAPSUint16( uint32_t , SourceInfo);
8855bool emitCastAPSSint32( uint32_t , SourceInfo);
8856bool emitCastAPSUint32( uint32_t , SourceInfo);
8857bool emitCastAPSSint64( uint32_t , SourceInfo);
8858bool emitCastAPSUint64( uint32_t , SourceInfo);
8859bool emitCastAPSIntAP( uint32_t , SourceInfo);
8860bool emitCastAPSIntAPS( uint32_t , SourceInfo);
8861bool emitCastAPSBool( uint32_t , SourceInfo);
8862bool emitCastAPSFixedPoint( uint32_t , SourceInfo);
8863#endif
8864#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8865[[nodiscard]] bool emitCastAPS(PrimType, uint32_t, SourceInfo I);
8866#endif
8867#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
8868bool
8869#if defined(GET_EVAL_IMPL)
8870EvalEmitter
8871#else
8872ByteCodeEmitter
8873#endif
8874::emitCastAPS(PrimType T0, uint32_t A0, SourceInfo I) {
8875 switch (T0) {
8876 case PT_Sint8:
8877 return emitCastAPSSint8(A0, I);
8878 case PT_Uint8:
8879 return emitCastAPSUint8(A0, I);
8880 case PT_Sint16:
8881 return emitCastAPSSint16(A0, I);
8882 case PT_Uint16:
8883 return emitCastAPSUint16(A0, I);
8884 case PT_Sint32:
8885 return emitCastAPSSint32(A0, I);
8886 case PT_Uint32:
8887 return emitCastAPSUint32(A0, I);
8888 case PT_Sint64:
8889 return emitCastAPSSint64(A0, I);
8890 case PT_Uint64:
8891 return emitCastAPSUint64(A0, I);
8892 case PT_IntAP:
8893 return emitCastAPSIntAP(A0, I);
8894 case PT_IntAPS:
8895 return emitCastAPSIntAPS(A0, I);
8896 case PT_Bool:
8897 return emitCastAPSBool(A0, I);
8898 case PT_FixedPoint:
8899 return emitCastAPSFixedPoint(A0, I);
8900 default: llvm_unreachable("invalid type: emitCastAPS");
8901 }
8902 llvm_unreachable("invalid enum value");
8903}
8904#endif
8905#ifdef GET_LINK_IMPL
8906bool ByteCodeEmitter::emitCastAPSSint8( uint32_t A0, SourceInfo L) {
8907 return emitOp<uint32_t>(OP_CastAPSSint8, A0, L);
8908}
8909bool ByteCodeEmitter::emitCastAPSUint8( uint32_t A0, SourceInfo L) {
8910 return emitOp<uint32_t>(OP_CastAPSUint8, A0, L);
8911}
8912bool ByteCodeEmitter::emitCastAPSSint16( uint32_t A0, SourceInfo L) {
8913 return emitOp<uint32_t>(OP_CastAPSSint16, A0, L);
8914}
8915bool ByteCodeEmitter::emitCastAPSUint16( uint32_t A0, SourceInfo L) {
8916 return emitOp<uint32_t>(OP_CastAPSUint16, A0, L);
8917}
8918bool ByteCodeEmitter::emitCastAPSSint32( uint32_t A0, SourceInfo L) {
8919 return emitOp<uint32_t>(OP_CastAPSSint32, A0, L);
8920}
8921bool ByteCodeEmitter::emitCastAPSUint32( uint32_t A0, SourceInfo L) {
8922 return emitOp<uint32_t>(OP_CastAPSUint32, A0, L);
8923}
8924bool ByteCodeEmitter::emitCastAPSSint64( uint32_t A0, SourceInfo L) {
8925 return emitOp<uint32_t>(OP_CastAPSSint64, A0, L);
8926}
8927bool ByteCodeEmitter::emitCastAPSUint64( uint32_t A0, SourceInfo L) {
8928 return emitOp<uint32_t>(OP_CastAPSUint64, A0, L);
8929}
8930bool ByteCodeEmitter::emitCastAPSIntAP( uint32_t A0, SourceInfo L) {
8931 return emitOp<uint32_t>(OP_CastAPSIntAP, A0, L);
8932}
8933bool ByteCodeEmitter::emitCastAPSIntAPS( uint32_t A0, SourceInfo L) {
8934 return emitOp<uint32_t>(OP_CastAPSIntAPS, A0, L);
8935}
8936bool ByteCodeEmitter::emitCastAPSBool( uint32_t A0, SourceInfo L) {
8937 return emitOp<uint32_t>(OP_CastAPSBool, A0, L);
8938}
8939bool ByteCodeEmitter::emitCastAPSFixedPoint( uint32_t A0, SourceInfo L) {
8940 return emitOp<uint32_t>(OP_CastAPSFixedPoint, A0, L);
8941}
8942#endif
8943#ifdef GET_EVAL_IMPL
8944bool EvalEmitter::emitCastAPSSint8( uint32_t A0, SourceInfo L) {
8945 if (!isActive()) return true;
8946 CurrentSource = L;
8947 return CastAPS<PT_Sint8>(S, OpPC, A0);
8948}
8949bool EvalEmitter::emitCastAPSUint8( uint32_t A0, SourceInfo L) {
8950 if (!isActive()) return true;
8951 CurrentSource = L;
8952 return CastAPS<PT_Uint8>(S, OpPC, A0);
8953}
8954bool EvalEmitter::emitCastAPSSint16( uint32_t A0, SourceInfo L) {
8955 if (!isActive()) return true;
8956 CurrentSource = L;
8957 return CastAPS<PT_Sint16>(S, OpPC, A0);
8958}
8959bool EvalEmitter::emitCastAPSUint16( uint32_t A0, SourceInfo L) {
8960 if (!isActive()) return true;
8961 CurrentSource = L;
8962 return CastAPS<PT_Uint16>(S, OpPC, A0);
8963}
8964bool EvalEmitter::emitCastAPSSint32( uint32_t A0, SourceInfo L) {
8965 if (!isActive()) return true;
8966 CurrentSource = L;
8967 return CastAPS<PT_Sint32>(S, OpPC, A0);
8968}
8969bool EvalEmitter::emitCastAPSUint32( uint32_t A0, SourceInfo L) {
8970 if (!isActive()) return true;
8971 CurrentSource = L;
8972 return CastAPS<PT_Uint32>(S, OpPC, A0);
8973}
8974bool EvalEmitter::emitCastAPSSint64( uint32_t A0, SourceInfo L) {
8975 if (!isActive()) return true;
8976 CurrentSource = L;
8977 return CastAPS<PT_Sint64>(S, OpPC, A0);
8978}
8979bool EvalEmitter::emitCastAPSUint64( uint32_t A0, SourceInfo L) {
8980 if (!isActive()) return true;
8981 CurrentSource = L;
8982 return CastAPS<PT_Uint64>(S, OpPC, A0);
8983}
8984bool EvalEmitter::emitCastAPSIntAP( uint32_t A0, SourceInfo L) {
8985 if (!isActive()) return true;
8986 CurrentSource = L;
8987 return CastAPS<PT_IntAP>(S, OpPC, A0);
8988}
8989bool EvalEmitter::emitCastAPSIntAPS( uint32_t A0, SourceInfo L) {
8990 if (!isActive()) return true;
8991 CurrentSource = L;
8992 return CastAPS<PT_IntAPS>(S, OpPC, A0);
8993}
8994bool EvalEmitter::emitCastAPSBool( uint32_t A0, SourceInfo L) {
8995 if (!isActive()) return true;
8996 CurrentSource = L;
8997 return CastAPS<PT_Bool>(S, OpPC, A0);
8998}
8999bool EvalEmitter::emitCastAPSFixedPoint( uint32_t A0, SourceInfo L) {
9000 if (!isActive()) return true;
9001 CurrentSource = L;
9002 return CastAPS<PT_FixedPoint>(S, OpPC, A0);
9003}
9004#endif
9005#ifdef GET_OPCODE_NAMES
9006OP_CastFP,
9007#endif
9008#ifdef GET_INTERPFN_LIST
9009&Interp_CastFP,
9010#endif
9011#ifdef GET_INTERPFN_DISPATCHERS
9012PRESERVE_NONE
9013static bool Interp_CastFP(InterpState &S, CodePtr &PC) {
9014 {
9015 CodePtr OpPC = PC;
9016 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
9017 const auto V1 = ReadArg<llvm::RoundingMode>(S, PC);
9018 if (!CastFP(S, OpPC, V0, V1)) return false;
9019 }
9020#if USE_TAILCALLS
9021 MUSTTAIL return InterpNext(S, PC);
9022#else
9023 return true;
9024#endif
9025}
9026#endif
9027#ifdef GET_DISASM
9028case OP_CastFP:
9029 Text.Op = PrintName("CastFP");
9030 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
9031 Text.Args.push_back(printArg<llvm::RoundingMode>(P, PC));
9032 break;
9033#endif
9034#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9035bool emitCastFP( const llvm::fltSemantics * , llvm::RoundingMode , SourceInfo);
9036#endif
9037#ifdef GET_LINK_IMPL
9038bool ByteCodeEmitter::emitCastFP( const llvm::fltSemantics * A0, llvm::RoundingMode A1, SourceInfo L) {
9039 return emitOp<const llvm::fltSemantics *, llvm::RoundingMode>(OP_CastFP, A0, A1, L);
9040}
9041#endif
9042#ifdef GET_EVAL_IMPL
9043bool EvalEmitter::emitCastFP( const llvm::fltSemantics * A0, llvm::RoundingMode A1, SourceInfo L) {
9044 if (!isActive()) return true;
9045 CurrentSource = L;
9046 return CastFP(S, OpPC, A0, A1);
9047}
9048#endif
9049#ifdef GET_OPCODE_NAMES
9050OP_CastFixedPoint,
9051#endif
9052#ifdef GET_INTERPFN_LIST
9053&Interp_CastFixedPoint,
9054#endif
9055#ifdef GET_INTERPFN_DISPATCHERS
9056PRESERVE_NONE
9057static bool Interp_CastFixedPoint(InterpState &S, CodePtr &PC) {
9058 {
9059 CodePtr OpPC = PC;
9060 const auto V0 = ReadArg<uint32_t>(S, PC);
9061 if (!CastFixedPoint(S, OpPC, V0)) return false;
9062 }
9063#if USE_TAILCALLS
9064 MUSTTAIL return InterpNext(S, PC);
9065#else
9066 return true;
9067#endif
9068}
9069#endif
9070#ifdef GET_DISASM
9071case OP_CastFixedPoint:
9072 Text.Op = PrintName("CastFixedPoint");
9073 Text.Args.push_back(printArg<uint32_t>(P, PC));
9074 break;
9075#endif
9076#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9077bool emitCastFixedPoint( uint32_t , SourceInfo);
9078#endif
9079#ifdef GET_LINK_IMPL
9080bool ByteCodeEmitter::emitCastFixedPoint( uint32_t A0, SourceInfo L) {
9081 return emitOp<uint32_t>(OP_CastFixedPoint, A0, L);
9082}
9083#endif
9084#ifdef GET_EVAL_IMPL
9085bool EvalEmitter::emitCastFixedPoint( uint32_t A0, SourceInfo L) {
9086 if (!isActive()) return true;
9087 CurrentSource = L;
9088 return CastFixedPoint(S, OpPC, A0);
9089}
9090#endif
9091#ifdef GET_OPCODE_NAMES
9092OP_CastFixedPointFloating,
9093#endif
9094#ifdef GET_INTERPFN_LIST
9095&Interp_CastFixedPointFloating,
9096#endif
9097#ifdef GET_INTERPFN_DISPATCHERS
9098PRESERVE_NONE
9099static bool Interp_CastFixedPointFloating(InterpState &S, CodePtr &PC) {
9100 {
9101 CodePtr OpPC = PC;
9102 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
9103 if (!CastFixedPointFloating(S, OpPC, V0)) return false;
9104 }
9105#if USE_TAILCALLS
9106 MUSTTAIL return InterpNext(S, PC);
9107#else
9108 return true;
9109#endif
9110}
9111#endif
9112#ifdef GET_DISASM
9113case OP_CastFixedPointFloating:
9114 Text.Op = PrintName("CastFixedPointFloating");
9115 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
9116 break;
9117#endif
9118#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9119bool emitCastFixedPointFloating( const llvm::fltSemantics * , SourceInfo);
9120#endif
9121#ifdef GET_LINK_IMPL
9122bool ByteCodeEmitter::emitCastFixedPointFloating( const llvm::fltSemantics * A0, SourceInfo L) {
9123 return emitOp<const llvm::fltSemantics *>(OP_CastFixedPointFloating, A0, L);
9124}
9125#endif
9126#ifdef GET_EVAL_IMPL
9127bool EvalEmitter::emitCastFixedPointFloating( const llvm::fltSemantics * A0, SourceInfo L) {
9128 if (!isActive()) return true;
9129 CurrentSource = L;
9130 return CastFixedPointFloating(S, OpPC, A0);
9131}
9132#endif
9133#ifdef GET_OPCODE_NAMES
9134OP_CastFixedPointIntegralSint8,
9135OP_CastFixedPointIntegralUint8,
9136OP_CastFixedPointIntegralSint16,
9137OP_CastFixedPointIntegralUint16,
9138OP_CastFixedPointIntegralSint32,
9139OP_CastFixedPointIntegralUint32,
9140OP_CastFixedPointIntegralSint64,
9141OP_CastFixedPointIntegralUint64,
9142#endif
9143#ifdef GET_INTERPFN_LIST
9144&Interp_CastFixedPointIntegralSint8,
9145&Interp_CastFixedPointIntegralUint8,
9146&Interp_CastFixedPointIntegralSint16,
9147&Interp_CastFixedPointIntegralUint16,
9148&Interp_CastFixedPointIntegralSint32,
9149&Interp_CastFixedPointIntegralUint32,
9150&Interp_CastFixedPointIntegralSint64,
9151&Interp_CastFixedPointIntegralUint64,
9152#endif
9153#ifdef GET_INTERPFN_DISPATCHERS
9154PRESERVE_NONE
9155static bool Interp_CastFixedPointIntegralSint8(InterpState &S, CodePtr &PC) {
9156 if (!CastFixedPointIntegral<PT_Sint8>(S, PC)) return false;
9157#if USE_TAILCALLS
9158 MUSTTAIL return InterpNext(S, PC);
9159#else
9160 return true;
9161#endif
9162}
9163PRESERVE_NONE
9164static bool Interp_CastFixedPointIntegralUint8(InterpState &S, CodePtr &PC) {
9165 if (!CastFixedPointIntegral<PT_Uint8>(S, PC)) return false;
9166#if USE_TAILCALLS
9167 MUSTTAIL return InterpNext(S, PC);
9168#else
9169 return true;
9170#endif
9171}
9172PRESERVE_NONE
9173static bool Interp_CastFixedPointIntegralSint16(InterpState &S, CodePtr &PC) {
9174 if (!CastFixedPointIntegral<PT_Sint16>(S, PC)) return false;
9175#if USE_TAILCALLS
9176 MUSTTAIL return InterpNext(S, PC);
9177#else
9178 return true;
9179#endif
9180}
9181PRESERVE_NONE
9182static bool Interp_CastFixedPointIntegralUint16(InterpState &S, CodePtr &PC) {
9183 if (!CastFixedPointIntegral<PT_Uint16>(S, PC)) return false;
9184#if USE_TAILCALLS
9185 MUSTTAIL return InterpNext(S, PC);
9186#else
9187 return true;
9188#endif
9189}
9190PRESERVE_NONE
9191static bool Interp_CastFixedPointIntegralSint32(InterpState &S, CodePtr &PC) {
9192 if (!CastFixedPointIntegral<PT_Sint32>(S, PC)) return false;
9193#if USE_TAILCALLS
9194 MUSTTAIL return InterpNext(S, PC);
9195#else
9196 return true;
9197#endif
9198}
9199PRESERVE_NONE
9200static bool Interp_CastFixedPointIntegralUint32(InterpState &S, CodePtr &PC) {
9201 if (!CastFixedPointIntegral<PT_Uint32>(S, PC)) return false;
9202#if USE_TAILCALLS
9203 MUSTTAIL return InterpNext(S, PC);
9204#else
9205 return true;
9206#endif
9207}
9208PRESERVE_NONE
9209static bool Interp_CastFixedPointIntegralSint64(InterpState &S, CodePtr &PC) {
9210 if (!CastFixedPointIntegral<PT_Sint64>(S, PC)) return false;
9211#if USE_TAILCALLS
9212 MUSTTAIL return InterpNext(S, PC);
9213#else
9214 return true;
9215#endif
9216}
9217PRESERVE_NONE
9218static bool Interp_CastFixedPointIntegralUint64(InterpState &S, CodePtr &PC) {
9219 if (!CastFixedPointIntegral<PT_Uint64>(S, PC)) return false;
9220#if USE_TAILCALLS
9221 MUSTTAIL return InterpNext(S, PC);
9222#else
9223 return true;
9224#endif
9225}
9226#endif
9227#ifdef GET_DISASM
9228case OP_CastFixedPointIntegralSint8:
9229 Text.Op = PrintName("CastFixedPointIntegralSint8");
9230 break;
9231case OP_CastFixedPointIntegralUint8:
9232 Text.Op = PrintName("CastFixedPointIntegralUint8");
9233 break;
9234case OP_CastFixedPointIntegralSint16:
9235 Text.Op = PrintName("CastFixedPointIntegralSint16");
9236 break;
9237case OP_CastFixedPointIntegralUint16:
9238 Text.Op = PrintName("CastFixedPointIntegralUint16");
9239 break;
9240case OP_CastFixedPointIntegralSint32:
9241 Text.Op = PrintName("CastFixedPointIntegralSint32");
9242 break;
9243case OP_CastFixedPointIntegralUint32:
9244 Text.Op = PrintName("CastFixedPointIntegralUint32");
9245 break;
9246case OP_CastFixedPointIntegralSint64:
9247 Text.Op = PrintName("CastFixedPointIntegralSint64");
9248 break;
9249case OP_CastFixedPointIntegralUint64:
9250 Text.Op = PrintName("CastFixedPointIntegralUint64");
9251 break;
9252#endif
9253#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9254bool emitCastFixedPointIntegralSint8(SourceInfo);
9255bool emitCastFixedPointIntegralUint8(SourceInfo);
9256bool emitCastFixedPointIntegralSint16(SourceInfo);
9257bool emitCastFixedPointIntegralUint16(SourceInfo);
9258bool emitCastFixedPointIntegralSint32(SourceInfo);
9259bool emitCastFixedPointIntegralUint32(SourceInfo);
9260bool emitCastFixedPointIntegralSint64(SourceInfo);
9261bool emitCastFixedPointIntegralUint64(SourceInfo);
9262#endif
9263#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9264[[nodiscard]] bool emitCastFixedPointIntegral(PrimType, SourceInfo I);
9265#endif
9266#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
9267bool
9268#if defined(GET_EVAL_IMPL)
9269EvalEmitter
9270#else
9271ByteCodeEmitter
9272#endif
9273::emitCastFixedPointIntegral(PrimType T0, SourceInfo I) {
9274 switch (T0) {
9275 case PT_Sint8:
9276 return emitCastFixedPointIntegralSint8(I);
9277 case PT_Uint8:
9278 return emitCastFixedPointIntegralUint8(I);
9279 case PT_Sint16:
9280 return emitCastFixedPointIntegralSint16(I);
9281 case PT_Uint16:
9282 return emitCastFixedPointIntegralUint16(I);
9283 case PT_Sint32:
9284 return emitCastFixedPointIntegralSint32(I);
9285 case PT_Uint32:
9286 return emitCastFixedPointIntegralUint32(I);
9287 case PT_Sint64:
9288 return emitCastFixedPointIntegralSint64(I);
9289 case PT_Uint64:
9290 return emitCastFixedPointIntegralUint64(I);
9291 default: llvm_unreachable("invalid type: emitCastFixedPointIntegral");
9292 }
9293 llvm_unreachable("invalid enum value");
9294}
9295#endif
9296#ifdef GET_LINK_IMPL
9297bool ByteCodeEmitter::emitCastFixedPointIntegralSint8(SourceInfo L) {
9298 return emitOp<>(OP_CastFixedPointIntegralSint8, L);
9299}
9300bool ByteCodeEmitter::emitCastFixedPointIntegralUint8(SourceInfo L) {
9301 return emitOp<>(OP_CastFixedPointIntegralUint8, L);
9302}
9303bool ByteCodeEmitter::emitCastFixedPointIntegralSint16(SourceInfo L) {
9304 return emitOp<>(OP_CastFixedPointIntegralSint16, L);
9305}
9306bool ByteCodeEmitter::emitCastFixedPointIntegralUint16(SourceInfo L) {
9307 return emitOp<>(OP_CastFixedPointIntegralUint16, L);
9308}
9309bool ByteCodeEmitter::emitCastFixedPointIntegralSint32(SourceInfo L) {
9310 return emitOp<>(OP_CastFixedPointIntegralSint32, L);
9311}
9312bool ByteCodeEmitter::emitCastFixedPointIntegralUint32(SourceInfo L) {
9313 return emitOp<>(OP_CastFixedPointIntegralUint32, L);
9314}
9315bool ByteCodeEmitter::emitCastFixedPointIntegralSint64(SourceInfo L) {
9316 return emitOp<>(OP_CastFixedPointIntegralSint64, L);
9317}
9318bool ByteCodeEmitter::emitCastFixedPointIntegralUint64(SourceInfo L) {
9319 return emitOp<>(OP_CastFixedPointIntegralUint64, L);
9320}
9321#endif
9322#ifdef GET_EVAL_IMPL
9323bool EvalEmitter::emitCastFixedPointIntegralSint8(SourceInfo L) {
9324 if (!isActive()) return true;
9325 CurrentSource = L;
9326 return CastFixedPointIntegral<PT_Sint8>(S, OpPC);
9327}
9328bool EvalEmitter::emitCastFixedPointIntegralUint8(SourceInfo L) {
9329 if (!isActive()) return true;
9330 CurrentSource = L;
9331 return CastFixedPointIntegral<PT_Uint8>(S, OpPC);
9332}
9333bool EvalEmitter::emitCastFixedPointIntegralSint16(SourceInfo L) {
9334 if (!isActive()) return true;
9335 CurrentSource = L;
9336 return CastFixedPointIntegral<PT_Sint16>(S, OpPC);
9337}
9338bool EvalEmitter::emitCastFixedPointIntegralUint16(SourceInfo L) {
9339 if (!isActive()) return true;
9340 CurrentSource = L;
9341 return CastFixedPointIntegral<PT_Uint16>(S, OpPC);
9342}
9343bool EvalEmitter::emitCastFixedPointIntegralSint32(SourceInfo L) {
9344 if (!isActive()) return true;
9345 CurrentSource = L;
9346 return CastFixedPointIntegral<PT_Sint32>(S, OpPC);
9347}
9348bool EvalEmitter::emitCastFixedPointIntegralUint32(SourceInfo L) {
9349 if (!isActive()) return true;
9350 CurrentSource = L;
9351 return CastFixedPointIntegral<PT_Uint32>(S, OpPC);
9352}
9353bool EvalEmitter::emitCastFixedPointIntegralSint64(SourceInfo L) {
9354 if (!isActive()) return true;
9355 CurrentSource = L;
9356 return CastFixedPointIntegral<PT_Sint64>(S, OpPC);
9357}
9358bool EvalEmitter::emitCastFixedPointIntegralUint64(SourceInfo L) {
9359 if (!isActive()) return true;
9360 CurrentSource = L;
9361 return CastFixedPointIntegral<PT_Uint64>(S, OpPC);
9362}
9363#endif
9364#ifdef GET_OPCODE_NAMES
9365OP_CastFloatingFixedPoint,
9366#endif
9367#ifdef GET_INTERPFN_LIST
9368&Interp_CastFloatingFixedPoint,
9369#endif
9370#ifdef GET_INTERPFN_DISPATCHERS
9371PRESERVE_NONE
9372static bool Interp_CastFloatingFixedPoint(InterpState &S, CodePtr &PC) {
9373 {
9374 CodePtr OpPC = PC;
9375 const auto V0 = ReadArg<uint32_t>(S, PC);
9376 if (!CastFloatingFixedPoint(S, OpPC, V0)) return false;
9377 }
9378#if USE_TAILCALLS
9379 MUSTTAIL return InterpNext(S, PC);
9380#else
9381 return true;
9382#endif
9383}
9384#endif
9385#ifdef GET_DISASM
9386case OP_CastFloatingFixedPoint:
9387 Text.Op = PrintName("CastFloatingFixedPoint");
9388 Text.Args.push_back(printArg<uint32_t>(P, PC));
9389 break;
9390#endif
9391#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9392bool emitCastFloatingFixedPoint( uint32_t , SourceInfo);
9393#endif
9394#ifdef GET_LINK_IMPL
9395bool ByteCodeEmitter::emitCastFloatingFixedPoint( uint32_t A0, SourceInfo L) {
9396 return emitOp<uint32_t>(OP_CastFloatingFixedPoint, A0, L);
9397}
9398#endif
9399#ifdef GET_EVAL_IMPL
9400bool EvalEmitter::emitCastFloatingFixedPoint( uint32_t A0, SourceInfo L) {
9401 if (!isActive()) return true;
9402 CurrentSource = L;
9403 return CastFloatingFixedPoint(S, OpPC, A0);
9404}
9405#endif
9406#ifdef GET_OPCODE_NAMES
9407OP_CastFloatingIntegralSint8,
9408OP_CastFloatingIntegralUint8,
9409OP_CastFloatingIntegralSint16,
9410OP_CastFloatingIntegralUint16,
9411OP_CastFloatingIntegralSint32,
9412OP_CastFloatingIntegralUint32,
9413OP_CastFloatingIntegralSint64,
9414OP_CastFloatingIntegralUint64,
9415OP_CastFloatingIntegralBool,
9416#endif
9417#ifdef GET_INTERPFN_LIST
9418&Interp_CastFloatingIntegralSint8,
9419&Interp_CastFloatingIntegralUint8,
9420&Interp_CastFloatingIntegralSint16,
9421&Interp_CastFloatingIntegralUint16,
9422&Interp_CastFloatingIntegralSint32,
9423&Interp_CastFloatingIntegralUint32,
9424&Interp_CastFloatingIntegralSint64,
9425&Interp_CastFloatingIntegralUint64,
9426&Interp_CastFloatingIntegralBool,
9427#endif
9428#ifdef GET_INTERPFN_DISPATCHERS
9429PRESERVE_NONE
9430static bool Interp_CastFloatingIntegralSint8(InterpState &S, CodePtr &PC) {
9431 {
9432 CodePtr OpPC = PC;
9433 const auto V0 = ReadArg<uint32_t>(S, PC);
9434 if (!CastFloatingIntegral<PT_Sint8>(S, OpPC, V0)) return false;
9435 }
9436#if USE_TAILCALLS
9437 MUSTTAIL return InterpNext(S, PC);
9438#else
9439 return true;
9440#endif
9441}
9442PRESERVE_NONE
9443static bool Interp_CastFloatingIntegralUint8(InterpState &S, CodePtr &PC) {
9444 {
9445 CodePtr OpPC = PC;
9446 const auto V0 = ReadArg<uint32_t>(S, PC);
9447 if (!CastFloatingIntegral<PT_Uint8>(S, OpPC, V0)) return false;
9448 }
9449#if USE_TAILCALLS
9450 MUSTTAIL return InterpNext(S, PC);
9451#else
9452 return true;
9453#endif
9454}
9455PRESERVE_NONE
9456static bool Interp_CastFloatingIntegralSint16(InterpState &S, CodePtr &PC) {
9457 {
9458 CodePtr OpPC = PC;
9459 const auto V0 = ReadArg<uint32_t>(S, PC);
9460 if (!CastFloatingIntegral<PT_Sint16>(S, OpPC, V0)) return false;
9461 }
9462#if USE_TAILCALLS
9463 MUSTTAIL return InterpNext(S, PC);
9464#else
9465 return true;
9466#endif
9467}
9468PRESERVE_NONE
9469static bool Interp_CastFloatingIntegralUint16(InterpState &S, CodePtr &PC) {
9470 {
9471 CodePtr OpPC = PC;
9472 const auto V0 = ReadArg<uint32_t>(S, PC);
9473 if (!CastFloatingIntegral<PT_Uint16>(S, OpPC, V0)) return false;
9474 }
9475#if USE_TAILCALLS
9476 MUSTTAIL return InterpNext(S, PC);
9477#else
9478 return true;
9479#endif
9480}
9481PRESERVE_NONE
9482static bool Interp_CastFloatingIntegralSint32(InterpState &S, CodePtr &PC) {
9483 {
9484 CodePtr OpPC = PC;
9485 const auto V0 = ReadArg<uint32_t>(S, PC);
9486 if (!CastFloatingIntegral<PT_Sint32>(S, OpPC, V0)) return false;
9487 }
9488#if USE_TAILCALLS
9489 MUSTTAIL return InterpNext(S, PC);
9490#else
9491 return true;
9492#endif
9493}
9494PRESERVE_NONE
9495static bool Interp_CastFloatingIntegralUint32(InterpState &S, CodePtr &PC) {
9496 {
9497 CodePtr OpPC = PC;
9498 const auto V0 = ReadArg<uint32_t>(S, PC);
9499 if (!CastFloatingIntegral<PT_Uint32>(S, OpPC, V0)) return false;
9500 }
9501#if USE_TAILCALLS
9502 MUSTTAIL return InterpNext(S, PC);
9503#else
9504 return true;
9505#endif
9506}
9507PRESERVE_NONE
9508static bool Interp_CastFloatingIntegralSint64(InterpState &S, CodePtr &PC) {
9509 {
9510 CodePtr OpPC = PC;
9511 const auto V0 = ReadArg<uint32_t>(S, PC);
9512 if (!CastFloatingIntegral<PT_Sint64>(S, OpPC, V0)) return false;
9513 }
9514#if USE_TAILCALLS
9515 MUSTTAIL return InterpNext(S, PC);
9516#else
9517 return true;
9518#endif
9519}
9520PRESERVE_NONE
9521static bool Interp_CastFloatingIntegralUint64(InterpState &S, CodePtr &PC) {
9522 {
9523 CodePtr OpPC = PC;
9524 const auto V0 = ReadArg<uint32_t>(S, PC);
9525 if (!CastFloatingIntegral<PT_Uint64>(S, OpPC, V0)) return false;
9526 }
9527#if USE_TAILCALLS
9528 MUSTTAIL return InterpNext(S, PC);
9529#else
9530 return true;
9531#endif
9532}
9533PRESERVE_NONE
9534static bool Interp_CastFloatingIntegralBool(InterpState &S, CodePtr &PC) {
9535 {
9536 CodePtr OpPC = PC;
9537 const auto V0 = ReadArg<uint32_t>(S, PC);
9538 if (!CastFloatingIntegral<PT_Bool>(S, OpPC, V0)) return false;
9539 }
9540#if USE_TAILCALLS
9541 MUSTTAIL return InterpNext(S, PC);
9542#else
9543 return true;
9544#endif
9545}
9546#endif
9547#ifdef GET_DISASM
9548case OP_CastFloatingIntegralSint8:
9549 Text.Op = PrintName("CastFloatingIntegralSint8");
9550 Text.Args.push_back(printArg<uint32_t>(P, PC));
9551 break;
9552case OP_CastFloatingIntegralUint8:
9553 Text.Op = PrintName("CastFloatingIntegralUint8");
9554 Text.Args.push_back(printArg<uint32_t>(P, PC));
9555 break;
9556case OP_CastFloatingIntegralSint16:
9557 Text.Op = PrintName("CastFloatingIntegralSint16");
9558 Text.Args.push_back(printArg<uint32_t>(P, PC));
9559 break;
9560case OP_CastFloatingIntegralUint16:
9561 Text.Op = PrintName("CastFloatingIntegralUint16");
9562 Text.Args.push_back(printArg<uint32_t>(P, PC));
9563 break;
9564case OP_CastFloatingIntegralSint32:
9565 Text.Op = PrintName("CastFloatingIntegralSint32");
9566 Text.Args.push_back(printArg<uint32_t>(P, PC));
9567 break;
9568case OP_CastFloatingIntegralUint32:
9569 Text.Op = PrintName("CastFloatingIntegralUint32");
9570 Text.Args.push_back(printArg<uint32_t>(P, PC));
9571 break;
9572case OP_CastFloatingIntegralSint64:
9573 Text.Op = PrintName("CastFloatingIntegralSint64");
9574 Text.Args.push_back(printArg<uint32_t>(P, PC));
9575 break;
9576case OP_CastFloatingIntegralUint64:
9577 Text.Op = PrintName("CastFloatingIntegralUint64");
9578 Text.Args.push_back(printArg<uint32_t>(P, PC));
9579 break;
9580case OP_CastFloatingIntegralBool:
9581 Text.Op = PrintName("CastFloatingIntegralBool");
9582 Text.Args.push_back(printArg<uint32_t>(P, PC));
9583 break;
9584#endif
9585#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9586bool emitCastFloatingIntegralSint8( uint32_t , SourceInfo);
9587bool emitCastFloatingIntegralUint8( uint32_t , SourceInfo);
9588bool emitCastFloatingIntegralSint16( uint32_t , SourceInfo);
9589bool emitCastFloatingIntegralUint16( uint32_t , SourceInfo);
9590bool emitCastFloatingIntegralSint32( uint32_t , SourceInfo);
9591bool emitCastFloatingIntegralUint32( uint32_t , SourceInfo);
9592bool emitCastFloatingIntegralSint64( uint32_t , SourceInfo);
9593bool emitCastFloatingIntegralUint64( uint32_t , SourceInfo);
9594bool emitCastFloatingIntegralBool( uint32_t , SourceInfo);
9595#endif
9596#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9597[[nodiscard]] bool emitCastFloatingIntegral(PrimType, uint32_t, SourceInfo I);
9598#endif
9599#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
9600bool
9601#if defined(GET_EVAL_IMPL)
9602EvalEmitter
9603#else
9604ByteCodeEmitter
9605#endif
9606::emitCastFloatingIntegral(PrimType T0, uint32_t A0, SourceInfo I) {
9607 switch (T0) {
9608 case PT_Sint8:
9609 return emitCastFloatingIntegralSint8(A0, I);
9610 case PT_Uint8:
9611 return emitCastFloatingIntegralUint8(A0, I);
9612 case PT_Sint16:
9613 return emitCastFloatingIntegralSint16(A0, I);
9614 case PT_Uint16:
9615 return emitCastFloatingIntegralUint16(A0, I);
9616 case PT_Sint32:
9617 return emitCastFloatingIntegralSint32(A0, I);
9618 case PT_Uint32:
9619 return emitCastFloatingIntegralUint32(A0, I);
9620 case PT_Sint64:
9621 return emitCastFloatingIntegralSint64(A0, I);
9622 case PT_Uint64:
9623 return emitCastFloatingIntegralUint64(A0, I);
9624 case PT_Bool:
9625 return emitCastFloatingIntegralBool(A0, I);
9626 default: llvm_unreachable("invalid type: emitCastFloatingIntegral");
9627 }
9628 llvm_unreachable("invalid enum value");
9629}
9630#endif
9631#ifdef GET_LINK_IMPL
9632bool ByteCodeEmitter::emitCastFloatingIntegralSint8( uint32_t A0, SourceInfo L) {
9633 return emitOp<uint32_t>(OP_CastFloatingIntegralSint8, A0, L);
9634}
9635bool ByteCodeEmitter::emitCastFloatingIntegralUint8( uint32_t A0, SourceInfo L) {
9636 return emitOp<uint32_t>(OP_CastFloatingIntegralUint8, A0, L);
9637}
9638bool ByteCodeEmitter::emitCastFloatingIntegralSint16( uint32_t A0, SourceInfo L) {
9639 return emitOp<uint32_t>(OP_CastFloatingIntegralSint16, A0, L);
9640}
9641bool ByteCodeEmitter::emitCastFloatingIntegralUint16( uint32_t A0, SourceInfo L) {
9642 return emitOp<uint32_t>(OP_CastFloatingIntegralUint16, A0, L);
9643}
9644bool ByteCodeEmitter::emitCastFloatingIntegralSint32( uint32_t A0, SourceInfo L) {
9645 return emitOp<uint32_t>(OP_CastFloatingIntegralSint32, A0, L);
9646}
9647bool ByteCodeEmitter::emitCastFloatingIntegralUint32( uint32_t A0, SourceInfo L) {
9648 return emitOp<uint32_t>(OP_CastFloatingIntegralUint32, A0, L);
9649}
9650bool ByteCodeEmitter::emitCastFloatingIntegralSint64( uint32_t A0, SourceInfo L) {
9651 return emitOp<uint32_t>(OP_CastFloatingIntegralSint64, A0, L);
9652}
9653bool ByteCodeEmitter::emitCastFloatingIntegralUint64( uint32_t A0, SourceInfo L) {
9654 return emitOp<uint32_t>(OP_CastFloatingIntegralUint64, A0, L);
9655}
9656bool ByteCodeEmitter::emitCastFloatingIntegralBool( uint32_t A0, SourceInfo L) {
9657 return emitOp<uint32_t>(OP_CastFloatingIntegralBool, A0, L);
9658}
9659#endif
9660#ifdef GET_EVAL_IMPL
9661bool EvalEmitter::emitCastFloatingIntegralSint8( uint32_t A0, SourceInfo L) {
9662 if (!isActive()) return true;
9663 CurrentSource = L;
9664 return CastFloatingIntegral<PT_Sint8>(S, OpPC, A0);
9665}
9666bool EvalEmitter::emitCastFloatingIntegralUint8( uint32_t A0, SourceInfo L) {
9667 if (!isActive()) return true;
9668 CurrentSource = L;
9669 return CastFloatingIntegral<PT_Uint8>(S, OpPC, A0);
9670}
9671bool EvalEmitter::emitCastFloatingIntegralSint16( uint32_t A0, SourceInfo L) {
9672 if (!isActive()) return true;
9673 CurrentSource = L;
9674 return CastFloatingIntegral<PT_Sint16>(S, OpPC, A0);
9675}
9676bool EvalEmitter::emitCastFloatingIntegralUint16( uint32_t A0, SourceInfo L) {
9677 if (!isActive()) return true;
9678 CurrentSource = L;
9679 return CastFloatingIntegral<PT_Uint16>(S, OpPC, A0);
9680}
9681bool EvalEmitter::emitCastFloatingIntegralSint32( uint32_t A0, SourceInfo L) {
9682 if (!isActive()) return true;
9683 CurrentSource = L;
9684 return CastFloatingIntegral<PT_Sint32>(S, OpPC, A0);
9685}
9686bool EvalEmitter::emitCastFloatingIntegralUint32( uint32_t A0, SourceInfo L) {
9687 if (!isActive()) return true;
9688 CurrentSource = L;
9689 return CastFloatingIntegral<PT_Uint32>(S, OpPC, A0);
9690}
9691bool EvalEmitter::emitCastFloatingIntegralSint64( uint32_t A0, SourceInfo L) {
9692 if (!isActive()) return true;
9693 CurrentSource = L;
9694 return CastFloatingIntegral<PT_Sint64>(S, OpPC, A0);
9695}
9696bool EvalEmitter::emitCastFloatingIntegralUint64( uint32_t A0, SourceInfo L) {
9697 if (!isActive()) return true;
9698 CurrentSource = L;
9699 return CastFloatingIntegral<PT_Uint64>(S, OpPC, A0);
9700}
9701bool EvalEmitter::emitCastFloatingIntegralBool( uint32_t A0, SourceInfo L) {
9702 if (!isActive()) return true;
9703 CurrentSource = L;
9704 return CastFloatingIntegral<PT_Bool>(S, OpPC, A0);
9705}
9706#endif
9707#ifdef GET_OPCODE_NAMES
9708OP_CastFloatingIntegralAP,
9709#endif
9710#ifdef GET_INTERPFN_LIST
9711&Interp_CastFloatingIntegralAP,
9712#endif
9713#ifdef GET_INTERPFN_DISPATCHERS
9714PRESERVE_NONE
9715static bool Interp_CastFloatingIntegralAP(InterpState &S, CodePtr &PC) {
9716 {
9717 CodePtr OpPC = PC;
9718 const auto V0 = ReadArg<uint32_t>(S, PC);
9719 const auto V1 = ReadArg<uint32_t>(S, PC);
9720 if (!CastFloatingIntegralAP(S, OpPC, V0, V1)) return false;
9721 }
9722#if USE_TAILCALLS
9723 MUSTTAIL return InterpNext(S, PC);
9724#else
9725 return true;
9726#endif
9727}
9728#endif
9729#ifdef GET_DISASM
9730case OP_CastFloatingIntegralAP:
9731 Text.Op = PrintName("CastFloatingIntegralAP");
9732 Text.Args.push_back(printArg<uint32_t>(P, PC));
9733 Text.Args.push_back(printArg<uint32_t>(P, PC));
9734 break;
9735#endif
9736#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9737bool emitCastFloatingIntegralAP( uint32_t , uint32_t , SourceInfo);
9738#endif
9739#ifdef GET_LINK_IMPL
9740bool ByteCodeEmitter::emitCastFloatingIntegralAP( uint32_t A0, uint32_t A1, SourceInfo L) {
9741 return emitOp<uint32_t, uint32_t>(OP_CastFloatingIntegralAP, A0, A1, L);
9742}
9743#endif
9744#ifdef GET_EVAL_IMPL
9745bool EvalEmitter::emitCastFloatingIntegralAP( uint32_t A0, uint32_t A1, SourceInfo L) {
9746 if (!isActive()) return true;
9747 CurrentSource = L;
9748 return CastFloatingIntegralAP(S, OpPC, A0, A1);
9749}
9750#endif
9751#ifdef GET_OPCODE_NAMES
9752OP_CastFloatingIntegralAPS,
9753#endif
9754#ifdef GET_INTERPFN_LIST
9755&Interp_CastFloatingIntegralAPS,
9756#endif
9757#ifdef GET_INTERPFN_DISPATCHERS
9758PRESERVE_NONE
9759static bool Interp_CastFloatingIntegralAPS(InterpState &S, CodePtr &PC) {
9760 {
9761 CodePtr OpPC = PC;
9762 const auto V0 = ReadArg<uint32_t>(S, PC);
9763 const auto V1 = ReadArg<uint32_t>(S, PC);
9764 if (!CastFloatingIntegralAPS(S, OpPC, V0, V1)) return false;
9765 }
9766#if USE_TAILCALLS
9767 MUSTTAIL return InterpNext(S, PC);
9768#else
9769 return true;
9770#endif
9771}
9772#endif
9773#ifdef GET_DISASM
9774case OP_CastFloatingIntegralAPS:
9775 Text.Op = PrintName("CastFloatingIntegralAPS");
9776 Text.Args.push_back(printArg<uint32_t>(P, PC));
9777 Text.Args.push_back(printArg<uint32_t>(P, PC));
9778 break;
9779#endif
9780#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9781bool emitCastFloatingIntegralAPS( uint32_t , uint32_t , SourceInfo);
9782#endif
9783#ifdef GET_LINK_IMPL
9784bool ByteCodeEmitter::emitCastFloatingIntegralAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
9785 return emitOp<uint32_t, uint32_t>(OP_CastFloatingIntegralAPS, A0, A1, L);
9786}
9787#endif
9788#ifdef GET_EVAL_IMPL
9789bool EvalEmitter::emitCastFloatingIntegralAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
9790 if (!isActive()) return true;
9791 CurrentSource = L;
9792 return CastFloatingIntegralAPS(S, OpPC, A0, A1);
9793}
9794#endif
9795#ifdef GET_OPCODE_NAMES
9796OP_CastIntegralFixedPointSint8,
9797OP_CastIntegralFixedPointUint8,
9798OP_CastIntegralFixedPointSint16,
9799OP_CastIntegralFixedPointUint16,
9800OP_CastIntegralFixedPointSint32,
9801OP_CastIntegralFixedPointUint32,
9802OP_CastIntegralFixedPointSint64,
9803OP_CastIntegralFixedPointUint64,
9804OP_CastIntegralFixedPointIntAP,
9805OP_CastIntegralFixedPointIntAPS,
9806OP_CastIntegralFixedPointBool,
9807#endif
9808#ifdef GET_INTERPFN_LIST
9809&Interp_CastIntegralFixedPointSint8,
9810&Interp_CastIntegralFixedPointUint8,
9811&Interp_CastIntegralFixedPointSint16,
9812&Interp_CastIntegralFixedPointUint16,
9813&Interp_CastIntegralFixedPointSint32,
9814&Interp_CastIntegralFixedPointUint32,
9815&Interp_CastIntegralFixedPointSint64,
9816&Interp_CastIntegralFixedPointUint64,
9817&Interp_CastIntegralFixedPointIntAP,
9818&Interp_CastIntegralFixedPointIntAPS,
9819&Interp_CastIntegralFixedPointBool,
9820#endif
9821#ifdef GET_INTERPFN_DISPATCHERS
9822PRESERVE_NONE
9823static bool Interp_CastIntegralFixedPointSint8(InterpState &S, CodePtr &PC) {
9824 {
9825 CodePtr OpPC = PC;
9826 const auto V0 = ReadArg<uint32_t>(S, PC);
9827 if (!CastIntegralFixedPoint<PT_Sint8>(S, OpPC, V0)) return false;
9828 }
9829#if USE_TAILCALLS
9830 MUSTTAIL return InterpNext(S, PC);
9831#else
9832 return true;
9833#endif
9834}
9835PRESERVE_NONE
9836static bool Interp_CastIntegralFixedPointUint8(InterpState &S, CodePtr &PC) {
9837 {
9838 CodePtr OpPC = PC;
9839 const auto V0 = ReadArg<uint32_t>(S, PC);
9840 if (!CastIntegralFixedPoint<PT_Uint8>(S, OpPC, V0)) return false;
9841 }
9842#if USE_TAILCALLS
9843 MUSTTAIL return InterpNext(S, PC);
9844#else
9845 return true;
9846#endif
9847}
9848PRESERVE_NONE
9849static bool Interp_CastIntegralFixedPointSint16(InterpState &S, CodePtr &PC) {
9850 {
9851 CodePtr OpPC = PC;
9852 const auto V0 = ReadArg<uint32_t>(S, PC);
9853 if (!CastIntegralFixedPoint<PT_Sint16>(S, OpPC, V0)) return false;
9854 }
9855#if USE_TAILCALLS
9856 MUSTTAIL return InterpNext(S, PC);
9857#else
9858 return true;
9859#endif
9860}
9861PRESERVE_NONE
9862static bool Interp_CastIntegralFixedPointUint16(InterpState &S, CodePtr &PC) {
9863 {
9864 CodePtr OpPC = PC;
9865 const auto V0 = ReadArg<uint32_t>(S, PC);
9866 if (!CastIntegralFixedPoint<PT_Uint16>(S, OpPC, V0)) return false;
9867 }
9868#if USE_TAILCALLS
9869 MUSTTAIL return InterpNext(S, PC);
9870#else
9871 return true;
9872#endif
9873}
9874PRESERVE_NONE
9875static bool Interp_CastIntegralFixedPointSint32(InterpState &S, CodePtr &PC) {
9876 {
9877 CodePtr OpPC = PC;
9878 const auto V0 = ReadArg<uint32_t>(S, PC);
9879 if (!CastIntegralFixedPoint<PT_Sint32>(S, OpPC, V0)) return false;
9880 }
9881#if USE_TAILCALLS
9882 MUSTTAIL return InterpNext(S, PC);
9883#else
9884 return true;
9885#endif
9886}
9887PRESERVE_NONE
9888static bool Interp_CastIntegralFixedPointUint32(InterpState &S, CodePtr &PC) {
9889 {
9890 CodePtr OpPC = PC;
9891 const auto V0 = ReadArg<uint32_t>(S, PC);
9892 if (!CastIntegralFixedPoint<PT_Uint32>(S, OpPC, V0)) return false;
9893 }
9894#if USE_TAILCALLS
9895 MUSTTAIL return InterpNext(S, PC);
9896#else
9897 return true;
9898#endif
9899}
9900PRESERVE_NONE
9901static bool Interp_CastIntegralFixedPointSint64(InterpState &S, CodePtr &PC) {
9902 {
9903 CodePtr OpPC = PC;
9904 const auto V0 = ReadArg<uint32_t>(S, PC);
9905 if (!CastIntegralFixedPoint<PT_Sint64>(S, OpPC, V0)) return false;
9906 }
9907#if USE_TAILCALLS
9908 MUSTTAIL return InterpNext(S, PC);
9909#else
9910 return true;
9911#endif
9912}
9913PRESERVE_NONE
9914static bool Interp_CastIntegralFixedPointUint64(InterpState &S, CodePtr &PC) {
9915 {
9916 CodePtr OpPC = PC;
9917 const auto V0 = ReadArg<uint32_t>(S, PC);
9918 if (!CastIntegralFixedPoint<PT_Uint64>(S, OpPC, V0)) return false;
9919 }
9920#if USE_TAILCALLS
9921 MUSTTAIL return InterpNext(S, PC);
9922#else
9923 return true;
9924#endif
9925}
9926PRESERVE_NONE
9927static bool Interp_CastIntegralFixedPointIntAP(InterpState &S, CodePtr &PC) {
9928 {
9929 CodePtr OpPC = PC;
9930 const auto V0 = ReadArg<uint32_t>(S, PC);
9931 if (!CastIntegralFixedPoint<PT_IntAP>(S, OpPC, V0)) return false;
9932 }
9933#if USE_TAILCALLS
9934 MUSTTAIL return InterpNext(S, PC);
9935#else
9936 return true;
9937#endif
9938}
9939PRESERVE_NONE
9940static bool Interp_CastIntegralFixedPointIntAPS(InterpState &S, CodePtr &PC) {
9941 {
9942 CodePtr OpPC = PC;
9943 const auto V0 = ReadArg<uint32_t>(S, PC);
9944 if (!CastIntegralFixedPoint<PT_IntAPS>(S, OpPC, V0)) return false;
9945 }
9946#if USE_TAILCALLS
9947 MUSTTAIL return InterpNext(S, PC);
9948#else
9949 return true;
9950#endif
9951}
9952PRESERVE_NONE
9953static bool Interp_CastIntegralFixedPointBool(InterpState &S, CodePtr &PC) {
9954 {
9955 CodePtr OpPC = PC;
9956 const auto V0 = ReadArg<uint32_t>(S, PC);
9957 if (!CastIntegralFixedPoint<PT_Bool>(S, OpPC, V0)) return false;
9958 }
9959#if USE_TAILCALLS
9960 MUSTTAIL return InterpNext(S, PC);
9961#else
9962 return true;
9963#endif
9964}
9965#endif
9966#ifdef GET_DISASM
9967case OP_CastIntegralFixedPointSint8:
9968 Text.Op = PrintName("CastIntegralFixedPointSint8");
9969 Text.Args.push_back(printArg<uint32_t>(P, PC));
9970 break;
9971case OP_CastIntegralFixedPointUint8:
9972 Text.Op = PrintName("CastIntegralFixedPointUint8");
9973 Text.Args.push_back(printArg<uint32_t>(P, PC));
9974 break;
9975case OP_CastIntegralFixedPointSint16:
9976 Text.Op = PrintName("CastIntegralFixedPointSint16");
9977 Text.Args.push_back(printArg<uint32_t>(P, PC));
9978 break;
9979case OP_CastIntegralFixedPointUint16:
9980 Text.Op = PrintName("CastIntegralFixedPointUint16");
9981 Text.Args.push_back(printArg<uint32_t>(P, PC));
9982 break;
9983case OP_CastIntegralFixedPointSint32:
9984 Text.Op = PrintName("CastIntegralFixedPointSint32");
9985 Text.Args.push_back(printArg<uint32_t>(P, PC));
9986 break;
9987case OP_CastIntegralFixedPointUint32:
9988 Text.Op = PrintName("CastIntegralFixedPointUint32");
9989 Text.Args.push_back(printArg<uint32_t>(P, PC));
9990 break;
9991case OP_CastIntegralFixedPointSint64:
9992 Text.Op = PrintName("CastIntegralFixedPointSint64");
9993 Text.Args.push_back(printArg<uint32_t>(P, PC));
9994 break;
9995case OP_CastIntegralFixedPointUint64:
9996 Text.Op = PrintName("CastIntegralFixedPointUint64");
9997 Text.Args.push_back(printArg<uint32_t>(P, PC));
9998 break;
9999case OP_CastIntegralFixedPointIntAP:
10000 Text.Op = PrintName("CastIntegralFixedPointIntAP");
10001 Text.Args.push_back(printArg<uint32_t>(P, PC));
10002 break;
10003case OP_CastIntegralFixedPointIntAPS:
10004 Text.Op = PrintName("CastIntegralFixedPointIntAPS");
10005 Text.Args.push_back(printArg<uint32_t>(P, PC));
10006 break;
10007case OP_CastIntegralFixedPointBool:
10008 Text.Op = PrintName("CastIntegralFixedPointBool");
10009 Text.Args.push_back(printArg<uint32_t>(P, PC));
10010 break;
10011#endif
10012#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10013bool emitCastIntegralFixedPointSint8( uint32_t , SourceInfo);
10014bool emitCastIntegralFixedPointUint8( uint32_t , SourceInfo);
10015bool emitCastIntegralFixedPointSint16( uint32_t , SourceInfo);
10016bool emitCastIntegralFixedPointUint16( uint32_t , SourceInfo);
10017bool emitCastIntegralFixedPointSint32( uint32_t , SourceInfo);
10018bool emitCastIntegralFixedPointUint32( uint32_t , SourceInfo);
10019bool emitCastIntegralFixedPointSint64( uint32_t , SourceInfo);
10020bool emitCastIntegralFixedPointUint64( uint32_t , SourceInfo);
10021bool emitCastIntegralFixedPointIntAP( uint32_t , SourceInfo);
10022bool emitCastIntegralFixedPointIntAPS( uint32_t , SourceInfo);
10023bool emitCastIntegralFixedPointBool( uint32_t , SourceInfo);
10024#endif
10025#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10026[[nodiscard]] bool emitCastIntegralFixedPoint(PrimType, uint32_t, SourceInfo I);
10027#endif
10028#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
10029bool
10030#if defined(GET_EVAL_IMPL)
10031EvalEmitter
10032#else
10033ByteCodeEmitter
10034#endif
10035::emitCastIntegralFixedPoint(PrimType T0, uint32_t A0, SourceInfo I) {
10036 switch (T0) {
10037 case PT_Sint8:
10038 return emitCastIntegralFixedPointSint8(A0, I);
10039 case PT_Uint8:
10040 return emitCastIntegralFixedPointUint8(A0, I);
10041 case PT_Sint16:
10042 return emitCastIntegralFixedPointSint16(A0, I);
10043 case PT_Uint16:
10044 return emitCastIntegralFixedPointUint16(A0, I);
10045 case PT_Sint32:
10046 return emitCastIntegralFixedPointSint32(A0, I);
10047 case PT_Uint32:
10048 return emitCastIntegralFixedPointUint32(A0, I);
10049 case PT_Sint64:
10050 return emitCastIntegralFixedPointSint64(A0, I);
10051 case PT_Uint64:
10052 return emitCastIntegralFixedPointUint64(A0, I);
10053 case PT_IntAP:
10054 return emitCastIntegralFixedPointIntAP(A0, I);
10055 case PT_IntAPS:
10056 return emitCastIntegralFixedPointIntAPS(A0, I);
10057 case PT_Bool:
10058 return emitCastIntegralFixedPointBool(A0, I);
10059 default: llvm_unreachable("invalid type: emitCastIntegralFixedPoint");
10060 }
10061 llvm_unreachable("invalid enum value");
10062}
10063#endif
10064#ifdef GET_LINK_IMPL
10065bool ByteCodeEmitter::emitCastIntegralFixedPointSint8( uint32_t A0, SourceInfo L) {
10066 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint8, A0, L);
10067}
10068bool ByteCodeEmitter::emitCastIntegralFixedPointUint8( uint32_t A0, SourceInfo L) {
10069 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint8, A0, L);
10070}
10071bool ByteCodeEmitter::emitCastIntegralFixedPointSint16( uint32_t A0, SourceInfo L) {
10072 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint16, A0, L);
10073}
10074bool ByteCodeEmitter::emitCastIntegralFixedPointUint16( uint32_t A0, SourceInfo L) {
10075 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint16, A0, L);
10076}
10077bool ByteCodeEmitter::emitCastIntegralFixedPointSint32( uint32_t A0, SourceInfo L) {
10078 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint32, A0, L);
10079}
10080bool ByteCodeEmitter::emitCastIntegralFixedPointUint32( uint32_t A0, SourceInfo L) {
10081 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint32, A0, L);
10082}
10083bool ByteCodeEmitter::emitCastIntegralFixedPointSint64( uint32_t A0, SourceInfo L) {
10084 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint64, A0, L);
10085}
10086bool ByteCodeEmitter::emitCastIntegralFixedPointUint64( uint32_t A0, SourceInfo L) {
10087 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint64, A0, L);
10088}
10089bool ByteCodeEmitter::emitCastIntegralFixedPointIntAP( uint32_t A0, SourceInfo L) {
10090 return emitOp<uint32_t>(OP_CastIntegralFixedPointIntAP, A0, L);
10091}
10092bool ByteCodeEmitter::emitCastIntegralFixedPointIntAPS( uint32_t A0, SourceInfo L) {
10093 return emitOp<uint32_t>(OP_CastIntegralFixedPointIntAPS, A0, L);
10094}
10095bool ByteCodeEmitter::emitCastIntegralFixedPointBool( uint32_t A0, SourceInfo L) {
10096 return emitOp<uint32_t>(OP_CastIntegralFixedPointBool, A0, L);
10097}
10098#endif
10099#ifdef GET_EVAL_IMPL
10100bool EvalEmitter::emitCastIntegralFixedPointSint8( uint32_t A0, SourceInfo L) {
10101 if (!isActive()) return true;
10102 CurrentSource = L;
10103 return CastIntegralFixedPoint<PT_Sint8>(S, OpPC, A0);
10104}
10105bool EvalEmitter::emitCastIntegralFixedPointUint8( uint32_t A0, SourceInfo L) {
10106 if (!isActive()) return true;
10107 CurrentSource = L;
10108 return CastIntegralFixedPoint<PT_Uint8>(S, OpPC, A0);
10109}
10110bool EvalEmitter::emitCastIntegralFixedPointSint16( uint32_t A0, SourceInfo L) {
10111 if (!isActive()) return true;
10112 CurrentSource = L;
10113 return CastIntegralFixedPoint<PT_Sint16>(S, OpPC, A0);
10114}
10115bool EvalEmitter::emitCastIntegralFixedPointUint16( uint32_t A0, SourceInfo L) {
10116 if (!isActive()) return true;
10117 CurrentSource = L;
10118 return CastIntegralFixedPoint<PT_Uint16>(S, OpPC, A0);
10119}
10120bool EvalEmitter::emitCastIntegralFixedPointSint32( uint32_t A0, SourceInfo L) {
10121 if (!isActive()) return true;
10122 CurrentSource = L;
10123 return CastIntegralFixedPoint<PT_Sint32>(S, OpPC, A0);
10124}
10125bool EvalEmitter::emitCastIntegralFixedPointUint32( uint32_t A0, SourceInfo L) {
10126 if (!isActive()) return true;
10127 CurrentSource = L;
10128 return CastIntegralFixedPoint<PT_Uint32>(S, OpPC, A0);
10129}
10130bool EvalEmitter::emitCastIntegralFixedPointSint64( uint32_t A0, SourceInfo L) {
10131 if (!isActive()) return true;
10132 CurrentSource = L;
10133 return CastIntegralFixedPoint<PT_Sint64>(S, OpPC, A0);
10134}
10135bool EvalEmitter::emitCastIntegralFixedPointUint64( uint32_t A0, SourceInfo L) {
10136 if (!isActive()) return true;
10137 CurrentSource = L;
10138 return CastIntegralFixedPoint<PT_Uint64>(S, OpPC, A0);
10139}
10140bool EvalEmitter::emitCastIntegralFixedPointIntAP( uint32_t A0, SourceInfo L) {
10141 if (!isActive()) return true;
10142 CurrentSource = L;
10143 return CastIntegralFixedPoint<PT_IntAP>(S, OpPC, A0);
10144}
10145bool EvalEmitter::emitCastIntegralFixedPointIntAPS( uint32_t A0, SourceInfo L) {
10146 if (!isActive()) return true;
10147 CurrentSource = L;
10148 return CastIntegralFixedPoint<PT_IntAPS>(S, OpPC, A0);
10149}
10150bool EvalEmitter::emitCastIntegralFixedPointBool( uint32_t A0, SourceInfo L) {
10151 if (!isActive()) return true;
10152 CurrentSource = L;
10153 return CastIntegralFixedPoint<PT_Bool>(S, OpPC, A0);
10154}
10155#endif
10156#ifdef GET_OPCODE_NAMES
10157OP_CastIntegralFloatingSint8,
10158OP_CastIntegralFloatingUint8,
10159OP_CastIntegralFloatingSint16,
10160OP_CastIntegralFloatingUint16,
10161OP_CastIntegralFloatingSint32,
10162OP_CastIntegralFloatingUint32,
10163OP_CastIntegralFloatingSint64,
10164OP_CastIntegralFloatingUint64,
10165OP_CastIntegralFloatingIntAP,
10166OP_CastIntegralFloatingIntAPS,
10167OP_CastIntegralFloatingBool,
10168OP_CastIntegralFloatingFixedPoint,
10169#endif
10170#ifdef GET_INTERPFN_LIST
10171&Interp_CastIntegralFloatingSint8,
10172&Interp_CastIntegralFloatingUint8,
10173&Interp_CastIntegralFloatingSint16,
10174&Interp_CastIntegralFloatingUint16,
10175&Interp_CastIntegralFloatingSint32,
10176&Interp_CastIntegralFloatingUint32,
10177&Interp_CastIntegralFloatingSint64,
10178&Interp_CastIntegralFloatingUint64,
10179&Interp_CastIntegralFloatingIntAP,
10180&Interp_CastIntegralFloatingIntAPS,
10181&Interp_CastIntegralFloatingBool,
10182&Interp_CastIntegralFloatingFixedPoint,
10183#endif
10184#ifdef GET_INTERPFN_DISPATCHERS
10185PRESERVE_NONE
10186static bool Interp_CastIntegralFloatingSint8(InterpState &S, CodePtr &PC) {
10187 {
10188 CodePtr OpPC = PC;
10189 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10190 const auto V1 = ReadArg<uint32_t>(S, PC);
10191 if (!CastIntegralFloating<PT_Sint8>(S, OpPC, V0, V1)) return false;
10192 }
10193#if USE_TAILCALLS
10194 MUSTTAIL return InterpNext(S, PC);
10195#else
10196 return true;
10197#endif
10198}
10199PRESERVE_NONE
10200static bool Interp_CastIntegralFloatingUint8(InterpState &S, CodePtr &PC) {
10201 {
10202 CodePtr OpPC = PC;
10203 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10204 const auto V1 = ReadArg<uint32_t>(S, PC);
10205 if (!CastIntegralFloating<PT_Uint8>(S, OpPC, V0, V1)) return false;
10206 }
10207#if USE_TAILCALLS
10208 MUSTTAIL return InterpNext(S, PC);
10209#else
10210 return true;
10211#endif
10212}
10213PRESERVE_NONE
10214static bool Interp_CastIntegralFloatingSint16(InterpState &S, CodePtr &PC) {
10215 {
10216 CodePtr OpPC = PC;
10217 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10218 const auto V1 = ReadArg<uint32_t>(S, PC);
10219 if (!CastIntegralFloating<PT_Sint16>(S, OpPC, V0, V1)) return false;
10220 }
10221#if USE_TAILCALLS
10222 MUSTTAIL return InterpNext(S, PC);
10223#else
10224 return true;
10225#endif
10226}
10227PRESERVE_NONE
10228static bool Interp_CastIntegralFloatingUint16(InterpState &S, CodePtr &PC) {
10229 {
10230 CodePtr OpPC = PC;
10231 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10232 const auto V1 = ReadArg<uint32_t>(S, PC);
10233 if (!CastIntegralFloating<PT_Uint16>(S, OpPC, V0, V1)) return false;
10234 }
10235#if USE_TAILCALLS
10236 MUSTTAIL return InterpNext(S, PC);
10237#else
10238 return true;
10239#endif
10240}
10241PRESERVE_NONE
10242static bool Interp_CastIntegralFloatingSint32(InterpState &S, CodePtr &PC) {
10243 {
10244 CodePtr OpPC = PC;
10245 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10246 const auto V1 = ReadArg<uint32_t>(S, PC);
10247 if (!CastIntegralFloating<PT_Sint32>(S, OpPC, V0, V1)) return false;
10248 }
10249#if USE_TAILCALLS
10250 MUSTTAIL return InterpNext(S, PC);
10251#else
10252 return true;
10253#endif
10254}
10255PRESERVE_NONE
10256static bool Interp_CastIntegralFloatingUint32(InterpState &S, CodePtr &PC) {
10257 {
10258 CodePtr OpPC = PC;
10259 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10260 const auto V1 = ReadArg<uint32_t>(S, PC);
10261 if (!CastIntegralFloating<PT_Uint32>(S, OpPC, V0, V1)) return false;
10262 }
10263#if USE_TAILCALLS
10264 MUSTTAIL return InterpNext(S, PC);
10265#else
10266 return true;
10267#endif
10268}
10269PRESERVE_NONE
10270static bool Interp_CastIntegralFloatingSint64(InterpState &S, CodePtr &PC) {
10271 {
10272 CodePtr OpPC = PC;
10273 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10274 const auto V1 = ReadArg<uint32_t>(S, PC);
10275 if (!CastIntegralFloating<PT_Sint64>(S, OpPC, V0, V1)) return false;
10276 }
10277#if USE_TAILCALLS
10278 MUSTTAIL return InterpNext(S, PC);
10279#else
10280 return true;
10281#endif
10282}
10283PRESERVE_NONE
10284static bool Interp_CastIntegralFloatingUint64(InterpState &S, CodePtr &PC) {
10285 {
10286 CodePtr OpPC = PC;
10287 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10288 const auto V1 = ReadArg<uint32_t>(S, PC);
10289 if (!CastIntegralFloating<PT_Uint64>(S, OpPC, V0, V1)) return false;
10290 }
10291#if USE_TAILCALLS
10292 MUSTTAIL return InterpNext(S, PC);
10293#else
10294 return true;
10295#endif
10296}
10297PRESERVE_NONE
10298static bool Interp_CastIntegralFloatingIntAP(InterpState &S, CodePtr &PC) {
10299 {
10300 CodePtr OpPC = PC;
10301 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10302 const auto V1 = ReadArg<uint32_t>(S, PC);
10303 if (!CastIntegralFloating<PT_IntAP>(S, OpPC, V0, V1)) return false;
10304 }
10305#if USE_TAILCALLS
10306 MUSTTAIL return InterpNext(S, PC);
10307#else
10308 return true;
10309#endif
10310}
10311PRESERVE_NONE
10312static bool Interp_CastIntegralFloatingIntAPS(InterpState &S, CodePtr &PC) {
10313 {
10314 CodePtr OpPC = PC;
10315 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10316 const auto V1 = ReadArg<uint32_t>(S, PC);
10317 if (!CastIntegralFloating<PT_IntAPS>(S, OpPC, V0, V1)) return false;
10318 }
10319#if USE_TAILCALLS
10320 MUSTTAIL return InterpNext(S, PC);
10321#else
10322 return true;
10323#endif
10324}
10325PRESERVE_NONE
10326static bool Interp_CastIntegralFloatingBool(InterpState &S, CodePtr &PC) {
10327 {
10328 CodePtr OpPC = PC;
10329 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10330 const auto V1 = ReadArg<uint32_t>(S, PC);
10331 if (!CastIntegralFloating<PT_Bool>(S, OpPC, V0, V1)) return false;
10332 }
10333#if USE_TAILCALLS
10334 MUSTTAIL return InterpNext(S, PC);
10335#else
10336 return true;
10337#endif
10338}
10339PRESERVE_NONE
10340static bool Interp_CastIntegralFloatingFixedPoint(InterpState &S, CodePtr &PC) {
10341 {
10342 CodePtr OpPC = PC;
10343 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
10344 const auto V1 = ReadArg<uint32_t>(S, PC);
10345 if (!CastIntegralFloating<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
10346 }
10347#if USE_TAILCALLS
10348 MUSTTAIL return InterpNext(S, PC);
10349#else
10350 return true;
10351#endif
10352}
10353#endif
10354#ifdef GET_DISASM
10355case OP_CastIntegralFloatingSint8:
10356 Text.Op = PrintName("CastIntegralFloatingSint8");
10357 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10358 Text.Args.push_back(printArg<uint32_t>(P, PC));
10359 break;
10360case OP_CastIntegralFloatingUint8:
10361 Text.Op = PrintName("CastIntegralFloatingUint8");
10362 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10363 Text.Args.push_back(printArg<uint32_t>(P, PC));
10364 break;
10365case OP_CastIntegralFloatingSint16:
10366 Text.Op = PrintName("CastIntegralFloatingSint16");
10367 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10368 Text.Args.push_back(printArg<uint32_t>(P, PC));
10369 break;
10370case OP_CastIntegralFloatingUint16:
10371 Text.Op = PrintName("CastIntegralFloatingUint16");
10372 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10373 Text.Args.push_back(printArg<uint32_t>(P, PC));
10374 break;
10375case OP_CastIntegralFloatingSint32:
10376 Text.Op = PrintName("CastIntegralFloatingSint32");
10377 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10378 Text.Args.push_back(printArg<uint32_t>(P, PC));
10379 break;
10380case OP_CastIntegralFloatingUint32:
10381 Text.Op = PrintName("CastIntegralFloatingUint32");
10382 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10383 Text.Args.push_back(printArg<uint32_t>(P, PC));
10384 break;
10385case OP_CastIntegralFloatingSint64:
10386 Text.Op = PrintName("CastIntegralFloatingSint64");
10387 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10388 Text.Args.push_back(printArg<uint32_t>(P, PC));
10389 break;
10390case OP_CastIntegralFloatingUint64:
10391 Text.Op = PrintName("CastIntegralFloatingUint64");
10392 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10393 Text.Args.push_back(printArg<uint32_t>(P, PC));
10394 break;
10395case OP_CastIntegralFloatingIntAP:
10396 Text.Op = PrintName("CastIntegralFloatingIntAP");
10397 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10398 Text.Args.push_back(printArg<uint32_t>(P, PC));
10399 break;
10400case OP_CastIntegralFloatingIntAPS:
10401 Text.Op = PrintName("CastIntegralFloatingIntAPS");
10402 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10403 Text.Args.push_back(printArg<uint32_t>(P, PC));
10404 break;
10405case OP_CastIntegralFloatingBool:
10406 Text.Op = PrintName("CastIntegralFloatingBool");
10407 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10408 Text.Args.push_back(printArg<uint32_t>(P, PC));
10409 break;
10410case OP_CastIntegralFloatingFixedPoint:
10411 Text.Op = PrintName("CastIntegralFloatingFixedPoint");
10412 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
10413 Text.Args.push_back(printArg<uint32_t>(P, PC));
10414 break;
10415#endif
10416#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10417bool emitCastIntegralFloatingSint8( const llvm::fltSemantics * , uint32_t , SourceInfo);
10418bool emitCastIntegralFloatingUint8( const llvm::fltSemantics * , uint32_t , SourceInfo);
10419bool emitCastIntegralFloatingSint16( const llvm::fltSemantics * , uint32_t , SourceInfo);
10420bool emitCastIntegralFloatingUint16( const llvm::fltSemantics * , uint32_t , SourceInfo);
10421bool emitCastIntegralFloatingSint32( const llvm::fltSemantics * , uint32_t , SourceInfo);
10422bool emitCastIntegralFloatingUint32( const llvm::fltSemantics * , uint32_t , SourceInfo);
10423bool emitCastIntegralFloatingSint64( const llvm::fltSemantics * , uint32_t , SourceInfo);
10424bool emitCastIntegralFloatingUint64( const llvm::fltSemantics * , uint32_t , SourceInfo);
10425bool emitCastIntegralFloatingIntAP( const llvm::fltSemantics * , uint32_t , SourceInfo);
10426bool emitCastIntegralFloatingIntAPS( const llvm::fltSemantics * , uint32_t , SourceInfo);
10427bool emitCastIntegralFloatingBool( const llvm::fltSemantics * , uint32_t , SourceInfo);
10428bool emitCastIntegralFloatingFixedPoint( const llvm::fltSemantics * , uint32_t , SourceInfo);
10429#endif
10430#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10431[[nodiscard]] bool emitCastIntegralFloating(PrimType, const llvm::fltSemantics *, uint32_t, SourceInfo I);
10432#endif
10433#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
10434bool
10435#if defined(GET_EVAL_IMPL)
10436EvalEmitter
10437#else
10438ByteCodeEmitter
10439#endif
10440::emitCastIntegralFloating(PrimType T0, const llvm::fltSemantics * A0, uint32_t A1, SourceInfo I) {
10441 switch (T0) {
10442 case PT_Sint8:
10443 return emitCastIntegralFloatingSint8(A0, A1, I);
10444 case PT_Uint8:
10445 return emitCastIntegralFloatingUint8(A0, A1, I);
10446 case PT_Sint16:
10447 return emitCastIntegralFloatingSint16(A0, A1, I);
10448 case PT_Uint16:
10449 return emitCastIntegralFloatingUint16(A0, A1, I);
10450 case PT_Sint32:
10451 return emitCastIntegralFloatingSint32(A0, A1, I);
10452 case PT_Uint32:
10453 return emitCastIntegralFloatingUint32(A0, A1, I);
10454 case PT_Sint64:
10455 return emitCastIntegralFloatingSint64(A0, A1, I);
10456 case PT_Uint64:
10457 return emitCastIntegralFloatingUint64(A0, A1, I);
10458 case PT_IntAP:
10459 return emitCastIntegralFloatingIntAP(A0, A1, I);
10460 case PT_IntAPS:
10461 return emitCastIntegralFloatingIntAPS(A0, A1, I);
10462 case PT_Bool:
10463 return emitCastIntegralFloatingBool(A0, A1, I);
10464 case PT_FixedPoint:
10465 return emitCastIntegralFloatingFixedPoint(A0, A1, I);
10466 default: llvm_unreachable("invalid type: emitCastIntegralFloating");
10467 }
10468 llvm_unreachable("invalid enum value");
10469}
10470#endif
10471#ifdef GET_LINK_IMPL
10472bool ByteCodeEmitter::emitCastIntegralFloatingSint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10473 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint8, A0, A1, L);
10474}
10475bool ByteCodeEmitter::emitCastIntegralFloatingUint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10476 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint8, A0, A1, L);
10477}
10478bool ByteCodeEmitter::emitCastIntegralFloatingSint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10479 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint16, A0, A1, L);
10480}
10481bool ByteCodeEmitter::emitCastIntegralFloatingUint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10482 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint16, A0, A1, L);
10483}
10484bool ByteCodeEmitter::emitCastIntegralFloatingSint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10485 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint32, A0, A1, L);
10486}
10487bool ByteCodeEmitter::emitCastIntegralFloatingUint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10488 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint32, A0, A1, L);
10489}
10490bool ByteCodeEmitter::emitCastIntegralFloatingSint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10491 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint64, A0, A1, L);
10492}
10493bool ByteCodeEmitter::emitCastIntegralFloatingUint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10494 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint64, A0, A1, L);
10495}
10496bool ByteCodeEmitter::emitCastIntegralFloatingIntAP( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10497 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingIntAP, A0, A1, L);
10498}
10499bool ByteCodeEmitter::emitCastIntegralFloatingIntAPS( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10500 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingIntAPS, A0, A1, L);
10501}
10502bool ByteCodeEmitter::emitCastIntegralFloatingBool( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10503 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingBool, A0, A1, L);
10504}
10505bool ByteCodeEmitter::emitCastIntegralFloatingFixedPoint( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10506 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingFixedPoint, A0, A1, L);
10507}
10508#endif
10509#ifdef GET_EVAL_IMPL
10510bool EvalEmitter::emitCastIntegralFloatingSint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10511 if (!isActive()) return true;
10512 CurrentSource = L;
10513 return CastIntegralFloating<PT_Sint8>(S, OpPC, A0, A1);
10514}
10515bool EvalEmitter::emitCastIntegralFloatingUint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10516 if (!isActive()) return true;
10517 CurrentSource = L;
10518 return CastIntegralFloating<PT_Uint8>(S, OpPC, A0, A1);
10519}
10520bool EvalEmitter::emitCastIntegralFloatingSint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10521 if (!isActive()) return true;
10522 CurrentSource = L;
10523 return CastIntegralFloating<PT_Sint16>(S, OpPC, A0, A1);
10524}
10525bool EvalEmitter::emitCastIntegralFloatingUint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10526 if (!isActive()) return true;
10527 CurrentSource = L;
10528 return CastIntegralFloating<PT_Uint16>(S, OpPC, A0, A1);
10529}
10530bool EvalEmitter::emitCastIntegralFloatingSint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10531 if (!isActive()) return true;
10532 CurrentSource = L;
10533 return CastIntegralFloating<PT_Sint32>(S, OpPC, A0, A1);
10534}
10535bool EvalEmitter::emitCastIntegralFloatingUint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10536 if (!isActive()) return true;
10537 CurrentSource = L;
10538 return CastIntegralFloating<PT_Uint32>(S, OpPC, A0, A1);
10539}
10540bool EvalEmitter::emitCastIntegralFloatingSint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10541 if (!isActive()) return true;
10542 CurrentSource = L;
10543 return CastIntegralFloating<PT_Sint64>(S, OpPC, A0, A1);
10544}
10545bool EvalEmitter::emitCastIntegralFloatingUint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10546 if (!isActive()) return true;
10547 CurrentSource = L;
10548 return CastIntegralFloating<PT_Uint64>(S, OpPC, A0, A1);
10549}
10550bool EvalEmitter::emitCastIntegralFloatingIntAP( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10551 if (!isActive()) return true;
10552 CurrentSource = L;
10553 return CastIntegralFloating<PT_IntAP>(S, OpPC, A0, A1);
10554}
10555bool EvalEmitter::emitCastIntegralFloatingIntAPS( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10556 if (!isActive()) return true;
10557 CurrentSource = L;
10558 return CastIntegralFloating<PT_IntAPS>(S, OpPC, A0, A1);
10559}
10560bool EvalEmitter::emitCastIntegralFloatingBool( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10561 if (!isActive()) return true;
10562 CurrentSource = L;
10563 return CastIntegralFloating<PT_Bool>(S, OpPC, A0, A1);
10564}
10565bool EvalEmitter::emitCastIntegralFloatingFixedPoint( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
10566 if (!isActive()) return true;
10567 CurrentSource = L;
10568 return CastIntegralFloating<PT_FixedPoint>(S, OpPC, A0, A1);
10569}
10570#endif
10571#ifdef GET_OPCODE_NAMES
10572OP_CastMemberPtrBasePop,
10573#endif
10574#ifdef GET_INTERPFN_LIST
10575&Interp_CastMemberPtrBasePop,
10576#endif
10577#ifdef GET_INTERPFN_DISPATCHERS
10578PRESERVE_NONE
10579static bool Interp_CastMemberPtrBasePop(InterpState &S, CodePtr &PC) {
10580 {
10581 CodePtr OpPC = PC;
10582 const auto V0 = ReadArg<int32_t>(S, PC);
10583 const auto V1 = ReadArg<const RecordDecl *>(S, PC);
10584 if (!CastMemberPtrBasePop(S, OpPC, V0, V1)) return false;
10585 }
10586#if USE_TAILCALLS
10587 MUSTTAIL return InterpNext(S, PC);
10588#else
10589 return true;
10590#endif
10591}
10592#endif
10593#ifdef GET_DISASM
10594case OP_CastMemberPtrBasePop:
10595 Text.Op = PrintName("CastMemberPtrBasePop");
10596 Text.Args.push_back(printArg<int32_t>(P, PC));
10597 Text.Args.push_back(printArg<const RecordDecl *>(P, PC));
10598 break;
10599#endif
10600#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10601bool emitCastMemberPtrBasePop( int32_t , const RecordDecl * , SourceInfo);
10602#endif
10603#ifdef GET_LINK_IMPL
10604bool ByteCodeEmitter::emitCastMemberPtrBasePop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
10605 return emitOp<int32_t, const RecordDecl *>(OP_CastMemberPtrBasePop, A0, A1, L);
10606}
10607#endif
10608#ifdef GET_EVAL_IMPL
10609bool EvalEmitter::emitCastMemberPtrBasePop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
10610 if (!isActive()) return true;
10611 CurrentSource = L;
10612 return CastMemberPtrBasePop(S, OpPC, A0, A1);
10613}
10614#endif
10615#ifdef GET_OPCODE_NAMES
10616OP_CastMemberPtrDerivedPop,
10617#endif
10618#ifdef GET_INTERPFN_LIST
10619&Interp_CastMemberPtrDerivedPop,
10620#endif
10621#ifdef GET_INTERPFN_DISPATCHERS
10622PRESERVE_NONE
10623static bool Interp_CastMemberPtrDerivedPop(InterpState &S, CodePtr &PC) {
10624 {
10625 CodePtr OpPC = PC;
10626 const auto V0 = ReadArg<int32_t>(S, PC);
10627 const auto V1 = ReadArg<const RecordDecl *>(S, PC);
10628 if (!CastMemberPtrDerivedPop(S, OpPC, V0, V1)) return false;
10629 }
10630#if USE_TAILCALLS
10631 MUSTTAIL return InterpNext(S, PC);
10632#else
10633 return true;
10634#endif
10635}
10636#endif
10637#ifdef GET_DISASM
10638case OP_CastMemberPtrDerivedPop:
10639 Text.Op = PrintName("CastMemberPtrDerivedPop");
10640 Text.Args.push_back(printArg<int32_t>(P, PC));
10641 Text.Args.push_back(printArg<const RecordDecl *>(P, PC));
10642 break;
10643#endif
10644#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10645bool emitCastMemberPtrDerivedPop( int32_t , const RecordDecl * , SourceInfo);
10646#endif
10647#ifdef GET_LINK_IMPL
10648bool ByteCodeEmitter::emitCastMemberPtrDerivedPop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
10649 return emitOp<int32_t, const RecordDecl *>(OP_CastMemberPtrDerivedPop, A0, A1, L);
10650}
10651#endif
10652#ifdef GET_EVAL_IMPL
10653bool EvalEmitter::emitCastMemberPtrDerivedPop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
10654 if (!isActive()) return true;
10655 CurrentSource = L;
10656 return CastMemberPtrDerivedPop(S, OpPC, A0, A1);
10657}
10658#endif
10659#ifdef GET_OPCODE_NAMES
10660OP_CastMemberPtrPtr,
10661#endif
10662#ifdef GET_INTERPFN_LIST
10663&Interp_CastMemberPtrPtr,
10664#endif
10665#ifdef GET_INTERPFN_DISPATCHERS
10666PRESERVE_NONE
10667static bool Interp_CastMemberPtrPtr(InterpState &S, CodePtr &PC) {
10668 if (!CastMemberPtrPtr(S, PC)) return false;
10669#if USE_TAILCALLS
10670 MUSTTAIL return InterpNext(S, PC);
10671#else
10672 return true;
10673#endif
10674}
10675#endif
10676#ifdef GET_DISASM
10677case OP_CastMemberPtrPtr:
10678 Text.Op = PrintName("CastMemberPtrPtr");
10679 break;
10680#endif
10681#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10682bool emitCastMemberPtrPtr(SourceInfo);
10683#endif
10684#ifdef GET_LINK_IMPL
10685bool ByteCodeEmitter::emitCastMemberPtrPtr(SourceInfo L) {
10686 return emitOp<>(OP_CastMemberPtrPtr, L);
10687}
10688#endif
10689#ifdef GET_EVAL_IMPL
10690bool EvalEmitter::emitCastMemberPtrPtr(SourceInfo L) {
10691 if (!isActive()) return true;
10692 CurrentSource = L;
10693 return CastMemberPtrPtr(S, OpPC);
10694}
10695#endif
10696#ifdef GET_OPCODE_NAMES
10697OP_CastPointerIntegralSint8,
10698OP_CastPointerIntegralUint8,
10699OP_CastPointerIntegralSint16,
10700OP_CastPointerIntegralUint16,
10701OP_CastPointerIntegralSint32,
10702OP_CastPointerIntegralUint32,
10703OP_CastPointerIntegralSint64,
10704OP_CastPointerIntegralUint64,
10705OP_CastPointerIntegralBool,
10706#endif
10707#ifdef GET_INTERPFN_LIST
10708&Interp_CastPointerIntegralSint8,
10709&Interp_CastPointerIntegralUint8,
10710&Interp_CastPointerIntegralSint16,
10711&Interp_CastPointerIntegralUint16,
10712&Interp_CastPointerIntegralSint32,
10713&Interp_CastPointerIntegralUint32,
10714&Interp_CastPointerIntegralSint64,
10715&Interp_CastPointerIntegralUint64,
10716&Interp_CastPointerIntegralBool,
10717#endif
10718#ifdef GET_INTERPFN_DISPATCHERS
10719PRESERVE_NONE
10720static bool Interp_CastPointerIntegralSint8(InterpState &S, CodePtr &PC) {
10721 if (!CastPointerIntegral<PT_Sint8>(S, PC)) return false;
10722#if USE_TAILCALLS
10723 MUSTTAIL return InterpNext(S, PC);
10724#else
10725 return true;
10726#endif
10727}
10728PRESERVE_NONE
10729static bool Interp_CastPointerIntegralUint8(InterpState &S, CodePtr &PC) {
10730 if (!CastPointerIntegral<PT_Uint8>(S, PC)) return false;
10731#if USE_TAILCALLS
10732 MUSTTAIL return InterpNext(S, PC);
10733#else
10734 return true;
10735#endif
10736}
10737PRESERVE_NONE
10738static bool Interp_CastPointerIntegralSint16(InterpState &S, CodePtr &PC) {
10739 if (!CastPointerIntegral<PT_Sint16>(S, PC)) return false;
10740#if USE_TAILCALLS
10741 MUSTTAIL return InterpNext(S, PC);
10742#else
10743 return true;
10744#endif
10745}
10746PRESERVE_NONE
10747static bool Interp_CastPointerIntegralUint16(InterpState &S, CodePtr &PC) {
10748 if (!CastPointerIntegral<PT_Uint16>(S, PC)) return false;
10749#if USE_TAILCALLS
10750 MUSTTAIL return InterpNext(S, PC);
10751#else
10752 return true;
10753#endif
10754}
10755PRESERVE_NONE
10756static bool Interp_CastPointerIntegralSint32(InterpState &S, CodePtr &PC) {
10757 if (!CastPointerIntegral<PT_Sint32>(S, PC)) return false;
10758#if USE_TAILCALLS
10759 MUSTTAIL return InterpNext(S, PC);
10760#else
10761 return true;
10762#endif
10763}
10764PRESERVE_NONE
10765static bool Interp_CastPointerIntegralUint32(InterpState &S, CodePtr &PC) {
10766 if (!CastPointerIntegral<PT_Uint32>(S, PC)) return false;
10767#if USE_TAILCALLS
10768 MUSTTAIL return InterpNext(S, PC);
10769#else
10770 return true;
10771#endif
10772}
10773PRESERVE_NONE
10774static bool Interp_CastPointerIntegralSint64(InterpState &S, CodePtr &PC) {
10775 if (!CastPointerIntegral<PT_Sint64>(S, PC)) return false;
10776#if USE_TAILCALLS
10777 MUSTTAIL return InterpNext(S, PC);
10778#else
10779 return true;
10780#endif
10781}
10782PRESERVE_NONE
10783static bool Interp_CastPointerIntegralUint64(InterpState &S, CodePtr &PC) {
10784 if (!CastPointerIntegral<PT_Uint64>(S, PC)) return false;
10785#if USE_TAILCALLS
10786 MUSTTAIL return InterpNext(S, PC);
10787#else
10788 return true;
10789#endif
10790}
10791PRESERVE_NONE
10792static bool Interp_CastPointerIntegralBool(InterpState &S, CodePtr &PC) {
10793 if (!CastPointerIntegral<PT_Bool>(S, PC)) return false;
10794#if USE_TAILCALLS
10795 MUSTTAIL return InterpNext(S, PC);
10796#else
10797 return true;
10798#endif
10799}
10800#endif
10801#ifdef GET_DISASM
10802case OP_CastPointerIntegralSint8:
10803 Text.Op = PrintName("CastPointerIntegralSint8");
10804 break;
10805case OP_CastPointerIntegralUint8:
10806 Text.Op = PrintName("CastPointerIntegralUint8");
10807 break;
10808case OP_CastPointerIntegralSint16:
10809 Text.Op = PrintName("CastPointerIntegralSint16");
10810 break;
10811case OP_CastPointerIntegralUint16:
10812 Text.Op = PrintName("CastPointerIntegralUint16");
10813 break;
10814case OP_CastPointerIntegralSint32:
10815 Text.Op = PrintName("CastPointerIntegralSint32");
10816 break;
10817case OP_CastPointerIntegralUint32:
10818 Text.Op = PrintName("CastPointerIntegralUint32");
10819 break;
10820case OP_CastPointerIntegralSint64:
10821 Text.Op = PrintName("CastPointerIntegralSint64");
10822 break;
10823case OP_CastPointerIntegralUint64:
10824 Text.Op = PrintName("CastPointerIntegralUint64");
10825 break;
10826case OP_CastPointerIntegralBool:
10827 Text.Op = PrintName("CastPointerIntegralBool");
10828 break;
10829#endif
10830#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10831bool emitCastPointerIntegralSint8(SourceInfo);
10832bool emitCastPointerIntegralUint8(SourceInfo);
10833bool emitCastPointerIntegralSint16(SourceInfo);
10834bool emitCastPointerIntegralUint16(SourceInfo);
10835bool emitCastPointerIntegralSint32(SourceInfo);
10836bool emitCastPointerIntegralUint32(SourceInfo);
10837bool emitCastPointerIntegralSint64(SourceInfo);
10838bool emitCastPointerIntegralUint64(SourceInfo);
10839bool emitCastPointerIntegralBool(SourceInfo);
10840#endif
10841#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10842[[nodiscard]] bool emitCastPointerIntegral(PrimType, SourceInfo I);
10843#endif
10844#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
10845bool
10846#if defined(GET_EVAL_IMPL)
10847EvalEmitter
10848#else
10849ByteCodeEmitter
10850#endif
10851::emitCastPointerIntegral(PrimType T0, SourceInfo I) {
10852 switch (T0) {
10853 case PT_Sint8:
10854 return emitCastPointerIntegralSint8(I);
10855 case PT_Uint8:
10856 return emitCastPointerIntegralUint8(I);
10857 case PT_Sint16:
10858 return emitCastPointerIntegralSint16(I);
10859 case PT_Uint16:
10860 return emitCastPointerIntegralUint16(I);
10861 case PT_Sint32:
10862 return emitCastPointerIntegralSint32(I);
10863 case PT_Uint32:
10864 return emitCastPointerIntegralUint32(I);
10865 case PT_Sint64:
10866 return emitCastPointerIntegralSint64(I);
10867 case PT_Uint64:
10868 return emitCastPointerIntegralUint64(I);
10869 case PT_Bool:
10870 return emitCastPointerIntegralBool(I);
10871 default: llvm_unreachable("invalid type: emitCastPointerIntegral");
10872 }
10873 llvm_unreachable("invalid enum value");
10874}
10875#endif
10876#ifdef GET_LINK_IMPL
10877bool ByteCodeEmitter::emitCastPointerIntegralSint8(SourceInfo L) {
10878 return emitOp<>(OP_CastPointerIntegralSint8, L);
10879}
10880bool ByteCodeEmitter::emitCastPointerIntegralUint8(SourceInfo L) {
10881 return emitOp<>(OP_CastPointerIntegralUint8, L);
10882}
10883bool ByteCodeEmitter::emitCastPointerIntegralSint16(SourceInfo L) {
10884 return emitOp<>(OP_CastPointerIntegralSint16, L);
10885}
10886bool ByteCodeEmitter::emitCastPointerIntegralUint16(SourceInfo L) {
10887 return emitOp<>(OP_CastPointerIntegralUint16, L);
10888}
10889bool ByteCodeEmitter::emitCastPointerIntegralSint32(SourceInfo L) {
10890 return emitOp<>(OP_CastPointerIntegralSint32, L);
10891}
10892bool ByteCodeEmitter::emitCastPointerIntegralUint32(SourceInfo L) {
10893 return emitOp<>(OP_CastPointerIntegralUint32, L);
10894}
10895bool ByteCodeEmitter::emitCastPointerIntegralSint64(SourceInfo L) {
10896 return emitOp<>(OP_CastPointerIntegralSint64, L);
10897}
10898bool ByteCodeEmitter::emitCastPointerIntegralUint64(SourceInfo L) {
10899 return emitOp<>(OP_CastPointerIntegralUint64, L);
10900}
10901bool ByteCodeEmitter::emitCastPointerIntegralBool(SourceInfo L) {
10902 return emitOp<>(OP_CastPointerIntegralBool, L);
10903}
10904#endif
10905#ifdef GET_EVAL_IMPL
10906bool EvalEmitter::emitCastPointerIntegralSint8(SourceInfo L) {
10907 if (!isActive()) return true;
10908 CurrentSource = L;
10909 return CastPointerIntegral<PT_Sint8>(S, OpPC);
10910}
10911bool EvalEmitter::emitCastPointerIntegralUint8(SourceInfo L) {
10912 if (!isActive()) return true;
10913 CurrentSource = L;
10914 return CastPointerIntegral<PT_Uint8>(S, OpPC);
10915}
10916bool EvalEmitter::emitCastPointerIntegralSint16(SourceInfo L) {
10917 if (!isActive()) return true;
10918 CurrentSource = L;
10919 return CastPointerIntegral<PT_Sint16>(S, OpPC);
10920}
10921bool EvalEmitter::emitCastPointerIntegralUint16(SourceInfo L) {
10922 if (!isActive()) return true;
10923 CurrentSource = L;
10924 return CastPointerIntegral<PT_Uint16>(S, OpPC);
10925}
10926bool EvalEmitter::emitCastPointerIntegralSint32(SourceInfo L) {
10927 if (!isActive()) return true;
10928 CurrentSource = L;
10929 return CastPointerIntegral<PT_Sint32>(S, OpPC);
10930}
10931bool EvalEmitter::emitCastPointerIntegralUint32(SourceInfo L) {
10932 if (!isActive()) return true;
10933 CurrentSource = L;
10934 return CastPointerIntegral<PT_Uint32>(S, OpPC);
10935}
10936bool EvalEmitter::emitCastPointerIntegralSint64(SourceInfo L) {
10937 if (!isActive()) return true;
10938 CurrentSource = L;
10939 return CastPointerIntegral<PT_Sint64>(S, OpPC);
10940}
10941bool EvalEmitter::emitCastPointerIntegralUint64(SourceInfo L) {
10942 if (!isActive()) return true;
10943 CurrentSource = L;
10944 return CastPointerIntegral<PT_Uint64>(S, OpPC);
10945}
10946bool EvalEmitter::emitCastPointerIntegralBool(SourceInfo L) {
10947 if (!isActive()) return true;
10948 CurrentSource = L;
10949 return CastPointerIntegral<PT_Bool>(S, OpPC);
10950}
10951#endif
10952#ifdef GET_OPCODE_NAMES
10953OP_CastPointerIntegralAP,
10954#endif
10955#ifdef GET_INTERPFN_LIST
10956&Interp_CastPointerIntegralAP,
10957#endif
10958#ifdef GET_INTERPFN_DISPATCHERS
10959PRESERVE_NONE
10960static bool Interp_CastPointerIntegralAP(InterpState &S, CodePtr &PC) {
10961 {
10962 CodePtr OpPC = PC;
10963 const auto V0 = ReadArg<uint32_t>(S, PC);
10964 if (!CastPointerIntegralAP(S, OpPC, V0)) return false;
10965 }
10966#if USE_TAILCALLS
10967 MUSTTAIL return InterpNext(S, PC);
10968#else
10969 return true;
10970#endif
10971}
10972#endif
10973#ifdef GET_DISASM
10974case OP_CastPointerIntegralAP:
10975 Text.Op = PrintName("CastPointerIntegralAP");
10976 Text.Args.push_back(printArg<uint32_t>(P, PC));
10977 break;
10978#endif
10979#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10980bool emitCastPointerIntegralAP( uint32_t , SourceInfo);
10981#endif
10982#ifdef GET_LINK_IMPL
10983bool ByteCodeEmitter::emitCastPointerIntegralAP( uint32_t A0, SourceInfo L) {
10984 return emitOp<uint32_t>(OP_CastPointerIntegralAP, A0, L);
10985}
10986#endif
10987#ifdef GET_EVAL_IMPL
10988bool EvalEmitter::emitCastPointerIntegralAP( uint32_t A0, SourceInfo L) {
10989 if (!isActive()) return true;
10990 CurrentSource = L;
10991 return CastPointerIntegralAP(S, OpPC, A0);
10992}
10993#endif
10994#ifdef GET_OPCODE_NAMES
10995OP_CastPointerIntegralAPS,
10996#endif
10997#ifdef GET_INTERPFN_LIST
10998&Interp_CastPointerIntegralAPS,
10999#endif
11000#ifdef GET_INTERPFN_DISPATCHERS
11001PRESERVE_NONE
11002static bool Interp_CastPointerIntegralAPS(InterpState &S, CodePtr &PC) {
11003 {
11004 CodePtr OpPC = PC;
11005 const auto V0 = ReadArg<uint32_t>(S, PC);
11006 if (!CastPointerIntegralAPS(S, OpPC, V0)) return false;
11007 }
11008#if USE_TAILCALLS
11009 MUSTTAIL return InterpNext(S, PC);
11010#else
11011 return true;
11012#endif
11013}
11014#endif
11015#ifdef GET_DISASM
11016case OP_CastPointerIntegralAPS:
11017 Text.Op = PrintName("CastPointerIntegralAPS");
11018 Text.Args.push_back(printArg<uint32_t>(P, PC));
11019 break;
11020#endif
11021#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11022bool emitCastPointerIntegralAPS( uint32_t , SourceInfo);
11023#endif
11024#ifdef GET_LINK_IMPL
11025bool ByteCodeEmitter::emitCastPointerIntegralAPS( uint32_t A0, SourceInfo L) {
11026 return emitOp<uint32_t>(OP_CastPointerIntegralAPS, A0, L);
11027}
11028#endif
11029#ifdef GET_EVAL_IMPL
11030bool EvalEmitter::emitCastPointerIntegralAPS( uint32_t A0, SourceInfo L) {
11031 if (!isActive()) return true;
11032 CurrentSource = L;
11033 return CastPointerIntegralAPS(S, OpPC, A0);
11034}
11035#endif
11036#ifdef GET_OPCODE_NAMES
11037OP_CheckAllocations,
11038#endif
11039#ifdef GET_INTERPFN_LIST
11040&Interp_CheckAllocations,
11041#endif
11042#ifdef GET_INTERPFN_DISPATCHERS
11043PRESERVE_NONE
11044static bool Interp_CheckAllocations(InterpState &S, CodePtr &PC) {
11045 if (!CheckAllocations(S, PC)) return false;
11046#if USE_TAILCALLS
11047 MUSTTAIL return InterpNext(S, PC);
11048#else
11049 return true;
11050#endif
11051}
11052#endif
11053#ifdef GET_DISASM
11054case OP_CheckAllocations:
11055 Text.Op = PrintName("CheckAllocations");
11056 break;
11057#endif
11058#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11059bool emitCheckAllocations(SourceInfo);
11060#endif
11061#ifdef GET_LINK_IMPL
11062bool ByteCodeEmitter::emitCheckAllocations(SourceInfo L) {
11063 return emitOp<>(OP_CheckAllocations, L);
11064}
11065#endif
11066#ifdef GET_EVAL_IMPL
11067bool EvalEmitter::emitCheckAllocations(SourceInfo L) {
11068 if (!isActive()) return true;
11069 CurrentSource = L;
11070 return CheckAllocations(S, OpPC);
11071}
11072#endif
11073#ifdef GET_OPCODE_NAMES
11074OP_CheckArrayDestSize,
11075#endif
11076#ifdef GET_INTERPFN_LIST
11077&Interp_CheckArrayDestSize,
11078#endif
11079#ifdef GET_INTERPFN_DISPATCHERS
11080PRESERVE_NONE
11081static bool Interp_CheckArrayDestSize(InterpState &S, CodePtr &PC) {
11082 {
11083 CodePtr OpPC = PC;
11084 const auto V0 = ReadArg<uint64_t>(S, PC);
11085 if (!CheckArrayDestSize(S, OpPC, V0)) return false;
11086 }
11087#if USE_TAILCALLS
11088 MUSTTAIL return InterpNext(S, PC);
11089#else
11090 return true;
11091#endif
11092}
11093#endif
11094#ifdef GET_DISASM
11095case OP_CheckArrayDestSize:
11096 Text.Op = PrintName("CheckArrayDestSize");
11097 Text.Args.push_back(printArg<uint64_t>(P, PC));
11098 break;
11099#endif
11100#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11101bool emitCheckArrayDestSize( uint64_t , SourceInfo);
11102#endif
11103#ifdef GET_LINK_IMPL
11104bool ByteCodeEmitter::emitCheckArrayDestSize( uint64_t A0, SourceInfo L) {
11105 return emitOp<uint64_t>(OP_CheckArrayDestSize, A0, L);
11106}
11107#endif
11108#ifdef GET_EVAL_IMPL
11109bool EvalEmitter::emitCheckArrayDestSize( uint64_t A0, SourceInfo L) {
11110 if (!isActive()) return true;
11111 CurrentSource = L;
11112 return CheckArrayDestSize(S, OpPC, A0);
11113}
11114#endif
11115#ifdef GET_OPCODE_NAMES
11116OP_CheckArraySize,
11117#endif
11118#ifdef GET_INTERPFN_LIST
11119&Interp_CheckArraySize,
11120#endif
11121#ifdef GET_INTERPFN_DISPATCHERS
11122PRESERVE_NONE
11123static bool Interp_CheckArraySize(InterpState &S, CodePtr &PC) {
11124 {
11125 CodePtr OpPC = PC;
11126 const auto V0 = ReadArg<uint64_t>(S, PC);
11127 if (!CheckArraySize(S, OpPC, V0)) return false;
11128 }
11129#if USE_TAILCALLS
11130 MUSTTAIL return InterpNext(S, PC);
11131#else
11132 return true;
11133#endif
11134}
11135#endif
11136#ifdef GET_DISASM
11137case OP_CheckArraySize:
11138 Text.Op = PrintName("CheckArraySize");
11139 Text.Args.push_back(printArg<uint64_t>(P, PC));
11140 break;
11141#endif
11142#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11143bool emitCheckArraySize( uint64_t , SourceInfo);
11144#endif
11145#ifdef GET_LINK_IMPL
11146bool ByteCodeEmitter::emitCheckArraySize( uint64_t A0, SourceInfo L) {
11147 return emitOp<uint64_t>(OP_CheckArraySize, A0, L);
11148}
11149#endif
11150#ifdef GET_EVAL_IMPL
11151bool EvalEmitter::emitCheckArraySize( uint64_t A0, SourceInfo L) {
11152 if (!isActive()) return true;
11153 CurrentSource = L;
11154 return CheckArraySize(S, OpPC, A0);
11155}
11156#endif
11157#ifdef GET_OPCODE_NAMES
11158OP_CheckBitCast,
11159#endif
11160#ifdef GET_INTERPFN_LIST
11161&Interp_CheckBitCast,
11162#endif
11163#ifdef GET_INTERPFN_DISPATCHERS
11164PRESERVE_NONE
11165static bool Interp_CheckBitCast(InterpState &S, CodePtr &PC) {
11166 {
11167 CodePtr OpPC = PC;
11168 const auto V0 = ReadArg<const Type *>(S, PC);
11169 const auto V1 = ReadArg<bool>(S, PC);
11170 if (!CheckBitCast(S, OpPC, V0, V1)) return false;
11171 }
11172#if USE_TAILCALLS
11173 MUSTTAIL return InterpNext(S, PC);
11174#else
11175 return true;
11176#endif
11177}
11178#endif
11179#ifdef GET_DISASM
11180case OP_CheckBitCast:
11181 Text.Op = PrintName("CheckBitCast");
11182 Text.Args.push_back(printArg<const Type *>(P, PC));
11183 Text.Args.push_back(printArg<bool>(P, PC));
11184 break;
11185#endif
11186#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11187bool emitCheckBitCast( const Type * , bool , SourceInfo);
11188#endif
11189#ifdef GET_LINK_IMPL
11190bool ByteCodeEmitter::emitCheckBitCast( const Type * A0, bool A1, SourceInfo L) {
11191 return emitOp<const Type *, bool>(OP_CheckBitCast, A0, A1, L);
11192}
11193#endif
11194#ifdef GET_EVAL_IMPL
11195bool EvalEmitter::emitCheckBitCast( const Type * A0, bool A1, SourceInfo L) {
11196 if (!isActive()) return true;
11197 CurrentSource = L;
11198 return CheckBitCast(S, OpPC, A0, A1);
11199}
11200#endif
11201#ifdef GET_OPCODE_NAMES
11202OP_CheckDecl,
11203#endif
11204#ifdef GET_INTERPFN_LIST
11205&Interp_CheckDecl,
11206#endif
11207#ifdef GET_INTERPFN_DISPATCHERS
11208PRESERVE_NONE
11209static bool Interp_CheckDecl(InterpState &S, CodePtr &PC) {
11210 {
11211 CodePtr OpPC = PC;
11212 const auto V0 = ReadArg<const VarDecl*>(S, PC);
11213 if (!CheckDecl(S, OpPC, V0)) return false;
11214 }
11215#if USE_TAILCALLS
11216 MUSTTAIL return InterpNext(S, PC);
11217#else
11218 return true;
11219#endif
11220}
11221#endif
11222#ifdef GET_DISASM
11223case OP_CheckDecl:
11224 Text.Op = PrintName("CheckDecl");
11225 Text.Args.push_back(printArg<const VarDecl*>(P, PC));
11226 break;
11227#endif
11228#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11229bool emitCheckDecl( const VarDecl* , SourceInfo);
11230#endif
11231#ifdef GET_LINK_IMPL
11232bool ByteCodeEmitter::emitCheckDecl( const VarDecl* A0, SourceInfo L) {
11233 return emitOp<const VarDecl*>(OP_CheckDecl, A0, L);
11234}
11235#endif
11236#ifdef GET_EVAL_IMPL
11237bool EvalEmitter::emitCheckDecl( const VarDecl* A0, SourceInfo L) {
11238 if (!isActive()) return true;
11239 CurrentSource = L;
11240 return CheckDecl(S, OpPC, A0);
11241}
11242#endif
11243#ifdef GET_OPCODE_NAMES
11244OP_CheckDestruction,
11245#endif
11246#ifdef GET_INTERPFN_LIST
11247&Interp_CheckDestruction,
11248#endif
11249#ifdef GET_INTERPFN_DISPATCHERS
11250PRESERVE_NONE
11251static bool Interp_CheckDestruction(InterpState &S, CodePtr &PC) {
11252 if (!CheckDestruction(S, PC)) return false;
11253#if USE_TAILCALLS
11254 MUSTTAIL return InterpNext(S, PC);
11255#else
11256 return true;
11257#endif
11258}
11259#endif
11260#ifdef GET_DISASM
11261case OP_CheckDestruction:
11262 Text.Op = PrintName("CheckDestruction");
11263 break;
11264#endif
11265#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11266bool emitCheckDestruction(SourceInfo);
11267#endif
11268#ifdef GET_LINK_IMPL
11269bool ByteCodeEmitter::emitCheckDestruction(SourceInfo L) {
11270 return emitOp<>(OP_CheckDestruction, L);
11271}
11272#endif
11273#ifdef GET_EVAL_IMPL
11274bool EvalEmitter::emitCheckDestruction(SourceInfo L) {
11275 if (!isActive()) return true;
11276 CurrentSource = L;
11277 return CheckDestruction(S, OpPC);
11278}
11279#endif
11280#ifdef GET_OPCODE_NAMES
11281OP_CheckEnumValueSint8,
11282OP_CheckEnumValueUint8,
11283OP_CheckEnumValueSint16,
11284OP_CheckEnumValueUint16,
11285OP_CheckEnumValueSint32,
11286OP_CheckEnumValueUint32,
11287OP_CheckEnumValueSint64,
11288OP_CheckEnumValueUint64,
11289OP_CheckEnumValueIntAP,
11290OP_CheckEnumValueIntAPS,
11291OP_CheckEnumValueBool,
11292#endif
11293#ifdef GET_INTERPFN_LIST
11294&Interp_CheckEnumValueSint8,
11295&Interp_CheckEnumValueUint8,
11296&Interp_CheckEnumValueSint16,
11297&Interp_CheckEnumValueUint16,
11298&Interp_CheckEnumValueSint32,
11299&Interp_CheckEnumValueUint32,
11300&Interp_CheckEnumValueSint64,
11301&Interp_CheckEnumValueUint64,
11302&Interp_CheckEnumValueIntAP,
11303&Interp_CheckEnumValueIntAPS,
11304&Interp_CheckEnumValueBool,
11305#endif
11306#ifdef GET_INTERPFN_DISPATCHERS
11307PRESERVE_NONE
11308static bool Interp_CheckEnumValueSint8(InterpState &S, CodePtr &PC) {
11309 {
11310 CodePtr OpPC = PC;
11311 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11312 CheckEnumValue<PT_Sint8>(S, OpPC, V0);
11313 }
11314#if USE_TAILCALLS
11315 MUSTTAIL return InterpNext(S, PC);
11316#else
11317 return true;
11318#endif
11319}
11320PRESERVE_NONE
11321static bool Interp_CheckEnumValueUint8(InterpState &S, CodePtr &PC) {
11322 {
11323 CodePtr OpPC = PC;
11324 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11325 CheckEnumValue<PT_Uint8>(S, OpPC, V0);
11326 }
11327#if USE_TAILCALLS
11328 MUSTTAIL return InterpNext(S, PC);
11329#else
11330 return true;
11331#endif
11332}
11333PRESERVE_NONE
11334static bool Interp_CheckEnumValueSint16(InterpState &S, CodePtr &PC) {
11335 {
11336 CodePtr OpPC = PC;
11337 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11338 CheckEnumValue<PT_Sint16>(S, OpPC, V0);
11339 }
11340#if USE_TAILCALLS
11341 MUSTTAIL return InterpNext(S, PC);
11342#else
11343 return true;
11344#endif
11345}
11346PRESERVE_NONE
11347static bool Interp_CheckEnumValueUint16(InterpState &S, CodePtr &PC) {
11348 {
11349 CodePtr OpPC = PC;
11350 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11351 CheckEnumValue<PT_Uint16>(S, OpPC, V0);
11352 }
11353#if USE_TAILCALLS
11354 MUSTTAIL return InterpNext(S, PC);
11355#else
11356 return true;
11357#endif
11358}
11359PRESERVE_NONE
11360static bool Interp_CheckEnumValueSint32(InterpState &S, CodePtr &PC) {
11361 {
11362 CodePtr OpPC = PC;
11363 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11364 CheckEnumValue<PT_Sint32>(S, OpPC, V0);
11365 }
11366#if USE_TAILCALLS
11367 MUSTTAIL return InterpNext(S, PC);
11368#else
11369 return true;
11370#endif
11371}
11372PRESERVE_NONE
11373static bool Interp_CheckEnumValueUint32(InterpState &S, CodePtr &PC) {
11374 {
11375 CodePtr OpPC = PC;
11376 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11377 CheckEnumValue<PT_Uint32>(S, OpPC, V0);
11378 }
11379#if USE_TAILCALLS
11380 MUSTTAIL return InterpNext(S, PC);
11381#else
11382 return true;
11383#endif
11384}
11385PRESERVE_NONE
11386static bool Interp_CheckEnumValueSint64(InterpState &S, CodePtr &PC) {
11387 {
11388 CodePtr OpPC = PC;
11389 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11390 CheckEnumValue<PT_Sint64>(S, OpPC, V0);
11391 }
11392#if USE_TAILCALLS
11393 MUSTTAIL return InterpNext(S, PC);
11394#else
11395 return true;
11396#endif
11397}
11398PRESERVE_NONE
11399static bool Interp_CheckEnumValueUint64(InterpState &S, CodePtr &PC) {
11400 {
11401 CodePtr OpPC = PC;
11402 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11403 CheckEnumValue<PT_Uint64>(S, OpPC, V0);
11404 }
11405#if USE_TAILCALLS
11406 MUSTTAIL return InterpNext(S, PC);
11407#else
11408 return true;
11409#endif
11410}
11411PRESERVE_NONE
11412static bool Interp_CheckEnumValueIntAP(InterpState &S, CodePtr &PC) {
11413 {
11414 CodePtr OpPC = PC;
11415 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11416 CheckEnumValue<PT_IntAP>(S, OpPC, V0);
11417 }
11418#if USE_TAILCALLS
11419 MUSTTAIL return InterpNext(S, PC);
11420#else
11421 return true;
11422#endif
11423}
11424PRESERVE_NONE
11425static bool Interp_CheckEnumValueIntAPS(InterpState &S, CodePtr &PC) {
11426 {
11427 CodePtr OpPC = PC;
11428 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11429 CheckEnumValue<PT_IntAPS>(S, OpPC, V0);
11430 }
11431#if USE_TAILCALLS
11432 MUSTTAIL return InterpNext(S, PC);
11433#else
11434 return true;
11435#endif
11436}
11437PRESERVE_NONE
11438static bool Interp_CheckEnumValueBool(InterpState &S, CodePtr &PC) {
11439 {
11440 CodePtr OpPC = PC;
11441 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
11442 CheckEnumValue<PT_Bool>(S, OpPC, V0);
11443 }
11444#if USE_TAILCALLS
11445 MUSTTAIL return InterpNext(S, PC);
11446#else
11447 return true;
11448#endif
11449}
11450#endif
11451#ifdef GET_DISASM
11452case OP_CheckEnumValueSint8:
11453 Text.Op = PrintName("CheckEnumValueSint8");
11454 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11455 break;
11456case OP_CheckEnumValueUint8:
11457 Text.Op = PrintName("CheckEnumValueUint8");
11458 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11459 break;
11460case OP_CheckEnumValueSint16:
11461 Text.Op = PrintName("CheckEnumValueSint16");
11462 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11463 break;
11464case OP_CheckEnumValueUint16:
11465 Text.Op = PrintName("CheckEnumValueUint16");
11466 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11467 break;
11468case OP_CheckEnumValueSint32:
11469 Text.Op = PrintName("CheckEnumValueSint32");
11470 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11471 break;
11472case OP_CheckEnumValueUint32:
11473 Text.Op = PrintName("CheckEnumValueUint32");
11474 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11475 break;
11476case OP_CheckEnumValueSint64:
11477 Text.Op = PrintName("CheckEnumValueSint64");
11478 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11479 break;
11480case OP_CheckEnumValueUint64:
11481 Text.Op = PrintName("CheckEnumValueUint64");
11482 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11483 break;
11484case OP_CheckEnumValueIntAP:
11485 Text.Op = PrintName("CheckEnumValueIntAP");
11486 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11487 break;
11488case OP_CheckEnumValueIntAPS:
11489 Text.Op = PrintName("CheckEnumValueIntAPS");
11490 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11491 break;
11492case OP_CheckEnumValueBool:
11493 Text.Op = PrintName("CheckEnumValueBool");
11494 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
11495 break;
11496#endif
11497#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11498bool emitCheckEnumValueSint8( const EnumDecl * , SourceInfo);
11499bool emitCheckEnumValueUint8( const EnumDecl * , SourceInfo);
11500bool emitCheckEnumValueSint16( const EnumDecl * , SourceInfo);
11501bool emitCheckEnumValueUint16( const EnumDecl * , SourceInfo);
11502bool emitCheckEnumValueSint32( const EnumDecl * , SourceInfo);
11503bool emitCheckEnumValueUint32( const EnumDecl * , SourceInfo);
11504bool emitCheckEnumValueSint64( const EnumDecl * , SourceInfo);
11505bool emitCheckEnumValueUint64( const EnumDecl * , SourceInfo);
11506bool emitCheckEnumValueIntAP( const EnumDecl * , SourceInfo);
11507bool emitCheckEnumValueIntAPS( const EnumDecl * , SourceInfo);
11508bool emitCheckEnumValueBool( const EnumDecl * , SourceInfo);
11509#endif
11510#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11511[[nodiscard]] bool emitCheckEnumValue(PrimType, const EnumDecl *, SourceInfo I);
11512#endif
11513#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
11514bool
11515#if defined(GET_EVAL_IMPL)
11516EvalEmitter
11517#else
11518ByteCodeEmitter
11519#endif
11520::emitCheckEnumValue(PrimType T0, const EnumDecl * A0, SourceInfo I) {
11521 switch (T0) {
11522 case PT_Sint8:
11523 return emitCheckEnumValueSint8(A0, I);
11524 case PT_Uint8:
11525 return emitCheckEnumValueUint8(A0, I);
11526 case PT_Sint16:
11527 return emitCheckEnumValueSint16(A0, I);
11528 case PT_Uint16:
11529 return emitCheckEnumValueUint16(A0, I);
11530 case PT_Sint32:
11531 return emitCheckEnumValueSint32(A0, I);
11532 case PT_Uint32:
11533 return emitCheckEnumValueUint32(A0, I);
11534 case PT_Sint64:
11535 return emitCheckEnumValueSint64(A0, I);
11536 case PT_Uint64:
11537 return emitCheckEnumValueUint64(A0, I);
11538 case PT_IntAP:
11539 return emitCheckEnumValueIntAP(A0, I);
11540 case PT_IntAPS:
11541 return emitCheckEnumValueIntAPS(A0, I);
11542 case PT_Bool:
11543 return emitCheckEnumValueBool(A0, I);
11544 default: llvm_unreachable("invalid type: emitCheckEnumValue");
11545 }
11546 llvm_unreachable("invalid enum value");
11547}
11548#endif
11549#ifdef GET_LINK_IMPL
11550bool ByteCodeEmitter::emitCheckEnumValueSint8( const EnumDecl * A0, SourceInfo L) {
11551 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint8, A0, L);
11552}
11553bool ByteCodeEmitter::emitCheckEnumValueUint8( const EnumDecl * A0, SourceInfo L) {
11554 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint8, A0, L);
11555}
11556bool ByteCodeEmitter::emitCheckEnumValueSint16( const EnumDecl * A0, SourceInfo L) {
11557 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint16, A0, L);
11558}
11559bool ByteCodeEmitter::emitCheckEnumValueUint16( const EnumDecl * A0, SourceInfo L) {
11560 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint16, A0, L);
11561}
11562bool ByteCodeEmitter::emitCheckEnumValueSint32( const EnumDecl * A0, SourceInfo L) {
11563 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint32, A0, L);
11564}
11565bool ByteCodeEmitter::emitCheckEnumValueUint32( const EnumDecl * A0, SourceInfo L) {
11566 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint32, A0, L);
11567}
11568bool ByteCodeEmitter::emitCheckEnumValueSint64( const EnumDecl * A0, SourceInfo L) {
11569 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint64, A0, L);
11570}
11571bool ByteCodeEmitter::emitCheckEnumValueUint64( const EnumDecl * A0, SourceInfo L) {
11572 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint64, A0, L);
11573}
11574bool ByteCodeEmitter::emitCheckEnumValueIntAP( const EnumDecl * A0, SourceInfo L) {
11575 return emitOp<const EnumDecl *>(OP_CheckEnumValueIntAP, A0, L);
11576}
11577bool ByteCodeEmitter::emitCheckEnumValueIntAPS( const EnumDecl * A0, SourceInfo L) {
11578 return emitOp<const EnumDecl *>(OP_CheckEnumValueIntAPS, A0, L);
11579}
11580bool ByteCodeEmitter::emitCheckEnumValueBool( const EnumDecl * A0, SourceInfo L) {
11581 return emitOp<const EnumDecl *>(OP_CheckEnumValueBool, A0, L);
11582}
11583#endif
11584#ifdef GET_EVAL_IMPL
11585bool EvalEmitter::emitCheckEnumValueSint8( const EnumDecl * A0, SourceInfo L) {
11586 if (!isActive()) return true;
11587 CurrentSource = L;
11588 return CheckEnumValue<PT_Sint8>(S, OpPC, A0);
11589}
11590bool EvalEmitter::emitCheckEnumValueUint8( const EnumDecl * A0, SourceInfo L) {
11591 if (!isActive()) return true;
11592 CurrentSource = L;
11593 return CheckEnumValue<PT_Uint8>(S, OpPC, A0);
11594}
11595bool EvalEmitter::emitCheckEnumValueSint16( const EnumDecl * A0, SourceInfo L) {
11596 if (!isActive()) return true;
11597 CurrentSource = L;
11598 return CheckEnumValue<PT_Sint16>(S, OpPC, A0);
11599}
11600bool EvalEmitter::emitCheckEnumValueUint16( const EnumDecl * A0, SourceInfo L) {
11601 if (!isActive()) return true;
11602 CurrentSource = L;
11603 return CheckEnumValue<PT_Uint16>(S, OpPC, A0);
11604}
11605bool EvalEmitter::emitCheckEnumValueSint32( const EnumDecl * A0, SourceInfo L) {
11606 if (!isActive()) return true;
11607 CurrentSource = L;
11608 return CheckEnumValue<PT_Sint32>(S, OpPC, A0);
11609}
11610bool EvalEmitter::emitCheckEnumValueUint32( const EnumDecl * A0, SourceInfo L) {
11611 if (!isActive()) return true;
11612 CurrentSource = L;
11613 return CheckEnumValue<PT_Uint32>(S, OpPC, A0);
11614}
11615bool EvalEmitter::emitCheckEnumValueSint64( const EnumDecl * A0, SourceInfo L) {
11616 if (!isActive()) return true;
11617 CurrentSource = L;
11618 return CheckEnumValue<PT_Sint64>(S, OpPC, A0);
11619}
11620bool EvalEmitter::emitCheckEnumValueUint64( const EnumDecl * A0, SourceInfo L) {
11621 if (!isActive()) return true;
11622 CurrentSource = L;
11623 return CheckEnumValue<PT_Uint64>(S, OpPC, A0);
11624}
11625bool EvalEmitter::emitCheckEnumValueIntAP( const EnumDecl * A0, SourceInfo L) {
11626 if (!isActive()) return true;
11627 CurrentSource = L;
11628 return CheckEnumValue<PT_IntAP>(S, OpPC, A0);
11629}
11630bool EvalEmitter::emitCheckEnumValueIntAPS( const EnumDecl * A0, SourceInfo L) {
11631 if (!isActive()) return true;
11632 CurrentSource = L;
11633 return CheckEnumValue<PT_IntAPS>(S, OpPC, A0);
11634}
11635bool EvalEmitter::emitCheckEnumValueBool( const EnumDecl * A0, SourceInfo L) {
11636 if (!isActive()) return true;
11637 CurrentSource = L;
11638 return CheckEnumValue<PT_Bool>(S, OpPC, A0);
11639}
11640#endif
11641#ifdef GET_OPCODE_NAMES
11642OP_CheckFunctionDecl,
11643#endif
11644#ifdef GET_INTERPFN_LIST
11645&Interp_CheckFunctionDecl,
11646#endif
11647#ifdef GET_INTERPFN_DISPATCHERS
11648PRESERVE_NONE
11649static bool Interp_CheckFunctionDecl(InterpState &S, CodePtr &PC) {
11650 {
11651 CodePtr OpPC = PC;
11652 const auto V0 = ReadArg<const FunctionDecl *>(S, PC);
11653 if (!CheckFunctionDecl(S, OpPC, V0)) return false;
11654 }
11655#if USE_TAILCALLS
11656 MUSTTAIL return InterpNext(S, PC);
11657#else
11658 return true;
11659#endif
11660}
11661#endif
11662#ifdef GET_DISASM
11663case OP_CheckFunctionDecl:
11664 Text.Op = PrintName("CheckFunctionDecl");
11665 Text.Args.push_back(printArg<const FunctionDecl *>(P, PC));
11666 break;
11667#endif
11668#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11669bool emitCheckFunctionDecl( const FunctionDecl * , SourceInfo);
11670#endif
11671#ifdef GET_LINK_IMPL
11672bool ByteCodeEmitter::emitCheckFunctionDecl( const FunctionDecl * A0, SourceInfo L) {
11673 return emitOp<const FunctionDecl *>(OP_CheckFunctionDecl, A0, L);
11674}
11675#endif
11676#ifdef GET_EVAL_IMPL
11677bool EvalEmitter::emitCheckFunctionDecl( const FunctionDecl * A0, SourceInfo L) {
11678 if (!isActive()) return true;
11679 CurrentSource = L;
11680 return CheckFunctionDecl(S, OpPC, A0);
11681}
11682#endif
11683#ifdef GET_OPCODE_NAMES
11684OP_CheckLiteralType,
11685#endif
11686#ifdef GET_INTERPFN_LIST
11687&Interp_CheckLiteralType,
11688#endif
11689#ifdef GET_INTERPFN_DISPATCHERS
11690PRESERVE_NONE
11691static bool Interp_CheckLiteralType(InterpState &S, CodePtr &PC) {
11692 {
11693 CodePtr OpPC = PC;
11694 const auto V0 = ReadArg<const Type *>(S, PC);
11695 if (!CheckLiteralType(S, OpPC, V0)) return false;
11696 }
11697#if USE_TAILCALLS
11698 MUSTTAIL return InterpNext(S, PC);
11699#else
11700 return true;
11701#endif
11702}
11703#endif
11704#ifdef GET_DISASM
11705case OP_CheckLiteralType:
11706 Text.Op = PrintName("CheckLiteralType");
11707 Text.Args.push_back(printArg<const Type *>(P, PC));
11708 break;
11709#endif
11710#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11711bool emitCheckLiteralType( const Type * , SourceInfo);
11712#endif
11713#ifdef GET_LINK_IMPL
11714bool ByteCodeEmitter::emitCheckLiteralType( const Type * A0, SourceInfo L) {
11715 return emitOp<const Type *>(OP_CheckLiteralType, A0, L);
11716}
11717#endif
11718#ifdef GET_EVAL_IMPL
11719bool EvalEmitter::emitCheckLiteralType( const Type * A0, SourceInfo L) {
11720 if (!isActive()) return true;
11721 CurrentSource = L;
11722 return CheckLiteralType(S, OpPC, A0);
11723}
11724#endif
11725#ifdef GET_OPCODE_NAMES
11726OP_CheckNewTypeMismatch,
11727#endif
11728#ifdef GET_INTERPFN_LIST
11729&Interp_CheckNewTypeMismatch,
11730#endif
11731#ifdef GET_INTERPFN_DISPATCHERS
11732PRESERVE_NONE
11733static bool Interp_CheckNewTypeMismatch(InterpState &S, CodePtr &PC) {
11734 {
11735 CodePtr OpPC = PC;
11736 const auto V0 = ReadArg<const Expr *>(S, PC);
11737 if (!CheckNewTypeMismatch(S, OpPC, V0)) return false;
11738 }
11739#if USE_TAILCALLS
11740 MUSTTAIL return InterpNext(S, PC);
11741#else
11742 return true;
11743#endif
11744}
11745#endif
11746#ifdef GET_DISASM
11747case OP_CheckNewTypeMismatch:
11748 Text.Op = PrintName("CheckNewTypeMismatch");
11749 Text.Args.push_back(printArg<const Expr *>(P, PC));
11750 break;
11751#endif
11752#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11753bool emitCheckNewTypeMismatch( const Expr * , SourceInfo);
11754#endif
11755#ifdef GET_LINK_IMPL
11756bool ByteCodeEmitter::emitCheckNewTypeMismatch( const Expr * A0, SourceInfo L) {
11757 return emitOp<const Expr *>(OP_CheckNewTypeMismatch, A0, L);
11758}
11759#endif
11760#ifdef GET_EVAL_IMPL
11761bool EvalEmitter::emitCheckNewTypeMismatch( const Expr * A0, SourceInfo L) {
11762 if (!isActive()) return true;
11763 CurrentSource = L;
11764 return CheckNewTypeMismatch(S, OpPC, A0);
11765}
11766#endif
11767#ifdef GET_OPCODE_NAMES
11768OP_CheckNewTypeMismatchArraySint8,
11769OP_CheckNewTypeMismatchArrayUint8,
11770OP_CheckNewTypeMismatchArraySint16,
11771OP_CheckNewTypeMismatchArrayUint16,
11772OP_CheckNewTypeMismatchArraySint32,
11773OP_CheckNewTypeMismatchArrayUint32,
11774OP_CheckNewTypeMismatchArraySint64,
11775OP_CheckNewTypeMismatchArrayUint64,
11776OP_CheckNewTypeMismatchArrayIntAP,
11777OP_CheckNewTypeMismatchArrayIntAPS,
11778#endif
11779#ifdef GET_INTERPFN_LIST
11780&Interp_CheckNewTypeMismatchArraySint8,
11781&Interp_CheckNewTypeMismatchArrayUint8,
11782&Interp_CheckNewTypeMismatchArraySint16,
11783&Interp_CheckNewTypeMismatchArrayUint16,
11784&Interp_CheckNewTypeMismatchArraySint32,
11785&Interp_CheckNewTypeMismatchArrayUint32,
11786&Interp_CheckNewTypeMismatchArraySint64,
11787&Interp_CheckNewTypeMismatchArrayUint64,
11788&Interp_CheckNewTypeMismatchArrayIntAP,
11789&Interp_CheckNewTypeMismatchArrayIntAPS,
11790#endif
11791#ifdef GET_INTERPFN_DISPATCHERS
11792PRESERVE_NONE
11793static bool Interp_CheckNewTypeMismatchArraySint8(InterpState &S, CodePtr &PC) {
11794 {
11795 CodePtr OpPC = PC;
11796 const auto V0 = ReadArg<const Expr *>(S, PC);
11797 if (!CheckNewTypeMismatchArray<PT_Sint8>(S, OpPC, V0)) return false;
11798 }
11799#if USE_TAILCALLS
11800 MUSTTAIL return InterpNext(S, PC);
11801#else
11802 return true;
11803#endif
11804}
11805PRESERVE_NONE
11806static bool Interp_CheckNewTypeMismatchArrayUint8(InterpState &S, CodePtr &PC) {
11807 {
11808 CodePtr OpPC = PC;
11809 const auto V0 = ReadArg<const Expr *>(S, PC);
11810 if (!CheckNewTypeMismatchArray<PT_Uint8>(S, OpPC, V0)) return false;
11811 }
11812#if USE_TAILCALLS
11813 MUSTTAIL return InterpNext(S, PC);
11814#else
11815 return true;
11816#endif
11817}
11818PRESERVE_NONE
11819static bool Interp_CheckNewTypeMismatchArraySint16(InterpState &S, CodePtr &PC) {
11820 {
11821 CodePtr OpPC = PC;
11822 const auto V0 = ReadArg<const Expr *>(S, PC);
11823 if (!CheckNewTypeMismatchArray<PT_Sint16>(S, OpPC, V0)) return false;
11824 }
11825#if USE_TAILCALLS
11826 MUSTTAIL return InterpNext(S, PC);
11827#else
11828 return true;
11829#endif
11830}
11831PRESERVE_NONE
11832static bool Interp_CheckNewTypeMismatchArrayUint16(InterpState &S, CodePtr &PC) {
11833 {
11834 CodePtr OpPC = PC;
11835 const auto V0 = ReadArg<const Expr *>(S, PC);
11836 if (!CheckNewTypeMismatchArray<PT_Uint16>(S, OpPC, V0)) return false;
11837 }
11838#if USE_TAILCALLS
11839 MUSTTAIL return InterpNext(S, PC);
11840#else
11841 return true;
11842#endif
11843}
11844PRESERVE_NONE
11845static bool Interp_CheckNewTypeMismatchArraySint32(InterpState &S, CodePtr &PC) {
11846 {
11847 CodePtr OpPC = PC;
11848 const auto V0 = ReadArg<const Expr *>(S, PC);
11849 if (!CheckNewTypeMismatchArray<PT_Sint32>(S, OpPC, V0)) return false;
11850 }
11851#if USE_TAILCALLS
11852 MUSTTAIL return InterpNext(S, PC);
11853#else
11854 return true;
11855#endif
11856}
11857PRESERVE_NONE
11858static bool Interp_CheckNewTypeMismatchArrayUint32(InterpState &S, CodePtr &PC) {
11859 {
11860 CodePtr OpPC = PC;
11861 const auto V0 = ReadArg<const Expr *>(S, PC);
11862 if (!CheckNewTypeMismatchArray<PT_Uint32>(S, OpPC, V0)) return false;
11863 }
11864#if USE_TAILCALLS
11865 MUSTTAIL return InterpNext(S, PC);
11866#else
11867 return true;
11868#endif
11869}
11870PRESERVE_NONE
11871static bool Interp_CheckNewTypeMismatchArraySint64(InterpState &S, CodePtr &PC) {
11872 {
11873 CodePtr OpPC = PC;
11874 const auto V0 = ReadArg<const Expr *>(S, PC);
11875 if (!CheckNewTypeMismatchArray<PT_Sint64>(S, OpPC, V0)) return false;
11876 }
11877#if USE_TAILCALLS
11878 MUSTTAIL return InterpNext(S, PC);
11879#else
11880 return true;
11881#endif
11882}
11883PRESERVE_NONE
11884static bool Interp_CheckNewTypeMismatchArrayUint64(InterpState &S, CodePtr &PC) {
11885 {
11886 CodePtr OpPC = PC;
11887 const auto V0 = ReadArg<const Expr *>(S, PC);
11888 if (!CheckNewTypeMismatchArray<PT_Uint64>(S, OpPC, V0)) return false;
11889 }
11890#if USE_TAILCALLS
11891 MUSTTAIL return InterpNext(S, PC);
11892#else
11893 return true;
11894#endif
11895}
11896PRESERVE_NONE
11897static bool Interp_CheckNewTypeMismatchArrayIntAP(InterpState &S, CodePtr &PC) {
11898 {
11899 CodePtr OpPC = PC;
11900 const auto V0 = ReadArg<const Expr *>(S, PC);
11901 if (!CheckNewTypeMismatchArray<PT_IntAP>(S, OpPC, V0)) return false;
11902 }
11903#if USE_TAILCALLS
11904 MUSTTAIL return InterpNext(S, PC);
11905#else
11906 return true;
11907#endif
11908}
11909PRESERVE_NONE
11910static bool Interp_CheckNewTypeMismatchArrayIntAPS(InterpState &S, CodePtr &PC) {
11911 {
11912 CodePtr OpPC = PC;
11913 const auto V0 = ReadArg<const Expr *>(S, PC);
11914 if (!CheckNewTypeMismatchArray<PT_IntAPS>(S, OpPC, V0)) return false;
11915 }
11916#if USE_TAILCALLS
11917 MUSTTAIL return InterpNext(S, PC);
11918#else
11919 return true;
11920#endif
11921}
11922#endif
11923#ifdef GET_DISASM
11924case OP_CheckNewTypeMismatchArraySint8:
11925 Text.Op = PrintName("CheckNewTypeMismatchArraySint8");
11926 Text.Args.push_back(printArg<const Expr *>(P, PC));
11927 break;
11928case OP_CheckNewTypeMismatchArrayUint8:
11929 Text.Op = PrintName("CheckNewTypeMismatchArrayUint8");
11930 Text.Args.push_back(printArg<const Expr *>(P, PC));
11931 break;
11932case OP_CheckNewTypeMismatchArraySint16:
11933 Text.Op = PrintName("CheckNewTypeMismatchArraySint16");
11934 Text.Args.push_back(printArg<const Expr *>(P, PC));
11935 break;
11936case OP_CheckNewTypeMismatchArrayUint16:
11937 Text.Op = PrintName("CheckNewTypeMismatchArrayUint16");
11938 Text.Args.push_back(printArg<const Expr *>(P, PC));
11939 break;
11940case OP_CheckNewTypeMismatchArraySint32:
11941 Text.Op = PrintName("CheckNewTypeMismatchArraySint32");
11942 Text.Args.push_back(printArg<const Expr *>(P, PC));
11943 break;
11944case OP_CheckNewTypeMismatchArrayUint32:
11945 Text.Op = PrintName("CheckNewTypeMismatchArrayUint32");
11946 Text.Args.push_back(printArg<const Expr *>(P, PC));
11947 break;
11948case OP_CheckNewTypeMismatchArraySint64:
11949 Text.Op = PrintName("CheckNewTypeMismatchArraySint64");
11950 Text.Args.push_back(printArg<const Expr *>(P, PC));
11951 break;
11952case OP_CheckNewTypeMismatchArrayUint64:
11953 Text.Op = PrintName("CheckNewTypeMismatchArrayUint64");
11954 Text.Args.push_back(printArg<const Expr *>(P, PC));
11955 break;
11956case OP_CheckNewTypeMismatchArrayIntAP:
11957 Text.Op = PrintName("CheckNewTypeMismatchArrayIntAP");
11958 Text.Args.push_back(printArg<const Expr *>(P, PC));
11959 break;
11960case OP_CheckNewTypeMismatchArrayIntAPS:
11961 Text.Op = PrintName("CheckNewTypeMismatchArrayIntAPS");
11962 Text.Args.push_back(printArg<const Expr *>(P, PC));
11963 break;
11964#endif
11965#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11966bool emitCheckNewTypeMismatchArraySint8( const Expr * , SourceInfo);
11967bool emitCheckNewTypeMismatchArrayUint8( const Expr * , SourceInfo);
11968bool emitCheckNewTypeMismatchArraySint16( const Expr * , SourceInfo);
11969bool emitCheckNewTypeMismatchArrayUint16( const Expr * , SourceInfo);
11970bool emitCheckNewTypeMismatchArraySint32( const Expr * , SourceInfo);
11971bool emitCheckNewTypeMismatchArrayUint32( const Expr * , SourceInfo);
11972bool emitCheckNewTypeMismatchArraySint64( const Expr * , SourceInfo);
11973bool emitCheckNewTypeMismatchArrayUint64( const Expr * , SourceInfo);
11974bool emitCheckNewTypeMismatchArrayIntAP( const Expr * , SourceInfo);
11975bool emitCheckNewTypeMismatchArrayIntAPS( const Expr * , SourceInfo);
11976#endif
11977#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11978[[nodiscard]] bool emitCheckNewTypeMismatchArray(PrimType, const Expr *, SourceInfo I);
11979#endif
11980#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
11981bool
11982#if defined(GET_EVAL_IMPL)
11983EvalEmitter
11984#else
11985ByteCodeEmitter
11986#endif
11987::emitCheckNewTypeMismatchArray(PrimType T0, const Expr * A0, SourceInfo I) {
11988 switch (T0) {
11989 case PT_Sint8:
11990 return emitCheckNewTypeMismatchArraySint8(A0, I);
11991 case PT_Uint8:
11992 return emitCheckNewTypeMismatchArrayUint8(A0, I);
11993 case PT_Sint16:
11994 return emitCheckNewTypeMismatchArraySint16(A0, I);
11995 case PT_Uint16:
11996 return emitCheckNewTypeMismatchArrayUint16(A0, I);
11997 case PT_Sint32:
11998 return emitCheckNewTypeMismatchArraySint32(A0, I);
11999 case PT_Uint32:
12000 return emitCheckNewTypeMismatchArrayUint32(A0, I);
12001 case PT_Sint64:
12002 return emitCheckNewTypeMismatchArraySint64(A0, I);
12003 case PT_Uint64:
12004 return emitCheckNewTypeMismatchArrayUint64(A0, I);
12005 case PT_IntAP:
12006 return emitCheckNewTypeMismatchArrayIntAP(A0, I);
12007 case PT_IntAPS:
12008 return emitCheckNewTypeMismatchArrayIntAPS(A0, I);
12009 default: llvm_unreachable("invalid type: emitCheckNewTypeMismatchArray");
12010 }
12011 llvm_unreachable("invalid enum value");
12012}
12013#endif
12014#ifdef GET_LINK_IMPL
12015bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint8( const Expr * A0, SourceInfo L) {
12016 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint8, A0, L);
12017}
12018bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint8( const Expr * A0, SourceInfo L) {
12019 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint8, A0, L);
12020}
12021bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint16( const Expr * A0, SourceInfo L) {
12022 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint16, A0, L);
12023}
12024bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint16( const Expr * A0, SourceInfo L) {
12025 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint16, A0, L);
12026}
12027bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint32( const Expr * A0, SourceInfo L) {
12028 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint32, A0, L);
12029}
12030bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint32( const Expr * A0, SourceInfo L) {
12031 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint32, A0, L);
12032}
12033bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint64( const Expr * A0, SourceInfo L) {
12034 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint64, A0, L);
12035}
12036bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint64( const Expr * A0, SourceInfo L) {
12037 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint64, A0, L);
12038}
12039bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayIntAP( const Expr * A0, SourceInfo L) {
12040 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayIntAP, A0, L);
12041}
12042bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayIntAPS( const Expr * A0, SourceInfo L) {
12043 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayIntAPS, A0, L);
12044}
12045#endif
12046#ifdef GET_EVAL_IMPL
12047bool EvalEmitter::emitCheckNewTypeMismatchArraySint8( const Expr * A0, SourceInfo L) {
12048 if (!isActive()) return true;
12049 CurrentSource = L;
12050 return CheckNewTypeMismatchArray<PT_Sint8>(S, OpPC, A0);
12051}
12052bool EvalEmitter::emitCheckNewTypeMismatchArrayUint8( const Expr * A0, SourceInfo L) {
12053 if (!isActive()) return true;
12054 CurrentSource = L;
12055 return CheckNewTypeMismatchArray<PT_Uint8>(S, OpPC, A0);
12056}
12057bool EvalEmitter::emitCheckNewTypeMismatchArraySint16( const Expr * A0, SourceInfo L) {
12058 if (!isActive()) return true;
12059 CurrentSource = L;
12060 return CheckNewTypeMismatchArray<PT_Sint16>(S, OpPC, A0);
12061}
12062bool EvalEmitter::emitCheckNewTypeMismatchArrayUint16( const Expr * A0, SourceInfo L) {
12063 if (!isActive()) return true;
12064 CurrentSource = L;
12065 return CheckNewTypeMismatchArray<PT_Uint16>(S, OpPC, A0);
12066}
12067bool EvalEmitter::emitCheckNewTypeMismatchArraySint32( const Expr * A0, SourceInfo L) {
12068 if (!isActive()) return true;
12069 CurrentSource = L;
12070 return CheckNewTypeMismatchArray<PT_Sint32>(S, OpPC, A0);
12071}
12072bool EvalEmitter::emitCheckNewTypeMismatchArrayUint32( const Expr * A0, SourceInfo L) {
12073 if (!isActive()) return true;
12074 CurrentSource = L;
12075 return CheckNewTypeMismatchArray<PT_Uint32>(S, OpPC, A0);
12076}
12077bool EvalEmitter::emitCheckNewTypeMismatchArraySint64( const Expr * A0, SourceInfo L) {
12078 if (!isActive()) return true;
12079 CurrentSource = L;
12080 return CheckNewTypeMismatchArray<PT_Sint64>(S, OpPC, A0);
12081}
12082bool EvalEmitter::emitCheckNewTypeMismatchArrayUint64( const Expr * A0, SourceInfo L) {
12083 if (!isActive()) return true;
12084 CurrentSource = L;
12085 return CheckNewTypeMismatchArray<PT_Uint64>(S, OpPC, A0);
12086}
12087bool EvalEmitter::emitCheckNewTypeMismatchArrayIntAP( const Expr * A0, SourceInfo L) {
12088 if (!isActive()) return true;
12089 CurrentSource = L;
12090 return CheckNewTypeMismatchArray<PT_IntAP>(S, OpPC, A0);
12091}
12092bool EvalEmitter::emitCheckNewTypeMismatchArrayIntAPS( const Expr * A0, SourceInfo L) {
12093 if (!isActive()) return true;
12094 CurrentSource = L;
12095 return CheckNewTypeMismatchArray<PT_IntAPS>(S, OpPC, A0);
12096}
12097#endif
12098#ifdef GET_OPCODE_NAMES
12099OP_CheckNonNullArgPtr,
12100OP_CheckNonNullArgMemberPtr,
12101#endif
12102#ifdef GET_INTERPFN_LIST
12103&Interp_CheckNonNullArgPtr,
12104&Interp_CheckNonNullArgMemberPtr,
12105#endif
12106#ifdef GET_INTERPFN_DISPATCHERS
12107PRESERVE_NONE
12108static bool Interp_CheckNonNullArgPtr(InterpState &S, CodePtr &PC) {
12109 if (!CheckNonNullArg<PT_Ptr>(S, PC)) return false;
12110#if USE_TAILCALLS
12111 MUSTTAIL return InterpNext(S, PC);
12112#else
12113 return true;
12114#endif
12115}
12116PRESERVE_NONE
12117static bool Interp_CheckNonNullArgMemberPtr(InterpState &S, CodePtr &PC) {
12118 if (!CheckNonNullArg<PT_MemberPtr>(S, PC)) return false;
12119#if USE_TAILCALLS
12120 MUSTTAIL return InterpNext(S, PC);
12121#else
12122 return true;
12123#endif
12124}
12125#endif
12126#ifdef GET_DISASM
12127case OP_CheckNonNullArgPtr:
12128 Text.Op = PrintName("CheckNonNullArgPtr");
12129 break;
12130case OP_CheckNonNullArgMemberPtr:
12131 Text.Op = PrintName("CheckNonNullArgMemberPtr");
12132 break;
12133#endif
12134#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12135bool emitCheckNonNullArgPtr(SourceInfo);
12136bool emitCheckNonNullArgMemberPtr(SourceInfo);
12137#endif
12138#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12139[[nodiscard]] bool emitCheckNonNullArg(PrimType, SourceInfo I);
12140#endif
12141#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
12142bool
12143#if defined(GET_EVAL_IMPL)
12144EvalEmitter
12145#else
12146ByteCodeEmitter
12147#endif
12148::emitCheckNonNullArg(PrimType T0, SourceInfo I) {
12149 switch (T0) {
12150 case PT_Ptr:
12151 return emitCheckNonNullArgPtr(I);
12152 case PT_MemberPtr:
12153 return emitCheckNonNullArgMemberPtr(I);
12154 default: llvm_unreachable("invalid type: emitCheckNonNullArg");
12155 }
12156 llvm_unreachable("invalid enum value");
12157}
12158#endif
12159#ifdef GET_LINK_IMPL
12160bool ByteCodeEmitter::emitCheckNonNullArgPtr(SourceInfo L) {
12161 return emitOp<>(OP_CheckNonNullArgPtr, L);
12162}
12163bool ByteCodeEmitter::emitCheckNonNullArgMemberPtr(SourceInfo L) {
12164 return emitOp<>(OP_CheckNonNullArgMemberPtr, L);
12165}
12166#endif
12167#ifdef GET_EVAL_IMPL
12168bool EvalEmitter::emitCheckNonNullArgPtr(SourceInfo L) {
12169 if (!isActive()) return true;
12170 CurrentSource = L;
12171 return CheckNonNullArg<PT_Ptr>(S, OpPC);
12172}
12173bool EvalEmitter::emitCheckNonNullArgMemberPtr(SourceInfo L) {
12174 if (!isActive()) return true;
12175 CurrentSource = L;
12176 return CheckNonNullArg<PT_MemberPtr>(S, OpPC);
12177}
12178#endif
12179#ifdef GET_OPCODE_NAMES
12180OP_CheckNull,
12181#endif
12182#ifdef GET_INTERPFN_LIST
12183&Interp_CheckNull,
12184#endif
12185#ifdef GET_INTERPFN_DISPATCHERS
12186PRESERVE_NONE
12187static bool Interp_CheckNull(InterpState &S, CodePtr &PC) {
12188 if (!CheckNull(S, PC)) return false;
12189#if USE_TAILCALLS
12190 MUSTTAIL return InterpNext(S, PC);
12191#else
12192 return true;
12193#endif
12194}
12195#endif
12196#ifdef GET_DISASM
12197case OP_CheckNull:
12198 Text.Op = PrintName("CheckNull");
12199 break;
12200#endif
12201#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12202bool emitCheckNull(SourceInfo);
12203#endif
12204#ifdef GET_LINK_IMPL
12205bool ByteCodeEmitter::emitCheckNull(SourceInfo L) {
12206 return emitOp<>(OP_CheckNull, L);
12207}
12208#endif
12209#ifdef GET_EVAL_IMPL
12210bool EvalEmitter::emitCheckNull(SourceInfo L) {
12211 if (!isActive()) return true;
12212 CurrentSource = L;
12213 return CheckNull(S, OpPC);
12214}
12215#endif
12216#ifdef GET_OPCODE_NAMES
12217OP_CheckPseudoDtor,
12218#endif
12219#ifdef GET_INTERPFN_LIST
12220&Interp_CheckPseudoDtor,
12221#endif
12222#ifdef GET_INTERPFN_DISPATCHERS
12223PRESERVE_NONE
12224static bool Interp_CheckPseudoDtor(InterpState &S, CodePtr &PC) {
12225 CheckPseudoDtor(S, PC);
12226#if USE_TAILCALLS
12227 MUSTTAIL return InterpNext(S, PC);
12228#else
12229 return true;
12230#endif
12231}
12232#endif
12233#ifdef GET_DISASM
12234case OP_CheckPseudoDtor:
12235 Text.Op = PrintName("CheckPseudoDtor");
12236 break;
12237#endif
12238#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12239bool emitCheckPseudoDtor(SourceInfo);
12240#endif
12241#ifdef GET_LINK_IMPL
12242bool ByteCodeEmitter::emitCheckPseudoDtor(SourceInfo L) {
12243 return emitOp<>(OP_CheckPseudoDtor, L);
12244}
12245#endif
12246#ifdef GET_EVAL_IMPL
12247bool EvalEmitter::emitCheckPseudoDtor(SourceInfo L) {
12248 if (!isActive()) return true;
12249 CurrentSource = L;
12250 return CheckPseudoDtor(S, OpPC);
12251}
12252#endif
12253#ifdef GET_OPCODE_NAMES
12254OP_CheckRefInit,
12255#endif
12256#ifdef GET_INTERPFN_LIST
12257&Interp_CheckRefInit,
12258#endif
12259#ifdef GET_INTERPFN_DISPATCHERS
12260PRESERVE_NONE
12261static bool Interp_CheckRefInit(InterpState &S, CodePtr &PC) {
12262 if (!CheckRefInit(S, PC)) return false;
12263#if USE_TAILCALLS
12264 MUSTTAIL return InterpNext(S, PC);
12265#else
12266 return true;
12267#endif
12268}
12269#endif
12270#ifdef GET_DISASM
12271case OP_CheckRefInit:
12272 Text.Op = PrintName("CheckRefInit");
12273 break;
12274#endif
12275#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12276bool emitCheckRefInit(SourceInfo);
12277#endif
12278#ifdef GET_LINK_IMPL
12279bool ByteCodeEmitter::emitCheckRefInit(SourceInfo L) {
12280 return emitOp<>(OP_CheckRefInit, L);
12281}
12282#endif
12283#ifdef GET_EVAL_IMPL
12284bool EvalEmitter::emitCheckRefInit(SourceInfo L) {
12285 if (!isActive()) return true;
12286 CurrentSource = L;
12287 return CheckRefInit(S, OpPC);
12288}
12289#endif
12290#ifdef GET_OPCODE_NAMES
12291OP_CompSint8,
12292OP_CompUint8,
12293OP_CompSint16,
12294OP_CompUint16,
12295OP_CompSint32,
12296OP_CompUint32,
12297OP_CompSint64,
12298OP_CompUint64,
12299OP_CompIntAP,
12300OP_CompIntAPS,
12301#endif
12302#ifdef GET_INTERPFN_LIST
12303&Interp_CompSint8,
12304&Interp_CompUint8,
12305&Interp_CompSint16,
12306&Interp_CompUint16,
12307&Interp_CompSint32,
12308&Interp_CompUint32,
12309&Interp_CompSint64,
12310&Interp_CompUint64,
12311&Interp_CompIntAP,
12312&Interp_CompIntAPS,
12313#endif
12314#ifdef GET_INTERPFN_DISPATCHERS
12315PRESERVE_NONE
12316static bool Interp_CompSint8(InterpState &S, CodePtr &PC) {
12317 if (!Comp<PT_Sint8>(S, PC)) return false;
12318#if USE_TAILCALLS
12319 MUSTTAIL return InterpNext(S, PC);
12320#else
12321 return true;
12322#endif
12323}
12324PRESERVE_NONE
12325static bool Interp_CompUint8(InterpState &S, CodePtr &PC) {
12326 if (!Comp<PT_Uint8>(S, PC)) return false;
12327#if USE_TAILCALLS
12328 MUSTTAIL return InterpNext(S, PC);
12329#else
12330 return true;
12331#endif
12332}
12333PRESERVE_NONE
12334static bool Interp_CompSint16(InterpState &S, CodePtr &PC) {
12335 if (!Comp<PT_Sint16>(S, PC)) return false;
12336#if USE_TAILCALLS
12337 MUSTTAIL return InterpNext(S, PC);
12338#else
12339 return true;
12340#endif
12341}
12342PRESERVE_NONE
12343static bool Interp_CompUint16(InterpState &S, CodePtr &PC) {
12344 if (!Comp<PT_Uint16>(S, PC)) return false;
12345#if USE_TAILCALLS
12346 MUSTTAIL return InterpNext(S, PC);
12347#else
12348 return true;
12349#endif
12350}
12351PRESERVE_NONE
12352static bool Interp_CompSint32(InterpState &S, CodePtr &PC) {
12353 if (!Comp<PT_Sint32>(S, PC)) return false;
12354#if USE_TAILCALLS
12355 MUSTTAIL return InterpNext(S, PC);
12356#else
12357 return true;
12358#endif
12359}
12360PRESERVE_NONE
12361static bool Interp_CompUint32(InterpState &S, CodePtr &PC) {
12362 if (!Comp<PT_Uint32>(S, PC)) return false;
12363#if USE_TAILCALLS
12364 MUSTTAIL return InterpNext(S, PC);
12365#else
12366 return true;
12367#endif
12368}
12369PRESERVE_NONE
12370static bool Interp_CompSint64(InterpState &S, CodePtr &PC) {
12371 if (!Comp<PT_Sint64>(S, PC)) return false;
12372#if USE_TAILCALLS
12373 MUSTTAIL return InterpNext(S, PC);
12374#else
12375 return true;
12376#endif
12377}
12378PRESERVE_NONE
12379static bool Interp_CompUint64(InterpState &S, CodePtr &PC) {
12380 if (!Comp<PT_Uint64>(S, PC)) return false;
12381#if USE_TAILCALLS
12382 MUSTTAIL return InterpNext(S, PC);
12383#else
12384 return true;
12385#endif
12386}
12387PRESERVE_NONE
12388static bool Interp_CompIntAP(InterpState &S, CodePtr &PC) {
12389 if (!Comp<PT_IntAP>(S, PC)) return false;
12390#if USE_TAILCALLS
12391 MUSTTAIL return InterpNext(S, PC);
12392#else
12393 return true;
12394#endif
12395}
12396PRESERVE_NONE
12397static bool Interp_CompIntAPS(InterpState &S, CodePtr &PC) {
12398 if (!Comp<PT_IntAPS>(S, PC)) return false;
12399#if USE_TAILCALLS
12400 MUSTTAIL return InterpNext(S, PC);
12401#else
12402 return true;
12403#endif
12404}
12405#endif
12406#ifdef GET_DISASM
12407case OP_CompSint8:
12408 Text.Op = PrintName("CompSint8");
12409 break;
12410case OP_CompUint8:
12411 Text.Op = PrintName("CompUint8");
12412 break;
12413case OP_CompSint16:
12414 Text.Op = PrintName("CompSint16");
12415 break;
12416case OP_CompUint16:
12417 Text.Op = PrintName("CompUint16");
12418 break;
12419case OP_CompSint32:
12420 Text.Op = PrintName("CompSint32");
12421 break;
12422case OP_CompUint32:
12423 Text.Op = PrintName("CompUint32");
12424 break;
12425case OP_CompSint64:
12426 Text.Op = PrintName("CompSint64");
12427 break;
12428case OP_CompUint64:
12429 Text.Op = PrintName("CompUint64");
12430 break;
12431case OP_CompIntAP:
12432 Text.Op = PrintName("CompIntAP");
12433 break;
12434case OP_CompIntAPS:
12435 Text.Op = PrintName("CompIntAPS");
12436 break;
12437#endif
12438#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12439bool emitCompSint8(SourceInfo);
12440bool emitCompUint8(SourceInfo);
12441bool emitCompSint16(SourceInfo);
12442bool emitCompUint16(SourceInfo);
12443bool emitCompSint32(SourceInfo);
12444bool emitCompUint32(SourceInfo);
12445bool emitCompSint64(SourceInfo);
12446bool emitCompUint64(SourceInfo);
12447bool emitCompIntAP(SourceInfo);
12448bool emitCompIntAPS(SourceInfo);
12449#endif
12450#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12451[[nodiscard]] bool emitComp(PrimType, SourceInfo I);
12452#endif
12453#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
12454bool
12455#if defined(GET_EVAL_IMPL)
12456EvalEmitter
12457#else
12458ByteCodeEmitter
12459#endif
12460::emitComp(PrimType T0, SourceInfo I) {
12461 switch (T0) {
12462 case PT_Sint8:
12463 return emitCompSint8(I);
12464 case PT_Uint8:
12465 return emitCompUint8(I);
12466 case PT_Sint16:
12467 return emitCompSint16(I);
12468 case PT_Uint16:
12469 return emitCompUint16(I);
12470 case PT_Sint32:
12471 return emitCompSint32(I);
12472 case PT_Uint32:
12473 return emitCompUint32(I);
12474 case PT_Sint64:
12475 return emitCompSint64(I);
12476 case PT_Uint64:
12477 return emitCompUint64(I);
12478 case PT_IntAP:
12479 return emitCompIntAP(I);
12480 case PT_IntAPS:
12481 return emitCompIntAPS(I);
12482 default: llvm_unreachable("invalid type: emitComp");
12483 }
12484 llvm_unreachable("invalid enum value");
12485}
12486#endif
12487#ifdef GET_LINK_IMPL
12488bool ByteCodeEmitter::emitCompSint8(SourceInfo L) {
12489 return emitOp<>(OP_CompSint8, L);
12490}
12491bool ByteCodeEmitter::emitCompUint8(SourceInfo L) {
12492 return emitOp<>(OP_CompUint8, L);
12493}
12494bool ByteCodeEmitter::emitCompSint16(SourceInfo L) {
12495 return emitOp<>(OP_CompSint16, L);
12496}
12497bool ByteCodeEmitter::emitCompUint16(SourceInfo L) {
12498 return emitOp<>(OP_CompUint16, L);
12499}
12500bool ByteCodeEmitter::emitCompSint32(SourceInfo L) {
12501 return emitOp<>(OP_CompSint32, L);
12502}
12503bool ByteCodeEmitter::emitCompUint32(SourceInfo L) {
12504 return emitOp<>(OP_CompUint32, L);
12505}
12506bool ByteCodeEmitter::emitCompSint64(SourceInfo L) {
12507 return emitOp<>(OP_CompSint64, L);
12508}
12509bool ByteCodeEmitter::emitCompUint64(SourceInfo L) {
12510 return emitOp<>(OP_CompUint64, L);
12511}
12512bool ByteCodeEmitter::emitCompIntAP(SourceInfo L) {
12513 return emitOp<>(OP_CompIntAP, L);
12514}
12515bool ByteCodeEmitter::emitCompIntAPS(SourceInfo L) {
12516 return emitOp<>(OP_CompIntAPS, L);
12517}
12518#endif
12519#ifdef GET_EVAL_IMPL
12520bool EvalEmitter::emitCompSint8(SourceInfo L) {
12521 if (!isActive()) return true;
12522 CurrentSource = L;
12523 return Comp<PT_Sint8>(S, OpPC);
12524}
12525bool EvalEmitter::emitCompUint8(SourceInfo L) {
12526 if (!isActive()) return true;
12527 CurrentSource = L;
12528 return Comp<PT_Uint8>(S, OpPC);
12529}
12530bool EvalEmitter::emitCompSint16(SourceInfo L) {
12531 if (!isActive()) return true;
12532 CurrentSource = L;
12533 return Comp<PT_Sint16>(S, OpPC);
12534}
12535bool EvalEmitter::emitCompUint16(SourceInfo L) {
12536 if (!isActive()) return true;
12537 CurrentSource = L;
12538 return Comp<PT_Uint16>(S, OpPC);
12539}
12540bool EvalEmitter::emitCompSint32(SourceInfo L) {
12541 if (!isActive()) return true;
12542 CurrentSource = L;
12543 return Comp<PT_Sint32>(S, OpPC);
12544}
12545bool EvalEmitter::emitCompUint32(SourceInfo L) {
12546 if (!isActive()) return true;
12547 CurrentSource = L;
12548 return Comp<PT_Uint32>(S, OpPC);
12549}
12550bool EvalEmitter::emitCompSint64(SourceInfo L) {
12551 if (!isActive()) return true;
12552 CurrentSource = L;
12553 return Comp<PT_Sint64>(S, OpPC);
12554}
12555bool EvalEmitter::emitCompUint64(SourceInfo L) {
12556 if (!isActive()) return true;
12557 CurrentSource = L;
12558 return Comp<PT_Uint64>(S, OpPC);
12559}
12560bool EvalEmitter::emitCompIntAP(SourceInfo L) {
12561 if (!isActive()) return true;
12562 CurrentSource = L;
12563 return Comp<PT_IntAP>(S, OpPC);
12564}
12565bool EvalEmitter::emitCompIntAPS(SourceInfo L) {
12566 if (!isActive()) return true;
12567 CurrentSource = L;
12568 return Comp<PT_IntAPS>(S, OpPC);
12569}
12570#endif
12571#ifdef GET_OPCODE_NAMES
12572OP_ConstBool,
12573#endif
12574#ifdef GET_INTERPFN_LIST
12575&Interp_ConstBool,
12576#endif
12577#ifdef GET_INTERPFN_DISPATCHERS
12578PRESERVE_NONE
12579static bool Interp_ConstBool(InterpState &S, CodePtr &PC) {
12580 {
12581 CodePtr OpPC = PC;
12582 const auto V0 = ReadArg<bool>(S, PC);
12583 Const<PT_Bool>(S, OpPC, V0);
12584 }
12585#if USE_TAILCALLS
12586 MUSTTAIL return InterpNext(S, PC);
12587#else
12588 return true;
12589#endif
12590}
12591#endif
12592#ifdef GET_DISASM
12593case OP_ConstBool:
12594 Text.Op = PrintName("ConstBool");
12595 Text.Args.push_back(printArg<bool>(P, PC));
12596 break;
12597#endif
12598#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12599bool emitConstBool( bool , SourceInfo);
12600#endif
12601#ifdef GET_LINK_IMPL
12602bool ByteCodeEmitter::emitConstBool( bool A0, SourceInfo L) {
12603 return emitOp<bool>(OP_ConstBool, A0, L);
12604}
12605#endif
12606#ifdef GET_EVAL_IMPL
12607bool EvalEmitter::emitConstBool( bool A0, SourceInfo L) {
12608 if (!isActive()) return true;
12609 CurrentSource = L;
12610 return Const<PT_Bool>(S, OpPC, A0);
12611}
12612#endif
12613#ifdef GET_OPCODE_NAMES
12614OP_ConstFixedPoint,
12615#endif
12616#ifdef GET_INTERPFN_LIST
12617&Interp_ConstFixedPoint,
12618#endif
12619#ifdef GET_INTERPFN_DISPATCHERS
12620PRESERVE_NONE
12621static bool Interp_ConstFixedPoint(InterpState &S, CodePtr &PC) {
12622 {
12623 CodePtr OpPC = PC;
12624 const auto &V0 = ReadArg<FixedPoint>(S, PC);
12625 Const<PT_FixedPoint>(S, OpPC, V0);
12626 }
12627#if USE_TAILCALLS
12628 MUSTTAIL return InterpNext(S, PC);
12629#else
12630 return true;
12631#endif
12632}
12633#endif
12634#ifdef GET_DISASM
12635case OP_ConstFixedPoint:
12636 Text.Op = PrintName("ConstFixedPoint");
12637 Text.Args.push_back(printArg<FixedPoint>(P, PC));
12638 break;
12639#endif
12640#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12641bool emitConstFixedPoint(const FixedPoint &, SourceInfo);
12642#endif
12643#ifdef GET_LINK_IMPL
12644bool ByteCodeEmitter::emitConstFixedPoint(const FixedPoint &A0, SourceInfo L) {
12645 return emitOp<FixedPoint>(OP_ConstFixedPoint, A0, L);
12646}
12647#endif
12648#ifdef GET_EVAL_IMPL
12649bool EvalEmitter::emitConstFixedPoint(const FixedPoint &A0, SourceInfo L) {
12650 if (!isActive()) return true;
12651 CurrentSource = L;
12652 return Const<PT_FixedPoint>(S, OpPC, A0);
12653}
12654#endif
12655#ifdef GET_OPCODE_NAMES
12656OP_ConstFloat,
12657#endif
12658#ifdef GET_INTERPFN_LIST
12659&Interp_ConstFloat,
12660#endif
12661#ifdef GET_INTERPFN_DISPATCHERS
12662PRESERVE_NONE
12663static bool Interp_ConstFloat(InterpState &S, CodePtr &PC) {
12664 {
12665 CodePtr OpPC = PC;
12666 const auto &V0 = ReadArg<Floating>(S, PC);
12667 ConstFloat(S, OpPC, V0);
12668 }
12669#if USE_TAILCALLS
12670 MUSTTAIL return InterpNext(S, PC);
12671#else
12672 return true;
12673#endif
12674}
12675#endif
12676#ifdef GET_DISASM
12677case OP_ConstFloat:
12678 Text.Op = PrintName("ConstFloat");
12679 Text.Args.push_back(printArg<Floating>(P, PC));
12680 break;
12681#endif
12682#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12683bool emitConstFloat(const Floating &, SourceInfo);
12684#endif
12685#ifdef GET_LINK_IMPL
12686bool ByteCodeEmitter::emitConstFloat(const Floating &A0, SourceInfo L) {
12687 return emitOp<Floating>(OP_ConstFloat, A0, L);
12688}
12689#endif
12690#ifdef GET_EVAL_IMPL
12691bool EvalEmitter::emitConstFloat(const Floating &A0, SourceInfo L) {
12692 if (!isActive()) return true;
12693 CurrentSource = L;
12694 return ConstFloat(S, OpPC, A0);
12695}
12696#endif
12697#ifdef GET_OPCODE_NAMES
12698OP_ConstIntAP,
12699#endif
12700#ifdef GET_INTERPFN_LIST
12701&Interp_ConstIntAP,
12702#endif
12703#ifdef GET_INTERPFN_DISPATCHERS
12704PRESERVE_NONE
12705static bool Interp_ConstIntAP(InterpState &S, CodePtr &PC) {
12706 {
12707 CodePtr OpPC = PC;
12708 const auto &V0 = ReadArg<IntegralAP<false>>(S, PC);
12709 Const<PT_IntAP>(S, OpPC, V0);
12710 }
12711#if USE_TAILCALLS
12712 MUSTTAIL return InterpNext(S, PC);
12713#else
12714 return true;
12715#endif
12716}
12717#endif
12718#ifdef GET_DISASM
12719case OP_ConstIntAP:
12720 Text.Op = PrintName("ConstIntAP");
12721 Text.Args.push_back(printArg<IntegralAP<false>>(P, PC));
12722 break;
12723#endif
12724#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12725bool emitConstIntAP(const IntegralAP<false> &, SourceInfo);
12726#endif
12727#ifdef GET_LINK_IMPL
12728bool ByteCodeEmitter::emitConstIntAP(const IntegralAP<false> &A0, SourceInfo L) {
12729 return emitOp<IntegralAP<false>>(OP_ConstIntAP, A0, L);
12730}
12731#endif
12732#ifdef GET_EVAL_IMPL
12733bool EvalEmitter::emitConstIntAP(const IntegralAP<false> &A0, SourceInfo L) {
12734 if (!isActive()) return true;
12735 CurrentSource = L;
12736 return Const<PT_IntAP>(S, OpPC, A0);
12737}
12738#endif
12739#ifdef GET_OPCODE_NAMES
12740OP_ConstIntAPS,
12741#endif
12742#ifdef GET_INTERPFN_LIST
12743&Interp_ConstIntAPS,
12744#endif
12745#ifdef GET_INTERPFN_DISPATCHERS
12746PRESERVE_NONE
12747static bool Interp_ConstIntAPS(InterpState &S, CodePtr &PC) {
12748 {
12749 CodePtr OpPC = PC;
12750 const auto &V0 = ReadArg<IntegralAP<true>>(S, PC);
12751 Const<PT_IntAPS>(S, OpPC, V0);
12752 }
12753#if USE_TAILCALLS
12754 MUSTTAIL return InterpNext(S, PC);
12755#else
12756 return true;
12757#endif
12758}
12759#endif
12760#ifdef GET_DISASM
12761case OP_ConstIntAPS:
12762 Text.Op = PrintName("ConstIntAPS");
12763 Text.Args.push_back(printArg<IntegralAP<true>>(P, PC));
12764 break;
12765#endif
12766#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12767bool emitConstIntAPS(const IntegralAP<true> &, SourceInfo);
12768#endif
12769#ifdef GET_LINK_IMPL
12770bool ByteCodeEmitter::emitConstIntAPS(const IntegralAP<true> &A0, SourceInfo L) {
12771 return emitOp<IntegralAP<true>>(OP_ConstIntAPS, A0, L);
12772}
12773#endif
12774#ifdef GET_EVAL_IMPL
12775bool EvalEmitter::emitConstIntAPS(const IntegralAP<true> &A0, SourceInfo L) {
12776 if (!isActive()) return true;
12777 CurrentSource = L;
12778 return Const<PT_IntAPS>(S, OpPC, A0);
12779}
12780#endif
12781#ifdef GET_OPCODE_NAMES
12782OP_ConstSint8,
12783#endif
12784#ifdef GET_INTERPFN_LIST
12785&Interp_ConstSint8,
12786#endif
12787#ifdef GET_INTERPFN_DISPATCHERS
12788PRESERVE_NONE
12789static bool Interp_ConstSint8(InterpState &S, CodePtr &PC) {
12790 {
12791 CodePtr OpPC = PC;
12792 const auto V0 = ReadArg<int8_t>(S, PC);
12793 Const<PT_Sint8>(S, OpPC, V0);
12794 }
12795#if USE_TAILCALLS
12796 MUSTTAIL return InterpNext(S, PC);
12797#else
12798 return true;
12799#endif
12800}
12801#endif
12802#ifdef GET_DISASM
12803case OP_ConstSint8:
12804 Text.Op = PrintName("ConstSint8");
12805 Text.Args.push_back(printArg<int8_t>(P, PC));
12806 break;
12807#endif
12808#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12809bool emitConstSint8( int8_t , SourceInfo);
12810#endif
12811#ifdef GET_LINK_IMPL
12812bool ByteCodeEmitter::emitConstSint8( int8_t A0, SourceInfo L) {
12813 return emitOp<int8_t>(OP_ConstSint8, A0, L);
12814}
12815#endif
12816#ifdef GET_EVAL_IMPL
12817bool EvalEmitter::emitConstSint8( int8_t A0, SourceInfo L) {
12818 if (!isActive()) return true;
12819 CurrentSource = L;
12820 return Const<PT_Sint8>(S, OpPC, A0);
12821}
12822#endif
12823#ifdef GET_OPCODE_NAMES
12824OP_ConstSint16,
12825#endif
12826#ifdef GET_INTERPFN_LIST
12827&Interp_ConstSint16,
12828#endif
12829#ifdef GET_INTERPFN_DISPATCHERS
12830PRESERVE_NONE
12831static bool Interp_ConstSint16(InterpState &S, CodePtr &PC) {
12832 {
12833 CodePtr OpPC = PC;
12834 const auto V0 = ReadArg<int16_t>(S, PC);
12835 Const<PT_Sint16>(S, OpPC, V0);
12836 }
12837#if USE_TAILCALLS
12838 MUSTTAIL return InterpNext(S, PC);
12839#else
12840 return true;
12841#endif
12842}
12843#endif
12844#ifdef GET_DISASM
12845case OP_ConstSint16:
12846 Text.Op = PrintName("ConstSint16");
12847 Text.Args.push_back(printArg<int16_t>(P, PC));
12848 break;
12849#endif
12850#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12851bool emitConstSint16( int16_t , SourceInfo);
12852#endif
12853#ifdef GET_LINK_IMPL
12854bool ByteCodeEmitter::emitConstSint16( int16_t A0, SourceInfo L) {
12855 return emitOp<int16_t>(OP_ConstSint16, A0, L);
12856}
12857#endif
12858#ifdef GET_EVAL_IMPL
12859bool EvalEmitter::emitConstSint16( int16_t A0, SourceInfo L) {
12860 if (!isActive()) return true;
12861 CurrentSource = L;
12862 return Const<PT_Sint16>(S, OpPC, A0);
12863}
12864#endif
12865#ifdef GET_OPCODE_NAMES
12866OP_ConstSint32,
12867#endif
12868#ifdef GET_INTERPFN_LIST
12869&Interp_ConstSint32,
12870#endif
12871#ifdef GET_INTERPFN_DISPATCHERS
12872PRESERVE_NONE
12873static bool Interp_ConstSint32(InterpState &S, CodePtr &PC) {
12874 {
12875 CodePtr OpPC = PC;
12876 const auto V0 = ReadArg<int32_t>(S, PC);
12877 Const<PT_Sint32>(S, OpPC, V0);
12878 }
12879#if USE_TAILCALLS
12880 MUSTTAIL return InterpNext(S, PC);
12881#else
12882 return true;
12883#endif
12884}
12885#endif
12886#ifdef GET_DISASM
12887case OP_ConstSint32:
12888 Text.Op = PrintName("ConstSint32");
12889 Text.Args.push_back(printArg<int32_t>(P, PC));
12890 break;
12891#endif
12892#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12893bool emitConstSint32( int32_t , SourceInfo);
12894#endif
12895#ifdef GET_LINK_IMPL
12896bool ByteCodeEmitter::emitConstSint32( int32_t A0, SourceInfo L) {
12897 return emitOp<int32_t>(OP_ConstSint32, A0, L);
12898}
12899#endif
12900#ifdef GET_EVAL_IMPL
12901bool EvalEmitter::emitConstSint32( int32_t A0, SourceInfo L) {
12902 if (!isActive()) return true;
12903 CurrentSource = L;
12904 return Const<PT_Sint32>(S, OpPC, A0);
12905}
12906#endif
12907#ifdef GET_OPCODE_NAMES
12908OP_ConstSint64,
12909#endif
12910#ifdef GET_INTERPFN_LIST
12911&Interp_ConstSint64,
12912#endif
12913#ifdef GET_INTERPFN_DISPATCHERS
12914PRESERVE_NONE
12915static bool Interp_ConstSint64(InterpState &S, CodePtr &PC) {
12916 {
12917 CodePtr OpPC = PC;
12918 const auto V0 = ReadArg<int64_t>(S, PC);
12919 Const<PT_Sint64>(S, OpPC, V0);
12920 }
12921#if USE_TAILCALLS
12922 MUSTTAIL return InterpNext(S, PC);
12923#else
12924 return true;
12925#endif
12926}
12927#endif
12928#ifdef GET_DISASM
12929case OP_ConstSint64:
12930 Text.Op = PrintName("ConstSint64");
12931 Text.Args.push_back(printArg<int64_t>(P, PC));
12932 break;
12933#endif
12934#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12935bool emitConstSint64( int64_t , SourceInfo);
12936#endif
12937#ifdef GET_LINK_IMPL
12938bool ByteCodeEmitter::emitConstSint64( int64_t A0, SourceInfo L) {
12939 return emitOp<int64_t>(OP_ConstSint64, A0, L);
12940}
12941#endif
12942#ifdef GET_EVAL_IMPL
12943bool EvalEmitter::emitConstSint64( int64_t A0, SourceInfo L) {
12944 if (!isActive()) return true;
12945 CurrentSource = L;
12946 return Const<PT_Sint64>(S, OpPC, A0);
12947}
12948#endif
12949#ifdef GET_OPCODE_NAMES
12950OP_ConstUint8,
12951#endif
12952#ifdef GET_INTERPFN_LIST
12953&Interp_ConstUint8,
12954#endif
12955#ifdef GET_INTERPFN_DISPATCHERS
12956PRESERVE_NONE
12957static bool Interp_ConstUint8(InterpState &S, CodePtr &PC) {
12958 {
12959 CodePtr OpPC = PC;
12960 const auto V0 = ReadArg<uint8_t>(S, PC);
12961 Const<PT_Uint8>(S, OpPC, V0);
12962 }
12963#if USE_TAILCALLS
12964 MUSTTAIL return InterpNext(S, PC);
12965#else
12966 return true;
12967#endif
12968}
12969#endif
12970#ifdef GET_DISASM
12971case OP_ConstUint8:
12972 Text.Op = PrintName("ConstUint8");
12973 Text.Args.push_back(printArg<uint8_t>(P, PC));
12974 break;
12975#endif
12976#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12977bool emitConstUint8( uint8_t , SourceInfo);
12978#endif
12979#ifdef GET_LINK_IMPL
12980bool ByteCodeEmitter::emitConstUint8( uint8_t A0, SourceInfo L) {
12981 return emitOp<uint8_t>(OP_ConstUint8, A0, L);
12982}
12983#endif
12984#ifdef GET_EVAL_IMPL
12985bool EvalEmitter::emitConstUint8( uint8_t A0, SourceInfo L) {
12986 if (!isActive()) return true;
12987 CurrentSource = L;
12988 return Const<PT_Uint8>(S, OpPC, A0);
12989}
12990#endif
12991#ifdef GET_OPCODE_NAMES
12992OP_ConstUint16,
12993#endif
12994#ifdef GET_INTERPFN_LIST
12995&Interp_ConstUint16,
12996#endif
12997#ifdef GET_INTERPFN_DISPATCHERS
12998PRESERVE_NONE
12999static bool Interp_ConstUint16(InterpState &S, CodePtr &PC) {
13000 {
13001 CodePtr OpPC = PC;
13002 const auto V0 = ReadArg<uint16_t>(S, PC);
13003 Const<PT_Uint16>(S, OpPC, V0);
13004 }
13005#if USE_TAILCALLS
13006 MUSTTAIL return InterpNext(S, PC);
13007#else
13008 return true;
13009#endif
13010}
13011#endif
13012#ifdef GET_DISASM
13013case OP_ConstUint16:
13014 Text.Op = PrintName("ConstUint16");
13015 Text.Args.push_back(printArg<uint16_t>(P, PC));
13016 break;
13017#endif
13018#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13019bool emitConstUint16( uint16_t , SourceInfo);
13020#endif
13021#ifdef GET_LINK_IMPL
13022bool ByteCodeEmitter::emitConstUint16( uint16_t A0, SourceInfo L) {
13023 return emitOp<uint16_t>(OP_ConstUint16, A0, L);
13024}
13025#endif
13026#ifdef GET_EVAL_IMPL
13027bool EvalEmitter::emitConstUint16( uint16_t A0, SourceInfo L) {
13028 if (!isActive()) return true;
13029 CurrentSource = L;
13030 return Const<PT_Uint16>(S, OpPC, A0);
13031}
13032#endif
13033#ifdef GET_OPCODE_NAMES
13034OP_ConstUint32,
13035#endif
13036#ifdef GET_INTERPFN_LIST
13037&Interp_ConstUint32,
13038#endif
13039#ifdef GET_INTERPFN_DISPATCHERS
13040PRESERVE_NONE
13041static bool Interp_ConstUint32(InterpState &S, CodePtr &PC) {
13042 {
13043 CodePtr OpPC = PC;
13044 const auto V0 = ReadArg<uint32_t>(S, PC);
13045 Const<PT_Uint32>(S, OpPC, V0);
13046 }
13047#if USE_TAILCALLS
13048 MUSTTAIL return InterpNext(S, PC);
13049#else
13050 return true;
13051#endif
13052}
13053#endif
13054#ifdef GET_DISASM
13055case OP_ConstUint32:
13056 Text.Op = PrintName("ConstUint32");
13057 Text.Args.push_back(printArg<uint32_t>(P, PC));
13058 break;
13059#endif
13060#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13061bool emitConstUint32( uint32_t , SourceInfo);
13062#endif
13063#ifdef GET_LINK_IMPL
13064bool ByteCodeEmitter::emitConstUint32( uint32_t A0, SourceInfo L) {
13065 return emitOp<uint32_t>(OP_ConstUint32, A0, L);
13066}
13067#endif
13068#ifdef GET_EVAL_IMPL
13069bool EvalEmitter::emitConstUint32( uint32_t A0, SourceInfo L) {
13070 if (!isActive()) return true;
13071 CurrentSource = L;
13072 return Const<PT_Uint32>(S, OpPC, A0);
13073}
13074#endif
13075#ifdef GET_OPCODE_NAMES
13076OP_ConstUint64,
13077#endif
13078#ifdef GET_INTERPFN_LIST
13079&Interp_ConstUint64,
13080#endif
13081#ifdef GET_INTERPFN_DISPATCHERS
13082PRESERVE_NONE
13083static bool Interp_ConstUint64(InterpState &S, CodePtr &PC) {
13084 {
13085 CodePtr OpPC = PC;
13086 const auto V0 = ReadArg<uint64_t>(S, PC);
13087 Const<PT_Uint64>(S, OpPC, V0);
13088 }
13089#if USE_TAILCALLS
13090 MUSTTAIL return InterpNext(S, PC);
13091#else
13092 return true;
13093#endif
13094}
13095#endif
13096#ifdef GET_DISASM
13097case OP_ConstUint64:
13098 Text.Op = PrintName("ConstUint64");
13099 Text.Args.push_back(printArg<uint64_t>(P, PC));
13100 break;
13101#endif
13102#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13103bool emitConstUint64( uint64_t , SourceInfo);
13104#endif
13105#ifdef GET_LINK_IMPL
13106bool ByteCodeEmitter::emitConstUint64( uint64_t A0, SourceInfo L) {
13107 return emitOp<uint64_t>(OP_ConstUint64, A0, L);
13108}
13109#endif
13110#ifdef GET_EVAL_IMPL
13111bool EvalEmitter::emitConstUint64( uint64_t A0, SourceInfo L) {
13112 if (!isActive()) return true;
13113 CurrentSource = L;
13114 return Const<PT_Uint64>(S, OpPC, A0);
13115}
13116#endif
13117#ifdef GET_OPCODE_NAMES
13118OP_CopyArraySint8,
13119OP_CopyArrayUint8,
13120OP_CopyArraySint16,
13121OP_CopyArrayUint16,
13122OP_CopyArraySint32,
13123OP_CopyArrayUint32,
13124OP_CopyArraySint64,
13125OP_CopyArrayUint64,
13126OP_CopyArrayIntAP,
13127OP_CopyArrayIntAPS,
13128OP_CopyArrayBool,
13129OP_CopyArrayFixedPoint,
13130OP_CopyArrayPtr,
13131OP_CopyArrayMemberPtr,
13132OP_CopyArrayFloat,
13133#endif
13134#ifdef GET_INTERPFN_LIST
13135&Interp_CopyArraySint8,
13136&Interp_CopyArrayUint8,
13137&Interp_CopyArraySint16,
13138&Interp_CopyArrayUint16,
13139&Interp_CopyArraySint32,
13140&Interp_CopyArrayUint32,
13141&Interp_CopyArraySint64,
13142&Interp_CopyArrayUint64,
13143&Interp_CopyArrayIntAP,
13144&Interp_CopyArrayIntAPS,
13145&Interp_CopyArrayBool,
13146&Interp_CopyArrayFixedPoint,
13147&Interp_CopyArrayPtr,
13148&Interp_CopyArrayMemberPtr,
13149&Interp_CopyArrayFloat,
13150#endif
13151#ifdef GET_INTERPFN_DISPATCHERS
13152PRESERVE_NONE
13153static bool Interp_CopyArraySint8(InterpState &S, CodePtr &PC) {
13154 {
13155 CodePtr OpPC = PC;
13156 const auto V0 = ReadArg<uint32_t>(S, PC);
13157 const auto V1 = ReadArg<uint32_t>(S, PC);
13158 const auto V2 = ReadArg<uint32_t>(S, PC);
13159 if (!CopyArray<PT_Sint8>(S, OpPC, V0, V1, V2)) return false;
13160 }
13161#if USE_TAILCALLS
13162 MUSTTAIL return InterpNext(S, PC);
13163#else
13164 return true;
13165#endif
13166}
13167PRESERVE_NONE
13168static bool Interp_CopyArrayUint8(InterpState &S, CodePtr &PC) {
13169 {
13170 CodePtr OpPC = PC;
13171 const auto V0 = ReadArg<uint32_t>(S, PC);
13172 const auto V1 = ReadArg<uint32_t>(S, PC);
13173 const auto V2 = ReadArg<uint32_t>(S, PC);
13174 if (!CopyArray<PT_Uint8>(S, OpPC, V0, V1, V2)) return false;
13175 }
13176#if USE_TAILCALLS
13177 MUSTTAIL return InterpNext(S, PC);
13178#else
13179 return true;
13180#endif
13181}
13182PRESERVE_NONE
13183static bool Interp_CopyArraySint16(InterpState &S, CodePtr &PC) {
13184 {
13185 CodePtr OpPC = PC;
13186 const auto V0 = ReadArg<uint32_t>(S, PC);
13187 const auto V1 = ReadArg<uint32_t>(S, PC);
13188 const auto V2 = ReadArg<uint32_t>(S, PC);
13189 if (!CopyArray<PT_Sint16>(S, OpPC, V0, V1, V2)) return false;
13190 }
13191#if USE_TAILCALLS
13192 MUSTTAIL return InterpNext(S, PC);
13193#else
13194 return true;
13195#endif
13196}
13197PRESERVE_NONE
13198static bool Interp_CopyArrayUint16(InterpState &S, CodePtr &PC) {
13199 {
13200 CodePtr OpPC = PC;
13201 const auto V0 = ReadArg<uint32_t>(S, PC);
13202 const auto V1 = ReadArg<uint32_t>(S, PC);
13203 const auto V2 = ReadArg<uint32_t>(S, PC);
13204 if (!CopyArray<PT_Uint16>(S, OpPC, V0, V1, V2)) return false;
13205 }
13206#if USE_TAILCALLS
13207 MUSTTAIL return InterpNext(S, PC);
13208#else
13209 return true;
13210#endif
13211}
13212PRESERVE_NONE
13213static bool Interp_CopyArraySint32(InterpState &S, CodePtr &PC) {
13214 {
13215 CodePtr OpPC = PC;
13216 const auto V0 = ReadArg<uint32_t>(S, PC);
13217 const auto V1 = ReadArg<uint32_t>(S, PC);
13218 const auto V2 = ReadArg<uint32_t>(S, PC);
13219 if (!CopyArray<PT_Sint32>(S, OpPC, V0, V1, V2)) return false;
13220 }
13221#if USE_TAILCALLS
13222 MUSTTAIL return InterpNext(S, PC);
13223#else
13224 return true;
13225#endif
13226}
13227PRESERVE_NONE
13228static bool Interp_CopyArrayUint32(InterpState &S, CodePtr &PC) {
13229 {
13230 CodePtr OpPC = PC;
13231 const auto V0 = ReadArg<uint32_t>(S, PC);
13232 const auto V1 = ReadArg<uint32_t>(S, PC);
13233 const auto V2 = ReadArg<uint32_t>(S, PC);
13234 if (!CopyArray<PT_Uint32>(S, OpPC, V0, V1, V2)) return false;
13235 }
13236#if USE_TAILCALLS
13237 MUSTTAIL return InterpNext(S, PC);
13238#else
13239 return true;
13240#endif
13241}
13242PRESERVE_NONE
13243static bool Interp_CopyArraySint64(InterpState &S, CodePtr &PC) {
13244 {
13245 CodePtr OpPC = PC;
13246 const auto V0 = ReadArg<uint32_t>(S, PC);
13247 const auto V1 = ReadArg<uint32_t>(S, PC);
13248 const auto V2 = ReadArg<uint32_t>(S, PC);
13249 if (!CopyArray<PT_Sint64>(S, OpPC, V0, V1, V2)) return false;
13250 }
13251#if USE_TAILCALLS
13252 MUSTTAIL return InterpNext(S, PC);
13253#else
13254 return true;
13255#endif
13256}
13257PRESERVE_NONE
13258static bool Interp_CopyArrayUint64(InterpState &S, CodePtr &PC) {
13259 {
13260 CodePtr OpPC = PC;
13261 const auto V0 = ReadArg<uint32_t>(S, PC);
13262 const auto V1 = ReadArg<uint32_t>(S, PC);
13263 const auto V2 = ReadArg<uint32_t>(S, PC);
13264 if (!CopyArray<PT_Uint64>(S, OpPC, V0, V1, V2)) return false;
13265 }
13266#if USE_TAILCALLS
13267 MUSTTAIL return InterpNext(S, PC);
13268#else
13269 return true;
13270#endif
13271}
13272PRESERVE_NONE
13273static bool Interp_CopyArrayIntAP(InterpState &S, CodePtr &PC) {
13274 {
13275 CodePtr OpPC = PC;
13276 const auto V0 = ReadArg<uint32_t>(S, PC);
13277 const auto V1 = ReadArg<uint32_t>(S, PC);
13278 const auto V2 = ReadArg<uint32_t>(S, PC);
13279 if (!CopyArray<PT_IntAP>(S, OpPC, V0, V1, V2)) return false;
13280 }
13281#if USE_TAILCALLS
13282 MUSTTAIL return InterpNext(S, PC);
13283#else
13284 return true;
13285#endif
13286}
13287PRESERVE_NONE
13288static bool Interp_CopyArrayIntAPS(InterpState &S, CodePtr &PC) {
13289 {
13290 CodePtr OpPC = PC;
13291 const auto V0 = ReadArg<uint32_t>(S, PC);
13292 const auto V1 = ReadArg<uint32_t>(S, PC);
13293 const auto V2 = ReadArg<uint32_t>(S, PC);
13294 if (!CopyArray<PT_IntAPS>(S, OpPC, V0, V1, V2)) return false;
13295 }
13296#if USE_TAILCALLS
13297 MUSTTAIL return InterpNext(S, PC);
13298#else
13299 return true;
13300#endif
13301}
13302PRESERVE_NONE
13303static bool Interp_CopyArrayBool(InterpState &S, CodePtr &PC) {
13304 {
13305 CodePtr OpPC = PC;
13306 const auto V0 = ReadArg<uint32_t>(S, PC);
13307 const auto V1 = ReadArg<uint32_t>(S, PC);
13308 const auto V2 = ReadArg<uint32_t>(S, PC);
13309 if (!CopyArray<PT_Bool>(S, OpPC, V0, V1, V2)) return false;
13310 }
13311#if USE_TAILCALLS
13312 MUSTTAIL return InterpNext(S, PC);
13313#else
13314 return true;
13315#endif
13316}
13317PRESERVE_NONE
13318static bool Interp_CopyArrayFixedPoint(InterpState &S, CodePtr &PC) {
13319 {
13320 CodePtr OpPC = PC;
13321 const auto V0 = ReadArg<uint32_t>(S, PC);
13322 const auto V1 = ReadArg<uint32_t>(S, PC);
13323 const auto V2 = ReadArg<uint32_t>(S, PC);
13324 if (!CopyArray<PT_FixedPoint>(S, OpPC, V0, V1, V2)) return false;
13325 }
13326#if USE_TAILCALLS
13327 MUSTTAIL return InterpNext(S, PC);
13328#else
13329 return true;
13330#endif
13331}
13332PRESERVE_NONE
13333static bool Interp_CopyArrayPtr(InterpState &S, CodePtr &PC) {
13334 {
13335 CodePtr OpPC = PC;
13336 const auto V0 = ReadArg<uint32_t>(S, PC);
13337 const auto V1 = ReadArg<uint32_t>(S, PC);
13338 const auto V2 = ReadArg<uint32_t>(S, PC);
13339 if (!CopyArray<PT_Ptr>(S, OpPC, V0, V1, V2)) return false;
13340 }
13341#if USE_TAILCALLS
13342 MUSTTAIL return InterpNext(S, PC);
13343#else
13344 return true;
13345#endif
13346}
13347PRESERVE_NONE
13348static bool Interp_CopyArrayMemberPtr(InterpState &S, CodePtr &PC) {
13349 {
13350 CodePtr OpPC = PC;
13351 const auto V0 = ReadArg<uint32_t>(S, PC);
13352 const auto V1 = ReadArg<uint32_t>(S, PC);
13353 const auto V2 = ReadArg<uint32_t>(S, PC);
13354 if (!CopyArray<PT_MemberPtr>(S, OpPC, V0, V1, V2)) return false;
13355 }
13356#if USE_TAILCALLS
13357 MUSTTAIL return InterpNext(S, PC);
13358#else
13359 return true;
13360#endif
13361}
13362PRESERVE_NONE
13363static bool Interp_CopyArrayFloat(InterpState &S, CodePtr &PC) {
13364 {
13365 CodePtr OpPC = PC;
13366 const auto V0 = ReadArg<uint32_t>(S, PC);
13367 const auto V1 = ReadArg<uint32_t>(S, PC);
13368 const auto V2 = ReadArg<uint32_t>(S, PC);
13369 if (!CopyArray<PT_Float>(S, OpPC, V0, V1, V2)) return false;
13370 }
13371#if USE_TAILCALLS
13372 MUSTTAIL return InterpNext(S, PC);
13373#else
13374 return true;
13375#endif
13376}
13377#endif
13378#ifdef GET_DISASM
13379case OP_CopyArraySint8:
13380 Text.Op = PrintName("CopyArraySint8");
13381 Text.Args.push_back(printArg<uint32_t>(P, PC));
13382 Text.Args.push_back(printArg<uint32_t>(P, PC));
13383 Text.Args.push_back(printArg<uint32_t>(P, PC));
13384 break;
13385case OP_CopyArrayUint8:
13386 Text.Op = PrintName("CopyArrayUint8");
13387 Text.Args.push_back(printArg<uint32_t>(P, PC));
13388 Text.Args.push_back(printArg<uint32_t>(P, PC));
13389 Text.Args.push_back(printArg<uint32_t>(P, PC));
13390 break;
13391case OP_CopyArraySint16:
13392 Text.Op = PrintName("CopyArraySint16");
13393 Text.Args.push_back(printArg<uint32_t>(P, PC));
13394 Text.Args.push_back(printArg<uint32_t>(P, PC));
13395 Text.Args.push_back(printArg<uint32_t>(P, PC));
13396 break;
13397case OP_CopyArrayUint16:
13398 Text.Op = PrintName("CopyArrayUint16");
13399 Text.Args.push_back(printArg<uint32_t>(P, PC));
13400 Text.Args.push_back(printArg<uint32_t>(P, PC));
13401 Text.Args.push_back(printArg<uint32_t>(P, PC));
13402 break;
13403case OP_CopyArraySint32:
13404 Text.Op = PrintName("CopyArraySint32");
13405 Text.Args.push_back(printArg<uint32_t>(P, PC));
13406 Text.Args.push_back(printArg<uint32_t>(P, PC));
13407 Text.Args.push_back(printArg<uint32_t>(P, PC));
13408 break;
13409case OP_CopyArrayUint32:
13410 Text.Op = PrintName("CopyArrayUint32");
13411 Text.Args.push_back(printArg<uint32_t>(P, PC));
13412 Text.Args.push_back(printArg<uint32_t>(P, PC));
13413 Text.Args.push_back(printArg<uint32_t>(P, PC));
13414 break;
13415case OP_CopyArraySint64:
13416 Text.Op = PrintName("CopyArraySint64");
13417 Text.Args.push_back(printArg<uint32_t>(P, PC));
13418 Text.Args.push_back(printArg<uint32_t>(P, PC));
13419 Text.Args.push_back(printArg<uint32_t>(P, PC));
13420 break;
13421case OP_CopyArrayUint64:
13422 Text.Op = PrintName("CopyArrayUint64");
13423 Text.Args.push_back(printArg<uint32_t>(P, PC));
13424 Text.Args.push_back(printArg<uint32_t>(P, PC));
13425 Text.Args.push_back(printArg<uint32_t>(P, PC));
13426 break;
13427case OP_CopyArrayIntAP:
13428 Text.Op = PrintName("CopyArrayIntAP");
13429 Text.Args.push_back(printArg<uint32_t>(P, PC));
13430 Text.Args.push_back(printArg<uint32_t>(P, PC));
13431 Text.Args.push_back(printArg<uint32_t>(P, PC));
13432 break;
13433case OP_CopyArrayIntAPS:
13434 Text.Op = PrintName("CopyArrayIntAPS");
13435 Text.Args.push_back(printArg<uint32_t>(P, PC));
13436 Text.Args.push_back(printArg<uint32_t>(P, PC));
13437 Text.Args.push_back(printArg<uint32_t>(P, PC));
13438 break;
13439case OP_CopyArrayBool:
13440 Text.Op = PrintName("CopyArrayBool");
13441 Text.Args.push_back(printArg<uint32_t>(P, PC));
13442 Text.Args.push_back(printArg<uint32_t>(P, PC));
13443 Text.Args.push_back(printArg<uint32_t>(P, PC));
13444 break;
13445case OP_CopyArrayFixedPoint:
13446 Text.Op = PrintName("CopyArrayFixedPoint");
13447 Text.Args.push_back(printArg<uint32_t>(P, PC));
13448 Text.Args.push_back(printArg<uint32_t>(P, PC));
13449 Text.Args.push_back(printArg<uint32_t>(P, PC));
13450 break;
13451case OP_CopyArrayPtr:
13452 Text.Op = PrintName("CopyArrayPtr");
13453 Text.Args.push_back(printArg<uint32_t>(P, PC));
13454 Text.Args.push_back(printArg<uint32_t>(P, PC));
13455 Text.Args.push_back(printArg<uint32_t>(P, PC));
13456 break;
13457case OP_CopyArrayMemberPtr:
13458 Text.Op = PrintName("CopyArrayMemberPtr");
13459 Text.Args.push_back(printArg<uint32_t>(P, PC));
13460 Text.Args.push_back(printArg<uint32_t>(P, PC));
13461 Text.Args.push_back(printArg<uint32_t>(P, PC));
13462 break;
13463case OP_CopyArrayFloat:
13464 Text.Op = PrintName("CopyArrayFloat");
13465 Text.Args.push_back(printArg<uint32_t>(P, PC));
13466 Text.Args.push_back(printArg<uint32_t>(P, PC));
13467 Text.Args.push_back(printArg<uint32_t>(P, PC));
13468 break;
13469#endif
13470#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13471bool emitCopyArraySint8( uint32_t , uint32_t , uint32_t , SourceInfo);
13472bool emitCopyArrayUint8( uint32_t , uint32_t , uint32_t , SourceInfo);
13473bool emitCopyArraySint16( uint32_t , uint32_t , uint32_t , SourceInfo);
13474bool emitCopyArrayUint16( uint32_t , uint32_t , uint32_t , SourceInfo);
13475bool emitCopyArraySint32( uint32_t , uint32_t , uint32_t , SourceInfo);
13476bool emitCopyArrayUint32( uint32_t , uint32_t , uint32_t , SourceInfo);
13477bool emitCopyArraySint64( uint32_t , uint32_t , uint32_t , SourceInfo);
13478bool emitCopyArrayUint64( uint32_t , uint32_t , uint32_t , SourceInfo);
13479bool emitCopyArrayIntAP( uint32_t , uint32_t , uint32_t , SourceInfo);
13480bool emitCopyArrayIntAPS( uint32_t , uint32_t , uint32_t , SourceInfo);
13481bool emitCopyArrayBool( uint32_t , uint32_t , uint32_t , SourceInfo);
13482bool emitCopyArrayFixedPoint( uint32_t , uint32_t , uint32_t , SourceInfo);
13483bool emitCopyArrayPtr( uint32_t , uint32_t , uint32_t , SourceInfo);
13484bool emitCopyArrayMemberPtr( uint32_t , uint32_t , uint32_t , SourceInfo);
13485bool emitCopyArrayFloat( uint32_t , uint32_t , uint32_t , SourceInfo);
13486#endif
13487#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13488[[nodiscard]] bool emitCopyArray(PrimType, uint32_t, uint32_t, uint32_t, SourceInfo I);
13489#endif
13490#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
13491bool
13492#if defined(GET_EVAL_IMPL)
13493EvalEmitter
13494#else
13495ByteCodeEmitter
13496#endif
13497::emitCopyArray(PrimType T0, uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo I) {
13498 switch (T0) {
13499 case PT_Sint8:
13500 return emitCopyArraySint8(A0, A1, A2, I);
13501 case PT_Uint8:
13502 return emitCopyArrayUint8(A0, A1, A2, I);
13503 case PT_Sint16:
13504 return emitCopyArraySint16(A0, A1, A2, I);
13505 case PT_Uint16:
13506 return emitCopyArrayUint16(A0, A1, A2, I);
13507 case PT_Sint32:
13508 return emitCopyArraySint32(A0, A1, A2, I);
13509 case PT_Uint32:
13510 return emitCopyArrayUint32(A0, A1, A2, I);
13511 case PT_Sint64:
13512 return emitCopyArraySint64(A0, A1, A2, I);
13513 case PT_Uint64:
13514 return emitCopyArrayUint64(A0, A1, A2, I);
13515 case PT_IntAP:
13516 return emitCopyArrayIntAP(A0, A1, A2, I);
13517 case PT_IntAPS:
13518 return emitCopyArrayIntAPS(A0, A1, A2, I);
13519 case PT_Bool:
13520 return emitCopyArrayBool(A0, A1, A2, I);
13521 case PT_FixedPoint:
13522 return emitCopyArrayFixedPoint(A0, A1, A2, I);
13523 case PT_Ptr:
13524 return emitCopyArrayPtr(A0, A1, A2, I);
13525 case PT_MemberPtr:
13526 return emitCopyArrayMemberPtr(A0, A1, A2, I);
13527 case PT_Float:
13528 return emitCopyArrayFloat(A0, A1, A2, I);
13529 }
13530 llvm_unreachable("invalid enum value");
13531}
13532#endif
13533#ifdef GET_LINK_IMPL
13534bool ByteCodeEmitter::emitCopyArraySint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13535 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint8, A0, A1, A2, L);
13536}
13537bool ByteCodeEmitter::emitCopyArrayUint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13538 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint8, A0, A1, A2, L);
13539}
13540bool ByteCodeEmitter::emitCopyArraySint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13541 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint16, A0, A1, A2, L);
13542}
13543bool ByteCodeEmitter::emitCopyArrayUint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13544 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint16, A0, A1, A2, L);
13545}
13546bool ByteCodeEmitter::emitCopyArraySint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13547 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint32, A0, A1, A2, L);
13548}
13549bool ByteCodeEmitter::emitCopyArrayUint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13550 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint32, A0, A1, A2, L);
13551}
13552bool ByteCodeEmitter::emitCopyArraySint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13553 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint64, A0, A1, A2, L);
13554}
13555bool ByteCodeEmitter::emitCopyArrayUint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13556 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint64, A0, A1, A2, L);
13557}
13558bool ByteCodeEmitter::emitCopyArrayIntAP( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13559 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayIntAP, A0, A1, A2, L);
13560}
13561bool ByteCodeEmitter::emitCopyArrayIntAPS( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13562 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayIntAPS, A0, A1, A2, L);
13563}
13564bool ByteCodeEmitter::emitCopyArrayBool( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13565 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayBool, A0, A1, A2, L);
13566}
13567bool ByteCodeEmitter::emitCopyArrayFixedPoint( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13568 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayFixedPoint, A0, A1, A2, L);
13569}
13570bool ByteCodeEmitter::emitCopyArrayPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13571 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayPtr, A0, A1, A2, L);
13572}
13573bool ByteCodeEmitter::emitCopyArrayMemberPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13574 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayMemberPtr, A0, A1, A2, L);
13575}
13576bool ByteCodeEmitter::emitCopyArrayFloat( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13577 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayFloat, A0, A1, A2, L);
13578}
13579#endif
13580#ifdef GET_EVAL_IMPL
13581bool EvalEmitter::emitCopyArraySint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13582 if (!isActive()) return true;
13583 CurrentSource = L;
13584 return CopyArray<PT_Sint8>(S, OpPC, A0, A1, A2);
13585}
13586bool EvalEmitter::emitCopyArrayUint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13587 if (!isActive()) return true;
13588 CurrentSource = L;
13589 return CopyArray<PT_Uint8>(S, OpPC, A0, A1, A2);
13590}
13591bool EvalEmitter::emitCopyArraySint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13592 if (!isActive()) return true;
13593 CurrentSource = L;
13594 return CopyArray<PT_Sint16>(S, OpPC, A0, A1, A2);
13595}
13596bool EvalEmitter::emitCopyArrayUint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13597 if (!isActive()) return true;
13598 CurrentSource = L;
13599 return CopyArray<PT_Uint16>(S, OpPC, A0, A1, A2);
13600}
13601bool EvalEmitter::emitCopyArraySint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13602 if (!isActive()) return true;
13603 CurrentSource = L;
13604 return CopyArray<PT_Sint32>(S, OpPC, A0, A1, A2);
13605}
13606bool EvalEmitter::emitCopyArrayUint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13607 if (!isActive()) return true;
13608 CurrentSource = L;
13609 return CopyArray<PT_Uint32>(S, OpPC, A0, A1, A2);
13610}
13611bool EvalEmitter::emitCopyArraySint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13612 if (!isActive()) return true;
13613 CurrentSource = L;
13614 return CopyArray<PT_Sint64>(S, OpPC, A0, A1, A2);
13615}
13616bool EvalEmitter::emitCopyArrayUint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13617 if (!isActive()) return true;
13618 CurrentSource = L;
13619 return CopyArray<PT_Uint64>(S, OpPC, A0, A1, A2);
13620}
13621bool EvalEmitter::emitCopyArrayIntAP( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13622 if (!isActive()) return true;
13623 CurrentSource = L;
13624 return CopyArray<PT_IntAP>(S, OpPC, A0, A1, A2);
13625}
13626bool EvalEmitter::emitCopyArrayIntAPS( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13627 if (!isActive()) return true;
13628 CurrentSource = L;
13629 return CopyArray<PT_IntAPS>(S, OpPC, A0, A1, A2);
13630}
13631bool EvalEmitter::emitCopyArrayBool( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13632 if (!isActive()) return true;
13633 CurrentSource = L;
13634 return CopyArray<PT_Bool>(S, OpPC, A0, A1, A2);
13635}
13636bool EvalEmitter::emitCopyArrayFixedPoint( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13637 if (!isActive()) return true;
13638 CurrentSource = L;
13639 return CopyArray<PT_FixedPoint>(S, OpPC, A0, A1, A2);
13640}
13641bool EvalEmitter::emitCopyArrayPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13642 if (!isActive()) return true;
13643 CurrentSource = L;
13644 return CopyArray<PT_Ptr>(S, OpPC, A0, A1, A2);
13645}
13646bool EvalEmitter::emitCopyArrayMemberPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13647 if (!isActive()) return true;
13648 CurrentSource = L;
13649 return CopyArray<PT_MemberPtr>(S, OpPC, A0, A1, A2);
13650}
13651bool EvalEmitter::emitCopyArrayFloat( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
13652 if (!isActive()) return true;
13653 CurrentSource = L;
13654 return CopyArray<PT_Float>(S, OpPC, A0, A1, A2);
13655}
13656#endif
13657#ifdef GET_OPCODE_NAMES
13658OP_CopyMemberPtrPath,
13659#endif
13660#ifdef GET_INTERPFN_LIST
13661&Interp_CopyMemberPtrPath,
13662#endif
13663#ifdef GET_INTERPFN_DISPATCHERS
13664PRESERVE_NONE
13665static bool Interp_CopyMemberPtrPath(InterpState &S, CodePtr &PC) {
13666 {
13667 CodePtr OpPC = PC;
13668 const auto V0 = ReadArg<const RecordDecl *>(S, PC);
13669 const auto V1 = ReadArg<bool>(S, PC);
13670 if (!CopyMemberPtrPath(S, OpPC, V0, V1)) return false;
13671 }
13672#if USE_TAILCALLS
13673 MUSTTAIL return InterpNext(S, PC);
13674#else
13675 return true;
13676#endif
13677}
13678#endif
13679#ifdef GET_DISASM
13680case OP_CopyMemberPtrPath:
13681 Text.Op = PrintName("CopyMemberPtrPath");
13682 Text.Args.push_back(printArg<const RecordDecl *>(P, PC));
13683 Text.Args.push_back(printArg<bool>(P, PC));
13684 break;
13685#endif
13686#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13687bool emitCopyMemberPtrPath( const RecordDecl * , bool , SourceInfo);
13688#endif
13689#ifdef GET_LINK_IMPL
13690bool ByteCodeEmitter::emitCopyMemberPtrPath( const RecordDecl * A0, bool A1, SourceInfo L) {
13691 return emitOp<const RecordDecl *, bool>(OP_CopyMemberPtrPath, A0, A1, L);
13692}
13693#endif
13694#ifdef GET_EVAL_IMPL
13695bool EvalEmitter::emitCopyMemberPtrPath( const RecordDecl * A0, bool A1, SourceInfo L) {
13696 if (!isActive()) return true;
13697 CurrentSource = L;
13698 return CopyMemberPtrPath(S, OpPC, A0, A1);
13699}
13700#endif
13701#ifdef GET_OPCODE_NAMES
13702OP_CtorCheck,
13703#endif
13704#ifdef GET_INTERPFN_LIST
13705&Interp_CtorCheck,
13706#endif
13707#ifdef GET_INTERPFN_DISPATCHERS
13708PRESERVE_NONE
13709static bool Interp_CtorCheck(InterpState &S, CodePtr &PC) {
13710 if (!CtorCheck(S, PC)) return false;
13711#if USE_TAILCALLS
13712 MUSTTAIL return InterpNext(S, PC);
13713#else
13714 return true;
13715#endif
13716}
13717#endif
13718#ifdef GET_DISASM
13719case OP_CtorCheck:
13720 Text.Op = PrintName("CtorCheck");
13721 break;
13722#endif
13723#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13724bool emitCtorCheck(SourceInfo);
13725#endif
13726#ifdef GET_LINK_IMPL
13727bool ByteCodeEmitter::emitCtorCheck(SourceInfo L) {
13728 return emitOp<>(OP_CtorCheck, L);
13729}
13730#endif
13731#ifdef GET_EVAL_IMPL
13732bool EvalEmitter::emitCtorCheck(SourceInfo L) {
13733 if (!isActive()) return true;
13734 CurrentSource = L;
13735 return CtorCheck(S, OpPC);
13736}
13737#endif
13738#ifdef GET_OPCODE_NAMES
13739OP_DecSint8,
13740OP_DecUint8,
13741OP_DecSint16,
13742OP_DecUint16,
13743OP_DecSint32,
13744OP_DecUint32,
13745OP_DecSint64,
13746OP_DecUint64,
13747OP_DecIntAP,
13748OP_DecIntAPS,
13749OP_DecBool,
13750OP_DecFixedPoint,
13751#endif
13752#ifdef GET_INTERPFN_LIST
13753&Interp_DecSint8,
13754&Interp_DecUint8,
13755&Interp_DecSint16,
13756&Interp_DecUint16,
13757&Interp_DecSint32,
13758&Interp_DecUint32,
13759&Interp_DecSint64,
13760&Interp_DecUint64,
13761&Interp_DecIntAP,
13762&Interp_DecIntAPS,
13763&Interp_DecBool,
13764&Interp_DecFixedPoint,
13765#endif
13766#ifdef GET_INTERPFN_DISPATCHERS
13767PRESERVE_NONE
13768static bool Interp_DecSint8(InterpState &S, CodePtr &PC) {
13769 {
13770 CodePtr OpPC = PC;
13771 const auto V0 = ReadArg<bool>(S, PC);
13772 if (!Dec<PT_Sint8>(S, OpPC, V0)) return false;
13773 }
13774#if USE_TAILCALLS
13775 MUSTTAIL return InterpNext(S, PC);
13776#else
13777 return true;
13778#endif
13779}
13780PRESERVE_NONE
13781static bool Interp_DecUint8(InterpState &S, CodePtr &PC) {
13782 {
13783 CodePtr OpPC = PC;
13784 const auto V0 = ReadArg<bool>(S, PC);
13785 if (!Dec<PT_Uint8>(S, OpPC, V0)) return false;
13786 }
13787#if USE_TAILCALLS
13788 MUSTTAIL return InterpNext(S, PC);
13789#else
13790 return true;
13791#endif
13792}
13793PRESERVE_NONE
13794static bool Interp_DecSint16(InterpState &S, CodePtr &PC) {
13795 {
13796 CodePtr OpPC = PC;
13797 const auto V0 = ReadArg<bool>(S, PC);
13798 if (!Dec<PT_Sint16>(S, OpPC, V0)) return false;
13799 }
13800#if USE_TAILCALLS
13801 MUSTTAIL return InterpNext(S, PC);
13802#else
13803 return true;
13804#endif
13805}
13806PRESERVE_NONE
13807static bool Interp_DecUint16(InterpState &S, CodePtr &PC) {
13808 {
13809 CodePtr OpPC = PC;
13810 const auto V0 = ReadArg<bool>(S, PC);
13811 if (!Dec<PT_Uint16>(S, OpPC, V0)) return false;
13812 }
13813#if USE_TAILCALLS
13814 MUSTTAIL return InterpNext(S, PC);
13815#else
13816 return true;
13817#endif
13818}
13819PRESERVE_NONE
13820static bool Interp_DecSint32(InterpState &S, CodePtr &PC) {
13821 {
13822 CodePtr OpPC = PC;
13823 const auto V0 = ReadArg<bool>(S, PC);
13824 if (!Dec<PT_Sint32>(S, OpPC, V0)) return false;
13825 }
13826#if USE_TAILCALLS
13827 MUSTTAIL return InterpNext(S, PC);
13828#else
13829 return true;
13830#endif
13831}
13832PRESERVE_NONE
13833static bool Interp_DecUint32(InterpState &S, CodePtr &PC) {
13834 {
13835 CodePtr OpPC = PC;
13836 const auto V0 = ReadArg<bool>(S, PC);
13837 if (!Dec<PT_Uint32>(S, OpPC, V0)) return false;
13838 }
13839#if USE_TAILCALLS
13840 MUSTTAIL return InterpNext(S, PC);
13841#else
13842 return true;
13843#endif
13844}
13845PRESERVE_NONE
13846static bool Interp_DecSint64(InterpState &S, CodePtr &PC) {
13847 {
13848 CodePtr OpPC = PC;
13849 const auto V0 = ReadArg<bool>(S, PC);
13850 if (!Dec<PT_Sint64>(S, OpPC, V0)) return false;
13851 }
13852#if USE_TAILCALLS
13853 MUSTTAIL return InterpNext(S, PC);
13854#else
13855 return true;
13856#endif
13857}
13858PRESERVE_NONE
13859static bool Interp_DecUint64(InterpState &S, CodePtr &PC) {
13860 {
13861 CodePtr OpPC = PC;
13862 const auto V0 = ReadArg<bool>(S, PC);
13863 if (!Dec<PT_Uint64>(S, OpPC, V0)) return false;
13864 }
13865#if USE_TAILCALLS
13866 MUSTTAIL return InterpNext(S, PC);
13867#else
13868 return true;
13869#endif
13870}
13871PRESERVE_NONE
13872static bool Interp_DecIntAP(InterpState &S, CodePtr &PC) {
13873 {
13874 CodePtr OpPC = PC;
13875 const auto V0 = ReadArg<bool>(S, PC);
13876 if (!Dec<PT_IntAP>(S, OpPC, V0)) return false;
13877 }
13878#if USE_TAILCALLS
13879 MUSTTAIL return InterpNext(S, PC);
13880#else
13881 return true;
13882#endif
13883}
13884PRESERVE_NONE
13885static bool Interp_DecIntAPS(InterpState &S, CodePtr &PC) {
13886 {
13887 CodePtr OpPC = PC;
13888 const auto V0 = ReadArg<bool>(S, PC);
13889 if (!Dec<PT_IntAPS>(S, OpPC, V0)) return false;
13890 }
13891#if USE_TAILCALLS
13892 MUSTTAIL return InterpNext(S, PC);
13893#else
13894 return true;
13895#endif
13896}
13897PRESERVE_NONE
13898static bool Interp_DecBool(InterpState &S, CodePtr &PC) {
13899 {
13900 CodePtr OpPC = PC;
13901 const auto V0 = ReadArg<bool>(S, PC);
13902 if (!Dec<PT_Bool>(S, OpPC, V0)) return false;
13903 }
13904#if USE_TAILCALLS
13905 MUSTTAIL return InterpNext(S, PC);
13906#else
13907 return true;
13908#endif
13909}
13910PRESERVE_NONE
13911static bool Interp_DecFixedPoint(InterpState &S, CodePtr &PC) {
13912 {
13913 CodePtr OpPC = PC;
13914 const auto V0 = ReadArg<bool>(S, PC);
13915 if (!Dec<PT_FixedPoint>(S, OpPC, V0)) return false;
13916 }
13917#if USE_TAILCALLS
13918 MUSTTAIL return InterpNext(S, PC);
13919#else
13920 return true;
13921#endif
13922}
13923#endif
13924#ifdef GET_DISASM
13925case OP_DecSint8:
13926 Text.Op = PrintName("DecSint8");
13927 Text.Args.push_back(printArg<bool>(P, PC));
13928 break;
13929case OP_DecUint8:
13930 Text.Op = PrintName("DecUint8");
13931 Text.Args.push_back(printArg<bool>(P, PC));
13932 break;
13933case OP_DecSint16:
13934 Text.Op = PrintName("DecSint16");
13935 Text.Args.push_back(printArg<bool>(P, PC));
13936 break;
13937case OP_DecUint16:
13938 Text.Op = PrintName("DecUint16");
13939 Text.Args.push_back(printArg<bool>(P, PC));
13940 break;
13941case OP_DecSint32:
13942 Text.Op = PrintName("DecSint32");
13943 Text.Args.push_back(printArg<bool>(P, PC));
13944 break;
13945case OP_DecUint32:
13946 Text.Op = PrintName("DecUint32");
13947 Text.Args.push_back(printArg<bool>(P, PC));
13948 break;
13949case OP_DecSint64:
13950 Text.Op = PrintName("DecSint64");
13951 Text.Args.push_back(printArg<bool>(P, PC));
13952 break;
13953case OP_DecUint64:
13954 Text.Op = PrintName("DecUint64");
13955 Text.Args.push_back(printArg<bool>(P, PC));
13956 break;
13957case OP_DecIntAP:
13958 Text.Op = PrintName("DecIntAP");
13959 Text.Args.push_back(printArg<bool>(P, PC));
13960 break;
13961case OP_DecIntAPS:
13962 Text.Op = PrintName("DecIntAPS");
13963 Text.Args.push_back(printArg<bool>(P, PC));
13964 break;
13965case OP_DecBool:
13966 Text.Op = PrintName("DecBool");
13967 Text.Args.push_back(printArg<bool>(P, PC));
13968 break;
13969case OP_DecFixedPoint:
13970 Text.Op = PrintName("DecFixedPoint");
13971 Text.Args.push_back(printArg<bool>(P, PC));
13972 break;
13973#endif
13974#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13975bool emitDecSint8( bool , SourceInfo);
13976bool emitDecUint8( bool , SourceInfo);
13977bool emitDecSint16( bool , SourceInfo);
13978bool emitDecUint16( bool , SourceInfo);
13979bool emitDecSint32( bool , SourceInfo);
13980bool emitDecUint32( bool , SourceInfo);
13981bool emitDecSint64( bool , SourceInfo);
13982bool emitDecUint64( bool , SourceInfo);
13983bool emitDecIntAP( bool , SourceInfo);
13984bool emitDecIntAPS( bool , SourceInfo);
13985bool emitDecBool( bool , SourceInfo);
13986bool emitDecFixedPoint( bool , SourceInfo);
13987#endif
13988#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13989[[nodiscard]] bool emitDec(PrimType, bool, SourceInfo I);
13990#endif
13991#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
13992bool
13993#if defined(GET_EVAL_IMPL)
13994EvalEmitter
13995#else
13996ByteCodeEmitter
13997#endif
13998::emitDec(PrimType T0, bool A0, SourceInfo I) {
13999 switch (T0) {
14000 case PT_Sint8:
14001 return emitDecSint8(A0, I);
14002 case PT_Uint8:
14003 return emitDecUint8(A0, I);
14004 case PT_Sint16:
14005 return emitDecSint16(A0, I);
14006 case PT_Uint16:
14007 return emitDecUint16(A0, I);
14008 case PT_Sint32:
14009 return emitDecSint32(A0, I);
14010 case PT_Uint32:
14011 return emitDecUint32(A0, I);
14012 case PT_Sint64:
14013 return emitDecSint64(A0, I);
14014 case PT_Uint64:
14015 return emitDecUint64(A0, I);
14016 case PT_IntAP:
14017 return emitDecIntAP(A0, I);
14018 case PT_IntAPS:
14019 return emitDecIntAPS(A0, I);
14020 case PT_Bool:
14021 return emitDecBool(A0, I);
14022 case PT_FixedPoint:
14023 return emitDecFixedPoint(A0, I);
14024 default: llvm_unreachable("invalid type: emitDec");
14025 }
14026 llvm_unreachable("invalid enum value");
14027}
14028#endif
14029#ifdef GET_LINK_IMPL
14030bool ByteCodeEmitter::emitDecSint8( bool A0, SourceInfo L) {
14031 return emitOp<bool>(OP_DecSint8, A0, L);
14032}
14033bool ByteCodeEmitter::emitDecUint8( bool A0, SourceInfo L) {
14034 return emitOp<bool>(OP_DecUint8, A0, L);
14035}
14036bool ByteCodeEmitter::emitDecSint16( bool A0, SourceInfo L) {
14037 return emitOp<bool>(OP_DecSint16, A0, L);
14038}
14039bool ByteCodeEmitter::emitDecUint16( bool A0, SourceInfo L) {
14040 return emitOp<bool>(OP_DecUint16, A0, L);
14041}
14042bool ByteCodeEmitter::emitDecSint32( bool A0, SourceInfo L) {
14043 return emitOp<bool>(OP_DecSint32, A0, L);
14044}
14045bool ByteCodeEmitter::emitDecUint32( bool A0, SourceInfo L) {
14046 return emitOp<bool>(OP_DecUint32, A0, L);
14047}
14048bool ByteCodeEmitter::emitDecSint64( bool A0, SourceInfo L) {
14049 return emitOp<bool>(OP_DecSint64, A0, L);
14050}
14051bool ByteCodeEmitter::emitDecUint64( bool A0, SourceInfo L) {
14052 return emitOp<bool>(OP_DecUint64, A0, L);
14053}
14054bool ByteCodeEmitter::emitDecIntAP( bool A0, SourceInfo L) {
14055 return emitOp<bool>(OP_DecIntAP, A0, L);
14056}
14057bool ByteCodeEmitter::emitDecIntAPS( bool A0, SourceInfo L) {
14058 return emitOp<bool>(OP_DecIntAPS, A0, L);
14059}
14060bool ByteCodeEmitter::emitDecBool( bool A0, SourceInfo L) {
14061 return emitOp<bool>(OP_DecBool, A0, L);
14062}
14063bool ByteCodeEmitter::emitDecFixedPoint( bool A0, SourceInfo L) {
14064 return emitOp<bool>(OP_DecFixedPoint, A0, L);
14065}
14066#endif
14067#ifdef GET_EVAL_IMPL
14068bool EvalEmitter::emitDecSint8( bool A0, SourceInfo L) {
14069 if (!isActive()) return true;
14070 CurrentSource = L;
14071 return Dec<PT_Sint8>(S, OpPC, A0);
14072}
14073bool EvalEmitter::emitDecUint8( bool A0, SourceInfo L) {
14074 if (!isActive()) return true;
14075 CurrentSource = L;
14076 return Dec<PT_Uint8>(S, OpPC, A0);
14077}
14078bool EvalEmitter::emitDecSint16( bool A0, SourceInfo L) {
14079 if (!isActive()) return true;
14080 CurrentSource = L;
14081 return Dec<PT_Sint16>(S, OpPC, A0);
14082}
14083bool EvalEmitter::emitDecUint16( bool A0, SourceInfo L) {
14084 if (!isActive()) return true;
14085 CurrentSource = L;
14086 return Dec<PT_Uint16>(S, OpPC, A0);
14087}
14088bool EvalEmitter::emitDecSint32( bool A0, SourceInfo L) {
14089 if (!isActive()) return true;
14090 CurrentSource = L;
14091 return Dec<PT_Sint32>(S, OpPC, A0);
14092}
14093bool EvalEmitter::emitDecUint32( bool A0, SourceInfo L) {
14094 if (!isActive()) return true;
14095 CurrentSource = L;
14096 return Dec<PT_Uint32>(S, OpPC, A0);
14097}
14098bool EvalEmitter::emitDecSint64( bool A0, SourceInfo L) {
14099 if (!isActive()) return true;
14100 CurrentSource = L;
14101 return Dec<PT_Sint64>(S, OpPC, A0);
14102}
14103bool EvalEmitter::emitDecUint64( bool A0, SourceInfo L) {
14104 if (!isActive()) return true;
14105 CurrentSource = L;
14106 return Dec<PT_Uint64>(S, OpPC, A0);
14107}
14108bool EvalEmitter::emitDecIntAP( bool A0, SourceInfo L) {
14109 if (!isActive()) return true;
14110 CurrentSource = L;
14111 return Dec<PT_IntAP>(S, OpPC, A0);
14112}
14113bool EvalEmitter::emitDecIntAPS( bool A0, SourceInfo L) {
14114 if (!isActive()) return true;
14115 CurrentSource = L;
14116 return Dec<PT_IntAPS>(S, OpPC, A0);
14117}
14118bool EvalEmitter::emitDecBool( bool A0, SourceInfo L) {
14119 if (!isActive()) return true;
14120 CurrentSource = L;
14121 return Dec<PT_Bool>(S, OpPC, A0);
14122}
14123bool EvalEmitter::emitDecFixedPoint( bool A0, SourceInfo L) {
14124 if (!isActive()) return true;
14125 CurrentSource = L;
14126 return Dec<PT_FixedPoint>(S, OpPC, A0);
14127}
14128#endif
14129#ifdef GET_OPCODE_NAMES
14130OP_DecBitfieldSint8,
14131OP_DecBitfieldUint8,
14132OP_DecBitfieldSint16,
14133OP_DecBitfieldUint16,
14134OP_DecBitfieldSint32,
14135OP_DecBitfieldUint32,
14136OP_DecBitfieldSint64,
14137OP_DecBitfieldUint64,
14138OP_DecBitfieldIntAP,
14139OP_DecBitfieldIntAPS,
14140OP_DecBitfieldBool,
14141OP_DecBitfieldFixedPoint,
14142#endif
14143#ifdef GET_INTERPFN_LIST
14144&Interp_DecBitfieldSint8,
14145&Interp_DecBitfieldUint8,
14146&Interp_DecBitfieldSint16,
14147&Interp_DecBitfieldUint16,
14148&Interp_DecBitfieldSint32,
14149&Interp_DecBitfieldUint32,
14150&Interp_DecBitfieldSint64,
14151&Interp_DecBitfieldUint64,
14152&Interp_DecBitfieldIntAP,
14153&Interp_DecBitfieldIntAPS,
14154&Interp_DecBitfieldBool,
14155&Interp_DecBitfieldFixedPoint,
14156#endif
14157#ifdef GET_INTERPFN_DISPATCHERS
14158PRESERVE_NONE
14159static bool Interp_DecBitfieldSint8(InterpState &S, CodePtr &PC) {
14160 {
14161 CodePtr OpPC = PC;
14162 const auto V0 = ReadArg<bool>(S, PC);
14163 const auto V1 = ReadArg<uint32_t>(S, PC);
14164 if (!DecBitfield<PT_Sint8>(S, OpPC, V0, V1)) return false;
14165 }
14166#if USE_TAILCALLS
14167 MUSTTAIL return InterpNext(S, PC);
14168#else
14169 return true;
14170#endif
14171}
14172PRESERVE_NONE
14173static bool Interp_DecBitfieldUint8(InterpState &S, CodePtr &PC) {
14174 {
14175 CodePtr OpPC = PC;
14176 const auto V0 = ReadArg<bool>(S, PC);
14177 const auto V1 = ReadArg<uint32_t>(S, PC);
14178 if (!DecBitfield<PT_Uint8>(S, OpPC, V0, V1)) return false;
14179 }
14180#if USE_TAILCALLS
14181 MUSTTAIL return InterpNext(S, PC);
14182#else
14183 return true;
14184#endif
14185}
14186PRESERVE_NONE
14187static bool Interp_DecBitfieldSint16(InterpState &S, CodePtr &PC) {
14188 {
14189 CodePtr OpPC = PC;
14190 const auto V0 = ReadArg<bool>(S, PC);
14191 const auto V1 = ReadArg<uint32_t>(S, PC);
14192 if (!DecBitfield<PT_Sint16>(S, OpPC, V0, V1)) return false;
14193 }
14194#if USE_TAILCALLS
14195 MUSTTAIL return InterpNext(S, PC);
14196#else
14197 return true;
14198#endif
14199}
14200PRESERVE_NONE
14201static bool Interp_DecBitfieldUint16(InterpState &S, CodePtr &PC) {
14202 {
14203 CodePtr OpPC = PC;
14204 const auto V0 = ReadArg<bool>(S, PC);
14205 const auto V1 = ReadArg<uint32_t>(S, PC);
14206 if (!DecBitfield<PT_Uint16>(S, OpPC, V0, V1)) return false;
14207 }
14208#if USE_TAILCALLS
14209 MUSTTAIL return InterpNext(S, PC);
14210#else
14211 return true;
14212#endif
14213}
14214PRESERVE_NONE
14215static bool Interp_DecBitfieldSint32(InterpState &S, CodePtr &PC) {
14216 {
14217 CodePtr OpPC = PC;
14218 const auto V0 = ReadArg<bool>(S, PC);
14219 const auto V1 = ReadArg<uint32_t>(S, PC);
14220 if (!DecBitfield<PT_Sint32>(S, OpPC, V0, V1)) return false;
14221 }
14222#if USE_TAILCALLS
14223 MUSTTAIL return InterpNext(S, PC);
14224#else
14225 return true;
14226#endif
14227}
14228PRESERVE_NONE
14229static bool Interp_DecBitfieldUint32(InterpState &S, CodePtr &PC) {
14230 {
14231 CodePtr OpPC = PC;
14232 const auto V0 = ReadArg<bool>(S, PC);
14233 const auto V1 = ReadArg<uint32_t>(S, PC);
14234 if (!DecBitfield<PT_Uint32>(S, OpPC, V0, V1)) return false;
14235 }
14236#if USE_TAILCALLS
14237 MUSTTAIL return InterpNext(S, PC);
14238#else
14239 return true;
14240#endif
14241}
14242PRESERVE_NONE
14243static bool Interp_DecBitfieldSint64(InterpState &S, CodePtr &PC) {
14244 {
14245 CodePtr OpPC = PC;
14246 const auto V0 = ReadArg<bool>(S, PC);
14247 const auto V1 = ReadArg<uint32_t>(S, PC);
14248 if (!DecBitfield<PT_Sint64>(S, OpPC, V0, V1)) return false;
14249 }
14250#if USE_TAILCALLS
14251 MUSTTAIL return InterpNext(S, PC);
14252#else
14253 return true;
14254#endif
14255}
14256PRESERVE_NONE
14257static bool Interp_DecBitfieldUint64(InterpState &S, CodePtr &PC) {
14258 {
14259 CodePtr OpPC = PC;
14260 const auto V0 = ReadArg<bool>(S, PC);
14261 const auto V1 = ReadArg<uint32_t>(S, PC);
14262 if (!DecBitfield<PT_Uint64>(S, OpPC, V0, V1)) return false;
14263 }
14264#if USE_TAILCALLS
14265 MUSTTAIL return InterpNext(S, PC);
14266#else
14267 return true;
14268#endif
14269}
14270PRESERVE_NONE
14271static bool Interp_DecBitfieldIntAP(InterpState &S, CodePtr &PC) {
14272 {
14273 CodePtr OpPC = PC;
14274 const auto V0 = ReadArg<bool>(S, PC);
14275 const auto V1 = ReadArg<uint32_t>(S, PC);
14276 if (!DecBitfield<PT_IntAP>(S, OpPC, V0, V1)) return false;
14277 }
14278#if USE_TAILCALLS
14279 MUSTTAIL return InterpNext(S, PC);
14280#else
14281 return true;
14282#endif
14283}
14284PRESERVE_NONE
14285static bool Interp_DecBitfieldIntAPS(InterpState &S, CodePtr &PC) {
14286 {
14287 CodePtr OpPC = PC;
14288 const auto V0 = ReadArg<bool>(S, PC);
14289 const auto V1 = ReadArg<uint32_t>(S, PC);
14290 if (!DecBitfield<PT_IntAPS>(S, OpPC, V0, V1)) return false;
14291 }
14292#if USE_TAILCALLS
14293 MUSTTAIL return InterpNext(S, PC);
14294#else
14295 return true;
14296#endif
14297}
14298PRESERVE_NONE
14299static bool Interp_DecBitfieldBool(InterpState &S, CodePtr &PC) {
14300 {
14301 CodePtr OpPC = PC;
14302 const auto V0 = ReadArg<bool>(S, PC);
14303 const auto V1 = ReadArg<uint32_t>(S, PC);
14304 if (!DecBitfield<PT_Bool>(S, OpPC, V0, V1)) return false;
14305 }
14306#if USE_TAILCALLS
14307 MUSTTAIL return InterpNext(S, PC);
14308#else
14309 return true;
14310#endif
14311}
14312PRESERVE_NONE
14313static bool Interp_DecBitfieldFixedPoint(InterpState &S, CodePtr &PC) {
14314 {
14315 CodePtr OpPC = PC;
14316 const auto V0 = ReadArg<bool>(S, PC);
14317 const auto V1 = ReadArg<uint32_t>(S, PC);
14318 if (!DecBitfield<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
14319 }
14320#if USE_TAILCALLS
14321 MUSTTAIL return InterpNext(S, PC);
14322#else
14323 return true;
14324#endif
14325}
14326#endif
14327#ifdef GET_DISASM
14328case OP_DecBitfieldSint8:
14329 Text.Op = PrintName("DecBitfieldSint8");
14330 Text.Args.push_back(printArg<bool>(P, PC));
14331 Text.Args.push_back(printArg<uint32_t>(P, PC));
14332 break;
14333case OP_DecBitfieldUint8:
14334 Text.Op = PrintName("DecBitfieldUint8");
14335 Text.Args.push_back(printArg<bool>(P, PC));
14336 Text.Args.push_back(printArg<uint32_t>(P, PC));
14337 break;
14338case OP_DecBitfieldSint16:
14339 Text.Op = PrintName("DecBitfieldSint16");
14340 Text.Args.push_back(printArg<bool>(P, PC));
14341 Text.Args.push_back(printArg<uint32_t>(P, PC));
14342 break;
14343case OP_DecBitfieldUint16:
14344 Text.Op = PrintName("DecBitfieldUint16");
14345 Text.Args.push_back(printArg<bool>(P, PC));
14346 Text.Args.push_back(printArg<uint32_t>(P, PC));
14347 break;
14348case OP_DecBitfieldSint32:
14349 Text.Op = PrintName("DecBitfieldSint32");
14350 Text.Args.push_back(printArg<bool>(P, PC));
14351 Text.Args.push_back(printArg<uint32_t>(P, PC));
14352 break;
14353case OP_DecBitfieldUint32:
14354 Text.Op = PrintName("DecBitfieldUint32");
14355 Text.Args.push_back(printArg<bool>(P, PC));
14356 Text.Args.push_back(printArg<uint32_t>(P, PC));
14357 break;
14358case OP_DecBitfieldSint64:
14359 Text.Op = PrintName("DecBitfieldSint64");
14360 Text.Args.push_back(printArg<bool>(P, PC));
14361 Text.Args.push_back(printArg<uint32_t>(P, PC));
14362 break;
14363case OP_DecBitfieldUint64:
14364 Text.Op = PrintName("DecBitfieldUint64");
14365 Text.Args.push_back(printArg<bool>(P, PC));
14366 Text.Args.push_back(printArg<uint32_t>(P, PC));
14367 break;
14368case OP_DecBitfieldIntAP:
14369 Text.Op = PrintName("DecBitfieldIntAP");
14370 Text.Args.push_back(printArg<bool>(P, PC));
14371 Text.Args.push_back(printArg<uint32_t>(P, PC));
14372 break;
14373case OP_DecBitfieldIntAPS:
14374 Text.Op = PrintName("DecBitfieldIntAPS");
14375 Text.Args.push_back(printArg<bool>(P, PC));
14376 Text.Args.push_back(printArg<uint32_t>(P, PC));
14377 break;
14378case OP_DecBitfieldBool:
14379 Text.Op = PrintName("DecBitfieldBool");
14380 Text.Args.push_back(printArg<bool>(P, PC));
14381 Text.Args.push_back(printArg<uint32_t>(P, PC));
14382 break;
14383case OP_DecBitfieldFixedPoint:
14384 Text.Op = PrintName("DecBitfieldFixedPoint");
14385 Text.Args.push_back(printArg<bool>(P, PC));
14386 Text.Args.push_back(printArg<uint32_t>(P, PC));
14387 break;
14388#endif
14389#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14390bool emitDecBitfieldSint8( bool , uint32_t , SourceInfo);
14391bool emitDecBitfieldUint8( bool , uint32_t , SourceInfo);
14392bool emitDecBitfieldSint16( bool , uint32_t , SourceInfo);
14393bool emitDecBitfieldUint16( bool , uint32_t , SourceInfo);
14394bool emitDecBitfieldSint32( bool , uint32_t , SourceInfo);
14395bool emitDecBitfieldUint32( bool , uint32_t , SourceInfo);
14396bool emitDecBitfieldSint64( bool , uint32_t , SourceInfo);
14397bool emitDecBitfieldUint64( bool , uint32_t , SourceInfo);
14398bool emitDecBitfieldIntAP( bool , uint32_t , SourceInfo);
14399bool emitDecBitfieldIntAPS( bool , uint32_t , SourceInfo);
14400bool emitDecBitfieldBool( bool , uint32_t , SourceInfo);
14401bool emitDecBitfieldFixedPoint( bool , uint32_t , SourceInfo);
14402#endif
14403#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14404[[nodiscard]] bool emitDecBitfield(PrimType, bool, uint32_t, SourceInfo I);
14405#endif
14406#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
14407bool
14408#if defined(GET_EVAL_IMPL)
14409EvalEmitter
14410#else
14411ByteCodeEmitter
14412#endif
14413::emitDecBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
14414 switch (T0) {
14415 case PT_Sint8:
14416 return emitDecBitfieldSint8(A0, A1, I);
14417 case PT_Uint8:
14418 return emitDecBitfieldUint8(A0, A1, I);
14419 case PT_Sint16:
14420 return emitDecBitfieldSint16(A0, A1, I);
14421 case PT_Uint16:
14422 return emitDecBitfieldUint16(A0, A1, I);
14423 case PT_Sint32:
14424 return emitDecBitfieldSint32(A0, A1, I);
14425 case PT_Uint32:
14426 return emitDecBitfieldUint32(A0, A1, I);
14427 case PT_Sint64:
14428 return emitDecBitfieldSint64(A0, A1, I);
14429 case PT_Uint64:
14430 return emitDecBitfieldUint64(A0, A1, I);
14431 case PT_IntAP:
14432 return emitDecBitfieldIntAP(A0, A1, I);
14433 case PT_IntAPS:
14434 return emitDecBitfieldIntAPS(A0, A1, I);
14435 case PT_Bool:
14436 return emitDecBitfieldBool(A0, A1, I);
14437 case PT_FixedPoint:
14438 return emitDecBitfieldFixedPoint(A0, A1, I);
14439 default: llvm_unreachable("invalid type: emitDecBitfield");
14440 }
14441 llvm_unreachable("invalid enum value");
14442}
14443#endif
14444#ifdef GET_LINK_IMPL
14445bool ByteCodeEmitter::emitDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
14446 return emitOp<bool, uint32_t>(OP_DecBitfieldSint8, A0, A1, L);
14447}
14448bool ByteCodeEmitter::emitDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
14449 return emitOp<bool, uint32_t>(OP_DecBitfieldUint8, A0, A1, L);
14450}
14451bool ByteCodeEmitter::emitDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
14452 return emitOp<bool, uint32_t>(OP_DecBitfieldSint16, A0, A1, L);
14453}
14454bool ByteCodeEmitter::emitDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
14455 return emitOp<bool, uint32_t>(OP_DecBitfieldUint16, A0, A1, L);
14456}
14457bool ByteCodeEmitter::emitDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
14458 return emitOp<bool, uint32_t>(OP_DecBitfieldSint32, A0, A1, L);
14459}
14460bool ByteCodeEmitter::emitDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
14461 return emitOp<bool, uint32_t>(OP_DecBitfieldUint32, A0, A1, L);
14462}
14463bool ByteCodeEmitter::emitDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
14464 return emitOp<bool, uint32_t>(OP_DecBitfieldSint64, A0, A1, L);
14465}
14466bool ByteCodeEmitter::emitDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
14467 return emitOp<bool, uint32_t>(OP_DecBitfieldUint64, A0, A1, L);
14468}
14469bool ByteCodeEmitter::emitDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
14470 return emitOp<bool, uint32_t>(OP_DecBitfieldIntAP, A0, A1, L);
14471}
14472bool ByteCodeEmitter::emitDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
14473 return emitOp<bool, uint32_t>(OP_DecBitfieldIntAPS, A0, A1, L);
14474}
14475bool ByteCodeEmitter::emitDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
14476 return emitOp<bool, uint32_t>(OP_DecBitfieldBool, A0, A1, L);
14477}
14478bool ByteCodeEmitter::emitDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
14479 return emitOp<bool, uint32_t>(OP_DecBitfieldFixedPoint, A0, A1, L);
14480}
14481#endif
14482#ifdef GET_EVAL_IMPL
14483bool EvalEmitter::emitDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
14484 if (!isActive()) return true;
14485 CurrentSource = L;
14486 return DecBitfield<PT_Sint8>(S, OpPC, A0, A1);
14487}
14488bool EvalEmitter::emitDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
14489 if (!isActive()) return true;
14490 CurrentSource = L;
14491 return DecBitfield<PT_Uint8>(S, OpPC, A0, A1);
14492}
14493bool EvalEmitter::emitDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
14494 if (!isActive()) return true;
14495 CurrentSource = L;
14496 return DecBitfield<PT_Sint16>(S, OpPC, A0, A1);
14497}
14498bool EvalEmitter::emitDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
14499 if (!isActive()) return true;
14500 CurrentSource = L;
14501 return DecBitfield<PT_Uint16>(S, OpPC, A0, A1);
14502}
14503bool EvalEmitter::emitDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
14504 if (!isActive()) return true;
14505 CurrentSource = L;
14506 return DecBitfield<PT_Sint32>(S, OpPC, A0, A1);
14507}
14508bool EvalEmitter::emitDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
14509 if (!isActive()) return true;
14510 CurrentSource = L;
14511 return DecBitfield<PT_Uint32>(S, OpPC, A0, A1);
14512}
14513bool EvalEmitter::emitDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
14514 if (!isActive()) return true;
14515 CurrentSource = L;
14516 return DecBitfield<PT_Sint64>(S, OpPC, A0, A1);
14517}
14518bool EvalEmitter::emitDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
14519 if (!isActive()) return true;
14520 CurrentSource = L;
14521 return DecBitfield<PT_Uint64>(S, OpPC, A0, A1);
14522}
14523bool EvalEmitter::emitDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
14524 if (!isActive()) return true;
14525 CurrentSource = L;
14526 return DecBitfield<PT_IntAP>(S, OpPC, A0, A1);
14527}
14528bool EvalEmitter::emitDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
14529 if (!isActive()) return true;
14530 CurrentSource = L;
14531 return DecBitfield<PT_IntAPS>(S, OpPC, A0, A1);
14532}
14533bool EvalEmitter::emitDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
14534 if (!isActive()) return true;
14535 CurrentSource = L;
14536 return DecBitfield<PT_Bool>(S, OpPC, A0, A1);
14537}
14538bool EvalEmitter::emitDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
14539 if (!isActive()) return true;
14540 CurrentSource = L;
14541 return DecBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
14542}
14543#endif
14544#ifdef GET_OPCODE_NAMES
14545OP_DecPopSint8,
14546OP_DecPopUint8,
14547OP_DecPopSint16,
14548OP_DecPopUint16,
14549OP_DecPopSint32,
14550OP_DecPopUint32,
14551OP_DecPopSint64,
14552OP_DecPopUint64,
14553OP_DecPopIntAP,
14554OP_DecPopIntAPS,
14555OP_DecPopBool,
14556OP_DecPopFixedPoint,
14557#endif
14558#ifdef GET_INTERPFN_LIST
14559&Interp_DecPopSint8,
14560&Interp_DecPopUint8,
14561&Interp_DecPopSint16,
14562&Interp_DecPopUint16,
14563&Interp_DecPopSint32,
14564&Interp_DecPopUint32,
14565&Interp_DecPopSint64,
14566&Interp_DecPopUint64,
14567&Interp_DecPopIntAP,
14568&Interp_DecPopIntAPS,
14569&Interp_DecPopBool,
14570&Interp_DecPopFixedPoint,
14571#endif
14572#ifdef GET_INTERPFN_DISPATCHERS
14573PRESERVE_NONE
14574static bool Interp_DecPopSint8(InterpState &S, CodePtr &PC) {
14575 {
14576 CodePtr OpPC = PC;
14577 const auto V0 = ReadArg<bool>(S, PC);
14578 if (!DecPop<PT_Sint8>(S, OpPC, V0)) return false;
14579 }
14580#if USE_TAILCALLS
14581 MUSTTAIL return InterpNext(S, PC);
14582#else
14583 return true;
14584#endif
14585}
14586PRESERVE_NONE
14587static bool Interp_DecPopUint8(InterpState &S, CodePtr &PC) {
14588 {
14589 CodePtr OpPC = PC;
14590 const auto V0 = ReadArg<bool>(S, PC);
14591 if (!DecPop<PT_Uint8>(S, OpPC, V0)) return false;
14592 }
14593#if USE_TAILCALLS
14594 MUSTTAIL return InterpNext(S, PC);
14595#else
14596 return true;
14597#endif
14598}
14599PRESERVE_NONE
14600static bool Interp_DecPopSint16(InterpState &S, CodePtr &PC) {
14601 {
14602 CodePtr OpPC = PC;
14603 const auto V0 = ReadArg<bool>(S, PC);
14604 if (!DecPop<PT_Sint16>(S, OpPC, V0)) return false;
14605 }
14606#if USE_TAILCALLS
14607 MUSTTAIL return InterpNext(S, PC);
14608#else
14609 return true;
14610#endif
14611}
14612PRESERVE_NONE
14613static bool Interp_DecPopUint16(InterpState &S, CodePtr &PC) {
14614 {
14615 CodePtr OpPC = PC;
14616 const auto V0 = ReadArg<bool>(S, PC);
14617 if (!DecPop<PT_Uint16>(S, OpPC, V0)) return false;
14618 }
14619#if USE_TAILCALLS
14620 MUSTTAIL return InterpNext(S, PC);
14621#else
14622 return true;
14623#endif
14624}
14625PRESERVE_NONE
14626static bool Interp_DecPopSint32(InterpState &S, CodePtr &PC) {
14627 {
14628 CodePtr OpPC = PC;
14629 const auto V0 = ReadArg<bool>(S, PC);
14630 if (!DecPop<PT_Sint32>(S, OpPC, V0)) return false;
14631 }
14632#if USE_TAILCALLS
14633 MUSTTAIL return InterpNext(S, PC);
14634#else
14635 return true;
14636#endif
14637}
14638PRESERVE_NONE
14639static bool Interp_DecPopUint32(InterpState &S, CodePtr &PC) {
14640 {
14641 CodePtr OpPC = PC;
14642 const auto V0 = ReadArg<bool>(S, PC);
14643 if (!DecPop<PT_Uint32>(S, OpPC, V0)) return false;
14644 }
14645#if USE_TAILCALLS
14646 MUSTTAIL return InterpNext(S, PC);
14647#else
14648 return true;
14649#endif
14650}
14651PRESERVE_NONE
14652static bool Interp_DecPopSint64(InterpState &S, CodePtr &PC) {
14653 {
14654 CodePtr OpPC = PC;
14655 const auto V0 = ReadArg<bool>(S, PC);
14656 if (!DecPop<PT_Sint64>(S, OpPC, V0)) return false;
14657 }
14658#if USE_TAILCALLS
14659 MUSTTAIL return InterpNext(S, PC);
14660#else
14661 return true;
14662#endif
14663}
14664PRESERVE_NONE
14665static bool Interp_DecPopUint64(InterpState &S, CodePtr &PC) {
14666 {
14667 CodePtr OpPC = PC;
14668 const auto V0 = ReadArg<bool>(S, PC);
14669 if (!DecPop<PT_Uint64>(S, OpPC, V0)) return false;
14670 }
14671#if USE_TAILCALLS
14672 MUSTTAIL return InterpNext(S, PC);
14673#else
14674 return true;
14675#endif
14676}
14677PRESERVE_NONE
14678static bool Interp_DecPopIntAP(InterpState &S, CodePtr &PC) {
14679 {
14680 CodePtr OpPC = PC;
14681 const auto V0 = ReadArg<bool>(S, PC);
14682 if (!DecPop<PT_IntAP>(S, OpPC, V0)) return false;
14683 }
14684#if USE_TAILCALLS
14685 MUSTTAIL return InterpNext(S, PC);
14686#else
14687 return true;
14688#endif
14689}
14690PRESERVE_NONE
14691static bool Interp_DecPopIntAPS(InterpState &S, CodePtr &PC) {
14692 {
14693 CodePtr OpPC = PC;
14694 const auto V0 = ReadArg<bool>(S, PC);
14695 if (!DecPop<PT_IntAPS>(S, OpPC, V0)) return false;
14696 }
14697#if USE_TAILCALLS
14698 MUSTTAIL return InterpNext(S, PC);
14699#else
14700 return true;
14701#endif
14702}
14703PRESERVE_NONE
14704static bool Interp_DecPopBool(InterpState &S, CodePtr &PC) {
14705 {
14706 CodePtr OpPC = PC;
14707 const auto V0 = ReadArg<bool>(S, PC);
14708 if (!DecPop<PT_Bool>(S, OpPC, V0)) return false;
14709 }
14710#if USE_TAILCALLS
14711 MUSTTAIL return InterpNext(S, PC);
14712#else
14713 return true;
14714#endif
14715}
14716PRESERVE_NONE
14717static bool Interp_DecPopFixedPoint(InterpState &S, CodePtr &PC) {
14718 {
14719 CodePtr OpPC = PC;
14720 const auto V0 = ReadArg<bool>(S, PC);
14721 if (!DecPop<PT_FixedPoint>(S, OpPC, V0)) return false;
14722 }
14723#if USE_TAILCALLS
14724 MUSTTAIL return InterpNext(S, PC);
14725#else
14726 return true;
14727#endif
14728}
14729#endif
14730#ifdef GET_DISASM
14731case OP_DecPopSint8:
14732 Text.Op = PrintName("DecPopSint8");
14733 Text.Args.push_back(printArg<bool>(P, PC));
14734 break;
14735case OP_DecPopUint8:
14736 Text.Op = PrintName("DecPopUint8");
14737 Text.Args.push_back(printArg<bool>(P, PC));
14738 break;
14739case OP_DecPopSint16:
14740 Text.Op = PrintName("DecPopSint16");
14741 Text.Args.push_back(printArg<bool>(P, PC));
14742 break;
14743case OP_DecPopUint16:
14744 Text.Op = PrintName("DecPopUint16");
14745 Text.Args.push_back(printArg<bool>(P, PC));
14746 break;
14747case OP_DecPopSint32:
14748 Text.Op = PrintName("DecPopSint32");
14749 Text.Args.push_back(printArg<bool>(P, PC));
14750 break;
14751case OP_DecPopUint32:
14752 Text.Op = PrintName("DecPopUint32");
14753 Text.Args.push_back(printArg<bool>(P, PC));
14754 break;
14755case OP_DecPopSint64:
14756 Text.Op = PrintName("DecPopSint64");
14757 Text.Args.push_back(printArg<bool>(P, PC));
14758 break;
14759case OP_DecPopUint64:
14760 Text.Op = PrintName("DecPopUint64");
14761 Text.Args.push_back(printArg<bool>(P, PC));
14762 break;
14763case OP_DecPopIntAP:
14764 Text.Op = PrintName("DecPopIntAP");
14765 Text.Args.push_back(printArg<bool>(P, PC));
14766 break;
14767case OP_DecPopIntAPS:
14768 Text.Op = PrintName("DecPopIntAPS");
14769 Text.Args.push_back(printArg<bool>(P, PC));
14770 break;
14771case OP_DecPopBool:
14772 Text.Op = PrintName("DecPopBool");
14773 Text.Args.push_back(printArg<bool>(P, PC));
14774 break;
14775case OP_DecPopFixedPoint:
14776 Text.Op = PrintName("DecPopFixedPoint");
14777 Text.Args.push_back(printArg<bool>(P, PC));
14778 break;
14779#endif
14780#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14781bool emitDecPopSint8( bool , SourceInfo);
14782bool emitDecPopUint8( bool , SourceInfo);
14783bool emitDecPopSint16( bool , SourceInfo);
14784bool emitDecPopUint16( bool , SourceInfo);
14785bool emitDecPopSint32( bool , SourceInfo);
14786bool emitDecPopUint32( bool , SourceInfo);
14787bool emitDecPopSint64( bool , SourceInfo);
14788bool emitDecPopUint64( bool , SourceInfo);
14789bool emitDecPopIntAP( bool , SourceInfo);
14790bool emitDecPopIntAPS( bool , SourceInfo);
14791bool emitDecPopBool( bool , SourceInfo);
14792bool emitDecPopFixedPoint( bool , SourceInfo);
14793#endif
14794#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
14795[[nodiscard]] bool emitDecPop(PrimType, bool, SourceInfo I);
14796#endif
14797#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
14798bool
14799#if defined(GET_EVAL_IMPL)
14800EvalEmitter
14801#else
14802ByteCodeEmitter
14803#endif
14804::emitDecPop(PrimType T0, bool A0, SourceInfo I) {
14805 switch (T0) {
14806 case PT_Sint8:
14807 return emitDecPopSint8(A0, I);
14808 case PT_Uint8:
14809 return emitDecPopUint8(A0, I);
14810 case PT_Sint16:
14811 return emitDecPopSint16(A0, I);
14812 case PT_Uint16:
14813 return emitDecPopUint16(A0, I);
14814 case PT_Sint32:
14815 return emitDecPopSint32(A0, I);
14816 case PT_Uint32:
14817 return emitDecPopUint32(A0, I);
14818 case PT_Sint64:
14819 return emitDecPopSint64(A0, I);
14820 case PT_Uint64:
14821 return emitDecPopUint64(A0, I);
14822 case PT_IntAP:
14823 return emitDecPopIntAP(A0, I);
14824 case PT_IntAPS:
14825 return emitDecPopIntAPS(A0, I);
14826 case PT_Bool:
14827 return emitDecPopBool(A0, I);
14828 case PT_FixedPoint:
14829 return emitDecPopFixedPoint(A0, I);
14830 default: llvm_unreachable("invalid type: emitDecPop");
14831 }
14832 llvm_unreachable("invalid enum value");
14833}
14834#endif
14835#ifdef GET_LINK_IMPL
14836bool ByteCodeEmitter::emitDecPopSint8( bool A0, SourceInfo L) {
14837 return emitOp<bool>(OP_DecPopSint8, A0, L);
14838}
14839bool ByteCodeEmitter::emitDecPopUint8( bool A0, SourceInfo L) {
14840 return emitOp<bool>(OP_DecPopUint8, A0, L);
14841}
14842bool ByteCodeEmitter::emitDecPopSint16( bool A0, SourceInfo L) {
14843 return emitOp<bool>(OP_DecPopSint16, A0, L);
14844}
14845bool ByteCodeEmitter::emitDecPopUint16( bool A0, SourceInfo L) {
14846 return emitOp<bool>(OP_DecPopUint16, A0, L);
14847}
14848bool ByteCodeEmitter::emitDecPopSint32( bool A0, SourceInfo L) {
14849 return emitOp<bool>(OP_DecPopSint32, A0, L);
14850}
14851bool ByteCodeEmitter::emitDecPopUint32( bool A0, SourceInfo L) {
14852 return emitOp<bool>(OP_DecPopUint32, A0, L);
14853}
14854bool ByteCodeEmitter::emitDecPopSint64( bool A0, SourceInfo L) {
14855 return emitOp<bool>(OP_DecPopSint64, A0, L);
14856}
14857bool ByteCodeEmitter::emitDecPopUint64( bool A0, SourceInfo L) {
14858 return emitOp<bool>(OP_DecPopUint64, A0, L);
14859}
14860bool ByteCodeEmitter::emitDecPopIntAP( bool A0, SourceInfo L) {
14861 return emitOp<bool>(OP_DecPopIntAP, A0, L);
14862}
14863bool ByteCodeEmitter::emitDecPopIntAPS( bool A0, SourceInfo L) {
14864 return emitOp<bool>(OP_DecPopIntAPS, A0, L);
14865}
14866bool ByteCodeEmitter::emitDecPopBool( bool A0, SourceInfo L) {
14867 return emitOp<bool>(OP_DecPopBool, A0, L);
14868}
14869bool ByteCodeEmitter::emitDecPopFixedPoint( bool A0, SourceInfo L) {
14870 return emitOp<bool>(OP_DecPopFixedPoint, A0, L);
14871}
14872#endif
14873#ifdef GET_EVAL_IMPL
14874bool EvalEmitter::emitDecPopSint8( bool A0, SourceInfo L) {
14875 if (!isActive()) return true;
14876 CurrentSource = L;
14877 return DecPop<PT_Sint8>(S, OpPC, A0);
14878}
14879bool EvalEmitter::emitDecPopUint8( bool A0, SourceInfo L) {
14880 if (!isActive()) return true;
14881 CurrentSource = L;
14882 return DecPop<PT_Uint8>(S, OpPC, A0);
14883}
14884bool EvalEmitter::emitDecPopSint16( bool A0, SourceInfo L) {
14885 if (!isActive()) return true;
14886 CurrentSource = L;
14887 return DecPop<PT_Sint16>(S, OpPC, A0);
14888}
14889bool EvalEmitter::emitDecPopUint16( bool A0, SourceInfo L) {
14890 if (!isActive()) return true;
14891 CurrentSource = L;
14892 return DecPop<PT_Uint16>(S, OpPC, A0);
14893}
14894bool EvalEmitter::emitDecPopSint32( bool A0, SourceInfo L) {
14895 if (!isActive()) return true;
14896 CurrentSource = L;
14897 return DecPop<PT_Sint32>(S, OpPC, A0);
14898}
14899bool EvalEmitter::emitDecPopUint32( bool A0, SourceInfo L) {
14900 if (!isActive()) return true;
14901 CurrentSource = L;
14902 return DecPop<PT_Uint32>(S, OpPC, A0);
14903}
14904bool EvalEmitter::emitDecPopSint64( bool A0, SourceInfo L) {
14905 if (!isActive()) return true;
14906 CurrentSource = L;
14907 return DecPop<PT_Sint64>(S, OpPC, A0);
14908}
14909bool EvalEmitter::emitDecPopUint64( bool A0, SourceInfo L) {
14910 if (!isActive()) return true;
14911 CurrentSource = L;
14912 return DecPop<PT_Uint64>(S, OpPC, A0);
14913}
14914bool EvalEmitter::emitDecPopIntAP( bool A0, SourceInfo L) {
14915 if (!isActive()) return true;
14916 CurrentSource = L;
14917 return DecPop<PT_IntAP>(S, OpPC, A0);
14918}
14919bool EvalEmitter::emitDecPopIntAPS( bool A0, SourceInfo L) {
14920 if (!isActive()) return true;
14921 CurrentSource = L;
14922 return DecPop<PT_IntAPS>(S, OpPC, A0);
14923}
14924bool EvalEmitter::emitDecPopBool( bool A0, SourceInfo L) {
14925 if (!isActive()) return true;
14926 CurrentSource = L;
14927 return DecPop<PT_Bool>(S, OpPC, A0);
14928}
14929bool EvalEmitter::emitDecPopFixedPoint( bool A0, SourceInfo L) {
14930 if (!isActive()) return true;
14931 CurrentSource = L;
14932 return DecPop<PT_FixedPoint>(S, OpPC, A0);
14933}
14934#endif
14935#ifdef GET_OPCODE_NAMES
14936OP_DecPopBitfieldSint8,
14937OP_DecPopBitfieldUint8,
14938OP_DecPopBitfieldSint16,
14939OP_DecPopBitfieldUint16,
14940OP_DecPopBitfieldSint32,
14941OP_DecPopBitfieldUint32,
14942OP_DecPopBitfieldSint64,
14943OP_DecPopBitfieldUint64,
14944OP_DecPopBitfieldIntAP,
14945OP_DecPopBitfieldIntAPS,
14946OP_DecPopBitfieldBool,
14947OP_DecPopBitfieldFixedPoint,
14948#endif
14949#ifdef GET_INTERPFN_LIST
14950&Interp_DecPopBitfieldSint8,
14951&Interp_DecPopBitfieldUint8,
14952&Interp_DecPopBitfieldSint16,
14953&Interp_DecPopBitfieldUint16,
14954&Interp_DecPopBitfieldSint32,
14955&Interp_DecPopBitfieldUint32,
14956&Interp_DecPopBitfieldSint64,
14957&Interp_DecPopBitfieldUint64,
14958&Interp_DecPopBitfieldIntAP,
14959&Interp_DecPopBitfieldIntAPS,
14960&Interp_DecPopBitfieldBool,
14961&Interp_DecPopBitfieldFixedPoint,
14962#endif
14963#ifdef GET_INTERPFN_DISPATCHERS
14964PRESERVE_NONE
14965static bool Interp_DecPopBitfieldSint8(InterpState &S, CodePtr &PC) {
14966 {
14967 CodePtr OpPC = PC;
14968 const auto V0 = ReadArg<bool>(S, PC);
14969 const auto V1 = ReadArg<uint32_t>(S, PC);
14970 if (!DecPopBitfield<PT_Sint8>(S, OpPC, V0, V1)) return false;
14971 }
14972#if USE_TAILCALLS
14973 MUSTTAIL return InterpNext(S, PC);
14974#else
14975 return true;
14976#endif
14977}
14978PRESERVE_NONE
14979static bool Interp_DecPopBitfieldUint8(InterpState &S, CodePtr &PC) {
14980 {
14981 CodePtr OpPC = PC;
14982 const auto V0 = ReadArg<bool>(S, PC);
14983 const auto V1 = ReadArg<uint32_t>(S, PC);
14984 if (!DecPopBitfield<PT_Uint8>(S, OpPC, V0, V1)) return false;
14985 }
14986#if USE_TAILCALLS
14987 MUSTTAIL return InterpNext(S, PC);
14988#else
14989 return true;
14990#endif
14991}
14992PRESERVE_NONE
14993static bool Interp_DecPopBitfieldSint16(InterpState &S, CodePtr &PC) {
14994 {
14995 CodePtr OpPC = PC;
14996 const auto V0 = ReadArg<bool>(S, PC);
14997 const auto V1 = ReadArg<uint32_t>(S, PC);
14998 if (!DecPopBitfield<PT_Sint16>(S, OpPC, V0, V1)) return false;
14999 }
15000#if USE_TAILCALLS
15001 MUSTTAIL return InterpNext(S, PC);
15002#else
15003 return true;
15004#endif
15005}
15006PRESERVE_NONE
15007static bool Interp_DecPopBitfieldUint16(InterpState &S, CodePtr &PC) {
15008 {
15009 CodePtr OpPC = PC;
15010 const auto V0 = ReadArg<bool>(S, PC);
15011 const auto V1 = ReadArg<uint32_t>(S, PC);
15012 if (!DecPopBitfield<PT_Uint16>(S, OpPC, V0, V1)) return false;
15013 }
15014#if USE_TAILCALLS
15015 MUSTTAIL return InterpNext(S, PC);
15016#else
15017 return true;
15018#endif
15019}
15020PRESERVE_NONE
15021static bool Interp_DecPopBitfieldSint32(InterpState &S, CodePtr &PC) {
15022 {
15023 CodePtr OpPC = PC;
15024 const auto V0 = ReadArg<bool>(S, PC);
15025 const auto V1 = ReadArg<uint32_t>(S, PC);
15026 if (!DecPopBitfield<PT_Sint32>(S, OpPC, V0, V1)) return false;
15027 }
15028#if USE_TAILCALLS
15029 MUSTTAIL return InterpNext(S, PC);
15030#else
15031 return true;
15032#endif
15033}
15034PRESERVE_NONE
15035static bool Interp_DecPopBitfieldUint32(InterpState &S, CodePtr &PC) {
15036 {
15037 CodePtr OpPC = PC;
15038 const auto V0 = ReadArg<bool>(S, PC);
15039 const auto V1 = ReadArg<uint32_t>(S, PC);
15040 if (!DecPopBitfield<PT_Uint32>(S, OpPC, V0, V1)) return false;
15041 }
15042#if USE_TAILCALLS
15043 MUSTTAIL return InterpNext(S, PC);
15044#else
15045 return true;
15046#endif
15047}
15048PRESERVE_NONE
15049static bool Interp_DecPopBitfieldSint64(InterpState &S, CodePtr &PC) {
15050 {
15051 CodePtr OpPC = PC;
15052 const auto V0 = ReadArg<bool>(S, PC);
15053 const auto V1 = ReadArg<uint32_t>(S, PC);
15054 if (!DecPopBitfield<PT_Sint64>(S, OpPC, V0, V1)) return false;
15055 }
15056#if USE_TAILCALLS
15057 MUSTTAIL return InterpNext(S, PC);
15058#else
15059 return true;
15060#endif
15061}
15062PRESERVE_NONE
15063static bool Interp_DecPopBitfieldUint64(InterpState &S, CodePtr &PC) {
15064 {
15065 CodePtr OpPC = PC;
15066 const auto V0 = ReadArg<bool>(S, PC);
15067 const auto V1 = ReadArg<uint32_t>(S, PC);
15068 if (!DecPopBitfield<PT_Uint64>(S, OpPC, V0, V1)) return false;
15069 }
15070#if USE_TAILCALLS
15071 MUSTTAIL return InterpNext(S, PC);
15072#else
15073 return true;
15074#endif
15075}
15076PRESERVE_NONE
15077static bool Interp_DecPopBitfieldIntAP(InterpState &S, CodePtr &PC) {
15078 {
15079 CodePtr OpPC = PC;
15080 const auto V0 = ReadArg<bool>(S, PC);
15081 const auto V1 = ReadArg<uint32_t>(S, PC);
15082 if (!DecPopBitfield<PT_IntAP>(S, OpPC, V0, V1)) return false;
15083 }
15084#if USE_TAILCALLS
15085 MUSTTAIL return InterpNext(S, PC);
15086#else
15087 return true;
15088#endif
15089}
15090PRESERVE_NONE
15091static bool Interp_DecPopBitfieldIntAPS(InterpState &S, CodePtr &PC) {
15092 {
15093 CodePtr OpPC = PC;
15094 const auto V0 = ReadArg<bool>(S, PC);
15095 const auto V1 = ReadArg<uint32_t>(S, PC);
15096 if (!DecPopBitfield<PT_IntAPS>(S, OpPC, V0, V1)) return false;
15097 }
15098#if USE_TAILCALLS
15099 MUSTTAIL return InterpNext(S, PC);
15100#else
15101 return true;
15102#endif
15103}
15104PRESERVE_NONE
15105static bool Interp_DecPopBitfieldBool(InterpState &S, CodePtr &PC) {
15106 {
15107 CodePtr OpPC = PC;
15108 const auto V0 = ReadArg<bool>(S, PC);
15109 const auto V1 = ReadArg<uint32_t>(S, PC);
15110 if (!DecPopBitfield<PT_Bool>(S, OpPC, V0, V1)) return false;
15111 }
15112#if USE_TAILCALLS
15113 MUSTTAIL return InterpNext(S, PC);
15114#else
15115 return true;
15116#endif
15117}
15118PRESERVE_NONE
15119static bool Interp_DecPopBitfieldFixedPoint(InterpState &S, CodePtr &PC) {
15120 {
15121 CodePtr OpPC = PC;
15122 const auto V0 = ReadArg<bool>(S, PC);
15123 const auto V1 = ReadArg<uint32_t>(S, PC);
15124 if (!DecPopBitfield<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
15125 }
15126#if USE_TAILCALLS
15127 MUSTTAIL return InterpNext(S, PC);
15128#else
15129 return true;
15130#endif
15131}
15132#endif
15133#ifdef GET_DISASM
15134case OP_DecPopBitfieldSint8:
15135 Text.Op = PrintName("DecPopBitfieldSint8");
15136 Text.Args.push_back(printArg<bool>(P, PC));
15137 Text.Args.push_back(printArg<uint32_t>(P, PC));
15138 break;
15139case OP_DecPopBitfieldUint8:
15140 Text.Op = PrintName("DecPopBitfieldUint8");
15141 Text.Args.push_back(printArg<bool>(P, PC));
15142 Text.Args.push_back(printArg<uint32_t>(P, PC));
15143 break;
15144case OP_DecPopBitfieldSint16:
15145 Text.Op = PrintName("DecPopBitfieldSint16");
15146 Text.Args.push_back(printArg<bool>(P, PC));
15147 Text.Args.push_back(printArg<uint32_t>(P, PC));
15148 break;
15149case OP_DecPopBitfieldUint16:
15150 Text.Op = PrintName("DecPopBitfieldUint16");
15151 Text.Args.push_back(printArg<bool>(P, PC));
15152 Text.Args.push_back(printArg<uint32_t>(P, PC));
15153 break;
15154case OP_DecPopBitfieldSint32:
15155 Text.Op = PrintName("DecPopBitfieldSint32");
15156 Text.Args.push_back(printArg<bool>(P, PC));
15157 Text.Args.push_back(printArg<uint32_t>(P, PC));
15158 break;
15159case OP_DecPopBitfieldUint32:
15160 Text.Op = PrintName("DecPopBitfieldUint32");
15161 Text.Args.push_back(printArg<bool>(P, PC));
15162 Text.Args.push_back(printArg<uint32_t>(P, PC));
15163 break;
15164case OP_DecPopBitfieldSint64:
15165 Text.Op = PrintName("DecPopBitfieldSint64");
15166 Text.Args.push_back(printArg<bool>(P, PC));
15167 Text.Args.push_back(printArg<uint32_t>(P, PC));
15168 break;
15169case OP_DecPopBitfieldUint64:
15170 Text.Op = PrintName("DecPopBitfieldUint64");
15171 Text.Args.push_back(printArg<bool>(P, PC));
15172 Text.Args.push_back(printArg<uint32_t>(P, PC));
15173 break;
15174case OP_DecPopBitfieldIntAP:
15175 Text.Op = PrintName("DecPopBitfieldIntAP");
15176 Text.Args.push_back(printArg<bool>(P, PC));
15177 Text.Args.push_back(printArg<uint32_t>(P, PC));
15178 break;
15179case OP_DecPopBitfieldIntAPS:
15180 Text.Op = PrintName("DecPopBitfieldIntAPS");
15181 Text.Args.push_back(printArg<bool>(P, PC));
15182 Text.Args.push_back(printArg<uint32_t>(P, PC));
15183 break;
15184case OP_DecPopBitfieldBool:
15185 Text.Op = PrintName("DecPopBitfieldBool");
15186 Text.Args.push_back(printArg<bool>(P, PC));
15187 Text.Args.push_back(printArg<uint32_t>(P, PC));
15188 break;
15189case OP_DecPopBitfieldFixedPoint:
15190 Text.Op = PrintName("DecPopBitfieldFixedPoint");
15191 Text.Args.push_back(printArg<bool>(P, PC));
15192 Text.Args.push_back(printArg<uint32_t>(P, PC));
15193 break;
15194#endif
15195#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15196bool emitDecPopBitfieldSint8( bool , uint32_t , SourceInfo);
15197bool emitDecPopBitfieldUint8( bool , uint32_t , SourceInfo);
15198bool emitDecPopBitfieldSint16( bool , uint32_t , SourceInfo);
15199bool emitDecPopBitfieldUint16( bool , uint32_t , SourceInfo);
15200bool emitDecPopBitfieldSint32( bool , uint32_t , SourceInfo);
15201bool emitDecPopBitfieldUint32( bool , uint32_t , SourceInfo);
15202bool emitDecPopBitfieldSint64( bool , uint32_t , SourceInfo);
15203bool emitDecPopBitfieldUint64( bool , uint32_t , SourceInfo);
15204bool emitDecPopBitfieldIntAP( bool , uint32_t , SourceInfo);
15205bool emitDecPopBitfieldIntAPS( bool , uint32_t , SourceInfo);
15206bool emitDecPopBitfieldBool( bool , uint32_t , SourceInfo);
15207bool emitDecPopBitfieldFixedPoint( bool , uint32_t , SourceInfo);
15208#endif
15209#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15210[[nodiscard]] bool emitDecPopBitfield(PrimType, bool, uint32_t, SourceInfo I);
15211#endif
15212#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
15213bool
15214#if defined(GET_EVAL_IMPL)
15215EvalEmitter
15216#else
15217ByteCodeEmitter
15218#endif
15219::emitDecPopBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
15220 switch (T0) {
15221 case PT_Sint8:
15222 return emitDecPopBitfieldSint8(A0, A1, I);
15223 case PT_Uint8:
15224 return emitDecPopBitfieldUint8(A0, A1, I);
15225 case PT_Sint16:
15226 return emitDecPopBitfieldSint16(A0, A1, I);
15227 case PT_Uint16:
15228 return emitDecPopBitfieldUint16(A0, A1, I);
15229 case PT_Sint32:
15230 return emitDecPopBitfieldSint32(A0, A1, I);
15231 case PT_Uint32:
15232 return emitDecPopBitfieldUint32(A0, A1, I);
15233 case PT_Sint64:
15234 return emitDecPopBitfieldSint64(A0, A1, I);
15235 case PT_Uint64:
15236 return emitDecPopBitfieldUint64(A0, A1, I);
15237 case PT_IntAP:
15238 return emitDecPopBitfieldIntAP(A0, A1, I);
15239 case PT_IntAPS:
15240 return emitDecPopBitfieldIntAPS(A0, A1, I);
15241 case PT_Bool:
15242 return emitDecPopBitfieldBool(A0, A1, I);
15243 case PT_FixedPoint:
15244 return emitDecPopBitfieldFixedPoint(A0, A1, I);
15245 default: llvm_unreachable("invalid type: emitDecPopBitfield");
15246 }
15247 llvm_unreachable("invalid enum value");
15248}
15249#endif
15250#ifdef GET_LINK_IMPL
15251bool ByteCodeEmitter::emitDecPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
15252 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint8, A0, A1, L);
15253}
15254bool ByteCodeEmitter::emitDecPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
15255 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint8, A0, A1, L);
15256}
15257bool ByteCodeEmitter::emitDecPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
15258 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint16, A0, A1, L);
15259}
15260bool ByteCodeEmitter::emitDecPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
15261 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint16, A0, A1, L);
15262}
15263bool ByteCodeEmitter::emitDecPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
15264 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint32, A0, A1, L);
15265}
15266bool ByteCodeEmitter::emitDecPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
15267 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint32, A0, A1, L);
15268}
15269bool ByteCodeEmitter::emitDecPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
15270 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint64, A0, A1, L);
15271}
15272bool ByteCodeEmitter::emitDecPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
15273 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint64, A0, A1, L);
15274}
15275bool ByteCodeEmitter::emitDecPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
15276 return emitOp<bool, uint32_t>(OP_DecPopBitfieldIntAP, A0, A1, L);
15277}
15278bool ByteCodeEmitter::emitDecPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
15279 return emitOp<bool, uint32_t>(OP_DecPopBitfieldIntAPS, A0, A1, L);
15280}
15281bool ByteCodeEmitter::emitDecPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
15282 return emitOp<bool, uint32_t>(OP_DecPopBitfieldBool, A0, A1, L);
15283}
15284bool ByteCodeEmitter::emitDecPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
15285 return emitOp<bool, uint32_t>(OP_DecPopBitfieldFixedPoint, A0, A1, L);
15286}
15287#endif
15288#ifdef GET_EVAL_IMPL
15289bool EvalEmitter::emitDecPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
15290 if (!isActive()) return true;
15291 CurrentSource = L;
15292 return DecPopBitfield<PT_Sint8>(S, OpPC, A0, A1);
15293}
15294bool EvalEmitter::emitDecPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
15295 if (!isActive()) return true;
15296 CurrentSource = L;
15297 return DecPopBitfield<PT_Uint8>(S, OpPC, A0, A1);
15298}
15299bool EvalEmitter::emitDecPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
15300 if (!isActive()) return true;
15301 CurrentSource = L;
15302 return DecPopBitfield<PT_Sint16>(S, OpPC, A0, A1);
15303}
15304bool EvalEmitter::emitDecPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
15305 if (!isActive()) return true;
15306 CurrentSource = L;
15307 return DecPopBitfield<PT_Uint16>(S, OpPC, A0, A1);
15308}
15309bool EvalEmitter::emitDecPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
15310 if (!isActive()) return true;
15311 CurrentSource = L;
15312 return DecPopBitfield<PT_Sint32>(S, OpPC, A0, A1);
15313}
15314bool EvalEmitter::emitDecPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
15315 if (!isActive()) return true;
15316 CurrentSource = L;
15317 return DecPopBitfield<PT_Uint32>(S, OpPC, A0, A1);
15318}
15319bool EvalEmitter::emitDecPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
15320 if (!isActive()) return true;
15321 CurrentSource = L;
15322 return DecPopBitfield<PT_Sint64>(S, OpPC, A0, A1);
15323}
15324bool EvalEmitter::emitDecPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
15325 if (!isActive()) return true;
15326 CurrentSource = L;
15327 return DecPopBitfield<PT_Uint64>(S, OpPC, A0, A1);
15328}
15329bool EvalEmitter::emitDecPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
15330 if (!isActive()) return true;
15331 CurrentSource = L;
15332 return DecPopBitfield<PT_IntAP>(S, OpPC, A0, A1);
15333}
15334bool EvalEmitter::emitDecPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
15335 if (!isActive()) return true;
15336 CurrentSource = L;
15337 return DecPopBitfield<PT_IntAPS>(S, OpPC, A0, A1);
15338}
15339bool EvalEmitter::emitDecPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
15340 if (!isActive()) return true;
15341 CurrentSource = L;
15342 return DecPopBitfield<PT_Bool>(S, OpPC, A0, A1);
15343}
15344bool EvalEmitter::emitDecPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
15345 if (!isActive()) return true;
15346 CurrentSource = L;
15347 return DecPopBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
15348}
15349#endif
15350#ifdef GET_OPCODE_NAMES
15351OP_DecPtr,
15352#endif
15353#ifdef GET_INTERPFN_LIST
15354&Interp_DecPtr,
15355#endif
15356#ifdef GET_INTERPFN_DISPATCHERS
15357PRESERVE_NONE
15358static bool Interp_DecPtr(InterpState &S, CodePtr &PC) {
15359 if (!DecPtr(S, PC)) return false;
15360#if USE_TAILCALLS
15361 MUSTTAIL return InterpNext(S, PC);
15362#else
15363 return true;
15364#endif
15365}
15366#endif
15367#ifdef GET_DISASM
15368case OP_DecPtr:
15369 Text.Op = PrintName("DecPtr");
15370 break;
15371#endif
15372#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15373bool emitDecPtr(SourceInfo);
15374#endif
15375#ifdef GET_LINK_IMPL
15376bool ByteCodeEmitter::emitDecPtr(SourceInfo L) {
15377 return emitOp<>(OP_DecPtr, L);
15378}
15379#endif
15380#ifdef GET_EVAL_IMPL
15381bool EvalEmitter::emitDecPtr(SourceInfo L) {
15382 if (!isActive()) return true;
15383 CurrentSource = L;
15384 return DecPtr(S, OpPC);
15385}
15386#endif
15387#ifdef GET_OPCODE_NAMES
15388OP_DecayPtrPtrPtr,
15389OP_DecayPtrPtrMemberPtr,
15390OP_DecayPtrMemberPtrPtr,
15391OP_DecayPtrMemberPtrMemberPtr,
15392#endif
15393#ifdef GET_INTERPFN_LIST
15394&Interp_DecayPtrPtrPtr,
15395&Interp_DecayPtrPtrMemberPtr,
15396&Interp_DecayPtrMemberPtrPtr,
15397&Interp_DecayPtrMemberPtrMemberPtr,
15398#endif
15399#ifdef GET_INTERPFN_DISPATCHERS
15400PRESERVE_NONE
15401static bool Interp_DecayPtrPtrPtr(InterpState &S, CodePtr &PC) {
15402 if (!DecayPtr<PT_Ptr, PT_Ptr>(S, PC)) return false;
15403#if USE_TAILCALLS
15404 MUSTTAIL return InterpNext(S, PC);
15405#else
15406 return true;
15407#endif
15408}
15409PRESERVE_NONE
15410static bool Interp_DecayPtrPtrMemberPtr(InterpState &S, CodePtr &PC) {
15411 if (!DecayPtr<PT_Ptr, PT_MemberPtr>(S, PC)) return false;
15412#if USE_TAILCALLS
15413 MUSTTAIL return InterpNext(S, PC);
15414#else
15415 return true;
15416#endif
15417}
15418PRESERVE_NONE
15419static bool Interp_DecayPtrMemberPtrPtr(InterpState &S, CodePtr &PC) {
15420 if (!DecayPtr<PT_MemberPtr, PT_Ptr>(S, PC)) return false;
15421#if USE_TAILCALLS
15422 MUSTTAIL return InterpNext(S, PC);
15423#else
15424 return true;
15425#endif
15426}
15427PRESERVE_NONE
15428static bool Interp_DecayPtrMemberPtrMemberPtr(InterpState &S, CodePtr &PC) {
15429 if (!DecayPtr<PT_MemberPtr, PT_MemberPtr>(S, PC)) return false;
15430#if USE_TAILCALLS
15431 MUSTTAIL return InterpNext(S, PC);
15432#else
15433 return true;
15434#endif
15435}
15436#endif
15437#ifdef GET_DISASM
15438case OP_DecayPtrPtrPtr:
15439 Text.Op = PrintName("DecayPtrPtrPtr");
15440 break;
15441case OP_DecayPtrPtrMemberPtr:
15442 Text.Op = PrintName("DecayPtrPtrMemberPtr");
15443 break;
15444case OP_DecayPtrMemberPtrPtr:
15445 Text.Op = PrintName("DecayPtrMemberPtrPtr");
15446 break;
15447case OP_DecayPtrMemberPtrMemberPtr:
15448 Text.Op = PrintName("DecayPtrMemberPtrMemberPtr");
15449 break;
15450#endif
15451#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15452bool emitDecayPtrPtrPtr(SourceInfo);
15453bool emitDecayPtrPtrMemberPtr(SourceInfo);
15454bool emitDecayPtrMemberPtrPtr(SourceInfo);
15455bool emitDecayPtrMemberPtrMemberPtr(SourceInfo);
15456#endif
15457#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15458[[nodiscard]] bool emitDecayPtr(PrimType, PrimType, SourceInfo I);
15459#endif
15460#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
15461bool
15462#if defined(GET_EVAL_IMPL)
15463EvalEmitter
15464#else
15465ByteCodeEmitter
15466#endif
15467::emitDecayPtr(PrimType T0, PrimType T1, SourceInfo I) {
15468 switch (T0) {
15469 case PT_Ptr:
15470 switch (T1) {
15471 case PT_Ptr:
15472 return emitDecayPtrPtrPtr(I);
15473 case PT_MemberPtr:
15474 return emitDecayPtrPtrMemberPtr(I);
15475 default: llvm_unreachable("invalid type: emitDecayPtr");
15476 }
15477 llvm_unreachable("invalid enum value");
15478 case PT_MemberPtr:
15479 switch (T1) {
15480 case PT_Ptr:
15481 return emitDecayPtrMemberPtrPtr(I);
15482 case PT_MemberPtr:
15483 return emitDecayPtrMemberPtrMemberPtr(I);
15484 default: llvm_unreachable("invalid type: emitDecayPtr");
15485 }
15486 llvm_unreachable("invalid enum value");
15487 default: llvm_unreachable("invalid type: emitDecayPtr");
15488 }
15489 llvm_unreachable("invalid enum value");
15490}
15491#endif
15492#ifdef GET_LINK_IMPL
15493bool ByteCodeEmitter::emitDecayPtrPtrPtr(SourceInfo L) {
15494 return emitOp<>(OP_DecayPtrPtrPtr, L);
15495}
15496bool ByteCodeEmitter::emitDecayPtrPtrMemberPtr(SourceInfo L) {
15497 return emitOp<>(OP_DecayPtrPtrMemberPtr, L);
15498}
15499bool ByteCodeEmitter::emitDecayPtrMemberPtrPtr(SourceInfo L) {
15500 return emitOp<>(OP_DecayPtrMemberPtrPtr, L);
15501}
15502bool ByteCodeEmitter::emitDecayPtrMemberPtrMemberPtr(SourceInfo L) {
15503 return emitOp<>(OP_DecayPtrMemberPtrMemberPtr, L);
15504}
15505#endif
15506#ifdef GET_EVAL_IMPL
15507bool EvalEmitter::emitDecayPtrPtrPtr(SourceInfo L) {
15508 if (!isActive()) return true;
15509 CurrentSource = L;
15510 return DecayPtr<PT_Ptr, PT_Ptr>(S, OpPC);
15511}
15512bool EvalEmitter::emitDecayPtrPtrMemberPtr(SourceInfo L) {
15513 if (!isActive()) return true;
15514 CurrentSource = L;
15515 return DecayPtr<PT_Ptr, PT_MemberPtr>(S, OpPC);
15516}
15517bool EvalEmitter::emitDecayPtrMemberPtrPtr(SourceInfo L) {
15518 if (!isActive()) return true;
15519 CurrentSource = L;
15520 return DecayPtr<PT_MemberPtr, PT_Ptr>(S, OpPC);
15521}
15522bool EvalEmitter::emitDecayPtrMemberPtrMemberPtr(SourceInfo L) {
15523 if (!isActive()) return true;
15524 CurrentSource = L;
15525 return DecayPtr<PT_MemberPtr, PT_MemberPtr>(S, OpPC);
15526}
15527#endif
15528#ifdef GET_OPCODE_NAMES
15529OP_Decf,
15530#endif
15531#ifdef GET_INTERPFN_LIST
15532&Interp_Decf,
15533#endif
15534#ifdef GET_INTERPFN_DISPATCHERS
15535PRESERVE_NONE
15536static bool Interp_Decf(InterpState &S, CodePtr &PC) {
15537 {
15538 CodePtr OpPC = PC;
15539 const auto V0 = ReadArg<uint32_t>(S, PC);
15540 if (!Decf(S, OpPC, V0)) return false;
15541 }
15542#if USE_TAILCALLS
15543 MUSTTAIL return InterpNext(S, PC);
15544#else
15545 return true;
15546#endif
15547}
15548#endif
15549#ifdef GET_DISASM
15550case OP_Decf:
15551 Text.Op = PrintName("Decf");
15552 Text.Args.push_back(printArg<uint32_t>(P, PC));
15553 break;
15554#endif
15555#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15556bool emitDecf( uint32_t , SourceInfo);
15557#endif
15558#ifdef GET_LINK_IMPL
15559bool ByteCodeEmitter::emitDecf( uint32_t A0, SourceInfo L) {
15560 return emitOp<uint32_t>(OP_Decf, A0, L);
15561}
15562#endif
15563#ifdef GET_EVAL_IMPL
15564bool EvalEmitter::emitDecf( uint32_t A0, SourceInfo L) {
15565 if (!isActive()) return true;
15566 CurrentSource = L;
15567 return Decf(S, OpPC, A0);
15568}
15569#endif
15570#ifdef GET_OPCODE_NAMES
15571OP_DecfPop,
15572#endif
15573#ifdef GET_INTERPFN_LIST
15574&Interp_DecfPop,
15575#endif
15576#ifdef GET_INTERPFN_DISPATCHERS
15577PRESERVE_NONE
15578static bool Interp_DecfPop(InterpState &S, CodePtr &PC) {
15579 {
15580 CodePtr OpPC = PC;
15581 const auto V0 = ReadArg<uint32_t>(S, PC);
15582 if (!DecfPop(S, OpPC, V0)) return false;
15583 }
15584#if USE_TAILCALLS
15585 MUSTTAIL return InterpNext(S, PC);
15586#else
15587 return true;
15588#endif
15589}
15590#endif
15591#ifdef GET_DISASM
15592case OP_DecfPop:
15593 Text.Op = PrintName("DecfPop");
15594 Text.Args.push_back(printArg<uint32_t>(P, PC));
15595 break;
15596#endif
15597#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15598bool emitDecfPop( uint32_t , SourceInfo);
15599#endif
15600#ifdef GET_LINK_IMPL
15601bool ByteCodeEmitter::emitDecfPop( uint32_t A0, SourceInfo L) {
15602 return emitOp<uint32_t>(OP_DecfPop, A0, L);
15603}
15604#endif
15605#ifdef GET_EVAL_IMPL
15606bool EvalEmitter::emitDecfPop( uint32_t A0, SourceInfo L) {
15607 if (!isActive()) return true;
15608 CurrentSource = L;
15609 return DecfPop(S, OpPC, A0);
15610}
15611#endif
15612#ifdef GET_OPCODE_NAMES
15613OP_Destroy,
15614#endif
15615#ifdef GET_INTERPFN_LIST
15616&Interp_Destroy,
15617#endif
15618#ifdef GET_INTERPFN_DISPATCHERS
15619PRESERVE_NONE
15620static bool Interp_Destroy(InterpState &S, CodePtr &PC) {
15621 {
15622 CodePtr OpPC = PC;
15623 const auto V0 = ReadArg<uint32_t>(S, PC);
15624 if (!Destroy(S, OpPC, V0)) return false;
15625 }
15626#if USE_TAILCALLS
15627 MUSTTAIL return InterpNext(S, PC);
15628#else
15629 return true;
15630#endif
15631}
15632#endif
15633#ifdef GET_DISASM
15634case OP_Destroy:
15635 Text.Op = PrintName("Destroy");
15636 Text.Args.push_back(printArg<uint32_t>(P, PC));
15637 break;
15638#endif
15639#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15640bool emitDestroy( uint32_t , SourceInfo);
15641#endif
15642#ifdef GET_LINK_IMPL
15643bool ByteCodeEmitter::emitDestroy( uint32_t A0, SourceInfo L) {
15644 return emitOp<uint32_t>(OP_Destroy, A0, L);
15645}
15646#endif
15647#ifdef GET_OPCODE_NAMES
15648OP_DiagTypeid,
15649#endif
15650#ifdef GET_INTERPFN_LIST
15651&Interp_DiagTypeid,
15652#endif
15653#ifdef GET_INTERPFN_DISPATCHERS
15654PRESERVE_NONE
15655static bool Interp_DiagTypeid(InterpState &S, CodePtr &PC) {
15656 if (!DiagTypeid(S, PC)) return false;
15657#if USE_TAILCALLS
15658 MUSTTAIL return InterpNext(S, PC);
15659#else
15660 return true;
15661#endif
15662}
15663#endif
15664#ifdef GET_DISASM
15665case OP_DiagTypeid:
15666 Text.Op = PrintName("DiagTypeid");
15667 break;
15668#endif
15669#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15670bool emitDiagTypeid(SourceInfo);
15671#endif
15672#ifdef GET_LINK_IMPL
15673bool ByteCodeEmitter::emitDiagTypeid(SourceInfo L) {
15674 return emitOp<>(OP_DiagTypeid, L);
15675}
15676#endif
15677#ifdef GET_EVAL_IMPL
15678bool EvalEmitter::emitDiagTypeid(SourceInfo L) {
15679 if (!isActive()) return true;
15680 CurrentSource = L;
15681 return DiagTypeid(S, OpPC);
15682}
15683#endif
15684#ifdef GET_OPCODE_NAMES
15685OP_DivSint8,
15686OP_DivUint8,
15687OP_DivSint16,
15688OP_DivUint16,
15689OP_DivSint32,
15690OP_DivUint32,
15691OP_DivSint64,
15692OP_DivUint64,
15693OP_DivIntAP,
15694OP_DivIntAPS,
15695OP_DivFixedPoint,
15696#endif
15697#ifdef GET_INTERPFN_LIST
15698&Interp_DivSint8,
15699&Interp_DivUint8,
15700&Interp_DivSint16,
15701&Interp_DivUint16,
15702&Interp_DivSint32,
15703&Interp_DivUint32,
15704&Interp_DivSint64,
15705&Interp_DivUint64,
15706&Interp_DivIntAP,
15707&Interp_DivIntAPS,
15708&Interp_DivFixedPoint,
15709#endif
15710#ifdef GET_INTERPFN_DISPATCHERS
15711PRESERVE_NONE
15712static bool Interp_DivSint8(InterpState &S, CodePtr &PC) {
15713 if (!Div<PT_Sint8>(S, PC)) return false;
15714#if USE_TAILCALLS
15715 MUSTTAIL return InterpNext(S, PC);
15716#else
15717 return true;
15718#endif
15719}
15720PRESERVE_NONE
15721static bool Interp_DivUint8(InterpState &S, CodePtr &PC) {
15722 if (!Div<PT_Uint8>(S, PC)) return false;
15723#if USE_TAILCALLS
15724 MUSTTAIL return InterpNext(S, PC);
15725#else
15726 return true;
15727#endif
15728}
15729PRESERVE_NONE
15730static bool Interp_DivSint16(InterpState &S, CodePtr &PC) {
15731 if (!Div<PT_Sint16>(S, PC)) return false;
15732#if USE_TAILCALLS
15733 MUSTTAIL return InterpNext(S, PC);
15734#else
15735 return true;
15736#endif
15737}
15738PRESERVE_NONE
15739static bool Interp_DivUint16(InterpState &S, CodePtr &PC) {
15740 if (!Div<PT_Uint16>(S, PC)) return false;
15741#if USE_TAILCALLS
15742 MUSTTAIL return InterpNext(S, PC);
15743#else
15744 return true;
15745#endif
15746}
15747PRESERVE_NONE
15748static bool Interp_DivSint32(InterpState &S, CodePtr &PC) {
15749 if (!Div<PT_Sint32>(S, PC)) return false;
15750#if USE_TAILCALLS
15751 MUSTTAIL return InterpNext(S, PC);
15752#else
15753 return true;
15754#endif
15755}
15756PRESERVE_NONE
15757static bool Interp_DivUint32(InterpState &S, CodePtr &PC) {
15758 if (!Div<PT_Uint32>(S, PC)) return false;
15759#if USE_TAILCALLS
15760 MUSTTAIL return InterpNext(S, PC);
15761#else
15762 return true;
15763#endif
15764}
15765PRESERVE_NONE
15766static bool Interp_DivSint64(InterpState &S, CodePtr &PC) {
15767 if (!Div<PT_Sint64>(S, PC)) return false;
15768#if USE_TAILCALLS
15769 MUSTTAIL return InterpNext(S, PC);
15770#else
15771 return true;
15772#endif
15773}
15774PRESERVE_NONE
15775static bool Interp_DivUint64(InterpState &S, CodePtr &PC) {
15776 if (!Div<PT_Uint64>(S, PC)) return false;
15777#if USE_TAILCALLS
15778 MUSTTAIL return InterpNext(S, PC);
15779#else
15780 return true;
15781#endif
15782}
15783PRESERVE_NONE
15784static bool Interp_DivIntAP(InterpState &S, CodePtr &PC) {
15785 if (!Div<PT_IntAP>(S, PC)) return false;
15786#if USE_TAILCALLS
15787 MUSTTAIL return InterpNext(S, PC);
15788#else
15789 return true;
15790#endif
15791}
15792PRESERVE_NONE
15793static bool Interp_DivIntAPS(InterpState &S, CodePtr &PC) {
15794 if (!Div<PT_IntAPS>(S, PC)) return false;
15795#if USE_TAILCALLS
15796 MUSTTAIL return InterpNext(S, PC);
15797#else
15798 return true;
15799#endif
15800}
15801PRESERVE_NONE
15802static bool Interp_DivFixedPoint(InterpState &S, CodePtr &PC) {
15803 if (!Div<PT_FixedPoint>(S, PC)) return false;
15804#if USE_TAILCALLS
15805 MUSTTAIL return InterpNext(S, PC);
15806#else
15807 return true;
15808#endif
15809}
15810#endif
15811#ifdef GET_DISASM
15812case OP_DivSint8:
15813 Text.Op = PrintName("DivSint8");
15814 break;
15815case OP_DivUint8:
15816 Text.Op = PrintName("DivUint8");
15817 break;
15818case OP_DivSint16:
15819 Text.Op = PrintName("DivSint16");
15820 break;
15821case OP_DivUint16:
15822 Text.Op = PrintName("DivUint16");
15823 break;
15824case OP_DivSint32:
15825 Text.Op = PrintName("DivSint32");
15826 break;
15827case OP_DivUint32:
15828 Text.Op = PrintName("DivUint32");
15829 break;
15830case OP_DivSint64:
15831 Text.Op = PrintName("DivSint64");
15832 break;
15833case OP_DivUint64:
15834 Text.Op = PrintName("DivUint64");
15835 break;
15836case OP_DivIntAP:
15837 Text.Op = PrintName("DivIntAP");
15838 break;
15839case OP_DivIntAPS:
15840 Text.Op = PrintName("DivIntAPS");
15841 break;
15842case OP_DivFixedPoint:
15843 Text.Op = PrintName("DivFixedPoint");
15844 break;
15845#endif
15846#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15847bool emitDivSint8(SourceInfo);
15848bool emitDivUint8(SourceInfo);
15849bool emitDivSint16(SourceInfo);
15850bool emitDivUint16(SourceInfo);
15851bool emitDivSint32(SourceInfo);
15852bool emitDivUint32(SourceInfo);
15853bool emitDivSint64(SourceInfo);
15854bool emitDivUint64(SourceInfo);
15855bool emitDivIntAP(SourceInfo);
15856bool emitDivIntAPS(SourceInfo);
15857bool emitDivFixedPoint(SourceInfo);
15858#endif
15859#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15860[[nodiscard]] bool emitDiv(PrimType, SourceInfo I);
15861#endif
15862#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
15863bool
15864#if defined(GET_EVAL_IMPL)
15865EvalEmitter
15866#else
15867ByteCodeEmitter
15868#endif
15869::emitDiv(PrimType T0, SourceInfo I) {
15870 switch (T0) {
15871 case PT_Sint8:
15872 return emitDivSint8(I);
15873 case PT_Uint8:
15874 return emitDivUint8(I);
15875 case PT_Sint16:
15876 return emitDivSint16(I);
15877 case PT_Uint16:
15878 return emitDivUint16(I);
15879 case PT_Sint32:
15880 return emitDivSint32(I);
15881 case PT_Uint32:
15882 return emitDivUint32(I);
15883 case PT_Sint64:
15884 return emitDivSint64(I);
15885 case PT_Uint64:
15886 return emitDivUint64(I);
15887 case PT_IntAP:
15888 return emitDivIntAP(I);
15889 case PT_IntAPS:
15890 return emitDivIntAPS(I);
15891 case PT_FixedPoint:
15892 return emitDivFixedPoint(I);
15893 default: llvm_unreachable("invalid type: emitDiv");
15894 }
15895 llvm_unreachable("invalid enum value");
15896}
15897#endif
15898#ifdef GET_LINK_IMPL
15899bool ByteCodeEmitter::emitDivSint8(SourceInfo L) {
15900 return emitOp<>(OP_DivSint8, L);
15901}
15902bool ByteCodeEmitter::emitDivUint8(SourceInfo L) {
15903 return emitOp<>(OP_DivUint8, L);
15904}
15905bool ByteCodeEmitter::emitDivSint16(SourceInfo L) {
15906 return emitOp<>(OP_DivSint16, L);
15907}
15908bool ByteCodeEmitter::emitDivUint16(SourceInfo L) {
15909 return emitOp<>(OP_DivUint16, L);
15910}
15911bool ByteCodeEmitter::emitDivSint32(SourceInfo L) {
15912 return emitOp<>(OP_DivSint32, L);
15913}
15914bool ByteCodeEmitter::emitDivUint32(SourceInfo L) {
15915 return emitOp<>(OP_DivUint32, L);
15916}
15917bool ByteCodeEmitter::emitDivSint64(SourceInfo L) {
15918 return emitOp<>(OP_DivSint64, L);
15919}
15920bool ByteCodeEmitter::emitDivUint64(SourceInfo L) {
15921 return emitOp<>(OP_DivUint64, L);
15922}
15923bool ByteCodeEmitter::emitDivIntAP(SourceInfo L) {
15924 return emitOp<>(OP_DivIntAP, L);
15925}
15926bool ByteCodeEmitter::emitDivIntAPS(SourceInfo L) {
15927 return emitOp<>(OP_DivIntAPS, L);
15928}
15929bool ByteCodeEmitter::emitDivFixedPoint(SourceInfo L) {
15930 return emitOp<>(OP_DivFixedPoint, L);
15931}
15932#endif
15933#ifdef GET_EVAL_IMPL
15934bool EvalEmitter::emitDivSint8(SourceInfo L) {
15935 if (!isActive()) return true;
15936 CurrentSource = L;
15937 return Div<PT_Sint8>(S, OpPC);
15938}
15939bool EvalEmitter::emitDivUint8(SourceInfo L) {
15940 if (!isActive()) return true;
15941 CurrentSource = L;
15942 return Div<PT_Uint8>(S, OpPC);
15943}
15944bool EvalEmitter::emitDivSint16(SourceInfo L) {
15945 if (!isActive()) return true;
15946 CurrentSource = L;
15947 return Div<PT_Sint16>(S, OpPC);
15948}
15949bool EvalEmitter::emitDivUint16(SourceInfo L) {
15950 if (!isActive()) return true;
15951 CurrentSource = L;
15952 return Div<PT_Uint16>(S, OpPC);
15953}
15954bool EvalEmitter::emitDivSint32(SourceInfo L) {
15955 if (!isActive()) return true;
15956 CurrentSource = L;
15957 return Div<PT_Sint32>(S, OpPC);
15958}
15959bool EvalEmitter::emitDivUint32(SourceInfo L) {
15960 if (!isActive()) return true;
15961 CurrentSource = L;
15962 return Div<PT_Uint32>(S, OpPC);
15963}
15964bool EvalEmitter::emitDivSint64(SourceInfo L) {
15965 if (!isActive()) return true;
15966 CurrentSource = L;
15967 return Div<PT_Sint64>(S, OpPC);
15968}
15969bool EvalEmitter::emitDivUint64(SourceInfo L) {
15970 if (!isActive()) return true;
15971 CurrentSource = L;
15972 return Div<PT_Uint64>(S, OpPC);
15973}
15974bool EvalEmitter::emitDivIntAP(SourceInfo L) {
15975 if (!isActive()) return true;
15976 CurrentSource = L;
15977 return Div<PT_IntAP>(S, OpPC);
15978}
15979bool EvalEmitter::emitDivIntAPS(SourceInfo L) {
15980 if (!isActive()) return true;
15981 CurrentSource = L;
15982 return Div<PT_IntAPS>(S, OpPC);
15983}
15984bool EvalEmitter::emitDivFixedPoint(SourceInfo L) {
15985 if (!isActive()) return true;
15986 CurrentSource = L;
15987 return Div<PT_FixedPoint>(S, OpPC);
15988}
15989#endif
15990#ifdef GET_OPCODE_NAMES
15991OP_DivcSint8,
15992OP_DivcUint8,
15993OP_DivcSint16,
15994OP_DivcUint16,
15995OP_DivcSint32,
15996OP_DivcUint32,
15997OP_DivcSint64,
15998OP_DivcUint64,
15999OP_DivcIntAP,
16000OP_DivcIntAPS,
16001OP_DivcFloat,
16002#endif
16003#ifdef GET_INTERPFN_LIST
16004&Interp_DivcSint8,
16005&Interp_DivcUint8,
16006&Interp_DivcSint16,
16007&Interp_DivcUint16,
16008&Interp_DivcSint32,
16009&Interp_DivcUint32,
16010&Interp_DivcSint64,
16011&Interp_DivcUint64,
16012&Interp_DivcIntAP,
16013&Interp_DivcIntAPS,
16014&Interp_DivcFloat,
16015#endif
16016#ifdef GET_INTERPFN_DISPATCHERS
16017PRESERVE_NONE
16018static bool Interp_DivcSint8(InterpState &S, CodePtr &PC) {
16019 if (!Divc<PT_Sint8>(S, PC)) return false;
16020#if USE_TAILCALLS
16021 MUSTTAIL return InterpNext(S, PC);
16022#else
16023 return true;
16024#endif
16025}
16026PRESERVE_NONE
16027static bool Interp_DivcUint8(InterpState &S, CodePtr &PC) {
16028 if (!Divc<PT_Uint8>(S, PC)) return false;
16029#if USE_TAILCALLS
16030 MUSTTAIL return InterpNext(S, PC);
16031#else
16032 return true;
16033#endif
16034}
16035PRESERVE_NONE
16036static bool Interp_DivcSint16(InterpState &S, CodePtr &PC) {
16037 if (!Divc<PT_Sint16>(S, PC)) return false;
16038#if USE_TAILCALLS
16039 MUSTTAIL return InterpNext(S, PC);
16040#else
16041 return true;
16042#endif
16043}
16044PRESERVE_NONE
16045static bool Interp_DivcUint16(InterpState &S, CodePtr &PC) {
16046 if (!Divc<PT_Uint16>(S, PC)) return false;
16047#if USE_TAILCALLS
16048 MUSTTAIL return InterpNext(S, PC);
16049#else
16050 return true;
16051#endif
16052}
16053PRESERVE_NONE
16054static bool Interp_DivcSint32(InterpState &S, CodePtr &PC) {
16055 if (!Divc<PT_Sint32>(S, PC)) return false;
16056#if USE_TAILCALLS
16057 MUSTTAIL return InterpNext(S, PC);
16058#else
16059 return true;
16060#endif
16061}
16062PRESERVE_NONE
16063static bool Interp_DivcUint32(InterpState &S, CodePtr &PC) {
16064 if (!Divc<PT_Uint32>(S, PC)) return false;
16065#if USE_TAILCALLS
16066 MUSTTAIL return InterpNext(S, PC);
16067#else
16068 return true;
16069#endif
16070}
16071PRESERVE_NONE
16072static bool Interp_DivcSint64(InterpState &S, CodePtr &PC) {
16073 if (!Divc<PT_Sint64>(S, PC)) return false;
16074#if USE_TAILCALLS
16075 MUSTTAIL return InterpNext(S, PC);
16076#else
16077 return true;
16078#endif
16079}
16080PRESERVE_NONE
16081static bool Interp_DivcUint64(InterpState &S, CodePtr &PC) {
16082 if (!Divc<PT_Uint64>(S, PC)) return false;
16083#if USE_TAILCALLS
16084 MUSTTAIL return InterpNext(S, PC);
16085#else
16086 return true;
16087#endif
16088}
16089PRESERVE_NONE
16090static bool Interp_DivcIntAP(InterpState &S, CodePtr &PC) {
16091 if (!Divc<PT_IntAP>(S, PC)) return false;
16092#if USE_TAILCALLS
16093 MUSTTAIL return InterpNext(S, PC);
16094#else
16095 return true;
16096#endif
16097}
16098PRESERVE_NONE
16099static bool Interp_DivcIntAPS(InterpState &S, CodePtr &PC) {
16100 if (!Divc<PT_IntAPS>(S, PC)) return false;
16101#if USE_TAILCALLS
16102 MUSTTAIL return InterpNext(S, PC);
16103#else
16104 return true;
16105#endif
16106}
16107PRESERVE_NONE
16108static bool Interp_DivcFloat(InterpState &S, CodePtr &PC) {
16109 if (!Divc<PT_Float>(S, PC)) return false;
16110#if USE_TAILCALLS
16111 MUSTTAIL return InterpNext(S, PC);
16112#else
16113 return true;
16114#endif
16115}
16116#endif
16117#ifdef GET_DISASM
16118case OP_DivcSint8:
16119 Text.Op = PrintName("DivcSint8");
16120 break;
16121case OP_DivcUint8:
16122 Text.Op = PrintName("DivcUint8");
16123 break;
16124case OP_DivcSint16:
16125 Text.Op = PrintName("DivcSint16");
16126 break;
16127case OP_DivcUint16:
16128 Text.Op = PrintName("DivcUint16");
16129 break;
16130case OP_DivcSint32:
16131 Text.Op = PrintName("DivcSint32");
16132 break;
16133case OP_DivcUint32:
16134 Text.Op = PrintName("DivcUint32");
16135 break;
16136case OP_DivcSint64:
16137 Text.Op = PrintName("DivcSint64");
16138 break;
16139case OP_DivcUint64:
16140 Text.Op = PrintName("DivcUint64");
16141 break;
16142case OP_DivcIntAP:
16143 Text.Op = PrintName("DivcIntAP");
16144 break;
16145case OP_DivcIntAPS:
16146 Text.Op = PrintName("DivcIntAPS");
16147 break;
16148case OP_DivcFloat:
16149 Text.Op = PrintName("DivcFloat");
16150 break;
16151#endif
16152#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16153bool emitDivcSint8(SourceInfo);
16154bool emitDivcUint8(SourceInfo);
16155bool emitDivcSint16(SourceInfo);
16156bool emitDivcUint16(SourceInfo);
16157bool emitDivcSint32(SourceInfo);
16158bool emitDivcUint32(SourceInfo);
16159bool emitDivcSint64(SourceInfo);
16160bool emitDivcUint64(SourceInfo);
16161bool emitDivcIntAP(SourceInfo);
16162bool emitDivcIntAPS(SourceInfo);
16163bool emitDivcFloat(SourceInfo);
16164#endif
16165#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16166[[nodiscard]] bool emitDivc(PrimType, SourceInfo I);
16167#endif
16168#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
16169bool
16170#if defined(GET_EVAL_IMPL)
16171EvalEmitter
16172#else
16173ByteCodeEmitter
16174#endif
16175::emitDivc(PrimType T0, SourceInfo I) {
16176 switch (T0) {
16177 case PT_Sint8:
16178 return emitDivcSint8(I);
16179 case PT_Uint8:
16180 return emitDivcUint8(I);
16181 case PT_Sint16:
16182 return emitDivcSint16(I);
16183 case PT_Uint16:
16184 return emitDivcUint16(I);
16185 case PT_Sint32:
16186 return emitDivcSint32(I);
16187 case PT_Uint32:
16188 return emitDivcUint32(I);
16189 case PT_Sint64:
16190 return emitDivcSint64(I);
16191 case PT_Uint64:
16192 return emitDivcUint64(I);
16193 case PT_IntAP:
16194 return emitDivcIntAP(I);
16195 case PT_IntAPS:
16196 return emitDivcIntAPS(I);
16197 case PT_Float:
16198 return emitDivcFloat(I);
16199 default: llvm_unreachable("invalid type: emitDivc");
16200 }
16201 llvm_unreachable("invalid enum value");
16202}
16203#endif
16204#ifdef GET_LINK_IMPL
16205bool ByteCodeEmitter::emitDivcSint8(SourceInfo L) {
16206 return emitOp<>(OP_DivcSint8, L);
16207}
16208bool ByteCodeEmitter::emitDivcUint8(SourceInfo L) {
16209 return emitOp<>(OP_DivcUint8, L);
16210}
16211bool ByteCodeEmitter::emitDivcSint16(SourceInfo L) {
16212 return emitOp<>(OP_DivcSint16, L);
16213}
16214bool ByteCodeEmitter::emitDivcUint16(SourceInfo L) {
16215 return emitOp<>(OP_DivcUint16, L);
16216}
16217bool ByteCodeEmitter::emitDivcSint32(SourceInfo L) {
16218 return emitOp<>(OP_DivcSint32, L);
16219}
16220bool ByteCodeEmitter::emitDivcUint32(SourceInfo L) {
16221 return emitOp<>(OP_DivcUint32, L);
16222}
16223bool ByteCodeEmitter::emitDivcSint64(SourceInfo L) {
16224 return emitOp<>(OP_DivcSint64, L);
16225}
16226bool ByteCodeEmitter::emitDivcUint64(SourceInfo L) {
16227 return emitOp<>(OP_DivcUint64, L);
16228}
16229bool ByteCodeEmitter::emitDivcIntAP(SourceInfo L) {
16230 return emitOp<>(OP_DivcIntAP, L);
16231}
16232bool ByteCodeEmitter::emitDivcIntAPS(SourceInfo L) {
16233 return emitOp<>(OP_DivcIntAPS, L);
16234}
16235bool ByteCodeEmitter::emitDivcFloat(SourceInfo L) {
16236 return emitOp<>(OP_DivcFloat, L);
16237}
16238#endif
16239#ifdef GET_EVAL_IMPL
16240bool EvalEmitter::emitDivcSint8(SourceInfo L) {
16241 if (!isActive()) return true;
16242 CurrentSource = L;
16243 return Divc<PT_Sint8>(S, OpPC);
16244}
16245bool EvalEmitter::emitDivcUint8(SourceInfo L) {
16246 if (!isActive()) return true;
16247 CurrentSource = L;
16248 return Divc<PT_Uint8>(S, OpPC);
16249}
16250bool EvalEmitter::emitDivcSint16(SourceInfo L) {
16251 if (!isActive()) return true;
16252 CurrentSource = L;
16253 return Divc<PT_Sint16>(S, OpPC);
16254}
16255bool EvalEmitter::emitDivcUint16(SourceInfo L) {
16256 if (!isActive()) return true;
16257 CurrentSource = L;
16258 return Divc<PT_Uint16>(S, OpPC);
16259}
16260bool EvalEmitter::emitDivcSint32(SourceInfo L) {
16261 if (!isActive()) return true;
16262 CurrentSource = L;
16263 return Divc<PT_Sint32>(S, OpPC);
16264}
16265bool EvalEmitter::emitDivcUint32(SourceInfo L) {
16266 if (!isActive()) return true;
16267 CurrentSource = L;
16268 return Divc<PT_Uint32>(S, OpPC);
16269}
16270bool EvalEmitter::emitDivcSint64(SourceInfo L) {
16271 if (!isActive()) return true;
16272 CurrentSource = L;
16273 return Divc<PT_Sint64>(S, OpPC);
16274}
16275bool EvalEmitter::emitDivcUint64(SourceInfo L) {
16276 if (!isActive()) return true;
16277 CurrentSource = L;
16278 return Divc<PT_Uint64>(S, OpPC);
16279}
16280bool EvalEmitter::emitDivcIntAP(SourceInfo L) {
16281 if (!isActive()) return true;
16282 CurrentSource = L;
16283 return Divc<PT_IntAP>(S, OpPC);
16284}
16285bool EvalEmitter::emitDivcIntAPS(SourceInfo L) {
16286 if (!isActive()) return true;
16287 CurrentSource = L;
16288 return Divc<PT_IntAPS>(S, OpPC);
16289}
16290bool EvalEmitter::emitDivcFloat(SourceInfo L) {
16291 if (!isActive()) return true;
16292 CurrentSource = L;
16293 return Divc<PT_Float>(S, OpPC);
16294}
16295#endif
16296#ifdef GET_OPCODE_NAMES
16297OP_Divf,
16298#endif
16299#ifdef GET_INTERPFN_LIST
16300&Interp_Divf,
16301#endif
16302#ifdef GET_INTERPFN_DISPATCHERS
16303PRESERVE_NONE
16304static bool Interp_Divf(InterpState &S, CodePtr &PC) {
16305 {
16306 CodePtr OpPC = PC;
16307 const auto V0 = ReadArg<uint32_t>(S, PC);
16308 if (!Divf(S, OpPC, V0)) return false;
16309 }
16310#if USE_TAILCALLS
16311 MUSTTAIL return InterpNext(S, PC);
16312#else
16313 return true;
16314#endif
16315}
16316#endif
16317#ifdef GET_DISASM
16318case OP_Divf:
16319 Text.Op = PrintName("Divf");
16320 Text.Args.push_back(printArg<uint32_t>(P, PC));
16321 break;
16322#endif
16323#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16324bool emitDivf( uint32_t , SourceInfo);
16325#endif
16326#ifdef GET_LINK_IMPL
16327bool ByteCodeEmitter::emitDivf( uint32_t A0, SourceInfo L) {
16328 return emitOp<uint32_t>(OP_Divf, A0, L);
16329}
16330#endif
16331#ifdef GET_EVAL_IMPL
16332bool EvalEmitter::emitDivf( uint32_t A0, SourceInfo L) {
16333 if (!isActive()) return true;
16334 CurrentSource = L;
16335 return Divf(S, OpPC, A0);
16336}
16337#endif
16338#ifdef GET_OPCODE_NAMES
16339OP_Dump,
16340#endif
16341#ifdef GET_INTERPFN_LIST
16342&Interp_Dump,
16343#endif
16344#ifdef GET_INTERPFN_DISPATCHERS
16345PRESERVE_NONE
16346static bool Interp_Dump(InterpState &S, CodePtr &PC) {
16347 if (!Dump(S, PC)) return false;
16348#if USE_TAILCALLS
16349 MUSTTAIL return InterpNext(S, PC);
16350#else
16351 return true;
16352#endif
16353}
16354#endif
16355#ifdef GET_DISASM
16356case OP_Dump:
16357 Text.Op = PrintName("Dump");
16358 break;
16359#endif
16360#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16361bool emitDump(SourceInfo);
16362#endif
16363#ifdef GET_LINK_IMPL
16364bool ByteCodeEmitter::emitDump(SourceInfo L) {
16365 return emitOp<>(OP_Dump, L);
16366}
16367#endif
16368#ifdef GET_EVAL_IMPL
16369bool EvalEmitter::emitDump(SourceInfo L) {
16370 if (!isActive()) return true;
16371 CurrentSource = L;
16372 return Dump(S, OpPC);
16373}
16374#endif
16375#ifdef GET_OPCODE_NAMES
16376OP_DupSint8,
16377OP_DupUint8,
16378OP_DupSint16,
16379OP_DupUint16,
16380OP_DupSint32,
16381OP_DupUint32,
16382OP_DupSint64,
16383OP_DupUint64,
16384OP_DupIntAP,
16385OP_DupIntAPS,
16386OP_DupBool,
16387OP_DupFixedPoint,
16388OP_DupPtr,
16389OP_DupMemberPtr,
16390OP_DupFloat,
16391#endif
16392#ifdef GET_INTERPFN_LIST
16393&Interp_DupSint8,
16394&Interp_DupUint8,
16395&Interp_DupSint16,
16396&Interp_DupUint16,
16397&Interp_DupSint32,
16398&Interp_DupUint32,
16399&Interp_DupSint64,
16400&Interp_DupUint64,
16401&Interp_DupIntAP,
16402&Interp_DupIntAPS,
16403&Interp_DupBool,
16404&Interp_DupFixedPoint,
16405&Interp_DupPtr,
16406&Interp_DupMemberPtr,
16407&Interp_DupFloat,
16408#endif
16409#ifdef GET_INTERPFN_DISPATCHERS
16410PRESERVE_NONE
16411static bool Interp_DupSint8(InterpState &S, CodePtr &PC) {
16412 Dup<PT_Sint8>(S, PC);
16413#if USE_TAILCALLS
16414 MUSTTAIL return InterpNext(S, PC);
16415#else
16416 return true;
16417#endif
16418}
16419PRESERVE_NONE
16420static bool Interp_DupUint8(InterpState &S, CodePtr &PC) {
16421 Dup<PT_Uint8>(S, PC);
16422#if USE_TAILCALLS
16423 MUSTTAIL return InterpNext(S, PC);
16424#else
16425 return true;
16426#endif
16427}
16428PRESERVE_NONE
16429static bool Interp_DupSint16(InterpState &S, CodePtr &PC) {
16430 Dup<PT_Sint16>(S, PC);
16431#if USE_TAILCALLS
16432 MUSTTAIL return InterpNext(S, PC);
16433#else
16434 return true;
16435#endif
16436}
16437PRESERVE_NONE
16438static bool Interp_DupUint16(InterpState &S, CodePtr &PC) {
16439 Dup<PT_Uint16>(S, PC);
16440#if USE_TAILCALLS
16441 MUSTTAIL return InterpNext(S, PC);
16442#else
16443 return true;
16444#endif
16445}
16446PRESERVE_NONE
16447static bool Interp_DupSint32(InterpState &S, CodePtr &PC) {
16448 Dup<PT_Sint32>(S, PC);
16449#if USE_TAILCALLS
16450 MUSTTAIL return InterpNext(S, PC);
16451#else
16452 return true;
16453#endif
16454}
16455PRESERVE_NONE
16456static bool Interp_DupUint32(InterpState &S, CodePtr &PC) {
16457 Dup<PT_Uint32>(S, PC);
16458#if USE_TAILCALLS
16459 MUSTTAIL return InterpNext(S, PC);
16460#else
16461 return true;
16462#endif
16463}
16464PRESERVE_NONE
16465static bool Interp_DupSint64(InterpState &S, CodePtr &PC) {
16466 Dup<PT_Sint64>(S, PC);
16467#if USE_TAILCALLS
16468 MUSTTAIL return InterpNext(S, PC);
16469#else
16470 return true;
16471#endif
16472}
16473PRESERVE_NONE
16474static bool Interp_DupUint64(InterpState &S, CodePtr &PC) {
16475 Dup<PT_Uint64>(S, PC);
16476#if USE_TAILCALLS
16477 MUSTTAIL return InterpNext(S, PC);
16478#else
16479 return true;
16480#endif
16481}
16482PRESERVE_NONE
16483static bool Interp_DupIntAP(InterpState &S, CodePtr &PC) {
16484 Dup<PT_IntAP>(S, PC);
16485#if USE_TAILCALLS
16486 MUSTTAIL return InterpNext(S, PC);
16487#else
16488 return true;
16489#endif
16490}
16491PRESERVE_NONE
16492static bool Interp_DupIntAPS(InterpState &S, CodePtr &PC) {
16493 Dup<PT_IntAPS>(S, PC);
16494#if USE_TAILCALLS
16495 MUSTTAIL return InterpNext(S, PC);
16496#else
16497 return true;
16498#endif
16499}
16500PRESERVE_NONE
16501static bool Interp_DupBool(InterpState &S, CodePtr &PC) {
16502 Dup<PT_Bool>(S, PC);
16503#if USE_TAILCALLS
16504 MUSTTAIL return InterpNext(S, PC);
16505#else
16506 return true;
16507#endif
16508}
16509PRESERVE_NONE
16510static bool Interp_DupFixedPoint(InterpState &S, CodePtr &PC) {
16511 Dup<PT_FixedPoint>(S, PC);
16512#if USE_TAILCALLS
16513 MUSTTAIL return InterpNext(S, PC);
16514#else
16515 return true;
16516#endif
16517}
16518PRESERVE_NONE
16519static bool Interp_DupPtr(InterpState &S, CodePtr &PC) {
16520 Dup<PT_Ptr>(S, PC);
16521#if USE_TAILCALLS
16522 MUSTTAIL return InterpNext(S, PC);
16523#else
16524 return true;
16525#endif
16526}
16527PRESERVE_NONE
16528static bool Interp_DupMemberPtr(InterpState &S, CodePtr &PC) {
16529 Dup<PT_MemberPtr>(S, PC);
16530#if USE_TAILCALLS
16531 MUSTTAIL return InterpNext(S, PC);
16532#else
16533 return true;
16534#endif
16535}
16536PRESERVE_NONE
16537static bool Interp_DupFloat(InterpState &S, CodePtr &PC) {
16538 Dup<PT_Float>(S, PC);
16539#if USE_TAILCALLS
16540 MUSTTAIL return InterpNext(S, PC);
16541#else
16542 return true;
16543#endif
16544}
16545#endif
16546#ifdef GET_DISASM
16547case OP_DupSint8:
16548 Text.Op = PrintName("DupSint8");
16549 break;
16550case OP_DupUint8:
16551 Text.Op = PrintName("DupUint8");
16552 break;
16553case OP_DupSint16:
16554 Text.Op = PrintName("DupSint16");
16555 break;
16556case OP_DupUint16:
16557 Text.Op = PrintName("DupUint16");
16558 break;
16559case OP_DupSint32:
16560 Text.Op = PrintName("DupSint32");
16561 break;
16562case OP_DupUint32:
16563 Text.Op = PrintName("DupUint32");
16564 break;
16565case OP_DupSint64:
16566 Text.Op = PrintName("DupSint64");
16567 break;
16568case OP_DupUint64:
16569 Text.Op = PrintName("DupUint64");
16570 break;
16571case OP_DupIntAP:
16572 Text.Op = PrintName("DupIntAP");
16573 break;
16574case OP_DupIntAPS:
16575 Text.Op = PrintName("DupIntAPS");
16576 break;
16577case OP_DupBool:
16578 Text.Op = PrintName("DupBool");
16579 break;
16580case OP_DupFixedPoint:
16581 Text.Op = PrintName("DupFixedPoint");
16582 break;
16583case OP_DupPtr:
16584 Text.Op = PrintName("DupPtr");
16585 break;
16586case OP_DupMemberPtr:
16587 Text.Op = PrintName("DupMemberPtr");
16588 break;
16589case OP_DupFloat:
16590 Text.Op = PrintName("DupFloat");
16591 break;
16592#endif
16593#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16594bool emitDupSint8(SourceInfo);
16595bool emitDupUint8(SourceInfo);
16596bool emitDupSint16(SourceInfo);
16597bool emitDupUint16(SourceInfo);
16598bool emitDupSint32(SourceInfo);
16599bool emitDupUint32(SourceInfo);
16600bool emitDupSint64(SourceInfo);
16601bool emitDupUint64(SourceInfo);
16602bool emitDupIntAP(SourceInfo);
16603bool emitDupIntAPS(SourceInfo);
16604bool emitDupBool(SourceInfo);
16605bool emitDupFixedPoint(SourceInfo);
16606bool emitDupPtr(SourceInfo);
16607bool emitDupMemberPtr(SourceInfo);
16608bool emitDupFloat(SourceInfo);
16609#endif
16610#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16611[[nodiscard]] bool emitDup(PrimType, SourceInfo I);
16612#endif
16613#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
16614bool
16615#if defined(GET_EVAL_IMPL)
16616EvalEmitter
16617#else
16618ByteCodeEmitter
16619#endif
16620::emitDup(PrimType T0, SourceInfo I) {
16621 switch (T0) {
16622 case PT_Sint8:
16623 return emitDupSint8(I);
16624 case PT_Uint8:
16625 return emitDupUint8(I);
16626 case PT_Sint16:
16627 return emitDupSint16(I);
16628 case PT_Uint16:
16629 return emitDupUint16(I);
16630 case PT_Sint32:
16631 return emitDupSint32(I);
16632 case PT_Uint32:
16633 return emitDupUint32(I);
16634 case PT_Sint64:
16635 return emitDupSint64(I);
16636 case PT_Uint64:
16637 return emitDupUint64(I);
16638 case PT_IntAP:
16639 return emitDupIntAP(I);
16640 case PT_IntAPS:
16641 return emitDupIntAPS(I);
16642 case PT_Bool:
16643 return emitDupBool(I);
16644 case PT_FixedPoint:
16645 return emitDupFixedPoint(I);
16646 case PT_Ptr:
16647 return emitDupPtr(I);
16648 case PT_MemberPtr:
16649 return emitDupMemberPtr(I);
16650 case PT_Float:
16651 return emitDupFloat(I);
16652 }
16653 llvm_unreachable("invalid enum value");
16654}
16655#endif
16656#ifdef GET_LINK_IMPL
16657bool ByteCodeEmitter::emitDupSint8(SourceInfo L) {
16658 return emitOp<>(OP_DupSint8, L);
16659}
16660bool ByteCodeEmitter::emitDupUint8(SourceInfo L) {
16661 return emitOp<>(OP_DupUint8, L);
16662}
16663bool ByteCodeEmitter::emitDupSint16(SourceInfo L) {
16664 return emitOp<>(OP_DupSint16, L);
16665}
16666bool ByteCodeEmitter::emitDupUint16(SourceInfo L) {
16667 return emitOp<>(OP_DupUint16, L);
16668}
16669bool ByteCodeEmitter::emitDupSint32(SourceInfo L) {
16670 return emitOp<>(OP_DupSint32, L);
16671}
16672bool ByteCodeEmitter::emitDupUint32(SourceInfo L) {
16673 return emitOp<>(OP_DupUint32, L);
16674}
16675bool ByteCodeEmitter::emitDupSint64(SourceInfo L) {
16676 return emitOp<>(OP_DupSint64, L);
16677}
16678bool ByteCodeEmitter::emitDupUint64(SourceInfo L) {
16679 return emitOp<>(OP_DupUint64, L);
16680}
16681bool ByteCodeEmitter::emitDupIntAP(SourceInfo L) {
16682 return emitOp<>(OP_DupIntAP, L);
16683}
16684bool ByteCodeEmitter::emitDupIntAPS(SourceInfo L) {
16685 return emitOp<>(OP_DupIntAPS, L);
16686}
16687bool ByteCodeEmitter::emitDupBool(SourceInfo L) {
16688 return emitOp<>(OP_DupBool, L);
16689}
16690bool ByteCodeEmitter::emitDupFixedPoint(SourceInfo L) {
16691 return emitOp<>(OP_DupFixedPoint, L);
16692}
16693bool ByteCodeEmitter::emitDupPtr(SourceInfo L) {
16694 return emitOp<>(OP_DupPtr, L);
16695}
16696bool ByteCodeEmitter::emitDupMemberPtr(SourceInfo L) {
16697 return emitOp<>(OP_DupMemberPtr, L);
16698}
16699bool ByteCodeEmitter::emitDupFloat(SourceInfo L) {
16700 return emitOp<>(OP_DupFloat, L);
16701}
16702#endif
16703#ifdef GET_EVAL_IMPL
16704bool EvalEmitter::emitDupSint8(SourceInfo L) {
16705 if (!isActive()) return true;
16706 CurrentSource = L;
16707 return Dup<PT_Sint8>(S, OpPC);
16708}
16709bool EvalEmitter::emitDupUint8(SourceInfo L) {
16710 if (!isActive()) return true;
16711 CurrentSource = L;
16712 return Dup<PT_Uint8>(S, OpPC);
16713}
16714bool EvalEmitter::emitDupSint16(SourceInfo L) {
16715 if (!isActive()) return true;
16716 CurrentSource = L;
16717 return Dup<PT_Sint16>(S, OpPC);
16718}
16719bool EvalEmitter::emitDupUint16(SourceInfo L) {
16720 if (!isActive()) return true;
16721 CurrentSource = L;
16722 return Dup<PT_Uint16>(S, OpPC);
16723}
16724bool EvalEmitter::emitDupSint32(SourceInfo L) {
16725 if (!isActive()) return true;
16726 CurrentSource = L;
16727 return Dup<PT_Sint32>(S, OpPC);
16728}
16729bool EvalEmitter::emitDupUint32(SourceInfo L) {
16730 if (!isActive()) return true;
16731 CurrentSource = L;
16732 return Dup<PT_Uint32>(S, OpPC);
16733}
16734bool EvalEmitter::emitDupSint64(SourceInfo L) {
16735 if (!isActive()) return true;
16736 CurrentSource = L;
16737 return Dup<PT_Sint64>(S, OpPC);
16738}
16739bool EvalEmitter::emitDupUint64(SourceInfo L) {
16740 if (!isActive()) return true;
16741 CurrentSource = L;
16742 return Dup<PT_Uint64>(S, OpPC);
16743}
16744bool EvalEmitter::emitDupIntAP(SourceInfo L) {
16745 if (!isActive()) return true;
16746 CurrentSource = L;
16747 return Dup<PT_IntAP>(S, OpPC);
16748}
16749bool EvalEmitter::emitDupIntAPS(SourceInfo L) {
16750 if (!isActive()) return true;
16751 CurrentSource = L;
16752 return Dup<PT_IntAPS>(S, OpPC);
16753}
16754bool EvalEmitter::emitDupBool(SourceInfo L) {
16755 if (!isActive()) return true;
16756 CurrentSource = L;
16757 return Dup<PT_Bool>(S, OpPC);
16758}
16759bool EvalEmitter::emitDupFixedPoint(SourceInfo L) {
16760 if (!isActive()) return true;
16761 CurrentSource = L;
16762 return Dup<PT_FixedPoint>(S, OpPC);
16763}
16764bool EvalEmitter::emitDupPtr(SourceInfo L) {
16765 if (!isActive()) return true;
16766 CurrentSource = L;
16767 return Dup<PT_Ptr>(S, OpPC);
16768}
16769bool EvalEmitter::emitDupMemberPtr(SourceInfo L) {
16770 if (!isActive()) return true;
16771 CurrentSource = L;
16772 return Dup<PT_MemberPtr>(S, OpPC);
16773}
16774bool EvalEmitter::emitDupFloat(SourceInfo L) {
16775 if (!isActive()) return true;
16776 CurrentSource = L;
16777 return Dup<PT_Float>(S, OpPC);
16778}
16779#endif
16780#ifdef GET_OPCODE_NAMES
16781OP_DynamicCast,
16782#endif
16783#ifdef GET_INTERPFN_LIST
16784&Interp_DynamicCast,
16785#endif
16786#ifdef GET_INTERPFN_DISPATCHERS
16787PRESERVE_NONE
16788static bool Interp_DynamicCast(InterpState &S, CodePtr &PC) {
16789 {
16790 CodePtr OpPC = PC;
16791 const auto V0 = ReadArg<const Type *>(S, PC);
16792 const auto V1 = ReadArg<bool>(S, PC);
16793 if (!DynamicCast(S, OpPC, V0, V1)) return false;
16794 }
16795#if USE_TAILCALLS
16796 MUSTTAIL return InterpNext(S, PC);
16797#else
16798 return true;
16799#endif
16800}
16801#endif
16802#ifdef GET_DISASM
16803case OP_DynamicCast:
16804 Text.Op = PrintName("DynamicCast");
16805 Text.Args.push_back(printArg<const Type *>(P, PC));
16806 Text.Args.push_back(printArg<bool>(P, PC));
16807 break;
16808#endif
16809#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
16810bool emitDynamicCast( const Type * , bool , SourceInfo);
16811#endif
16812#ifdef GET_LINK_IMPL
16813bool ByteCodeEmitter::emitDynamicCast( const Type * A0, bool A1, SourceInfo L) {
16814 return emitOp<const Type *, bool>(OP_DynamicCast, A0, A1, L);
16815}
16816#endif
16817#ifdef GET_EVAL_IMPL
16818bool EvalEmitter::emitDynamicCast( const Type * A0, bool A1, SourceInfo L) {
16819 if (!isActive()) return true;
16820 CurrentSource = L;
16821 return DynamicCast(S, OpPC, A0, A1);
16822}
16823#endif
16824#ifdef GET_OPCODE_NAMES
16825OP_EQSint8,
16826OP_EQUint8,
16827OP_EQSint16,
16828OP_EQUint16,
16829OP_EQSint32,
16830OP_EQUint32,
16831OP_EQSint64,
16832OP_EQUint64,
16833OP_EQIntAP,
16834OP_EQIntAPS,
16835OP_EQBool,
16836OP_EQFixedPoint,
16837OP_EQPtr,
16838OP_EQMemberPtr,
16839OP_EQFloat,
16840#endif
16841#ifdef GET_INTERPFN_LIST
16842&Interp_EQSint8,
16843&Interp_EQUint8,
16844&Interp_EQSint16,
16845&Interp_EQUint16,
16846&Interp_EQSint32,
16847&Interp_EQUint32,
16848&Interp_EQSint64,
16849&Interp_EQUint64,
16850&Interp_EQIntAP,
16851&Interp_EQIntAPS,
16852&Interp_EQBool,
16853&Interp_EQFixedPoint,
16854&Interp_EQPtr,
16855&Interp_EQMemberPtr,
16856&Interp_EQFloat,
16857#endif
16858#ifdef GET_INTERPFN_DISPATCHERS
16859PRESERVE_NONE
16860static bool Interp_EQSint8(InterpState &S, CodePtr &PC) {
16861 if (!EQ<PT_Sint8>(S, PC)) return false;
16862#if USE_TAILCALLS
16863 MUSTTAIL return InterpNext(S, PC);
16864#else
16865 return true;
16866#endif
16867}
16868PRESERVE_NONE
16869static bool Interp_EQUint8(InterpState &S, CodePtr &PC) {
16870 if (!EQ<PT_Uint8>(S, PC)) return false;
16871#if USE_TAILCALLS
16872 MUSTTAIL return InterpNext(S, PC);
16873#else
16874 return true;
16875#endif
16876}
16877PRESERVE_NONE
16878static bool Interp_EQSint16(InterpState &S, CodePtr &PC) {
16879 if (!EQ<PT_Sint16>(S, PC)) return false;
16880#if USE_TAILCALLS
16881 MUSTTAIL return InterpNext(S, PC);
16882#else
16883 return true;
16884#endif
16885}
16886PRESERVE_NONE
16887static bool Interp_EQUint16(InterpState &S, CodePtr &PC) {
16888 if (!EQ<PT_Uint16>(S, PC)) return false;
16889#if USE_TAILCALLS
16890 MUSTTAIL return InterpNext(S, PC);
16891#else
16892 return true;
16893#endif
16894}
16895PRESERVE_NONE
16896static bool Interp_EQSint32(InterpState &S, CodePtr &PC) {
16897 if (!EQ<PT_Sint32>(S, PC)) return false;
16898#if USE_TAILCALLS
16899 MUSTTAIL return InterpNext(S, PC);
16900#else
16901 return true;
16902#endif
16903}
16904PRESERVE_NONE
16905static bool Interp_EQUint32(InterpState &S, CodePtr &PC) {
16906 if (!EQ<PT_Uint32>(S, PC)) return false;
16907#if USE_TAILCALLS
16908 MUSTTAIL return InterpNext(S, PC);
16909#else
16910 return true;
16911#endif
16912}
16913PRESERVE_NONE
16914static bool Interp_EQSint64(InterpState &S, CodePtr &PC) {
16915 if (!EQ<PT_Sint64>(S, PC)) return false;
16916#if USE_TAILCALLS
16917 MUSTTAIL return InterpNext(S, PC);
16918#else
16919 return true;
16920#endif
16921}
16922PRESERVE_NONE
16923static bool Interp_EQUint64(InterpState &S, CodePtr &PC) {
16924 if (!EQ<PT_Uint64>(S, PC)) return false;
16925#if USE_TAILCALLS
16926 MUSTTAIL return InterpNext(S, PC);
16927#else
16928 return true;
16929#endif
16930}
16931PRESERVE_NONE
16932static bool Interp_EQIntAP(InterpState &S, CodePtr &PC) {
16933 if (!EQ<PT_IntAP>(S, PC)) return false;
16934#if USE_TAILCALLS
16935 MUSTTAIL return InterpNext(S, PC);
16936#else
16937 return true;
16938#endif
16939}
16940PRESERVE_NONE
16941static bool Interp_EQIntAPS(InterpState &S, CodePtr &PC) {
16942 if (!EQ<PT_IntAPS>(S, PC)) return false;
16943#if USE_TAILCALLS
16944 MUSTTAIL return InterpNext(S, PC);
16945#else
16946 return true;
16947#endif
16948}
16949PRESERVE_NONE
16950static bool Interp_EQBool(InterpState &S, CodePtr &PC) {
16951 if (!EQ<PT_Bool>(S, PC)) return false;
16952#if USE_TAILCALLS
16953 MUSTTAIL return InterpNext(S, PC);
16954#else
16955 return true;
16956#endif
16957}
16958PRESERVE_NONE
16959static bool Interp_EQFixedPoint(InterpState &S, CodePtr &PC) {
16960 if (!EQ<PT_FixedPoint>(S, PC)) return false;
16961#if USE_TAILCALLS
16962 MUSTTAIL return InterpNext(S, PC);
16963#else
16964 return true;
16965#endif
16966}
16967PRESERVE_NONE
16968static bool Interp_EQPtr(InterpState &S, CodePtr &PC) {
16969 if (!EQ<PT_Ptr>(S, PC)) return false;
16970#if USE_TAILCALLS
16971 MUSTTAIL return InterpNext(S, PC);
16972#else
16973 return true;
16974#endif
16975}
16976PRESERVE_NONE
16977static bool Interp_EQMemberPtr(InterpState &S, CodePtr &PC) {
16978 if (!EQ<PT_MemberPtr>(S, PC)) return false;
16979#if USE_TAILCALLS
16980 MUSTTAIL return InterpNext(S, PC);
16981#else
16982 return true;
16983#endif
16984}
16985PRESERVE_NONE
16986static bool Interp_EQFloat(InterpState &S, CodePtr &PC) {
16987 if (!EQ<PT_Float>(S, PC)) return false;
16988#if USE_TAILCALLS
16989 MUSTTAIL return InterpNext(S, PC);
16990#else
16991 return true;
16992#endif
16993}
16994#endif
16995#ifdef GET_DISASM
16996case OP_EQSint8:
16997 Text.Op = PrintName("EQSint8");
16998 break;
16999case OP_EQUint8:
17000 Text.Op = PrintName("EQUint8");
17001 break;
17002case OP_EQSint16:
17003 Text.Op = PrintName("EQSint16");
17004 break;
17005case OP_EQUint16:
17006 Text.Op = PrintName("EQUint16");
17007 break;
17008case OP_EQSint32:
17009 Text.Op = PrintName("EQSint32");
17010 break;
17011case OP_EQUint32:
17012 Text.Op = PrintName("EQUint32");
17013 break;
17014case OP_EQSint64:
17015 Text.Op = PrintName("EQSint64");
17016 break;
17017case OP_EQUint64:
17018 Text.Op = PrintName("EQUint64");
17019 break;
17020case OP_EQIntAP:
17021 Text.Op = PrintName("EQIntAP");
17022 break;
17023case OP_EQIntAPS:
17024 Text.Op = PrintName("EQIntAPS");
17025 break;
17026case OP_EQBool:
17027 Text.Op = PrintName("EQBool");
17028 break;
17029case OP_EQFixedPoint:
17030 Text.Op = PrintName("EQFixedPoint");
17031 break;
17032case OP_EQPtr:
17033 Text.Op = PrintName("EQPtr");
17034 break;
17035case OP_EQMemberPtr:
17036 Text.Op = PrintName("EQMemberPtr");
17037 break;
17038case OP_EQFloat:
17039 Text.Op = PrintName("EQFloat");
17040 break;
17041#endif
17042#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17043bool emitEQSint8(SourceInfo);
17044bool emitEQUint8(SourceInfo);
17045bool emitEQSint16(SourceInfo);
17046bool emitEQUint16(SourceInfo);
17047bool emitEQSint32(SourceInfo);
17048bool emitEQUint32(SourceInfo);
17049bool emitEQSint64(SourceInfo);
17050bool emitEQUint64(SourceInfo);
17051bool emitEQIntAP(SourceInfo);
17052bool emitEQIntAPS(SourceInfo);
17053bool emitEQBool(SourceInfo);
17054bool emitEQFixedPoint(SourceInfo);
17055bool emitEQPtr(SourceInfo);
17056bool emitEQMemberPtr(SourceInfo);
17057bool emitEQFloat(SourceInfo);
17058#endif
17059#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17060[[nodiscard]] bool emitEQ(PrimType, SourceInfo I);
17061#endif
17062#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
17063bool
17064#if defined(GET_EVAL_IMPL)
17065EvalEmitter
17066#else
17067ByteCodeEmitter
17068#endif
17069::emitEQ(PrimType T0, SourceInfo I) {
17070 switch (T0) {
17071 case PT_Sint8:
17072 return emitEQSint8(I);
17073 case PT_Uint8:
17074 return emitEQUint8(I);
17075 case PT_Sint16:
17076 return emitEQSint16(I);
17077 case PT_Uint16:
17078 return emitEQUint16(I);
17079 case PT_Sint32:
17080 return emitEQSint32(I);
17081 case PT_Uint32:
17082 return emitEQUint32(I);
17083 case PT_Sint64:
17084 return emitEQSint64(I);
17085 case PT_Uint64:
17086 return emitEQUint64(I);
17087 case PT_IntAP:
17088 return emitEQIntAP(I);
17089 case PT_IntAPS:
17090 return emitEQIntAPS(I);
17091 case PT_Bool:
17092 return emitEQBool(I);
17093 case PT_FixedPoint:
17094 return emitEQFixedPoint(I);
17095 case PT_Ptr:
17096 return emitEQPtr(I);
17097 case PT_MemberPtr:
17098 return emitEQMemberPtr(I);
17099 case PT_Float:
17100 return emitEQFloat(I);
17101 }
17102 llvm_unreachable("invalid enum value");
17103}
17104#endif
17105#ifdef GET_LINK_IMPL
17106bool ByteCodeEmitter::emitEQSint8(SourceInfo L) {
17107 return emitOp<>(OP_EQSint8, L);
17108}
17109bool ByteCodeEmitter::emitEQUint8(SourceInfo L) {
17110 return emitOp<>(OP_EQUint8, L);
17111}
17112bool ByteCodeEmitter::emitEQSint16(SourceInfo L) {
17113 return emitOp<>(OP_EQSint16, L);
17114}
17115bool ByteCodeEmitter::emitEQUint16(SourceInfo L) {
17116 return emitOp<>(OP_EQUint16, L);
17117}
17118bool ByteCodeEmitter::emitEQSint32(SourceInfo L) {
17119 return emitOp<>(OP_EQSint32, L);
17120}
17121bool ByteCodeEmitter::emitEQUint32(SourceInfo L) {
17122 return emitOp<>(OP_EQUint32, L);
17123}
17124bool ByteCodeEmitter::emitEQSint64(SourceInfo L) {
17125 return emitOp<>(OP_EQSint64, L);
17126}
17127bool ByteCodeEmitter::emitEQUint64(SourceInfo L) {
17128 return emitOp<>(OP_EQUint64, L);
17129}
17130bool ByteCodeEmitter::emitEQIntAP(SourceInfo L) {
17131 return emitOp<>(OP_EQIntAP, L);
17132}
17133bool ByteCodeEmitter::emitEQIntAPS(SourceInfo L) {
17134 return emitOp<>(OP_EQIntAPS, L);
17135}
17136bool ByteCodeEmitter::emitEQBool(SourceInfo L) {
17137 return emitOp<>(OP_EQBool, L);
17138}
17139bool ByteCodeEmitter::emitEQFixedPoint(SourceInfo L) {
17140 return emitOp<>(OP_EQFixedPoint, L);
17141}
17142bool ByteCodeEmitter::emitEQPtr(SourceInfo L) {
17143 return emitOp<>(OP_EQPtr, L);
17144}
17145bool ByteCodeEmitter::emitEQMemberPtr(SourceInfo L) {
17146 return emitOp<>(OP_EQMemberPtr, L);
17147}
17148bool ByteCodeEmitter::emitEQFloat(SourceInfo L) {
17149 return emitOp<>(OP_EQFloat, L);
17150}
17151#endif
17152#ifdef GET_EVAL_IMPL
17153bool EvalEmitter::emitEQSint8(SourceInfo L) {
17154 if (!isActive()) return true;
17155 CurrentSource = L;
17156 return EQ<PT_Sint8>(S, OpPC);
17157}
17158bool EvalEmitter::emitEQUint8(SourceInfo L) {
17159 if (!isActive()) return true;
17160 CurrentSource = L;
17161 return EQ<PT_Uint8>(S, OpPC);
17162}
17163bool EvalEmitter::emitEQSint16(SourceInfo L) {
17164 if (!isActive()) return true;
17165 CurrentSource = L;
17166 return EQ<PT_Sint16>(S, OpPC);
17167}
17168bool EvalEmitter::emitEQUint16(SourceInfo L) {
17169 if (!isActive()) return true;
17170 CurrentSource = L;
17171 return EQ<PT_Uint16>(S, OpPC);
17172}
17173bool EvalEmitter::emitEQSint32(SourceInfo L) {
17174 if (!isActive()) return true;
17175 CurrentSource = L;
17176 return EQ<PT_Sint32>(S, OpPC);
17177}
17178bool EvalEmitter::emitEQUint32(SourceInfo L) {
17179 if (!isActive()) return true;
17180 CurrentSource = L;
17181 return EQ<PT_Uint32>(S, OpPC);
17182}
17183bool EvalEmitter::emitEQSint64(SourceInfo L) {
17184 if (!isActive()) return true;
17185 CurrentSource = L;
17186 return EQ<PT_Sint64>(S, OpPC);
17187}
17188bool EvalEmitter::emitEQUint64(SourceInfo L) {
17189 if (!isActive()) return true;
17190 CurrentSource = L;
17191 return EQ<PT_Uint64>(S, OpPC);
17192}
17193bool EvalEmitter::emitEQIntAP(SourceInfo L) {
17194 if (!isActive()) return true;
17195 CurrentSource = L;
17196 return EQ<PT_IntAP>(S, OpPC);
17197}
17198bool EvalEmitter::emitEQIntAPS(SourceInfo L) {
17199 if (!isActive()) return true;
17200 CurrentSource = L;
17201 return EQ<PT_IntAPS>(S, OpPC);
17202}
17203bool EvalEmitter::emitEQBool(SourceInfo L) {
17204 if (!isActive()) return true;
17205 CurrentSource = L;
17206 return EQ<PT_Bool>(S, OpPC);
17207}
17208bool EvalEmitter::emitEQFixedPoint(SourceInfo L) {
17209 if (!isActive()) return true;
17210 CurrentSource = L;
17211 return EQ<PT_FixedPoint>(S, OpPC);
17212}
17213bool EvalEmitter::emitEQPtr(SourceInfo L) {
17214 if (!isActive()) return true;
17215 CurrentSource = L;
17216 return EQ<PT_Ptr>(S, OpPC);
17217}
17218bool EvalEmitter::emitEQMemberPtr(SourceInfo L) {
17219 if (!isActive()) return true;
17220 CurrentSource = L;
17221 return EQ<PT_MemberPtr>(S, OpPC);
17222}
17223bool EvalEmitter::emitEQFloat(SourceInfo L) {
17224 if (!isActive()) return true;
17225 CurrentSource = L;
17226 return EQ<PT_Float>(S, OpPC);
17227}
17228#endif
17229#ifdef GET_OPCODE_NAMES
17230OP_EnableLocal,
17231#endif
17232#ifdef GET_INTERPFN_LIST
17233&Interp_EnableLocal,
17234#endif
17235#ifdef GET_INTERPFN_DISPATCHERS
17236PRESERVE_NONE
17237static bool Interp_EnableLocal(InterpState &S, CodePtr &PC) {
17238 {
17239 CodePtr OpPC = PC;
17240 const auto V0 = ReadArg<uint32_t>(S, PC);
17241 if (!EnableLocal(S, OpPC, V0)) return false;
17242 }
17243#if USE_TAILCALLS
17244 MUSTTAIL return InterpNext(S, PC);
17245#else
17246 return true;
17247#endif
17248}
17249#endif
17250#ifdef GET_DISASM
17251case OP_EnableLocal:
17252 Text.Op = PrintName("EnableLocal");
17253 Text.Args.push_back(printArg<uint32_t>(P, PC));
17254 break;
17255#endif
17256#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17257bool emitEnableLocal( uint32_t , SourceInfo);
17258#endif
17259#ifdef GET_LINK_IMPL
17260bool ByteCodeEmitter::emitEnableLocal( uint32_t A0, SourceInfo L) {
17261 return emitOp<uint32_t>(OP_EnableLocal, A0, L);
17262}
17263#endif
17264#ifdef GET_OPCODE_NAMES
17265OP_EndInit,
17266#endif
17267#ifdef GET_INTERPFN_LIST
17268&Interp_EndInit,
17269#endif
17270#ifdef GET_INTERPFN_DISPATCHERS
17271PRESERVE_NONE
17272static bool Interp_EndInit(InterpState &S, CodePtr &PC) {
17273 EndInit(S, PC);
17274#if USE_TAILCALLS
17275 MUSTTAIL return InterpNext(S, PC);
17276#else
17277 return true;
17278#endif
17279}
17280#endif
17281#ifdef GET_DISASM
17282case OP_EndInit:
17283 Text.Op = PrintName("EndInit");
17284 break;
17285#endif
17286#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17287bool emitEndInit(SourceInfo);
17288#endif
17289#ifdef GET_LINK_IMPL
17290bool ByteCodeEmitter::emitEndInit(SourceInfo L) {
17291 return emitOp<>(OP_EndInit, L);
17292}
17293#endif
17294#ifdef GET_EVAL_IMPL
17295bool EvalEmitter::emitEndInit(SourceInfo L) {
17296 if (!isActive()) return true;
17297 CurrentSource = L;
17298 return EndInit(S, OpPC);
17299}
17300#endif
17301#ifdef GET_OPCODE_NAMES
17302OP_EndLifetime,
17303#endif
17304#ifdef GET_INTERPFN_LIST
17305&Interp_EndLifetime,
17306#endif
17307#ifdef GET_INTERPFN_DISPATCHERS
17308PRESERVE_NONE
17309static bool Interp_EndLifetime(InterpState &S, CodePtr &PC) {
17310 if (!EndLifetime(S, PC)) return false;
17311#if USE_TAILCALLS
17312 MUSTTAIL return InterpNext(S, PC);
17313#else
17314 return true;
17315#endif
17316}
17317#endif
17318#ifdef GET_DISASM
17319case OP_EndLifetime:
17320 Text.Op = PrintName("EndLifetime");
17321 break;
17322#endif
17323#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17324bool emitEndLifetime(SourceInfo);
17325#endif
17326#ifdef GET_LINK_IMPL
17327bool ByteCodeEmitter::emitEndLifetime(SourceInfo L) {
17328 return emitOp<>(OP_EndLifetime, L);
17329}
17330#endif
17331#ifdef GET_EVAL_IMPL
17332bool EvalEmitter::emitEndLifetime(SourceInfo L) {
17333 if (!isActive()) return true;
17334 CurrentSource = L;
17335 return EndLifetime(S, OpPC);
17336}
17337#endif
17338#ifdef GET_OPCODE_NAMES
17339OP_EndLifetimePop,
17340#endif
17341#ifdef GET_INTERPFN_LIST
17342&Interp_EndLifetimePop,
17343#endif
17344#ifdef GET_INTERPFN_DISPATCHERS
17345PRESERVE_NONE
17346static bool Interp_EndLifetimePop(InterpState &S, CodePtr &PC) {
17347 if (!EndLifetimePop(S, PC)) return false;
17348#if USE_TAILCALLS
17349 MUSTTAIL return InterpNext(S, PC);
17350#else
17351 return true;
17352#endif
17353}
17354#endif
17355#ifdef GET_DISASM
17356case OP_EndLifetimePop:
17357 Text.Op = PrintName("EndLifetimePop");
17358 break;
17359#endif
17360#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17361bool emitEndLifetimePop(SourceInfo);
17362#endif
17363#ifdef GET_LINK_IMPL
17364bool ByteCodeEmitter::emitEndLifetimePop(SourceInfo L) {
17365 return emitOp<>(OP_EndLifetimePop, L);
17366}
17367#endif
17368#ifdef GET_EVAL_IMPL
17369bool EvalEmitter::emitEndLifetimePop(SourceInfo L) {
17370 if (!isActive()) return true;
17371 CurrentSource = L;
17372 return EndLifetimePop(S, OpPC);
17373}
17374#endif
17375#ifdef GET_OPCODE_NAMES
17376OP_EndSpeculation,
17377#endif
17378#ifdef GET_INTERPFN_LIST
17379&Interp_EndSpeculation,
17380#endif
17381#ifdef GET_INTERPFN_DISPATCHERS
17382PRESERVE_NONE
17383static bool Interp_EndSpeculation(InterpState &S, CodePtr &PC) {
17384 MUSTTAIL return EndSpeculation(S, PC);
17385}
17386#endif
17387#ifdef GET_DISASM
17388case OP_EndSpeculation:
17389 Text.Op = PrintName("EndSpeculation");
17390 break;
17391#endif
17392#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17393bool emitEndSpeculation(SourceInfo);
17394#endif
17395#ifdef GET_LINK_IMPL
17396bool ByteCodeEmitter::emitEndSpeculation(SourceInfo L) {
17397 return emitOp<>(OP_EndSpeculation, L);
17398}
17399#endif
17400#ifdef GET_EVAL_IMPL
17401bool EvalEmitter::emitEndSpeculation(SourceInfo L) {
17402 if (!isActive()) return true;
17403 CurrentSource = L;
17404 return EndSpeculation(S, OpPC);
17405}
17406#endif
17407#ifdef GET_OPCODE_NAMES
17408OP_Error,
17409#endif
17410#ifdef GET_INTERPFN_LIST
17411&Interp_Error,
17412#endif
17413#ifdef GET_INTERPFN_DISPATCHERS
17414PRESERVE_NONE
17415static bool Interp_Error(InterpState &S, CodePtr &PC) {
17416 if (!Error(S, PC)) return false;
17417#if USE_TAILCALLS
17418 MUSTTAIL return InterpNext(S, PC);
17419#else
17420 return true;
17421#endif
17422}
17423#endif
17424#ifdef GET_DISASM
17425case OP_Error:
17426 Text.Op = PrintName("Error");
17427 break;
17428#endif
17429#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17430bool emitError(SourceInfo);
17431#endif
17432#ifdef GET_LINK_IMPL
17433bool ByteCodeEmitter::emitError(SourceInfo L) {
17434 return emitOp<>(OP_Error, L);
17435}
17436#endif
17437#ifdef GET_EVAL_IMPL
17438bool EvalEmitter::emitError(SourceInfo L) {
17439 if (!isActive()) return true;
17440 CurrentSource = L;
17441 return Error(S, OpPC);
17442}
17443#endif
17444#ifdef GET_OPCODE_NAMES
17445OP_ExpandPtr,
17446#endif
17447#ifdef GET_INTERPFN_LIST
17448&Interp_ExpandPtr,
17449#endif
17450#ifdef GET_INTERPFN_DISPATCHERS
17451PRESERVE_NONE
17452static bool Interp_ExpandPtr(InterpState &S, CodePtr &PC) {
17453 ExpandPtr(S, PC);
17454#if USE_TAILCALLS
17455 MUSTTAIL return InterpNext(S, PC);
17456#else
17457 return true;
17458#endif
17459}
17460#endif
17461#ifdef GET_DISASM
17462case OP_ExpandPtr:
17463 Text.Op = PrintName("ExpandPtr");
17464 break;
17465#endif
17466#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17467bool emitExpandPtr(SourceInfo);
17468#endif
17469#ifdef GET_LINK_IMPL
17470bool ByteCodeEmitter::emitExpandPtr(SourceInfo L) {
17471 return emitOp<>(OP_ExpandPtr, L);
17472}
17473#endif
17474#ifdef GET_EVAL_IMPL
17475bool EvalEmitter::emitExpandPtr(SourceInfo L) {
17476 if (!isActive()) return true;
17477 CurrentSource = L;
17478 return ExpandPtr(S, OpPC);
17479}
17480#endif
17481#ifdef GET_OPCODE_NAMES
17482OP_FinishInit,
17483#endif
17484#ifdef GET_INTERPFN_LIST
17485&Interp_FinishInit,
17486#endif
17487#ifdef GET_INTERPFN_DISPATCHERS
17488PRESERVE_NONE
17489static bool Interp_FinishInit(InterpState &S, CodePtr &PC) {
17490 FinishInit(S, PC);
17491#if USE_TAILCALLS
17492 MUSTTAIL return InterpNext(S, PC);
17493#else
17494 return true;
17495#endif
17496}
17497#endif
17498#ifdef GET_DISASM
17499case OP_FinishInit:
17500 Text.Op = PrintName("FinishInit");
17501 break;
17502#endif
17503#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17504bool emitFinishInit(SourceInfo);
17505#endif
17506#ifdef GET_LINK_IMPL
17507bool ByteCodeEmitter::emitFinishInit(SourceInfo L) {
17508 return emitOp<>(OP_FinishInit, L);
17509}
17510#endif
17511#ifdef GET_EVAL_IMPL
17512bool EvalEmitter::emitFinishInit(SourceInfo L) {
17513 if (!isActive()) return true;
17514 CurrentSource = L;
17515 return FinishInit(S, OpPC);
17516}
17517#endif
17518#ifdef GET_OPCODE_NAMES
17519OP_FinishInitActivate,
17520#endif
17521#ifdef GET_INTERPFN_LIST
17522&Interp_FinishInitActivate,
17523#endif
17524#ifdef GET_INTERPFN_DISPATCHERS
17525PRESERVE_NONE
17526static bool Interp_FinishInitActivate(InterpState &S, CodePtr &PC) {
17527 FinishInitActivate(S, PC);
17528#if USE_TAILCALLS
17529 MUSTTAIL return InterpNext(S, PC);
17530#else
17531 return true;
17532#endif
17533}
17534#endif
17535#ifdef GET_DISASM
17536case OP_FinishInitActivate:
17537 Text.Op = PrintName("FinishInitActivate");
17538 break;
17539#endif
17540#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17541bool emitFinishInitActivate(SourceInfo);
17542#endif
17543#ifdef GET_LINK_IMPL
17544bool ByteCodeEmitter::emitFinishInitActivate(SourceInfo L) {
17545 return emitOp<>(OP_FinishInitActivate, L);
17546}
17547#endif
17548#ifdef GET_EVAL_IMPL
17549bool EvalEmitter::emitFinishInitActivate(SourceInfo L) {
17550 if (!isActive()) return true;
17551 CurrentSource = L;
17552 return FinishInitActivate(S, OpPC);
17553}
17554#endif
17555#ifdef GET_OPCODE_NAMES
17556OP_FinishInitActivatePop,
17557#endif
17558#ifdef GET_INTERPFN_LIST
17559&Interp_FinishInitActivatePop,
17560#endif
17561#ifdef GET_INTERPFN_DISPATCHERS
17562PRESERVE_NONE
17563static bool Interp_FinishInitActivatePop(InterpState &S, CodePtr &PC) {
17564 FinishInitActivatePop(S, PC);
17565#if USE_TAILCALLS
17566 MUSTTAIL return InterpNext(S, PC);
17567#else
17568 return true;
17569#endif
17570}
17571#endif
17572#ifdef GET_DISASM
17573case OP_FinishInitActivatePop:
17574 Text.Op = PrintName("FinishInitActivatePop");
17575 break;
17576#endif
17577#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17578bool emitFinishInitActivatePop(SourceInfo);
17579#endif
17580#ifdef GET_LINK_IMPL
17581bool ByteCodeEmitter::emitFinishInitActivatePop(SourceInfo L) {
17582 return emitOp<>(OP_FinishInitActivatePop, L);
17583}
17584#endif
17585#ifdef GET_EVAL_IMPL
17586bool EvalEmitter::emitFinishInitActivatePop(SourceInfo L) {
17587 if (!isActive()) return true;
17588 CurrentSource = L;
17589 return FinishInitActivatePop(S, OpPC);
17590}
17591#endif
17592#ifdef GET_OPCODE_NAMES
17593OP_FinishInitGlobal,
17594#endif
17595#ifdef GET_INTERPFN_LIST
17596&Interp_FinishInitGlobal,
17597#endif
17598#ifdef GET_INTERPFN_DISPATCHERS
17599PRESERVE_NONE
17600static bool Interp_FinishInitGlobal(InterpState &S, CodePtr &PC) {
17601 FinishInitGlobal(S, PC);
17602#if USE_TAILCALLS
17603 MUSTTAIL return InterpNext(S, PC);
17604#else
17605 return true;
17606#endif
17607}
17608#endif
17609#ifdef GET_DISASM
17610case OP_FinishInitGlobal:
17611 Text.Op = PrintName("FinishInitGlobal");
17612 break;
17613#endif
17614#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17615bool emitFinishInitGlobal(SourceInfo);
17616#endif
17617#ifdef GET_LINK_IMPL
17618bool ByteCodeEmitter::emitFinishInitGlobal(SourceInfo L) {
17619 return emitOp<>(OP_FinishInitGlobal, L);
17620}
17621#endif
17622#ifdef GET_EVAL_IMPL
17623bool EvalEmitter::emitFinishInitGlobal(SourceInfo L) {
17624 if (!isActive()) return true;
17625 CurrentSource = L;
17626 return FinishInitGlobal(S, OpPC);
17627}
17628#endif
17629#ifdef GET_OPCODE_NAMES
17630OP_FinishInitPop,
17631#endif
17632#ifdef GET_INTERPFN_LIST
17633&Interp_FinishInitPop,
17634#endif
17635#ifdef GET_INTERPFN_DISPATCHERS
17636PRESERVE_NONE
17637static bool Interp_FinishInitPop(InterpState &S, CodePtr &PC) {
17638 FinishInitPop(S, PC);
17639#if USE_TAILCALLS
17640 MUSTTAIL return InterpNext(S, PC);
17641#else
17642 return true;
17643#endif
17644}
17645#endif
17646#ifdef GET_DISASM
17647case OP_FinishInitPop:
17648 Text.Op = PrintName("FinishInitPop");
17649 break;
17650#endif
17651#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17652bool emitFinishInitPop(SourceInfo);
17653#endif
17654#ifdef GET_LINK_IMPL
17655bool ByteCodeEmitter::emitFinishInitPop(SourceInfo L) {
17656 return emitOp<>(OP_FinishInitPop, L);
17657}
17658#endif
17659#ifdef GET_EVAL_IMPL
17660bool EvalEmitter::emitFinishInitPop(SourceInfo L) {
17661 if (!isActive()) return true;
17662 CurrentSource = L;
17663 return FinishInitPop(S, OpPC);
17664}
17665#endif
17666#ifdef GET_OPCODE_NAMES
17667OP_FlipSint8Sint8,
17668OP_FlipSint8Uint8,
17669OP_FlipSint8Sint16,
17670OP_FlipSint8Uint16,
17671OP_FlipSint8Sint32,
17672OP_FlipSint8Uint32,
17673OP_FlipSint8Sint64,
17674OP_FlipSint8Uint64,
17675OP_FlipSint8IntAP,
17676OP_FlipSint8IntAPS,
17677OP_FlipSint8Bool,
17678OP_FlipSint8FixedPoint,
17679OP_FlipSint8Ptr,
17680OP_FlipSint8MemberPtr,
17681OP_FlipSint8Float,
17682OP_FlipUint8Sint8,
17683OP_FlipUint8Uint8,
17684OP_FlipUint8Sint16,
17685OP_FlipUint8Uint16,
17686OP_FlipUint8Sint32,
17687OP_FlipUint8Uint32,
17688OP_FlipUint8Sint64,
17689OP_FlipUint8Uint64,
17690OP_FlipUint8IntAP,
17691OP_FlipUint8IntAPS,
17692OP_FlipUint8Bool,
17693OP_FlipUint8FixedPoint,
17694OP_FlipUint8Ptr,
17695OP_FlipUint8MemberPtr,
17696OP_FlipUint8Float,
17697OP_FlipSint16Sint8,
17698OP_FlipSint16Uint8,
17699OP_FlipSint16Sint16,
17700OP_FlipSint16Uint16,
17701OP_FlipSint16Sint32,
17702OP_FlipSint16Uint32,
17703OP_FlipSint16Sint64,
17704OP_FlipSint16Uint64,
17705OP_FlipSint16IntAP,
17706OP_FlipSint16IntAPS,
17707OP_FlipSint16Bool,
17708OP_FlipSint16FixedPoint,
17709OP_FlipSint16Ptr,
17710OP_FlipSint16MemberPtr,
17711OP_FlipSint16Float,
17712OP_FlipUint16Sint8,
17713OP_FlipUint16Uint8,
17714OP_FlipUint16Sint16,
17715OP_FlipUint16Uint16,
17716OP_FlipUint16Sint32,
17717OP_FlipUint16Uint32,
17718OP_FlipUint16Sint64,
17719OP_FlipUint16Uint64,
17720OP_FlipUint16IntAP,
17721OP_FlipUint16IntAPS,
17722OP_FlipUint16Bool,
17723OP_FlipUint16FixedPoint,
17724OP_FlipUint16Ptr,
17725OP_FlipUint16MemberPtr,
17726OP_FlipUint16Float,
17727OP_FlipSint32Sint8,
17728OP_FlipSint32Uint8,
17729OP_FlipSint32Sint16,
17730OP_FlipSint32Uint16,
17731OP_FlipSint32Sint32,
17732OP_FlipSint32Uint32,
17733OP_FlipSint32Sint64,
17734OP_FlipSint32Uint64,
17735OP_FlipSint32IntAP,
17736OP_FlipSint32IntAPS,
17737OP_FlipSint32Bool,
17738OP_FlipSint32FixedPoint,
17739OP_FlipSint32Ptr,
17740OP_FlipSint32MemberPtr,
17741OP_FlipSint32Float,
17742OP_FlipUint32Sint8,
17743OP_FlipUint32Uint8,
17744OP_FlipUint32Sint16,
17745OP_FlipUint32Uint16,
17746OP_FlipUint32Sint32,
17747OP_FlipUint32Uint32,
17748OP_FlipUint32Sint64,
17749OP_FlipUint32Uint64,
17750OP_FlipUint32IntAP,
17751OP_FlipUint32IntAPS,
17752OP_FlipUint32Bool,
17753OP_FlipUint32FixedPoint,
17754OP_FlipUint32Ptr,
17755OP_FlipUint32MemberPtr,
17756OP_FlipUint32Float,
17757OP_FlipSint64Sint8,
17758OP_FlipSint64Uint8,
17759OP_FlipSint64Sint16,
17760OP_FlipSint64Uint16,
17761OP_FlipSint64Sint32,
17762OP_FlipSint64Uint32,
17763OP_FlipSint64Sint64,
17764OP_FlipSint64Uint64,
17765OP_FlipSint64IntAP,
17766OP_FlipSint64IntAPS,
17767OP_FlipSint64Bool,
17768OP_FlipSint64FixedPoint,
17769OP_FlipSint64Ptr,
17770OP_FlipSint64MemberPtr,
17771OP_FlipSint64Float,
17772OP_FlipUint64Sint8,
17773OP_FlipUint64Uint8,
17774OP_FlipUint64Sint16,
17775OP_FlipUint64Uint16,
17776OP_FlipUint64Sint32,
17777OP_FlipUint64Uint32,
17778OP_FlipUint64Sint64,
17779OP_FlipUint64Uint64,
17780OP_FlipUint64IntAP,
17781OP_FlipUint64IntAPS,
17782OP_FlipUint64Bool,
17783OP_FlipUint64FixedPoint,
17784OP_FlipUint64Ptr,
17785OP_FlipUint64MemberPtr,
17786OP_FlipUint64Float,
17787OP_FlipIntAPSint8,
17788OP_FlipIntAPUint8,
17789OP_FlipIntAPSint16,
17790OP_FlipIntAPUint16,
17791OP_FlipIntAPSint32,
17792OP_FlipIntAPUint32,
17793OP_FlipIntAPSint64,
17794OP_FlipIntAPUint64,
17795OP_FlipIntAPIntAP,
17796OP_FlipIntAPIntAPS,
17797OP_FlipIntAPBool,
17798OP_FlipIntAPFixedPoint,
17799OP_FlipIntAPPtr,
17800OP_FlipIntAPMemberPtr,
17801OP_FlipIntAPFloat,
17802OP_FlipIntAPSSint8,
17803OP_FlipIntAPSUint8,
17804OP_FlipIntAPSSint16,
17805OP_FlipIntAPSUint16,
17806OP_FlipIntAPSSint32,
17807OP_FlipIntAPSUint32,
17808OP_FlipIntAPSSint64,
17809OP_FlipIntAPSUint64,
17810OP_FlipIntAPSIntAP,
17811OP_FlipIntAPSIntAPS,
17812OP_FlipIntAPSBool,
17813OP_FlipIntAPSFixedPoint,
17814OP_FlipIntAPSPtr,
17815OP_FlipIntAPSMemberPtr,
17816OP_FlipIntAPSFloat,
17817OP_FlipBoolSint8,
17818OP_FlipBoolUint8,
17819OP_FlipBoolSint16,
17820OP_FlipBoolUint16,
17821OP_FlipBoolSint32,
17822OP_FlipBoolUint32,
17823OP_FlipBoolSint64,
17824OP_FlipBoolUint64,
17825OP_FlipBoolIntAP,
17826OP_FlipBoolIntAPS,
17827OP_FlipBoolBool,
17828OP_FlipBoolFixedPoint,
17829OP_FlipBoolPtr,
17830OP_FlipBoolMemberPtr,
17831OP_FlipBoolFloat,
17832OP_FlipFixedPointSint8,
17833OP_FlipFixedPointUint8,
17834OP_FlipFixedPointSint16,
17835OP_FlipFixedPointUint16,
17836OP_FlipFixedPointSint32,
17837OP_FlipFixedPointUint32,
17838OP_FlipFixedPointSint64,
17839OP_FlipFixedPointUint64,
17840OP_FlipFixedPointIntAP,
17841OP_FlipFixedPointIntAPS,
17842OP_FlipFixedPointBool,
17843OP_FlipFixedPointFixedPoint,
17844OP_FlipFixedPointPtr,
17845OP_FlipFixedPointMemberPtr,
17846OP_FlipFixedPointFloat,
17847OP_FlipPtrSint8,
17848OP_FlipPtrUint8,
17849OP_FlipPtrSint16,
17850OP_FlipPtrUint16,
17851OP_FlipPtrSint32,
17852OP_FlipPtrUint32,
17853OP_FlipPtrSint64,
17854OP_FlipPtrUint64,
17855OP_FlipPtrIntAP,
17856OP_FlipPtrIntAPS,
17857OP_FlipPtrBool,
17858OP_FlipPtrFixedPoint,
17859OP_FlipPtrPtr,
17860OP_FlipPtrMemberPtr,
17861OP_FlipPtrFloat,
17862OP_FlipMemberPtrSint8,
17863OP_FlipMemberPtrUint8,
17864OP_FlipMemberPtrSint16,
17865OP_FlipMemberPtrUint16,
17866OP_FlipMemberPtrSint32,
17867OP_FlipMemberPtrUint32,
17868OP_FlipMemberPtrSint64,
17869OP_FlipMemberPtrUint64,
17870OP_FlipMemberPtrIntAP,
17871OP_FlipMemberPtrIntAPS,
17872OP_FlipMemberPtrBool,
17873OP_FlipMemberPtrFixedPoint,
17874OP_FlipMemberPtrPtr,
17875OP_FlipMemberPtrMemberPtr,
17876OP_FlipMemberPtrFloat,
17877OP_FlipFloatSint8,
17878OP_FlipFloatUint8,
17879OP_FlipFloatSint16,
17880OP_FlipFloatUint16,
17881OP_FlipFloatSint32,
17882OP_FlipFloatUint32,
17883OP_FlipFloatSint64,
17884OP_FlipFloatUint64,
17885OP_FlipFloatIntAP,
17886OP_FlipFloatIntAPS,
17887OP_FlipFloatBool,
17888OP_FlipFloatFixedPoint,
17889OP_FlipFloatPtr,
17890OP_FlipFloatMemberPtr,
17891OP_FlipFloatFloat,
17892#endif
17893#ifdef GET_INTERPFN_LIST
17894&Interp_FlipSint8Sint8,
17895&Interp_FlipSint8Uint8,
17896&Interp_FlipSint8Sint16,
17897&Interp_FlipSint8Uint16,
17898&Interp_FlipSint8Sint32,
17899&Interp_FlipSint8Uint32,
17900&Interp_FlipSint8Sint64,
17901&Interp_FlipSint8Uint64,
17902&Interp_FlipSint8IntAP,
17903&Interp_FlipSint8IntAPS,
17904&Interp_FlipSint8Bool,
17905&Interp_FlipSint8FixedPoint,
17906&Interp_FlipSint8Ptr,
17907&Interp_FlipSint8MemberPtr,
17908&Interp_FlipSint8Float,
17909&Interp_FlipUint8Sint8,
17910&Interp_FlipUint8Uint8,
17911&Interp_FlipUint8Sint16,
17912&Interp_FlipUint8Uint16,
17913&Interp_FlipUint8Sint32,
17914&Interp_FlipUint8Uint32,
17915&Interp_FlipUint8Sint64,
17916&Interp_FlipUint8Uint64,
17917&Interp_FlipUint8IntAP,
17918&Interp_FlipUint8IntAPS,
17919&Interp_FlipUint8Bool,
17920&Interp_FlipUint8FixedPoint,
17921&Interp_FlipUint8Ptr,
17922&Interp_FlipUint8MemberPtr,
17923&Interp_FlipUint8Float,
17924&Interp_FlipSint16Sint8,
17925&Interp_FlipSint16Uint8,
17926&Interp_FlipSint16Sint16,
17927&Interp_FlipSint16Uint16,
17928&Interp_FlipSint16Sint32,
17929&Interp_FlipSint16Uint32,
17930&Interp_FlipSint16Sint64,
17931&Interp_FlipSint16Uint64,
17932&Interp_FlipSint16IntAP,
17933&Interp_FlipSint16IntAPS,
17934&Interp_FlipSint16Bool,
17935&Interp_FlipSint16FixedPoint,
17936&Interp_FlipSint16Ptr,
17937&Interp_FlipSint16MemberPtr,
17938&Interp_FlipSint16Float,
17939&Interp_FlipUint16Sint8,
17940&Interp_FlipUint16Uint8,
17941&Interp_FlipUint16Sint16,
17942&Interp_FlipUint16Uint16,
17943&Interp_FlipUint16Sint32,
17944&Interp_FlipUint16Uint32,
17945&Interp_FlipUint16Sint64,
17946&Interp_FlipUint16Uint64,
17947&Interp_FlipUint16IntAP,
17948&Interp_FlipUint16IntAPS,
17949&Interp_FlipUint16Bool,
17950&Interp_FlipUint16FixedPoint,
17951&Interp_FlipUint16Ptr,
17952&Interp_FlipUint16MemberPtr,
17953&Interp_FlipUint16Float,
17954&Interp_FlipSint32Sint8,
17955&Interp_FlipSint32Uint8,
17956&Interp_FlipSint32Sint16,
17957&Interp_FlipSint32Uint16,
17958&Interp_FlipSint32Sint32,
17959&Interp_FlipSint32Uint32,
17960&Interp_FlipSint32Sint64,
17961&Interp_FlipSint32Uint64,
17962&Interp_FlipSint32IntAP,
17963&Interp_FlipSint32IntAPS,
17964&Interp_FlipSint32Bool,
17965&Interp_FlipSint32FixedPoint,
17966&Interp_FlipSint32Ptr,
17967&Interp_FlipSint32MemberPtr,
17968&Interp_FlipSint32Float,
17969&Interp_FlipUint32Sint8,
17970&Interp_FlipUint32Uint8,
17971&Interp_FlipUint32Sint16,
17972&Interp_FlipUint32Uint16,
17973&Interp_FlipUint32Sint32,
17974&Interp_FlipUint32Uint32,
17975&Interp_FlipUint32Sint64,
17976&Interp_FlipUint32Uint64,
17977&Interp_FlipUint32IntAP,
17978&Interp_FlipUint32IntAPS,
17979&Interp_FlipUint32Bool,
17980&Interp_FlipUint32FixedPoint,
17981&Interp_FlipUint32Ptr,
17982&Interp_FlipUint32MemberPtr,
17983&Interp_FlipUint32Float,
17984&Interp_FlipSint64Sint8,
17985&Interp_FlipSint64Uint8,
17986&Interp_FlipSint64Sint16,
17987&Interp_FlipSint64Uint16,
17988&Interp_FlipSint64Sint32,
17989&Interp_FlipSint64Uint32,
17990&Interp_FlipSint64Sint64,
17991&Interp_FlipSint64Uint64,
17992&Interp_FlipSint64IntAP,
17993&Interp_FlipSint64IntAPS,
17994&Interp_FlipSint64Bool,
17995&Interp_FlipSint64FixedPoint,
17996&Interp_FlipSint64Ptr,
17997&Interp_FlipSint64MemberPtr,
17998&Interp_FlipSint64Float,
17999&Interp_FlipUint64Sint8,
18000&Interp_FlipUint64Uint8,
18001&Interp_FlipUint64Sint16,
18002&Interp_FlipUint64Uint16,
18003&Interp_FlipUint64Sint32,
18004&Interp_FlipUint64Uint32,
18005&Interp_FlipUint64Sint64,
18006&Interp_FlipUint64Uint64,
18007&Interp_FlipUint64IntAP,
18008&Interp_FlipUint64IntAPS,
18009&Interp_FlipUint64Bool,
18010&Interp_FlipUint64FixedPoint,
18011&Interp_FlipUint64Ptr,
18012&Interp_FlipUint64MemberPtr,
18013&Interp_FlipUint64Float,
18014&Interp_FlipIntAPSint8,
18015&Interp_FlipIntAPUint8,
18016&Interp_FlipIntAPSint16,
18017&Interp_FlipIntAPUint16,
18018&Interp_FlipIntAPSint32,
18019&Interp_FlipIntAPUint32,
18020&Interp_FlipIntAPSint64,
18021&Interp_FlipIntAPUint64,
18022&Interp_FlipIntAPIntAP,
18023&Interp_FlipIntAPIntAPS,
18024&Interp_FlipIntAPBool,
18025&Interp_FlipIntAPFixedPoint,
18026&Interp_FlipIntAPPtr,
18027&Interp_FlipIntAPMemberPtr,
18028&Interp_FlipIntAPFloat,
18029&Interp_FlipIntAPSSint8,
18030&Interp_FlipIntAPSUint8,
18031&Interp_FlipIntAPSSint16,
18032&Interp_FlipIntAPSUint16,
18033&Interp_FlipIntAPSSint32,
18034&Interp_FlipIntAPSUint32,
18035&Interp_FlipIntAPSSint64,
18036&Interp_FlipIntAPSUint64,
18037&Interp_FlipIntAPSIntAP,
18038&Interp_FlipIntAPSIntAPS,
18039&Interp_FlipIntAPSBool,
18040&Interp_FlipIntAPSFixedPoint,
18041&Interp_FlipIntAPSPtr,
18042&Interp_FlipIntAPSMemberPtr,
18043&Interp_FlipIntAPSFloat,
18044&Interp_FlipBoolSint8,
18045&Interp_FlipBoolUint8,
18046&Interp_FlipBoolSint16,
18047&Interp_FlipBoolUint16,
18048&Interp_FlipBoolSint32,
18049&Interp_FlipBoolUint32,
18050&Interp_FlipBoolSint64,
18051&Interp_FlipBoolUint64,
18052&Interp_FlipBoolIntAP,
18053&Interp_FlipBoolIntAPS,
18054&Interp_FlipBoolBool,
18055&Interp_FlipBoolFixedPoint,
18056&Interp_FlipBoolPtr,
18057&Interp_FlipBoolMemberPtr,
18058&Interp_FlipBoolFloat,
18059&Interp_FlipFixedPointSint8,
18060&Interp_FlipFixedPointUint8,
18061&Interp_FlipFixedPointSint16,
18062&Interp_FlipFixedPointUint16,
18063&Interp_FlipFixedPointSint32,
18064&Interp_FlipFixedPointUint32,
18065&Interp_FlipFixedPointSint64,
18066&Interp_FlipFixedPointUint64,
18067&Interp_FlipFixedPointIntAP,
18068&Interp_FlipFixedPointIntAPS,
18069&Interp_FlipFixedPointBool,
18070&Interp_FlipFixedPointFixedPoint,
18071&Interp_FlipFixedPointPtr,
18072&Interp_FlipFixedPointMemberPtr,
18073&Interp_FlipFixedPointFloat,
18074&Interp_FlipPtrSint8,
18075&Interp_FlipPtrUint8,
18076&Interp_FlipPtrSint16,
18077&Interp_FlipPtrUint16,
18078&Interp_FlipPtrSint32,
18079&Interp_FlipPtrUint32,
18080&Interp_FlipPtrSint64,
18081&Interp_FlipPtrUint64,
18082&Interp_FlipPtrIntAP,
18083&Interp_FlipPtrIntAPS,
18084&Interp_FlipPtrBool,
18085&Interp_FlipPtrFixedPoint,
18086&Interp_FlipPtrPtr,
18087&Interp_FlipPtrMemberPtr,
18088&Interp_FlipPtrFloat,
18089&Interp_FlipMemberPtrSint8,
18090&Interp_FlipMemberPtrUint8,
18091&Interp_FlipMemberPtrSint16,
18092&Interp_FlipMemberPtrUint16,
18093&Interp_FlipMemberPtrSint32,
18094&Interp_FlipMemberPtrUint32,
18095&Interp_FlipMemberPtrSint64,
18096&Interp_FlipMemberPtrUint64,
18097&Interp_FlipMemberPtrIntAP,
18098&Interp_FlipMemberPtrIntAPS,
18099&Interp_FlipMemberPtrBool,
18100&Interp_FlipMemberPtrFixedPoint,
18101&Interp_FlipMemberPtrPtr,
18102&Interp_FlipMemberPtrMemberPtr,
18103&Interp_FlipMemberPtrFloat,
18104&Interp_FlipFloatSint8,
18105&Interp_FlipFloatUint8,
18106&Interp_FlipFloatSint16,
18107&Interp_FlipFloatUint16,
18108&Interp_FlipFloatSint32,
18109&Interp_FlipFloatUint32,
18110&Interp_FlipFloatSint64,
18111&Interp_FlipFloatUint64,
18112&Interp_FlipFloatIntAP,
18113&Interp_FlipFloatIntAPS,
18114&Interp_FlipFloatBool,
18115&Interp_FlipFloatFixedPoint,
18116&Interp_FlipFloatPtr,
18117&Interp_FlipFloatMemberPtr,
18118&Interp_FlipFloatFloat,
18119#endif
18120#ifdef GET_INTERPFN_DISPATCHERS
18121PRESERVE_NONE
18122static bool Interp_FlipSint8Sint8(InterpState &S, CodePtr &PC) {
18123 Flip<PT_Sint8, PT_Sint8>(S, PC);
18124#if USE_TAILCALLS
18125 MUSTTAIL return InterpNext(S, PC);
18126#else
18127 return true;
18128#endif
18129}
18130PRESERVE_NONE
18131static bool Interp_FlipSint8Uint8(InterpState &S, CodePtr &PC) {
18132 Flip<PT_Sint8, PT_Uint8>(S, PC);
18133#if USE_TAILCALLS
18134 MUSTTAIL return InterpNext(S, PC);
18135#else
18136 return true;
18137#endif
18138}
18139PRESERVE_NONE
18140static bool Interp_FlipSint8Sint16(InterpState &S, CodePtr &PC) {
18141 Flip<PT_Sint8, PT_Sint16>(S, PC);
18142#if USE_TAILCALLS
18143 MUSTTAIL return InterpNext(S, PC);
18144#else
18145 return true;
18146#endif
18147}
18148PRESERVE_NONE
18149static bool Interp_FlipSint8Uint16(InterpState &S, CodePtr &PC) {
18150 Flip<PT_Sint8, PT_Uint16>(S, PC);
18151#if USE_TAILCALLS
18152 MUSTTAIL return InterpNext(S, PC);
18153#else
18154 return true;
18155#endif
18156}
18157PRESERVE_NONE
18158static bool Interp_FlipSint8Sint32(InterpState &S, CodePtr &PC) {
18159 Flip<PT_Sint8, PT_Sint32>(S, PC);
18160#if USE_TAILCALLS
18161 MUSTTAIL return InterpNext(S, PC);
18162#else
18163 return true;
18164#endif
18165}
18166PRESERVE_NONE
18167static bool Interp_FlipSint8Uint32(InterpState &S, CodePtr &PC) {
18168 Flip<PT_Sint8, PT_Uint32>(S, PC);
18169#if USE_TAILCALLS
18170 MUSTTAIL return InterpNext(S, PC);
18171#else
18172 return true;
18173#endif
18174}
18175PRESERVE_NONE
18176static bool Interp_FlipSint8Sint64(InterpState &S, CodePtr &PC) {
18177 Flip<PT_Sint8, PT_Sint64>(S, PC);
18178#if USE_TAILCALLS
18179 MUSTTAIL return InterpNext(S, PC);
18180#else
18181 return true;
18182#endif
18183}
18184PRESERVE_NONE
18185static bool Interp_FlipSint8Uint64(InterpState &S, CodePtr &PC) {
18186 Flip<PT_Sint8, PT_Uint64>(S, PC);
18187#if USE_TAILCALLS
18188 MUSTTAIL return InterpNext(S, PC);
18189#else
18190 return true;
18191#endif
18192}
18193PRESERVE_NONE
18194static bool Interp_FlipSint8IntAP(InterpState &S, CodePtr &PC) {
18195 Flip<PT_Sint8, PT_IntAP>(S, PC);
18196#if USE_TAILCALLS
18197 MUSTTAIL return InterpNext(S, PC);
18198#else
18199 return true;
18200#endif
18201}
18202PRESERVE_NONE
18203static bool Interp_FlipSint8IntAPS(InterpState &S, CodePtr &PC) {
18204 Flip<PT_Sint8, PT_IntAPS>(S, PC);
18205#if USE_TAILCALLS
18206 MUSTTAIL return InterpNext(S, PC);
18207#else
18208 return true;
18209#endif
18210}
18211PRESERVE_NONE
18212static bool Interp_FlipSint8Bool(InterpState &S, CodePtr &PC) {
18213 Flip<PT_Sint8, PT_Bool>(S, PC);
18214#if USE_TAILCALLS
18215 MUSTTAIL return InterpNext(S, PC);
18216#else
18217 return true;
18218#endif
18219}
18220PRESERVE_NONE
18221static bool Interp_FlipSint8FixedPoint(InterpState &S, CodePtr &PC) {
18222 Flip<PT_Sint8, PT_FixedPoint>(S, PC);
18223#if USE_TAILCALLS
18224 MUSTTAIL return InterpNext(S, PC);
18225#else
18226 return true;
18227#endif
18228}
18229PRESERVE_NONE
18230static bool Interp_FlipSint8Ptr(InterpState &S, CodePtr &PC) {
18231 Flip<PT_Sint8, PT_Ptr>(S, PC);
18232#if USE_TAILCALLS
18233 MUSTTAIL return InterpNext(S, PC);
18234#else
18235 return true;
18236#endif
18237}
18238PRESERVE_NONE
18239static bool Interp_FlipSint8MemberPtr(InterpState &S, CodePtr &PC) {
18240 Flip<PT_Sint8, PT_MemberPtr>(S, PC);
18241#if USE_TAILCALLS
18242 MUSTTAIL return InterpNext(S, PC);
18243#else
18244 return true;
18245#endif
18246}
18247PRESERVE_NONE
18248static bool Interp_FlipSint8Float(InterpState &S, CodePtr &PC) {
18249 Flip<PT_Sint8, PT_Float>(S, PC);
18250#if USE_TAILCALLS
18251 MUSTTAIL return InterpNext(S, PC);
18252#else
18253 return true;
18254#endif
18255}
18256PRESERVE_NONE
18257static bool Interp_FlipUint8Sint8(InterpState &S, CodePtr &PC) {
18258 Flip<PT_Uint8, PT_Sint8>(S, PC);
18259#if USE_TAILCALLS
18260 MUSTTAIL return InterpNext(S, PC);
18261#else
18262 return true;
18263#endif
18264}
18265PRESERVE_NONE
18266static bool Interp_FlipUint8Uint8(InterpState &S, CodePtr &PC) {
18267 Flip<PT_Uint8, PT_Uint8>(S, PC);
18268#if USE_TAILCALLS
18269 MUSTTAIL return InterpNext(S, PC);
18270#else
18271 return true;
18272#endif
18273}
18274PRESERVE_NONE
18275static bool Interp_FlipUint8Sint16(InterpState &S, CodePtr &PC) {
18276 Flip<PT_Uint8, PT_Sint16>(S, PC);
18277#if USE_TAILCALLS
18278 MUSTTAIL return InterpNext(S, PC);
18279#else
18280 return true;
18281#endif
18282}
18283PRESERVE_NONE
18284static bool Interp_FlipUint8Uint16(InterpState &S, CodePtr &PC) {
18285 Flip<PT_Uint8, PT_Uint16>(S, PC);
18286#if USE_TAILCALLS
18287 MUSTTAIL return InterpNext(S, PC);
18288#else
18289 return true;
18290#endif
18291}
18292PRESERVE_NONE
18293static bool Interp_FlipUint8Sint32(InterpState &S, CodePtr &PC) {
18294 Flip<PT_Uint8, PT_Sint32>(S, PC);
18295#if USE_TAILCALLS
18296 MUSTTAIL return InterpNext(S, PC);
18297#else
18298 return true;
18299#endif
18300}
18301PRESERVE_NONE
18302static bool Interp_FlipUint8Uint32(InterpState &S, CodePtr &PC) {
18303 Flip<PT_Uint8, PT_Uint32>(S, PC);
18304#if USE_TAILCALLS
18305 MUSTTAIL return InterpNext(S, PC);
18306#else
18307 return true;
18308#endif
18309}
18310PRESERVE_NONE
18311static bool Interp_FlipUint8Sint64(InterpState &S, CodePtr &PC) {
18312 Flip<PT_Uint8, PT_Sint64>(S, PC);
18313#if USE_TAILCALLS
18314 MUSTTAIL return InterpNext(S, PC);
18315#else
18316 return true;
18317#endif
18318}
18319PRESERVE_NONE
18320static bool Interp_FlipUint8Uint64(InterpState &S, CodePtr &PC) {
18321 Flip<PT_Uint8, PT_Uint64>(S, PC);
18322#if USE_TAILCALLS
18323 MUSTTAIL return InterpNext(S, PC);
18324#else
18325 return true;
18326#endif
18327}
18328PRESERVE_NONE
18329static bool Interp_FlipUint8IntAP(InterpState &S, CodePtr &PC) {
18330 Flip<PT_Uint8, PT_IntAP>(S, PC);
18331#if USE_TAILCALLS
18332 MUSTTAIL return InterpNext(S, PC);
18333#else
18334 return true;
18335#endif
18336}
18337PRESERVE_NONE
18338static bool Interp_FlipUint8IntAPS(InterpState &S, CodePtr &PC) {
18339 Flip<PT_Uint8, PT_IntAPS>(S, PC);
18340#if USE_TAILCALLS
18341 MUSTTAIL return InterpNext(S, PC);
18342#else
18343 return true;
18344#endif
18345}
18346PRESERVE_NONE
18347static bool Interp_FlipUint8Bool(InterpState &S, CodePtr &PC) {
18348 Flip<PT_Uint8, PT_Bool>(S, PC);
18349#if USE_TAILCALLS
18350 MUSTTAIL return InterpNext(S, PC);
18351#else
18352 return true;
18353#endif
18354}
18355PRESERVE_NONE
18356static bool Interp_FlipUint8FixedPoint(InterpState &S, CodePtr &PC) {
18357 Flip<PT_Uint8, PT_FixedPoint>(S, PC);
18358#if USE_TAILCALLS
18359 MUSTTAIL return InterpNext(S, PC);
18360#else
18361 return true;
18362#endif
18363}
18364PRESERVE_NONE
18365static bool Interp_FlipUint8Ptr(InterpState &S, CodePtr &PC) {
18366 Flip<PT_Uint8, PT_Ptr>(S, PC);
18367#if USE_TAILCALLS
18368 MUSTTAIL return InterpNext(S, PC);
18369#else
18370 return true;
18371#endif
18372}
18373PRESERVE_NONE
18374static bool Interp_FlipUint8MemberPtr(InterpState &S, CodePtr &PC) {
18375 Flip<PT_Uint8, PT_MemberPtr>(S, PC);
18376#if USE_TAILCALLS
18377 MUSTTAIL return InterpNext(S, PC);
18378#else
18379 return true;
18380#endif
18381}
18382PRESERVE_NONE
18383static bool Interp_FlipUint8Float(InterpState &S, CodePtr &PC) {
18384 Flip<PT_Uint8, PT_Float>(S, PC);
18385#if USE_TAILCALLS
18386 MUSTTAIL return InterpNext(S, PC);
18387#else
18388 return true;
18389#endif
18390}
18391PRESERVE_NONE
18392static bool Interp_FlipSint16Sint8(InterpState &S, CodePtr &PC) {
18393 Flip<PT_Sint16, PT_Sint8>(S, PC);
18394#if USE_TAILCALLS
18395 MUSTTAIL return InterpNext(S, PC);
18396#else
18397 return true;
18398#endif
18399}
18400PRESERVE_NONE
18401static bool Interp_FlipSint16Uint8(InterpState &S, CodePtr &PC) {
18402 Flip<PT_Sint16, PT_Uint8>(S, PC);
18403#if USE_TAILCALLS
18404 MUSTTAIL return InterpNext(S, PC);
18405#else
18406 return true;
18407#endif
18408}
18409PRESERVE_NONE
18410static bool Interp_FlipSint16Sint16(InterpState &S, CodePtr &PC) {
18411 Flip<PT_Sint16, PT_Sint16>(S, PC);
18412#if USE_TAILCALLS
18413 MUSTTAIL return InterpNext(S, PC);
18414#else
18415 return true;
18416#endif
18417}
18418PRESERVE_NONE
18419static bool Interp_FlipSint16Uint16(InterpState &S, CodePtr &PC) {
18420 Flip<PT_Sint16, PT_Uint16>(S, PC);
18421#if USE_TAILCALLS
18422 MUSTTAIL return InterpNext(S, PC);
18423#else
18424 return true;
18425#endif
18426}
18427PRESERVE_NONE
18428static bool Interp_FlipSint16Sint32(InterpState &S, CodePtr &PC) {
18429 Flip<PT_Sint16, PT_Sint32>(S, PC);
18430#if USE_TAILCALLS
18431 MUSTTAIL return InterpNext(S, PC);
18432#else
18433 return true;
18434#endif
18435}
18436PRESERVE_NONE
18437static bool Interp_FlipSint16Uint32(InterpState &S, CodePtr &PC) {
18438 Flip<PT_Sint16, PT_Uint32>(S, PC);
18439#if USE_TAILCALLS
18440 MUSTTAIL return InterpNext(S, PC);
18441#else
18442 return true;
18443#endif
18444}
18445PRESERVE_NONE
18446static bool Interp_FlipSint16Sint64(InterpState &S, CodePtr &PC) {
18447 Flip<PT_Sint16, PT_Sint64>(S, PC);
18448#if USE_TAILCALLS
18449 MUSTTAIL return InterpNext(S, PC);
18450#else
18451 return true;
18452#endif
18453}
18454PRESERVE_NONE
18455static bool Interp_FlipSint16Uint64(InterpState &S, CodePtr &PC) {
18456 Flip<PT_Sint16, PT_Uint64>(S, PC);
18457#if USE_TAILCALLS
18458 MUSTTAIL return InterpNext(S, PC);
18459#else
18460 return true;
18461#endif
18462}
18463PRESERVE_NONE
18464static bool Interp_FlipSint16IntAP(InterpState &S, CodePtr &PC) {
18465 Flip<PT_Sint16, PT_IntAP>(S, PC);
18466#if USE_TAILCALLS
18467 MUSTTAIL return InterpNext(S, PC);
18468#else
18469 return true;
18470#endif
18471}
18472PRESERVE_NONE
18473static bool Interp_FlipSint16IntAPS(InterpState &S, CodePtr &PC) {
18474 Flip<PT_Sint16, PT_IntAPS>(S, PC);
18475#if USE_TAILCALLS
18476 MUSTTAIL return InterpNext(S, PC);
18477#else
18478 return true;
18479#endif
18480}
18481PRESERVE_NONE
18482static bool Interp_FlipSint16Bool(InterpState &S, CodePtr &PC) {
18483 Flip<PT_Sint16, PT_Bool>(S, PC);
18484#if USE_TAILCALLS
18485 MUSTTAIL return InterpNext(S, PC);
18486#else
18487 return true;
18488#endif
18489}
18490PRESERVE_NONE
18491static bool Interp_FlipSint16FixedPoint(InterpState &S, CodePtr &PC) {
18492 Flip<PT_Sint16, PT_FixedPoint>(S, PC);
18493#if USE_TAILCALLS
18494 MUSTTAIL return InterpNext(S, PC);
18495#else
18496 return true;
18497#endif
18498}
18499PRESERVE_NONE
18500static bool Interp_FlipSint16Ptr(InterpState &S, CodePtr &PC) {
18501 Flip<PT_Sint16, PT_Ptr>(S, PC);
18502#if USE_TAILCALLS
18503 MUSTTAIL return InterpNext(S, PC);
18504#else
18505 return true;
18506#endif
18507}
18508PRESERVE_NONE
18509static bool Interp_FlipSint16MemberPtr(InterpState &S, CodePtr &PC) {
18510 Flip<PT_Sint16, PT_MemberPtr>(S, PC);
18511#if USE_TAILCALLS
18512 MUSTTAIL return InterpNext(S, PC);
18513#else
18514 return true;
18515#endif
18516}
18517PRESERVE_NONE
18518static bool Interp_FlipSint16Float(InterpState &S, CodePtr &PC) {
18519 Flip<PT_Sint16, PT_Float>(S, PC);
18520#if USE_TAILCALLS
18521 MUSTTAIL return InterpNext(S, PC);
18522#else
18523 return true;
18524#endif
18525}
18526PRESERVE_NONE
18527static bool Interp_FlipUint16Sint8(InterpState &S, CodePtr &PC) {
18528 Flip<PT_Uint16, PT_Sint8>(S, PC);
18529#if USE_TAILCALLS
18530 MUSTTAIL return InterpNext(S, PC);
18531#else
18532 return true;
18533#endif
18534}
18535PRESERVE_NONE
18536static bool Interp_FlipUint16Uint8(InterpState &S, CodePtr &PC) {
18537 Flip<PT_Uint16, PT_Uint8>(S, PC);
18538#if USE_TAILCALLS
18539 MUSTTAIL return InterpNext(S, PC);
18540#else
18541 return true;
18542#endif
18543}
18544PRESERVE_NONE
18545static bool Interp_FlipUint16Sint16(InterpState &S, CodePtr &PC) {
18546 Flip<PT_Uint16, PT_Sint16>(S, PC);
18547#if USE_TAILCALLS
18548 MUSTTAIL return InterpNext(S, PC);
18549#else
18550 return true;
18551#endif
18552}
18553PRESERVE_NONE
18554static bool Interp_FlipUint16Uint16(InterpState &S, CodePtr &PC) {
18555 Flip<PT_Uint16, PT_Uint16>(S, PC);
18556#if USE_TAILCALLS
18557 MUSTTAIL return InterpNext(S, PC);
18558#else
18559 return true;
18560#endif
18561}
18562PRESERVE_NONE
18563static bool Interp_FlipUint16Sint32(InterpState &S, CodePtr &PC) {
18564 Flip<PT_Uint16, PT_Sint32>(S, PC);
18565#if USE_TAILCALLS
18566 MUSTTAIL return InterpNext(S, PC);
18567#else
18568 return true;
18569#endif
18570}
18571PRESERVE_NONE
18572static bool Interp_FlipUint16Uint32(InterpState &S, CodePtr &PC) {
18573 Flip<PT_Uint16, PT_Uint32>(S, PC);
18574#if USE_TAILCALLS
18575 MUSTTAIL return InterpNext(S, PC);
18576#else
18577 return true;
18578#endif
18579}
18580PRESERVE_NONE
18581static bool Interp_FlipUint16Sint64(InterpState &S, CodePtr &PC) {
18582 Flip<PT_Uint16, PT_Sint64>(S, PC);
18583#if USE_TAILCALLS
18584 MUSTTAIL return InterpNext(S, PC);
18585#else
18586 return true;
18587#endif
18588}
18589PRESERVE_NONE
18590static bool Interp_FlipUint16Uint64(InterpState &S, CodePtr &PC) {
18591 Flip<PT_Uint16, PT_Uint64>(S, PC);
18592#if USE_TAILCALLS
18593 MUSTTAIL return InterpNext(S, PC);
18594#else
18595 return true;
18596#endif
18597}
18598PRESERVE_NONE
18599static bool Interp_FlipUint16IntAP(InterpState &S, CodePtr &PC) {
18600 Flip<PT_Uint16, PT_IntAP>(S, PC);
18601#if USE_TAILCALLS
18602 MUSTTAIL return InterpNext(S, PC);
18603#else
18604 return true;
18605#endif
18606}
18607PRESERVE_NONE
18608static bool Interp_FlipUint16IntAPS(InterpState &S, CodePtr &PC) {
18609 Flip<PT_Uint16, PT_IntAPS>(S, PC);
18610#if USE_TAILCALLS
18611 MUSTTAIL return InterpNext(S, PC);
18612#else
18613 return true;
18614#endif
18615}
18616PRESERVE_NONE
18617static bool Interp_FlipUint16Bool(InterpState &S, CodePtr &PC) {
18618 Flip<PT_Uint16, PT_Bool>(S, PC);
18619#if USE_TAILCALLS
18620 MUSTTAIL return InterpNext(S, PC);
18621#else
18622 return true;
18623#endif
18624}
18625PRESERVE_NONE
18626static bool Interp_FlipUint16FixedPoint(InterpState &S, CodePtr &PC) {
18627 Flip<PT_Uint16, PT_FixedPoint>(S, PC);
18628#if USE_TAILCALLS
18629 MUSTTAIL return InterpNext(S, PC);
18630#else
18631 return true;
18632#endif
18633}
18634PRESERVE_NONE
18635static bool Interp_FlipUint16Ptr(InterpState &S, CodePtr &PC) {
18636 Flip<PT_Uint16, PT_Ptr>(S, PC);
18637#if USE_TAILCALLS
18638 MUSTTAIL return InterpNext(S, PC);
18639#else
18640 return true;
18641#endif
18642}
18643PRESERVE_NONE
18644static bool Interp_FlipUint16MemberPtr(InterpState &S, CodePtr &PC) {
18645 Flip<PT_Uint16, PT_MemberPtr>(S, PC);
18646#if USE_TAILCALLS
18647 MUSTTAIL return InterpNext(S, PC);
18648#else
18649 return true;
18650#endif
18651}
18652PRESERVE_NONE
18653static bool Interp_FlipUint16Float(InterpState &S, CodePtr &PC) {
18654 Flip<PT_Uint16, PT_Float>(S, PC);
18655#if USE_TAILCALLS
18656 MUSTTAIL return InterpNext(S, PC);
18657#else
18658 return true;
18659#endif
18660}
18661PRESERVE_NONE
18662static bool Interp_FlipSint32Sint8(InterpState &S, CodePtr &PC) {
18663 Flip<PT_Sint32, PT_Sint8>(S, PC);
18664#if USE_TAILCALLS
18665 MUSTTAIL return InterpNext(S, PC);
18666#else
18667 return true;
18668#endif
18669}
18670PRESERVE_NONE
18671static bool Interp_FlipSint32Uint8(InterpState &S, CodePtr &PC) {
18672 Flip<PT_Sint32, PT_Uint8>(S, PC);
18673#if USE_TAILCALLS
18674 MUSTTAIL return InterpNext(S, PC);
18675#else
18676 return true;
18677#endif
18678}
18679PRESERVE_NONE
18680static bool Interp_FlipSint32Sint16(InterpState &S, CodePtr &PC) {
18681 Flip<PT_Sint32, PT_Sint16>(S, PC);
18682#if USE_TAILCALLS
18683 MUSTTAIL return InterpNext(S, PC);
18684#else
18685 return true;
18686#endif
18687}
18688PRESERVE_NONE
18689static bool Interp_FlipSint32Uint16(InterpState &S, CodePtr &PC) {
18690 Flip<PT_Sint32, PT_Uint16>(S, PC);
18691#if USE_TAILCALLS
18692 MUSTTAIL return InterpNext(S, PC);
18693#else
18694 return true;
18695#endif
18696}
18697PRESERVE_NONE
18698static bool Interp_FlipSint32Sint32(InterpState &S, CodePtr &PC) {
18699 Flip<PT_Sint32, PT_Sint32>(S, PC);
18700#if USE_TAILCALLS
18701 MUSTTAIL return InterpNext(S, PC);
18702#else
18703 return true;
18704#endif
18705}
18706PRESERVE_NONE
18707static bool Interp_FlipSint32Uint32(InterpState &S, CodePtr &PC) {
18708 Flip<PT_Sint32, PT_Uint32>(S, PC);
18709#if USE_TAILCALLS
18710 MUSTTAIL return InterpNext(S, PC);
18711#else
18712 return true;
18713#endif
18714}
18715PRESERVE_NONE
18716static bool Interp_FlipSint32Sint64(InterpState &S, CodePtr &PC) {
18717 Flip<PT_Sint32, PT_Sint64>(S, PC);
18718#if USE_TAILCALLS
18719 MUSTTAIL return InterpNext(S, PC);
18720#else
18721 return true;
18722#endif
18723}
18724PRESERVE_NONE
18725static bool Interp_FlipSint32Uint64(InterpState &S, CodePtr &PC) {
18726 Flip<PT_Sint32, PT_Uint64>(S, PC);
18727#if USE_TAILCALLS
18728 MUSTTAIL return InterpNext(S, PC);
18729#else
18730 return true;
18731#endif
18732}
18733PRESERVE_NONE
18734static bool Interp_FlipSint32IntAP(InterpState &S, CodePtr &PC) {
18735 Flip<PT_Sint32, PT_IntAP>(S, PC);
18736#if USE_TAILCALLS
18737 MUSTTAIL return InterpNext(S, PC);
18738#else
18739 return true;
18740#endif
18741}
18742PRESERVE_NONE
18743static bool Interp_FlipSint32IntAPS(InterpState &S, CodePtr &PC) {
18744 Flip<PT_Sint32, PT_IntAPS>(S, PC);
18745#if USE_TAILCALLS
18746 MUSTTAIL return InterpNext(S, PC);
18747#else
18748 return true;
18749#endif
18750}
18751PRESERVE_NONE
18752static bool Interp_FlipSint32Bool(InterpState &S, CodePtr &PC) {
18753 Flip<PT_Sint32, PT_Bool>(S, PC);
18754#if USE_TAILCALLS
18755 MUSTTAIL return InterpNext(S, PC);
18756#else
18757 return true;
18758#endif
18759}
18760PRESERVE_NONE
18761static bool Interp_FlipSint32FixedPoint(InterpState &S, CodePtr &PC) {
18762 Flip<PT_Sint32, PT_FixedPoint>(S, PC);
18763#if USE_TAILCALLS
18764 MUSTTAIL return InterpNext(S, PC);
18765#else
18766 return true;
18767#endif
18768}
18769PRESERVE_NONE
18770static bool Interp_FlipSint32Ptr(InterpState &S, CodePtr &PC) {
18771 Flip<PT_Sint32, PT_Ptr>(S, PC);
18772#if USE_TAILCALLS
18773 MUSTTAIL return InterpNext(S, PC);
18774#else
18775 return true;
18776#endif
18777}
18778PRESERVE_NONE
18779static bool Interp_FlipSint32MemberPtr(InterpState &S, CodePtr &PC) {
18780 Flip<PT_Sint32, PT_MemberPtr>(S, PC);
18781#if USE_TAILCALLS
18782 MUSTTAIL return InterpNext(S, PC);
18783#else
18784 return true;
18785#endif
18786}
18787PRESERVE_NONE
18788static bool Interp_FlipSint32Float(InterpState &S, CodePtr &PC) {
18789 Flip<PT_Sint32, PT_Float>(S, PC);
18790#if USE_TAILCALLS
18791 MUSTTAIL return InterpNext(S, PC);
18792#else
18793 return true;
18794#endif
18795}
18796PRESERVE_NONE
18797static bool Interp_FlipUint32Sint8(InterpState &S, CodePtr &PC) {
18798 Flip<PT_Uint32, PT_Sint8>(S, PC);
18799#if USE_TAILCALLS
18800 MUSTTAIL return InterpNext(S, PC);
18801#else
18802 return true;
18803#endif
18804}
18805PRESERVE_NONE
18806static bool Interp_FlipUint32Uint8(InterpState &S, CodePtr &PC) {
18807 Flip<PT_Uint32, PT_Uint8>(S, PC);
18808#if USE_TAILCALLS
18809 MUSTTAIL return InterpNext(S, PC);
18810#else
18811 return true;
18812#endif
18813}
18814PRESERVE_NONE
18815static bool Interp_FlipUint32Sint16(InterpState &S, CodePtr &PC) {
18816 Flip<PT_Uint32, PT_Sint16>(S, PC);
18817#if USE_TAILCALLS
18818 MUSTTAIL return InterpNext(S, PC);
18819#else
18820 return true;
18821#endif
18822}
18823PRESERVE_NONE
18824static bool Interp_FlipUint32Uint16(InterpState &S, CodePtr &PC) {
18825 Flip<PT_Uint32, PT_Uint16>(S, PC);
18826#if USE_TAILCALLS
18827 MUSTTAIL return InterpNext(S, PC);
18828#else
18829 return true;
18830#endif
18831}
18832PRESERVE_NONE
18833static bool Interp_FlipUint32Sint32(InterpState &S, CodePtr &PC) {
18834 Flip<PT_Uint32, PT_Sint32>(S, PC);
18835#if USE_TAILCALLS
18836 MUSTTAIL return InterpNext(S, PC);
18837#else
18838 return true;
18839#endif
18840}
18841PRESERVE_NONE
18842static bool Interp_FlipUint32Uint32(InterpState &S, CodePtr &PC) {
18843 Flip<PT_Uint32, PT_Uint32>(S, PC);
18844#if USE_TAILCALLS
18845 MUSTTAIL return InterpNext(S, PC);
18846#else
18847 return true;
18848#endif
18849}
18850PRESERVE_NONE
18851static bool Interp_FlipUint32Sint64(InterpState &S, CodePtr &PC) {
18852 Flip<PT_Uint32, PT_Sint64>(S, PC);
18853#if USE_TAILCALLS
18854 MUSTTAIL return InterpNext(S, PC);
18855#else
18856 return true;
18857#endif
18858}
18859PRESERVE_NONE
18860static bool Interp_FlipUint32Uint64(InterpState &S, CodePtr &PC) {
18861 Flip<PT_Uint32, PT_Uint64>(S, PC);
18862#if USE_TAILCALLS
18863 MUSTTAIL return InterpNext(S, PC);
18864#else
18865 return true;
18866#endif
18867}
18868PRESERVE_NONE
18869static bool Interp_FlipUint32IntAP(InterpState &S, CodePtr &PC) {
18870 Flip<PT_Uint32, PT_IntAP>(S, PC);
18871#if USE_TAILCALLS
18872 MUSTTAIL return InterpNext(S, PC);
18873#else
18874 return true;
18875#endif
18876}
18877PRESERVE_NONE
18878static bool Interp_FlipUint32IntAPS(InterpState &S, CodePtr &PC) {
18879 Flip<PT_Uint32, PT_IntAPS>(S, PC);
18880#if USE_TAILCALLS
18881 MUSTTAIL return InterpNext(S, PC);
18882#else
18883 return true;
18884#endif
18885}
18886PRESERVE_NONE
18887static bool Interp_FlipUint32Bool(InterpState &S, CodePtr &PC) {
18888 Flip<PT_Uint32, PT_Bool>(S, PC);
18889#if USE_TAILCALLS
18890 MUSTTAIL return InterpNext(S, PC);
18891#else
18892 return true;
18893#endif
18894}
18895PRESERVE_NONE
18896static bool Interp_FlipUint32FixedPoint(InterpState &S, CodePtr &PC) {
18897 Flip<PT_Uint32, PT_FixedPoint>(S, PC);
18898#if USE_TAILCALLS
18899 MUSTTAIL return InterpNext(S, PC);
18900#else
18901 return true;
18902#endif
18903}
18904PRESERVE_NONE
18905static bool Interp_FlipUint32Ptr(InterpState &S, CodePtr &PC) {
18906 Flip<PT_Uint32, PT_Ptr>(S, PC);
18907#if USE_TAILCALLS
18908 MUSTTAIL return InterpNext(S, PC);
18909#else
18910 return true;
18911#endif
18912}
18913PRESERVE_NONE
18914static bool Interp_FlipUint32MemberPtr(InterpState &S, CodePtr &PC) {
18915 Flip<PT_Uint32, PT_MemberPtr>(S, PC);
18916#if USE_TAILCALLS
18917 MUSTTAIL return InterpNext(S, PC);
18918#else
18919 return true;
18920#endif
18921}
18922PRESERVE_NONE
18923static bool Interp_FlipUint32Float(InterpState &S, CodePtr &PC) {
18924 Flip<PT_Uint32, PT_Float>(S, PC);
18925#if USE_TAILCALLS
18926 MUSTTAIL return InterpNext(S, PC);
18927#else
18928 return true;
18929#endif
18930}
18931PRESERVE_NONE
18932static bool Interp_FlipSint64Sint8(InterpState &S, CodePtr &PC) {
18933 Flip<PT_Sint64, PT_Sint8>(S, PC);
18934#if USE_TAILCALLS
18935 MUSTTAIL return InterpNext(S, PC);
18936#else
18937 return true;
18938#endif
18939}
18940PRESERVE_NONE
18941static bool Interp_FlipSint64Uint8(InterpState &S, CodePtr &PC) {
18942 Flip<PT_Sint64, PT_Uint8>(S, PC);
18943#if USE_TAILCALLS
18944 MUSTTAIL return InterpNext(S, PC);
18945#else
18946 return true;
18947#endif
18948}
18949PRESERVE_NONE
18950static bool Interp_FlipSint64Sint16(InterpState &S, CodePtr &PC) {
18951 Flip<PT_Sint64, PT_Sint16>(S, PC);
18952#if USE_TAILCALLS
18953 MUSTTAIL return InterpNext(S, PC);
18954#else
18955 return true;
18956#endif
18957}
18958PRESERVE_NONE
18959static bool Interp_FlipSint64Uint16(InterpState &S, CodePtr &PC) {
18960 Flip<PT_Sint64, PT_Uint16>(S, PC);
18961#if USE_TAILCALLS
18962 MUSTTAIL return InterpNext(S, PC);
18963#else
18964 return true;
18965#endif
18966}
18967PRESERVE_NONE
18968static bool Interp_FlipSint64Sint32(InterpState &S, CodePtr &PC) {
18969 Flip<PT_Sint64, PT_Sint32>(S, PC);
18970#if USE_TAILCALLS
18971 MUSTTAIL return InterpNext(S, PC);
18972#else
18973 return true;
18974#endif
18975}
18976PRESERVE_NONE
18977static bool Interp_FlipSint64Uint32(InterpState &S, CodePtr &PC) {
18978 Flip<PT_Sint64, PT_Uint32>(S, PC);
18979#if USE_TAILCALLS
18980 MUSTTAIL return InterpNext(S, PC);
18981#else
18982 return true;
18983#endif
18984}
18985PRESERVE_NONE
18986static bool Interp_FlipSint64Sint64(InterpState &S, CodePtr &PC) {
18987 Flip<PT_Sint64, PT_Sint64>(S, PC);
18988#if USE_TAILCALLS
18989 MUSTTAIL return InterpNext(S, PC);
18990#else
18991 return true;
18992#endif
18993}
18994PRESERVE_NONE
18995static bool Interp_FlipSint64Uint64(InterpState &S, CodePtr &PC) {
18996 Flip<PT_Sint64, PT_Uint64>(S, PC);
18997#if USE_TAILCALLS
18998 MUSTTAIL return InterpNext(S, PC);
18999#else
19000 return true;
19001#endif
19002}
19003PRESERVE_NONE
19004static bool Interp_FlipSint64IntAP(InterpState &S, CodePtr &PC) {
19005 Flip<PT_Sint64, PT_IntAP>(S, PC);
19006#if USE_TAILCALLS
19007 MUSTTAIL return InterpNext(S, PC);
19008#else
19009 return true;
19010#endif
19011}
19012PRESERVE_NONE
19013static bool Interp_FlipSint64IntAPS(InterpState &S, CodePtr &PC) {
19014 Flip<PT_Sint64, PT_IntAPS>(S, PC);
19015#if USE_TAILCALLS
19016 MUSTTAIL return InterpNext(S, PC);
19017#else
19018 return true;
19019#endif
19020}
19021PRESERVE_NONE
19022static bool Interp_FlipSint64Bool(InterpState &S, CodePtr &PC) {
19023 Flip<PT_Sint64, PT_Bool>(S, PC);
19024#if USE_TAILCALLS
19025 MUSTTAIL return InterpNext(S, PC);
19026#else
19027 return true;
19028#endif
19029}
19030PRESERVE_NONE
19031static bool Interp_FlipSint64FixedPoint(InterpState &S, CodePtr &PC) {
19032 Flip<PT_Sint64, PT_FixedPoint>(S, PC);
19033#if USE_TAILCALLS
19034 MUSTTAIL return InterpNext(S, PC);
19035#else
19036 return true;
19037#endif
19038}
19039PRESERVE_NONE
19040static bool Interp_FlipSint64Ptr(InterpState &S, CodePtr &PC) {
19041 Flip<PT_Sint64, PT_Ptr>(S, PC);
19042#if USE_TAILCALLS
19043 MUSTTAIL return InterpNext(S, PC);
19044#else
19045 return true;
19046#endif
19047}
19048PRESERVE_NONE
19049static bool Interp_FlipSint64MemberPtr(InterpState &S, CodePtr &PC) {
19050 Flip<PT_Sint64, PT_MemberPtr>(S, PC);
19051#if USE_TAILCALLS
19052 MUSTTAIL return InterpNext(S, PC);
19053#else
19054 return true;
19055#endif
19056}
19057PRESERVE_NONE
19058static bool Interp_FlipSint64Float(InterpState &S, CodePtr &PC) {
19059 Flip<PT_Sint64, PT_Float>(S, PC);
19060#if USE_TAILCALLS
19061 MUSTTAIL return InterpNext(S, PC);
19062#else
19063 return true;
19064#endif
19065}
19066PRESERVE_NONE
19067static bool Interp_FlipUint64Sint8(InterpState &S, CodePtr &PC) {
19068 Flip<PT_Uint64, PT_Sint8>(S, PC);
19069#if USE_TAILCALLS
19070 MUSTTAIL return InterpNext(S, PC);
19071#else
19072 return true;
19073#endif
19074}
19075PRESERVE_NONE
19076static bool Interp_FlipUint64Uint8(InterpState &S, CodePtr &PC) {
19077 Flip<PT_Uint64, PT_Uint8>(S, PC);
19078#if USE_TAILCALLS
19079 MUSTTAIL return InterpNext(S, PC);
19080#else
19081 return true;
19082#endif
19083}
19084PRESERVE_NONE
19085static bool Interp_FlipUint64Sint16(InterpState &S, CodePtr &PC) {
19086 Flip<PT_Uint64, PT_Sint16>(S, PC);
19087#if USE_TAILCALLS
19088 MUSTTAIL return InterpNext(S, PC);
19089#else
19090 return true;
19091#endif
19092}
19093PRESERVE_NONE
19094static bool Interp_FlipUint64Uint16(InterpState &S, CodePtr &PC) {
19095 Flip<PT_Uint64, PT_Uint16>(S, PC);
19096#if USE_TAILCALLS
19097 MUSTTAIL return InterpNext(S, PC);
19098#else
19099 return true;
19100#endif
19101}
19102PRESERVE_NONE
19103static bool Interp_FlipUint64Sint32(InterpState &S, CodePtr &PC) {
19104 Flip<PT_Uint64, PT_Sint32>(S, PC);
19105#if USE_TAILCALLS
19106 MUSTTAIL return InterpNext(S, PC);
19107#else
19108 return true;
19109#endif
19110}
19111PRESERVE_NONE
19112static bool Interp_FlipUint64Uint32(InterpState &S, CodePtr &PC) {
19113 Flip<PT_Uint64, PT_Uint32>(S, PC);
19114#if USE_TAILCALLS
19115 MUSTTAIL return InterpNext(S, PC);
19116#else
19117 return true;
19118#endif
19119}
19120PRESERVE_NONE
19121static bool Interp_FlipUint64Sint64(InterpState &S, CodePtr &PC) {
19122 Flip<PT_Uint64, PT_Sint64>(S, PC);
19123#if USE_TAILCALLS
19124 MUSTTAIL return InterpNext(S, PC);
19125#else
19126 return true;
19127#endif
19128}
19129PRESERVE_NONE
19130static bool Interp_FlipUint64Uint64(InterpState &S, CodePtr &PC) {
19131 Flip<PT_Uint64, PT_Uint64>(S, PC);
19132#if USE_TAILCALLS
19133 MUSTTAIL return InterpNext(S, PC);
19134#else
19135 return true;
19136#endif
19137}
19138PRESERVE_NONE
19139static bool Interp_FlipUint64IntAP(InterpState &S, CodePtr &PC) {
19140 Flip<PT_Uint64, PT_IntAP>(S, PC);
19141#if USE_TAILCALLS
19142 MUSTTAIL return InterpNext(S, PC);
19143#else
19144 return true;
19145#endif
19146}
19147PRESERVE_NONE
19148static bool Interp_FlipUint64IntAPS(InterpState &S, CodePtr &PC) {
19149 Flip<PT_Uint64, PT_IntAPS>(S, PC);
19150#if USE_TAILCALLS
19151 MUSTTAIL return InterpNext(S, PC);
19152#else
19153 return true;
19154#endif
19155}
19156PRESERVE_NONE
19157static bool Interp_FlipUint64Bool(InterpState &S, CodePtr &PC) {
19158 Flip<PT_Uint64, PT_Bool>(S, PC);
19159#if USE_TAILCALLS
19160 MUSTTAIL return InterpNext(S, PC);
19161#else
19162 return true;
19163#endif
19164}
19165PRESERVE_NONE
19166static bool Interp_FlipUint64FixedPoint(InterpState &S, CodePtr &PC) {
19167 Flip<PT_Uint64, PT_FixedPoint>(S, PC);
19168#if USE_TAILCALLS
19169 MUSTTAIL return InterpNext(S, PC);
19170#else
19171 return true;
19172#endif
19173}
19174PRESERVE_NONE
19175static bool Interp_FlipUint64Ptr(InterpState &S, CodePtr &PC) {
19176 Flip<PT_Uint64, PT_Ptr>(S, PC);
19177#if USE_TAILCALLS
19178 MUSTTAIL return InterpNext(S, PC);
19179#else
19180 return true;
19181#endif
19182}
19183PRESERVE_NONE
19184static bool Interp_FlipUint64MemberPtr(InterpState &S, CodePtr &PC) {
19185 Flip<PT_Uint64, PT_MemberPtr>(S, PC);
19186#if USE_TAILCALLS
19187 MUSTTAIL return InterpNext(S, PC);
19188#else
19189 return true;
19190#endif
19191}
19192PRESERVE_NONE
19193static bool Interp_FlipUint64Float(InterpState &S, CodePtr &PC) {
19194 Flip<PT_Uint64, PT_Float>(S, PC);
19195#if USE_TAILCALLS
19196 MUSTTAIL return InterpNext(S, PC);
19197#else
19198 return true;
19199#endif
19200}
19201PRESERVE_NONE
19202static bool Interp_FlipIntAPSint8(InterpState &S, CodePtr &PC) {
19203 Flip<PT_IntAP, PT_Sint8>(S, PC);
19204#if USE_TAILCALLS
19205 MUSTTAIL return InterpNext(S, PC);
19206#else
19207 return true;
19208#endif
19209}
19210PRESERVE_NONE
19211static bool Interp_FlipIntAPUint8(InterpState &S, CodePtr &PC) {
19212 Flip<PT_IntAP, PT_Uint8>(S, PC);
19213#if USE_TAILCALLS
19214 MUSTTAIL return InterpNext(S, PC);
19215#else
19216 return true;
19217#endif
19218}
19219PRESERVE_NONE
19220static bool Interp_FlipIntAPSint16(InterpState &S, CodePtr &PC) {
19221 Flip<PT_IntAP, PT_Sint16>(S, PC);
19222#if USE_TAILCALLS
19223 MUSTTAIL return InterpNext(S, PC);
19224#else
19225 return true;
19226#endif
19227}
19228PRESERVE_NONE
19229static bool Interp_FlipIntAPUint16(InterpState &S, CodePtr &PC) {
19230 Flip<PT_IntAP, PT_Uint16>(S, PC);
19231#if USE_TAILCALLS
19232 MUSTTAIL return InterpNext(S, PC);
19233#else
19234 return true;
19235#endif
19236}
19237PRESERVE_NONE
19238static bool Interp_FlipIntAPSint32(InterpState &S, CodePtr &PC) {
19239 Flip<PT_IntAP, PT_Sint32>(S, PC);
19240#if USE_TAILCALLS
19241 MUSTTAIL return InterpNext(S, PC);
19242#else
19243 return true;
19244#endif
19245}
19246PRESERVE_NONE
19247static bool Interp_FlipIntAPUint32(InterpState &S, CodePtr &PC) {
19248 Flip<PT_IntAP, PT_Uint32>(S, PC);
19249#if USE_TAILCALLS
19250 MUSTTAIL return InterpNext(S, PC);
19251#else
19252 return true;
19253#endif
19254}
19255PRESERVE_NONE
19256static bool Interp_FlipIntAPSint64(InterpState &S, CodePtr &PC) {
19257 Flip<PT_IntAP, PT_Sint64>(S, PC);
19258#if USE_TAILCALLS
19259 MUSTTAIL return InterpNext(S, PC);
19260#else
19261 return true;
19262#endif
19263}
19264PRESERVE_NONE
19265static bool Interp_FlipIntAPUint64(InterpState &S, CodePtr &PC) {
19266 Flip<PT_IntAP, PT_Uint64>(S, PC);
19267#if USE_TAILCALLS
19268 MUSTTAIL return InterpNext(S, PC);
19269#else
19270 return true;
19271#endif
19272}
19273PRESERVE_NONE
19274static bool Interp_FlipIntAPIntAP(InterpState &S, CodePtr &PC) {
19275 Flip<PT_IntAP, PT_IntAP>(S, PC);
19276#if USE_TAILCALLS
19277 MUSTTAIL return InterpNext(S, PC);
19278#else
19279 return true;
19280#endif
19281}
19282PRESERVE_NONE
19283static bool Interp_FlipIntAPIntAPS(InterpState &S, CodePtr &PC) {
19284 Flip<PT_IntAP, PT_IntAPS>(S, PC);
19285#if USE_TAILCALLS
19286 MUSTTAIL return InterpNext(S, PC);
19287#else
19288 return true;
19289#endif
19290}
19291PRESERVE_NONE
19292static bool Interp_FlipIntAPBool(InterpState &S, CodePtr &PC) {
19293 Flip<PT_IntAP, PT_Bool>(S, PC);
19294#if USE_TAILCALLS
19295 MUSTTAIL return InterpNext(S, PC);
19296#else
19297 return true;
19298#endif
19299}
19300PRESERVE_NONE
19301static bool Interp_FlipIntAPFixedPoint(InterpState &S, CodePtr &PC) {
19302 Flip<PT_IntAP, PT_FixedPoint>(S, PC);
19303#if USE_TAILCALLS
19304 MUSTTAIL return InterpNext(S, PC);
19305#else
19306 return true;
19307#endif
19308}
19309PRESERVE_NONE
19310static bool Interp_FlipIntAPPtr(InterpState &S, CodePtr &PC) {
19311 Flip<PT_IntAP, PT_Ptr>(S, PC);
19312#if USE_TAILCALLS
19313 MUSTTAIL return InterpNext(S, PC);
19314#else
19315 return true;
19316#endif
19317}
19318PRESERVE_NONE
19319static bool Interp_FlipIntAPMemberPtr(InterpState &S, CodePtr &PC) {
19320 Flip<PT_IntAP, PT_MemberPtr>(S, PC);
19321#if USE_TAILCALLS
19322 MUSTTAIL return InterpNext(S, PC);
19323#else
19324 return true;
19325#endif
19326}
19327PRESERVE_NONE
19328static bool Interp_FlipIntAPFloat(InterpState &S, CodePtr &PC) {
19329 Flip<PT_IntAP, PT_Float>(S, PC);
19330#if USE_TAILCALLS
19331 MUSTTAIL return InterpNext(S, PC);
19332#else
19333 return true;
19334#endif
19335}
19336PRESERVE_NONE
19337static bool Interp_FlipIntAPSSint8(InterpState &S, CodePtr &PC) {
19338 Flip<PT_IntAPS, PT_Sint8>(S, PC);
19339#if USE_TAILCALLS
19340 MUSTTAIL return InterpNext(S, PC);
19341#else
19342 return true;
19343#endif
19344}
19345PRESERVE_NONE
19346static bool Interp_FlipIntAPSUint8(InterpState &S, CodePtr &PC) {
19347 Flip<PT_IntAPS, PT_Uint8>(S, PC);
19348#if USE_TAILCALLS
19349 MUSTTAIL return InterpNext(S, PC);
19350#else
19351 return true;
19352#endif
19353}
19354PRESERVE_NONE
19355static bool Interp_FlipIntAPSSint16(InterpState &S, CodePtr &PC) {
19356 Flip<PT_IntAPS, PT_Sint16>(S, PC);
19357#if USE_TAILCALLS
19358 MUSTTAIL return InterpNext(S, PC);
19359#else
19360 return true;
19361#endif
19362}
19363PRESERVE_NONE
19364static bool Interp_FlipIntAPSUint16(InterpState &S, CodePtr &PC) {
19365 Flip<PT_IntAPS, PT_Uint16>(S, PC);
19366#if USE_TAILCALLS
19367 MUSTTAIL return InterpNext(S, PC);
19368#else
19369 return true;
19370#endif
19371}
19372PRESERVE_NONE
19373static bool Interp_FlipIntAPSSint32(InterpState &S, CodePtr &PC) {
19374 Flip<PT_IntAPS, PT_Sint32>(S, PC);
19375#if USE_TAILCALLS
19376 MUSTTAIL return InterpNext(S, PC);
19377#else
19378 return true;
19379#endif
19380}
19381PRESERVE_NONE
19382static bool Interp_FlipIntAPSUint32(InterpState &S, CodePtr &PC) {
19383 Flip<PT_IntAPS, PT_Uint32>(S, PC);
19384#if USE_TAILCALLS
19385 MUSTTAIL return InterpNext(S, PC);
19386#else
19387 return true;
19388#endif
19389}
19390PRESERVE_NONE
19391static bool Interp_FlipIntAPSSint64(InterpState &S, CodePtr &PC) {
19392 Flip<PT_IntAPS, PT_Sint64>(S, PC);
19393#if USE_TAILCALLS
19394 MUSTTAIL return InterpNext(S, PC);
19395#else
19396 return true;
19397#endif
19398}
19399PRESERVE_NONE
19400static bool Interp_FlipIntAPSUint64(InterpState &S, CodePtr &PC) {
19401 Flip<PT_IntAPS, PT_Uint64>(S, PC);
19402#if USE_TAILCALLS
19403 MUSTTAIL return InterpNext(S, PC);
19404#else
19405 return true;
19406#endif
19407}
19408PRESERVE_NONE
19409static bool Interp_FlipIntAPSIntAP(InterpState &S, CodePtr &PC) {
19410 Flip<PT_IntAPS, PT_IntAP>(S, PC);
19411#if USE_TAILCALLS
19412 MUSTTAIL return InterpNext(S, PC);
19413#else
19414 return true;
19415#endif
19416}
19417PRESERVE_NONE
19418static bool Interp_FlipIntAPSIntAPS(InterpState &S, CodePtr &PC) {
19419 Flip<PT_IntAPS, PT_IntAPS>(S, PC);
19420#if USE_TAILCALLS
19421 MUSTTAIL return InterpNext(S, PC);
19422#else
19423 return true;
19424#endif
19425}
19426PRESERVE_NONE
19427static bool Interp_FlipIntAPSBool(InterpState &S, CodePtr &PC) {
19428 Flip<PT_IntAPS, PT_Bool>(S, PC);
19429#if USE_TAILCALLS
19430 MUSTTAIL return InterpNext(S, PC);
19431#else
19432 return true;
19433#endif
19434}
19435PRESERVE_NONE
19436static bool Interp_FlipIntAPSFixedPoint(InterpState &S, CodePtr &PC) {
19437 Flip<PT_IntAPS, PT_FixedPoint>(S, PC);
19438#if USE_TAILCALLS
19439 MUSTTAIL return InterpNext(S, PC);
19440#else
19441 return true;
19442#endif
19443}
19444PRESERVE_NONE
19445static bool Interp_FlipIntAPSPtr(InterpState &S, CodePtr &PC) {
19446 Flip<PT_IntAPS, PT_Ptr>(S, PC);
19447#if USE_TAILCALLS
19448 MUSTTAIL return InterpNext(S, PC);
19449#else
19450 return true;
19451#endif
19452}
19453PRESERVE_NONE
19454static bool Interp_FlipIntAPSMemberPtr(InterpState &S, CodePtr &PC) {
19455 Flip<PT_IntAPS, PT_MemberPtr>(S, PC);
19456#if USE_TAILCALLS
19457 MUSTTAIL return InterpNext(S, PC);
19458#else
19459 return true;
19460#endif
19461}
19462PRESERVE_NONE
19463static bool Interp_FlipIntAPSFloat(InterpState &S, CodePtr &PC) {
19464 Flip<PT_IntAPS, PT_Float>(S, PC);
19465#if USE_TAILCALLS
19466 MUSTTAIL return InterpNext(S, PC);
19467#else
19468 return true;
19469#endif
19470}
19471PRESERVE_NONE
19472static bool Interp_FlipBoolSint8(InterpState &S, CodePtr &PC) {
19473 Flip<PT_Bool, PT_Sint8>(S, PC);
19474#if USE_TAILCALLS
19475 MUSTTAIL return InterpNext(S, PC);
19476#else
19477 return true;
19478#endif
19479}
19480PRESERVE_NONE
19481static bool Interp_FlipBoolUint8(InterpState &S, CodePtr &PC) {
19482 Flip<PT_Bool, PT_Uint8>(S, PC);
19483#if USE_TAILCALLS
19484 MUSTTAIL return InterpNext(S, PC);
19485#else
19486 return true;
19487#endif
19488}
19489PRESERVE_NONE
19490static bool Interp_FlipBoolSint16(InterpState &S, CodePtr &PC) {
19491 Flip<PT_Bool, PT_Sint16>(S, PC);
19492#if USE_TAILCALLS
19493 MUSTTAIL return InterpNext(S, PC);
19494#else
19495 return true;
19496#endif
19497}
19498PRESERVE_NONE
19499static bool Interp_FlipBoolUint16(InterpState &S, CodePtr &PC) {
19500 Flip<PT_Bool, PT_Uint16>(S, PC);
19501#if USE_TAILCALLS
19502 MUSTTAIL return InterpNext(S, PC);
19503#else
19504 return true;
19505#endif
19506}
19507PRESERVE_NONE
19508static bool Interp_FlipBoolSint32(InterpState &S, CodePtr &PC) {
19509 Flip<PT_Bool, PT_Sint32>(S, PC);
19510#if USE_TAILCALLS
19511 MUSTTAIL return InterpNext(S, PC);
19512#else
19513 return true;
19514#endif
19515}
19516PRESERVE_NONE
19517static bool Interp_FlipBoolUint32(InterpState &S, CodePtr &PC) {
19518 Flip<PT_Bool, PT_Uint32>(S, PC);
19519#if USE_TAILCALLS
19520 MUSTTAIL return InterpNext(S, PC);
19521#else
19522 return true;
19523#endif
19524}
19525PRESERVE_NONE
19526static bool Interp_FlipBoolSint64(InterpState &S, CodePtr &PC) {
19527 Flip<PT_Bool, PT_Sint64>(S, PC);
19528#if USE_TAILCALLS
19529 MUSTTAIL return InterpNext(S, PC);
19530#else
19531 return true;
19532#endif
19533}
19534PRESERVE_NONE
19535static bool Interp_FlipBoolUint64(InterpState &S, CodePtr &PC) {
19536 Flip<PT_Bool, PT_Uint64>(S, PC);
19537#if USE_TAILCALLS
19538 MUSTTAIL return InterpNext(S, PC);
19539#else
19540 return true;
19541#endif
19542}
19543PRESERVE_NONE
19544static bool Interp_FlipBoolIntAP(InterpState &S, CodePtr &PC) {
19545 Flip<PT_Bool, PT_IntAP>(S, PC);
19546#if USE_TAILCALLS
19547 MUSTTAIL return InterpNext(S, PC);
19548#else
19549 return true;
19550#endif
19551}
19552PRESERVE_NONE
19553static bool Interp_FlipBoolIntAPS(InterpState &S, CodePtr &PC) {
19554 Flip<PT_Bool, PT_IntAPS>(S, PC);
19555#if USE_TAILCALLS
19556 MUSTTAIL return InterpNext(S, PC);
19557#else
19558 return true;
19559#endif
19560}
19561PRESERVE_NONE
19562static bool Interp_FlipBoolBool(InterpState &S, CodePtr &PC) {
19563 Flip<PT_Bool, PT_Bool>(S, PC);
19564#if USE_TAILCALLS
19565 MUSTTAIL return InterpNext(S, PC);
19566#else
19567 return true;
19568#endif
19569}
19570PRESERVE_NONE
19571static bool Interp_FlipBoolFixedPoint(InterpState &S, CodePtr &PC) {
19572 Flip<PT_Bool, PT_FixedPoint>(S, PC);
19573#if USE_TAILCALLS
19574 MUSTTAIL return InterpNext(S, PC);
19575#else
19576 return true;
19577#endif
19578}
19579PRESERVE_NONE
19580static bool Interp_FlipBoolPtr(InterpState &S, CodePtr &PC) {
19581 Flip<PT_Bool, PT_Ptr>(S, PC);
19582#if USE_TAILCALLS
19583 MUSTTAIL return InterpNext(S, PC);
19584#else
19585 return true;
19586#endif
19587}
19588PRESERVE_NONE
19589static bool Interp_FlipBoolMemberPtr(InterpState &S, CodePtr &PC) {
19590 Flip<PT_Bool, PT_MemberPtr>(S, PC);
19591#if USE_TAILCALLS
19592 MUSTTAIL return InterpNext(S, PC);
19593#else
19594 return true;
19595#endif
19596}
19597PRESERVE_NONE
19598static bool Interp_FlipBoolFloat(InterpState &S, CodePtr &PC) {
19599 Flip<PT_Bool, PT_Float>(S, PC);
19600#if USE_TAILCALLS
19601 MUSTTAIL return InterpNext(S, PC);
19602#else
19603 return true;
19604#endif
19605}
19606PRESERVE_NONE
19607static bool Interp_FlipFixedPointSint8(InterpState &S, CodePtr &PC) {
19608 Flip<PT_FixedPoint, PT_Sint8>(S, PC);
19609#if USE_TAILCALLS
19610 MUSTTAIL return InterpNext(S, PC);
19611#else
19612 return true;
19613#endif
19614}
19615PRESERVE_NONE
19616static bool Interp_FlipFixedPointUint8(InterpState &S, CodePtr &PC) {
19617 Flip<PT_FixedPoint, PT_Uint8>(S, PC);
19618#if USE_TAILCALLS
19619 MUSTTAIL return InterpNext(S, PC);
19620#else
19621 return true;
19622#endif
19623}
19624PRESERVE_NONE
19625static bool Interp_FlipFixedPointSint16(InterpState &S, CodePtr &PC) {
19626 Flip<PT_FixedPoint, PT_Sint16>(S, PC);
19627#if USE_TAILCALLS
19628 MUSTTAIL return InterpNext(S, PC);
19629#else
19630 return true;
19631#endif
19632}
19633PRESERVE_NONE
19634static bool Interp_FlipFixedPointUint16(InterpState &S, CodePtr &PC) {
19635 Flip<PT_FixedPoint, PT_Uint16>(S, PC);
19636#if USE_TAILCALLS
19637 MUSTTAIL return InterpNext(S, PC);
19638#else
19639 return true;
19640#endif
19641}
19642PRESERVE_NONE
19643static bool Interp_FlipFixedPointSint32(InterpState &S, CodePtr &PC) {
19644 Flip<PT_FixedPoint, PT_Sint32>(S, PC);
19645#if USE_TAILCALLS
19646 MUSTTAIL return InterpNext(S, PC);
19647#else
19648 return true;
19649#endif
19650}
19651PRESERVE_NONE
19652static bool Interp_FlipFixedPointUint32(InterpState &S, CodePtr &PC) {
19653 Flip<PT_FixedPoint, PT_Uint32>(S, PC);
19654#if USE_TAILCALLS
19655 MUSTTAIL return InterpNext(S, PC);
19656#else
19657 return true;
19658#endif
19659}
19660PRESERVE_NONE
19661static bool Interp_FlipFixedPointSint64(InterpState &S, CodePtr &PC) {
19662 Flip<PT_FixedPoint, PT_Sint64>(S, PC);
19663#if USE_TAILCALLS
19664 MUSTTAIL return InterpNext(S, PC);
19665#else
19666 return true;
19667#endif
19668}
19669PRESERVE_NONE
19670static bool Interp_FlipFixedPointUint64(InterpState &S, CodePtr &PC) {
19671 Flip<PT_FixedPoint, PT_Uint64>(S, PC);
19672#if USE_TAILCALLS
19673 MUSTTAIL return InterpNext(S, PC);
19674#else
19675 return true;
19676#endif
19677}
19678PRESERVE_NONE
19679static bool Interp_FlipFixedPointIntAP(InterpState &S, CodePtr &PC) {
19680 Flip<PT_FixedPoint, PT_IntAP>(S, PC);
19681#if USE_TAILCALLS
19682 MUSTTAIL return InterpNext(S, PC);
19683#else
19684 return true;
19685#endif
19686}
19687PRESERVE_NONE
19688static bool Interp_FlipFixedPointIntAPS(InterpState &S, CodePtr &PC) {
19689 Flip<PT_FixedPoint, PT_IntAPS>(S, PC);
19690#if USE_TAILCALLS
19691 MUSTTAIL return InterpNext(S, PC);
19692#else
19693 return true;
19694#endif
19695}
19696PRESERVE_NONE
19697static bool Interp_FlipFixedPointBool(InterpState &S, CodePtr &PC) {
19698 Flip<PT_FixedPoint, PT_Bool>(S, PC);
19699#if USE_TAILCALLS
19700 MUSTTAIL return InterpNext(S, PC);
19701#else
19702 return true;
19703#endif
19704}
19705PRESERVE_NONE
19706static bool Interp_FlipFixedPointFixedPoint(InterpState &S, CodePtr &PC) {
19707 Flip<PT_FixedPoint, PT_FixedPoint>(S, PC);
19708#if USE_TAILCALLS
19709 MUSTTAIL return InterpNext(S, PC);
19710#else
19711 return true;
19712#endif
19713}
19714PRESERVE_NONE
19715static bool Interp_FlipFixedPointPtr(InterpState &S, CodePtr &PC) {
19716 Flip<PT_FixedPoint, PT_Ptr>(S, PC);
19717#if USE_TAILCALLS
19718 MUSTTAIL return InterpNext(S, PC);
19719#else
19720 return true;
19721#endif
19722}
19723PRESERVE_NONE
19724static bool Interp_FlipFixedPointMemberPtr(InterpState &S, CodePtr &PC) {
19725 Flip<PT_FixedPoint, PT_MemberPtr>(S, PC);
19726#if USE_TAILCALLS
19727 MUSTTAIL return InterpNext(S, PC);
19728#else
19729 return true;
19730#endif
19731}
19732PRESERVE_NONE
19733static bool Interp_FlipFixedPointFloat(InterpState &S, CodePtr &PC) {
19734 Flip<PT_FixedPoint, PT_Float>(S, PC);
19735#if USE_TAILCALLS
19736 MUSTTAIL return InterpNext(S, PC);
19737#else
19738 return true;
19739#endif
19740}
19741PRESERVE_NONE
19742static bool Interp_FlipPtrSint8(InterpState &S, CodePtr &PC) {
19743 Flip<PT_Ptr, PT_Sint8>(S, PC);
19744#if USE_TAILCALLS
19745 MUSTTAIL return InterpNext(S, PC);
19746#else
19747 return true;
19748#endif
19749}
19750PRESERVE_NONE
19751static bool Interp_FlipPtrUint8(InterpState &S, CodePtr &PC) {
19752 Flip<PT_Ptr, PT_Uint8>(S, PC);
19753#if USE_TAILCALLS
19754 MUSTTAIL return InterpNext(S, PC);
19755#else
19756 return true;
19757#endif
19758}
19759PRESERVE_NONE
19760static bool Interp_FlipPtrSint16(InterpState &S, CodePtr &PC) {
19761 Flip<PT_Ptr, PT_Sint16>(S, PC);
19762#if USE_TAILCALLS
19763 MUSTTAIL return InterpNext(S, PC);
19764#else
19765 return true;
19766#endif
19767}
19768PRESERVE_NONE
19769static bool Interp_FlipPtrUint16(InterpState &S, CodePtr &PC) {
19770 Flip<PT_Ptr, PT_Uint16>(S, PC);
19771#if USE_TAILCALLS
19772 MUSTTAIL return InterpNext(S, PC);
19773#else
19774 return true;
19775#endif
19776}
19777PRESERVE_NONE
19778static bool Interp_FlipPtrSint32(InterpState &S, CodePtr &PC) {
19779 Flip<PT_Ptr, PT_Sint32>(S, PC);
19780#if USE_TAILCALLS
19781 MUSTTAIL return InterpNext(S, PC);
19782#else
19783 return true;
19784#endif
19785}
19786PRESERVE_NONE
19787static bool Interp_FlipPtrUint32(InterpState &S, CodePtr &PC) {
19788 Flip<PT_Ptr, PT_Uint32>(S, PC);
19789#if USE_TAILCALLS
19790 MUSTTAIL return InterpNext(S, PC);
19791#else
19792 return true;
19793#endif
19794}
19795PRESERVE_NONE
19796static bool Interp_FlipPtrSint64(InterpState &S, CodePtr &PC) {
19797 Flip<PT_Ptr, PT_Sint64>(S, PC);
19798#if USE_TAILCALLS
19799 MUSTTAIL return InterpNext(S, PC);
19800#else
19801 return true;
19802#endif
19803}
19804PRESERVE_NONE
19805static bool Interp_FlipPtrUint64(InterpState &S, CodePtr &PC) {
19806 Flip<PT_Ptr, PT_Uint64>(S, PC);
19807#if USE_TAILCALLS
19808 MUSTTAIL return InterpNext(S, PC);
19809#else
19810 return true;
19811#endif
19812}
19813PRESERVE_NONE
19814static bool Interp_FlipPtrIntAP(InterpState &S, CodePtr &PC) {
19815 Flip<PT_Ptr, PT_IntAP>(S, PC);
19816#if USE_TAILCALLS
19817 MUSTTAIL return InterpNext(S, PC);
19818#else
19819 return true;
19820#endif
19821}
19822PRESERVE_NONE
19823static bool Interp_FlipPtrIntAPS(InterpState &S, CodePtr &PC) {
19824 Flip<PT_Ptr, PT_IntAPS>(S, PC);
19825#if USE_TAILCALLS
19826 MUSTTAIL return InterpNext(S, PC);
19827#else
19828 return true;
19829#endif
19830}
19831PRESERVE_NONE
19832static bool Interp_FlipPtrBool(InterpState &S, CodePtr &PC) {
19833 Flip<PT_Ptr, PT_Bool>(S, PC);
19834#if USE_TAILCALLS
19835 MUSTTAIL return InterpNext(S, PC);
19836#else
19837 return true;
19838#endif
19839}
19840PRESERVE_NONE
19841static bool Interp_FlipPtrFixedPoint(InterpState &S, CodePtr &PC) {
19842 Flip<PT_Ptr, PT_FixedPoint>(S, PC);
19843#if USE_TAILCALLS
19844 MUSTTAIL return InterpNext(S, PC);
19845#else
19846 return true;
19847#endif
19848}
19849PRESERVE_NONE
19850static bool Interp_FlipPtrPtr(InterpState &S, CodePtr &PC) {
19851 Flip<PT_Ptr, PT_Ptr>(S, PC);
19852#if USE_TAILCALLS
19853 MUSTTAIL return InterpNext(S, PC);
19854#else
19855 return true;
19856#endif
19857}
19858PRESERVE_NONE
19859static bool Interp_FlipPtrMemberPtr(InterpState &S, CodePtr &PC) {
19860 Flip<PT_Ptr, PT_MemberPtr>(S, PC);
19861#if USE_TAILCALLS
19862 MUSTTAIL return InterpNext(S, PC);
19863#else
19864 return true;
19865#endif
19866}
19867PRESERVE_NONE
19868static bool Interp_FlipPtrFloat(InterpState &S, CodePtr &PC) {
19869 Flip<PT_Ptr, PT_Float>(S, PC);
19870#if USE_TAILCALLS
19871 MUSTTAIL return InterpNext(S, PC);
19872#else
19873 return true;
19874#endif
19875}
19876PRESERVE_NONE
19877static bool Interp_FlipMemberPtrSint8(InterpState &S, CodePtr &PC) {
19878 Flip<PT_MemberPtr, PT_Sint8>(S, PC);
19879#if USE_TAILCALLS
19880 MUSTTAIL return InterpNext(S, PC);
19881#else
19882 return true;
19883#endif
19884}
19885PRESERVE_NONE
19886static bool Interp_FlipMemberPtrUint8(InterpState &S, CodePtr &PC) {
19887 Flip<PT_MemberPtr, PT_Uint8>(S, PC);
19888#if USE_TAILCALLS
19889 MUSTTAIL return InterpNext(S, PC);
19890#else
19891 return true;
19892#endif
19893}
19894PRESERVE_NONE
19895static bool Interp_FlipMemberPtrSint16(InterpState &S, CodePtr &PC) {
19896 Flip<PT_MemberPtr, PT_Sint16>(S, PC);
19897#if USE_TAILCALLS
19898 MUSTTAIL return InterpNext(S, PC);
19899#else
19900 return true;
19901#endif
19902}
19903PRESERVE_NONE
19904static bool Interp_FlipMemberPtrUint16(InterpState &S, CodePtr &PC) {
19905 Flip<PT_MemberPtr, PT_Uint16>(S, PC);
19906#if USE_TAILCALLS
19907 MUSTTAIL return InterpNext(S, PC);
19908#else
19909 return true;
19910#endif
19911}
19912PRESERVE_NONE
19913static bool Interp_FlipMemberPtrSint32(InterpState &S, CodePtr &PC) {
19914 Flip<PT_MemberPtr, PT_Sint32>(S, PC);
19915#if USE_TAILCALLS
19916 MUSTTAIL return InterpNext(S, PC);
19917#else
19918 return true;
19919#endif
19920}
19921PRESERVE_NONE
19922static bool Interp_FlipMemberPtrUint32(InterpState &S, CodePtr &PC) {
19923 Flip<PT_MemberPtr, PT_Uint32>(S, PC);
19924#if USE_TAILCALLS
19925 MUSTTAIL return InterpNext(S, PC);
19926#else
19927 return true;
19928#endif
19929}
19930PRESERVE_NONE
19931static bool Interp_FlipMemberPtrSint64(InterpState &S, CodePtr &PC) {
19932 Flip<PT_MemberPtr, PT_Sint64>(S, PC);
19933#if USE_TAILCALLS
19934 MUSTTAIL return InterpNext(S, PC);
19935#else
19936 return true;
19937#endif
19938}
19939PRESERVE_NONE
19940static bool Interp_FlipMemberPtrUint64(InterpState &S, CodePtr &PC) {
19941 Flip<PT_MemberPtr, PT_Uint64>(S, PC);
19942#if USE_TAILCALLS
19943 MUSTTAIL return InterpNext(S, PC);
19944#else
19945 return true;
19946#endif
19947}
19948PRESERVE_NONE
19949static bool Interp_FlipMemberPtrIntAP(InterpState &S, CodePtr &PC) {
19950 Flip<PT_MemberPtr, PT_IntAP>(S, PC);
19951#if USE_TAILCALLS
19952 MUSTTAIL return InterpNext(S, PC);
19953#else
19954 return true;
19955#endif
19956}
19957PRESERVE_NONE
19958static bool Interp_FlipMemberPtrIntAPS(InterpState &S, CodePtr &PC) {
19959 Flip<PT_MemberPtr, PT_IntAPS>(S, PC);
19960#if USE_TAILCALLS
19961 MUSTTAIL return InterpNext(S, PC);
19962#else
19963 return true;
19964#endif
19965}
19966PRESERVE_NONE
19967static bool Interp_FlipMemberPtrBool(InterpState &S, CodePtr &PC) {
19968 Flip<PT_MemberPtr, PT_Bool>(S, PC);
19969#if USE_TAILCALLS
19970 MUSTTAIL return InterpNext(S, PC);
19971#else
19972 return true;
19973#endif
19974}
19975PRESERVE_NONE
19976static bool Interp_FlipMemberPtrFixedPoint(InterpState &S, CodePtr &PC) {
19977 Flip<PT_MemberPtr, PT_FixedPoint>(S, PC);
19978#if USE_TAILCALLS
19979 MUSTTAIL return InterpNext(S, PC);
19980#else
19981 return true;
19982#endif
19983}
19984PRESERVE_NONE
19985static bool Interp_FlipMemberPtrPtr(InterpState &S, CodePtr &PC) {
19986 Flip<PT_MemberPtr, PT_Ptr>(S, PC);
19987#if USE_TAILCALLS
19988 MUSTTAIL return InterpNext(S, PC);
19989#else
19990 return true;
19991#endif
19992}
19993PRESERVE_NONE
19994static bool Interp_FlipMemberPtrMemberPtr(InterpState &S, CodePtr &PC) {
19995 Flip<PT_MemberPtr, PT_MemberPtr>(S, PC);
19996#if USE_TAILCALLS
19997 MUSTTAIL return InterpNext(S, PC);
19998#else
19999 return true;
20000#endif
20001}
20002PRESERVE_NONE
20003static bool Interp_FlipMemberPtrFloat(InterpState &S, CodePtr &PC) {
20004 Flip<PT_MemberPtr, PT_Float>(S, PC);
20005#if USE_TAILCALLS
20006 MUSTTAIL return InterpNext(S, PC);
20007#else
20008 return true;
20009#endif
20010}
20011PRESERVE_NONE
20012static bool Interp_FlipFloatSint8(InterpState &S, CodePtr &PC) {
20013 Flip<PT_Float, PT_Sint8>(S, PC);
20014#if USE_TAILCALLS
20015 MUSTTAIL return InterpNext(S, PC);
20016#else
20017 return true;
20018#endif
20019}
20020PRESERVE_NONE
20021static bool Interp_FlipFloatUint8(InterpState &S, CodePtr &PC) {
20022 Flip<PT_Float, PT_Uint8>(S, PC);
20023#if USE_TAILCALLS
20024 MUSTTAIL return InterpNext(S, PC);
20025#else
20026 return true;
20027#endif
20028}
20029PRESERVE_NONE
20030static bool Interp_FlipFloatSint16(InterpState &S, CodePtr &PC) {
20031 Flip<PT_Float, PT_Sint16>(S, PC);
20032#if USE_TAILCALLS
20033 MUSTTAIL return InterpNext(S, PC);
20034#else
20035 return true;
20036#endif
20037}
20038PRESERVE_NONE
20039static bool Interp_FlipFloatUint16(InterpState &S, CodePtr &PC) {
20040 Flip<PT_Float, PT_Uint16>(S, PC);
20041#if USE_TAILCALLS
20042 MUSTTAIL return InterpNext(S, PC);
20043#else
20044 return true;
20045#endif
20046}
20047PRESERVE_NONE
20048static bool Interp_FlipFloatSint32(InterpState &S, CodePtr &PC) {
20049 Flip<PT_Float, PT_Sint32>(S, PC);
20050#if USE_TAILCALLS
20051 MUSTTAIL return InterpNext(S, PC);
20052#else
20053 return true;
20054#endif
20055}
20056PRESERVE_NONE
20057static bool Interp_FlipFloatUint32(InterpState &S, CodePtr &PC) {
20058 Flip<PT_Float, PT_Uint32>(S, PC);
20059#if USE_TAILCALLS
20060 MUSTTAIL return InterpNext(S, PC);
20061#else
20062 return true;
20063#endif
20064}
20065PRESERVE_NONE
20066static bool Interp_FlipFloatSint64(InterpState &S, CodePtr &PC) {
20067 Flip<PT_Float, PT_Sint64>(S, PC);
20068#if USE_TAILCALLS
20069 MUSTTAIL return InterpNext(S, PC);
20070#else
20071 return true;
20072#endif
20073}
20074PRESERVE_NONE
20075static bool Interp_FlipFloatUint64(InterpState &S, CodePtr &PC) {
20076 Flip<PT_Float, PT_Uint64>(S, PC);
20077#if USE_TAILCALLS
20078 MUSTTAIL return InterpNext(S, PC);
20079#else
20080 return true;
20081#endif
20082}
20083PRESERVE_NONE
20084static bool Interp_FlipFloatIntAP(InterpState &S, CodePtr &PC) {
20085 Flip<PT_Float, PT_IntAP>(S, PC);
20086#if USE_TAILCALLS
20087 MUSTTAIL return InterpNext(S, PC);
20088#else
20089 return true;
20090#endif
20091}
20092PRESERVE_NONE
20093static bool Interp_FlipFloatIntAPS(InterpState &S, CodePtr &PC) {
20094 Flip<PT_Float, PT_IntAPS>(S, PC);
20095#if USE_TAILCALLS
20096 MUSTTAIL return InterpNext(S, PC);
20097#else
20098 return true;
20099#endif
20100}
20101PRESERVE_NONE
20102static bool Interp_FlipFloatBool(InterpState &S, CodePtr &PC) {
20103 Flip<PT_Float, PT_Bool>(S, PC);
20104#if USE_TAILCALLS
20105 MUSTTAIL return InterpNext(S, PC);
20106#else
20107 return true;
20108#endif
20109}
20110PRESERVE_NONE
20111static bool Interp_FlipFloatFixedPoint(InterpState &S, CodePtr &PC) {
20112 Flip<PT_Float, PT_FixedPoint>(S, PC);
20113#if USE_TAILCALLS
20114 MUSTTAIL return InterpNext(S, PC);
20115#else
20116 return true;
20117#endif
20118}
20119PRESERVE_NONE
20120static bool Interp_FlipFloatPtr(InterpState &S, CodePtr &PC) {
20121 Flip<PT_Float, PT_Ptr>(S, PC);
20122#if USE_TAILCALLS
20123 MUSTTAIL return InterpNext(S, PC);
20124#else
20125 return true;
20126#endif
20127}
20128PRESERVE_NONE
20129static bool Interp_FlipFloatMemberPtr(InterpState &S, CodePtr &PC) {
20130 Flip<PT_Float, PT_MemberPtr>(S, PC);
20131#if USE_TAILCALLS
20132 MUSTTAIL return InterpNext(S, PC);
20133#else
20134 return true;
20135#endif
20136}
20137PRESERVE_NONE
20138static bool Interp_FlipFloatFloat(InterpState &S, CodePtr &PC) {
20139 Flip<PT_Float, PT_Float>(S, PC);
20140#if USE_TAILCALLS
20141 MUSTTAIL return InterpNext(S, PC);
20142#else
20143 return true;
20144#endif
20145}
20146#endif
20147#ifdef GET_DISASM
20148case OP_FlipSint8Sint8:
20149 Text.Op = PrintName("FlipSint8Sint8");
20150 break;
20151case OP_FlipSint8Uint8:
20152 Text.Op = PrintName("FlipSint8Uint8");
20153 break;
20154case OP_FlipSint8Sint16:
20155 Text.Op = PrintName("FlipSint8Sint16");
20156 break;
20157case OP_FlipSint8Uint16:
20158 Text.Op = PrintName("FlipSint8Uint16");
20159 break;
20160case OP_FlipSint8Sint32:
20161 Text.Op = PrintName("FlipSint8Sint32");
20162 break;
20163case OP_FlipSint8Uint32:
20164 Text.Op = PrintName("FlipSint8Uint32");
20165 break;
20166case OP_FlipSint8Sint64:
20167 Text.Op = PrintName("FlipSint8Sint64");
20168 break;
20169case OP_FlipSint8Uint64:
20170 Text.Op = PrintName("FlipSint8Uint64");
20171 break;
20172case OP_FlipSint8IntAP:
20173 Text.Op = PrintName("FlipSint8IntAP");
20174 break;
20175case OP_FlipSint8IntAPS:
20176 Text.Op = PrintName("FlipSint8IntAPS");
20177 break;
20178case OP_FlipSint8Bool:
20179 Text.Op = PrintName("FlipSint8Bool");
20180 break;
20181case OP_FlipSint8FixedPoint:
20182 Text.Op = PrintName("FlipSint8FixedPoint");
20183 break;
20184case OP_FlipSint8Ptr:
20185 Text.Op = PrintName("FlipSint8Ptr");
20186 break;
20187case OP_FlipSint8MemberPtr:
20188 Text.Op = PrintName("FlipSint8MemberPtr");
20189 break;
20190case OP_FlipSint8Float:
20191 Text.Op = PrintName("FlipSint8Float");
20192 break;
20193case OP_FlipUint8Sint8:
20194 Text.Op = PrintName("FlipUint8Sint8");
20195 break;
20196case OP_FlipUint8Uint8:
20197 Text.Op = PrintName("FlipUint8Uint8");
20198 break;
20199case OP_FlipUint8Sint16:
20200 Text.Op = PrintName("FlipUint8Sint16");
20201 break;
20202case OP_FlipUint8Uint16:
20203 Text.Op = PrintName("FlipUint8Uint16");
20204 break;
20205case OP_FlipUint8Sint32:
20206 Text.Op = PrintName("FlipUint8Sint32");
20207 break;
20208case OP_FlipUint8Uint32:
20209 Text.Op = PrintName("FlipUint8Uint32");
20210 break;
20211case OP_FlipUint8Sint64:
20212 Text.Op = PrintName("FlipUint8Sint64");
20213 break;
20214case OP_FlipUint8Uint64:
20215 Text.Op = PrintName("FlipUint8Uint64");
20216 break;
20217case OP_FlipUint8IntAP:
20218 Text.Op = PrintName("FlipUint8IntAP");
20219 break;
20220case OP_FlipUint8IntAPS:
20221 Text.Op = PrintName("FlipUint8IntAPS");
20222 break;
20223case OP_FlipUint8Bool:
20224 Text.Op = PrintName("FlipUint8Bool");
20225 break;
20226case OP_FlipUint8FixedPoint:
20227 Text.Op = PrintName("FlipUint8FixedPoint");
20228 break;
20229case OP_FlipUint8Ptr:
20230 Text.Op = PrintName("FlipUint8Ptr");
20231 break;
20232case OP_FlipUint8MemberPtr:
20233 Text.Op = PrintName("FlipUint8MemberPtr");
20234 break;
20235case OP_FlipUint8Float:
20236 Text.Op = PrintName("FlipUint8Float");
20237 break;
20238case OP_FlipSint16Sint8:
20239 Text.Op = PrintName("FlipSint16Sint8");
20240 break;
20241case OP_FlipSint16Uint8:
20242 Text.Op = PrintName("FlipSint16Uint8");
20243 break;
20244case OP_FlipSint16Sint16:
20245 Text.Op = PrintName("FlipSint16Sint16");
20246 break;
20247case OP_FlipSint16Uint16:
20248 Text.Op = PrintName("FlipSint16Uint16");
20249 break;
20250case OP_FlipSint16Sint32:
20251 Text.Op = PrintName("FlipSint16Sint32");
20252 break;
20253case OP_FlipSint16Uint32:
20254 Text.Op = PrintName("FlipSint16Uint32");
20255 break;
20256case OP_FlipSint16Sint64:
20257 Text.Op = PrintName("FlipSint16Sint64");
20258 break;
20259case OP_FlipSint16Uint64:
20260 Text.Op = PrintName("FlipSint16Uint64");
20261 break;
20262case OP_FlipSint16IntAP:
20263 Text.Op = PrintName("FlipSint16IntAP");
20264 break;
20265case OP_FlipSint16IntAPS:
20266 Text.Op = PrintName("FlipSint16IntAPS");
20267 break;
20268case OP_FlipSint16Bool:
20269 Text.Op = PrintName("FlipSint16Bool");
20270 break;
20271case OP_FlipSint16FixedPoint:
20272 Text.Op = PrintName("FlipSint16FixedPoint");
20273 break;
20274case OP_FlipSint16Ptr:
20275 Text.Op = PrintName("FlipSint16Ptr");
20276 break;
20277case OP_FlipSint16MemberPtr:
20278 Text.Op = PrintName("FlipSint16MemberPtr");
20279 break;
20280case OP_FlipSint16Float:
20281 Text.Op = PrintName("FlipSint16Float");
20282 break;
20283case OP_FlipUint16Sint8:
20284 Text.Op = PrintName("FlipUint16Sint8");
20285 break;
20286case OP_FlipUint16Uint8:
20287 Text.Op = PrintName("FlipUint16Uint8");
20288 break;
20289case OP_FlipUint16Sint16:
20290 Text.Op = PrintName("FlipUint16Sint16");
20291 break;
20292case OP_FlipUint16Uint16:
20293 Text.Op = PrintName("FlipUint16Uint16");
20294 break;
20295case OP_FlipUint16Sint32:
20296 Text.Op = PrintName("FlipUint16Sint32");
20297 break;
20298case OP_FlipUint16Uint32:
20299 Text.Op = PrintName("FlipUint16Uint32");
20300 break;
20301case OP_FlipUint16Sint64:
20302 Text.Op = PrintName("FlipUint16Sint64");
20303 break;
20304case OP_FlipUint16Uint64:
20305 Text.Op = PrintName("FlipUint16Uint64");
20306 break;
20307case OP_FlipUint16IntAP:
20308 Text.Op = PrintName("FlipUint16IntAP");
20309 break;
20310case OP_FlipUint16IntAPS:
20311 Text.Op = PrintName("FlipUint16IntAPS");
20312 break;
20313case OP_FlipUint16Bool:
20314 Text.Op = PrintName("FlipUint16Bool");
20315 break;
20316case OP_FlipUint16FixedPoint:
20317 Text.Op = PrintName("FlipUint16FixedPoint");
20318 break;
20319case OP_FlipUint16Ptr:
20320 Text.Op = PrintName("FlipUint16Ptr");
20321 break;
20322case OP_FlipUint16MemberPtr:
20323 Text.Op = PrintName("FlipUint16MemberPtr");
20324 break;
20325case OP_FlipUint16Float:
20326 Text.Op = PrintName("FlipUint16Float");
20327 break;
20328case OP_FlipSint32Sint8:
20329 Text.Op = PrintName("FlipSint32Sint8");
20330 break;
20331case OP_FlipSint32Uint8:
20332 Text.Op = PrintName("FlipSint32Uint8");
20333 break;
20334case OP_FlipSint32Sint16:
20335 Text.Op = PrintName("FlipSint32Sint16");
20336 break;
20337case OP_FlipSint32Uint16:
20338 Text.Op = PrintName("FlipSint32Uint16");
20339 break;
20340case OP_FlipSint32Sint32:
20341 Text.Op = PrintName("FlipSint32Sint32");
20342 break;
20343case OP_FlipSint32Uint32:
20344 Text.Op = PrintName("FlipSint32Uint32");
20345 break;
20346case OP_FlipSint32Sint64:
20347 Text.Op = PrintName("FlipSint32Sint64");
20348 break;
20349case OP_FlipSint32Uint64:
20350 Text.Op = PrintName("FlipSint32Uint64");
20351 break;
20352case OP_FlipSint32IntAP:
20353 Text.Op = PrintName("FlipSint32IntAP");
20354 break;
20355case OP_FlipSint32IntAPS:
20356 Text.Op = PrintName("FlipSint32IntAPS");
20357 break;
20358case OP_FlipSint32Bool:
20359 Text.Op = PrintName("FlipSint32Bool");
20360 break;
20361case OP_FlipSint32FixedPoint:
20362 Text.Op = PrintName("FlipSint32FixedPoint");
20363 break;
20364case OP_FlipSint32Ptr:
20365 Text.Op = PrintName("FlipSint32Ptr");
20366 break;
20367case OP_FlipSint32MemberPtr:
20368 Text.Op = PrintName("FlipSint32MemberPtr");
20369 break;
20370case OP_FlipSint32Float:
20371 Text.Op = PrintName("FlipSint32Float");
20372 break;
20373case OP_FlipUint32Sint8:
20374 Text.Op = PrintName("FlipUint32Sint8");
20375 break;
20376case OP_FlipUint32Uint8:
20377 Text.Op = PrintName("FlipUint32Uint8");
20378 break;
20379case OP_FlipUint32Sint16:
20380 Text.Op = PrintName("FlipUint32Sint16");
20381 break;
20382case OP_FlipUint32Uint16:
20383 Text.Op = PrintName("FlipUint32Uint16");
20384 break;
20385case OP_FlipUint32Sint32:
20386 Text.Op = PrintName("FlipUint32Sint32");
20387 break;
20388case OP_FlipUint32Uint32:
20389 Text.Op = PrintName("FlipUint32Uint32");
20390 break;
20391case OP_FlipUint32Sint64:
20392 Text.Op = PrintName("FlipUint32Sint64");
20393 break;
20394case OP_FlipUint32Uint64:
20395 Text.Op = PrintName("FlipUint32Uint64");
20396 break;
20397case OP_FlipUint32IntAP:
20398 Text.Op = PrintName("FlipUint32IntAP");
20399 break;
20400case OP_FlipUint32IntAPS:
20401 Text.Op = PrintName("FlipUint32IntAPS");
20402 break;
20403case OP_FlipUint32Bool:
20404 Text.Op = PrintName("FlipUint32Bool");
20405 break;
20406case OP_FlipUint32FixedPoint:
20407 Text.Op = PrintName("FlipUint32FixedPoint");
20408 break;
20409case OP_FlipUint32Ptr:
20410 Text.Op = PrintName("FlipUint32Ptr");
20411 break;
20412case OP_FlipUint32MemberPtr:
20413 Text.Op = PrintName("FlipUint32MemberPtr");
20414 break;
20415case OP_FlipUint32Float:
20416 Text.Op = PrintName("FlipUint32Float");
20417 break;
20418case OP_FlipSint64Sint8:
20419 Text.Op = PrintName("FlipSint64Sint8");
20420 break;
20421case OP_FlipSint64Uint8:
20422 Text.Op = PrintName("FlipSint64Uint8");
20423 break;
20424case OP_FlipSint64Sint16:
20425 Text.Op = PrintName("FlipSint64Sint16");
20426 break;
20427case OP_FlipSint64Uint16:
20428 Text.Op = PrintName("FlipSint64Uint16");
20429 break;
20430case OP_FlipSint64Sint32:
20431 Text.Op = PrintName("FlipSint64Sint32");
20432 break;
20433case OP_FlipSint64Uint32:
20434 Text.Op = PrintName("FlipSint64Uint32");
20435 break;
20436case OP_FlipSint64Sint64:
20437 Text.Op = PrintName("FlipSint64Sint64");
20438 break;
20439case OP_FlipSint64Uint64:
20440 Text.Op = PrintName("FlipSint64Uint64");
20441 break;
20442case OP_FlipSint64IntAP:
20443 Text.Op = PrintName("FlipSint64IntAP");
20444 break;
20445case OP_FlipSint64IntAPS:
20446 Text.Op = PrintName("FlipSint64IntAPS");
20447 break;
20448case OP_FlipSint64Bool:
20449 Text.Op = PrintName("FlipSint64Bool");
20450 break;
20451case OP_FlipSint64FixedPoint:
20452 Text.Op = PrintName("FlipSint64FixedPoint");
20453 break;
20454case OP_FlipSint64Ptr:
20455 Text.Op = PrintName("FlipSint64Ptr");
20456 break;
20457case OP_FlipSint64MemberPtr:
20458 Text.Op = PrintName("FlipSint64MemberPtr");
20459 break;
20460case OP_FlipSint64Float:
20461 Text.Op = PrintName("FlipSint64Float");
20462 break;
20463case OP_FlipUint64Sint8:
20464 Text.Op = PrintName("FlipUint64Sint8");
20465 break;
20466case OP_FlipUint64Uint8:
20467 Text.Op = PrintName("FlipUint64Uint8");
20468 break;
20469case OP_FlipUint64Sint16:
20470 Text.Op = PrintName("FlipUint64Sint16");
20471 break;
20472case OP_FlipUint64Uint16:
20473 Text.Op = PrintName("FlipUint64Uint16");
20474 break;
20475case OP_FlipUint64Sint32:
20476 Text.Op = PrintName("FlipUint64Sint32");
20477 break;
20478case OP_FlipUint64Uint32:
20479 Text.Op = PrintName("FlipUint64Uint32");
20480 break;
20481case OP_FlipUint64Sint64:
20482 Text.Op = PrintName("FlipUint64Sint64");
20483 break;
20484case OP_FlipUint64Uint64:
20485 Text.Op = PrintName("FlipUint64Uint64");
20486 break;
20487case OP_FlipUint64IntAP:
20488 Text.Op = PrintName("FlipUint64IntAP");
20489 break;
20490case OP_FlipUint64IntAPS:
20491 Text.Op = PrintName("FlipUint64IntAPS");
20492 break;
20493case OP_FlipUint64Bool:
20494 Text.Op = PrintName("FlipUint64Bool");
20495 break;
20496case OP_FlipUint64FixedPoint:
20497 Text.Op = PrintName("FlipUint64FixedPoint");
20498 break;
20499case OP_FlipUint64Ptr:
20500 Text.Op = PrintName("FlipUint64Ptr");
20501 break;
20502case OP_FlipUint64MemberPtr:
20503 Text.Op = PrintName("FlipUint64MemberPtr");
20504 break;
20505case OP_FlipUint64Float:
20506 Text.Op = PrintName("FlipUint64Float");
20507 break;
20508case OP_FlipIntAPSint8:
20509 Text.Op = PrintName("FlipIntAPSint8");
20510 break;
20511case OP_FlipIntAPUint8:
20512 Text.Op = PrintName("FlipIntAPUint8");
20513 break;
20514case OP_FlipIntAPSint16:
20515 Text.Op = PrintName("FlipIntAPSint16");
20516 break;
20517case OP_FlipIntAPUint16:
20518 Text.Op = PrintName("FlipIntAPUint16");
20519 break;
20520case OP_FlipIntAPSint32:
20521 Text.Op = PrintName("FlipIntAPSint32");
20522 break;
20523case OP_FlipIntAPUint32:
20524 Text.Op = PrintName("FlipIntAPUint32");
20525 break;
20526case OP_FlipIntAPSint64:
20527 Text.Op = PrintName("FlipIntAPSint64");
20528 break;
20529case OP_FlipIntAPUint64:
20530 Text.Op = PrintName("FlipIntAPUint64");
20531 break;
20532case OP_FlipIntAPIntAP:
20533 Text.Op = PrintName("FlipIntAPIntAP");
20534 break;
20535case OP_FlipIntAPIntAPS:
20536 Text.Op = PrintName("FlipIntAPIntAPS");
20537 break;
20538case OP_FlipIntAPBool:
20539 Text.Op = PrintName("FlipIntAPBool");
20540 break;
20541case OP_FlipIntAPFixedPoint:
20542 Text.Op = PrintName("FlipIntAPFixedPoint");
20543 break;
20544case OP_FlipIntAPPtr:
20545 Text.Op = PrintName("FlipIntAPPtr");
20546 break;
20547case OP_FlipIntAPMemberPtr:
20548 Text.Op = PrintName("FlipIntAPMemberPtr");
20549 break;
20550case OP_FlipIntAPFloat:
20551 Text.Op = PrintName("FlipIntAPFloat");
20552 break;
20553case OP_FlipIntAPSSint8:
20554 Text.Op = PrintName("FlipIntAPSSint8");
20555 break;
20556case OP_FlipIntAPSUint8:
20557 Text.Op = PrintName("FlipIntAPSUint8");
20558 break;
20559case OP_FlipIntAPSSint16:
20560 Text.Op = PrintName("FlipIntAPSSint16");
20561 break;
20562case OP_FlipIntAPSUint16:
20563 Text.Op = PrintName("FlipIntAPSUint16");
20564 break;
20565case OP_FlipIntAPSSint32:
20566 Text.Op = PrintName("FlipIntAPSSint32");
20567 break;
20568case OP_FlipIntAPSUint32:
20569 Text.Op = PrintName("FlipIntAPSUint32");
20570 break;
20571case OP_FlipIntAPSSint64:
20572 Text.Op = PrintName("FlipIntAPSSint64");
20573 break;
20574case OP_FlipIntAPSUint64:
20575 Text.Op = PrintName("FlipIntAPSUint64");
20576 break;
20577case OP_FlipIntAPSIntAP:
20578 Text.Op = PrintName("FlipIntAPSIntAP");
20579 break;
20580case OP_FlipIntAPSIntAPS:
20581 Text.Op = PrintName("FlipIntAPSIntAPS");
20582 break;
20583case OP_FlipIntAPSBool:
20584 Text.Op = PrintName("FlipIntAPSBool");
20585 break;
20586case OP_FlipIntAPSFixedPoint:
20587 Text.Op = PrintName("FlipIntAPSFixedPoint");
20588 break;
20589case OP_FlipIntAPSPtr:
20590 Text.Op = PrintName("FlipIntAPSPtr");
20591 break;
20592case OP_FlipIntAPSMemberPtr:
20593 Text.Op = PrintName("FlipIntAPSMemberPtr");
20594 break;
20595case OP_FlipIntAPSFloat:
20596 Text.Op = PrintName("FlipIntAPSFloat");
20597 break;
20598case OP_FlipBoolSint8:
20599 Text.Op = PrintName("FlipBoolSint8");
20600 break;
20601case OP_FlipBoolUint8:
20602 Text.Op = PrintName("FlipBoolUint8");
20603 break;
20604case OP_FlipBoolSint16:
20605 Text.Op = PrintName("FlipBoolSint16");
20606 break;
20607case OP_FlipBoolUint16:
20608 Text.Op = PrintName("FlipBoolUint16");
20609 break;
20610case OP_FlipBoolSint32:
20611 Text.Op = PrintName("FlipBoolSint32");
20612 break;
20613case OP_FlipBoolUint32:
20614 Text.Op = PrintName("FlipBoolUint32");
20615 break;
20616case OP_FlipBoolSint64:
20617 Text.Op = PrintName("FlipBoolSint64");
20618 break;
20619case OP_FlipBoolUint64:
20620 Text.Op = PrintName("FlipBoolUint64");
20621 break;
20622case OP_FlipBoolIntAP:
20623 Text.Op = PrintName("FlipBoolIntAP");
20624 break;
20625case OP_FlipBoolIntAPS:
20626 Text.Op = PrintName("FlipBoolIntAPS");
20627 break;
20628case OP_FlipBoolBool:
20629 Text.Op = PrintName("FlipBoolBool");
20630 break;
20631case OP_FlipBoolFixedPoint:
20632 Text.Op = PrintName("FlipBoolFixedPoint");
20633 break;
20634case OP_FlipBoolPtr:
20635 Text.Op = PrintName("FlipBoolPtr");
20636 break;
20637case OP_FlipBoolMemberPtr:
20638 Text.Op = PrintName("FlipBoolMemberPtr");
20639 break;
20640case OP_FlipBoolFloat:
20641 Text.Op = PrintName("FlipBoolFloat");
20642 break;
20643case OP_FlipFixedPointSint8:
20644 Text.Op = PrintName("FlipFixedPointSint8");
20645 break;
20646case OP_FlipFixedPointUint8:
20647 Text.Op = PrintName("FlipFixedPointUint8");
20648 break;
20649case OP_FlipFixedPointSint16:
20650 Text.Op = PrintName("FlipFixedPointSint16");
20651 break;
20652case OP_FlipFixedPointUint16:
20653 Text.Op = PrintName("FlipFixedPointUint16");
20654 break;
20655case OP_FlipFixedPointSint32:
20656 Text.Op = PrintName("FlipFixedPointSint32");
20657 break;
20658case OP_FlipFixedPointUint32:
20659 Text.Op = PrintName("FlipFixedPointUint32");
20660 break;
20661case OP_FlipFixedPointSint64:
20662 Text.Op = PrintName("FlipFixedPointSint64");
20663 break;
20664case OP_FlipFixedPointUint64:
20665 Text.Op = PrintName("FlipFixedPointUint64");
20666 break;
20667case OP_FlipFixedPointIntAP:
20668 Text.Op = PrintName("FlipFixedPointIntAP");
20669 break;
20670case OP_FlipFixedPointIntAPS:
20671 Text.Op = PrintName("FlipFixedPointIntAPS");
20672 break;
20673case OP_FlipFixedPointBool:
20674 Text.Op = PrintName("FlipFixedPointBool");
20675 break;
20676case OP_FlipFixedPointFixedPoint:
20677 Text.Op = PrintName("FlipFixedPointFixedPoint");
20678 break;
20679case OP_FlipFixedPointPtr:
20680 Text.Op = PrintName("FlipFixedPointPtr");
20681 break;
20682case OP_FlipFixedPointMemberPtr:
20683 Text.Op = PrintName("FlipFixedPointMemberPtr");
20684 break;
20685case OP_FlipFixedPointFloat:
20686 Text.Op = PrintName("FlipFixedPointFloat");
20687 break;
20688case OP_FlipPtrSint8:
20689 Text.Op = PrintName("FlipPtrSint8");
20690 break;
20691case OP_FlipPtrUint8:
20692 Text.Op = PrintName("FlipPtrUint8");
20693 break;
20694case OP_FlipPtrSint16:
20695 Text.Op = PrintName("FlipPtrSint16");
20696 break;
20697case OP_FlipPtrUint16:
20698 Text.Op = PrintName("FlipPtrUint16");
20699 break;
20700case OP_FlipPtrSint32:
20701 Text.Op = PrintName("FlipPtrSint32");
20702 break;
20703case OP_FlipPtrUint32:
20704 Text.Op = PrintName("FlipPtrUint32");
20705 break;
20706case OP_FlipPtrSint64:
20707 Text.Op = PrintName("FlipPtrSint64");
20708 break;
20709case OP_FlipPtrUint64:
20710 Text.Op = PrintName("FlipPtrUint64");
20711 break;
20712case OP_FlipPtrIntAP:
20713 Text.Op = PrintName("FlipPtrIntAP");
20714 break;
20715case OP_FlipPtrIntAPS:
20716 Text.Op = PrintName("FlipPtrIntAPS");
20717 break;
20718case OP_FlipPtrBool:
20719 Text.Op = PrintName("FlipPtrBool");
20720 break;
20721case OP_FlipPtrFixedPoint:
20722 Text.Op = PrintName("FlipPtrFixedPoint");
20723 break;
20724case OP_FlipPtrPtr:
20725 Text.Op = PrintName("FlipPtrPtr");
20726 break;
20727case OP_FlipPtrMemberPtr:
20728 Text.Op = PrintName("FlipPtrMemberPtr");
20729 break;
20730case OP_FlipPtrFloat:
20731 Text.Op = PrintName("FlipPtrFloat");
20732 break;
20733case OP_FlipMemberPtrSint8:
20734 Text.Op = PrintName("FlipMemberPtrSint8");
20735 break;
20736case OP_FlipMemberPtrUint8:
20737 Text.Op = PrintName("FlipMemberPtrUint8");
20738 break;
20739case OP_FlipMemberPtrSint16:
20740 Text.Op = PrintName("FlipMemberPtrSint16");
20741 break;
20742case OP_FlipMemberPtrUint16:
20743 Text.Op = PrintName("FlipMemberPtrUint16");
20744 break;
20745case OP_FlipMemberPtrSint32:
20746 Text.Op = PrintName("FlipMemberPtrSint32");
20747 break;
20748case OP_FlipMemberPtrUint32:
20749 Text.Op = PrintName("FlipMemberPtrUint32");
20750 break;
20751case OP_FlipMemberPtrSint64:
20752 Text.Op = PrintName("FlipMemberPtrSint64");
20753 break;
20754case OP_FlipMemberPtrUint64:
20755 Text.Op = PrintName("FlipMemberPtrUint64");
20756 break;
20757case OP_FlipMemberPtrIntAP:
20758 Text.Op = PrintName("FlipMemberPtrIntAP");
20759 break;
20760case OP_FlipMemberPtrIntAPS:
20761 Text.Op = PrintName("FlipMemberPtrIntAPS");
20762 break;
20763case OP_FlipMemberPtrBool:
20764 Text.Op = PrintName("FlipMemberPtrBool");
20765 break;
20766case OP_FlipMemberPtrFixedPoint:
20767 Text.Op = PrintName("FlipMemberPtrFixedPoint");
20768 break;
20769case OP_FlipMemberPtrPtr:
20770 Text.Op = PrintName("FlipMemberPtrPtr");
20771 break;
20772case OP_FlipMemberPtrMemberPtr:
20773 Text.Op = PrintName("FlipMemberPtrMemberPtr");
20774 break;
20775case OP_FlipMemberPtrFloat:
20776 Text.Op = PrintName("FlipMemberPtrFloat");
20777 break;
20778case OP_FlipFloatSint8:
20779 Text.Op = PrintName("FlipFloatSint8");
20780 break;
20781case OP_FlipFloatUint8:
20782 Text.Op = PrintName("FlipFloatUint8");
20783 break;
20784case OP_FlipFloatSint16:
20785 Text.Op = PrintName("FlipFloatSint16");
20786 break;
20787case OP_FlipFloatUint16:
20788 Text.Op = PrintName("FlipFloatUint16");
20789 break;
20790case OP_FlipFloatSint32:
20791 Text.Op = PrintName("FlipFloatSint32");
20792 break;
20793case OP_FlipFloatUint32:
20794 Text.Op = PrintName("FlipFloatUint32");
20795 break;
20796case OP_FlipFloatSint64:
20797 Text.Op = PrintName("FlipFloatSint64");
20798 break;
20799case OP_FlipFloatUint64:
20800 Text.Op = PrintName("FlipFloatUint64");
20801 break;
20802case OP_FlipFloatIntAP:
20803 Text.Op = PrintName("FlipFloatIntAP");
20804 break;
20805case OP_FlipFloatIntAPS:
20806 Text.Op = PrintName("FlipFloatIntAPS");
20807 break;
20808case OP_FlipFloatBool:
20809 Text.Op = PrintName("FlipFloatBool");
20810 break;
20811case OP_FlipFloatFixedPoint:
20812 Text.Op = PrintName("FlipFloatFixedPoint");
20813 break;
20814case OP_FlipFloatPtr:
20815 Text.Op = PrintName("FlipFloatPtr");
20816 break;
20817case OP_FlipFloatMemberPtr:
20818 Text.Op = PrintName("FlipFloatMemberPtr");
20819 break;
20820case OP_FlipFloatFloat:
20821 Text.Op = PrintName("FlipFloatFloat");
20822 break;
20823#endif
20824#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
20825bool emitFlipSint8Sint8(SourceInfo);
20826bool emitFlipSint8Uint8(SourceInfo);
20827bool emitFlipSint8Sint16(SourceInfo);
20828bool emitFlipSint8Uint16(SourceInfo);
20829bool emitFlipSint8Sint32(SourceInfo);
20830bool emitFlipSint8Uint32(SourceInfo);
20831bool emitFlipSint8Sint64(SourceInfo);
20832bool emitFlipSint8Uint64(SourceInfo);
20833bool emitFlipSint8IntAP(SourceInfo);
20834bool emitFlipSint8IntAPS(SourceInfo);
20835bool emitFlipSint8Bool(SourceInfo);
20836bool emitFlipSint8FixedPoint(SourceInfo);
20837bool emitFlipSint8Ptr(SourceInfo);
20838bool emitFlipSint8MemberPtr(SourceInfo);
20839bool emitFlipSint8Float(SourceInfo);
20840bool emitFlipUint8Sint8(SourceInfo);
20841bool emitFlipUint8Uint8(SourceInfo);
20842bool emitFlipUint8Sint16(SourceInfo);
20843bool emitFlipUint8Uint16(SourceInfo);
20844bool emitFlipUint8Sint32(SourceInfo);
20845bool emitFlipUint8Uint32(SourceInfo);
20846bool emitFlipUint8Sint64(SourceInfo);
20847bool emitFlipUint8Uint64(SourceInfo);
20848bool emitFlipUint8IntAP(SourceInfo);
20849bool emitFlipUint8IntAPS(SourceInfo);
20850bool emitFlipUint8Bool(SourceInfo);
20851bool emitFlipUint8FixedPoint(SourceInfo);
20852bool emitFlipUint8Ptr(SourceInfo);
20853bool emitFlipUint8MemberPtr(SourceInfo);
20854bool emitFlipUint8Float(SourceInfo);
20855bool emitFlipSint16Sint8(SourceInfo);
20856bool emitFlipSint16Uint8(SourceInfo);
20857bool emitFlipSint16Sint16(SourceInfo);
20858bool emitFlipSint16Uint16(SourceInfo);
20859bool emitFlipSint16Sint32(SourceInfo);
20860bool emitFlipSint16Uint32(SourceInfo);
20861bool emitFlipSint16Sint64(SourceInfo);
20862bool emitFlipSint16Uint64(SourceInfo);
20863bool emitFlipSint16IntAP(SourceInfo);
20864bool emitFlipSint16IntAPS(SourceInfo);
20865bool emitFlipSint16Bool(SourceInfo);
20866bool emitFlipSint16FixedPoint(SourceInfo);
20867bool emitFlipSint16Ptr(SourceInfo);
20868bool emitFlipSint16MemberPtr(SourceInfo);
20869bool emitFlipSint16Float(SourceInfo);
20870bool emitFlipUint16Sint8(SourceInfo);
20871bool emitFlipUint16Uint8(SourceInfo);
20872bool emitFlipUint16Sint16(SourceInfo);
20873bool emitFlipUint16Uint16(SourceInfo);
20874bool emitFlipUint16Sint32(SourceInfo);
20875bool emitFlipUint16Uint32(SourceInfo);
20876bool emitFlipUint16Sint64(SourceInfo);
20877bool emitFlipUint16Uint64(SourceInfo);
20878bool emitFlipUint16IntAP(SourceInfo);
20879bool emitFlipUint16IntAPS(SourceInfo);
20880bool emitFlipUint16Bool(SourceInfo);
20881bool emitFlipUint16FixedPoint(SourceInfo);
20882bool emitFlipUint16Ptr(SourceInfo);
20883bool emitFlipUint16MemberPtr(SourceInfo);
20884bool emitFlipUint16Float(SourceInfo);
20885bool emitFlipSint32Sint8(SourceInfo);
20886bool emitFlipSint32Uint8(SourceInfo);
20887bool emitFlipSint32Sint16(SourceInfo);
20888bool emitFlipSint32Uint16(SourceInfo);
20889bool emitFlipSint32Sint32(SourceInfo);
20890bool emitFlipSint32Uint32(SourceInfo);
20891bool emitFlipSint32Sint64(SourceInfo);
20892bool emitFlipSint32Uint64(SourceInfo);
20893bool emitFlipSint32IntAP(SourceInfo);
20894bool emitFlipSint32IntAPS(SourceInfo);
20895bool emitFlipSint32Bool(SourceInfo);
20896bool emitFlipSint32FixedPoint(SourceInfo);
20897bool emitFlipSint32Ptr(SourceInfo);
20898bool emitFlipSint32MemberPtr(SourceInfo);
20899bool emitFlipSint32Float(SourceInfo);
20900bool emitFlipUint32Sint8(SourceInfo);
20901bool emitFlipUint32Uint8(SourceInfo);
20902bool emitFlipUint32Sint16(SourceInfo);
20903bool emitFlipUint32Uint16(SourceInfo);
20904bool emitFlipUint32Sint32(SourceInfo);
20905bool emitFlipUint32Uint32(SourceInfo);
20906bool emitFlipUint32Sint64(SourceInfo);
20907bool emitFlipUint32Uint64(SourceInfo);
20908bool emitFlipUint32IntAP(SourceInfo);
20909bool emitFlipUint32IntAPS(SourceInfo);
20910bool emitFlipUint32Bool(SourceInfo);
20911bool emitFlipUint32FixedPoint(SourceInfo);
20912bool emitFlipUint32Ptr(SourceInfo);
20913bool emitFlipUint32MemberPtr(SourceInfo);
20914bool emitFlipUint32Float(SourceInfo);
20915bool emitFlipSint64Sint8(SourceInfo);
20916bool emitFlipSint64Uint8(SourceInfo);
20917bool emitFlipSint64Sint16(SourceInfo);
20918bool emitFlipSint64Uint16(SourceInfo);
20919bool emitFlipSint64Sint32(SourceInfo);
20920bool emitFlipSint64Uint32(SourceInfo);
20921bool emitFlipSint64Sint64(SourceInfo);
20922bool emitFlipSint64Uint64(SourceInfo);
20923bool emitFlipSint64IntAP(SourceInfo);
20924bool emitFlipSint64IntAPS(SourceInfo);
20925bool emitFlipSint64Bool(SourceInfo);
20926bool emitFlipSint64FixedPoint(SourceInfo);
20927bool emitFlipSint64Ptr(SourceInfo);
20928bool emitFlipSint64MemberPtr(SourceInfo);
20929bool emitFlipSint64Float(SourceInfo);
20930bool emitFlipUint64Sint8(SourceInfo);
20931bool emitFlipUint64Uint8(SourceInfo);
20932bool emitFlipUint64Sint16(SourceInfo);
20933bool emitFlipUint64Uint16(SourceInfo);
20934bool emitFlipUint64Sint32(SourceInfo);
20935bool emitFlipUint64Uint32(SourceInfo);
20936bool emitFlipUint64Sint64(SourceInfo);
20937bool emitFlipUint64Uint64(SourceInfo);
20938bool emitFlipUint64IntAP(SourceInfo);
20939bool emitFlipUint64IntAPS(SourceInfo);
20940bool emitFlipUint64Bool(SourceInfo);
20941bool emitFlipUint64FixedPoint(SourceInfo);
20942bool emitFlipUint64Ptr(SourceInfo);
20943bool emitFlipUint64MemberPtr(SourceInfo);
20944bool emitFlipUint64Float(SourceInfo);
20945bool emitFlipIntAPSint8(SourceInfo);
20946bool emitFlipIntAPUint8(SourceInfo);
20947bool emitFlipIntAPSint16(SourceInfo);
20948bool emitFlipIntAPUint16(SourceInfo);
20949bool emitFlipIntAPSint32(SourceInfo);
20950bool emitFlipIntAPUint32(SourceInfo);
20951bool emitFlipIntAPSint64(SourceInfo);
20952bool emitFlipIntAPUint64(SourceInfo);
20953bool emitFlipIntAPIntAP(SourceInfo);
20954bool emitFlipIntAPIntAPS(SourceInfo);
20955bool emitFlipIntAPBool(SourceInfo);
20956bool emitFlipIntAPFixedPoint(SourceInfo);
20957bool emitFlipIntAPPtr(SourceInfo);
20958bool emitFlipIntAPMemberPtr(SourceInfo);
20959bool emitFlipIntAPFloat(SourceInfo);
20960bool emitFlipIntAPSSint8(SourceInfo);
20961bool emitFlipIntAPSUint8(SourceInfo);
20962bool emitFlipIntAPSSint16(SourceInfo);
20963bool emitFlipIntAPSUint16(SourceInfo);
20964bool emitFlipIntAPSSint32(SourceInfo);
20965bool emitFlipIntAPSUint32(SourceInfo);
20966bool emitFlipIntAPSSint64(SourceInfo);
20967bool emitFlipIntAPSUint64(SourceInfo);
20968bool emitFlipIntAPSIntAP(SourceInfo);
20969bool emitFlipIntAPSIntAPS(SourceInfo);
20970bool emitFlipIntAPSBool(SourceInfo);
20971bool emitFlipIntAPSFixedPoint(SourceInfo);
20972bool emitFlipIntAPSPtr(SourceInfo);
20973bool emitFlipIntAPSMemberPtr(SourceInfo);
20974bool emitFlipIntAPSFloat(SourceInfo);
20975bool emitFlipBoolSint8(SourceInfo);
20976bool emitFlipBoolUint8(SourceInfo);
20977bool emitFlipBoolSint16(SourceInfo);
20978bool emitFlipBoolUint16(SourceInfo);
20979bool emitFlipBoolSint32(SourceInfo);
20980bool emitFlipBoolUint32(SourceInfo);
20981bool emitFlipBoolSint64(SourceInfo);
20982bool emitFlipBoolUint64(SourceInfo);
20983bool emitFlipBoolIntAP(SourceInfo);
20984bool emitFlipBoolIntAPS(SourceInfo);
20985bool emitFlipBoolBool(SourceInfo);
20986bool emitFlipBoolFixedPoint(SourceInfo);
20987bool emitFlipBoolPtr(SourceInfo);
20988bool emitFlipBoolMemberPtr(SourceInfo);
20989bool emitFlipBoolFloat(SourceInfo);
20990bool emitFlipFixedPointSint8(SourceInfo);
20991bool emitFlipFixedPointUint8(SourceInfo);
20992bool emitFlipFixedPointSint16(SourceInfo);
20993bool emitFlipFixedPointUint16(SourceInfo);
20994bool emitFlipFixedPointSint32(SourceInfo);
20995bool emitFlipFixedPointUint32(SourceInfo);
20996bool emitFlipFixedPointSint64(SourceInfo);
20997bool emitFlipFixedPointUint64(SourceInfo);
20998bool emitFlipFixedPointIntAP(SourceInfo);
20999bool emitFlipFixedPointIntAPS(SourceInfo);
21000bool emitFlipFixedPointBool(SourceInfo);
21001bool emitFlipFixedPointFixedPoint(SourceInfo);
21002bool emitFlipFixedPointPtr(SourceInfo);
21003bool emitFlipFixedPointMemberPtr(SourceInfo);
21004bool emitFlipFixedPointFloat(SourceInfo);
21005bool emitFlipPtrSint8(SourceInfo);
21006bool emitFlipPtrUint8(SourceInfo);
21007bool emitFlipPtrSint16(SourceInfo);
21008bool emitFlipPtrUint16(SourceInfo);
21009bool emitFlipPtrSint32(SourceInfo);
21010bool emitFlipPtrUint32(SourceInfo);
21011bool emitFlipPtrSint64(SourceInfo);
21012bool emitFlipPtrUint64(SourceInfo);
21013bool emitFlipPtrIntAP(SourceInfo);
21014bool emitFlipPtrIntAPS(SourceInfo);
21015bool emitFlipPtrBool(SourceInfo);
21016bool emitFlipPtrFixedPoint(SourceInfo);
21017bool emitFlipPtrPtr(SourceInfo);
21018bool emitFlipPtrMemberPtr(SourceInfo);
21019bool emitFlipPtrFloat(SourceInfo);
21020bool emitFlipMemberPtrSint8(SourceInfo);
21021bool emitFlipMemberPtrUint8(SourceInfo);
21022bool emitFlipMemberPtrSint16(SourceInfo);
21023bool emitFlipMemberPtrUint16(SourceInfo);
21024bool emitFlipMemberPtrSint32(SourceInfo);
21025bool emitFlipMemberPtrUint32(SourceInfo);
21026bool emitFlipMemberPtrSint64(SourceInfo);
21027bool emitFlipMemberPtrUint64(SourceInfo);
21028bool emitFlipMemberPtrIntAP(SourceInfo);
21029bool emitFlipMemberPtrIntAPS(SourceInfo);
21030bool emitFlipMemberPtrBool(SourceInfo);
21031bool emitFlipMemberPtrFixedPoint(SourceInfo);
21032bool emitFlipMemberPtrPtr(SourceInfo);
21033bool emitFlipMemberPtrMemberPtr(SourceInfo);
21034bool emitFlipMemberPtrFloat(SourceInfo);
21035bool emitFlipFloatSint8(SourceInfo);
21036bool emitFlipFloatUint8(SourceInfo);
21037bool emitFlipFloatSint16(SourceInfo);
21038bool emitFlipFloatUint16(SourceInfo);
21039bool emitFlipFloatSint32(SourceInfo);
21040bool emitFlipFloatUint32(SourceInfo);
21041bool emitFlipFloatSint64(SourceInfo);
21042bool emitFlipFloatUint64(SourceInfo);
21043bool emitFlipFloatIntAP(SourceInfo);
21044bool emitFlipFloatIntAPS(SourceInfo);
21045bool emitFlipFloatBool(SourceInfo);
21046bool emitFlipFloatFixedPoint(SourceInfo);
21047bool emitFlipFloatPtr(SourceInfo);
21048bool emitFlipFloatMemberPtr(SourceInfo);
21049bool emitFlipFloatFloat(SourceInfo);
21050#endif
21051#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21052[[nodiscard]] bool emitFlip(PrimType, PrimType, SourceInfo I);
21053#endif
21054#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
21055bool
21056#if defined(GET_EVAL_IMPL)
21057EvalEmitter
21058#else
21059ByteCodeEmitter
21060#endif
21061::emitFlip(PrimType T0, PrimType T1, SourceInfo I) {
21062 switch (T0) {
21063 case PT_Sint8:
21064 switch (T1) {
21065 case PT_Sint8:
21066 return emitFlipSint8Sint8(I);
21067 case PT_Uint8:
21068 return emitFlipSint8Uint8(I);
21069 case PT_Sint16:
21070 return emitFlipSint8Sint16(I);
21071 case PT_Uint16:
21072 return emitFlipSint8Uint16(I);
21073 case PT_Sint32:
21074 return emitFlipSint8Sint32(I);
21075 case PT_Uint32:
21076 return emitFlipSint8Uint32(I);
21077 case PT_Sint64:
21078 return emitFlipSint8Sint64(I);
21079 case PT_Uint64:
21080 return emitFlipSint8Uint64(I);
21081 case PT_IntAP:
21082 return emitFlipSint8IntAP(I);
21083 case PT_IntAPS:
21084 return emitFlipSint8IntAPS(I);
21085 case PT_Bool:
21086 return emitFlipSint8Bool(I);
21087 case PT_FixedPoint:
21088 return emitFlipSint8FixedPoint(I);
21089 case PT_Ptr:
21090 return emitFlipSint8Ptr(I);
21091 case PT_MemberPtr:
21092 return emitFlipSint8MemberPtr(I);
21093 case PT_Float:
21094 return emitFlipSint8Float(I);
21095 }
21096 llvm_unreachable("invalid enum value");
21097 case PT_Uint8:
21098 switch (T1) {
21099 case PT_Sint8:
21100 return emitFlipUint8Sint8(I);
21101 case PT_Uint8:
21102 return emitFlipUint8Uint8(I);
21103 case PT_Sint16:
21104 return emitFlipUint8Sint16(I);
21105 case PT_Uint16:
21106 return emitFlipUint8Uint16(I);
21107 case PT_Sint32:
21108 return emitFlipUint8Sint32(I);
21109 case PT_Uint32:
21110 return emitFlipUint8Uint32(I);
21111 case PT_Sint64:
21112 return emitFlipUint8Sint64(I);
21113 case PT_Uint64:
21114 return emitFlipUint8Uint64(I);
21115 case PT_IntAP:
21116 return emitFlipUint8IntAP(I);
21117 case PT_IntAPS:
21118 return emitFlipUint8IntAPS(I);
21119 case PT_Bool:
21120 return emitFlipUint8Bool(I);
21121 case PT_FixedPoint:
21122 return emitFlipUint8FixedPoint(I);
21123 case PT_Ptr:
21124 return emitFlipUint8Ptr(I);
21125 case PT_MemberPtr:
21126 return emitFlipUint8MemberPtr(I);
21127 case PT_Float:
21128 return emitFlipUint8Float(I);
21129 }
21130 llvm_unreachable("invalid enum value");
21131 case PT_Sint16:
21132 switch (T1) {
21133 case PT_Sint8:
21134 return emitFlipSint16Sint8(I);
21135 case PT_Uint8:
21136 return emitFlipSint16Uint8(I);
21137 case PT_Sint16:
21138 return emitFlipSint16Sint16(I);
21139 case PT_Uint16:
21140 return emitFlipSint16Uint16(I);
21141 case PT_Sint32:
21142 return emitFlipSint16Sint32(I);
21143 case PT_Uint32:
21144 return emitFlipSint16Uint32(I);
21145 case PT_Sint64:
21146 return emitFlipSint16Sint64(I);
21147 case PT_Uint64:
21148 return emitFlipSint16Uint64(I);
21149 case PT_IntAP:
21150 return emitFlipSint16IntAP(I);
21151 case PT_IntAPS:
21152 return emitFlipSint16IntAPS(I);
21153 case PT_Bool:
21154 return emitFlipSint16Bool(I);
21155 case PT_FixedPoint:
21156 return emitFlipSint16FixedPoint(I);
21157 case PT_Ptr:
21158 return emitFlipSint16Ptr(I);
21159 case PT_MemberPtr:
21160 return emitFlipSint16MemberPtr(I);
21161 case PT_Float:
21162 return emitFlipSint16Float(I);
21163 }
21164 llvm_unreachable("invalid enum value");
21165 case PT_Uint16:
21166 switch (T1) {
21167 case PT_Sint8:
21168 return emitFlipUint16Sint8(I);
21169 case PT_Uint8:
21170 return emitFlipUint16Uint8(I);
21171 case PT_Sint16:
21172 return emitFlipUint16Sint16(I);
21173 case PT_Uint16:
21174 return emitFlipUint16Uint16(I);
21175 case PT_Sint32:
21176 return emitFlipUint16Sint32(I);
21177 case PT_Uint32:
21178 return emitFlipUint16Uint32(I);
21179 case PT_Sint64:
21180 return emitFlipUint16Sint64(I);
21181 case PT_Uint64:
21182 return emitFlipUint16Uint64(I);
21183 case PT_IntAP:
21184 return emitFlipUint16IntAP(I);
21185 case PT_IntAPS:
21186 return emitFlipUint16IntAPS(I);
21187 case PT_Bool:
21188 return emitFlipUint16Bool(I);
21189 case PT_FixedPoint:
21190 return emitFlipUint16FixedPoint(I);
21191 case PT_Ptr:
21192 return emitFlipUint16Ptr(I);
21193 case PT_MemberPtr:
21194 return emitFlipUint16MemberPtr(I);
21195 case PT_Float:
21196 return emitFlipUint16Float(I);
21197 }
21198 llvm_unreachable("invalid enum value");
21199 case PT_Sint32:
21200 switch (T1) {
21201 case PT_Sint8:
21202 return emitFlipSint32Sint8(I);
21203 case PT_Uint8:
21204 return emitFlipSint32Uint8(I);
21205 case PT_Sint16:
21206 return emitFlipSint32Sint16(I);
21207 case PT_Uint16:
21208 return emitFlipSint32Uint16(I);
21209 case PT_Sint32:
21210 return emitFlipSint32Sint32(I);
21211 case PT_Uint32:
21212 return emitFlipSint32Uint32(I);
21213 case PT_Sint64:
21214 return emitFlipSint32Sint64(I);
21215 case PT_Uint64:
21216 return emitFlipSint32Uint64(I);
21217 case PT_IntAP:
21218 return emitFlipSint32IntAP(I);
21219 case PT_IntAPS:
21220 return emitFlipSint32IntAPS(I);
21221 case PT_Bool:
21222 return emitFlipSint32Bool(I);
21223 case PT_FixedPoint:
21224 return emitFlipSint32FixedPoint(I);
21225 case PT_Ptr:
21226 return emitFlipSint32Ptr(I);
21227 case PT_MemberPtr:
21228 return emitFlipSint32MemberPtr(I);
21229 case PT_Float:
21230 return emitFlipSint32Float(I);
21231 }
21232 llvm_unreachable("invalid enum value");
21233 case PT_Uint32:
21234 switch (T1) {
21235 case PT_Sint8:
21236 return emitFlipUint32Sint8(I);
21237 case PT_Uint8:
21238 return emitFlipUint32Uint8(I);
21239 case PT_Sint16:
21240 return emitFlipUint32Sint16(I);
21241 case PT_Uint16:
21242 return emitFlipUint32Uint16(I);
21243 case PT_Sint32:
21244 return emitFlipUint32Sint32(I);
21245 case PT_Uint32:
21246 return emitFlipUint32Uint32(I);
21247 case PT_Sint64:
21248 return emitFlipUint32Sint64(I);
21249 case PT_Uint64:
21250 return emitFlipUint32Uint64(I);
21251 case PT_IntAP:
21252 return emitFlipUint32IntAP(I);
21253 case PT_IntAPS:
21254 return emitFlipUint32IntAPS(I);
21255 case PT_Bool:
21256 return emitFlipUint32Bool(I);
21257 case PT_FixedPoint:
21258 return emitFlipUint32FixedPoint(I);
21259 case PT_Ptr:
21260 return emitFlipUint32Ptr(I);
21261 case PT_MemberPtr:
21262 return emitFlipUint32MemberPtr(I);
21263 case PT_Float:
21264 return emitFlipUint32Float(I);
21265 }
21266 llvm_unreachable("invalid enum value");
21267 case PT_Sint64:
21268 switch (T1) {
21269 case PT_Sint8:
21270 return emitFlipSint64Sint8(I);
21271 case PT_Uint8:
21272 return emitFlipSint64Uint8(I);
21273 case PT_Sint16:
21274 return emitFlipSint64Sint16(I);
21275 case PT_Uint16:
21276 return emitFlipSint64Uint16(I);
21277 case PT_Sint32:
21278 return emitFlipSint64Sint32(I);
21279 case PT_Uint32:
21280 return emitFlipSint64Uint32(I);
21281 case PT_Sint64:
21282 return emitFlipSint64Sint64(I);
21283 case PT_Uint64:
21284 return emitFlipSint64Uint64(I);
21285 case PT_IntAP:
21286 return emitFlipSint64IntAP(I);
21287 case PT_IntAPS:
21288 return emitFlipSint64IntAPS(I);
21289 case PT_Bool:
21290 return emitFlipSint64Bool(I);
21291 case PT_FixedPoint:
21292 return emitFlipSint64FixedPoint(I);
21293 case PT_Ptr:
21294 return emitFlipSint64Ptr(I);
21295 case PT_MemberPtr:
21296 return emitFlipSint64MemberPtr(I);
21297 case PT_Float:
21298 return emitFlipSint64Float(I);
21299 }
21300 llvm_unreachable("invalid enum value");
21301 case PT_Uint64:
21302 switch (T1) {
21303 case PT_Sint8:
21304 return emitFlipUint64Sint8(I);
21305 case PT_Uint8:
21306 return emitFlipUint64Uint8(I);
21307 case PT_Sint16:
21308 return emitFlipUint64Sint16(I);
21309 case PT_Uint16:
21310 return emitFlipUint64Uint16(I);
21311 case PT_Sint32:
21312 return emitFlipUint64Sint32(I);
21313 case PT_Uint32:
21314 return emitFlipUint64Uint32(I);
21315 case PT_Sint64:
21316 return emitFlipUint64Sint64(I);
21317 case PT_Uint64:
21318 return emitFlipUint64Uint64(I);
21319 case PT_IntAP:
21320 return emitFlipUint64IntAP(I);
21321 case PT_IntAPS:
21322 return emitFlipUint64IntAPS(I);
21323 case PT_Bool:
21324 return emitFlipUint64Bool(I);
21325 case PT_FixedPoint:
21326 return emitFlipUint64FixedPoint(I);
21327 case PT_Ptr:
21328 return emitFlipUint64Ptr(I);
21329 case PT_MemberPtr:
21330 return emitFlipUint64MemberPtr(I);
21331 case PT_Float:
21332 return emitFlipUint64Float(I);
21333 }
21334 llvm_unreachable("invalid enum value");
21335 case PT_IntAP:
21336 switch (T1) {
21337 case PT_Sint8:
21338 return emitFlipIntAPSint8(I);
21339 case PT_Uint8:
21340 return emitFlipIntAPUint8(I);
21341 case PT_Sint16:
21342 return emitFlipIntAPSint16(I);
21343 case PT_Uint16:
21344 return emitFlipIntAPUint16(I);
21345 case PT_Sint32:
21346 return emitFlipIntAPSint32(I);
21347 case PT_Uint32:
21348 return emitFlipIntAPUint32(I);
21349 case PT_Sint64:
21350 return emitFlipIntAPSint64(I);
21351 case PT_Uint64:
21352 return emitFlipIntAPUint64(I);
21353 case PT_IntAP:
21354 return emitFlipIntAPIntAP(I);
21355 case PT_IntAPS:
21356 return emitFlipIntAPIntAPS(I);
21357 case PT_Bool:
21358 return emitFlipIntAPBool(I);
21359 case PT_FixedPoint:
21360 return emitFlipIntAPFixedPoint(I);
21361 case PT_Ptr:
21362 return emitFlipIntAPPtr(I);
21363 case PT_MemberPtr:
21364 return emitFlipIntAPMemberPtr(I);
21365 case PT_Float:
21366 return emitFlipIntAPFloat(I);
21367 }
21368 llvm_unreachable("invalid enum value");
21369 case PT_IntAPS:
21370 switch (T1) {
21371 case PT_Sint8:
21372 return emitFlipIntAPSSint8(I);
21373 case PT_Uint8:
21374 return emitFlipIntAPSUint8(I);
21375 case PT_Sint16:
21376 return emitFlipIntAPSSint16(I);
21377 case PT_Uint16:
21378 return emitFlipIntAPSUint16(I);
21379 case PT_Sint32:
21380 return emitFlipIntAPSSint32(I);
21381 case PT_Uint32:
21382 return emitFlipIntAPSUint32(I);
21383 case PT_Sint64:
21384 return emitFlipIntAPSSint64(I);
21385 case PT_Uint64:
21386 return emitFlipIntAPSUint64(I);
21387 case PT_IntAP:
21388 return emitFlipIntAPSIntAP(I);
21389 case PT_IntAPS:
21390 return emitFlipIntAPSIntAPS(I);
21391 case PT_Bool:
21392 return emitFlipIntAPSBool(I);
21393 case PT_FixedPoint:
21394 return emitFlipIntAPSFixedPoint(I);
21395 case PT_Ptr:
21396 return emitFlipIntAPSPtr(I);
21397 case PT_MemberPtr:
21398 return emitFlipIntAPSMemberPtr(I);
21399 case PT_Float:
21400 return emitFlipIntAPSFloat(I);
21401 }
21402 llvm_unreachable("invalid enum value");
21403 case PT_Bool:
21404 switch (T1) {
21405 case PT_Sint8:
21406 return emitFlipBoolSint8(I);
21407 case PT_Uint8:
21408 return emitFlipBoolUint8(I);
21409 case PT_Sint16:
21410 return emitFlipBoolSint16(I);
21411 case PT_Uint16:
21412 return emitFlipBoolUint16(I);
21413 case PT_Sint32:
21414 return emitFlipBoolSint32(I);
21415 case PT_Uint32:
21416 return emitFlipBoolUint32(I);
21417 case PT_Sint64:
21418 return emitFlipBoolSint64(I);
21419 case PT_Uint64:
21420 return emitFlipBoolUint64(I);
21421 case PT_IntAP:
21422 return emitFlipBoolIntAP(I);
21423 case PT_IntAPS:
21424 return emitFlipBoolIntAPS(I);
21425 case PT_Bool:
21426 return emitFlipBoolBool(I);
21427 case PT_FixedPoint:
21428 return emitFlipBoolFixedPoint(I);
21429 case PT_Ptr:
21430 return emitFlipBoolPtr(I);
21431 case PT_MemberPtr:
21432 return emitFlipBoolMemberPtr(I);
21433 case PT_Float:
21434 return emitFlipBoolFloat(I);
21435 }
21436 llvm_unreachable("invalid enum value");
21437 case PT_FixedPoint:
21438 switch (T1) {
21439 case PT_Sint8:
21440 return emitFlipFixedPointSint8(I);
21441 case PT_Uint8:
21442 return emitFlipFixedPointUint8(I);
21443 case PT_Sint16:
21444 return emitFlipFixedPointSint16(I);
21445 case PT_Uint16:
21446 return emitFlipFixedPointUint16(I);
21447 case PT_Sint32:
21448 return emitFlipFixedPointSint32(I);
21449 case PT_Uint32:
21450 return emitFlipFixedPointUint32(I);
21451 case PT_Sint64:
21452 return emitFlipFixedPointSint64(I);
21453 case PT_Uint64:
21454 return emitFlipFixedPointUint64(I);
21455 case PT_IntAP:
21456 return emitFlipFixedPointIntAP(I);
21457 case PT_IntAPS:
21458 return emitFlipFixedPointIntAPS(I);
21459 case PT_Bool:
21460 return emitFlipFixedPointBool(I);
21461 case PT_FixedPoint:
21462 return emitFlipFixedPointFixedPoint(I);
21463 case PT_Ptr:
21464 return emitFlipFixedPointPtr(I);
21465 case PT_MemberPtr:
21466 return emitFlipFixedPointMemberPtr(I);
21467 case PT_Float:
21468 return emitFlipFixedPointFloat(I);
21469 }
21470 llvm_unreachable("invalid enum value");
21471 case PT_Ptr:
21472 switch (T1) {
21473 case PT_Sint8:
21474 return emitFlipPtrSint8(I);
21475 case PT_Uint8:
21476 return emitFlipPtrUint8(I);
21477 case PT_Sint16:
21478 return emitFlipPtrSint16(I);
21479 case PT_Uint16:
21480 return emitFlipPtrUint16(I);
21481 case PT_Sint32:
21482 return emitFlipPtrSint32(I);
21483 case PT_Uint32:
21484 return emitFlipPtrUint32(I);
21485 case PT_Sint64:
21486 return emitFlipPtrSint64(I);
21487 case PT_Uint64:
21488 return emitFlipPtrUint64(I);
21489 case PT_IntAP:
21490 return emitFlipPtrIntAP(I);
21491 case PT_IntAPS:
21492 return emitFlipPtrIntAPS(I);
21493 case PT_Bool:
21494 return emitFlipPtrBool(I);
21495 case PT_FixedPoint:
21496 return emitFlipPtrFixedPoint(I);
21497 case PT_Ptr:
21498 return emitFlipPtrPtr(I);
21499 case PT_MemberPtr:
21500 return emitFlipPtrMemberPtr(I);
21501 case PT_Float:
21502 return emitFlipPtrFloat(I);
21503 }
21504 llvm_unreachable("invalid enum value");
21505 case PT_MemberPtr:
21506 switch (T1) {
21507 case PT_Sint8:
21508 return emitFlipMemberPtrSint8(I);
21509 case PT_Uint8:
21510 return emitFlipMemberPtrUint8(I);
21511 case PT_Sint16:
21512 return emitFlipMemberPtrSint16(I);
21513 case PT_Uint16:
21514 return emitFlipMemberPtrUint16(I);
21515 case PT_Sint32:
21516 return emitFlipMemberPtrSint32(I);
21517 case PT_Uint32:
21518 return emitFlipMemberPtrUint32(I);
21519 case PT_Sint64:
21520 return emitFlipMemberPtrSint64(I);
21521 case PT_Uint64:
21522 return emitFlipMemberPtrUint64(I);
21523 case PT_IntAP:
21524 return emitFlipMemberPtrIntAP(I);
21525 case PT_IntAPS:
21526 return emitFlipMemberPtrIntAPS(I);
21527 case PT_Bool:
21528 return emitFlipMemberPtrBool(I);
21529 case PT_FixedPoint:
21530 return emitFlipMemberPtrFixedPoint(I);
21531 case PT_Ptr:
21532 return emitFlipMemberPtrPtr(I);
21533 case PT_MemberPtr:
21534 return emitFlipMemberPtrMemberPtr(I);
21535 case PT_Float:
21536 return emitFlipMemberPtrFloat(I);
21537 }
21538 llvm_unreachable("invalid enum value");
21539 case PT_Float:
21540 switch (T1) {
21541 case PT_Sint8:
21542 return emitFlipFloatSint8(I);
21543 case PT_Uint8:
21544 return emitFlipFloatUint8(I);
21545 case PT_Sint16:
21546 return emitFlipFloatSint16(I);
21547 case PT_Uint16:
21548 return emitFlipFloatUint16(I);
21549 case PT_Sint32:
21550 return emitFlipFloatSint32(I);
21551 case PT_Uint32:
21552 return emitFlipFloatUint32(I);
21553 case PT_Sint64:
21554 return emitFlipFloatSint64(I);
21555 case PT_Uint64:
21556 return emitFlipFloatUint64(I);
21557 case PT_IntAP:
21558 return emitFlipFloatIntAP(I);
21559 case PT_IntAPS:
21560 return emitFlipFloatIntAPS(I);
21561 case PT_Bool:
21562 return emitFlipFloatBool(I);
21563 case PT_FixedPoint:
21564 return emitFlipFloatFixedPoint(I);
21565 case PT_Ptr:
21566 return emitFlipFloatPtr(I);
21567 case PT_MemberPtr:
21568 return emitFlipFloatMemberPtr(I);
21569 case PT_Float:
21570 return emitFlipFloatFloat(I);
21571 }
21572 llvm_unreachable("invalid enum value");
21573 }
21574 llvm_unreachable("invalid enum value");
21575}
21576#endif
21577#ifdef GET_LINK_IMPL
21578bool ByteCodeEmitter::emitFlipSint8Sint8(SourceInfo L) {
21579 return emitOp<>(OP_FlipSint8Sint8, L);
21580}
21581bool ByteCodeEmitter::emitFlipSint8Uint8(SourceInfo L) {
21582 return emitOp<>(OP_FlipSint8Uint8, L);
21583}
21584bool ByteCodeEmitter::emitFlipSint8Sint16(SourceInfo L) {
21585 return emitOp<>(OP_FlipSint8Sint16, L);
21586}
21587bool ByteCodeEmitter::emitFlipSint8Uint16(SourceInfo L) {
21588 return emitOp<>(OP_FlipSint8Uint16, L);
21589}
21590bool ByteCodeEmitter::emitFlipSint8Sint32(SourceInfo L) {
21591 return emitOp<>(OP_FlipSint8Sint32, L);
21592}
21593bool ByteCodeEmitter::emitFlipSint8Uint32(SourceInfo L) {
21594 return emitOp<>(OP_FlipSint8Uint32, L);
21595}
21596bool ByteCodeEmitter::emitFlipSint8Sint64(SourceInfo L) {
21597 return emitOp<>(OP_FlipSint8Sint64, L);
21598}
21599bool ByteCodeEmitter::emitFlipSint8Uint64(SourceInfo L) {
21600 return emitOp<>(OP_FlipSint8Uint64, L);
21601}
21602bool ByteCodeEmitter::emitFlipSint8IntAP(SourceInfo L) {
21603 return emitOp<>(OP_FlipSint8IntAP, L);
21604}
21605bool ByteCodeEmitter::emitFlipSint8IntAPS(SourceInfo L) {
21606 return emitOp<>(OP_FlipSint8IntAPS, L);
21607}
21608bool ByteCodeEmitter::emitFlipSint8Bool(SourceInfo L) {
21609 return emitOp<>(OP_FlipSint8Bool, L);
21610}
21611bool ByteCodeEmitter::emitFlipSint8FixedPoint(SourceInfo L) {
21612 return emitOp<>(OP_FlipSint8FixedPoint, L);
21613}
21614bool ByteCodeEmitter::emitFlipSint8Ptr(SourceInfo L) {
21615 return emitOp<>(OP_FlipSint8Ptr, L);
21616}
21617bool ByteCodeEmitter::emitFlipSint8MemberPtr(SourceInfo L) {
21618 return emitOp<>(OP_FlipSint8MemberPtr, L);
21619}
21620bool ByteCodeEmitter::emitFlipSint8Float(SourceInfo L) {
21621 return emitOp<>(OP_FlipSint8Float, L);
21622}
21623bool ByteCodeEmitter::emitFlipUint8Sint8(SourceInfo L) {
21624 return emitOp<>(OP_FlipUint8Sint8, L);
21625}
21626bool ByteCodeEmitter::emitFlipUint8Uint8(SourceInfo L) {
21627 return emitOp<>(OP_FlipUint8Uint8, L);
21628}
21629bool ByteCodeEmitter::emitFlipUint8Sint16(SourceInfo L) {
21630 return emitOp<>(OP_FlipUint8Sint16, L);
21631}
21632bool ByteCodeEmitter::emitFlipUint8Uint16(SourceInfo L) {
21633 return emitOp<>(OP_FlipUint8Uint16, L);
21634}
21635bool ByteCodeEmitter::emitFlipUint8Sint32(SourceInfo L) {
21636 return emitOp<>(OP_FlipUint8Sint32, L);
21637}
21638bool ByteCodeEmitter::emitFlipUint8Uint32(SourceInfo L) {
21639 return emitOp<>(OP_FlipUint8Uint32, L);
21640}
21641bool ByteCodeEmitter::emitFlipUint8Sint64(SourceInfo L) {
21642 return emitOp<>(OP_FlipUint8Sint64, L);
21643}
21644bool ByteCodeEmitter::emitFlipUint8Uint64(SourceInfo L) {
21645 return emitOp<>(OP_FlipUint8Uint64, L);
21646}
21647bool ByteCodeEmitter::emitFlipUint8IntAP(SourceInfo L) {
21648 return emitOp<>(OP_FlipUint8IntAP, L);
21649}
21650bool ByteCodeEmitter::emitFlipUint8IntAPS(SourceInfo L) {
21651 return emitOp<>(OP_FlipUint8IntAPS, L);
21652}
21653bool ByteCodeEmitter::emitFlipUint8Bool(SourceInfo L) {
21654 return emitOp<>(OP_FlipUint8Bool, L);
21655}
21656bool ByteCodeEmitter::emitFlipUint8FixedPoint(SourceInfo L) {
21657 return emitOp<>(OP_FlipUint8FixedPoint, L);
21658}
21659bool ByteCodeEmitter::emitFlipUint8Ptr(SourceInfo L) {
21660 return emitOp<>(OP_FlipUint8Ptr, L);
21661}
21662bool ByteCodeEmitter::emitFlipUint8MemberPtr(SourceInfo L) {
21663 return emitOp<>(OP_FlipUint8MemberPtr, L);
21664}
21665bool ByteCodeEmitter::emitFlipUint8Float(SourceInfo L) {
21666 return emitOp<>(OP_FlipUint8Float, L);
21667}
21668bool ByteCodeEmitter::emitFlipSint16Sint8(SourceInfo L) {
21669 return emitOp<>(OP_FlipSint16Sint8, L);
21670}
21671bool ByteCodeEmitter::emitFlipSint16Uint8(SourceInfo L) {
21672 return emitOp<>(OP_FlipSint16Uint8, L);
21673}
21674bool ByteCodeEmitter::emitFlipSint16Sint16(SourceInfo L) {
21675 return emitOp<>(OP_FlipSint16Sint16, L);
21676}
21677bool ByteCodeEmitter::emitFlipSint16Uint16(SourceInfo L) {
21678 return emitOp<>(OP_FlipSint16Uint16, L);
21679}
21680bool ByteCodeEmitter::emitFlipSint16Sint32(SourceInfo L) {
21681 return emitOp<>(OP_FlipSint16Sint32, L);
21682}
21683bool ByteCodeEmitter::emitFlipSint16Uint32(SourceInfo L) {
21684 return emitOp<>(OP_FlipSint16Uint32, L);
21685}
21686bool ByteCodeEmitter::emitFlipSint16Sint64(SourceInfo L) {
21687 return emitOp<>(OP_FlipSint16Sint64, L);
21688}
21689bool ByteCodeEmitter::emitFlipSint16Uint64(SourceInfo L) {
21690 return emitOp<>(OP_FlipSint16Uint64, L);
21691}
21692bool ByteCodeEmitter::emitFlipSint16IntAP(SourceInfo L) {
21693 return emitOp<>(OP_FlipSint16IntAP, L);
21694}
21695bool ByteCodeEmitter::emitFlipSint16IntAPS(SourceInfo L) {
21696 return emitOp<>(OP_FlipSint16IntAPS, L);
21697}
21698bool ByteCodeEmitter::emitFlipSint16Bool(SourceInfo L) {
21699 return emitOp<>(OP_FlipSint16Bool, L);
21700}
21701bool ByteCodeEmitter::emitFlipSint16FixedPoint(SourceInfo L) {
21702 return emitOp<>(OP_FlipSint16FixedPoint, L);
21703}
21704bool ByteCodeEmitter::emitFlipSint16Ptr(SourceInfo L) {
21705 return emitOp<>(OP_FlipSint16Ptr, L);
21706}
21707bool ByteCodeEmitter::emitFlipSint16MemberPtr(SourceInfo L) {
21708 return emitOp<>(OP_FlipSint16MemberPtr, L);
21709}
21710bool ByteCodeEmitter::emitFlipSint16Float(SourceInfo L) {
21711 return emitOp<>(OP_FlipSint16Float, L);
21712}
21713bool ByteCodeEmitter::emitFlipUint16Sint8(SourceInfo L) {
21714 return emitOp<>(OP_FlipUint16Sint8, L);
21715}
21716bool ByteCodeEmitter::emitFlipUint16Uint8(SourceInfo L) {
21717 return emitOp<>(OP_FlipUint16Uint8, L);
21718}
21719bool ByteCodeEmitter::emitFlipUint16Sint16(SourceInfo L) {
21720 return emitOp<>(OP_FlipUint16Sint16, L);
21721}
21722bool ByteCodeEmitter::emitFlipUint16Uint16(SourceInfo L) {
21723 return emitOp<>(OP_FlipUint16Uint16, L);
21724}
21725bool ByteCodeEmitter::emitFlipUint16Sint32(SourceInfo L) {
21726 return emitOp<>(OP_FlipUint16Sint32, L);
21727}
21728bool ByteCodeEmitter::emitFlipUint16Uint32(SourceInfo L) {
21729 return emitOp<>(OP_FlipUint16Uint32, L);
21730}
21731bool ByteCodeEmitter::emitFlipUint16Sint64(SourceInfo L) {
21732 return emitOp<>(OP_FlipUint16Sint64, L);
21733}
21734bool ByteCodeEmitter::emitFlipUint16Uint64(SourceInfo L) {
21735 return emitOp<>(OP_FlipUint16Uint64, L);
21736}
21737bool ByteCodeEmitter::emitFlipUint16IntAP(SourceInfo L) {
21738 return emitOp<>(OP_FlipUint16IntAP, L);
21739}
21740bool ByteCodeEmitter::emitFlipUint16IntAPS(SourceInfo L) {
21741 return emitOp<>(OP_FlipUint16IntAPS, L);
21742}
21743bool ByteCodeEmitter::emitFlipUint16Bool(SourceInfo L) {
21744 return emitOp<>(OP_FlipUint16Bool, L);
21745}
21746bool ByteCodeEmitter::emitFlipUint16FixedPoint(SourceInfo L) {
21747 return emitOp<>(OP_FlipUint16FixedPoint, L);
21748}
21749bool ByteCodeEmitter::emitFlipUint16Ptr(SourceInfo L) {
21750 return emitOp<>(OP_FlipUint16Ptr, L);
21751}
21752bool ByteCodeEmitter::emitFlipUint16MemberPtr(SourceInfo L) {
21753 return emitOp<>(OP_FlipUint16MemberPtr, L);
21754}
21755bool ByteCodeEmitter::emitFlipUint16Float(SourceInfo L) {
21756 return emitOp<>(OP_FlipUint16Float, L);
21757}
21758bool ByteCodeEmitter::emitFlipSint32Sint8(SourceInfo L) {
21759 return emitOp<>(OP_FlipSint32Sint8, L);
21760}
21761bool ByteCodeEmitter::emitFlipSint32Uint8(SourceInfo L) {
21762 return emitOp<>(OP_FlipSint32Uint8, L);
21763}
21764bool ByteCodeEmitter::emitFlipSint32Sint16(SourceInfo L) {
21765 return emitOp<>(OP_FlipSint32Sint16, L);
21766}
21767bool ByteCodeEmitter::emitFlipSint32Uint16(SourceInfo L) {
21768 return emitOp<>(OP_FlipSint32Uint16, L);
21769}
21770bool ByteCodeEmitter::emitFlipSint32Sint32(SourceInfo L) {
21771 return emitOp<>(OP_FlipSint32Sint32, L);
21772}
21773bool ByteCodeEmitter::emitFlipSint32Uint32(SourceInfo L) {
21774 return emitOp<>(OP_FlipSint32Uint32, L);
21775}
21776bool ByteCodeEmitter::emitFlipSint32Sint64(SourceInfo L) {
21777 return emitOp<>(OP_FlipSint32Sint64, L);
21778}
21779bool ByteCodeEmitter::emitFlipSint32Uint64(SourceInfo L) {
21780 return emitOp<>(OP_FlipSint32Uint64, L);
21781}
21782bool ByteCodeEmitter::emitFlipSint32IntAP(SourceInfo L) {
21783 return emitOp<>(OP_FlipSint32IntAP, L);
21784}
21785bool ByteCodeEmitter::emitFlipSint32IntAPS(SourceInfo L) {
21786 return emitOp<>(OP_FlipSint32IntAPS, L);
21787}
21788bool ByteCodeEmitter::emitFlipSint32Bool(SourceInfo L) {
21789 return emitOp<>(OP_FlipSint32Bool, L);
21790}
21791bool ByteCodeEmitter::emitFlipSint32FixedPoint(SourceInfo L) {
21792 return emitOp<>(OP_FlipSint32FixedPoint, L);
21793}
21794bool ByteCodeEmitter::emitFlipSint32Ptr(SourceInfo L) {
21795 return emitOp<>(OP_FlipSint32Ptr, L);
21796}
21797bool ByteCodeEmitter::emitFlipSint32MemberPtr(SourceInfo L) {
21798 return emitOp<>(OP_FlipSint32MemberPtr, L);
21799}
21800bool ByteCodeEmitter::emitFlipSint32Float(SourceInfo L) {
21801 return emitOp<>(OP_FlipSint32Float, L);
21802}
21803bool ByteCodeEmitter::emitFlipUint32Sint8(SourceInfo L) {
21804 return emitOp<>(OP_FlipUint32Sint8, L);
21805}
21806bool ByteCodeEmitter::emitFlipUint32Uint8(SourceInfo L) {
21807 return emitOp<>(OP_FlipUint32Uint8, L);
21808}
21809bool ByteCodeEmitter::emitFlipUint32Sint16(SourceInfo L) {
21810 return emitOp<>(OP_FlipUint32Sint16, L);
21811}
21812bool ByteCodeEmitter::emitFlipUint32Uint16(SourceInfo L) {
21813 return emitOp<>(OP_FlipUint32Uint16, L);
21814}
21815bool ByteCodeEmitter::emitFlipUint32Sint32(SourceInfo L) {
21816 return emitOp<>(OP_FlipUint32Sint32, L);
21817}
21818bool ByteCodeEmitter::emitFlipUint32Uint32(SourceInfo L) {
21819 return emitOp<>(OP_FlipUint32Uint32, L);
21820}
21821bool ByteCodeEmitter::emitFlipUint32Sint64(SourceInfo L) {
21822 return emitOp<>(OP_FlipUint32Sint64, L);
21823}
21824bool ByteCodeEmitter::emitFlipUint32Uint64(SourceInfo L) {
21825 return emitOp<>(OP_FlipUint32Uint64, L);
21826}
21827bool ByteCodeEmitter::emitFlipUint32IntAP(SourceInfo L) {
21828 return emitOp<>(OP_FlipUint32IntAP, L);
21829}
21830bool ByteCodeEmitter::emitFlipUint32IntAPS(SourceInfo L) {
21831 return emitOp<>(OP_FlipUint32IntAPS, L);
21832}
21833bool ByteCodeEmitter::emitFlipUint32Bool(SourceInfo L) {
21834 return emitOp<>(OP_FlipUint32Bool, L);
21835}
21836bool ByteCodeEmitter::emitFlipUint32FixedPoint(SourceInfo L) {
21837 return emitOp<>(OP_FlipUint32FixedPoint, L);
21838}
21839bool ByteCodeEmitter::emitFlipUint32Ptr(SourceInfo L) {
21840 return emitOp<>(OP_FlipUint32Ptr, L);
21841}
21842bool ByteCodeEmitter::emitFlipUint32MemberPtr(SourceInfo L) {
21843 return emitOp<>(OP_FlipUint32MemberPtr, L);
21844}
21845bool ByteCodeEmitter::emitFlipUint32Float(SourceInfo L) {
21846 return emitOp<>(OP_FlipUint32Float, L);
21847}
21848bool ByteCodeEmitter::emitFlipSint64Sint8(SourceInfo L) {
21849 return emitOp<>(OP_FlipSint64Sint8, L);
21850}
21851bool ByteCodeEmitter::emitFlipSint64Uint8(SourceInfo L) {
21852 return emitOp<>(OP_FlipSint64Uint8, L);
21853}
21854bool ByteCodeEmitter::emitFlipSint64Sint16(SourceInfo L) {
21855 return emitOp<>(OP_FlipSint64Sint16, L);
21856}
21857bool ByteCodeEmitter::emitFlipSint64Uint16(SourceInfo L) {
21858 return emitOp<>(OP_FlipSint64Uint16, L);
21859}
21860bool ByteCodeEmitter::emitFlipSint64Sint32(SourceInfo L) {
21861 return emitOp<>(OP_FlipSint64Sint32, L);
21862}
21863bool ByteCodeEmitter::emitFlipSint64Uint32(SourceInfo L) {
21864 return emitOp<>(OP_FlipSint64Uint32, L);
21865}
21866bool ByteCodeEmitter::emitFlipSint64Sint64(SourceInfo L) {
21867 return emitOp<>(OP_FlipSint64Sint64, L);
21868}
21869bool ByteCodeEmitter::emitFlipSint64Uint64(SourceInfo L) {
21870 return emitOp<>(OP_FlipSint64Uint64, L);
21871}
21872bool ByteCodeEmitter::emitFlipSint64IntAP(SourceInfo L) {
21873 return emitOp<>(OP_FlipSint64IntAP, L);
21874}
21875bool ByteCodeEmitter::emitFlipSint64IntAPS(SourceInfo L) {
21876 return emitOp<>(OP_FlipSint64IntAPS, L);
21877}
21878bool ByteCodeEmitter::emitFlipSint64Bool(SourceInfo L) {
21879 return emitOp<>(OP_FlipSint64Bool, L);
21880}
21881bool ByteCodeEmitter::emitFlipSint64FixedPoint(SourceInfo L) {
21882 return emitOp<>(OP_FlipSint64FixedPoint, L);
21883}
21884bool ByteCodeEmitter::emitFlipSint64Ptr(SourceInfo L) {
21885 return emitOp<>(OP_FlipSint64Ptr, L);
21886}
21887bool ByteCodeEmitter::emitFlipSint64MemberPtr(SourceInfo L) {
21888 return emitOp<>(OP_FlipSint64MemberPtr, L);
21889}
21890bool ByteCodeEmitter::emitFlipSint64Float(SourceInfo L) {
21891 return emitOp<>(OP_FlipSint64Float, L);
21892}
21893bool ByteCodeEmitter::emitFlipUint64Sint8(SourceInfo L) {
21894 return emitOp<>(OP_FlipUint64Sint8, L);
21895}
21896bool ByteCodeEmitter::emitFlipUint64Uint8(SourceInfo L) {
21897 return emitOp<>(OP_FlipUint64Uint8, L);
21898}
21899bool ByteCodeEmitter::emitFlipUint64Sint16(SourceInfo L) {
21900 return emitOp<>(OP_FlipUint64Sint16, L);
21901}
21902bool ByteCodeEmitter::emitFlipUint64Uint16(SourceInfo L) {
21903 return emitOp<>(OP_FlipUint64Uint16, L);
21904}
21905bool ByteCodeEmitter::emitFlipUint64Sint32(SourceInfo L) {
21906 return emitOp<>(OP_FlipUint64Sint32, L);
21907}
21908bool ByteCodeEmitter::emitFlipUint64Uint32(SourceInfo L) {
21909 return emitOp<>(OP_FlipUint64Uint32, L);
21910}
21911bool ByteCodeEmitter::emitFlipUint64Sint64(SourceInfo L) {
21912 return emitOp<>(OP_FlipUint64Sint64, L);
21913}
21914bool ByteCodeEmitter::emitFlipUint64Uint64(SourceInfo L) {
21915 return emitOp<>(OP_FlipUint64Uint64, L);
21916}
21917bool ByteCodeEmitter::emitFlipUint64IntAP(SourceInfo L) {
21918 return emitOp<>(OP_FlipUint64IntAP, L);
21919}
21920bool ByteCodeEmitter::emitFlipUint64IntAPS(SourceInfo L) {
21921 return emitOp<>(OP_FlipUint64IntAPS, L);
21922}
21923bool ByteCodeEmitter::emitFlipUint64Bool(SourceInfo L) {
21924 return emitOp<>(OP_FlipUint64Bool, L);
21925}
21926bool ByteCodeEmitter::emitFlipUint64FixedPoint(SourceInfo L) {
21927 return emitOp<>(OP_FlipUint64FixedPoint, L);
21928}
21929bool ByteCodeEmitter::emitFlipUint64Ptr(SourceInfo L) {
21930 return emitOp<>(OP_FlipUint64Ptr, L);
21931}
21932bool ByteCodeEmitter::emitFlipUint64MemberPtr(SourceInfo L) {
21933 return emitOp<>(OP_FlipUint64MemberPtr, L);
21934}
21935bool ByteCodeEmitter::emitFlipUint64Float(SourceInfo L) {
21936 return emitOp<>(OP_FlipUint64Float, L);
21937}
21938bool ByteCodeEmitter::emitFlipIntAPSint8(SourceInfo L) {
21939 return emitOp<>(OP_FlipIntAPSint8, L);
21940}
21941bool ByteCodeEmitter::emitFlipIntAPUint8(SourceInfo L) {
21942 return emitOp<>(OP_FlipIntAPUint8, L);
21943}
21944bool ByteCodeEmitter::emitFlipIntAPSint16(SourceInfo L) {
21945 return emitOp<>(OP_FlipIntAPSint16, L);
21946}
21947bool ByteCodeEmitter::emitFlipIntAPUint16(SourceInfo L) {
21948 return emitOp<>(OP_FlipIntAPUint16, L);
21949}
21950bool ByteCodeEmitter::emitFlipIntAPSint32(SourceInfo L) {
21951 return emitOp<>(OP_FlipIntAPSint32, L);
21952}
21953bool ByteCodeEmitter::emitFlipIntAPUint32(SourceInfo L) {
21954 return emitOp<>(OP_FlipIntAPUint32, L);
21955}
21956bool ByteCodeEmitter::emitFlipIntAPSint64(SourceInfo L) {
21957 return emitOp<>(OP_FlipIntAPSint64, L);
21958}
21959bool ByteCodeEmitter::emitFlipIntAPUint64(SourceInfo L) {
21960 return emitOp<>(OP_FlipIntAPUint64, L);
21961}
21962bool ByteCodeEmitter::emitFlipIntAPIntAP(SourceInfo L) {
21963 return emitOp<>(OP_FlipIntAPIntAP, L);
21964}
21965bool ByteCodeEmitter::emitFlipIntAPIntAPS(SourceInfo L) {
21966 return emitOp<>(OP_FlipIntAPIntAPS, L);
21967}
21968bool ByteCodeEmitter::emitFlipIntAPBool(SourceInfo L) {
21969 return emitOp<>(OP_FlipIntAPBool, L);
21970}
21971bool ByteCodeEmitter::emitFlipIntAPFixedPoint(SourceInfo L) {
21972 return emitOp<>(OP_FlipIntAPFixedPoint, L);
21973}
21974bool ByteCodeEmitter::emitFlipIntAPPtr(SourceInfo L) {
21975 return emitOp<>(OP_FlipIntAPPtr, L);
21976}
21977bool ByteCodeEmitter::emitFlipIntAPMemberPtr(SourceInfo L) {
21978 return emitOp<>(OP_FlipIntAPMemberPtr, L);
21979}
21980bool ByteCodeEmitter::emitFlipIntAPFloat(SourceInfo L) {
21981 return emitOp<>(OP_FlipIntAPFloat, L);
21982}
21983bool ByteCodeEmitter::emitFlipIntAPSSint8(SourceInfo L) {
21984 return emitOp<>(OP_FlipIntAPSSint8, L);
21985}
21986bool ByteCodeEmitter::emitFlipIntAPSUint8(SourceInfo L) {
21987 return emitOp<>(OP_FlipIntAPSUint8, L);
21988}
21989bool ByteCodeEmitter::emitFlipIntAPSSint16(SourceInfo L) {
21990 return emitOp<>(OP_FlipIntAPSSint16, L);
21991}
21992bool ByteCodeEmitter::emitFlipIntAPSUint16(SourceInfo L) {
21993 return emitOp<>(OP_FlipIntAPSUint16, L);
21994}
21995bool ByteCodeEmitter::emitFlipIntAPSSint32(SourceInfo L) {
21996 return emitOp<>(OP_FlipIntAPSSint32, L);
21997}
21998bool ByteCodeEmitter::emitFlipIntAPSUint32(SourceInfo L) {
21999 return emitOp<>(OP_FlipIntAPSUint32, L);
22000}
22001bool ByteCodeEmitter::emitFlipIntAPSSint64(SourceInfo L) {
22002 return emitOp<>(OP_FlipIntAPSSint64, L);
22003}
22004bool ByteCodeEmitter::emitFlipIntAPSUint64(SourceInfo L) {
22005 return emitOp<>(OP_FlipIntAPSUint64, L);
22006}
22007bool ByteCodeEmitter::emitFlipIntAPSIntAP(SourceInfo L) {
22008 return emitOp<>(OP_FlipIntAPSIntAP, L);
22009}
22010bool ByteCodeEmitter::emitFlipIntAPSIntAPS(SourceInfo L) {
22011 return emitOp<>(OP_FlipIntAPSIntAPS, L);
22012}
22013bool ByteCodeEmitter::emitFlipIntAPSBool(SourceInfo L) {
22014 return emitOp<>(OP_FlipIntAPSBool, L);
22015}
22016bool ByteCodeEmitter::emitFlipIntAPSFixedPoint(SourceInfo L) {
22017 return emitOp<>(OP_FlipIntAPSFixedPoint, L);
22018}
22019bool ByteCodeEmitter::emitFlipIntAPSPtr(SourceInfo L) {
22020 return emitOp<>(OP_FlipIntAPSPtr, L);
22021}
22022bool ByteCodeEmitter::emitFlipIntAPSMemberPtr(SourceInfo L) {
22023 return emitOp<>(OP_FlipIntAPSMemberPtr, L);
22024}
22025bool ByteCodeEmitter::emitFlipIntAPSFloat(SourceInfo L) {
22026 return emitOp<>(OP_FlipIntAPSFloat, L);
22027}
22028bool ByteCodeEmitter::emitFlipBoolSint8(SourceInfo L) {
22029 return emitOp<>(OP_FlipBoolSint8, L);
22030}
22031bool ByteCodeEmitter::emitFlipBoolUint8(SourceInfo L) {
22032 return emitOp<>(OP_FlipBoolUint8, L);
22033}
22034bool ByteCodeEmitter::emitFlipBoolSint16(SourceInfo L) {
22035 return emitOp<>(OP_FlipBoolSint16, L);
22036}
22037bool ByteCodeEmitter::emitFlipBoolUint16(SourceInfo L) {
22038 return emitOp<>(OP_FlipBoolUint16, L);
22039}
22040bool ByteCodeEmitter::emitFlipBoolSint32(SourceInfo L) {
22041 return emitOp<>(OP_FlipBoolSint32, L);
22042}
22043bool ByteCodeEmitter::emitFlipBoolUint32(SourceInfo L) {
22044 return emitOp<>(OP_FlipBoolUint32, L);
22045}
22046bool ByteCodeEmitter::emitFlipBoolSint64(SourceInfo L) {
22047 return emitOp<>(OP_FlipBoolSint64, L);
22048}
22049bool ByteCodeEmitter::emitFlipBoolUint64(SourceInfo L) {
22050 return emitOp<>(OP_FlipBoolUint64, L);
22051}
22052bool ByteCodeEmitter::emitFlipBoolIntAP(SourceInfo L) {
22053 return emitOp<>(OP_FlipBoolIntAP, L);
22054}
22055bool ByteCodeEmitter::emitFlipBoolIntAPS(SourceInfo L) {
22056 return emitOp<>(OP_FlipBoolIntAPS, L);
22057}
22058bool ByteCodeEmitter::emitFlipBoolBool(SourceInfo L) {
22059 return emitOp<>(OP_FlipBoolBool, L);
22060}
22061bool ByteCodeEmitter::emitFlipBoolFixedPoint(SourceInfo L) {
22062 return emitOp<>(OP_FlipBoolFixedPoint, L);
22063}
22064bool ByteCodeEmitter::emitFlipBoolPtr(SourceInfo L) {
22065 return emitOp<>(OP_FlipBoolPtr, L);
22066}
22067bool ByteCodeEmitter::emitFlipBoolMemberPtr(SourceInfo L) {
22068 return emitOp<>(OP_FlipBoolMemberPtr, L);
22069}
22070bool ByteCodeEmitter::emitFlipBoolFloat(SourceInfo L) {
22071 return emitOp<>(OP_FlipBoolFloat, L);
22072}
22073bool ByteCodeEmitter::emitFlipFixedPointSint8(SourceInfo L) {
22074 return emitOp<>(OP_FlipFixedPointSint8, L);
22075}
22076bool ByteCodeEmitter::emitFlipFixedPointUint8(SourceInfo L) {
22077 return emitOp<>(OP_FlipFixedPointUint8, L);
22078}
22079bool ByteCodeEmitter::emitFlipFixedPointSint16(SourceInfo L) {
22080 return emitOp<>(OP_FlipFixedPointSint16, L);
22081}
22082bool ByteCodeEmitter::emitFlipFixedPointUint16(SourceInfo L) {
22083 return emitOp<>(OP_FlipFixedPointUint16, L);
22084}
22085bool ByteCodeEmitter::emitFlipFixedPointSint32(SourceInfo L) {
22086 return emitOp<>(OP_FlipFixedPointSint32, L);
22087}
22088bool ByteCodeEmitter::emitFlipFixedPointUint32(SourceInfo L) {
22089 return emitOp<>(OP_FlipFixedPointUint32, L);
22090}
22091bool ByteCodeEmitter::emitFlipFixedPointSint64(SourceInfo L) {
22092 return emitOp<>(OP_FlipFixedPointSint64, L);
22093}
22094bool ByteCodeEmitter::emitFlipFixedPointUint64(SourceInfo L) {
22095 return emitOp<>(OP_FlipFixedPointUint64, L);
22096}
22097bool ByteCodeEmitter::emitFlipFixedPointIntAP(SourceInfo L) {
22098 return emitOp<>(OP_FlipFixedPointIntAP, L);
22099}
22100bool ByteCodeEmitter::emitFlipFixedPointIntAPS(SourceInfo L) {
22101 return emitOp<>(OP_FlipFixedPointIntAPS, L);
22102}
22103bool ByteCodeEmitter::emitFlipFixedPointBool(SourceInfo L) {
22104 return emitOp<>(OP_FlipFixedPointBool, L);
22105}
22106bool ByteCodeEmitter::emitFlipFixedPointFixedPoint(SourceInfo L) {
22107 return emitOp<>(OP_FlipFixedPointFixedPoint, L);
22108}
22109bool ByteCodeEmitter::emitFlipFixedPointPtr(SourceInfo L) {
22110 return emitOp<>(OP_FlipFixedPointPtr, L);
22111}
22112bool ByteCodeEmitter::emitFlipFixedPointMemberPtr(SourceInfo L) {
22113 return emitOp<>(OP_FlipFixedPointMemberPtr, L);
22114}
22115bool ByteCodeEmitter::emitFlipFixedPointFloat(SourceInfo L) {
22116 return emitOp<>(OP_FlipFixedPointFloat, L);
22117}
22118bool ByteCodeEmitter::emitFlipPtrSint8(SourceInfo L) {
22119 return emitOp<>(OP_FlipPtrSint8, L);
22120}
22121bool ByteCodeEmitter::emitFlipPtrUint8(SourceInfo L) {
22122 return emitOp<>(OP_FlipPtrUint8, L);
22123}
22124bool ByteCodeEmitter::emitFlipPtrSint16(SourceInfo L) {
22125 return emitOp<>(OP_FlipPtrSint16, L);
22126}
22127bool ByteCodeEmitter::emitFlipPtrUint16(SourceInfo L) {
22128 return emitOp<>(OP_FlipPtrUint16, L);
22129}
22130bool ByteCodeEmitter::emitFlipPtrSint32(SourceInfo L) {
22131 return emitOp<>(OP_FlipPtrSint32, L);
22132}
22133bool ByteCodeEmitter::emitFlipPtrUint32(SourceInfo L) {
22134 return emitOp<>(OP_FlipPtrUint32, L);
22135}
22136bool ByteCodeEmitter::emitFlipPtrSint64(SourceInfo L) {
22137 return emitOp<>(OP_FlipPtrSint64, L);
22138}
22139bool ByteCodeEmitter::emitFlipPtrUint64(SourceInfo L) {
22140 return emitOp<>(OP_FlipPtrUint64, L);
22141}
22142bool ByteCodeEmitter::emitFlipPtrIntAP(SourceInfo L) {
22143 return emitOp<>(OP_FlipPtrIntAP, L);
22144}
22145bool ByteCodeEmitter::emitFlipPtrIntAPS(SourceInfo L) {
22146 return emitOp<>(OP_FlipPtrIntAPS, L);
22147}
22148bool ByteCodeEmitter::emitFlipPtrBool(SourceInfo L) {
22149 return emitOp<>(OP_FlipPtrBool, L);
22150}
22151bool ByteCodeEmitter::emitFlipPtrFixedPoint(SourceInfo L) {
22152 return emitOp<>(OP_FlipPtrFixedPoint, L);
22153}
22154bool ByteCodeEmitter::emitFlipPtrPtr(SourceInfo L) {
22155 return emitOp<>(OP_FlipPtrPtr, L);
22156}
22157bool ByteCodeEmitter::emitFlipPtrMemberPtr(SourceInfo L) {
22158 return emitOp<>(OP_FlipPtrMemberPtr, L);
22159}
22160bool ByteCodeEmitter::emitFlipPtrFloat(SourceInfo L) {
22161 return emitOp<>(OP_FlipPtrFloat, L);
22162}
22163bool ByteCodeEmitter::emitFlipMemberPtrSint8(SourceInfo L) {
22164 return emitOp<>(OP_FlipMemberPtrSint8, L);
22165}
22166bool ByteCodeEmitter::emitFlipMemberPtrUint8(SourceInfo L) {
22167 return emitOp<>(OP_FlipMemberPtrUint8, L);
22168}
22169bool ByteCodeEmitter::emitFlipMemberPtrSint16(SourceInfo L) {
22170 return emitOp<>(OP_FlipMemberPtrSint16, L);
22171}
22172bool ByteCodeEmitter::emitFlipMemberPtrUint16(SourceInfo L) {
22173 return emitOp<>(OP_FlipMemberPtrUint16, L);
22174}
22175bool ByteCodeEmitter::emitFlipMemberPtrSint32(SourceInfo L) {
22176 return emitOp<>(OP_FlipMemberPtrSint32, L);
22177}
22178bool ByteCodeEmitter::emitFlipMemberPtrUint32(SourceInfo L) {
22179 return emitOp<>(OP_FlipMemberPtrUint32, L);
22180}
22181bool ByteCodeEmitter::emitFlipMemberPtrSint64(SourceInfo L) {
22182 return emitOp<>(OP_FlipMemberPtrSint64, L);
22183}
22184bool ByteCodeEmitter::emitFlipMemberPtrUint64(SourceInfo L) {
22185 return emitOp<>(OP_FlipMemberPtrUint64, L);
22186}
22187bool ByteCodeEmitter::emitFlipMemberPtrIntAP(SourceInfo L) {
22188 return emitOp<>(OP_FlipMemberPtrIntAP, L);
22189}
22190bool ByteCodeEmitter::emitFlipMemberPtrIntAPS(SourceInfo L) {
22191 return emitOp<>(OP_FlipMemberPtrIntAPS, L);
22192}
22193bool ByteCodeEmitter::emitFlipMemberPtrBool(SourceInfo L) {
22194 return emitOp<>(OP_FlipMemberPtrBool, L);
22195}
22196bool ByteCodeEmitter::emitFlipMemberPtrFixedPoint(SourceInfo L) {
22197 return emitOp<>(OP_FlipMemberPtrFixedPoint, L);
22198}
22199bool ByteCodeEmitter::emitFlipMemberPtrPtr(SourceInfo L) {
22200 return emitOp<>(OP_FlipMemberPtrPtr, L);
22201}
22202bool ByteCodeEmitter::emitFlipMemberPtrMemberPtr(SourceInfo L) {
22203 return emitOp<>(OP_FlipMemberPtrMemberPtr, L);
22204}
22205bool ByteCodeEmitter::emitFlipMemberPtrFloat(SourceInfo L) {
22206 return emitOp<>(OP_FlipMemberPtrFloat, L);
22207}
22208bool ByteCodeEmitter::emitFlipFloatSint8(SourceInfo L) {
22209 return emitOp<>(OP_FlipFloatSint8, L);
22210}
22211bool ByteCodeEmitter::emitFlipFloatUint8(SourceInfo L) {
22212 return emitOp<>(OP_FlipFloatUint8, L);
22213}
22214bool ByteCodeEmitter::emitFlipFloatSint16(SourceInfo L) {
22215 return emitOp<>(OP_FlipFloatSint16, L);
22216}
22217bool ByteCodeEmitter::emitFlipFloatUint16(SourceInfo L) {
22218 return emitOp<>(OP_FlipFloatUint16, L);
22219}
22220bool ByteCodeEmitter::emitFlipFloatSint32(SourceInfo L) {
22221 return emitOp<>(OP_FlipFloatSint32, L);
22222}
22223bool ByteCodeEmitter::emitFlipFloatUint32(SourceInfo L) {
22224 return emitOp<>(OP_FlipFloatUint32, L);
22225}
22226bool ByteCodeEmitter::emitFlipFloatSint64(SourceInfo L) {
22227 return emitOp<>(OP_FlipFloatSint64, L);
22228}
22229bool ByteCodeEmitter::emitFlipFloatUint64(SourceInfo L) {
22230 return emitOp<>(OP_FlipFloatUint64, L);
22231}
22232bool ByteCodeEmitter::emitFlipFloatIntAP(SourceInfo L) {
22233 return emitOp<>(OP_FlipFloatIntAP, L);
22234}
22235bool ByteCodeEmitter::emitFlipFloatIntAPS(SourceInfo L) {
22236 return emitOp<>(OP_FlipFloatIntAPS, L);
22237}
22238bool ByteCodeEmitter::emitFlipFloatBool(SourceInfo L) {
22239 return emitOp<>(OP_FlipFloatBool, L);
22240}
22241bool ByteCodeEmitter::emitFlipFloatFixedPoint(SourceInfo L) {
22242 return emitOp<>(OP_FlipFloatFixedPoint, L);
22243}
22244bool ByteCodeEmitter::emitFlipFloatPtr(SourceInfo L) {
22245 return emitOp<>(OP_FlipFloatPtr, L);
22246}
22247bool ByteCodeEmitter::emitFlipFloatMemberPtr(SourceInfo L) {
22248 return emitOp<>(OP_FlipFloatMemberPtr, L);
22249}
22250bool ByteCodeEmitter::emitFlipFloatFloat(SourceInfo L) {
22251 return emitOp<>(OP_FlipFloatFloat, L);
22252}
22253#endif
22254#ifdef GET_EVAL_IMPL
22255bool EvalEmitter::emitFlipSint8Sint8(SourceInfo L) {
22256 if (!isActive()) return true;
22257 CurrentSource = L;
22258 return Flip<PT_Sint8, PT_Sint8>(S, OpPC);
22259}
22260bool EvalEmitter::emitFlipSint8Uint8(SourceInfo L) {
22261 if (!isActive()) return true;
22262 CurrentSource = L;
22263 return Flip<PT_Sint8, PT_Uint8>(S, OpPC);
22264}
22265bool EvalEmitter::emitFlipSint8Sint16(SourceInfo L) {
22266 if (!isActive()) return true;
22267 CurrentSource = L;
22268 return Flip<PT_Sint8, PT_Sint16>(S, OpPC);
22269}
22270bool EvalEmitter::emitFlipSint8Uint16(SourceInfo L) {
22271 if (!isActive()) return true;
22272 CurrentSource = L;
22273 return Flip<PT_Sint8, PT_Uint16>(S, OpPC);
22274}
22275bool EvalEmitter::emitFlipSint8Sint32(SourceInfo L) {
22276 if (!isActive()) return true;
22277 CurrentSource = L;
22278 return Flip<PT_Sint8, PT_Sint32>(S, OpPC);
22279}
22280bool EvalEmitter::emitFlipSint8Uint32(SourceInfo L) {
22281 if (!isActive()) return true;
22282 CurrentSource = L;
22283 return Flip<PT_Sint8, PT_Uint32>(S, OpPC);
22284}
22285bool EvalEmitter::emitFlipSint8Sint64(SourceInfo L) {
22286 if (!isActive()) return true;
22287 CurrentSource = L;
22288 return Flip<PT_Sint8, PT_Sint64>(S, OpPC);
22289}
22290bool EvalEmitter::emitFlipSint8Uint64(SourceInfo L) {
22291 if (!isActive()) return true;
22292 CurrentSource = L;
22293 return Flip<PT_Sint8, PT_Uint64>(S, OpPC);
22294}
22295bool EvalEmitter::emitFlipSint8IntAP(SourceInfo L) {
22296 if (!isActive()) return true;
22297 CurrentSource = L;
22298 return Flip<PT_Sint8, PT_IntAP>(S, OpPC);
22299}
22300bool EvalEmitter::emitFlipSint8IntAPS(SourceInfo L) {
22301 if (!isActive()) return true;
22302 CurrentSource = L;
22303 return Flip<PT_Sint8, PT_IntAPS>(S, OpPC);
22304}
22305bool EvalEmitter::emitFlipSint8Bool(SourceInfo L) {
22306 if (!isActive()) return true;
22307 CurrentSource = L;
22308 return Flip<PT_Sint8, PT_Bool>(S, OpPC);
22309}
22310bool EvalEmitter::emitFlipSint8FixedPoint(SourceInfo L) {
22311 if (!isActive()) return true;
22312 CurrentSource = L;
22313 return Flip<PT_Sint8, PT_FixedPoint>(S, OpPC);
22314}
22315bool EvalEmitter::emitFlipSint8Ptr(SourceInfo L) {
22316 if (!isActive()) return true;
22317 CurrentSource = L;
22318 return Flip<PT_Sint8, PT_Ptr>(S, OpPC);
22319}
22320bool EvalEmitter::emitFlipSint8MemberPtr(SourceInfo L) {
22321 if (!isActive()) return true;
22322 CurrentSource = L;
22323 return Flip<PT_Sint8, PT_MemberPtr>(S, OpPC);
22324}
22325bool EvalEmitter::emitFlipSint8Float(SourceInfo L) {
22326 if (!isActive()) return true;
22327 CurrentSource = L;
22328 return Flip<PT_Sint8, PT_Float>(S, OpPC);
22329}
22330bool EvalEmitter::emitFlipUint8Sint8(SourceInfo L) {
22331 if (!isActive()) return true;
22332 CurrentSource = L;
22333 return Flip<PT_Uint8, PT_Sint8>(S, OpPC);
22334}
22335bool EvalEmitter::emitFlipUint8Uint8(SourceInfo L) {
22336 if (!isActive()) return true;
22337 CurrentSource = L;
22338 return Flip<PT_Uint8, PT_Uint8>(S, OpPC);
22339}
22340bool EvalEmitter::emitFlipUint8Sint16(SourceInfo L) {
22341 if (!isActive()) return true;
22342 CurrentSource = L;
22343 return Flip<PT_Uint8, PT_Sint16>(S, OpPC);
22344}
22345bool EvalEmitter::emitFlipUint8Uint16(SourceInfo L) {
22346 if (!isActive()) return true;
22347 CurrentSource = L;
22348 return Flip<PT_Uint8, PT_Uint16>(S, OpPC);
22349}
22350bool EvalEmitter::emitFlipUint8Sint32(SourceInfo L) {
22351 if (!isActive()) return true;
22352 CurrentSource = L;
22353 return Flip<PT_Uint8, PT_Sint32>(S, OpPC);
22354}
22355bool EvalEmitter::emitFlipUint8Uint32(SourceInfo L) {
22356 if (!isActive()) return true;
22357 CurrentSource = L;
22358 return Flip<PT_Uint8, PT_Uint32>(S, OpPC);
22359}
22360bool EvalEmitter::emitFlipUint8Sint64(SourceInfo L) {
22361 if (!isActive()) return true;
22362 CurrentSource = L;
22363 return Flip<PT_Uint8, PT_Sint64>(S, OpPC);
22364}
22365bool EvalEmitter::emitFlipUint8Uint64(SourceInfo L) {
22366 if (!isActive()) return true;
22367 CurrentSource = L;
22368 return Flip<PT_Uint8, PT_Uint64>(S, OpPC);
22369}
22370bool EvalEmitter::emitFlipUint8IntAP(SourceInfo L) {
22371 if (!isActive()) return true;
22372 CurrentSource = L;
22373 return Flip<PT_Uint8, PT_IntAP>(S, OpPC);
22374}
22375bool EvalEmitter::emitFlipUint8IntAPS(SourceInfo L) {
22376 if (!isActive()) return true;
22377 CurrentSource = L;
22378 return Flip<PT_Uint8, PT_IntAPS>(S, OpPC);
22379}
22380bool EvalEmitter::emitFlipUint8Bool(SourceInfo L) {
22381 if (!isActive()) return true;
22382 CurrentSource = L;
22383 return Flip<PT_Uint8, PT_Bool>(S, OpPC);
22384}
22385bool EvalEmitter::emitFlipUint8FixedPoint(SourceInfo L) {
22386 if (!isActive()) return true;
22387 CurrentSource = L;
22388 return Flip<PT_Uint8, PT_FixedPoint>(S, OpPC);
22389}
22390bool EvalEmitter::emitFlipUint8Ptr(SourceInfo L) {
22391 if (!isActive()) return true;
22392 CurrentSource = L;
22393 return Flip<PT_Uint8, PT_Ptr>(S, OpPC);
22394}
22395bool EvalEmitter::emitFlipUint8MemberPtr(SourceInfo L) {
22396 if (!isActive()) return true;
22397 CurrentSource = L;
22398 return Flip<PT_Uint8, PT_MemberPtr>(S, OpPC);
22399}
22400bool EvalEmitter::emitFlipUint8Float(SourceInfo L) {
22401 if (!isActive()) return true;
22402 CurrentSource = L;
22403 return Flip<PT_Uint8, PT_Float>(S, OpPC);
22404}
22405bool EvalEmitter::emitFlipSint16Sint8(SourceInfo L) {
22406 if (!isActive()) return true;
22407 CurrentSource = L;
22408 return Flip<PT_Sint16, PT_Sint8>(S, OpPC);
22409}
22410bool EvalEmitter::emitFlipSint16Uint8(SourceInfo L) {
22411 if (!isActive()) return true;
22412 CurrentSource = L;
22413 return Flip<PT_Sint16, PT_Uint8>(S, OpPC);
22414}
22415bool EvalEmitter::emitFlipSint16Sint16(SourceInfo L) {
22416 if (!isActive()) return true;
22417 CurrentSource = L;
22418 return Flip<PT_Sint16, PT_Sint16>(S, OpPC);
22419}
22420bool EvalEmitter::emitFlipSint16Uint16(SourceInfo L) {
22421 if (!isActive()) return true;
22422 CurrentSource = L;
22423 return Flip<PT_Sint16, PT_Uint16>(S, OpPC);
22424}
22425bool EvalEmitter::emitFlipSint16Sint32(SourceInfo L) {
22426 if (!isActive()) return true;
22427 CurrentSource = L;
22428 return Flip<PT_Sint16, PT_Sint32>(S, OpPC);
22429}
22430bool EvalEmitter::emitFlipSint16Uint32(SourceInfo L) {
22431 if (!isActive()) return true;
22432 CurrentSource = L;
22433 return Flip<PT_Sint16, PT_Uint32>(S, OpPC);
22434}
22435bool EvalEmitter::emitFlipSint16Sint64(SourceInfo L) {
22436 if (!isActive()) return true;
22437 CurrentSource = L;
22438 return Flip<PT_Sint16, PT_Sint64>(S, OpPC);
22439}
22440bool EvalEmitter::emitFlipSint16Uint64(SourceInfo L) {
22441 if (!isActive()) return true;
22442 CurrentSource = L;
22443 return Flip<PT_Sint16, PT_Uint64>(S, OpPC);
22444}
22445bool EvalEmitter::emitFlipSint16IntAP(SourceInfo L) {
22446 if (!isActive()) return true;
22447 CurrentSource = L;
22448 return Flip<PT_Sint16, PT_IntAP>(S, OpPC);
22449}
22450bool EvalEmitter::emitFlipSint16IntAPS(SourceInfo L) {
22451 if (!isActive()) return true;
22452 CurrentSource = L;
22453 return Flip<PT_Sint16, PT_IntAPS>(S, OpPC);
22454}
22455bool EvalEmitter::emitFlipSint16Bool(SourceInfo L) {
22456 if (!isActive()) return true;
22457 CurrentSource = L;
22458 return Flip<PT_Sint16, PT_Bool>(S, OpPC);
22459}
22460bool EvalEmitter::emitFlipSint16FixedPoint(SourceInfo L) {
22461 if (!isActive()) return true;
22462 CurrentSource = L;
22463 return Flip<PT_Sint16, PT_FixedPoint>(S, OpPC);
22464}
22465bool EvalEmitter::emitFlipSint16Ptr(SourceInfo L) {
22466 if (!isActive()) return true;
22467 CurrentSource = L;
22468 return Flip<PT_Sint16, PT_Ptr>(S, OpPC);
22469}
22470bool EvalEmitter::emitFlipSint16MemberPtr(SourceInfo L) {
22471 if (!isActive()) return true;
22472 CurrentSource = L;
22473 return Flip<PT_Sint16, PT_MemberPtr>(S, OpPC);
22474}
22475bool EvalEmitter::emitFlipSint16Float(SourceInfo L) {
22476 if (!isActive()) return true;
22477 CurrentSource = L;
22478 return Flip<PT_Sint16, PT_Float>(S, OpPC);
22479}
22480bool EvalEmitter::emitFlipUint16Sint8(SourceInfo L) {
22481 if (!isActive()) return true;
22482 CurrentSource = L;
22483 return Flip<PT_Uint16, PT_Sint8>(S, OpPC);
22484}
22485bool EvalEmitter::emitFlipUint16Uint8(SourceInfo L) {
22486 if (!isActive()) return true;
22487 CurrentSource = L;
22488 return Flip<PT_Uint16, PT_Uint8>(S, OpPC);
22489}
22490bool EvalEmitter::emitFlipUint16Sint16(SourceInfo L) {
22491 if (!isActive()) return true;
22492 CurrentSource = L;
22493 return Flip<PT_Uint16, PT_Sint16>(S, OpPC);
22494}
22495bool EvalEmitter::emitFlipUint16Uint16(SourceInfo L) {
22496 if (!isActive()) return true;
22497 CurrentSource = L;
22498 return Flip<PT_Uint16, PT_Uint16>(S, OpPC);
22499}
22500bool EvalEmitter::emitFlipUint16Sint32(SourceInfo L) {
22501 if (!isActive()) return true;
22502 CurrentSource = L;
22503 return Flip<PT_Uint16, PT_Sint32>(S, OpPC);
22504}
22505bool EvalEmitter::emitFlipUint16Uint32(SourceInfo L) {
22506 if (!isActive()) return true;
22507 CurrentSource = L;
22508 return Flip<PT_Uint16, PT_Uint32>(S, OpPC);
22509}
22510bool EvalEmitter::emitFlipUint16Sint64(SourceInfo L) {
22511 if (!isActive()) return true;
22512 CurrentSource = L;
22513 return Flip<PT_Uint16, PT_Sint64>(S, OpPC);
22514}
22515bool EvalEmitter::emitFlipUint16Uint64(SourceInfo L) {
22516 if (!isActive()) return true;
22517 CurrentSource = L;
22518 return Flip<PT_Uint16, PT_Uint64>(S, OpPC);
22519}
22520bool EvalEmitter::emitFlipUint16IntAP(SourceInfo L) {
22521 if (!isActive()) return true;
22522 CurrentSource = L;
22523 return Flip<PT_Uint16, PT_IntAP>(S, OpPC);
22524}
22525bool EvalEmitter::emitFlipUint16IntAPS(SourceInfo L) {
22526 if (!isActive()) return true;
22527 CurrentSource = L;
22528 return Flip<PT_Uint16, PT_IntAPS>(S, OpPC);
22529}
22530bool EvalEmitter::emitFlipUint16Bool(SourceInfo L) {
22531 if (!isActive()) return true;
22532 CurrentSource = L;
22533 return Flip<PT_Uint16, PT_Bool>(S, OpPC);
22534}
22535bool EvalEmitter::emitFlipUint16FixedPoint(SourceInfo L) {
22536 if (!isActive()) return true;
22537 CurrentSource = L;
22538 return Flip<PT_Uint16, PT_FixedPoint>(S, OpPC);
22539}
22540bool EvalEmitter::emitFlipUint16Ptr(SourceInfo L) {
22541 if (!isActive()) return true;
22542 CurrentSource = L;
22543 return Flip<PT_Uint16, PT_Ptr>(S, OpPC);
22544}
22545bool EvalEmitter::emitFlipUint16MemberPtr(SourceInfo L) {
22546 if (!isActive()) return true;
22547 CurrentSource = L;
22548 return Flip<PT_Uint16, PT_MemberPtr>(S, OpPC);
22549}
22550bool EvalEmitter::emitFlipUint16Float(SourceInfo L) {
22551 if (!isActive()) return true;
22552 CurrentSource = L;
22553 return Flip<PT_Uint16, PT_Float>(S, OpPC);
22554}
22555bool EvalEmitter::emitFlipSint32Sint8(SourceInfo L) {
22556 if (!isActive()) return true;
22557 CurrentSource = L;
22558 return Flip<PT_Sint32, PT_Sint8>(S, OpPC);
22559}
22560bool EvalEmitter::emitFlipSint32Uint8(SourceInfo L) {
22561 if (!isActive()) return true;
22562 CurrentSource = L;
22563 return Flip<PT_Sint32, PT_Uint8>(S, OpPC);
22564}
22565bool EvalEmitter::emitFlipSint32Sint16(SourceInfo L) {
22566 if (!isActive()) return true;
22567 CurrentSource = L;
22568 return Flip<PT_Sint32, PT_Sint16>(S, OpPC);
22569}
22570bool EvalEmitter::emitFlipSint32Uint16(SourceInfo L) {
22571 if (!isActive()) return true;
22572 CurrentSource = L;
22573 return Flip<PT_Sint32, PT_Uint16>(S, OpPC);
22574}
22575bool EvalEmitter::emitFlipSint32Sint32(SourceInfo L) {
22576 if (!isActive()) return true;
22577 CurrentSource = L;
22578 return Flip<PT_Sint32, PT_Sint32>(S, OpPC);
22579}
22580bool EvalEmitter::emitFlipSint32Uint32(SourceInfo L) {
22581 if (!isActive()) return true;
22582 CurrentSource = L;
22583 return Flip<PT_Sint32, PT_Uint32>(S, OpPC);
22584}
22585bool EvalEmitter::emitFlipSint32Sint64(SourceInfo L) {
22586 if (!isActive()) return true;
22587 CurrentSource = L;
22588 return Flip<PT_Sint32, PT_Sint64>(S, OpPC);
22589}
22590bool EvalEmitter::emitFlipSint32Uint64(SourceInfo L) {
22591 if (!isActive()) return true;
22592 CurrentSource = L;
22593 return Flip<PT_Sint32, PT_Uint64>(S, OpPC);
22594}
22595bool EvalEmitter::emitFlipSint32IntAP(SourceInfo L) {
22596 if (!isActive()) return true;
22597 CurrentSource = L;
22598 return Flip<PT_Sint32, PT_IntAP>(S, OpPC);
22599}
22600bool EvalEmitter::emitFlipSint32IntAPS(SourceInfo L) {
22601 if (!isActive()) return true;
22602 CurrentSource = L;
22603 return Flip<PT_Sint32, PT_IntAPS>(S, OpPC);
22604}
22605bool EvalEmitter::emitFlipSint32Bool(SourceInfo L) {
22606 if (!isActive()) return true;
22607 CurrentSource = L;
22608 return Flip<PT_Sint32, PT_Bool>(S, OpPC);
22609}
22610bool EvalEmitter::emitFlipSint32FixedPoint(SourceInfo L) {
22611 if (!isActive()) return true;
22612 CurrentSource = L;
22613 return Flip<PT_Sint32, PT_FixedPoint>(S, OpPC);
22614}
22615bool EvalEmitter::emitFlipSint32Ptr(SourceInfo L) {
22616 if (!isActive()) return true;
22617 CurrentSource = L;
22618 return Flip<PT_Sint32, PT_Ptr>(S, OpPC);
22619}
22620bool EvalEmitter::emitFlipSint32MemberPtr(SourceInfo L) {
22621 if (!isActive()) return true;
22622 CurrentSource = L;
22623 return Flip<PT_Sint32, PT_MemberPtr>(S, OpPC);
22624}
22625bool EvalEmitter::emitFlipSint32Float(SourceInfo L) {
22626 if (!isActive()) return true;
22627 CurrentSource = L;
22628 return Flip<PT_Sint32, PT_Float>(S, OpPC);
22629}
22630bool EvalEmitter::emitFlipUint32Sint8(SourceInfo L) {
22631 if (!isActive()) return true;
22632 CurrentSource = L;
22633 return Flip<PT_Uint32, PT_Sint8>(S, OpPC);
22634}
22635bool EvalEmitter::emitFlipUint32Uint8(SourceInfo L) {
22636 if (!isActive()) return true;
22637 CurrentSource = L;
22638 return Flip<PT_Uint32, PT_Uint8>(S, OpPC);
22639}
22640bool EvalEmitter::emitFlipUint32Sint16(SourceInfo L) {
22641 if (!isActive()) return true;
22642 CurrentSource = L;
22643 return Flip<PT_Uint32, PT_Sint16>(S, OpPC);
22644}
22645bool EvalEmitter::emitFlipUint32Uint16(SourceInfo L) {
22646 if (!isActive()) return true;
22647 CurrentSource = L;
22648 return Flip<PT_Uint32, PT_Uint16>(S, OpPC);
22649}
22650bool EvalEmitter::emitFlipUint32Sint32(SourceInfo L) {
22651 if (!isActive()) return true;
22652 CurrentSource = L;
22653 return Flip<PT_Uint32, PT_Sint32>(S, OpPC);
22654}
22655bool EvalEmitter::emitFlipUint32Uint32(SourceInfo L) {
22656 if (!isActive()) return true;
22657 CurrentSource = L;
22658 return Flip<PT_Uint32, PT_Uint32>(S, OpPC);
22659}
22660bool EvalEmitter::emitFlipUint32Sint64(SourceInfo L) {
22661 if (!isActive()) return true;
22662 CurrentSource = L;
22663 return Flip<PT_Uint32, PT_Sint64>(S, OpPC);
22664}
22665bool EvalEmitter::emitFlipUint32Uint64(SourceInfo L) {
22666 if (!isActive()) return true;
22667 CurrentSource = L;
22668 return Flip<PT_Uint32, PT_Uint64>(S, OpPC);
22669}
22670bool EvalEmitter::emitFlipUint32IntAP(SourceInfo L) {
22671 if (!isActive()) return true;
22672 CurrentSource = L;
22673 return Flip<PT_Uint32, PT_IntAP>(S, OpPC);
22674}
22675bool EvalEmitter::emitFlipUint32IntAPS(SourceInfo L) {
22676 if (!isActive()) return true;
22677 CurrentSource = L;
22678 return Flip<PT_Uint32, PT_IntAPS>(S, OpPC);
22679}
22680bool EvalEmitter::emitFlipUint32Bool(SourceInfo L) {
22681 if (!isActive()) return true;
22682 CurrentSource = L;
22683 return Flip<PT_Uint32, PT_Bool>(S, OpPC);
22684}
22685bool EvalEmitter::emitFlipUint32FixedPoint(SourceInfo L) {
22686 if (!isActive()) return true;
22687 CurrentSource = L;
22688 return Flip<PT_Uint32, PT_FixedPoint>(S, OpPC);
22689}
22690bool EvalEmitter::emitFlipUint32Ptr(SourceInfo L) {
22691 if (!isActive()) return true;
22692 CurrentSource = L;
22693 return Flip<PT_Uint32, PT_Ptr>(S, OpPC);
22694}
22695bool EvalEmitter::emitFlipUint32MemberPtr(SourceInfo L) {
22696 if (!isActive()) return true;
22697 CurrentSource = L;
22698 return Flip<PT_Uint32, PT_MemberPtr>(S, OpPC);
22699}
22700bool EvalEmitter::emitFlipUint32Float(SourceInfo L) {
22701 if (!isActive()) return true;
22702 CurrentSource = L;
22703 return Flip<PT_Uint32, PT_Float>(S, OpPC);
22704}
22705bool EvalEmitter::emitFlipSint64Sint8(SourceInfo L) {
22706 if (!isActive()) return true;
22707 CurrentSource = L;
22708 return Flip<PT_Sint64, PT_Sint8>(S, OpPC);
22709}
22710bool EvalEmitter::emitFlipSint64Uint8(SourceInfo L) {
22711 if (!isActive()) return true;
22712 CurrentSource = L;
22713 return Flip<PT_Sint64, PT_Uint8>(S, OpPC);
22714}
22715bool EvalEmitter::emitFlipSint64Sint16(SourceInfo L) {
22716 if (!isActive()) return true;
22717 CurrentSource = L;
22718 return Flip<PT_Sint64, PT_Sint16>(S, OpPC);
22719}
22720bool EvalEmitter::emitFlipSint64Uint16(SourceInfo L) {
22721 if (!isActive()) return true;
22722 CurrentSource = L;
22723 return Flip<PT_Sint64, PT_Uint16>(S, OpPC);
22724}
22725bool EvalEmitter::emitFlipSint64Sint32(SourceInfo L) {
22726 if (!isActive()) return true;
22727 CurrentSource = L;
22728 return Flip<PT_Sint64, PT_Sint32>(S, OpPC);
22729}
22730bool EvalEmitter::emitFlipSint64Uint32(SourceInfo L) {
22731 if (!isActive()) return true;
22732 CurrentSource = L;
22733 return Flip<PT_Sint64, PT_Uint32>(S, OpPC);
22734}
22735bool EvalEmitter::emitFlipSint64Sint64(SourceInfo L) {
22736 if (!isActive()) return true;
22737 CurrentSource = L;
22738 return Flip<PT_Sint64, PT_Sint64>(S, OpPC);
22739}
22740bool EvalEmitter::emitFlipSint64Uint64(SourceInfo L) {
22741 if (!isActive()) return true;
22742 CurrentSource = L;
22743 return Flip<PT_Sint64, PT_Uint64>(S, OpPC);
22744}
22745bool EvalEmitter::emitFlipSint64IntAP(SourceInfo L) {
22746 if (!isActive()) return true;
22747 CurrentSource = L;
22748 return Flip<PT_Sint64, PT_IntAP>(S, OpPC);
22749}
22750bool EvalEmitter::emitFlipSint64IntAPS(SourceInfo L) {
22751 if (!isActive()) return true;
22752 CurrentSource = L;
22753 return Flip<PT_Sint64, PT_IntAPS>(S, OpPC);
22754}
22755bool EvalEmitter::emitFlipSint64Bool(SourceInfo L) {
22756 if (!isActive()) return true;
22757 CurrentSource = L;
22758 return Flip<PT_Sint64, PT_Bool>(S, OpPC);
22759}
22760bool EvalEmitter::emitFlipSint64FixedPoint(SourceInfo L) {
22761 if (!isActive()) return true;
22762 CurrentSource = L;
22763 return Flip<PT_Sint64, PT_FixedPoint>(S, OpPC);
22764}
22765bool EvalEmitter::emitFlipSint64Ptr(SourceInfo L) {
22766 if (!isActive()) return true;
22767 CurrentSource = L;
22768 return Flip<PT_Sint64, PT_Ptr>(S, OpPC);
22769}
22770bool EvalEmitter::emitFlipSint64MemberPtr(SourceInfo L) {
22771 if (!isActive()) return true;
22772 CurrentSource = L;
22773 return Flip<PT_Sint64, PT_MemberPtr>(S, OpPC);
22774}
22775bool EvalEmitter::emitFlipSint64Float(SourceInfo L) {
22776 if (!isActive()) return true;
22777 CurrentSource = L;
22778 return Flip<PT_Sint64, PT_Float>(S, OpPC);
22779}
22780bool EvalEmitter::emitFlipUint64Sint8(SourceInfo L) {
22781 if (!isActive()) return true;
22782 CurrentSource = L;
22783 return Flip<PT_Uint64, PT_Sint8>(S, OpPC);
22784}
22785bool EvalEmitter::emitFlipUint64Uint8(SourceInfo L) {
22786 if (!isActive()) return true;
22787 CurrentSource = L;
22788 return Flip<PT_Uint64, PT_Uint8>(S, OpPC);
22789}
22790bool EvalEmitter::emitFlipUint64Sint16(SourceInfo L) {
22791 if (!isActive()) return true;
22792 CurrentSource = L;
22793 return Flip<PT_Uint64, PT_Sint16>(S, OpPC);
22794}
22795bool EvalEmitter::emitFlipUint64Uint16(SourceInfo L) {
22796 if (!isActive()) return true;
22797 CurrentSource = L;
22798 return Flip<PT_Uint64, PT_Uint16>(S, OpPC);
22799}
22800bool EvalEmitter::emitFlipUint64Sint32(SourceInfo L) {
22801 if (!isActive()) return true;
22802 CurrentSource = L;
22803 return Flip<PT_Uint64, PT_Sint32>(S, OpPC);
22804}
22805bool EvalEmitter::emitFlipUint64Uint32(SourceInfo L) {
22806 if (!isActive()) return true;
22807 CurrentSource = L;
22808 return Flip<PT_Uint64, PT_Uint32>(S, OpPC);
22809}
22810bool EvalEmitter::emitFlipUint64Sint64(SourceInfo L) {
22811 if (!isActive()) return true;
22812 CurrentSource = L;
22813 return Flip<PT_Uint64, PT_Sint64>(S, OpPC);
22814}
22815bool EvalEmitter::emitFlipUint64Uint64(SourceInfo L) {
22816 if (!isActive()) return true;
22817 CurrentSource = L;
22818 return Flip<PT_Uint64, PT_Uint64>(S, OpPC);
22819}
22820bool EvalEmitter::emitFlipUint64IntAP(SourceInfo L) {
22821 if (!isActive()) return true;
22822 CurrentSource = L;
22823 return Flip<PT_Uint64, PT_IntAP>(S, OpPC);
22824}
22825bool EvalEmitter::emitFlipUint64IntAPS(SourceInfo L) {
22826 if (!isActive()) return true;
22827 CurrentSource = L;
22828 return Flip<PT_Uint64, PT_IntAPS>(S, OpPC);
22829}
22830bool EvalEmitter::emitFlipUint64Bool(SourceInfo L) {
22831 if (!isActive()) return true;
22832 CurrentSource = L;
22833 return Flip<PT_Uint64, PT_Bool>(S, OpPC);
22834}
22835bool EvalEmitter::emitFlipUint64FixedPoint(SourceInfo L) {
22836 if (!isActive()) return true;
22837 CurrentSource = L;
22838 return Flip<PT_Uint64, PT_FixedPoint>(S, OpPC);
22839}
22840bool EvalEmitter::emitFlipUint64Ptr(SourceInfo L) {
22841 if (!isActive()) return true;
22842 CurrentSource = L;
22843 return Flip<PT_Uint64, PT_Ptr>(S, OpPC);
22844}
22845bool EvalEmitter::emitFlipUint64MemberPtr(SourceInfo L) {
22846 if (!isActive()) return true;
22847 CurrentSource = L;
22848 return Flip<PT_Uint64, PT_MemberPtr>(S, OpPC);
22849}
22850bool EvalEmitter::emitFlipUint64Float(SourceInfo L) {
22851 if (!isActive()) return true;
22852 CurrentSource = L;
22853 return Flip<PT_Uint64, PT_Float>(S, OpPC);
22854}
22855bool EvalEmitter::emitFlipIntAPSint8(SourceInfo L) {
22856 if (!isActive()) return true;
22857 CurrentSource = L;
22858 return Flip<PT_IntAP, PT_Sint8>(S, OpPC);
22859}
22860bool EvalEmitter::emitFlipIntAPUint8(SourceInfo L) {
22861 if (!isActive()) return true;
22862 CurrentSource = L;
22863 return Flip<PT_IntAP, PT_Uint8>(S, OpPC);
22864}
22865bool EvalEmitter::emitFlipIntAPSint16(SourceInfo L) {
22866 if (!isActive()) return true;
22867 CurrentSource = L;
22868 return Flip<PT_IntAP, PT_Sint16>(S, OpPC);
22869}
22870bool EvalEmitter::emitFlipIntAPUint16(SourceInfo L) {
22871 if (!isActive()) return true;
22872 CurrentSource = L;
22873 return Flip<PT_IntAP, PT_Uint16>(S, OpPC);
22874}
22875bool EvalEmitter::emitFlipIntAPSint32(SourceInfo L) {
22876 if (!isActive()) return true;
22877 CurrentSource = L;
22878 return Flip<PT_IntAP, PT_Sint32>(S, OpPC);
22879}
22880bool EvalEmitter::emitFlipIntAPUint32(SourceInfo L) {
22881 if (!isActive()) return true;
22882 CurrentSource = L;
22883 return Flip<PT_IntAP, PT_Uint32>(S, OpPC);
22884}
22885bool EvalEmitter::emitFlipIntAPSint64(SourceInfo L) {
22886 if (!isActive()) return true;
22887 CurrentSource = L;
22888 return Flip<PT_IntAP, PT_Sint64>(S, OpPC);
22889}
22890bool EvalEmitter::emitFlipIntAPUint64(SourceInfo L) {
22891 if (!isActive()) return true;
22892 CurrentSource = L;
22893 return Flip<PT_IntAP, PT_Uint64>(S, OpPC);
22894}
22895bool EvalEmitter::emitFlipIntAPIntAP(SourceInfo L) {
22896 if (!isActive()) return true;
22897 CurrentSource = L;
22898 return Flip<PT_IntAP, PT_IntAP>(S, OpPC);
22899}
22900bool EvalEmitter::emitFlipIntAPIntAPS(SourceInfo L) {
22901 if (!isActive()) return true;
22902 CurrentSource = L;
22903 return Flip<PT_IntAP, PT_IntAPS>(S, OpPC);
22904}
22905bool EvalEmitter::emitFlipIntAPBool(SourceInfo L) {
22906 if (!isActive()) return true;
22907 CurrentSource = L;
22908 return Flip<PT_IntAP, PT_Bool>(S, OpPC);
22909}
22910bool EvalEmitter::emitFlipIntAPFixedPoint(SourceInfo L) {
22911 if (!isActive()) return true;
22912 CurrentSource = L;
22913 return Flip<PT_IntAP, PT_FixedPoint>(S, OpPC);
22914}
22915bool EvalEmitter::emitFlipIntAPPtr(SourceInfo L) {
22916 if (!isActive()) return true;
22917 CurrentSource = L;
22918 return Flip<PT_IntAP, PT_Ptr>(S, OpPC);
22919}
22920bool EvalEmitter::emitFlipIntAPMemberPtr(SourceInfo L) {
22921 if (!isActive()) return true;
22922 CurrentSource = L;
22923 return Flip<PT_IntAP, PT_MemberPtr>(S, OpPC);
22924}
22925bool EvalEmitter::emitFlipIntAPFloat(SourceInfo L) {
22926 if (!isActive()) return true;
22927 CurrentSource = L;
22928 return Flip<PT_IntAP, PT_Float>(S, OpPC);
22929}
22930bool EvalEmitter::emitFlipIntAPSSint8(SourceInfo L) {
22931 if (!isActive()) return true;
22932 CurrentSource = L;
22933 return Flip<PT_IntAPS, PT_Sint8>(S, OpPC);
22934}
22935bool EvalEmitter::emitFlipIntAPSUint8(SourceInfo L) {
22936 if (!isActive()) return true;
22937 CurrentSource = L;
22938 return Flip<PT_IntAPS, PT_Uint8>(S, OpPC);
22939}
22940bool EvalEmitter::emitFlipIntAPSSint16(SourceInfo L) {
22941 if (!isActive()) return true;
22942 CurrentSource = L;
22943 return Flip<PT_IntAPS, PT_Sint16>(S, OpPC);
22944}
22945bool EvalEmitter::emitFlipIntAPSUint16(SourceInfo L) {
22946 if (!isActive()) return true;
22947 CurrentSource = L;
22948 return Flip<PT_IntAPS, PT_Uint16>(S, OpPC);
22949}
22950bool EvalEmitter::emitFlipIntAPSSint32(SourceInfo L) {
22951 if (!isActive()) return true;
22952 CurrentSource = L;
22953 return Flip<PT_IntAPS, PT_Sint32>(S, OpPC);
22954}
22955bool EvalEmitter::emitFlipIntAPSUint32(SourceInfo L) {
22956 if (!isActive()) return true;
22957 CurrentSource = L;
22958 return Flip<PT_IntAPS, PT_Uint32>(S, OpPC);
22959}
22960bool EvalEmitter::emitFlipIntAPSSint64(SourceInfo L) {
22961 if (!isActive()) return true;
22962 CurrentSource = L;
22963 return Flip<PT_IntAPS, PT_Sint64>(S, OpPC);
22964}
22965bool EvalEmitter::emitFlipIntAPSUint64(SourceInfo L) {
22966 if (!isActive()) return true;
22967 CurrentSource = L;
22968 return Flip<PT_IntAPS, PT_Uint64>(S, OpPC);
22969}
22970bool EvalEmitter::emitFlipIntAPSIntAP(SourceInfo L) {
22971 if (!isActive()) return true;
22972 CurrentSource = L;
22973 return Flip<PT_IntAPS, PT_IntAP>(S, OpPC);
22974}
22975bool EvalEmitter::emitFlipIntAPSIntAPS(SourceInfo L) {
22976 if (!isActive()) return true;
22977 CurrentSource = L;
22978 return Flip<PT_IntAPS, PT_IntAPS>(S, OpPC);
22979}
22980bool EvalEmitter::emitFlipIntAPSBool(SourceInfo L) {
22981 if (!isActive()) return true;
22982 CurrentSource = L;
22983 return Flip<PT_IntAPS, PT_Bool>(S, OpPC);
22984}
22985bool EvalEmitter::emitFlipIntAPSFixedPoint(SourceInfo L) {
22986 if (!isActive()) return true;
22987 CurrentSource = L;
22988 return Flip<PT_IntAPS, PT_FixedPoint>(S, OpPC);
22989}
22990bool EvalEmitter::emitFlipIntAPSPtr(SourceInfo L) {
22991 if (!isActive()) return true;
22992 CurrentSource = L;
22993 return Flip<PT_IntAPS, PT_Ptr>(S, OpPC);
22994}
22995bool EvalEmitter::emitFlipIntAPSMemberPtr(SourceInfo L) {
22996 if (!isActive()) return true;
22997 CurrentSource = L;
22998 return Flip<PT_IntAPS, PT_MemberPtr>(S, OpPC);
22999}
23000bool EvalEmitter::emitFlipIntAPSFloat(SourceInfo L) {
23001 if (!isActive()) return true;
23002 CurrentSource = L;
23003 return Flip<PT_IntAPS, PT_Float>(S, OpPC);
23004}
23005bool EvalEmitter::emitFlipBoolSint8(SourceInfo L) {
23006 if (!isActive()) return true;
23007 CurrentSource = L;
23008 return Flip<PT_Bool, PT_Sint8>(S, OpPC);
23009}
23010bool EvalEmitter::emitFlipBoolUint8(SourceInfo L) {
23011 if (!isActive()) return true;
23012 CurrentSource = L;
23013 return Flip<PT_Bool, PT_Uint8>(S, OpPC);
23014}
23015bool EvalEmitter::emitFlipBoolSint16(SourceInfo L) {
23016 if (!isActive()) return true;
23017 CurrentSource = L;
23018 return Flip<PT_Bool, PT_Sint16>(S, OpPC);
23019}
23020bool EvalEmitter::emitFlipBoolUint16(SourceInfo L) {
23021 if (!isActive()) return true;
23022 CurrentSource = L;
23023 return Flip<PT_Bool, PT_Uint16>(S, OpPC);
23024}
23025bool EvalEmitter::emitFlipBoolSint32(SourceInfo L) {
23026 if (!isActive()) return true;
23027 CurrentSource = L;
23028 return Flip<PT_Bool, PT_Sint32>(S, OpPC);
23029}
23030bool EvalEmitter::emitFlipBoolUint32(SourceInfo L) {
23031 if (!isActive()) return true;
23032 CurrentSource = L;
23033 return Flip<PT_Bool, PT_Uint32>(S, OpPC);
23034}
23035bool EvalEmitter::emitFlipBoolSint64(SourceInfo L) {
23036 if (!isActive()) return true;
23037 CurrentSource = L;
23038 return Flip<PT_Bool, PT_Sint64>(S, OpPC);
23039}
23040bool EvalEmitter::emitFlipBoolUint64(SourceInfo L) {
23041 if (!isActive()) return true;
23042 CurrentSource = L;
23043 return Flip<PT_Bool, PT_Uint64>(S, OpPC);
23044}
23045bool EvalEmitter::emitFlipBoolIntAP(SourceInfo L) {
23046 if (!isActive()) return true;
23047 CurrentSource = L;
23048 return Flip<PT_Bool, PT_IntAP>(S, OpPC);
23049}
23050bool EvalEmitter::emitFlipBoolIntAPS(SourceInfo L) {
23051 if (!isActive()) return true;
23052 CurrentSource = L;
23053 return Flip<PT_Bool, PT_IntAPS>(S, OpPC);
23054}
23055bool EvalEmitter::emitFlipBoolBool(SourceInfo L) {
23056 if (!isActive()) return true;
23057 CurrentSource = L;
23058 return Flip<PT_Bool, PT_Bool>(S, OpPC);
23059}
23060bool EvalEmitter::emitFlipBoolFixedPoint(SourceInfo L) {
23061 if (!isActive()) return true;
23062 CurrentSource = L;
23063 return Flip<PT_Bool, PT_FixedPoint>(S, OpPC);
23064}
23065bool EvalEmitter::emitFlipBoolPtr(SourceInfo L) {
23066 if (!isActive()) return true;
23067 CurrentSource = L;
23068 return Flip<PT_Bool, PT_Ptr>(S, OpPC);
23069}
23070bool EvalEmitter::emitFlipBoolMemberPtr(SourceInfo L) {
23071 if (!isActive()) return true;
23072 CurrentSource = L;
23073 return Flip<PT_Bool, PT_MemberPtr>(S, OpPC);
23074}
23075bool EvalEmitter::emitFlipBoolFloat(SourceInfo L) {
23076 if (!isActive()) return true;
23077 CurrentSource = L;
23078 return Flip<PT_Bool, PT_Float>(S, OpPC);
23079}
23080bool EvalEmitter::emitFlipFixedPointSint8(SourceInfo L) {
23081 if (!isActive()) return true;
23082 CurrentSource = L;
23083 return Flip<PT_FixedPoint, PT_Sint8>(S, OpPC);
23084}
23085bool EvalEmitter::emitFlipFixedPointUint8(SourceInfo L) {
23086 if (!isActive()) return true;
23087 CurrentSource = L;
23088 return Flip<PT_FixedPoint, PT_Uint8>(S, OpPC);
23089}
23090bool EvalEmitter::emitFlipFixedPointSint16(SourceInfo L) {
23091 if (!isActive()) return true;
23092 CurrentSource = L;
23093 return Flip<PT_FixedPoint, PT_Sint16>(S, OpPC);
23094}
23095bool EvalEmitter::emitFlipFixedPointUint16(SourceInfo L) {
23096 if (!isActive()) return true;
23097 CurrentSource = L;
23098 return Flip<PT_FixedPoint, PT_Uint16>(S, OpPC);
23099}
23100bool EvalEmitter::emitFlipFixedPointSint32(SourceInfo L) {
23101 if (!isActive()) return true;
23102 CurrentSource = L;
23103 return Flip<PT_FixedPoint, PT_Sint32>(S, OpPC);
23104}
23105bool EvalEmitter::emitFlipFixedPointUint32(SourceInfo L) {
23106 if (!isActive()) return true;
23107 CurrentSource = L;
23108 return Flip<PT_FixedPoint, PT_Uint32>(S, OpPC);
23109}
23110bool EvalEmitter::emitFlipFixedPointSint64(SourceInfo L) {
23111 if (!isActive()) return true;
23112 CurrentSource = L;
23113 return Flip<PT_FixedPoint, PT_Sint64>(S, OpPC);
23114}
23115bool EvalEmitter::emitFlipFixedPointUint64(SourceInfo L) {
23116 if (!isActive()) return true;
23117 CurrentSource = L;
23118 return Flip<PT_FixedPoint, PT_Uint64>(S, OpPC);
23119}
23120bool EvalEmitter::emitFlipFixedPointIntAP(SourceInfo L) {
23121 if (!isActive()) return true;
23122 CurrentSource = L;
23123 return Flip<PT_FixedPoint, PT_IntAP>(S, OpPC);
23124}
23125bool EvalEmitter::emitFlipFixedPointIntAPS(SourceInfo L) {
23126 if (!isActive()) return true;
23127 CurrentSource = L;
23128 return Flip<PT_FixedPoint, PT_IntAPS>(S, OpPC);
23129}
23130bool EvalEmitter::emitFlipFixedPointBool(SourceInfo L) {
23131 if (!isActive()) return true;
23132 CurrentSource = L;
23133 return Flip<PT_FixedPoint, PT_Bool>(S, OpPC);
23134}
23135bool EvalEmitter::emitFlipFixedPointFixedPoint(SourceInfo L) {
23136 if (!isActive()) return true;
23137 CurrentSource = L;
23138 return Flip<PT_FixedPoint, PT_FixedPoint>(S, OpPC);
23139}
23140bool EvalEmitter::emitFlipFixedPointPtr(SourceInfo L) {
23141 if (!isActive()) return true;
23142 CurrentSource = L;
23143 return Flip<PT_FixedPoint, PT_Ptr>(S, OpPC);
23144}
23145bool EvalEmitter::emitFlipFixedPointMemberPtr(SourceInfo L) {
23146 if (!isActive()) return true;
23147 CurrentSource = L;
23148 return Flip<PT_FixedPoint, PT_MemberPtr>(S, OpPC);
23149}
23150bool EvalEmitter::emitFlipFixedPointFloat(SourceInfo L) {
23151 if (!isActive()) return true;
23152 CurrentSource = L;
23153 return Flip<PT_FixedPoint, PT_Float>(S, OpPC);
23154}
23155bool EvalEmitter::emitFlipPtrSint8(SourceInfo L) {
23156 if (!isActive()) return true;
23157 CurrentSource = L;
23158 return Flip<PT_Ptr, PT_Sint8>(S, OpPC);
23159}
23160bool EvalEmitter::emitFlipPtrUint8(SourceInfo L) {
23161 if (!isActive()) return true;
23162 CurrentSource = L;
23163 return Flip<PT_Ptr, PT_Uint8>(S, OpPC);
23164}
23165bool EvalEmitter::emitFlipPtrSint16(SourceInfo L) {
23166 if (!isActive()) return true;
23167 CurrentSource = L;
23168 return Flip<PT_Ptr, PT_Sint16>(S, OpPC);
23169}
23170bool EvalEmitter::emitFlipPtrUint16(SourceInfo L) {
23171 if (!isActive()) return true;
23172 CurrentSource = L;
23173 return Flip<PT_Ptr, PT_Uint16>(S, OpPC);
23174}
23175bool EvalEmitter::emitFlipPtrSint32(SourceInfo L) {
23176 if (!isActive()) return true;
23177 CurrentSource = L;
23178 return Flip<PT_Ptr, PT_Sint32>(S, OpPC);
23179}
23180bool EvalEmitter::emitFlipPtrUint32(SourceInfo L) {
23181 if (!isActive()) return true;
23182 CurrentSource = L;
23183 return Flip<PT_Ptr, PT_Uint32>(S, OpPC);
23184}
23185bool EvalEmitter::emitFlipPtrSint64(SourceInfo L) {
23186 if (!isActive()) return true;
23187 CurrentSource = L;
23188 return Flip<PT_Ptr, PT_Sint64>(S, OpPC);
23189}
23190bool EvalEmitter::emitFlipPtrUint64(SourceInfo L) {
23191 if (!isActive()) return true;
23192 CurrentSource = L;
23193 return Flip<PT_Ptr, PT_Uint64>(S, OpPC);
23194}
23195bool EvalEmitter::emitFlipPtrIntAP(SourceInfo L) {
23196 if (!isActive()) return true;
23197 CurrentSource = L;
23198 return Flip<PT_Ptr, PT_IntAP>(S, OpPC);
23199}
23200bool EvalEmitter::emitFlipPtrIntAPS(SourceInfo L) {
23201 if (!isActive()) return true;
23202 CurrentSource = L;
23203 return Flip<PT_Ptr, PT_IntAPS>(S, OpPC);
23204}
23205bool EvalEmitter::emitFlipPtrBool(SourceInfo L) {
23206 if (!isActive()) return true;
23207 CurrentSource = L;
23208 return Flip<PT_Ptr, PT_Bool>(S, OpPC);
23209}
23210bool EvalEmitter::emitFlipPtrFixedPoint(SourceInfo L) {
23211 if (!isActive()) return true;
23212 CurrentSource = L;
23213 return Flip<PT_Ptr, PT_FixedPoint>(S, OpPC);
23214}
23215bool EvalEmitter::emitFlipPtrPtr(SourceInfo L) {
23216 if (!isActive()) return true;
23217 CurrentSource = L;
23218 return Flip<PT_Ptr, PT_Ptr>(S, OpPC);
23219}
23220bool EvalEmitter::emitFlipPtrMemberPtr(SourceInfo L) {
23221 if (!isActive()) return true;
23222 CurrentSource = L;
23223 return Flip<PT_Ptr, PT_MemberPtr>(S, OpPC);
23224}
23225bool EvalEmitter::emitFlipPtrFloat(SourceInfo L) {
23226 if (!isActive()) return true;
23227 CurrentSource = L;
23228 return Flip<PT_Ptr, PT_Float>(S, OpPC);
23229}
23230bool EvalEmitter::emitFlipMemberPtrSint8(SourceInfo L) {
23231 if (!isActive()) return true;
23232 CurrentSource = L;
23233 return Flip<PT_MemberPtr, PT_Sint8>(S, OpPC);
23234}
23235bool EvalEmitter::emitFlipMemberPtrUint8(SourceInfo L) {
23236 if (!isActive()) return true;
23237 CurrentSource = L;
23238 return Flip<PT_MemberPtr, PT_Uint8>(S, OpPC);
23239}
23240bool EvalEmitter::emitFlipMemberPtrSint16(SourceInfo L) {
23241 if (!isActive()) return true;
23242 CurrentSource = L;
23243 return Flip<PT_MemberPtr, PT_Sint16>(S, OpPC);
23244}
23245bool EvalEmitter::emitFlipMemberPtrUint16(SourceInfo L) {
23246 if (!isActive()) return true;
23247 CurrentSource = L;
23248 return Flip<PT_MemberPtr, PT_Uint16>(S, OpPC);
23249}
23250bool EvalEmitter::emitFlipMemberPtrSint32(SourceInfo L) {
23251 if (!isActive()) return true;
23252 CurrentSource = L;
23253 return Flip<PT_MemberPtr, PT_Sint32>(S, OpPC);
23254}
23255bool EvalEmitter::emitFlipMemberPtrUint32(SourceInfo L) {
23256 if (!isActive()) return true;
23257 CurrentSource = L;
23258 return Flip<PT_MemberPtr, PT_Uint32>(S, OpPC);
23259}
23260bool EvalEmitter::emitFlipMemberPtrSint64(SourceInfo L) {
23261 if (!isActive()) return true;
23262 CurrentSource = L;
23263 return Flip<PT_MemberPtr, PT_Sint64>(S, OpPC);
23264}
23265bool EvalEmitter::emitFlipMemberPtrUint64(SourceInfo L) {
23266 if (!isActive()) return true;
23267 CurrentSource = L;
23268 return Flip<PT_MemberPtr, PT_Uint64>(S, OpPC);
23269}
23270bool EvalEmitter::emitFlipMemberPtrIntAP(SourceInfo L) {
23271 if (!isActive()) return true;
23272 CurrentSource = L;
23273 return Flip<PT_MemberPtr, PT_IntAP>(S, OpPC);
23274}
23275bool EvalEmitter::emitFlipMemberPtrIntAPS(SourceInfo L) {
23276 if (!isActive()) return true;
23277 CurrentSource = L;
23278 return Flip<PT_MemberPtr, PT_IntAPS>(S, OpPC);
23279}
23280bool EvalEmitter::emitFlipMemberPtrBool(SourceInfo L) {
23281 if (!isActive()) return true;
23282 CurrentSource = L;
23283 return Flip<PT_MemberPtr, PT_Bool>(S, OpPC);
23284}
23285bool EvalEmitter::emitFlipMemberPtrFixedPoint(SourceInfo L) {
23286 if (!isActive()) return true;
23287 CurrentSource = L;
23288 return Flip<PT_MemberPtr, PT_FixedPoint>(S, OpPC);
23289}
23290bool EvalEmitter::emitFlipMemberPtrPtr(SourceInfo L) {
23291 if (!isActive()) return true;
23292 CurrentSource = L;
23293 return Flip<PT_MemberPtr, PT_Ptr>(S, OpPC);
23294}
23295bool EvalEmitter::emitFlipMemberPtrMemberPtr(SourceInfo L) {
23296 if (!isActive()) return true;
23297 CurrentSource = L;
23298 return Flip<PT_MemberPtr, PT_MemberPtr>(S, OpPC);
23299}
23300bool EvalEmitter::emitFlipMemberPtrFloat(SourceInfo L) {
23301 if (!isActive()) return true;
23302 CurrentSource = L;
23303 return Flip<PT_MemberPtr, PT_Float>(S, OpPC);
23304}
23305bool EvalEmitter::emitFlipFloatSint8(SourceInfo L) {
23306 if (!isActive()) return true;
23307 CurrentSource = L;
23308 return Flip<PT_Float, PT_Sint8>(S, OpPC);
23309}
23310bool EvalEmitter::emitFlipFloatUint8(SourceInfo L) {
23311 if (!isActive()) return true;
23312 CurrentSource = L;
23313 return Flip<PT_Float, PT_Uint8>(S, OpPC);
23314}
23315bool EvalEmitter::emitFlipFloatSint16(SourceInfo L) {
23316 if (!isActive()) return true;
23317 CurrentSource = L;
23318 return Flip<PT_Float, PT_Sint16>(S, OpPC);
23319}
23320bool EvalEmitter::emitFlipFloatUint16(SourceInfo L) {
23321 if (!isActive()) return true;
23322 CurrentSource = L;
23323 return Flip<PT_Float, PT_Uint16>(S, OpPC);
23324}
23325bool EvalEmitter::emitFlipFloatSint32(SourceInfo L) {
23326 if (!isActive()) return true;
23327 CurrentSource = L;
23328 return Flip<PT_Float, PT_Sint32>(S, OpPC);
23329}
23330bool EvalEmitter::emitFlipFloatUint32(SourceInfo L) {
23331 if (!isActive()) return true;
23332 CurrentSource = L;
23333 return Flip<PT_Float, PT_Uint32>(S, OpPC);
23334}
23335bool EvalEmitter::emitFlipFloatSint64(SourceInfo L) {
23336 if (!isActive()) return true;
23337 CurrentSource = L;
23338 return Flip<PT_Float, PT_Sint64>(S, OpPC);
23339}
23340bool EvalEmitter::emitFlipFloatUint64(SourceInfo L) {
23341 if (!isActive()) return true;
23342 CurrentSource = L;
23343 return Flip<PT_Float, PT_Uint64>(S, OpPC);
23344}
23345bool EvalEmitter::emitFlipFloatIntAP(SourceInfo L) {
23346 if (!isActive()) return true;
23347 CurrentSource = L;
23348 return Flip<PT_Float, PT_IntAP>(S, OpPC);
23349}
23350bool EvalEmitter::emitFlipFloatIntAPS(SourceInfo L) {
23351 if (!isActive()) return true;
23352 CurrentSource = L;
23353 return Flip<PT_Float, PT_IntAPS>(S, OpPC);
23354}
23355bool EvalEmitter::emitFlipFloatBool(SourceInfo L) {
23356 if (!isActive()) return true;
23357 CurrentSource = L;
23358 return Flip<PT_Float, PT_Bool>(S, OpPC);
23359}
23360bool EvalEmitter::emitFlipFloatFixedPoint(SourceInfo L) {
23361 if (!isActive()) return true;
23362 CurrentSource = L;
23363 return Flip<PT_Float, PT_FixedPoint>(S, OpPC);
23364}
23365bool EvalEmitter::emitFlipFloatPtr(SourceInfo L) {
23366 if (!isActive()) return true;
23367 CurrentSource = L;
23368 return Flip<PT_Float, PT_Ptr>(S, OpPC);
23369}
23370bool EvalEmitter::emitFlipFloatMemberPtr(SourceInfo L) {
23371 if (!isActive()) return true;
23372 CurrentSource = L;
23373 return Flip<PT_Float, PT_MemberPtr>(S, OpPC);
23374}
23375bool EvalEmitter::emitFlipFloatFloat(SourceInfo L) {
23376 if (!isActive()) return true;
23377 CurrentSource = L;
23378 return Flip<PT_Float, PT_Float>(S, OpPC);
23379}
23380#endif
23381#ifdef GET_OPCODE_NAMES
23382OP_FnPtrCast,
23383#endif
23384#ifdef GET_INTERPFN_LIST
23385&Interp_FnPtrCast,
23386#endif
23387#ifdef GET_INTERPFN_DISPATCHERS
23388PRESERVE_NONE
23389static bool Interp_FnPtrCast(InterpState &S, CodePtr &PC) {
23390 if (!FnPtrCast(S, PC)) return false;
23391#if USE_TAILCALLS
23392 MUSTTAIL return InterpNext(S, PC);
23393#else
23394 return true;
23395#endif
23396}
23397#endif
23398#ifdef GET_DISASM
23399case OP_FnPtrCast:
23400 Text.Op = PrintName("FnPtrCast");
23401 break;
23402#endif
23403#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23404bool emitFnPtrCast(SourceInfo);
23405#endif
23406#ifdef GET_LINK_IMPL
23407bool ByteCodeEmitter::emitFnPtrCast(SourceInfo L) {
23408 return emitOp<>(OP_FnPtrCast, L);
23409}
23410#endif
23411#ifdef GET_EVAL_IMPL
23412bool EvalEmitter::emitFnPtrCast(SourceInfo L) {
23413 if (!isActive()) return true;
23414 CurrentSource = L;
23415 return FnPtrCast(S, OpPC);
23416}
23417#endif
23418#ifdef GET_OPCODE_NAMES
23419OP_Free,
23420#endif
23421#ifdef GET_INTERPFN_LIST
23422&Interp_Free,
23423#endif
23424#ifdef GET_INTERPFN_DISPATCHERS
23425PRESERVE_NONE
23426static bool Interp_Free(InterpState &S, CodePtr &PC) {
23427 {
23428 CodePtr OpPC = PC;
23429 const auto V0 = ReadArg<bool>(S, PC);
23430 const auto V1 = ReadArg<bool>(S, PC);
23431 if (!Free(S, OpPC, V0, V1)) return false;
23432 }
23433#if USE_TAILCALLS
23434 MUSTTAIL return InterpNext(S, PC);
23435#else
23436 return true;
23437#endif
23438}
23439#endif
23440#ifdef GET_DISASM
23441case OP_Free:
23442 Text.Op = PrintName("Free");
23443 Text.Args.push_back(printArg<bool>(P, PC));
23444 Text.Args.push_back(printArg<bool>(P, PC));
23445 break;
23446#endif
23447#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23448bool emitFree( bool , bool , SourceInfo);
23449#endif
23450#ifdef GET_LINK_IMPL
23451bool ByteCodeEmitter::emitFree( bool A0, bool A1, SourceInfo L) {
23452 return emitOp<bool, bool>(OP_Free, A0, A1, L);
23453}
23454#endif
23455#ifdef GET_EVAL_IMPL
23456bool EvalEmitter::emitFree( bool A0, bool A1, SourceInfo L) {
23457 if (!isActive()) return true;
23458 CurrentSource = L;
23459 return Free(S, OpPC, A0, A1);
23460}
23461#endif
23462#ifdef GET_OPCODE_NAMES
23463OP_GESint8,
23464OP_GEUint8,
23465OP_GESint16,
23466OP_GEUint16,
23467OP_GESint32,
23468OP_GEUint32,
23469OP_GESint64,
23470OP_GEUint64,
23471OP_GEIntAP,
23472OP_GEIntAPS,
23473OP_GEBool,
23474OP_GEFixedPoint,
23475OP_GEPtr,
23476OP_GEFloat,
23477#endif
23478#ifdef GET_INTERPFN_LIST
23479&Interp_GESint8,
23480&Interp_GEUint8,
23481&Interp_GESint16,
23482&Interp_GEUint16,
23483&Interp_GESint32,
23484&Interp_GEUint32,
23485&Interp_GESint64,
23486&Interp_GEUint64,
23487&Interp_GEIntAP,
23488&Interp_GEIntAPS,
23489&Interp_GEBool,
23490&Interp_GEFixedPoint,
23491&Interp_GEPtr,
23492&Interp_GEFloat,
23493#endif
23494#ifdef GET_INTERPFN_DISPATCHERS
23495PRESERVE_NONE
23496static bool Interp_GESint8(InterpState &S, CodePtr &PC) {
23497 if (!GE<PT_Sint8>(S, PC)) return false;
23498#if USE_TAILCALLS
23499 MUSTTAIL return InterpNext(S, PC);
23500#else
23501 return true;
23502#endif
23503}
23504PRESERVE_NONE
23505static bool Interp_GEUint8(InterpState &S, CodePtr &PC) {
23506 if (!GE<PT_Uint8>(S, PC)) return false;
23507#if USE_TAILCALLS
23508 MUSTTAIL return InterpNext(S, PC);
23509#else
23510 return true;
23511#endif
23512}
23513PRESERVE_NONE
23514static bool Interp_GESint16(InterpState &S, CodePtr &PC) {
23515 if (!GE<PT_Sint16>(S, PC)) return false;
23516#if USE_TAILCALLS
23517 MUSTTAIL return InterpNext(S, PC);
23518#else
23519 return true;
23520#endif
23521}
23522PRESERVE_NONE
23523static bool Interp_GEUint16(InterpState &S, CodePtr &PC) {
23524 if (!GE<PT_Uint16>(S, PC)) return false;
23525#if USE_TAILCALLS
23526 MUSTTAIL return InterpNext(S, PC);
23527#else
23528 return true;
23529#endif
23530}
23531PRESERVE_NONE
23532static bool Interp_GESint32(InterpState &S, CodePtr &PC) {
23533 if (!GE<PT_Sint32>(S, PC)) return false;
23534#if USE_TAILCALLS
23535 MUSTTAIL return InterpNext(S, PC);
23536#else
23537 return true;
23538#endif
23539}
23540PRESERVE_NONE
23541static bool Interp_GEUint32(InterpState &S, CodePtr &PC) {
23542 if (!GE<PT_Uint32>(S, PC)) return false;
23543#if USE_TAILCALLS
23544 MUSTTAIL return InterpNext(S, PC);
23545#else
23546 return true;
23547#endif
23548}
23549PRESERVE_NONE
23550static bool Interp_GESint64(InterpState &S, CodePtr &PC) {
23551 if (!GE<PT_Sint64>(S, PC)) return false;
23552#if USE_TAILCALLS
23553 MUSTTAIL return InterpNext(S, PC);
23554#else
23555 return true;
23556#endif
23557}
23558PRESERVE_NONE
23559static bool Interp_GEUint64(InterpState &S, CodePtr &PC) {
23560 if (!GE<PT_Uint64>(S, PC)) return false;
23561#if USE_TAILCALLS
23562 MUSTTAIL return InterpNext(S, PC);
23563#else
23564 return true;
23565#endif
23566}
23567PRESERVE_NONE
23568static bool Interp_GEIntAP(InterpState &S, CodePtr &PC) {
23569 if (!GE<PT_IntAP>(S, PC)) return false;
23570#if USE_TAILCALLS
23571 MUSTTAIL return InterpNext(S, PC);
23572#else
23573 return true;
23574#endif
23575}
23576PRESERVE_NONE
23577static bool Interp_GEIntAPS(InterpState &S, CodePtr &PC) {
23578 if (!GE<PT_IntAPS>(S, PC)) return false;
23579#if USE_TAILCALLS
23580 MUSTTAIL return InterpNext(S, PC);
23581#else
23582 return true;
23583#endif
23584}
23585PRESERVE_NONE
23586static bool Interp_GEBool(InterpState &S, CodePtr &PC) {
23587 if (!GE<PT_Bool>(S, PC)) return false;
23588#if USE_TAILCALLS
23589 MUSTTAIL return InterpNext(S, PC);
23590#else
23591 return true;
23592#endif
23593}
23594PRESERVE_NONE
23595static bool Interp_GEFixedPoint(InterpState &S, CodePtr &PC) {
23596 if (!GE<PT_FixedPoint>(S, PC)) return false;
23597#if USE_TAILCALLS
23598 MUSTTAIL return InterpNext(S, PC);
23599#else
23600 return true;
23601#endif
23602}
23603PRESERVE_NONE
23604static bool Interp_GEPtr(InterpState &S, CodePtr &PC) {
23605 if (!GE<PT_Ptr>(S, PC)) return false;
23606#if USE_TAILCALLS
23607 MUSTTAIL return InterpNext(S, PC);
23608#else
23609 return true;
23610#endif
23611}
23612PRESERVE_NONE
23613static bool Interp_GEFloat(InterpState &S, CodePtr &PC) {
23614 if (!GE<PT_Float>(S, PC)) return false;
23615#if USE_TAILCALLS
23616 MUSTTAIL return InterpNext(S, PC);
23617#else
23618 return true;
23619#endif
23620}
23621#endif
23622#ifdef GET_DISASM
23623case OP_GESint8:
23624 Text.Op = PrintName("GESint8");
23625 break;
23626case OP_GEUint8:
23627 Text.Op = PrintName("GEUint8");
23628 break;
23629case OP_GESint16:
23630 Text.Op = PrintName("GESint16");
23631 break;
23632case OP_GEUint16:
23633 Text.Op = PrintName("GEUint16");
23634 break;
23635case OP_GESint32:
23636 Text.Op = PrintName("GESint32");
23637 break;
23638case OP_GEUint32:
23639 Text.Op = PrintName("GEUint32");
23640 break;
23641case OP_GESint64:
23642 Text.Op = PrintName("GESint64");
23643 break;
23644case OP_GEUint64:
23645 Text.Op = PrintName("GEUint64");
23646 break;
23647case OP_GEIntAP:
23648 Text.Op = PrintName("GEIntAP");
23649 break;
23650case OP_GEIntAPS:
23651 Text.Op = PrintName("GEIntAPS");
23652 break;
23653case OP_GEBool:
23654 Text.Op = PrintName("GEBool");
23655 break;
23656case OP_GEFixedPoint:
23657 Text.Op = PrintName("GEFixedPoint");
23658 break;
23659case OP_GEPtr:
23660 Text.Op = PrintName("GEPtr");
23661 break;
23662case OP_GEFloat:
23663 Text.Op = PrintName("GEFloat");
23664 break;
23665#endif
23666#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23667bool emitGESint8(SourceInfo);
23668bool emitGEUint8(SourceInfo);
23669bool emitGESint16(SourceInfo);
23670bool emitGEUint16(SourceInfo);
23671bool emitGESint32(SourceInfo);
23672bool emitGEUint32(SourceInfo);
23673bool emitGESint64(SourceInfo);
23674bool emitGEUint64(SourceInfo);
23675bool emitGEIntAP(SourceInfo);
23676bool emitGEIntAPS(SourceInfo);
23677bool emitGEBool(SourceInfo);
23678bool emitGEFixedPoint(SourceInfo);
23679bool emitGEPtr(SourceInfo);
23680bool emitGEFloat(SourceInfo);
23681#endif
23682#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23683[[nodiscard]] bool emitGE(PrimType, SourceInfo I);
23684#endif
23685#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
23686bool
23687#if defined(GET_EVAL_IMPL)
23688EvalEmitter
23689#else
23690ByteCodeEmitter
23691#endif
23692::emitGE(PrimType T0, SourceInfo I) {
23693 switch (T0) {
23694 case PT_Sint8:
23695 return emitGESint8(I);
23696 case PT_Uint8:
23697 return emitGEUint8(I);
23698 case PT_Sint16:
23699 return emitGESint16(I);
23700 case PT_Uint16:
23701 return emitGEUint16(I);
23702 case PT_Sint32:
23703 return emitGESint32(I);
23704 case PT_Uint32:
23705 return emitGEUint32(I);
23706 case PT_Sint64:
23707 return emitGESint64(I);
23708 case PT_Uint64:
23709 return emitGEUint64(I);
23710 case PT_IntAP:
23711 return emitGEIntAP(I);
23712 case PT_IntAPS:
23713 return emitGEIntAPS(I);
23714 case PT_Bool:
23715 return emitGEBool(I);
23716 case PT_FixedPoint:
23717 return emitGEFixedPoint(I);
23718 case PT_Ptr:
23719 return emitGEPtr(I);
23720 case PT_Float:
23721 return emitGEFloat(I);
23722 default: llvm_unreachable("invalid type: emitGE");
23723 }
23724 llvm_unreachable("invalid enum value");
23725}
23726#endif
23727#ifdef GET_LINK_IMPL
23728bool ByteCodeEmitter::emitGESint8(SourceInfo L) {
23729 return emitOp<>(OP_GESint8, L);
23730}
23731bool ByteCodeEmitter::emitGEUint8(SourceInfo L) {
23732 return emitOp<>(OP_GEUint8, L);
23733}
23734bool ByteCodeEmitter::emitGESint16(SourceInfo L) {
23735 return emitOp<>(OP_GESint16, L);
23736}
23737bool ByteCodeEmitter::emitGEUint16(SourceInfo L) {
23738 return emitOp<>(OP_GEUint16, L);
23739}
23740bool ByteCodeEmitter::emitGESint32(SourceInfo L) {
23741 return emitOp<>(OP_GESint32, L);
23742}
23743bool ByteCodeEmitter::emitGEUint32(SourceInfo L) {
23744 return emitOp<>(OP_GEUint32, L);
23745}
23746bool ByteCodeEmitter::emitGESint64(SourceInfo L) {
23747 return emitOp<>(OP_GESint64, L);
23748}
23749bool ByteCodeEmitter::emitGEUint64(SourceInfo L) {
23750 return emitOp<>(OP_GEUint64, L);
23751}
23752bool ByteCodeEmitter::emitGEIntAP(SourceInfo L) {
23753 return emitOp<>(OP_GEIntAP, L);
23754}
23755bool ByteCodeEmitter::emitGEIntAPS(SourceInfo L) {
23756 return emitOp<>(OP_GEIntAPS, L);
23757}
23758bool ByteCodeEmitter::emitGEBool(SourceInfo L) {
23759 return emitOp<>(OP_GEBool, L);
23760}
23761bool ByteCodeEmitter::emitGEFixedPoint(SourceInfo L) {
23762 return emitOp<>(OP_GEFixedPoint, L);
23763}
23764bool ByteCodeEmitter::emitGEPtr(SourceInfo L) {
23765 return emitOp<>(OP_GEPtr, L);
23766}
23767bool ByteCodeEmitter::emitGEFloat(SourceInfo L) {
23768 return emitOp<>(OP_GEFloat, L);
23769}
23770#endif
23771#ifdef GET_EVAL_IMPL
23772bool EvalEmitter::emitGESint8(SourceInfo L) {
23773 if (!isActive()) return true;
23774 CurrentSource = L;
23775 return GE<PT_Sint8>(S, OpPC);
23776}
23777bool EvalEmitter::emitGEUint8(SourceInfo L) {
23778 if (!isActive()) return true;
23779 CurrentSource = L;
23780 return GE<PT_Uint8>(S, OpPC);
23781}
23782bool EvalEmitter::emitGESint16(SourceInfo L) {
23783 if (!isActive()) return true;
23784 CurrentSource = L;
23785 return GE<PT_Sint16>(S, OpPC);
23786}
23787bool EvalEmitter::emitGEUint16(SourceInfo L) {
23788 if (!isActive()) return true;
23789 CurrentSource = L;
23790 return GE<PT_Uint16>(S, OpPC);
23791}
23792bool EvalEmitter::emitGESint32(SourceInfo L) {
23793 if (!isActive()) return true;
23794 CurrentSource = L;
23795 return GE<PT_Sint32>(S, OpPC);
23796}
23797bool EvalEmitter::emitGEUint32(SourceInfo L) {
23798 if (!isActive()) return true;
23799 CurrentSource = L;
23800 return GE<PT_Uint32>(S, OpPC);
23801}
23802bool EvalEmitter::emitGESint64(SourceInfo L) {
23803 if (!isActive()) return true;
23804 CurrentSource = L;
23805 return GE<PT_Sint64>(S, OpPC);
23806}
23807bool EvalEmitter::emitGEUint64(SourceInfo L) {
23808 if (!isActive()) return true;
23809 CurrentSource = L;
23810 return GE<PT_Uint64>(S, OpPC);
23811}
23812bool EvalEmitter::emitGEIntAP(SourceInfo L) {
23813 if (!isActive()) return true;
23814 CurrentSource = L;
23815 return GE<PT_IntAP>(S, OpPC);
23816}
23817bool EvalEmitter::emitGEIntAPS(SourceInfo L) {
23818 if (!isActive()) return true;
23819 CurrentSource = L;
23820 return GE<PT_IntAPS>(S, OpPC);
23821}
23822bool EvalEmitter::emitGEBool(SourceInfo L) {
23823 if (!isActive()) return true;
23824 CurrentSource = L;
23825 return GE<PT_Bool>(S, OpPC);
23826}
23827bool EvalEmitter::emitGEFixedPoint(SourceInfo L) {
23828 if (!isActive()) return true;
23829 CurrentSource = L;
23830 return GE<PT_FixedPoint>(S, OpPC);
23831}
23832bool EvalEmitter::emitGEPtr(SourceInfo L) {
23833 if (!isActive()) return true;
23834 CurrentSource = L;
23835 return GE<PT_Ptr>(S, OpPC);
23836}
23837bool EvalEmitter::emitGEFloat(SourceInfo L) {
23838 if (!isActive()) return true;
23839 CurrentSource = L;
23840 return GE<PT_Float>(S, OpPC);
23841}
23842#endif
23843#ifdef GET_OPCODE_NAMES
23844OP_GTSint8,
23845OP_GTUint8,
23846OP_GTSint16,
23847OP_GTUint16,
23848OP_GTSint32,
23849OP_GTUint32,
23850OP_GTSint64,
23851OP_GTUint64,
23852OP_GTIntAP,
23853OP_GTIntAPS,
23854OP_GTBool,
23855OP_GTFixedPoint,
23856OP_GTPtr,
23857OP_GTFloat,
23858#endif
23859#ifdef GET_INTERPFN_LIST
23860&Interp_GTSint8,
23861&Interp_GTUint8,
23862&Interp_GTSint16,
23863&Interp_GTUint16,
23864&Interp_GTSint32,
23865&Interp_GTUint32,
23866&Interp_GTSint64,
23867&Interp_GTUint64,
23868&Interp_GTIntAP,
23869&Interp_GTIntAPS,
23870&Interp_GTBool,
23871&Interp_GTFixedPoint,
23872&Interp_GTPtr,
23873&Interp_GTFloat,
23874#endif
23875#ifdef GET_INTERPFN_DISPATCHERS
23876PRESERVE_NONE
23877static bool Interp_GTSint8(InterpState &S, CodePtr &PC) {
23878 if (!GT<PT_Sint8>(S, PC)) return false;
23879#if USE_TAILCALLS
23880 MUSTTAIL return InterpNext(S, PC);
23881#else
23882 return true;
23883#endif
23884}
23885PRESERVE_NONE
23886static bool Interp_GTUint8(InterpState &S, CodePtr &PC) {
23887 if (!GT<PT_Uint8>(S, PC)) return false;
23888#if USE_TAILCALLS
23889 MUSTTAIL return InterpNext(S, PC);
23890#else
23891 return true;
23892#endif
23893}
23894PRESERVE_NONE
23895static bool Interp_GTSint16(InterpState &S, CodePtr &PC) {
23896 if (!GT<PT_Sint16>(S, PC)) return false;
23897#if USE_TAILCALLS
23898 MUSTTAIL return InterpNext(S, PC);
23899#else
23900 return true;
23901#endif
23902}
23903PRESERVE_NONE
23904static bool Interp_GTUint16(InterpState &S, CodePtr &PC) {
23905 if (!GT<PT_Uint16>(S, PC)) return false;
23906#if USE_TAILCALLS
23907 MUSTTAIL return InterpNext(S, PC);
23908#else
23909 return true;
23910#endif
23911}
23912PRESERVE_NONE
23913static bool Interp_GTSint32(InterpState &S, CodePtr &PC) {
23914 if (!GT<PT_Sint32>(S, PC)) return false;
23915#if USE_TAILCALLS
23916 MUSTTAIL return InterpNext(S, PC);
23917#else
23918 return true;
23919#endif
23920}
23921PRESERVE_NONE
23922static bool Interp_GTUint32(InterpState &S, CodePtr &PC) {
23923 if (!GT<PT_Uint32>(S, PC)) return false;
23924#if USE_TAILCALLS
23925 MUSTTAIL return InterpNext(S, PC);
23926#else
23927 return true;
23928#endif
23929}
23930PRESERVE_NONE
23931static bool Interp_GTSint64(InterpState &S, CodePtr &PC) {
23932 if (!GT<PT_Sint64>(S, PC)) return false;
23933#if USE_TAILCALLS
23934 MUSTTAIL return InterpNext(S, PC);
23935#else
23936 return true;
23937#endif
23938}
23939PRESERVE_NONE
23940static bool Interp_GTUint64(InterpState &S, CodePtr &PC) {
23941 if (!GT<PT_Uint64>(S, PC)) return false;
23942#if USE_TAILCALLS
23943 MUSTTAIL return InterpNext(S, PC);
23944#else
23945 return true;
23946#endif
23947}
23948PRESERVE_NONE
23949static bool Interp_GTIntAP(InterpState &S, CodePtr &PC) {
23950 if (!GT<PT_IntAP>(S, PC)) return false;
23951#if USE_TAILCALLS
23952 MUSTTAIL return InterpNext(S, PC);
23953#else
23954 return true;
23955#endif
23956}
23957PRESERVE_NONE
23958static bool Interp_GTIntAPS(InterpState &S, CodePtr &PC) {
23959 if (!GT<PT_IntAPS>(S, PC)) return false;
23960#if USE_TAILCALLS
23961 MUSTTAIL return InterpNext(S, PC);
23962#else
23963 return true;
23964#endif
23965}
23966PRESERVE_NONE
23967static bool Interp_GTBool(InterpState &S, CodePtr &PC) {
23968 if (!GT<PT_Bool>(S, PC)) return false;
23969#if USE_TAILCALLS
23970 MUSTTAIL return InterpNext(S, PC);
23971#else
23972 return true;
23973#endif
23974}
23975PRESERVE_NONE
23976static bool Interp_GTFixedPoint(InterpState &S, CodePtr &PC) {
23977 if (!GT<PT_FixedPoint>(S, PC)) return false;
23978#if USE_TAILCALLS
23979 MUSTTAIL return InterpNext(S, PC);
23980#else
23981 return true;
23982#endif
23983}
23984PRESERVE_NONE
23985static bool Interp_GTPtr(InterpState &S, CodePtr &PC) {
23986 if (!GT<PT_Ptr>(S, PC)) return false;
23987#if USE_TAILCALLS
23988 MUSTTAIL return InterpNext(S, PC);
23989#else
23990 return true;
23991#endif
23992}
23993PRESERVE_NONE
23994static bool Interp_GTFloat(InterpState &S, CodePtr &PC) {
23995 if (!GT<PT_Float>(S, PC)) return false;
23996#if USE_TAILCALLS
23997 MUSTTAIL return InterpNext(S, PC);
23998#else
23999 return true;
24000#endif
24001}
24002#endif
24003#ifdef GET_DISASM
24004case OP_GTSint8:
24005 Text.Op = PrintName("GTSint8");
24006 break;
24007case OP_GTUint8:
24008 Text.Op = PrintName("GTUint8");
24009 break;
24010case OP_GTSint16:
24011 Text.Op = PrintName("GTSint16");
24012 break;
24013case OP_GTUint16:
24014 Text.Op = PrintName("GTUint16");
24015 break;
24016case OP_GTSint32:
24017 Text.Op = PrintName("GTSint32");
24018 break;
24019case OP_GTUint32:
24020 Text.Op = PrintName("GTUint32");
24021 break;
24022case OP_GTSint64:
24023 Text.Op = PrintName("GTSint64");
24024 break;
24025case OP_GTUint64:
24026 Text.Op = PrintName("GTUint64");
24027 break;
24028case OP_GTIntAP:
24029 Text.Op = PrintName("GTIntAP");
24030 break;
24031case OP_GTIntAPS:
24032 Text.Op = PrintName("GTIntAPS");
24033 break;
24034case OP_GTBool:
24035 Text.Op = PrintName("GTBool");
24036 break;
24037case OP_GTFixedPoint:
24038 Text.Op = PrintName("GTFixedPoint");
24039 break;
24040case OP_GTPtr:
24041 Text.Op = PrintName("GTPtr");
24042 break;
24043case OP_GTFloat:
24044 Text.Op = PrintName("GTFloat");
24045 break;
24046#endif
24047#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24048bool emitGTSint8(SourceInfo);
24049bool emitGTUint8(SourceInfo);
24050bool emitGTSint16(SourceInfo);
24051bool emitGTUint16(SourceInfo);
24052bool emitGTSint32(SourceInfo);
24053bool emitGTUint32(SourceInfo);
24054bool emitGTSint64(SourceInfo);
24055bool emitGTUint64(SourceInfo);
24056bool emitGTIntAP(SourceInfo);
24057bool emitGTIntAPS(SourceInfo);
24058bool emitGTBool(SourceInfo);
24059bool emitGTFixedPoint(SourceInfo);
24060bool emitGTPtr(SourceInfo);
24061bool emitGTFloat(SourceInfo);
24062#endif
24063#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24064[[nodiscard]] bool emitGT(PrimType, SourceInfo I);
24065#endif
24066#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
24067bool
24068#if defined(GET_EVAL_IMPL)
24069EvalEmitter
24070#else
24071ByteCodeEmitter
24072#endif
24073::emitGT(PrimType T0, SourceInfo I) {
24074 switch (T0) {
24075 case PT_Sint8:
24076 return emitGTSint8(I);
24077 case PT_Uint8:
24078 return emitGTUint8(I);
24079 case PT_Sint16:
24080 return emitGTSint16(I);
24081 case PT_Uint16:
24082 return emitGTUint16(I);
24083 case PT_Sint32:
24084 return emitGTSint32(I);
24085 case PT_Uint32:
24086 return emitGTUint32(I);
24087 case PT_Sint64:
24088 return emitGTSint64(I);
24089 case PT_Uint64:
24090 return emitGTUint64(I);
24091 case PT_IntAP:
24092 return emitGTIntAP(I);
24093 case PT_IntAPS:
24094 return emitGTIntAPS(I);
24095 case PT_Bool:
24096 return emitGTBool(I);
24097 case PT_FixedPoint:
24098 return emitGTFixedPoint(I);
24099 case PT_Ptr:
24100 return emitGTPtr(I);
24101 case PT_Float:
24102 return emitGTFloat(I);
24103 default: llvm_unreachable("invalid type: emitGT");
24104 }
24105 llvm_unreachable("invalid enum value");
24106}
24107#endif
24108#ifdef GET_LINK_IMPL
24109bool ByteCodeEmitter::emitGTSint8(SourceInfo L) {
24110 return emitOp<>(OP_GTSint8, L);
24111}
24112bool ByteCodeEmitter::emitGTUint8(SourceInfo L) {
24113 return emitOp<>(OP_GTUint8, L);
24114}
24115bool ByteCodeEmitter::emitGTSint16(SourceInfo L) {
24116 return emitOp<>(OP_GTSint16, L);
24117}
24118bool ByteCodeEmitter::emitGTUint16(SourceInfo L) {
24119 return emitOp<>(OP_GTUint16, L);
24120}
24121bool ByteCodeEmitter::emitGTSint32(SourceInfo L) {
24122 return emitOp<>(OP_GTSint32, L);
24123}
24124bool ByteCodeEmitter::emitGTUint32(SourceInfo L) {
24125 return emitOp<>(OP_GTUint32, L);
24126}
24127bool ByteCodeEmitter::emitGTSint64(SourceInfo L) {
24128 return emitOp<>(OP_GTSint64, L);
24129}
24130bool ByteCodeEmitter::emitGTUint64(SourceInfo L) {
24131 return emitOp<>(OP_GTUint64, L);
24132}
24133bool ByteCodeEmitter::emitGTIntAP(SourceInfo L) {
24134 return emitOp<>(OP_GTIntAP, L);
24135}
24136bool ByteCodeEmitter::emitGTIntAPS(SourceInfo L) {
24137 return emitOp<>(OP_GTIntAPS, L);
24138}
24139bool ByteCodeEmitter::emitGTBool(SourceInfo L) {
24140 return emitOp<>(OP_GTBool, L);
24141}
24142bool ByteCodeEmitter::emitGTFixedPoint(SourceInfo L) {
24143 return emitOp<>(OP_GTFixedPoint, L);
24144}
24145bool ByteCodeEmitter::emitGTPtr(SourceInfo L) {
24146 return emitOp<>(OP_GTPtr, L);
24147}
24148bool ByteCodeEmitter::emitGTFloat(SourceInfo L) {
24149 return emitOp<>(OP_GTFloat, L);
24150}
24151#endif
24152#ifdef GET_EVAL_IMPL
24153bool EvalEmitter::emitGTSint8(SourceInfo L) {
24154 if (!isActive()) return true;
24155 CurrentSource = L;
24156 return GT<PT_Sint8>(S, OpPC);
24157}
24158bool EvalEmitter::emitGTUint8(SourceInfo L) {
24159 if (!isActive()) return true;
24160 CurrentSource = L;
24161 return GT<PT_Uint8>(S, OpPC);
24162}
24163bool EvalEmitter::emitGTSint16(SourceInfo L) {
24164 if (!isActive()) return true;
24165 CurrentSource = L;
24166 return GT<PT_Sint16>(S, OpPC);
24167}
24168bool EvalEmitter::emitGTUint16(SourceInfo L) {
24169 if (!isActive()) return true;
24170 CurrentSource = L;
24171 return GT<PT_Uint16>(S, OpPC);
24172}
24173bool EvalEmitter::emitGTSint32(SourceInfo L) {
24174 if (!isActive()) return true;
24175 CurrentSource = L;
24176 return GT<PT_Sint32>(S, OpPC);
24177}
24178bool EvalEmitter::emitGTUint32(SourceInfo L) {
24179 if (!isActive()) return true;
24180 CurrentSource = L;
24181 return GT<PT_Uint32>(S, OpPC);
24182}
24183bool EvalEmitter::emitGTSint64(SourceInfo L) {
24184 if (!isActive()) return true;
24185 CurrentSource = L;
24186 return GT<PT_Sint64>(S, OpPC);
24187}
24188bool EvalEmitter::emitGTUint64(SourceInfo L) {
24189 if (!isActive()) return true;
24190 CurrentSource = L;
24191 return GT<PT_Uint64>(S, OpPC);
24192}
24193bool EvalEmitter::emitGTIntAP(SourceInfo L) {
24194 if (!isActive()) return true;
24195 CurrentSource = L;
24196 return GT<PT_IntAP>(S, OpPC);
24197}
24198bool EvalEmitter::emitGTIntAPS(SourceInfo L) {
24199 if (!isActive()) return true;
24200 CurrentSource = L;
24201 return GT<PT_IntAPS>(S, OpPC);
24202}
24203bool EvalEmitter::emitGTBool(SourceInfo L) {
24204 if (!isActive()) return true;
24205 CurrentSource = L;
24206 return GT<PT_Bool>(S, OpPC);
24207}
24208bool EvalEmitter::emitGTFixedPoint(SourceInfo L) {
24209 if (!isActive()) return true;
24210 CurrentSource = L;
24211 return GT<PT_FixedPoint>(S, OpPC);
24212}
24213bool EvalEmitter::emitGTPtr(SourceInfo L) {
24214 if (!isActive()) return true;
24215 CurrentSource = L;
24216 return GT<PT_Ptr>(S, OpPC);
24217}
24218bool EvalEmitter::emitGTFloat(SourceInfo L) {
24219 if (!isActive()) return true;
24220 CurrentSource = L;
24221 return GT<PT_Float>(S, OpPC);
24222}
24223#endif
24224#ifdef GET_OPCODE_NAMES
24225OP_GetFieldSint8,
24226OP_GetFieldUint8,
24227OP_GetFieldSint16,
24228OP_GetFieldUint16,
24229OP_GetFieldSint32,
24230OP_GetFieldUint32,
24231OP_GetFieldSint64,
24232OP_GetFieldUint64,
24233OP_GetFieldIntAP,
24234OP_GetFieldIntAPS,
24235OP_GetFieldBool,
24236OP_GetFieldFixedPoint,
24237OP_GetFieldPtr,
24238OP_GetFieldMemberPtr,
24239OP_GetFieldFloat,
24240#endif
24241#ifdef GET_INTERPFN_LIST
24242&Interp_GetFieldSint8,
24243&Interp_GetFieldUint8,
24244&Interp_GetFieldSint16,
24245&Interp_GetFieldUint16,
24246&Interp_GetFieldSint32,
24247&Interp_GetFieldUint32,
24248&Interp_GetFieldSint64,
24249&Interp_GetFieldUint64,
24250&Interp_GetFieldIntAP,
24251&Interp_GetFieldIntAPS,
24252&Interp_GetFieldBool,
24253&Interp_GetFieldFixedPoint,
24254&Interp_GetFieldPtr,
24255&Interp_GetFieldMemberPtr,
24256&Interp_GetFieldFloat,
24257#endif
24258#ifdef GET_INTERPFN_DISPATCHERS
24259PRESERVE_NONE
24260static bool Interp_GetFieldSint8(InterpState &S, CodePtr &PC) {
24261 {
24262 CodePtr OpPC = PC;
24263 const auto V0 = ReadArg<uint32_t>(S, PC);
24264 if (!GetField<PT_Sint8>(S, OpPC, V0)) return false;
24265 }
24266#if USE_TAILCALLS
24267 MUSTTAIL return InterpNext(S, PC);
24268#else
24269 return true;
24270#endif
24271}
24272PRESERVE_NONE
24273static bool Interp_GetFieldUint8(InterpState &S, CodePtr &PC) {
24274 {
24275 CodePtr OpPC = PC;
24276 const auto V0 = ReadArg<uint32_t>(S, PC);
24277 if (!GetField<PT_Uint8>(S, OpPC, V0)) return false;
24278 }
24279#if USE_TAILCALLS
24280 MUSTTAIL return InterpNext(S, PC);
24281#else
24282 return true;
24283#endif
24284}
24285PRESERVE_NONE
24286static bool Interp_GetFieldSint16(InterpState &S, CodePtr &PC) {
24287 {
24288 CodePtr OpPC = PC;
24289 const auto V0 = ReadArg<uint32_t>(S, PC);
24290 if (!GetField<PT_Sint16>(S, OpPC, V0)) return false;
24291 }
24292#if USE_TAILCALLS
24293 MUSTTAIL return InterpNext(S, PC);
24294#else
24295 return true;
24296#endif
24297}
24298PRESERVE_NONE
24299static bool Interp_GetFieldUint16(InterpState &S, CodePtr &PC) {
24300 {
24301 CodePtr OpPC = PC;
24302 const auto V0 = ReadArg<uint32_t>(S, PC);
24303 if (!GetField<PT_Uint16>(S, OpPC, V0)) return false;
24304 }
24305#if USE_TAILCALLS
24306 MUSTTAIL return InterpNext(S, PC);
24307#else
24308 return true;
24309#endif
24310}
24311PRESERVE_NONE
24312static bool Interp_GetFieldSint32(InterpState &S, CodePtr &PC) {
24313 {
24314 CodePtr OpPC = PC;
24315 const auto V0 = ReadArg<uint32_t>(S, PC);
24316 if (!GetField<PT_Sint32>(S, OpPC, V0)) return false;
24317 }
24318#if USE_TAILCALLS
24319 MUSTTAIL return InterpNext(S, PC);
24320#else
24321 return true;
24322#endif
24323}
24324PRESERVE_NONE
24325static bool Interp_GetFieldUint32(InterpState &S, CodePtr &PC) {
24326 {
24327 CodePtr OpPC = PC;
24328 const auto V0 = ReadArg<uint32_t>(S, PC);
24329 if (!GetField<PT_Uint32>(S, OpPC, V0)) return false;
24330 }
24331#if USE_TAILCALLS
24332 MUSTTAIL return InterpNext(S, PC);
24333#else
24334 return true;
24335#endif
24336}
24337PRESERVE_NONE
24338static bool Interp_GetFieldSint64(InterpState &S, CodePtr &PC) {
24339 {
24340 CodePtr OpPC = PC;
24341 const auto V0 = ReadArg<uint32_t>(S, PC);
24342 if (!GetField<PT_Sint64>(S, OpPC, V0)) return false;
24343 }
24344#if USE_TAILCALLS
24345 MUSTTAIL return InterpNext(S, PC);
24346#else
24347 return true;
24348#endif
24349}
24350PRESERVE_NONE
24351static bool Interp_GetFieldUint64(InterpState &S, CodePtr &PC) {
24352 {
24353 CodePtr OpPC = PC;
24354 const auto V0 = ReadArg<uint32_t>(S, PC);
24355 if (!GetField<PT_Uint64>(S, OpPC, V0)) return false;
24356 }
24357#if USE_TAILCALLS
24358 MUSTTAIL return InterpNext(S, PC);
24359#else
24360 return true;
24361#endif
24362}
24363PRESERVE_NONE
24364static bool Interp_GetFieldIntAP(InterpState &S, CodePtr &PC) {
24365 {
24366 CodePtr OpPC = PC;
24367 const auto V0 = ReadArg<uint32_t>(S, PC);
24368 if (!GetField<PT_IntAP>(S, OpPC, V0)) return false;
24369 }
24370#if USE_TAILCALLS
24371 MUSTTAIL return InterpNext(S, PC);
24372#else
24373 return true;
24374#endif
24375}
24376PRESERVE_NONE
24377static bool Interp_GetFieldIntAPS(InterpState &S, CodePtr &PC) {
24378 {
24379 CodePtr OpPC = PC;
24380 const auto V0 = ReadArg<uint32_t>(S, PC);
24381 if (!GetField<PT_IntAPS>(S, OpPC, V0)) return false;
24382 }
24383#if USE_TAILCALLS
24384 MUSTTAIL return InterpNext(S, PC);
24385#else
24386 return true;
24387#endif
24388}
24389PRESERVE_NONE
24390static bool Interp_GetFieldBool(InterpState &S, CodePtr &PC) {
24391 {
24392 CodePtr OpPC = PC;
24393 const auto V0 = ReadArg<uint32_t>(S, PC);
24394 if (!GetField<PT_Bool>(S, OpPC, V0)) return false;
24395 }
24396#if USE_TAILCALLS
24397 MUSTTAIL return InterpNext(S, PC);
24398#else
24399 return true;
24400#endif
24401}
24402PRESERVE_NONE
24403static bool Interp_GetFieldFixedPoint(InterpState &S, CodePtr &PC) {
24404 {
24405 CodePtr OpPC = PC;
24406 const auto V0 = ReadArg<uint32_t>(S, PC);
24407 if (!GetField<PT_FixedPoint>(S, OpPC, V0)) return false;
24408 }
24409#if USE_TAILCALLS
24410 MUSTTAIL return InterpNext(S, PC);
24411#else
24412 return true;
24413#endif
24414}
24415PRESERVE_NONE
24416static bool Interp_GetFieldPtr(InterpState &S, CodePtr &PC) {
24417 {
24418 CodePtr OpPC = PC;
24419 const auto V0 = ReadArg<uint32_t>(S, PC);
24420 if (!GetField<PT_Ptr>(S, OpPC, V0)) return false;
24421 }
24422#if USE_TAILCALLS
24423 MUSTTAIL return InterpNext(S, PC);
24424#else
24425 return true;
24426#endif
24427}
24428PRESERVE_NONE
24429static bool Interp_GetFieldMemberPtr(InterpState &S, CodePtr &PC) {
24430 {
24431 CodePtr OpPC = PC;
24432 const auto V0 = ReadArg<uint32_t>(S, PC);
24433 if (!GetField<PT_MemberPtr>(S, OpPC, V0)) return false;
24434 }
24435#if USE_TAILCALLS
24436 MUSTTAIL return InterpNext(S, PC);
24437#else
24438 return true;
24439#endif
24440}
24441PRESERVE_NONE
24442static bool Interp_GetFieldFloat(InterpState &S, CodePtr &PC) {
24443 {
24444 CodePtr OpPC = PC;
24445 const auto V0 = ReadArg<uint32_t>(S, PC);
24446 if (!GetField<PT_Float>(S, OpPC, V0)) return false;
24447 }
24448#if USE_TAILCALLS
24449 MUSTTAIL return InterpNext(S, PC);
24450#else
24451 return true;
24452#endif
24453}
24454#endif
24455#ifdef GET_DISASM
24456case OP_GetFieldSint8:
24457 Text.Op = PrintName("GetFieldSint8");
24458 Text.Args.push_back(printArg<uint32_t>(P, PC));
24459 break;
24460case OP_GetFieldUint8:
24461 Text.Op = PrintName("GetFieldUint8");
24462 Text.Args.push_back(printArg<uint32_t>(P, PC));
24463 break;
24464case OP_GetFieldSint16:
24465 Text.Op = PrintName("GetFieldSint16");
24466 Text.Args.push_back(printArg<uint32_t>(P, PC));
24467 break;
24468case OP_GetFieldUint16:
24469 Text.Op = PrintName("GetFieldUint16");
24470 Text.Args.push_back(printArg<uint32_t>(P, PC));
24471 break;
24472case OP_GetFieldSint32:
24473 Text.Op = PrintName("GetFieldSint32");
24474 Text.Args.push_back(printArg<uint32_t>(P, PC));
24475 break;
24476case OP_GetFieldUint32:
24477 Text.Op = PrintName("GetFieldUint32");
24478 Text.Args.push_back(printArg<uint32_t>(P, PC));
24479 break;
24480case OP_GetFieldSint64:
24481 Text.Op = PrintName("GetFieldSint64");
24482 Text.Args.push_back(printArg<uint32_t>(P, PC));
24483 break;
24484case OP_GetFieldUint64:
24485 Text.Op = PrintName("GetFieldUint64");
24486 Text.Args.push_back(printArg<uint32_t>(P, PC));
24487 break;
24488case OP_GetFieldIntAP:
24489 Text.Op = PrintName("GetFieldIntAP");
24490 Text.Args.push_back(printArg<uint32_t>(P, PC));
24491 break;
24492case OP_GetFieldIntAPS:
24493 Text.Op = PrintName("GetFieldIntAPS");
24494 Text.Args.push_back(printArg<uint32_t>(P, PC));
24495 break;
24496case OP_GetFieldBool:
24497 Text.Op = PrintName("GetFieldBool");
24498 Text.Args.push_back(printArg<uint32_t>(P, PC));
24499 break;
24500case OP_GetFieldFixedPoint:
24501 Text.Op = PrintName("GetFieldFixedPoint");
24502 Text.Args.push_back(printArg<uint32_t>(P, PC));
24503 break;
24504case OP_GetFieldPtr:
24505 Text.Op = PrintName("GetFieldPtr");
24506 Text.Args.push_back(printArg<uint32_t>(P, PC));
24507 break;
24508case OP_GetFieldMemberPtr:
24509 Text.Op = PrintName("GetFieldMemberPtr");
24510 Text.Args.push_back(printArg<uint32_t>(P, PC));
24511 break;
24512case OP_GetFieldFloat:
24513 Text.Op = PrintName("GetFieldFloat");
24514 Text.Args.push_back(printArg<uint32_t>(P, PC));
24515 break;
24516#endif
24517#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24518bool emitGetFieldSint8( uint32_t , SourceInfo);
24519bool emitGetFieldUint8( uint32_t , SourceInfo);
24520bool emitGetFieldSint16( uint32_t , SourceInfo);
24521bool emitGetFieldUint16( uint32_t , SourceInfo);
24522bool emitGetFieldSint32( uint32_t , SourceInfo);
24523bool emitGetFieldUint32( uint32_t , SourceInfo);
24524bool emitGetFieldSint64( uint32_t , SourceInfo);
24525bool emitGetFieldUint64( uint32_t , SourceInfo);
24526bool emitGetFieldIntAP( uint32_t , SourceInfo);
24527bool emitGetFieldIntAPS( uint32_t , SourceInfo);
24528bool emitGetFieldBool( uint32_t , SourceInfo);
24529bool emitGetFieldFixedPoint( uint32_t , SourceInfo);
24530bool emitGetFieldPtr( uint32_t , SourceInfo);
24531bool emitGetFieldMemberPtr( uint32_t , SourceInfo);
24532bool emitGetFieldFloat( uint32_t , SourceInfo);
24533#endif
24534#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24535[[nodiscard]] bool emitGetField(PrimType, uint32_t, SourceInfo I);
24536#endif
24537#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
24538bool
24539#if defined(GET_EVAL_IMPL)
24540EvalEmitter
24541#else
24542ByteCodeEmitter
24543#endif
24544::emitGetField(PrimType T0, uint32_t A0, SourceInfo I) {
24545 switch (T0) {
24546 case PT_Sint8:
24547 return emitGetFieldSint8(A0, I);
24548 case PT_Uint8:
24549 return emitGetFieldUint8(A0, I);
24550 case PT_Sint16:
24551 return emitGetFieldSint16(A0, I);
24552 case PT_Uint16:
24553 return emitGetFieldUint16(A0, I);
24554 case PT_Sint32:
24555 return emitGetFieldSint32(A0, I);
24556 case PT_Uint32:
24557 return emitGetFieldUint32(A0, I);
24558 case PT_Sint64:
24559 return emitGetFieldSint64(A0, I);
24560 case PT_Uint64:
24561 return emitGetFieldUint64(A0, I);
24562 case PT_IntAP:
24563 return emitGetFieldIntAP(A0, I);
24564 case PT_IntAPS:
24565 return emitGetFieldIntAPS(A0, I);
24566 case PT_Bool:
24567 return emitGetFieldBool(A0, I);
24568 case PT_FixedPoint:
24569 return emitGetFieldFixedPoint(A0, I);
24570 case PT_Ptr:
24571 return emitGetFieldPtr(A0, I);
24572 case PT_MemberPtr:
24573 return emitGetFieldMemberPtr(A0, I);
24574 case PT_Float:
24575 return emitGetFieldFloat(A0, I);
24576 }
24577 llvm_unreachable("invalid enum value");
24578}
24579#endif
24580#ifdef GET_LINK_IMPL
24581bool ByteCodeEmitter::emitGetFieldSint8( uint32_t A0, SourceInfo L) {
24582 return emitOp<uint32_t>(OP_GetFieldSint8, A0, L);
24583}
24584bool ByteCodeEmitter::emitGetFieldUint8( uint32_t A0, SourceInfo L) {
24585 return emitOp<uint32_t>(OP_GetFieldUint8, A0, L);
24586}
24587bool ByteCodeEmitter::emitGetFieldSint16( uint32_t A0, SourceInfo L) {
24588 return emitOp<uint32_t>(OP_GetFieldSint16, A0, L);
24589}
24590bool ByteCodeEmitter::emitGetFieldUint16( uint32_t A0, SourceInfo L) {
24591 return emitOp<uint32_t>(OP_GetFieldUint16, A0, L);
24592}
24593bool ByteCodeEmitter::emitGetFieldSint32( uint32_t A0, SourceInfo L) {
24594 return emitOp<uint32_t>(OP_GetFieldSint32, A0, L);
24595}
24596bool ByteCodeEmitter::emitGetFieldUint32( uint32_t A0, SourceInfo L) {
24597 return emitOp<uint32_t>(OP_GetFieldUint32, A0, L);
24598}
24599bool ByteCodeEmitter::emitGetFieldSint64( uint32_t A0, SourceInfo L) {
24600 return emitOp<uint32_t>(OP_GetFieldSint64, A0, L);
24601}
24602bool ByteCodeEmitter::emitGetFieldUint64( uint32_t A0, SourceInfo L) {
24603 return emitOp<uint32_t>(OP_GetFieldUint64, A0, L);
24604}
24605bool ByteCodeEmitter::emitGetFieldIntAP( uint32_t A0, SourceInfo L) {
24606 return emitOp<uint32_t>(OP_GetFieldIntAP, A0, L);
24607}
24608bool ByteCodeEmitter::emitGetFieldIntAPS( uint32_t A0, SourceInfo L) {
24609 return emitOp<uint32_t>(OP_GetFieldIntAPS, A0, L);
24610}
24611bool ByteCodeEmitter::emitGetFieldBool( uint32_t A0, SourceInfo L) {
24612 return emitOp<uint32_t>(OP_GetFieldBool, A0, L);
24613}
24614bool ByteCodeEmitter::emitGetFieldFixedPoint( uint32_t A0, SourceInfo L) {
24615 return emitOp<uint32_t>(OP_GetFieldFixedPoint, A0, L);
24616}
24617bool ByteCodeEmitter::emitGetFieldPtr( uint32_t A0, SourceInfo L) {
24618 return emitOp<uint32_t>(OP_GetFieldPtr, A0, L);
24619}
24620bool ByteCodeEmitter::emitGetFieldMemberPtr( uint32_t A0, SourceInfo L) {
24621 return emitOp<uint32_t>(OP_GetFieldMemberPtr, A0, L);
24622}
24623bool ByteCodeEmitter::emitGetFieldFloat( uint32_t A0, SourceInfo L) {
24624 return emitOp<uint32_t>(OP_GetFieldFloat, A0, L);
24625}
24626#endif
24627#ifdef GET_EVAL_IMPL
24628bool EvalEmitter::emitGetFieldSint8( uint32_t A0, SourceInfo L) {
24629 if (!isActive()) return true;
24630 CurrentSource = L;
24631 return GetField<PT_Sint8>(S, OpPC, A0);
24632}
24633bool EvalEmitter::emitGetFieldUint8( uint32_t A0, SourceInfo L) {
24634 if (!isActive()) return true;
24635 CurrentSource = L;
24636 return GetField<PT_Uint8>(S, OpPC, A0);
24637}
24638bool EvalEmitter::emitGetFieldSint16( uint32_t A0, SourceInfo L) {
24639 if (!isActive()) return true;
24640 CurrentSource = L;
24641 return GetField<PT_Sint16>(S, OpPC, A0);
24642}
24643bool EvalEmitter::emitGetFieldUint16( uint32_t A0, SourceInfo L) {
24644 if (!isActive()) return true;
24645 CurrentSource = L;
24646 return GetField<PT_Uint16>(S, OpPC, A0);
24647}
24648bool EvalEmitter::emitGetFieldSint32( uint32_t A0, SourceInfo L) {
24649 if (!isActive()) return true;
24650 CurrentSource = L;
24651 return GetField<PT_Sint32>(S, OpPC, A0);
24652}
24653bool EvalEmitter::emitGetFieldUint32( uint32_t A0, SourceInfo L) {
24654 if (!isActive()) return true;
24655 CurrentSource = L;
24656 return GetField<PT_Uint32>(S, OpPC, A0);
24657}
24658bool EvalEmitter::emitGetFieldSint64( uint32_t A0, SourceInfo L) {
24659 if (!isActive()) return true;
24660 CurrentSource = L;
24661 return GetField<PT_Sint64>(S, OpPC, A0);
24662}
24663bool EvalEmitter::emitGetFieldUint64( uint32_t A0, SourceInfo L) {
24664 if (!isActive()) return true;
24665 CurrentSource = L;
24666 return GetField<PT_Uint64>(S, OpPC, A0);
24667}
24668bool EvalEmitter::emitGetFieldIntAP( uint32_t A0, SourceInfo L) {
24669 if (!isActive()) return true;
24670 CurrentSource = L;
24671 return GetField<PT_IntAP>(S, OpPC, A0);
24672}
24673bool EvalEmitter::emitGetFieldIntAPS( uint32_t A0, SourceInfo L) {
24674 if (!isActive()) return true;
24675 CurrentSource = L;
24676 return GetField<PT_IntAPS>(S, OpPC, A0);
24677}
24678bool EvalEmitter::emitGetFieldBool( uint32_t A0, SourceInfo L) {
24679 if (!isActive()) return true;
24680 CurrentSource = L;
24681 return GetField<PT_Bool>(S, OpPC, A0);
24682}
24683bool EvalEmitter::emitGetFieldFixedPoint( uint32_t A0, SourceInfo L) {
24684 if (!isActive()) return true;
24685 CurrentSource = L;
24686 return GetField<PT_FixedPoint>(S, OpPC, A0);
24687}
24688bool EvalEmitter::emitGetFieldPtr( uint32_t A0, SourceInfo L) {
24689 if (!isActive()) return true;
24690 CurrentSource = L;
24691 return GetField<PT_Ptr>(S, OpPC, A0);
24692}
24693bool EvalEmitter::emitGetFieldMemberPtr( uint32_t A0, SourceInfo L) {
24694 if (!isActive()) return true;
24695 CurrentSource = L;
24696 return GetField<PT_MemberPtr>(S, OpPC, A0);
24697}
24698bool EvalEmitter::emitGetFieldFloat( uint32_t A0, SourceInfo L) {
24699 if (!isActive()) return true;
24700 CurrentSource = L;
24701 return GetField<PT_Float>(S, OpPC, A0);
24702}
24703#endif
24704#ifdef GET_OPCODE_NAMES
24705OP_GetFieldPopSint8,
24706OP_GetFieldPopUint8,
24707OP_GetFieldPopSint16,
24708OP_GetFieldPopUint16,
24709OP_GetFieldPopSint32,
24710OP_GetFieldPopUint32,
24711OP_GetFieldPopSint64,
24712OP_GetFieldPopUint64,
24713OP_GetFieldPopIntAP,
24714OP_GetFieldPopIntAPS,
24715OP_GetFieldPopBool,
24716OP_GetFieldPopFixedPoint,
24717OP_GetFieldPopPtr,
24718OP_GetFieldPopMemberPtr,
24719OP_GetFieldPopFloat,
24720#endif
24721#ifdef GET_INTERPFN_LIST
24722&Interp_GetFieldPopSint8,
24723&Interp_GetFieldPopUint8,
24724&Interp_GetFieldPopSint16,
24725&Interp_GetFieldPopUint16,
24726&Interp_GetFieldPopSint32,
24727&Interp_GetFieldPopUint32,
24728&Interp_GetFieldPopSint64,
24729&Interp_GetFieldPopUint64,
24730&Interp_GetFieldPopIntAP,
24731&Interp_GetFieldPopIntAPS,
24732&Interp_GetFieldPopBool,
24733&Interp_GetFieldPopFixedPoint,
24734&Interp_GetFieldPopPtr,
24735&Interp_GetFieldPopMemberPtr,
24736&Interp_GetFieldPopFloat,
24737#endif
24738#ifdef GET_INTERPFN_DISPATCHERS
24739PRESERVE_NONE
24740static bool Interp_GetFieldPopSint8(InterpState &S, CodePtr &PC) {
24741 {
24742 CodePtr OpPC = PC;
24743 const auto V0 = ReadArg<uint32_t>(S, PC);
24744 if (!GetFieldPop<PT_Sint8>(S, OpPC, V0)) return false;
24745 }
24746#if USE_TAILCALLS
24747 MUSTTAIL return InterpNext(S, PC);
24748#else
24749 return true;
24750#endif
24751}
24752PRESERVE_NONE
24753static bool Interp_GetFieldPopUint8(InterpState &S, CodePtr &PC) {
24754 {
24755 CodePtr OpPC = PC;
24756 const auto V0 = ReadArg<uint32_t>(S, PC);
24757 if (!GetFieldPop<PT_Uint8>(S, OpPC, V0)) return false;
24758 }
24759#if USE_TAILCALLS
24760 MUSTTAIL return InterpNext(S, PC);
24761#else
24762 return true;
24763#endif
24764}
24765PRESERVE_NONE
24766static bool Interp_GetFieldPopSint16(InterpState &S, CodePtr &PC) {
24767 {
24768 CodePtr OpPC = PC;
24769 const auto V0 = ReadArg<uint32_t>(S, PC);
24770 if (!GetFieldPop<PT_Sint16>(S, OpPC, V0)) return false;
24771 }
24772#if USE_TAILCALLS
24773 MUSTTAIL return InterpNext(S, PC);
24774#else
24775 return true;
24776#endif
24777}
24778PRESERVE_NONE
24779static bool Interp_GetFieldPopUint16(InterpState &S, CodePtr &PC) {
24780 {
24781 CodePtr OpPC = PC;
24782 const auto V0 = ReadArg<uint32_t>(S, PC);
24783 if (!GetFieldPop<PT_Uint16>(S, OpPC, V0)) return false;
24784 }
24785#if USE_TAILCALLS
24786 MUSTTAIL return InterpNext(S, PC);
24787#else
24788 return true;
24789#endif
24790}
24791PRESERVE_NONE
24792static bool Interp_GetFieldPopSint32(InterpState &S, CodePtr &PC) {
24793 {
24794 CodePtr OpPC = PC;
24795 const auto V0 = ReadArg<uint32_t>(S, PC);
24796 if (!GetFieldPop<PT_Sint32>(S, OpPC, V0)) return false;
24797 }
24798#if USE_TAILCALLS
24799 MUSTTAIL return InterpNext(S, PC);
24800#else
24801 return true;
24802#endif
24803}
24804PRESERVE_NONE
24805static bool Interp_GetFieldPopUint32(InterpState &S, CodePtr &PC) {
24806 {
24807 CodePtr OpPC = PC;
24808 const auto V0 = ReadArg<uint32_t>(S, PC);
24809 if (!GetFieldPop<PT_Uint32>(S, OpPC, V0)) return false;
24810 }
24811#if USE_TAILCALLS
24812 MUSTTAIL return InterpNext(S, PC);
24813#else
24814 return true;
24815#endif
24816}
24817PRESERVE_NONE
24818static bool Interp_GetFieldPopSint64(InterpState &S, CodePtr &PC) {
24819 {
24820 CodePtr OpPC = PC;
24821 const auto V0 = ReadArg<uint32_t>(S, PC);
24822 if (!GetFieldPop<PT_Sint64>(S, OpPC, V0)) return false;
24823 }
24824#if USE_TAILCALLS
24825 MUSTTAIL return InterpNext(S, PC);
24826#else
24827 return true;
24828#endif
24829}
24830PRESERVE_NONE
24831static bool Interp_GetFieldPopUint64(InterpState &S, CodePtr &PC) {
24832 {
24833 CodePtr OpPC = PC;
24834 const auto V0 = ReadArg<uint32_t>(S, PC);
24835 if (!GetFieldPop<PT_Uint64>(S, OpPC, V0)) return false;
24836 }
24837#if USE_TAILCALLS
24838 MUSTTAIL return InterpNext(S, PC);
24839#else
24840 return true;
24841#endif
24842}
24843PRESERVE_NONE
24844static bool Interp_GetFieldPopIntAP(InterpState &S, CodePtr &PC) {
24845 {
24846 CodePtr OpPC = PC;
24847 const auto V0 = ReadArg<uint32_t>(S, PC);
24848 if (!GetFieldPop<PT_IntAP>(S, OpPC, V0)) return false;
24849 }
24850#if USE_TAILCALLS
24851 MUSTTAIL return InterpNext(S, PC);
24852#else
24853 return true;
24854#endif
24855}
24856PRESERVE_NONE
24857static bool Interp_GetFieldPopIntAPS(InterpState &S, CodePtr &PC) {
24858 {
24859 CodePtr OpPC = PC;
24860 const auto V0 = ReadArg<uint32_t>(S, PC);
24861 if (!GetFieldPop<PT_IntAPS>(S, OpPC, V0)) return false;
24862 }
24863#if USE_TAILCALLS
24864 MUSTTAIL return InterpNext(S, PC);
24865#else
24866 return true;
24867#endif
24868}
24869PRESERVE_NONE
24870static bool Interp_GetFieldPopBool(InterpState &S, CodePtr &PC) {
24871 {
24872 CodePtr OpPC = PC;
24873 const auto V0 = ReadArg<uint32_t>(S, PC);
24874 if (!GetFieldPop<PT_Bool>(S, OpPC, V0)) return false;
24875 }
24876#if USE_TAILCALLS
24877 MUSTTAIL return InterpNext(S, PC);
24878#else
24879 return true;
24880#endif
24881}
24882PRESERVE_NONE
24883static bool Interp_GetFieldPopFixedPoint(InterpState &S, CodePtr &PC) {
24884 {
24885 CodePtr OpPC = PC;
24886 const auto V0 = ReadArg<uint32_t>(S, PC);
24887 if (!GetFieldPop<PT_FixedPoint>(S, OpPC, V0)) return false;
24888 }
24889#if USE_TAILCALLS
24890 MUSTTAIL return InterpNext(S, PC);
24891#else
24892 return true;
24893#endif
24894}
24895PRESERVE_NONE
24896static bool Interp_GetFieldPopPtr(InterpState &S, CodePtr &PC) {
24897 {
24898 CodePtr OpPC = PC;
24899 const auto V0 = ReadArg<uint32_t>(S, PC);
24900 if (!GetFieldPop<PT_Ptr>(S, OpPC, V0)) return false;
24901 }
24902#if USE_TAILCALLS
24903 MUSTTAIL return InterpNext(S, PC);
24904#else
24905 return true;
24906#endif
24907}
24908PRESERVE_NONE
24909static bool Interp_GetFieldPopMemberPtr(InterpState &S, CodePtr &PC) {
24910 {
24911 CodePtr OpPC = PC;
24912 const auto V0 = ReadArg<uint32_t>(S, PC);
24913 if (!GetFieldPop<PT_MemberPtr>(S, OpPC, V0)) return false;
24914 }
24915#if USE_TAILCALLS
24916 MUSTTAIL return InterpNext(S, PC);
24917#else
24918 return true;
24919#endif
24920}
24921PRESERVE_NONE
24922static bool Interp_GetFieldPopFloat(InterpState &S, CodePtr &PC) {
24923 {
24924 CodePtr OpPC = PC;
24925 const auto V0 = ReadArg<uint32_t>(S, PC);
24926 if (!GetFieldPop<PT_Float>(S, OpPC, V0)) return false;
24927 }
24928#if USE_TAILCALLS
24929 MUSTTAIL return InterpNext(S, PC);
24930#else
24931 return true;
24932#endif
24933}
24934#endif
24935#ifdef GET_DISASM
24936case OP_GetFieldPopSint8:
24937 Text.Op = PrintName("GetFieldPopSint8");
24938 Text.Args.push_back(printArg<uint32_t>(P, PC));
24939 break;
24940case OP_GetFieldPopUint8:
24941 Text.Op = PrintName("GetFieldPopUint8");
24942 Text.Args.push_back(printArg<uint32_t>(P, PC));
24943 break;
24944case OP_GetFieldPopSint16:
24945 Text.Op = PrintName("GetFieldPopSint16");
24946 Text.Args.push_back(printArg<uint32_t>(P, PC));
24947 break;
24948case OP_GetFieldPopUint16:
24949 Text.Op = PrintName("GetFieldPopUint16");
24950 Text.Args.push_back(printArg<uint32_t>(P, PC));
24951 break;
24952case OP_GetFieldPopSint32:
24953 Text.Op = PrintName("GetFieldPopSint32");
24954 Text.Args.push_back(printArg<uint32_t>(P, PC));
24955 break;
24956case OP_GetFieldPopUint32:
24957 Text.Op = PrintName("GetFieldPopUint32");
24958 Text.Args.push_back(printArg<uint32_t>(P, PC));
24959 break;
24960case OP_GetFieldPopSint64:
24961 Text.Op = PrintName("GetFieldPopSint64");
24962 Text.Args.push_back(printArg<uint32_t>(P, PC));
24963 break;
24964case OP_GetFieldPopUint64:
24965 Text.Op = PrintName("GetFieldPopUint64");
24966 Text.Args.push_back(printArg<uint32_t>(P, PC));
24967 break;
24968case OP_GetFieldPopIntAP:
24969 Text.Op = PrintName("GetFieldPopIntAP");
24970 Text.Args.push_back(printArg<uint32_t>(P, PC));
24971 break;
24972case OP_GetFieldPopIntAPS:
24973 Text.Op = PrintName("GetFieldPopIntAPS");
24974 Text.Args.push_back(printArg<uint32_t>(P, PC));
24975 break;
24976case OP_GetFieldPopBool:
24977 Text.Op = PrintName("GetFieldPopBool");
24978 Text.Args.push_back(printArg<uint32_t>(P, PC));
24979 break;
24980case OP_GetFieldPopFixedPoint:
24981 Text.Op = PrintName("GetFieldPopFixedPoint");
24982 Text.Args.push_back(printArg<uint32_t>(P, PC));
24983 break;
24984case OP_GetFieldPopPtr:
24985 Text.Op = PrintName("GetFieldPopPtr");
24986 Text.Args.push_back(printArg<uint32_t>(P, PC));
24987 break;
24988case OP_GetFieldPopMemberPtr:
24989 Text.Op = PrintName("GetFieldPopMemberPtr");
24990 Text.Args.push_back(printArg<uint32_t>(P, PC));
24991 break;
24992case OP_GetFieldPopFloat:
24993 Text.Op = PrintName("GetFieldPopFloat");
24994 Text.Args.push_back(printArg<uint32_t>(P, PC));
24995 break;
24996#endif
24997#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24998bool emitGetFieldPopSint8( uint32_t , SourceInfo);
24999bool emitGetFieldPopUint8( uint32_t , SourceInfo);
25000bool emitGetFieldPopSint16( uint32_t , SourceInfo);
25001bool emitGetFieldPopUint16( uint32_t , SourceInfo);
25002bool emitGetFieldPopSint32( uint32_t , SourceInfo);
25003bool emitGetFieldPopUint32( uint32_t , SourceInfo);
25004bool emitGetFieldPopSint64( uint32_t , SourceInfo);
25005bool emitGetFieldPopUint64( uint32_t , SourceInfo);
25006bool emitGetFieldPopIntAP( uint32_t , SourceInfo);
25007bool emitGetFieldPopIntAPS( uint32_t , SourceInfo);
25008bool emitGetFieldPopBool( uint32_t , SourceInfo);
25009bool emitGetFieldPopFixedPoint( uint32_t , SourceInfo);
25010bool emitGetFieldPopPtr( uint32_t , SourceInfo);
25011bool emitGetFieldPopMemberPtr( uint32_t , SourceInfo);
25012bool emitGetFieldPopFloat( uint32_t , SourceInfo);
25013#endif
25014#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25015[[nodiscard]] bool emitGetFieldPop(PrimType, uint32_t, SourceInfo I);
25016#endif
25017#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
25018bool
25019#if defined(GET_EVAL_IMPL)
25020EvalEmitter
25021#else
25022ByteCodeEmitter
25023#endif
25024::emitGetFieldPop(PrimType T0, uint32_t A0, SourceInfo I) {
25025 switch (T0) {
25026 case PT_Sint8:
25027 return emitGetFieldPopSint8(A0, I);
25028 case PT_Uint8:
25029 return emitGetFieldPopUint8(A0, I);
25030 case PT_Sint16:
25031 return emitGetFieldPopSint16(A0, I);
25032 case PT_Uint16:
25033 return emitGetFieldPopUint16(A0, I);
25034 case PT_Sint32:
25035 return emitGetFieldPopSint32(A0, I);
25036 case PT_Uint32:
25037 return emitGetFieldPopUint32(A0, I);
25038 case PT_Sint64:
25039 return emitGetFieldPopSint64(A0, I);
25040 case PT_Uint64:
25041 return emitGetFieldPopUint64(A0, I);
25042 case PT_IntAP:
25043 return emitGetFieldPopIntAP(A0, I);
25044 case PT_IntAPS:
25045 return emitGetFieldPopIntAPS(A0, I);
25046 case PT_Bool:
25047 return emitGetFieldPopBool(A0, I);
25048 case PT_FixedPoint:
25049 return emitGetFieldPopFixedPoint(A0, I);
25050 case PT_Ptr:
25051 return emitGetFieldPopPtr(A0, I);
25052 case PT_MemberPtr:
25053 return emitGetFieldPopMemberPtr(A0, I);
25054 case PT_Float:
25055 return emitGetFieldPopFloat(A0, I);
25056 }
25057 llvm_unreachable("invalid enum value");
25058}
25059#endif
25060#ifdef GET_LINK_IMPL
25061bool ByteCodeEmitter::emitGetFieldPopSint8( uint32_t A0, SourceInfo L) {
25062 return emitOp<uint32_t>(OP_GetFieldPopSint8, A0, L);
25063}
25064bool ByteCodeEmitter::emitGetFieldPopUint8( uint32_t A0, SourceInfo L) {
25065 return emitOp<uint32_t>(OP_GetFieldPopUint8, A0, L);
25066}
25067bool ByteCodeEmitter::emitGetFieldPopSint16( uint32_t A0, SourceInfo L) {
25068 return emitOp<uint32_t>(OP_GetFieldPopSint16, A0, L);
25069}
25070bool ByteCodeEmitter::emitGetFieldPopUint16( uint32_t A0, SourceInfo L) {
25071 return emitOp<uint32_t>(OP_GetFieldPopUint16, A0, L);
25072}
25073bool ByteCodeEmitter::emitGetFieldPopSint32( uint32_t A0, SourceInfo L) {
25074 return emitOp<uint32_t>(OP_GetFieldPopSint32, A0, L);
25075}
25076bool ByteCodeEmitter::emitGetFieldPopUint32( uint32_t A0, SourceInfo L) {
25077 return emitOp<uint32_t>(OP_GetFieldPopUint32, A0, L);
25078}
25079bool ByteCodeEmitter::emitGetFieldPopSint64( uint32_t A0, SourceInfo L) {
25080 return emitOp<uint32_t>(OP_GetFieldPopSint64, A0, L);
25081}
25082bool ByteCodeEmitter::emitGetFieldPopUint64( uint32_t A0, SourceInfo L) {
25083 return emitOp<uint32_t>(OP_GetFieldPopUint64, A0, L);
25084}
25085bool ByteCodeEmitter::emitGetFieldPopIntAP( uint32_t A0, SourceInfo L) {
25086 return emitOp<uint32_t>(OP_GetFieldPopIntAP, A0, L);
25087}
25088bool ByteCodeEmitter::emitGetFieldPopIntAPS( uint32_t A0, SourceInfo L) {
25089 return emitOp<uint32_t>(OP_GetFieldPopIntAPS, A0, L);
25090}
25091bool ByteCodeEmitter::emitGetFieldPopBool( uint32_t A0, SourceInfo L) {
25092 return emitOp<uint32_t>(OP_GetFieldPopBool, A0, L);
25093}
25094bool ByteCodeEmitter::emitGetFieldPopFixedPoint( uint32_t A0, SourceInfo L) {
25095 return emitOp<uint32_t>(OP_GetFieldPopFixedPoint, A0, L);
25096}
25097bool ByteCodeEmitter::emitGetFieldPopPtr( uint32_t A0, SourceInfo L) {
25098 return emitOp<uint32_t>(OP_GetFieldPopPtr, A0, L);
25099}
25100bool ByteCodeEmitter::emitGetFieldPopMemberPtr( uint32_t A0, SourceInfo L) {
25101 return emitOp<uint32_t>(OP_GetFieldPopMemberPtr, A0, L);
25102}
25103bool ByteCodeEmitter::emitGetFieldPopFloat( uint32_t A0, SourceInfo L) {
25104 return emitOp<uint32_t>(OP_GetFieldPopFloat, A0, L);
25105}
25106#endif
25107#ifdef GET_EVAL_IMPL
25108bool EvalEmitter::emitGetFieldPopSint8( uint32_t A0, SourceInfo L) {
25109 if (!isActive()) return true;
25110 CurrentSource = L;
25111 return GetFieldPop<PT_Sint8>(S, OpPC, A0);
25112}
25113bool EvalEmitter::emitGetFieldPopUint8( uint32_t A0, SourceInfo L) {
25114 if (!isActive()) return true;
25115 CurrentSource = L;
25116 return GetFieldPop<PT_Uint8>(S, OpPC, A0);
25117}
25118bool EvalEmitter::emitGetFieldPopSint16( uint32_t A0, SourceInfo L) {
25119 if (!isActive()) return true;
25120 CurrentSource = L;
25121 return GetFieldPop<PT_Sint16>(S, OpPC, A0);
25122}
25123bool EvalEmitter::emitGetFieldPopUint16( uint32_t A0, SourceInfo L) {
25124 if (!isActive()) return true;
25125 CurrentSource = L;
25126 return GetFieldPop<PT_Uint16>(S, OpPC, A0);
25127}
25128bool EvalEmitter::emitGetFieldPopSint32( uint32_t A0, SourceInfo L) {
25129 if (!isActive()) return true;
25130 CurrentSource = L;
25131 return GetFieldPop<PT_Sint32>(S, OpPC, A0);
25132}
25133bool EvalEmitter::emitGetFieldPopUint32( uint32_t A0, SourceInfo L) {
25134 if (!isActive()) return true;
25135 CurrentSource = L;
25136 return GetFieldPop<PT_Uint32>(S, OpPC, A0);
25137}
25138bool EvalEmitter::emitGetFieldPopSint64( uint32_t A0, SourceInfo L) {
25139 if (!isActive()) return true;
25140 CurrentSource = L;
25141 return GetFieldPop<PT_Sint64>(S, OpPC, A0);
25142}
25143bool EvalEmitter::emitGetFieldPopUint64( uint32_t A0, SourceInfo L) {
25144 if (!isActive()) return true;
25145 CurrentSource = L;
25146 return GetFieldPop<PT_Uint64>(S, OpPC, A0);
25147}
25148bool EvalEmitter::emitGetFieldPopIntAP( uint32_t A0, SourceInfo L) {
25149 if (!isActive()) return true;
25150 CurrentSource = L;
25151 return GetFieldPop<PT_IntAP>(S, OpPC, A0);
25152}
25153bool EvalEmitter::emitGetFieldPopIntAPS( uint32_t A0, SourceInfo L) {
25154 if (!isActive()) return true;
25155 CurrentSource = L;
25156 return GetFieldPop<PT_IntAPS>(S, OpPC, A0);
25157}
25158bool EvalEmitter::emitGetFieldPopBool( uint32_t A0, SourceInfo L) {
25159 if (!isActive()) return true;
25160 CurrentSource = L;
25161 return GetFieldPop<PT_Bool>(S, OpPC, A0);
25162}
25163bool EvalEmitter::emitGetFieldPopFixedPoint( uint32_t A0, SourceInfo L) {
25164 if (!isActive()) return true;
25165 CurrentSource = L;
25166 return GetFieldPop<PT_FixedPoint>(S, OpPC, A0);
25167}
25168bool EvalEmitter::emitGetFieldPopPtr( uint32_t A0, SourceInfo L) {
25169 if (!isActive()) return true;
25170 CurrentSource = L;
25171 return GetFieldPop<PT_Ptr>(S, OpPC, A0);
25172}
25173bool EvalEmitter::emitGetFieldPopMemberPtr( uint32_t A0, SourceInfo L) {
25174 if (!isActive()) return true;
25175 CurrentSource = L;
25176 return GetFieldPop<PT_MemberPtr>(S, OpPC, A0);
25177}
25178bool EvalEmitter::emitGetFieldPopFloat( uint32_t A0, SourceInfo L) {
25179 if (!isActive()) return true;
25180 CurrentSource = L;
25181 return GetFieldPop<PT_Float>(S, OpPC, A0);
25182}
25183#endif
25184#ifdef GET_OPCODE_NAMES
25185OP_GetFnPtr,
25186#endif
25187#ifdef GET_INTERPFN_LIST
25188&Interp_GetFnPtr,
25189#endif
25190#ifdef GET_INTERPFN_DISPATCHERS
25191PRESERVE_NONE
25192static bool Interp_GetFnPtr(InterpState &S, CodePtr &PC) {
25193 {
25194 CodePtr OpPC = PC;
25195 const auto V0 = ReadArg<const Function *>(S, PC);
25196 GetFnPtr(S, OpPC, V0);
25197 }
25198#if USE_TAILCALLS
25199 MUSTTAIL return InterpNext(S, PC);
25200#else
25201 return true;
25202#endif
25203}
25204#endif
25205#ifdef GET_DISASM
25206case OP_GetFnPtr:
25207 Text.Op = PrintName("GetFnPtr");
25208 Text.Args.push_back(printArg<const Function *>(P, PC));
25209 break;
25210#endif
25211#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25212bool emitGetFnPtr( const Function * , SourceInfo);
25213#endif
25214#ifdef GET_LINK_IMPL
25215bool ByteCodeEmitter::emitGetFnPtr( const Function * A0, SourceInfo L) {
25216 return emitOp<const Function *>(OP_GetFnPtr, A0, L);
25217}
25218#endif
25219#ifdef GET_EVAL_IMPL
25220bool EvalEmitter::emitGetFnPtr( const Function * A0, SourceInfo L) {
25221 if (!isActive()) return true;
25222 CurrentSource = L;
25223 return GetFnPtr(S, OpPC, A0);
25224}
25225#endif
25226#ifdef GET_OPCODE_NAMES
25227OP_GetGlobalSint8,
25228OP_GetGlobalUint8,
25229OP_GetGlobalSint16,
25230OP_GetGlobalUint16,
25231OP_GetGlobalSint32,
25232OP_GetGlobalUint32,
25233OP_GetGlobalSint64,
25234OP_GetGlobalUint64,
25235OP_GetGlobalIntAP,
25236OP_GetGlobalIntAPS,
25237OP_GetGlobalBool,
25238OP_GetGlobalFixedPoint,
25239OP_GetGlobalPtr,
25240OP_GetGlobalMemberPtr,
25241OP_GetGlobalFloat,
25242#endif
25243#ifdef GET_INTERPFN_LIST
25244&Interp_GetGlobalSint8,
25245&Interp_GetGlobalUint8,
25246&Interp_GetGlobalSint16,
25247&Interp_GetGlobalUint16,
25248&Interp_GetGlobalSint32,
25249&Interp_GetGlobalUint32,
25250&Interp_GetGlobalSint64,
25251&Interp_GetGlobalUint64,
25252&Interp_GetGlobalIntAP,
25253&Interp_GetGlobalIntAPS,
25254&Interp_GetGlobalBool,
25255&Interp_GetGlobalFixedPoint,
25256&Interp_GetGlobalPtr,
25257&Interp_GetGlobalMemberPtr,
25258&Interp_GetGlobalFloat,
25259#endif
25260#ifdef GET_INTERPFN_DISPATCHERS
25261PRESERVE_NONE
25262static bool Interp_GetGlobalSint8(InterpState &S, CodePtr &PC) {
25263 {
25264 CodePtr OpPC = PC;
25265 const auto V0 = ReadArg<uint32_t>(S, PC);
25266 if (!GetGlobal<PT_Sint8>(S, OpPC, V0)) return false;
25267 }
25268#if USE_TAILCALLS
25269 MUSTTAIL return InterpNext(S, PC);
25270#else
25271 return true;
25272#endif
25273}
25274PRESERVE_NONE
25275static bool Interp_GetGlobalUint8(InterpState &S, CodePtr &PC) {
25276 {
25277 CodePtr OpPC = PC;
25278 const auto V0 = ReadArg<uint32_t>(S, PC);
25279 if (!GetGlobal<PT_Uint8>(S, OpPC, V0)) return false;
25280 }
25281#if USE_TAILCALLS
25282 MUSTTAIL return InterpNext(S, PC);
25283#else
25284 return true;
25285#endif
25286}
25287PRESERVE_NONE
25288static bool Interp_GetGlobalSint16(InterpState &S, CodePtr &PC) {
25289 {
25290 CodePtr OpPC = PC;
25291 const auto V0 = ReadArg<uint32_t>(S, PC);
25292 if (!GetGlobal<PT_Sint16>(S, OpPC, V0)) return false;
25293 }
25294#if USE_TAILCALLS
25295 MUSTTAIL return InterpNext(S, PC);
25296#else
25297 return true;
25298#endif
25299}
25300PRESERVE_NONE
25301static bool Interp_GetGlobalUint16(InterpState &S, CodePtr &PC) {
25302 {
25303 CodePtr OpPC = PC;
25304 const auto V0 = ReadArg<uint32_t>(S, PC);
25305 if (!GetGlobal<PT_Uint16>(S, OpPC, V0)) return false;
25306 }
25307#if USE_TAILCALLS
25308 MUSTTAIL return InterpNext(S, PC);
25309#else
25310 return true;
25311#endif
25312}
25313PRESERVE_NONE
25314static bool Interp_GetGlobalSint32(InterpState &S, CodePtr &PC) {
25315 {
25316 CodePtr OpPC = PC;
25317 const auto V0 = ReadArg<uint32_t>(S, PC);
25318 if (!GetGlobal<PT_Sint32>(S, OpPC, V0)) return false;
25319 }
25320#if USE_TAILCALLS
25321 MUSTTAIL return InterpNext(S, PC);
25322#else
25323 return true;
25324#endif
25325}
25326PRESERVE_NONE
25327static bool Interp_GetGlobalUint32(InterpState &S, CodePtr &PC) {
25328 {
25329 CodePtr OpPC = PC;
25330 const auto V0 = ReadArg<uint32_t>(S, PC);
25331 if (!GetGlobal<PT_Uint32>(S, OpPC, V0)) return false;
25332 }
25333#if USE_TAILCALLS
25334 MUSTTAIL return InterpNext(S, PC);
25335#else
25336 return true;
25337#endif
25338}
25339PRESERVE_NONE
25340static bool Interp_GetGlobalSint64(InterpState &S, CodePtr &PC) {
25341 {
25342 CodePtr OpPC = PC;
25343 const auto V0 = ReadArg<uint32_t>(S, PC);
25344 if (!GetGlobal<PT_Sint64>(S, OpPC, V0)) return false;
25345 }
25346#if USE_TAILCALLS
25347 MUSTTAIL return InterpNext(S, PC);
25348#else
25349 return true;
25350#endif
25351}
25352PRESERVE_NONE
25353static bool Interp_GetGlobalUint64(InterpState &S, CodePtr &PC) {
25354 {
25355 CodePtr OpPC = PC;
25356 const auto V0 = ReadArg<uint32_t>(S, PC);
25357 if (!GetGlobal<PT_Uint64>(S, OpPC, V0)) return false;
25358 }
25359#if USE_TAILCALLS
25360 MUSTTAIL return InterpNext(S, PC);
25361#else
25362 return true;
25363#endif
25364}
25365PRESERVE_NONE
25366static bool Interp_GetGlobalIntAP(InterpState &S, CodePtr &PC) {
25367 {
25368 CodePtr OpPC = PC;
25369 const auto V0 = ReadArg<uint32_t>(S, PC);
25370 if (!GetGlobal<PT_IntAP>(S, OpPC, V0)) return false;
25371 }
25372#if USE_TAILCALLS
25373 MUSTTAIL return InterpNext(S, PC);
25374#else
25375 return true;
25376#endif
25377}
25378PRESERVE_NONE
25379static bool Interp_GetGlobalIntAPS(InterpState &S, CodePtr &PC) {
25380 {
25381 CodePtr OpPC = PC;
25382 const auto V0 = ReadArg<uint32_t>(S, PC);
25383 if (!GetGlobal<PT_IntAPS>(S, OpPC, V0)) return false;
25384 }
25385#if USE_TAILCALLS
25386 MUSTTAIL return InterpNext(S, PC);
25387#else
25388 return true;
25389#endif
25390}
25391PRESERVE_NONE
25392static bool Interp_GetGlobalBool(InterpState &S, CodePtr &PC) {
25393 {
25394 CodePtr OpPC = PC;
25395 const auto V0 = ReadArg<uint32_t>(S, PC);
25396 if (!GetGlobal<PT_Bool>(S, OpPC, V0)) return false;
25397 }
25398#if USE_TAILCALLS
25399 MUSTTAIL return InterpNext(S, PC);
25400#else
25401 return true;
25402#endif
25403}
25404PRESERVE_NONE
25405static bool Interp_GetGlobalFixedPoint(InterpState &S, CodePtr &PC) {
25406 {
25407 CodePtr OpPC = PC;
25408 const auto V0 = ReadArg<uint32_t>(S, PC);
25409 if (!GetGlobal<PT_FixedPoint>(S, OpPC, V0)) return false;
25410 }
25411#if USE_TAILCALLS
25412 MUSTTAIL return InterpNext(S, PC);
25413#else
25414 return true;
25415#endif
25416}
25417PRESERVE_NONE
25418static bool Interp_GetGlobalPtr(InterpState &S, CodePtr &PC) {
25419 {
25420 CodePtr OpPC = PC;
25421 const auto V0 = ReadArg<uint32_t>(S, PC);
25422 if (!GetGlobal<PT_Ptr>(S, OpPC, V0)) return false;
25423 }
25424#if USE_TAILCALLS
25425 MUSTTAIL return InterpNext(S, PC);
25426#else
25427 return true;
25428#endif
25429}
25430PRESERVE_NONE
25431static bool Interp_GetGlobalMemberPtr(InterpState &S, CodePtr &PC) {
25432 {
25433 CodePtr OpPC = PC;
25434 const auto V0 = ReadArg<uint32_t>(S, PC);
25435 if (!GetGlobal<PT_MemberPtr>(S, OpPC, V0)) return false;
25436 }
25437#if USE_TAILCALLS
25438 MUSTTAIL return InterpNext(S, PC);
25439#else
25440 return true;
25441#endif
25442}
25443PRESERVE_NONE
25444static bool Interp_GetGlobalFloat(InterpState &S, CodePtr &PC) {
25445 {
25446 CodePtr OpPC = PC;
25447 const auto V0 = ReadArg<uint32_t>(S, PC);
25448 if (!GetGlobal<PT_Float>(S, OpPC, V0)) return false;
25449 }
25450#if USE_TAILCALLS
25451 MUSTTAIL return InterpNext(S, PC);
25452#else
25453 return true;
25454#endif
25455}
25456#endif
25457#ifdef GET_DISASM
25458case OP_GetGlobalSint8:
25459 Text.Op = PrintName("GetGlobalSint8");
25460 Text.Args.push_back(printArg<uint32_t>(P, PC));
25461 break;
25462case OP_GetGlobalUint8:
25463 Text.Op = PrintName("GetGlobalUint8");
25464 Text.Args.push_back(printArg<uint32_t>(P, PC));
25465 break;
25466case OP_GetGlobalSint16:
25467 Text.Op = PrintName("GetGlobalSint16");
25468 Text.Args.push_back(printArg<uint32_t>(P, PC));
25469 break;
25470case OP_GetGlobalUint16:
25471 Text.Op = PrintName("GetGlobalUint16");
25472 Text.Args.push_back(printArg<uint32_t>(P, PC));
25473 break;
25474case OP_GetGlobalSint32:
25475 Text.Op = PrintName("GetGlobalSint32");
25476 Text.Args.push_back(printArg<uint32_t>(P, PC));
25477 break;
25478case OP_GetGlobalUint32:
25479 Text.Op = PrintName("GetGlobalUint32");
25480 Text.Args.push_back(printArg<uint32_t>(P, PC));
25481 break;
25482case OP_GetGlobalSint64:
25483 Text.Op = PrintName("GetGlobalSint64");
25484 Text.Args.push_back(printArg<uint32_t>(P, PC));
25485 break;
25486case OP_GetGlobalUint64:
25487 Text.Op = PrintName("GetGlobalUint64");
25488 Text.Args.push_back(printArg<uint32_t>(P, PC));
25489 break;
25490case OP_GetGlobalIntAP:
25491 Text.Op = PrintName("GetGlobalIntAP");
25492 Text.Args.push_back(printArg<uint32_t>(P, PC));
25493 break;
25494case OP_GetGlobalIntAPS:
25495 Text.Op = PrintName("GetGlobalIntAPS");
25496 Text.Args.push_back(printArg<uint32_t>(P, PC));
25497 break;
25498case OP_GetGlobalBool:
25499 Text.Op = PrintName("GetGlobalBool");
25500 Text.Args.push_back(printArg<uint32_t>(P, PC));
25501 break;
25502case OP_GetGlobalFixedPoint:
25503 Text.Op = PrintName("GetGlobalFixedPoint");
25504 Text.Args.push_back(printArg<uint32_t>(P, PC));
25505 break;
25506case OP_GetGlobalPtr:
25507 Text.Op = PrintName("GetGlobalPtr");
25508 Text.Args.push_back(printArg<uint32_t>(P, PC));
25509 break;
25510case OP_GetGlobalMemberPtr:
25511 Text.Op = PrintName("GetGlobalMemberPtr");
25512 Text.Args.push_back(printArg<uint32_t>(P, PC));
25513 break;
25514case OP_GetGlobalFloat:
25515 Text.Op = PrintName("GetGlobalFloat");
25516 Text.Args.push_back(printArg<uint32_t>(P, PC));
25517 break;
25518#endif
25519#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25520bool emitGetGlobalSint8( uint32_t , SourceInfo);
25521bool emitGetGlobalUint8( uint32_t , SourceInfo);
25522bool emitGetGlobalSint16( uint32_t , SourceInfo);
25523bool emitGetGlobalUint16( uint32_t , SourceInfo);
25524bool emitGetGlobalSint32( uint32_t , SourceInfo);
25525bool emitGetGlobalUint32( uint32_t , SourceInfo);
25526bool emitGetGlobalSint64( uint32_t , SourceInfo);
25527bool emitGetGlobalUint64( uint32_t , SourceInfo);
25528bool emitGetGlobalIntAP( uint32_t , SourceInfo);
25529bool emitGetGlobalIntAPS( uint32_t , SourceInfo);
25530bool emitGetGlobalBool( uint32_t , SourceInfo);
25531bool emitGetGlobalFixedPoint( uint32_t , SourceInfo);
25532bool emitGetGlobalPtr( uint32_t , SourceInfo);
25533bool emitGetGlobalMemberPtr( uint32_t , SourceInfo);
25534bool emitGetGlobalFloat( uint32_t , SourceInfo);
25535#endif
25536#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25537[[nodiscard]] bool emitGetGlobal(PrimType, uint32_t, SourceInfo I);
25538#endif
25539#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
25540bool
25541#if defined(GET_EVAL_IMPL)
25542EvalEmitter
25543#else
25544ByteCodeEmitter
25545#endif
25546::emitGetGlobal(PrimType T0, uint32_t A0, SourceInfo I) {
25547 switch (T0) {
25548 case PT_Sint8:
25549 return emitGetGlobalSint8(A0, I);
25550 case PT_Uint8:
25551 return emitGetGlobalUint8(A0, I);
25552 case PT_Sint16:
25553 return emitGetGlobalSint16(A0, I);
25554 case PT_Uint16:
25555 return emitGetGlobalUint16(A0, I);
25556 case PT_Sint32:
25557 return emitGetGlobalSint32(A0, I);
25558 case PT_Uint32:
25559 return emitGetGlobalUint32(A0, I);
25560 case PT_Sint64:
25561 return emitGetGlobalSint64(A0, I);
25562 case PT_Uint64:
25563 return emitGetGlobalUint64(A0, I);
25564 case PT_IntAP:
25565 return emitGetGlobalIntAP(A0, I);
25566 case PT_IntAPS:
25567 return emitGetGlobalIntAPS(A0, I);
25568 case PT_Bool:
25569 return emitGetGlobalBool(A0, I);
25570 case PT_FixedPoint:
25571 return emitGetGlobalFixedPoint(A0, I);
25572 case PT_Ptr:
25573 return emitGetGlobalPtr(A0, I);
25574 case PT_MemberPtr:
25575 return emitGetGlobalMemberPtr(A0, I);
25576 case PT_Float:
25577 return emitGetGlobalFloat(A0, I);
25578 }
25579 llvm_unreachable("invalid enum value");
25580}
25581#endif
25582#ifdef GET_LINK_IMPL
25583bool ByteCodeEmitter::emitGetGlobalSint8( uint32_t A0, SourceInfo L) {
25584 return emitOp<uint32_t>(OP_GetGlobalSint8, A0, L);
25585}
25586bool ByteCodeEmitter::emitGetGlobalUint8( uint32_t A0, SourceInfo L) {
25587 return emitOp<uint32_t>(OP_GetGlobalUint8, A0, L);
25588}
25589bool ByteCodeEmitter::emitGetGlobalSint16( uint32_t A0, SourceInfo L) {
25590 return emitOp<uint32_t>(OP_GetGlobalSint16, A0, L);
25591}
25592bool ByteCodeEmitter::emitGetGlobalUint16( uint32_t A0, SourceInfo L) {
25593 return emitOp<uint32_t>(OP_GetGlobalUint16, A0, L);
25594}
25595bool ByteCodeEmitter::emitGetGlobalSint32( uint32_t A0, SourceInfo L) {
25596 return emitOp<uint32_t>(OP_GetGlobalSint32, A0, L);
25597}
25598bool ByteCodeEmitter::emitGetGlobalUint32( uint32_t A0, SourceInfo L) {
25599 return emitOp<uint32_t>(OP_GetGlobalUint32, A0, L);
25600}
25601bool ByteCodeEmitter::emitGetGlobalSint64( uint32_t A0, SourceInfo L) {
25602 return emitOp<uint32_t>(OP_GetGlobalSint64, A0, L);
25603}
25604bool ByteCodeEmitter::emitGetGlobalUint64( uint32_t A0, SourceInfo L) {
25605 return emitOp<uint32_t>(OP_GetGlobalUint64, A0, L);
25606}
25607bool ByteCodeEmitter::emitGetGlobalIntAP( uint32_t A0, SourceInfo L) {
25608 return emitOp<uint32_t>(OP_GetGlobalIntAP, A0, L);
25609}
25610bool ByteCodeEmitter::emitGetGlobalIntAPS( uint32_t A0, SourceInfo L) {
25611 return emitOp<uint32_t>(OP_GetGlobalIntAPS, A0, L);
25612}
25613bool ByteCodeEmitter::emitGetGlobalBool( uint32_t A0, SourceInfo L) {
25614 return emitOp<uint32_t>(OP_GetGlobalBool, A0, L);
25615}
25616bool ByteCodeEmitter::emitGetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
25617 return emitOp<uint32_t>(OP_GetGlobalFixedPoint, A0, L);
25618}
25619bool ByteCodeEmitter::emitGetGlobalPtr( uint32_t A0, SourceInfo L) {
25620 return emitOp<uint32_t>(OP_GetGlobalPtr, A0, L);
25621}
25622bool ByteCodeEmitter::emitGetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
25623 return emitOp<uint32_t>(OP_GetGlobalMemberPtr, A0, L);
25624}
25625bool ByteCodeEmitter::emitGetGlobalFloat( uint32_t A0, SourceInfo L) {
25626 return emitOp<uint32_t>(OP_GetGlobalFloat, A0, L);
25627}
25628#endif
25629#ifdef GET_EVAL_IMPL
25630bool EvalEmitter::emitGetGlobalSint8( uint32_t A0, SourceInfo L) {
25631 if (!isActive()) return true;
25632 CurrentSource = L;
25633 return GetGlobal<PT_Sint8>(S, OpPC, A0);
25634}
25635bool EvalEmitter::emitGetGlobalUint8( uint32_t A0, SourceInfo L) {
25636 if (!isActive()) return true;
25637 CurrentSource = L;
25638 return GetGlobal<PT_Uint8>(S, OpPC, A0);
25639}
25640bool EvalEmitter::emitGetGlobalSint16( uint32_t A0, SourceInfo L) {
25641 if (!isActive()) return true;
25642 CurrentSource = L;
25643 return GetGlobal<PT_Sint16>(S, OpPC, A0);
25644}
25645bool EvalEmitter::emitGetGlobalUint16( uint32_t A0, SourceInfo L) {
25646 if (!isActive()) return true;
25647 CurrentSource = L;
25648 return GetGlobal<PT_Uint16>(S, OpPC, A0);
25649}
25650bool EvalEmitter::emitGetGlobalSint32( uint32_t A0, SourceInfo L) {
25651 if (!isActive()) return true;
25652 CurrentSource = L;
25653 return GetGlobal<PT_Sint32>(S, OpPC, A0);
25654}
25655bool EvalEmitter::emitGetGlobalUint32( uint32_t A0, SourceInfo L) {
25656 if (!isActive()) return true;
25657 CurrentSource = L;
25658 return GetGlobal<PT_Uint32>(S, OpPC, A0);
25659}
25660bool EvalEmitter::emitGetGlobalSint64( uint32_t A0, SourceInfo L) {
25661 if (!isActive()) return true;
25662 CurrentSource = L;
25663 return GetGlobal<PT_Sint64>(S, OpPC, A0);
25664}
25665bool EvalEmitter::emitGetGlobalUint64( uint32_t A0, SourceInfo L) {
25666 if (!isActive()) return true;
25667 CurrentSource = L;
25668 return GetGlobal<PT_Uint64>(S, OpPC, A0);
25669}
25670bool EvalEmitter::emitGetGlobalIntAP( uint32_t A0, SourceInfo L) {
25671 if (!isActive()) return true;
25672 CurrentSource = L;
25673 return GetGlobal<PT_IntAP>(S, OpPC, A0);
25674}
25675bool EvalEmitter::emitGetGlobalIntAPS( uint32_t A0, SourceInfo L) {
25676 if (!isActive()) return true;
25677 CurrentSource = L;
25678 return GetGlobal<PT_IntAPS>(S, OpPC, A0);
25679}
25680bool EvalEmitter::emitGetGlobalBool( uint32_t A0, SourceInfo L) {
25681 if (!isActive()) return true;
25682 CurrentSource = L;
25683 return GetGlobal<PT_Bool>(S, OpPC, A0);
25684}
25685bool EvalEmitter::emitGetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
25686 if (!isActive()) return true;
25687 CurrentSource = L;
25688 return GetGlobal<PT_FixedPoint>(S, OpPC, A0);
25689}
25690bool EvalEmitter::emitGetGlobalPtr( uint32_t A0, SourceInfo L) {
25691 if (!isActive()) return true;
25692 CurrentSource = L;
25693 return GetGlobal<PT_Ptr>(S, OpPC, A0);
25694}
25695bool EvalEmitter::emitGetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
25696 if (!isActive()) return true;
25697 CurrentSource = L;
25698 return GetGlobal<PT_MemberPtr>(S, OpPC, A0);
25699}
25700bool EvalEmitter::emitGetGlobalFloat( uint32_t A0, SourceInfo L) {
25701 if (!isActive()) return true;
25702 CurrentSource = L;
25703 return GetGlobal<PT_Float>(S, OpPC, A0);
25704}
25705#endif
25706#ifdef GET_OPCODE_NAMES
25707OP_GetGlobalUncheckedSint8,
25708OP_GetGlobalUncheckedUint8,
25709OP_GetGlobalUncheckedSint16,
25710OP_GetGlobalUncheckedUint16,
25711OP_GetGlobalUncheckedSint32,
25712OP_GetGlobalUncheckedUint32,
25713OP_GetGlobalUncheckedSint64,
25714OP_GetGlobalUncheckedUint64,
25715OP_GetGlobalUncheckedIntAP,
25716OP_GetGlobalUncheckedIntAPS,
25717OP_GetGlobalUncheckedBool,
25718OP_GetGlobalUncheckedFixedPoint,
25719OP_GetGlobalUncheckedPtr,
25720OP_GetGlobalUncheckedMemberPtr,
25721OP_GetGlobalUncheckedFloat,
25722#endif
25723#ifdef GET_INTERPFN_LIST
25724&Interp_GetGlobalUncheckedSint8,
25725&Interp_GetGlobalUncheckedUint8,
25726&Interp_GetGlobalUncheckedSint16,
25727&Interp_GetGlobalUncheckedUint16,
25728&Interp_GetGlobalUncheckedSint32,
25729&Interp_GetGlobalUncheckedUint32,
25730&Interp_GetGlobalUncheckedSint64,
25731&Interp_GetGlobalUncheckedUint64,
25732&Interp_GetGlobalUncheckedIntAP,
25733&Interp_GetGlobalUncheckedIntAPS,
25734&Interp_GetGlobalUncheckedBool,
25735&Interp_GetGlobalUncheckedFixedPoint,
25736&Interp_GetGlobalUncheckedPtr,
25737&Interp_GetGlobalUncheckedMemberPtr,
25738&Interp_GetGlobalUncheckedFloat,
25739#endif
25740#ifdef GET_INTERPFN_DISPATCHERS
25741PRESERVE_NONE
25742static bool Interp_GetGlobalUncheckedSint8(InterpState &S, CodePtr &PC) {
25743 {
25744 CodePtr OpPC = PC;
25745 const auto V0 = ReadArg<uint32_t>(S, PC);
25746 if (!GetGlobalUnchecked<PT_Sint8>(S, OpPC, V0)) return false;
25747 }
25748#if USE_TAILCALLS
25749 MUSTTAIL return InterpNext(S, PC);
25750#else
25751 return true;
25752#endif
25753}
25754PRESERVE_NONE
25755static bool Interp_GetGlobalUncheckedUint8(InterpState &S, CodePtr &PC) {
25756 {
25757 CodePtr OpPC = PC;
25758 const auto V0 = ReadArg<uint32_t>(S, PC);
25759 if (!GetGlobalUnchecked<PT_Uint8>(S, OpPC, V0)) return false;
25760 }
25761#if USE_TAILCALLS
25762 MUSTTAIL return InterpNext(S, PC);
25763#else
25764 return true;
25765#endif
25766}
25767PRESERVE_NONE
25768static bool Interp_GetGlobalUncheckedSint16(InterpState &S, CodePtr &PC) {
25769 {
25770 CodePtr OpPC = PC;
25771 const auto V0 = ReadArg<uint32_t>(S, PC);
25772 if (!GetGlobalUnchecked<PT_Sint16>(S, OpPC, V0)) return false;
25773 }
25774#if USE_TAILCALLS
25775 MUSTTAIL return InterpNext(S, PC);
25776#else
25777 return true;
25778#endif
25779}
25780PRESERVE_NONE
25781static bool Interp_GetGlobalUncheckedUint16(InterpState &S, CodePtr &PC) {
25782 {
25783 CodePtr OpPC = PC;
25784 const auto V0 = ReadArg<uint32_t>(S, PC);
25785 if (!GetGlobalUnchecked<PT_Uint16>(S, OpPC, V0)) return false;
25786 }
25787#if USE_TAILCALLS
25788 MUSTTAIL return InterpNext(S, PC);
25789#else
25790 return true;
25791#endif
25792}
25793PRESERVE_NONE
25794static bool Interp_GetGlobalUncheckedSint32(InterpState &S, CodePtr &PC) {
25795 {
25796 CodePtr OpPC = PC;
25797 const auto V0 = ReadArg<uint32_t>(S, PC);
25798 if (!GetGlobalUnchecked<PT_Sint32>(S, OpPC, V0)) return false;
25799 }
25800#if USE_TAILCALLS
25801 MUSTTAIL return InterpNext(S, PC);
25802#else
25803 return true;
25804#endif
25805}
25806PRESERVE_NONE
25807static bool Interp_GetGlobalUncheckedUint32(InterpState &S, CodePtr &PC) {
25808 {
25809 CodePtr OpPC = PC;
25810 const auto V0 = ReadArg<uint32_t>(S, PC);
25811 if (!GetGlobalUnchecked<PT_Uint32>(S, OpPC, V0)) return false;
25812 }
25813#if USE_TAILCALLS
25814 MUSTTAIL return InterpNext(S, PC);
25815#else
25816 return true;
25817#endif
25818}
25819PRESERVE_NONE
25820static bool Interp_GetGlobalUncheckedSint64(InterpState &S, CodePtr &PC) {
25821 {
25822 CodePtr OpPC = PC;
25823 const auto V0 = ReadArg<uint32_t>(S, PC);
25824 if (!GetGlobalUnchecked<PT_Sint64>(S, OpPC, V0)) return false;
25825 }
25826#if USE_TAILCALLS
25827 MUSTTAIL return InterpNext(S, PC);
25828#else
25829 return true;
25830#endif
25831}
25832PRESERVE_NONE
25833static bool Interp_GetGlobalUncheckedUint64(InterpState &S, CodePtr &PC) {
25834 {
25835 CodePtr OpPC = PC;
25836 const auto V0 = ReadArg<uint32_t>(S, PC);
25837 if (!GetGlobalUnchecked<PT_Uint64>(S, OpPC, V0)) return false;
25838 }
25839#if USE_TAILCALLS
25840 MUSTTAIL return InterpNext(S, PC);
25841#else
25842 return true;
25843#endif
25844}
25845PRESERVE_NONE
25846static bool Interp_GetGlobalUncheckedIntAP(InterpState &S, CodePtr &PC) {
25847 {
25848 CodePtr OpPC = PC;
25849 const auto V0 = ReadArg<uint32_t>(S, PC);
25850 if (!GetGlobalUnchecked<PT_IntAP>(S, OpPC, V0)) return false;
25851 }
25852#if USE_TAILCALLS
25853 MUSTTAIL return InterpNext(S, PC);
25854#else
25855 return true;
25856#endif
25857}
25858PRESERVE_NONE
25859static bool Interp_GetGlobalUncheckedIntAPS(InterpState &S, CodePtr &PC) {
25860 {
25861 CodePtr OpPC = PC;
25862 const auto V0 = ReadArg<uint32_t>(S, PC);
25863 if (!GetGlobalUnchecked<PT_IntAPS>(S, OpPC, V0)) return false;
25864 }
25865#if USE_TAILCALLS
25866 MUSTTAIL return InterpNext(S, PC);
25867#else
25868 return true;
25869#endif
25870}
25871PRESERVE_NONE
25872static bool Interp_GetGlobalUncheckedBool(InterpState &S, CodePtr &PC) {
25873 {
25874 CodePtr OpPC = PC;
25875 const auto V0 = ReadArg<uint32_t>(S, PC);
25876 if (!GetGlobalUnchecked<PT_Bool>(S, OpPC, V0)) return false;
25877 }
25878#if USE_TAILCALLS
25879 MUSTTAIL return InterpNext(S, PC);
25880#else
25881 return true;
25882#endif
25883}
25884PRESERVE_NONE
25885static bool Interp_GetGlobalUncheckedFixedPoint(InterpState &S, CodePtr &PC) {
25886 {
25887 CodePtr OpPC = PC;
25888 const auto V0 = ReadArg<uint32_t>(S, PC);
25889 if (!GetGlobalUnchecked<PT_FixedPoint>(S, OpPC, V0)) return false;
25890 }
25891#if USE_TAILCALLS
25892 MUSTTAIL return InterpNext(S, PC);
25893#else
25894 return true;
25895#endif
25896}
25897PRESERVE_NONE
25898static bool Interp_GetGlobalUncheckedPtr(InterpState &S, CodePtr &PC) {
25899 {
25900 CodePtr OpPC = PC;
25901 const auto V0 = ReadArg<uint32_t>(S, PC);
25902 if (!GetGlobalUnchecked<PT_Ptr>(S, OpPC, V0)) return false;
25903 }
25904#if USE_TAILCALLS
25905 MUSTTAIL return InterpNext(S, PC);
25906#else
25907 return true;
25908#endif
25909}
25910PRESERVE_NONE
25911static bool Interp_GetGlobalUncheckedMemberPtr(InterpState &S, CodePtr &PC) {
25912 {
25913 CodePtr OpPC = PC;
25914 const auto V0 = ReadArg<uint32_t>(S, PC);
25915 if (!GetGlobalUnchecked<PT_MemberPtr>(S, OpPC, V0)) return false;
25916 }
25917#if USE_TAILCALLS
25918 MUSTTAIL return InterpNext(S, PC);
25919#else
25920 return true;
25921#endif
25922}
25923PRESERVE_NONE
25924static bool Interp_GetGlobalUncheckedFloat(InterpState &S, CodePtr &PC) {
25925 {
25926 CodePtr OpPC = PC;
25927 const auto V0 = ReadArg<uint32_t>(S, PC);
25928 if (!GetGlobalUnchecked<PT_Float>(S, OpPC, V0)) return false;
25929 }
25930#if USE_TAILCALLS
25931 MUSTTAIL return InterpNext(S, PC);
25932#else
25933 return true;
25934#endif
25935}
25936#endif
25937#ifdef GET_DISASM
25938case OP_GetGlobalUncheckedSint8:
25939 Text.Op = PrintName("GetGlobalUncheckedSint8");
25940 Text.Args.push_back(printArg<uint32_t>(P, PC));
25941 break;
25942case OP_GetGlobalUncheckedUint8:
25943 Text.Op = PrintName("GetGlobalUncheckedUint8");
25944 Text.Args.push_back(printArg<uint32_t>(P, PC));
25945 break;
25946case OP_GetGlobalUncheckedSint16:
25947 Text.Op = PrintName("GetGlobalUncheckedSint16");
25948 Text.Args.push_back(printArg<uint32_t>(P, PC));
25949 break;
25950case OP_GetGlobalUncheckedUint16:
25951 Text.Op = PrintName("GetGlobalUncheckedUint16");
25952 Text.Args.push_back(printArg<uint32_t>(P, PC));
25953 break;
25954case OP_GetGlobalUncheckedSint32:
25955 Text.Op = PrintName("GetGlobalUncheckedSint32");
25956 Text.Args.push_back(printArg<uint32_t>(P, PC));
25957 break;
25958case OP_GetGlobalUncheckedUint32:
25959 Text.Op = PrintName("GetGlobalUncheckedUint32");
25960 Text.Args.push_back(printArg<uint32_t>(P, PC));
25961 break;
25962case OP_GetGlobalUncheckedSint64:
25963 Text.Op = PrintName("GetGlobalUncheckedSint64");
25964 Text.Args.push_back(printArg<uint32_t>(P, PC));
25965 break;
25966case OP_GetGlobalUncheckedUint64:
25967 Text.Op = PrintName("GetGlobalUncheckedUint64");
25968 Text.Args.push_back(printArg<uint32_t>(P, PC));
25969 break;
25970case OP_GetGlobalUncheckedIntAP:
25971 Text.Op = PrintName("GetGlobalUncheckedIntAP");
25972 Text.Args.push_back(printArg<uint32_t>(P, PC));
25973 break;
25974case OP_GetGlobalUncheckedIntAPS:
25975 Text.Op = PrintName("GetGlobalUncheckedIntAPS");
25976 Text.Args.push_back(printArg<uint32_t>(P, PC));
25977 break;
25978case OP_GetGlobalUncheckedBool:
25979 Text.Op = PrintName("GetGlobalUncheckedBool");
25980 Text.Args.push_back(printArg<uint32_t>(P, PC));
25981 break;
25982case OP_GetGlobalUncheckedFixedPoint:
25983 Text.Op = PrintName("GetGlobalUncheckedFixedPoint");
25984 Text.Args.push_back(printArg<uint32_t>(P, PC));
25985 break;
25986case OP_GetGlobalUncheckedPtr:
25987 Text.Op = PrintName("GetGlobalUncheckedPtr");
25988 Text.Args.push_back(printArg<uint32_t>(P, PC));
25989 break;
25990case OP_GetGlobalUncheckedMemberPtr:
25991 Text.Op = PrintName("GetGlobalUncheckedMemberPtr");
25992 Text.Args.push_back(printArg<uint32_t>(P, PC));
25993 break;
25994case OP_GetGlobalUncheckedFloat:
25995 Text.Op = PrintName("GetGlobalUncheckedFloat");
25996 Text.Args.push_back(printArg<uint32_t>(P, PC));
25997 break;
25998#endif
25999#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26000bool emitGetGlobalUncheckedSint8( uint32_t , SourceInfo);
26001bool emitGetGlobalUncheckedUint8( uint32_t , SourceInfo);
26002bool emitGetGlobalUncheckedSint16( uint32_t , SourceInfo);
26003bool emitGetGlobalUncheckedUint16( uint32_t , SourceInfo);
26004bool emitGetGlobalUncheckedSint32( uint32_t , SourceInfo);
26005bool emitGetGlobalUncheckedUint32( uint32_t , SourceInfo);
26006bool emitGetGlobalUncheckedSint64( uint32_t , SourceInfo);
26007bool emitGetGlobalUncheckedUint64( uint32_t , SourceInfo);
26008bool emitGetGlobalUncheckedIntAP( uint32_t , SourceInfo);
26009bool emitGetGlobalUncheckedIntAPS( uint32_t , SourceInfo);
26010bool emitGetGlobalUncheckedBool( uint32_t , SourceInfo);
26011bool emitGetGlobalUncheckedFixedPoint( uint32_t , SourceInfo);
26012bool emitGetGlobalUncheckedPtr( uint32_t , SourceInfo);
26013bool emitGetGlobalUncheckedMemberPtr( uint32_t , SourceInfo);
26014bool emitGetGlobalUncheckedFloat( uint32_t , SourceInfo);
26015#endif
26016#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26017[[nodiscard]] bool emitGetGlobalUnchecked(PrimType, uint32_t, SourceInfo I);
26018#endif
26019#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
26020bool
26021#if defined(GET_EVAL_IMPL)
26022EvalEmitter
26023#else
26024ByteCodeEmitter
26025#endif
26026::emitGetGlobalUnchecked(PrimType T0, uint32_t A0, SourceInfo I) {
26027 switch (T0) {
26028 case PT_Sint8:
26029 return emitGetGlobalUncheckedSint8(A0, I);
26030 case PT_Uint8:
26031 return emitGetGlobalUncheckedUint8(A0, I);
26032 case PT_Sint16:
26033 return emitGetGlobalUncheckedSint16(A0, I);
26034 case PT_Uint16:
26035 return emitGetGlobalUncheckedUint16(A0, I);
26036 case PT_Sint32:
26037 return emitGetGlobalUncheckedSint32(A0, I);
26038 case PT_Uint32:
26039 return emitGetGlobalUncheckedUint32(A0, I);
26040 case PT_Sint64:
26041 return emitGetGlobalUncheckedSint64(A0, I);
26042 case PT_Uint64:
26043 return emitGetGlobalUncheckedUint64(A0, I);
26044 case PT_IntAP:
26045 return emitGetGlobalUncheckedIntAP(A0, I);
26046 case PT_IntAPS:
26047 return emitGetGlobalUncheckedIntAPS(A0, I);
26048 case PT_Bool:
26049 return emitGetGlobalUncheckedBool(A0, I);
26050 case PT_FixedPoint:
26051 return emitGetGlobalUncheckedFixedPoint(A0, I);
26052 case PT_Ptr:
26053 return emitGetGlobalUncheckedPtr(A0, I);
26054 case PT_MemberPtr:
26055 return emitGetGlobalUncheckedMemberPtr(A0, I);
26056 case PT_Float:
26057 return emitGetGlobalUncheckedFloat(A0, I);
26058 }
26059 llvm_unreachable("invalid enum value");
26060}
26061#endif
26062#ifdef GET_LINK_IMPL
26063bool ByteCodeEmitter::emitGetGlobalUncheckedSint8( uint32_t A0, SourceInfo L) {
26064 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint8, A0, L);
26065}
26066bool ByteCodeEmitter::emitGetGlobalUncheckedUint8( uint32_t A0, SourceInfo L) {
26067 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint8, A0, L);
26068}
26069bool ByteCodeEmitter::emitGetGlobalUncheckedSint16( uint32_t A0, SourceInfo L) {
26070 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint16, A0, L);
26071}
26072bool ByteCodeEmitter::emitGetGlobalUncheckedUint16( uint32_t A0, SourceInfo L) {
26073 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint16, A0, L);
26074}
26075bool ByteCodeEmitter::emitGetGlobalUncheckedSint32( uint32_t A0, SourceInfo L) {
26076 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint32, A0, L);
26077}
26078bool ByteCodeEmitter::emitGetGlobalUncheckedUint32( uint32_t A0, SourceInfo L) {
26079 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint32, A0, L);
26080}
26081bool ByteCodeEmitter::emitGetGlobalUncheckedSint64( uint32_t A0, SourceInfo L) {
26082 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint64, A0, L);
26083}
26084bool ByteCodeEmitter::emitGetGlobalUncheckedUint64( uint32_t A0, SourceInfo L) {
26085 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint64, A0, L);
26086}
26087bool ByteCodeEmitter::emitGetGlobalUncheckedIntAP( uint32_t A0, SourceInfo L) {
26088 return emitOp<uint32_t>(OP_GetGlobalUncheckedIntAP, A0, L);
26089}
26090bool ByteCodeEmitter::emitGetGlobalUncheckedIntAPS( uint32_t A0, SourceInfo L) {
26091 return emitOp<uint32_t>(OP_GetGlobalUncheckedIntAPS, A0, L);
26092}
26093bool ByteCodeEmitter::emitGetGlobalUncheckedBool( uint32_t A0, SourceInfo L) {
26094 return emitOp<uint32_t>(OP_GetGlobalUncheckedBool, A0, L);
26095}
26096bool ByteCodeEmitter::emitGetGlobalUncheckedFixedPoint( uint32_t A0, SourceInfo L) {
26097 return emitOp<uint32_t>(OP_GetGlobalUncheckedFixedPoint, A0, L);
26098}
26099bool ByteCodeEmitter::emitGetGlobalUncheckedPtr( uint32_t A0, SourceInfo L) {
26100 return emitOp<uint32_t>(OP_GetGlobalUncheckedPtr, A0, L);
26101}
26102bool ByteCodeEmitter::emitGetGlobalUncheckedMemberPtr( uint32_t A0, SourceInfo L) {
26103 return emitOp<uint32_t>(OP_GetGlobalUncheckedMemberPtr, A0, L);
26104}
26105bool ByteCodeEmitter::emitGetGlobalUncheckedFloat( uint32_t A0, SourceInfo L) {
26106 return emitOp<uint32_t>(OP_GetGlobalUncheckedFloat, A0, L);
26107}
26108#endif
26109#ifdef GET_EVAL_IMPL
26110bool EvalEmitter::emitGetGlobalUncheckedSint8( uint32_t A0, SourceInfo L) {
26111 if (!isActive()) return true;
26112 CurrentSource = L;
26113 return GetGlobalUnchecked<PT_Sint8>(S, OpPC, A0);
26114}
26115bool EvalEmitter::emitGetGlobalUncheckedUint8( uint32_t A0, SourceInfo L) {
26116 if (!isActive()) return true;
26117 CurrentSource = L;
26118 return GetGlobalUnchecked<PT_Uint8>(S, OpPC, A0);
26119}
26120bool EvalEmitter::emitGetGlobalUncheckedSint16( uint32_t A0, SourceInfo L) {
26121 if (!isActive()) return true;
26122 CurrentSource = L;
26123 return GetGlobalUnchecked<PT_Sint16>(S, OpPC, A0);
26124}
26125bool EvalEmitter::emitGetGlobalUncheckedUint16( uint32_t A0, SourceInfo L) {
26126 if (!isActive()) return true;
26127 CurrentSource = L;
26128 return GetGlobalUnchecked<PT_Uint16>(S, OpPC, A0);
26129}
26130bool EvalEmitter::emitGetGlobalUncheckedSint32( uint32_t A0, SourceInfo L) {
26131 if (!isActive()) return true;
26132 CurrentSource = L;
26133 return GetGlobalUnchecked<PT_Sint32>(S, OpPC, A0);
26134}
26135bool EvalEmitter::emitGetGlobalUncheckedUint32( uint32_t A0, SourceInfo L) {
26136 if (!isActive()) return true;
26137 CurrentSource = L;
26138 return GetGlobalUnchecked<PT_Uint32>(S, OpPC, A0);
26139}
26140bool EvalEmitter::emitGetGlobalUncheckedSint64( uint32_t A0, SourceInfo L) {
26141 if (!isActive()) return true;
26142 CurrentSource = L;
26143 return GetGlobalUnchecked<PT_Sint64>(S, OpPC, A0);
26144}
26145bool EvalEmitter::emitGetGlobalUncheckedUint64( uint32_t A0, SourceInfo L) {
26146 if (!isActive()) return true;
26147 CurrentSource = L;
26148 return GetGlobalUnchecked<PT_Uint64>(S, OpPC, A0);
26149}
26150bool EvalEmitter::emitGetGlobalUncheckedIntAP( uint32_t A0, SourceInfo L) {
26151 if (!isActive()) return true;
26152 CurrentSource = L;
26153 return GetGlobalUnchecked<PT_IntAP>(S, OpPC, A0);
26154}
26155bool EvalEmitter::emitGetGlobalUncheckedIntAPS( uint32_t A0, SourceInfo L) {
26156 if (!isActive()) return true;
26157 CurrentSource = L;
26158 return GetGlobalUnchecked<PT_IntAPS>(S, OpPC, A0);
26159}
26160bool EvalEmitter::emitGetGlobalUncheckedBool( uint32_t A0, SourceInfo L) {
26161 if (!isActive()) return true;
26162 CurrentSource = L;
26163 return GetGlobalUnchecked<PT_Bool>(S, OpPC, A0);
26164}
26165bool EvalEmitter::emitGetGlobalUncheckedFixedPoint( uint32_t A0, SourceInfo L) {
26166 if (!isActive()) return true;
26167 CurrentSource = L;
26168 return GetGlobalUnchecked<PT_FixedPoint>(S, OpPC, A0);
26169}
26170bool EvalEmitter::emitGetGlobalUncheckedPtr( uint32_t A0, SourceInfo L) {
26171 if (!isActive()) return true;
26172 CurrentSource = L;
26173 return GetGlobalUnchecked<PT_Ptr>(S, OpPC, A0);
26174}
26175bool EvalEmitter::emitGetGlobalUncheckedMemberPtr( uint32_t A0, SourceInfo L) {
26176 if (!isActive()) return true;
26177 CurrentSource = L;
26178 return GetGlobalUnchecked<PT_MemberPtr>(S, OpPC, A0);
26179}
26180bool EvalEmitter::emitGetGlobalUncheckedFloat( uint32_t A0, SourceInfo L) {
26181 if (!isActive()) return true;
26182 CurrentSource = L;
26183 return GetGlobalUnchecked<PT_Float>(S, OpPC, A0);
26184}
26185#endif
26186#ifdef GET_OPCODE_NAMES
26187OP_GetIntPtrSint8,
26188OP_GetIntPtrUint8,
26189OP_GetIntPtrSint16,
26190OP_GetIntPtrUint16,
26191OP_GetIntPtrSint32,
26192OP_GetIntPtrUint32,
26193OP_GetIntPtrSint64,
26194OP_GetIntPtrUint64,
26195OP_GetIntPtrIntAP,
26196OP_GetIntPtrIntAPS,
26197OP_GetIntPtrBool,
26198OP_GetIntPtrFixedPoint,
26199#endif
26200#ifdef GET_INTERPFN_LIST
26201&Interp_GetIntPtrSint8,
26202&Interp_GetIntPtrUint8,
26203&Interp_GetIntPtrSint16,
26204&Interp_GetIntPtrUint16,
26205&Interp_GetIntPtrSint32,
26206&Interp_GetIntPtrUint32,
26207&Interp_GetIntPtrSint64,
26208&Interp_GetIntPtrUint64,
26209&Interp_GetIntPtrIntAP,
26210&Interp_GetIntPtrIntAPS,
26211&Interp_GetIntPtrBool,
26212&Interp_GetIntPtrFixedPoint,
26213#endif
26214#ifdef GET_INTERPFN_DISPATCHERS
26215PRESERVE_NONE
26216static bool Interp_GetIntPtrSint8(InterpState &S, CodePtr &PC) {
26217 {
26218 CodePtr OpPC = PC;
26219 const auto V0 = ReadArg<const Type *>(S, PC);
26220 if (!GetIntPtr<PT_Sint8>(S, OpPC, V0)) return false;
26221 }
26222#if USE_TAILCALLS
26223 MUSTTAIL return InterpNext(S, PC);
26224#else
26225 return true;
26226#endif
26227}
26228PRESERVE_NONE
26229static bool Interp_GetIntPtrUint8(InterpState &S, CodePtr &PC) {
26230 {
26231 CodePtr OpPC = PC;
26232 const auto V0 = ReadArg<const Type *>(S, PC);
26233 if (!GetIntPtr<PT_Uint8>(S, OpPC, V0)) return false;
26234 }
26235#if USE_TAILCALLS
26236 MUSTTAIL return InterpNext(S, PC);
26237#else
26238 return true;
26239#endif
26240}
26241PRESERVE_NONE
26242static bool Interp_GetIntPtrSint16(InterpState &S, CodePtr &PC) {
26243 {
26244 CodePtr OpPC = PC;
26245 const auto V0 = ReadArg<const Type *>(S, PC);
26246 if (!GetIntPtr<PT_Sint16>(S, OpPC, V0)) return false;
26247 }
26248#if USE_TAILCALLS
26249 MUSTTAIL return InterpNext(S, PC);
26250#else
26251 return true;
26252#endif
26253}
26254PRESERVE_NONE
26255static bool Interp_GetIntPtrUint16(InterpState &S, CodePtr &PC) {
26256 {
26257 CodePtr OpPC = PC;
26258 const auto V0 = ReadArg<const Type *>(S, PC);
26259 if (!GetIntPtr<PT_Uint16>(S, OpPC, V0)) return false;
26260 }
26261#if USE_TAILCALLS
26262 MUSTTAIL return InterpNext(S, PC);
26263#else
26264 return true;
26265#endif
26266}
26267PRESERVE_NONE
26268static bool Interp_GetIntPtrSint32(InterpState &S, CodePtr &PC) {
26269 {
26270 CodePtr OpPC = PC;
26271 const auto V0 = ReadArg<const Type *>(S, PC);
26272 if (!GetIntPtr<PT_Sint32>(S, OpPC, V0)) return false;
26273 }
26274#if USE_TAILCALLS
26275 MUSTTAIL return InterpNext(S, PC);
26276#else
26277 return true;
26278#endif
26279}
26280PRESERVE_NONE
26281static bool Interp_GetIntPtrUint32(InterpState &S, CodePtr &PC) {
26282 {
26283 CodePtr OpPC = PC;
26284 const auto V0 = ReadArg<const Type *>(S, PC);
26285 if (!GetIntPtr<PT_Uint32>(S, OpPC, V0)) return false;
26286 }
26287#if USE_TAILCALLS
26288 MUSTTAIL return InterpNext(S, PC);
26289#else
26290 return true;
26291#endif
26292}
26293PRESERVE_NONE
26294static bool Interp_GetIntPtrSint64(InterpState &S, CodePtr &PC) {
26295 {
26296 CodePtr OpPC = PC;
26297 const auto V0 = ReadArg<const Type *>(S, PC);
26298 if (!GetIntPtr<PT_Sint64>(S, OpPC, V0)) return false;
26299 }
26300#if USE_TAILCALLS
26301 MUSTTAIL return InterpNext(S, PC);
26302#else
26303 return true;
26304#endif
26305}
26306PRESERVE_NONE
26307static bool Interp_GetIntPtrUint64(InterpState &S, CodePtr &PC) {
26308 {
26309 CodePtr OpPC = PC;
26310 const auto V0 = ReadArg<const Type *>(S, PC);
26311 if (!GetIntPtr<PT_Uint64>(S, OpPC, V0)) return false;
26312 }
26313#if USE_TAILCALLS
26314 MUSTTAIL return InterpNext(S, PC);
26315#else
26316 return true;
26317#endif
26318}
26319PRESERVE_NONE
26320static bool Interp_GetIntPtrIntAP(InterpState &S, CodePtr &PC) {
26321 {
26322 CodePtr OpPC = PC;
26323 const auto V0 = ReadArg<const Type *>(S, PC);
26324 if (!GetIntPtr<PT_IntAP>(S, OpPC, V0)) return false;
26325 }
26326#if USE_TAILCALLS
26327 MUSTTAIL return InterpNext(S, PC);
26328#else
26329 return true;
26330#endif
26331}
26332PRESERVE_NONE
26333static bool Interp_GetIntPtrIntAPS(InterpState &S, CodePtr &PC) {
26334 {
26335 CodePtr OpPC = PC;
26336 const auto V0 = ReadArg<const Type *>(S, PC);
26337 if (!GetIntPtr<PT_IntAPS>(S, OpPC, V0)) return false;
26338 }
26339#if USE_TAILCALLS
26340 MUSTTAIL return InterpNext(S, PC);
26341#else
26342 return true;
26343#endif
26344}
26345PRESERVE_NONE
26346static bool Interp_GetIntPtrBool(InterpState &S, CodePtr &PC) {
26347 {
26348 CodePtr OpPC = PC;
26349 const auto V0 = ReadArg<const Type *>(S, PC);
26350 if (!GetIntPtr<PT_Bool>(S, OpPC, V0)) return false;
26351 }
26352#if USE_TAILCALLS
26353 MUSTTAIL return InterpNext(S, PC);
26354#else
26355 return true;
26356#endif
26357}
26358PRESERVE_NONE
26359static bool Interp_GetIntPtrFixedPoint(InterpState &S, CodePtr &PC) {
26360 {
26361 CodePtr OpPC = PC;
26362 const auto V0 = ReadArg<const Type *>(S, PC);
26363 if (!GetIntPtr<PT_FixedPoint>(S, OpPC, V0)) return false;
26364 }
26365#if USE_TAILCALLS
26366 MUSTTAIL return InterpNext(S, PC);
26367#else
26368 return true;
26369#endif
26370}
26371#endif
26372#ifdef GET_DISASM
26373case OP_GetIntPtrSint8:
26374 Text.Op = PrintName("GetIntPtrSint8");
26375 Text.Args.push_back(printArg<const Type *>(P, PC));
26376 break;
26377case OP_GetIntPtrUint8:
26378 Text.Op = PrintName("GetIntPtrUint8");
26379 Text.Args.push_back(printArg<const Type *>(P, PC));
26380 break;
26381case OP_GetIntPtrSint16:
26382 Text.Op = PrintName("GetIntPtrSint16");
26383 Text.Args.push_back(printArg<const Type *>(P, PC));
26384 break;
26385case OP_GetIntPtrUint16:
26386 Text.Op = PrintName("GetIntPtrUint16");
26387 Text.Args.push_back(printArg<const Type *>(P, PC));
26388 break;
26389case OP_GetIntPtrSint32:
26390 Text.Op = PrintName("GetIntPtrSint32");
26391 Text.Args.push_back(printArg<const Type *>(P, PC));
26392 break;
26393case OP_GetIntPtrUint32:
26394 Text.Op = PrintName("GetIntPtrUint32");
26395 Text.Args.push_back(printArg<const Type *>(P, PC));
26396 break;
26397case OP_GetIntPtrSint64:
26398 Text.Op = PrintName("GetIntPtrSint64");
26399 Text.Args.push_back(printArg<const Type *>(P, PC));
26400 break;
26401case OP_GetIntPtrUint64:
26402 Text.Op = PrintName("GetIntPtrUint64");
26403 Text.Args.push_back(printArg<const Type *>(P, PC));
26404 break;
26405case OP_GetIntPtrIntAP:
26406 Text.Op = PrintName("GetIntPtrIntAP");
26407 Text.Args.push_back(printArg<const Type *>(P, PC));
26408 break;
26409case OP_GetIntPtrIntAPS:
26410 Text.Op = PrintName("GetIntPtrIntAPS");
26411 Text.Args.push_back(printArg<const Type *>(P, PC));
26412 break;
26413case OP_GetIntPtrBool:
26414 Text.Op = PrintName("GetIntPtrBool");
26415 Text.Args.push_back(printArg<const Type *>(P, PC));
26416 break;
26417case OP_GetIntPtrFixedPoint:
26418 Text.Op = PrintName("GetIntPtrFixedPoint");
26419 Text.Args.push_back(printArg<const Type *>(P, PC));
26420 break;
26421#endif
26422#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26423bool emitGetIntPtrSint8( const Type * , SourceInfo);
26424bool emitGetIntPtrUint8( const Type * , SourceInfo);
26425bool emitGetIntPtrSint16( const Type * , SourceInfo);
26426bool emitGetIntPtrUint16( const Type * , SourceInfo);
26427bool emitGetIntPtrSint32( const Type * , SourceInfo);
26428bool emitGetIntPtrUint32( const Type * , SourceInfo);
26429bool emitGetIntPtrSint64( const Type * , SourceInfo);
26430bool emitGetIntPtrUint64( const Type * , SourceInfo);
26431bool emitGetIntPtrIntAP( const Type * , SourceInfo);
26432bool emitGetIntPtrIntAPS( const Type * , SourceInfo);
26433bool emitGetIntPtrBool( const Type * , SourceInfo);
26434bool emitGetIntPtrFixedPoint( const Type * , SourceInfo);
26435#endif
26436#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26437[[nodiscard]] bool emitGetIntPtr(PrimType, const Type *, SourceInfo I);
26438#endif
26439#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
26440bool
26441#if defined(GET_EVAL_IMPL)
26442EvalEmitter
26443#else
26444ByteCodeEmitter
26445#endif
26446::emitGetIntPtr(PrimType T0, const Type * A0, SourceInfo I) {
26447 switch (T0) {
26448 case PT_Sint8:
26449 return emitGetIntPtrSint8(A0, I);
26450 case PT_Uint8:
26451 return emitGetIntPtrUint8(A0, I);
26452 case PT_Sint16:
26453 return emitGetIntPtrSint16(A0, I);
26454 case PT_Uint16:
26455 return emitGetIntPtrUint16(A0, I);
26456 case PT_Sint32:
26457 return emitGetIntPtrSint32(A0, I);
26458 case PT_Uint32:
26459 return emitGetIntPtrUint32(A0, I);
26460 case PT_Sint64:
26461 return emitGetIntPtrSint64(A0, I);
26462 case PT_Uint64:
26463 return emitGetIntPtrUint64(A0, I);
26464 case PT_IntAP:
26465 return emitGetIntPtrIntAP(A0, I);
26466 case PT_IntAPS:
26467 return emitGetIntPtrIntAPS(A0, I);
26468 case PT_Bool:
26469 return emitGetIntPtrBool(A0, I);
26470 case PT_FixedPoint:
26471 return emitGetIntPtrFixedPoint(A0, I);
26472 default: llvm_unreachable("invalid type: emitGetIntPtr");
26473 }
26474 llvm_unreachable("invalid enum value");
26475}
26476#endif
26477#ifdef GET_LINK_IMPL
26478bool ByteCodeEmitter::emitGetIntPtrSint8( const Type * A0, SourceInfo L) {
26479 return emitOp<const Type *>(OP_GetIntPtrSint8, A0, L);
26480}
26481bool ByteCodeEmitter::emitGetIntPtrUint8( const Type * A0, SourceInfo L) {
26482 return emitOp<const Type *>(OP_GetIntPtrUint8, A0, L);
26483}
26484bool ByteCodeEmitter::emitGetIntPtrSint16( const Type * A0, SourceInfo L) {
26485 return emitOp<const Type *>(OP_GetIntPtrSint16, A0, L);
26486}
26487bool ByteCodeEmitter::emitGetIntPtrUint16( const Type * A0, SourceInfo L) {
26488 return emitOp<const Type *>(OP_GetIntPtrUint16, A0, L);
26489}
26490bool ByteCodeEmitter::emitGetIntPtrSint32( const Type * A0, SourceInfo L) {
26491 return emitOp<const Type *>(OP_GetIntPtrSint32, A0, L);
26492}
26493bool ByteCodeEmitter::emitGetIntPtrUint32( const Type * A0, SourceInfo L) {
26494 return emitOp<const Type *>(OP_GetIntPtrUint32, A0, L);
26495}
26496bool ByteCodeEmitter::emitGetIntPtrSint64( const Type * A0, SourceInfo L) {
26497 return emitOp<const Type *>(OP_GetIntPtrSint64, A0, L);
26498}
26499bool ByteCodeEmitter::emitGetIntPtrUint64( const Type * A0, SourceInfo L) {
26500 return emitOp<const Type *>(OP_GetIntPtrUint64, A0, L);
26501}
26502bool ByteCodeEmitter::emitGetIntPtrIntAP( const Type * A0, SourceInfo L) {
26503 return emitOp<const Type *>(OP_GetIntPtrIntAP, A0, L);
26504}
26505bool ByteCodeEmitter::emitGetIntPtrIntAPS( const Type * A0, SourceInfo L) {
26506 return emitOp<const Type *>(OP_GetIntPtrIntAPS, A0, L);
26507}
26508bool ByteCodeEmitter::emitGetIntPtrBool( const Type * A0, SourceInfo L) {
26509 return emitOp<const Type *>(OP_GetIntPtrBool, A0, L);
26510}
26511bool ByteCodeEmitter::emitGetIntPtrFixedPoint( const Type * A0, SourceInfo L) {
26512 return emitOp<const Type *>(OP_GetIntPtrFixedPoint, A0, L);
26513}
26514#endif
26515#ifdef GET_EVAL_IMPL
26516bool EvalEmitter::emitGetIntPtrSint8( const Type * A0, SourceInfo L) {
26517 if (!isActive()) return true;
26518 CurrentSource = L;
26519 return GetIntPtr<PT_Sint8>(S, OpPC, A0);
26520}
26521bool EvalEmitter::emitGetIntPtrUint8( const Type * A0, SourceInfo L) {
26522 if (!isActive()) return true;
26523 CurrentSource = L;
26524 return GetIntPtr<PT_Uint8>(S, OpPC, A0);
26525}
26526bool EvalEmitter::emitGetIntPtrSint16( const Type * A0, SourceInfo L) {
26527 if (!isActive()) return true;
26528 CurrentSource = L;
26529 return GetIntPtr<PT_Sint16>(S, OpPC, A0);
26530}
26531bool EvalEmitter::emitGetIntPtrUint16( const Type * A0, SourceInfo L) {
26532 if (!isActive()) return true;
26533 CurrentSource = L;
26534 return GetIntPtr<PT_Uint16>(S, OpPC, A0);
26535}
26536bool EvalEmitter::emitGetIntPtrSint32( const Type * A0, SourceInfo L) {
26537 if (!isActive()) return true;
26538 CurrentSource = L;
26539 return GetIntPtr<PT_Sint32>(S, OpPC, A0);
26540}
26541bool EvalEmitter::emitGetIntPtrUint32( const Type * A0, SourceInfo L) {
26542 if (!isActive()) return true;
26543 CurrentSource = L;
26544 return GetIntPtr<PT_Uint32>(S, OpPC, A0);
26545}
26546bool EvalEmitter::emitGetIntPtrSint64( const Type * A0, SourceInfo L) {
26547 if (!isActive()) return true;
26548 CurrentSource = L;
26549 return GetIntPtr<PT_Sint64>(S, OpPC, A0);
26550}
26551bool EvalEmitter::emitGetIntPtrUint64( const Type * A0, SourceInfo L) {
26552 if (!isActive()) return true;
26553 CurrentSource = L;
26554 return GetIntPtr<PT_Uint64>(S, OpPC, A0);
26555}
26556bool EvalEmitter::emitGetIntPtrIntAP( const Type * A0, SourceInfo L) {
26557 if (!isActive()) return true;
26558 CurrentSource = L;
26559 return GetIntPtr<PT_IntAP>(S, OpPC, A0);
26560}
26561bool EvalEmitter::emitGetIntPtrIntAPS( const Type * A0, SourceInfo L) {
26562 if (!isActive()) return true;
26563 CurrentSource = L;
26564 return GetIntPtr<PT_IntAPS>(S, OpPC, A0);
26565}
26566bool EvalEmitter::emitGetIntPtrBool( const Type * A0, SourceInfo L) {
26567 if (!isActive()) return true;
26568 CurrentSource = L;
26569 return GetIntPtr<PT_Bool>(S, OpPC, A0);
26570}
26571bool EvalEmitter::emitGetIntPtrFixedPoint( const Type * A0, SourceInfo L) {
26572 if (!isActive()) return true;
26573 CurrentSource = L;
26574 return GetIntPtr<PT_FixedPoint>(S, OpPC, A0);
26575}
26576#endif
26577#ifdef GET_OPCODE_NAMES
26578OP_GetLocalSint8,
26579OP_GetLocalUint8,
26580OP_GetLocalSint16,
26581OP_GetLocalUint16,
26582OP_GetLocalSint32,
26583OP_GetLocalUint32,
26584OP_GetLocalSint64,
26585OP_GetLocalUint64,
26586OP_GetLocalIntAP,
26587OP_GetLocalIntAPS,
26588OP_GetLocalBool,
26589OP_GetLocalFixedPoint,
26590OP_GetLocalPtr,
26591OP_GetLocalMemberPtr,
26592OP_GetLocalFloat,
26593#endif
26594#ifdef GET_INTERPFN_LIST
26595&Interp_GetLocalSint8,
26596&Interp_GetLocalUint8,
26597&Interp_GetLocalSint16,
26598&Interp_GetLocalUint16,
26599&Interp_GetLocalSint32,
26600&Interp_GetLocalUint32,
26601&Interp_GetLocalSint64,
26602&Interp_GetLocalUint64,
26603&Interp_GetLocalIntAP,
26604&Interp_GetLocalIntAPS,
26605&Interp_GetLocalBool,
26606&Interp_GetLocalFixedPoint,
26607&Interp_GetLocalPtr,
26608&Interp_GetLocalMemberPtr,
26609&Interp_GetLocalFloat,
26610#endif
26611#ifdef GET_INTERPFN_DISPATCHERS
26612PRESERVE_NONE
26613static bool Interp_GetLocalSint8(InterpState &S, CodePtr &PC) {
26614 {
26615 CodePtr OpPC = PC;
26616 const auto V0 = ReadArg<uint32_t>(S, PC);
26617 if (!GetLocal<PT_Sint8>(S, OpPC, V0)) return false;
26618 }
26619#if USE_TAILCALLS
26620 MUSTTAIL return InterpNext(S, PC);
26621#else
26622 return true;
26623#endif
26624}
26625PRESERVE_NONE
26626static bool Interp_GetLocalUint8(InterpState &S, CodePtr &PC) {
26627 {
26628 CodePtr OpPC = PC;
26629 const auto V0 = ReadArg<uint32_t>(S, PC);
26630 if (!GetLocal<PT_Uint8>(S, OpPC, V0)) return false;
26631 }
26632#if USE_TAILCALLS
26633 MUSTTAIL return InterpNext(S, PC);
26634#else
26635 return true;
26636#endif
26637}
26638PRESERVE_NONE
26639static bool Interp_GetLocalSint16(InterpState &S, CodePtr &PC) {
26640 {
26641 CodePtr OpPC = PC;
26642 const auto V0 = ReadArg<uint32_t>(S, PC);
26643 if (!GetLocal<PT_Sint16>(S, OpPC, V0)) return false;
26644 }
26645#if USE_TAILCALLS
26646 MUSTTAIL return InterpNext(S, PC);
26647#else
26648 return true;
26649#endif
26650}
26651PRESERVE_NONE
26652static bool Interp_GetLocalUint16(InterpState &S, CodePtr &PC) {
26653 {
26654 CodePtr OpPC = PC;
26655 const auto V0 = ReadArg<uint32_t>(S, PC);
26656 if (!GetLocal<PT_Uint16>(S, OpPC, V0)) return false;
26657 }
26658#if USE_TAILCALLS
26659 MUSTTAIL return InterpNext(S, PC);
26660#else
26661 return true;
26662#endif
26663}
26664PRESERVE_NONE
26665static bool Interp_GetLocalSint32(InterpState &S, CodePtr &PC) {
26666 {
26667 CodePtr OpPC = PC;
26668 const auto V0 = ReadArg<uint32_t>(S, PC);
26669 if (!GetLocal<PT_Sint32>(S, OpPC, V0)) return false;
26670 }
26671#if USE_TAILCALLS
26672 MUSTTAIL return InterpNext(S, PC);
26673#else
26674 return true;
26675#endif
26676}
26677PRESERVE_NONE
26678static bool Interp_GetLocalUint32(InterpState &S, CodePtr &PC) {
26679 {
26680 CodePtr OpPC = PC;
26681 const auto V0 = ReadArg<uint32_t>(S, PC);
26682 if (!GetLocal<PT_Uint32>(S, OpPC, V0)) return false;
26683 }
26684#if USE_TAILCALLS
26685 MUSTTAIL return InterpNext(S, PC);
26686#else
26687 return true;
26688#endif
26689}
26690PRESERVE_NONE
26691static bool Interp_GetLocalSint64(InterpState &S, CodePtr &PC) {
26692 {
26693 CodePtr OpPC = PC;
26694 const auto V0 = ReadArg<uint32_t>(S, PC);
26695 if (!GetLocal<PT_Sint64>(S, OpPC, V0)) return false;
26696 }
26697#if USE_TAILCALLS
26698 MUSTTAIL return InterpNext(S, PC);
26699#else
26700 return true;
26701#endif
26702}
26703PRESERVE_NONE
26704static bool Interp_GetLocalUint64(InterpState &S, CodePtr &PC) {
26705 {
26706 CodePtr OpPC = PC;
26707 const auto V0 = ReadArg<uint32_t>(S, PC);
26708 if (!GetLocal<PT_Uint64>(S, OpPC, V0)) return false;
26709 }
26710#if USE_TAILCALLS
26711 MUSTTAIL return InterpNext(S, PC);
26712#else
26713 return true;
26714#endif
26715}
26716PRESERVE_NONE
26717static bool Interp_GetLocalIntAP(InterpState &S, CodePtr &PC) {
26718 {
26719 CodePtr OpPC = PC;
26720 const auto V0 = ReadArg<uint32_t>(S, PC);
26721 if (!GetLocal<PT_IntAP>(S, OpPC, V0)) return false;
26722 }
26723#if USE_TAILCALLS
26724 MUSTTAIL return InterpNext(S, PC);
26725#else
26726 return true;
26727#endif
26728}
26729PRESERVE_NONE
26730static bool Interp_GetLocalIntAPS(InterpState &S, CodePtr &PC) {
26731 {
26732 CodePtr OpPC = PC;
26733 const auto V0 = ReadArg<uint32_t>(S, PC);
26734 if (!GetLocal<PT_IntAPS>(S, OpPC, V0)) return false;
26735 }
26736#if USE_TAILCALLS
26737 MUSTTAIL return InterpNext(S, PC);
26738#else
26739 return true;
26740#endif
26741}
26742PRESERVE_NONE
26743static bool Interp_GetLocalBool(InterpState &S, CodePtr &PC) {
26744 {
26745 CodePtr OpPC = PC;
26746 const auto V0 = ReadArg<uint32_t>(S, PC);
26747 if (!GetLocal<PT_Bool>(S, OpPC, V0)) return false;
26748 }
26749#if USE_TAILCALLS
26750 MUSTTAIL return InterpNext(S, PC);
26751#else
26752 return true;
26753#endif
26754}
26755PRESERVE_NONE
26756static bool Interp_GetLocalFixedPoint(InterpState &S, CodePtr &PC) {
26757 {
26758 CodePtr OpPC = PC;
26759 const auto V0 = ReadArg<uint32_t>(S, PC);
26760 if (!GetLocal<PT_FixedPoint>(S, OpPC, V0)) return false;
26761 }
26762#if USE_TAILCALLS
26763 MUSTTAIL return InterpNext(S, PC);
26764#else
26765 return true;
26766#endif
26767}
26768PRESERVE_NONE
26769static bool Interp_GetLocalPtr(InterpState &S, CodePtr &PC) {
26770 {
26771 CodePtr OpPC = PC;
26772 const auto V0 = ReadArg<uint32_t>(S, PC);
26773 if (!GetLocal<PT_Ptr>(S, OpPC, V0)) return false;
26774 }
26775#if USE_TAILCALLS
26776 MUSTTAIL return InterpNext(S, PC);
26777#else
26778 return true;
26779#endif
26780}
26781PRESERVE_NONE
26782static bool Interp_GetLocalMemberPtr(InterpState &S, CodePtr &PC) {
26783 {
26784 CodePtr OpPC = PC;
26785 const auto V0 = ReadArg<uint32_t>(S, PC);
26786 if (!GetLocal<PT_MemberPtr>(S, OpPC, V0)) return false;
26787 }
26788#if USE_TAILCALLS
26789 MUSTTAIL return InterpNext(S, PC);
26790#else
26791 return true;
26792#endif
26793}
26794PRESERVE_NONE
26795static bool Interp_GetLocalFloat(InterpState &S, CodePtr &PC) {
26796 {
26797 CodePtr OpPC = PC;
26798 const auto V0 = ReadArg<uint32_t>(S, PC);
26799 if (!GetLocal<PT_Float>(S, OpPC, V0)) return false;
26800 }
26801#if USE_TAILCALLS
26802 MUSTTAIL return InterpNext(S, PC);
26803#else
26804 return true;
26805#endif
26806}
26807#endif
26808#ifdef GET_DISASM
26809case OP_GetLocalSint8:
26810 Text.Op = PrintName("GetLocalSint8");
26811 Text.Args.push_back(printArg<uint32_t>(P, PC));
26812 break;
26813case OP_GetLocalUint8:
26814 Text.Op = PrintName("GetLocalUint8");
26815 Text.Args.push_back(printArg<uint32_t>(P, PC));
26816 break;
26817case OP_GetLocalSint16:
26818 Text.Op = PrintName("GetLocalSint16");
26819 Text.Args.push_back(printArg<uint32_t>(P, PC));
26820 break;
26821case OP_GetLocalUint16:
26822 Text.Op = PrintName("GetLocalUint16");
26823 Text.Args.push_back(printArg<uint32_t>(P, PC));
26824 break;
26825case OP_GetLocalSint32:
26826 Text.Op = PrintName("GetLocalSint32");
26827 Text.Args.push_back(printArg<uint32_t>(P, PC));
26828 break;
26829case OP_GetLocalUint32:
26830 Text.Op = PrintName("GetLocalUint32");
26831 Text.Args.push_back(printArg<uint32_t>(P, PC));
26832 break;
26833case OP_GetLocalSint64:
26834 Text.Op = PrintName("GetLocalSint64");
26835 Text.Args.push_back(printArg<uint32_t>(P, PC));
26836 break;
26837case OP_GetLocalUint64:
26838 Text.Op = PrintName("GetLocalUint64");
26839 Text.Args.push_back(printArg<uint32_t>(P, PC));
26840 break;
26841case OP_GetLocalIntAP:
26842 Text.Op = PrintName("GetLocalIntAP");
26843 Text.Args.push_back(printArg<uint32_t>(P, PC));
26844 break;
26845case OP_GetLocalIntAPS:
26846 Text.Op = PrintName("GetLocalIntAPS");
26847 Text.Args.push_back(printArg<uint32_t>(P, PC));
26848 break;
26849case OP_GetLocalBool:
26850 Text.Op = PrintName("GetLocalBool");
26851 Text.Args.push_back(printArg<uint32_t>(P, PC));
26852 break;
26853case OP_GetLocalFixedPoint:
26854 Text.Op = PrintName("GetLocalFixedPoint");
26855 Text.Args.push_back(printArg<uint32_t>(P, PC));
26856 break;
26857case OP_GetLocalPtr:
26858 Text.Op = PrintName("GetLocalPtr");
26859 Text.Args.push_back(printArg<uint32_t>(P, PC));
26860 break;
26861case OP_GetLocalMemberPtr:
26862 Text.Op = PrintName("GetLocalMemberPtr");
26863 Text.Args.push_back(printArg<uint32_t>(P, PC));
26864 break;
26865case OP_GetLocalFloat:
26866 Text.Op = PrintName("GetLocalFloat");
26867 Text.Args.push_back(printArg<uint32_t>(P, PC));
26868 break;
26869#endif
26870#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26871bool emitGetLocalSint8( uint32_t , SourceInfo);
26872bool emitGetLocalUint8( uint32_t , SourceInfo);
26873bool emitGetLocalSint16( uint32_t , SourceInfo);
26874bool emitGetLocalUint16( uint32_t , SourceInfo);
26875bool emitGetLocalSint32( uint32_t , SourceInfo);
26876bool emitGetLocalUint32( uint32_t , SourceInfo);
26877bool emitGetLocalSint64( uint32_t , SourceInfo);
26878bool emitGetLocalUint64( uint32_t , SourceInfo);
26879bool emitGetLocalIntAP( uint32_t , SourceInfo);
26880bool emitGetLocalIntAPS( uint32_t , SourceInfo);
26881bool emitGetLocalBool( uint32_t , SourceInfo);
26882bool emitGetLocalFixedPoint( uint32_t , SourceInfo);
26883bool emitGetLocalPtr( uint32_t , SourceInfo);
26884bool emitGetLocalMemberPtr( uint32_t , SourceInfo);
26885bool emitGetLocalFloat( uint32_t , SourceInfo);
26886#if defined(GET_EVAL_PROTO)
26887template<PrimType>
26888bool emitGetLocal(uint32_t, SourceInfo);
26889#endif
26890#endif
26891#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26892[[nodiscard]] bool emitGetLocal(PrimType, uint32_t, SourceInfo I);
26893#endif
26894#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
26895bool
26896#if defined(GET_EVAL_IMPL)
26897EvalEmitter
26898#else
26899ByteCodeEmitter
26900#endif
26901::emitGetLocal(PrimType T0, uint32_t A0, SourceInfo I) {
26902 switch (T0) {
26903 case PT_Sint8:
26904#ifdef GET_LINK_IMPL
26905 return emitGetLocalSint8
26906#else
26907 return emitGetLocal<PT_Sint8>
26908#endif
26909 (A0, I);
26910 case PT_Uint8:
26911#ifdef GET_LINK_IMPL
26912 return emitGetLocalUint8
26913#else
26914 return emitGetLocal<PT_Uint8>
26915#endif
26916 (A0, I);
26917 case PT_Sint16:
26918#ifdef GET_LINK_IMPL
26919 return emitGetLocalSint16
26920#else
26921 return emitGetLocal<PT_Sint16>
26922#endif
26923 (A0, I);
26924 case PT_Uint16:
26925#ifdef GET_LINK_IMPL
26926 return emitGetLocalUint16
26927#else
26928 return emitGetLocal<PT_Uint16>
26929#endif
26930 (A0, I);
26931 case PT_Sint32:
26932#ifdef GET_LINK_IMPL
26933 return emitGetLocalSint32
26934#else
26935 return emitGetLocal<PT_Sint32>
26936#endif
26937 (A0, I);
26938 case PT_Uint32:
26939#ifdef GET_LINK_IMPL
26940 return emitGetLocalUint32
26941#else
26942 return emitGetLocal<PT_Uint32>
26943#endif
26944 (A0, I);
26945 case PT_Sint64:
26946#ifdef GET_LINK_IMPL
26947 return emitGetLocalSint64
26948#else
26949 return emitGetLocal<PT_Sint64>
26950#endif
26951 (A0, I);
26952 case PT_Uint64:
26953#ifdef GET_LINK_IMPL
26954 return emitGetLocalUint64
26955#else
26956 return emitGetLocal<PT_Uint64>
26957#endif
26958 (A0, I);
26959 case PT_IntAP:
26960#ifdef GET_LINK_IMPL
26961 return emitGetLocalIntAP
26962#else
26963 return emitGetLocal<PT_IntAP>
26964#endif
26965 (A0, I);
26966 case PT_IntAPS:
26967#ifdef GET_LINK_IMPL
26968 return emitGetLocalIntAPS
26969#else
26970 return emitGetLocal<PT_IntAPS>
26971#endif
26972 (A0, I);
26973 case PT_Bool:
26974#ifdef GET_LINK_IMPL
26975 return emitGetLocalBool
26976#else
26977 return emitGetLocal<PT_Bool>
26978#endif
26979 (A0, I);
26980 case PT_FixedPoint:
26981#ifdef GET_LINK_IMPL
26982 return emitGetLocalFixedPoint
26983#else
26984 return emitGetLocal<PT_FixedPoint>
26985#endif
26986 (A0, I);
26987 case PT_Ptr:
26988#ifdef GET_LINK_IMPL
26989 return emitGetLocalPtr
26990#else
26991 return emitGetLocal<PT_Ptr>
26992#endif
26993 (A0, I);
26994 case PT_MemberPtr:
26995#ifdef GET_LINK_IMPL
26996 return emitGetLocalMemberPtr
26997#else
26998 return emitGetLocal<PT_MemberPtr>
26999#endif
27000 (A0, I);
27001 case PT_Float:
27002#ifdef GET_LINK_IMPL
27003 return emitGetLocalFloat
27004#else
27005 return emitGetLocal<PT_Float>
27006#endif
27007 (A0, I);
27008 }
27009 llvm_unreachable("invalid enum value");
27010}
27011#endif
27012#ifdef GET_LINK_IMPL
27013bool ByteCodeEmitter::emitGetLocalSint8( uint32_t A0, SourceInfo L) {
27014 return emitOp<uint32_t>(OP_GetLocalSint8, A0, L);
27015}
27016bool ByteCodeEmitter::emitGetLocalUint8( uint32_t A0, SourceInfo L) {
27017 return emitOp<uint32_t>(OP_GetLocalUint8, A0, L);
27018}
27019bool ByteCodeEmitter::emitGetLocalSint16( uint32_t A0, SourceInfo L) {
27020 return emitOp<uint32_t>(OP_GetLocalSint16, A0, L);
27021}
27022bool ByteCodeEmitter::emitGetLocalUint16( uint32_t A0, SourceInfo L) {
27023 return emitOp<uint32_t>(OP_GetLocalUint16, A0, L);
27024}
27025bool ByteCodeEmitter::emitGetLocalSint32( uint32_t A0, SourceInfo L) {
27026 return emitOp<uint32_t>(OP_GetLocalSint32, A0, L);
27027}
27028bool ByteCodeEmitter::emitGetLocalUint32( uint32_t A0, SourceInfo L) {
27029 return emitOp<uint32_t>(OP_GetLocalUint32, A0, L);
27030}
27031bool ByteCodeEmitter::emitGetLocalSint64( uint32_t A0, SourceInfo L) {
27032 return emitOp<uint32_t>(OP_GetLocalSint64, A0, L);
27033}
27034bool ByteCodeEmitter::emitGetLocalUint64( uint32_t A0, SourceInfo L) {
27035 return emitOp<uint32_t>(OP_GetLocalUint64, A0, L);
27036}
27037bool ByteCodeEmitter::emitGetLocalIntAP( uint32_t A0, SourceInfo L) {
27038 return emitOp<uint32_t>(OP_GetLocalIntAP, A0, L);
27039}
27040bool ByteCodeEmitter::emitGetLocalIntAPS( uint32_t A0, SourceInfo L) {
27041 return emitOp<uint32_t>(OP_GetLocalIntAPS, A0, L);
27042}
27043bool ByteCodeEmitter::emitGetLocalBool( uint32_t A0, SourceInfo L) {
27044 return emitOp<uint32_t>(OP_GetLocalBool, A0, L);
27045}
27046bool ByteCodeEmitter::emitGetLocalFixedPoint( uint32_t A0, SourceInfo L) {
27047 return emitOp<uint32_t>(OP_GetLocalFixedPoint, A0, L);
27048}
27049bool ByteCodeEmitter::emitGetLocalPtr( uint32_t A0, SourceInfo L) {
27050 return emitOp<uint32_t>(OP_GetLocalPtr, A0, L);
27051}
27052bool ByteCodeEmitter::emitGetLocalMemberPtr( uint32_t A0, SourceInfo L) {
27053 return emitOp<uint32_t>(OP_GetLocalMemberPtr, A0, L);
27054}
27055bool ByteCodeEmitter::emitGetLocalFloat( uint32_t A0, SourceInfo L) {
27056 return emitOp<uint32_t>(OP_GetLocalFloat, A0, L);
27057}
27058#endif
27059#ifdef GET_OPCODE_NAMES
27060OP_GetLocalEnabled,
27061#endif
27062#ifdef GET_INTERPFN_LIST
27063&Interp_GetLocalEnabled,
27064#endif
27065#ifdef GET_INTERPFN_DISPATCHERS
27066PRESERVE_NONE
27067static bool Interp_GetLocalEnabled(InterpState &S, CodePtr &PC) {
27068 {
27069 CodePtr OpPC = PC;
27070 const auto V0 = ReadArg<uint32_t>(S, PC);
27071 if (!GetLocalEnabled(S, OpPC, V0)) return false;
27072 }
27073#if USE_TAILCALLS
27074 MUSTTAIL return InterpNext(S, PC);
27075#else
27076 return true;
27077#endif
27078}
27079#endif
27080#ifdef GET_DISASM
27081case OP_GetLocalEnabled:
27082 Text.Op = PrintName("GetLocalEnabled");
27083 Text.Args.push_back(printArg<uint32_t>(P, PC));
27084 break;
27085#endif
27086#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27087bool emitGetLocalEnabled( uint32_t , SourceInfo);
27088#endif
27089#ifdef GET_LINK_IMPL
27090bool ByteCodeEmitter::emitGetLocalEnabled( uint32_t A0, SourceInfo L) {
27091 return emitOp<uint32_t>(OP_GetLocalEnabled, A0, L);
27092}
27093#endif
27094#ifdef GET_OPCODE_NAMES
27095OP_GetMemberPtr,
27096#endif
27097#ifdef GET_INTERPFN_LIST
27098&Interp_GetMemberPtr,
27099#endif
27100#ifdef GET_INTERPFN_DISPATCHERS
27101PRESERVE_NONE
27102static bool Interp_GetMemberPtr(InterpState &S, CodePtr &PC) {
27103 {
27104 CodePtr OpPC = PC;
27105 const auto V0 = ReadArg<const ValueDecl*>(S, PC);
27106 GetMemberPtr(S, OpPC, V0);
27107 }
27108#if USE_TAILCALLS
27109 MUSTTAIL return InterpNext(S, PC);
27110#else
27111 return true;
27112#endif
27113}
27114#endif
27115#ifdef GET_DISASM
27116case OP_GetMemberPtr:
27117 Text.Op = PrintName("GetMemberPtr");
27118 Text.Args.push_back(printArg<const ValueDecl*>(P, PC));
27119 break;
27120#endif
27121#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27122bool emitGetMemberPtr( const ValueDecl* , SourceInfo);
27123#endif
27124#ifdef GET_LINK_IMPL
27125bool ByteCodeEmitter::emitGetMemberPtr( const ValueDecl* A0, SourceInfo L) {
27126 return emitOp<const ValueDecl*>(OP_GetMemberPtr, A0, L);
27127}
27128#endif
27129#ifdef GET_EVAL_IMPL
27130bool EvalEmitter::emitGetMemberPtr( const ValueDecl* A0, SourceInfo L) {
27131 if (!isActive()) return true;
27132 CurrentSource = L;
27133 return GetMemberPtr(S, OpPC, A0);
27134}
27135#endif
27136#ifdef GET_OPCODE_NAMES
27137OP_GetMemberPtrBase,
27138#endif
27139#ifdef GET_INTERPFN_LIST
27140&Interp_GetMemberPtrBase,
27141#endif
27142#ifdef GET_INTERPFN_DISPATCHERS
27143PRESERVE_NONE
27144static bool Interp_GetMemberPtrBase(InterpState &S, CodePtr &PC) {
27145 if (!GetMemberPtrBase(S, PC)) return false;
27146#if USE_TAILCALLS
27147 MUSTTAIL return InterpNext(S, PC);
27148#else
27149 return true;
27150#endif
27151}
27152#endif
27153#ifdef GET_DISASM
27154case OP_GetMemberPtrBase:
27155 Text.Op = PrintName("GetMemberPtrBase");
27156 break;
27157#endif
27158#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27159bool emitGetMemberPtrBase(SourceInfo);
27160#endif
27161#ifdef GET_LINK_IMPL
27162bool ByteCodeEmitter::emitGetMemberPtrBase(SourceInfo L) {
27163 return emitOp<>(OP_GetMemberPtrBase, L);
27164}
27165#endif
27166#ifdef GET_EVAL_IMPL
27167bool EvalEmitter::emitGetMemberPtrBase(SourceInfo L) {
27168 if (!isActive()) return true;
27169 CurrentSource = L;
27170 return GetMemberPtrBase(S, OpPC);
27171}
27172#endif
27173#ifdef GET_OPCODE_NAMES
27174OP_GetMemberPtrDecl,
27175#endif
27176#ifdef GET_INTERPFN_LIST
27177&Interp_GetMemberPtrDecl,
27178#endif
27179#ifdef GET_INTERPFN_DISPATCHERS
27180PRESERVE_NONE
27181static bool Interp_GetMemberPtrDecl(InterpState &S, CodePtr &PC) {
27182 if (!GetMemberPtrDecl(S, PC)) return false;
27183#if USE_TAILCALLS
27184 MUSTTAIL return InterpNext(S, PC);
27185#else
27186 return true;
27187#endif
27188}
27189#endif
27190#ifdef GET_DISASM
27191case OP_GetMemberPtrDecl:
27192 Text.Op = PrintName("GetMemberPtrDecl");
27193 break;
27194#endif
27195#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27196bool emitGetMemberPtrDecl(SourceInfo);
27197#endif
27198#ifdef GET_LINK_IMPL
27199bool ByteCodeEmitter::emitGetMemberPtrDecl(SourceInfo L) {
27200 return emitOp<>(OP_GetMemberPtrDecl, L);
27201}
27202#endif
27203#ifdef GET_EVAL_IMPL
27204bool EvalEmitter::emitGetMemberPtrDecl(SourceInfo L) {
27205 if (!isActive()) return true;
27206 CurrentSource = L;
27207 return GetMemberPtrDecl(S, OpPC);
27208}
27209#endif
27210#ifdef GET_OPCODE_NAMES
27211OP_GetParamSint8,
27212OP_GetParamUint8,
27213OP_GetParamSint16,
27214OP_GetParamUint16,
27215OP_GetParamSint32,
27216OP_GetParamUint32,
27217OP_GetParamSint64,
27218OP_GetParamUint64,
27219OP_GetParamIntAP,
27220OP_GetParamIntAPS,
27221OP_GetParamBool,
27222OP_GetParamFixedPoint,
27223OP_GetParamPtr,
27224OP_GetParamMemberPtr,
27225OP_GetParamFloat,
27226#endif
27227#ifdef GET_INTERPFN_LIST
27228&Interp_GetParamSint8,
27229&Interp_GetParamUint8,
27230&Interp_GetParamSint16,
27231&Interp_GetParamUint16,
27232&Interp_GetParamSint32,
27233&Interp_GetParamUint32,
27234&Interp_GetParamSint64,
27235&Interp_GetParamUint64,
27236&Interp_GetParamIntAP,
27237&Interp_GetParamIntAPS,
27238&Interp_GetParamBool,
27239&Interp_GetParamFixedPoint,
27240&Interp_GetParamPtr,
27241&Interp_GetParamMemberPtr,
27242&Interp_GetParamFloat,
27243#endif
27244#ifdef GET_INTERPFN_DISPATCHERS
27245PRESERVE_NONE
27246static bool Interp_GetParamSint8(InterpState &S, CodePtr &PC) {
27247 {
27248 CodePtr OpPC = PC;
27249 const auto V0 = ReadArg<uint32_t>(S, PC);
27250 if (!GetParam<PT_Sint8>(S, OpPC, V0)) return false;
27251 }
27252#if USE_TAILCALLS
27253 MUSTTAIL return InterpNext(S, PC);
27254#else
27255 return true;
27256#endif
27257}
27258PRESERVE_NONE
27259static bool Interp_GetParamUint8(InterpState &S, CodePtr &PC) {
27260 {
27261 CodePtr OpPC = PC;
27262 const auto V0 = ReadArg<uint32_t>(S, PC);
27263 if (!GetParam<PT_Uint8>(S, OpPC, V0)) return false;
27264 }
27265#if USE_TAILCALLS
27266 MUSTTAIL return InterpNext(S, PC);
27267#else
27268 return true;
27269#endif
27270}
27271PRESERVE_NONE
27272static bool Interp_GetParamSint16(InterpState &S, CodePtr &PC) {
27273 {
27274 CodePtr OpPC = PC;
27275 const auto V0 = ReadArg<uint32_t>(S, PC);
27276 if (!GetParam<PT_Sint16>(S, OpPC, V0)) return false;
27277 }
27278#if USE_TAILCALLS
27279 MUSTTAIL return InterpNext(S, PC);
27280#else
27281 return true;
27282#endif
27283}
27284PRESERVE_NONE
27285static bool Interp_GetParamUint16(InterpState &S, CodePtr &PC) {
27286 {
27287 CodePtr OpPC = PC;
27288 const auto V0 = ReadArg<uint32_t>(S, PC);
27289 if (!GetParam<PT_Uint16>(S, OpPC, V0)) return false;
27290 }
27291#if USE_TAILCALLS
27292 MUSTTAIL return InterpNext(S, PC);
27293#else
27294 return true;
27295#endif
27296}
27297PRESERVE_NONE
27298static bool Interp_GetParamSint32(InterpState &S, CodePtr &PC) {
27299 {
27300 CodePtr OpPC = PC;
27301 const auto V0 = ReadArg<uint32_t>(S, PC);
27302 if (!GetParam<PT_Sint32>(S, OpPC, V0)) return false;
27303 }
27304#if USE_TAILCALLS
27305 MUSTTAIL return InterpNext(S, PC);
27306#else
27307 return true;
27308#endif
27309}
27310PRESERVE_NONE
27311static bool Interp_GetParamUint32(InterpState &S, CodePtr &PC) {
27312 {
27313 CodePtr OpPC = PC;
27314 const auto V0 = ReadArg<uint32_t>(S, PC);
27315 if (!GetParam<PT_Uint32>(S, OpPC, V0)) return false;
27316 }
27317#if USE_TAILCALLS
27318 MUSTTAIL return InterpNext(S, PC);
27319#else
27320 return true;
27321#endif
27322}
27323PRESERVE_NONE
27324static bool Interp_GetParamSint64(InterpState &S, CodePtr &PC) {
27325 {
27326 CodePtr OpPC = PC;
27327 const auto V0 = ReadArg<uint32_t>(S, PC);
27328 if (!GetParam<PT_Sint64>(S, OpPC, V0)) return false;
27329 }
27330#if USE_TAILCALLS
27331 MUSTTAIL return InterpNext(S, PC);
27332#else
27333 return true;
27334#endif
27335}
27336PRESERVE_NONE
27337static bool Interp_GetParamUint64(InterpState &S, CodePtr &PC) {
27338 {
27339 CodePtr OpPC = PC;
27340 const auto V0 = ReadArg<uint32_t>(S, PC);
27341 if (!GetParam<PT_Uint64>(S, OpPC, V0)) return false;
27342 }
27343#if USE_TAILCALLS
27344 MUSTTAIL return InterpNext(S, PC);
27345#else
27346 return true;
27347#endif
27348}
27349PRESERVE_NONE
27350static bool Interp_GetParamIntAP(InterpState &S, CodePtr &PC) {
27351 {
27352 CodePtr OpPC = PC;
27353 const auto V0 = ReadArg<uint32_t>(S, PC);
27354 if (!GetParam<PT_IntAP>(S, OpPC, V0)) return false;
27355 }
27356#if USE_TAILCALLS
27357 MUSTTAIL return InterpNext(S, PC);
27358#else
27359 return true;
27360#endif
27361}
27362PRESERVE_NONE
27363static bool Interp_GetParamIntAPS(InterpState &S, CodePtr &PC) {
27364 {
27365 CodePtr OpPC = PC;
27366 const auto V0 = ReadArg<uint32_t>(S, PC);
27367 if (!GetParam<PT_IntAPS>(S, OpPC, V0)) return false;
27368 }
27369#if USE_TAILCALLS
27370 MUSTTAIL return InterpNext(S, PC);
27371#else
27372 return true;
27373#endif
27374}
27375PRESERVE_NONE
27376static bool Interp_GetParamBool(InterpState &S, CodePtr &PC) {
27377 {
27378 CodePtr OpPC = PC;
27379 const auto V0 = ReadArg<uint32_t>(S, PC);
27380 if (!GetParam<PT_Bool>(S, OpPC, V0)) return false;
27381 }
27382#if USE_TAILCALLS
27383 MUSTTAIL return InterpNext(S, PC);
27384#else
27385 return true;
27386#endif
27387}
27388PRESERVE_NONE
27389static bool Interp_GetParamFixedPoint(InterpState &S, CodePtr &PC) {
27390 {
27391 CodePtr OpPC = PC;
27392 const auto V0 = ReadArg<uint32_t>(S, PC);
27393 if (!GetParam<PT_FixedPoint>(S, OpPC, V0)) return false;
27394 }
27395#if USE_TAILCALLS
27396 MUSTTAIL return InterpNext(S, PC);
27397#else
27398 return true;
27399#endif
27400}
27401PRESERVE_NONE
27402static bool Interp_GetParamPtr(InterpState &S, CodePtr &PC) {
27403 {
27404 CodePtr OpPC = PC;
27405 const auto V0 = ReadArg<uint32_t>(S, PC);
27406 if (!GetParam<PT_Ptr>(S, OpPC, V0)) return false;
27407 }
27408#if USE_TAILCALLS
27409 MUSTTAIL return InterpNext(S, PC);
27410#else
27411 return true;
27412#endif
27413}
27414PRESERVE_NONE
27415static bool Interp_GetParamMemberPtr(InterpState &S, CodePtr &PC) {
27416 {
27417 CodePtr OpPC = PC;
27418 const auto V0 = ReadArg<uint32_t>(S, PC);
27419 if (!GetParam<PT_MemberPtr>(S, OpPC, V0)) return false;
27420 }
27421#if USE_TAILCALLS
27422 MUSTTAIL return InterpNext(S, PC);
27423#else
27424 return true;
27425#endif
27426}
27427PRESERVE_NONE
27428static bool Interp_GetParamFloat(InterpState &S, CodePtr &PC) {
27429 {
27430 CodePtr OpPC = PC;
27431 const auto V0 = ReadArg<uint32_t>(S, PC);
27432 if (!GetParam<PT_Float>(S, OpPC, V0)) return false;
27433 }
27434#if USE_TAILCALLS
27435 MUSTTAIL return InterpNext(S, PC);
27436#else
27437 return true;
27438#endif
27439}
27440#endif
27441#ifdef GET_DISASM
27442case OP_GetParamSint8:
27443 Text.Op = PrintName("GetParamSint8");
27444 Text.Args.push_back(printArg<uint32_t>(P, PC));
27445 break;
27446case OP_GetParamUint8:
27447 Text.Op = PrintName("GetParamUint8");
27448 Text.Args.push_back(printArg<uint32_t>(P, PC));
27449 break;
27450case OP_GetParamSint16:
27451 Text.Op = PrintName("GetParamSint16");
27452 Text.Args.push_back(printArg<uint32_t>(P, PC));
27453 break;
27454case OP_GetParamUint16:
27455 Text.Op = PrintName("GetParamUint16");
27456 Text.Args.push_back(printArg<uint32_t>(P, PC));
27457 break;
27458case OP_GetParamSint32:
27459 Text.Op = PrintName("GetParamSint32");
27460 Text.Args.push_back(printArg<uint32_t>(P, PC));
27461 break;
27462case OP_GetParamUint32:
27463 Text.Op = PrintName("GetParamUint32");
27464 Text.Args.push_back(printArg<uint32_t>(P, PC));
27465 break;
27466case OP_GetParamSint64:
27467 Text.Op = PrintName("GetParamSint64");
27468 Text.Args.push_back(printArg<uint32_t>(P, PC));
27469 break;
27470case OP_GetParamUint64:
27471 Text.Op = PrintName("GetParamUint64");
27472 Text.Args.push_back(printArg<uint32_t>(P, PC));
27473 break;
27474case OP_GetParamIntAP:
27475 Text.Op = PrintName("GetParamIntAP");
27476 Text.Args.push_back(printArg<uint32_t>(P, PC));
27477 break;
27478case OP_GetParamIntAPS:
27479 Text.Op = PrintName("GetParamIntAPS");
27480 Text.Args.push_back(printArg<uint32_t>(P, PC));
27481 break;
27482case OP_GetParamBool:
27483 Text.Op = PrintName("GetParamBool");
27484 Text.Args.push_back(printArg<uint32_t>(P, PC));
27485 break;
27486case OP_GetParamFixedPoint:
27487 Text.Op = PrintName("GetParamFixedPoint");
27488 Text.Args.push_back(printArg<uint32_t>(P, PC));
27489 break;
27490case OP_GetParamPtr:
27491 Text.Op = PrintName("GetParamPtr");
27492 Text.Args.push_back(printArg<uint32_t>(P, PC));
27493 break;
27494case OP_GetParamMemberPtr:
27495 Text.Op = PrintName("GetParamMemberPtr");
27496 Text.Args.push_back(printArg<uint32_t>(P, PC));
27497 break;
27498case OP_GetParamFloat:
27499 Text.Op = PrintName("GetParamFloat");
27500 Text.Args.push_back(printArg<uint32_t>(P, PC));
27501 break;
27502#endif
27503#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27504bool emitGetParamSint8( uint32_t , SourceInfo);
27505bool emitGetParamUint8( uint32_t , SourceInfo);
27506bool emitGetParamSint16( uint32_t , SourceInfo);
27507bool emitGetParamUint16( uint32_t , SourceInfo);
27508bool emitGetParamSint32( uint32_t , SourceInfo);
27509bool emitGetParamUint32( uint32_t , SourceInfo);
27510bool emitGetParamSint64( uint32_t , SourceInfo);
27511bool emitGetParamUint64( uint32_t , SourceInfo);
27512bool emitGetParamIntAP( uint32_t , SourceInfo);
27513bool emitGetParamIntAPS( uint32_t , SourceInfo);
27514bool emitGetParamBool( uint32_t , SourceInfo);
27515bool emitGetParamFixedPoint( uint32_t , SourceInfo);
27516bool emitGetParamPtr( uint32_t , SourceInfo);
27517bool emitGetParamMemberPtr( uint32_t , SourceInfo);
27518bool emitGetParamFloat( uint32_t , SourceInfo);
27519#endif
27520#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27521[[nodiscard]] bool emitGetParam(PrimType, uint32_t, SourceInfo I);
27522#endif
27523#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
27524bool
27525#if defined(GET_EVAL_IMPL)
27526EvalEmitter
27527#else
27528ByteCodeEmitter
27529#endif
27530::emitGetParam(PrimType T0, uint32_t A0, SourceInfo I) {
27531 switch (T0) {
27532 case PT_Sint8:
27533 return emitGetParamSint8(A0, I);
27534 case PT_Uint8:
27535 return emitGetParamUint8(A0, I);
27536 case PT_Sint16:
27537 return emitGetParamSint16(A0, I);
27538 case PT_Uint16:
27539 return emitGetParamUint16(A0, I);
27540 case PT_Sint32:
27541 return emitGetParamSint32(A0, I);
27542 case PT_Uint32:
27543 return emitGetParamUint32(A0, I);
27544 case PT_Sint64:
27545 return emitGetParamSint64(A0, I);
27546 case PT_Uint64:
27547 return emitGetParamUint64(A0, I);
27548 case PT_IntAP:
27549 return emitGetParamIntAP(A0, I);
27550 case PT_IntAPS:
27551 return emitGetParamIntAPS(A0, I);
27552 case PT_Bool:
27553 return emitGetParamBool(A0, I);
27554 case PT_FixedPoint:
27555 return emitGetParamFixedPoint(A0, I);
27556 case PT_Ptr:
27557 return emitGetParamPtr(A0, I);
27558 case PT_MemberPtr:
27559 return emitGetParamMemberPtr(A0, I);
27560 case PT_Float:
27561 return emitGetParamFloat(A0, I);
27562 }
27563 llvm_unreachable("invalid enum value");
27564}
27565#endif
27566#ifdef GET_LINK_IMPL
27567bool ByteCodeEmitter::emitGetParamSint8( uint32_t A0, SourceInfo L) {
27568 return emitOp<uint32_t>(OP_GetParamSint8, A0, L);
27569}
27570bool ByteCodeEmitter::emitGetParamUint8( uint32_t A0, SourceInfo L) {
27571 return emitOp<uint32_t>(OP_GetParamUint8, A0, L);
27572}
27573bool ByteCodeEmitter::emitGetParamSint16( uint32_t A0, SourceInfo L) {
27574 return emitOp<uint32_t>(OP_GetParamSint16, A0, L);
27575}
27576bool ByteCodeEmitter::emitGetParamUint16( uint32_t A0, SourceInfo L) {
27577 return emitOp<uint32_t>(OP_GetParamUint16, A0, L);
27578}
27579bool ByteCodeEmitter::emitGetParamSint32( uint32_t A0, SourceInfo L) {
27580 return emitOp<uint32_t>(OP_GetParamSint32, A0, L);
27581}
27582bool ByteCodeEmitter::emitGetParamUint32( uint32_t A0, SourceInfo L) {
27583 return emitOp<uint32_t>(OP_GetParamUint32, A0, L);
27584}
27585bool ByteCodeEmitter::emitGetParamSint64( uint32_t A0, SourceInfo L) {
27586 return emitOp<uint32_t>(OP_GetParamSint64, A0, L);
27587}
27588bool ByteCodeEmitter::emitGetParamUint64( uint32_t A0, SourceInfo L) {
27589 return emitOp<uint32_t>(OP_GetParamUint64, A0, L);
27590}
27591bool ByteCodeEmitter::emitGetParamIntAP( uint32_t A0, SourceInfo L) {
27592 return emitOp<uint32_t>(OP_GetParamIntAP, A0, L);
27593}
27594bool ByteCodeEmitter::emitGetParamIntAPS( uint32_t A0, SourceInfo L) {
27595 return emitOp<uint32_t>(OP_GetParamIntAPS, A0, L);
27596}
27597bool ByteCodeEmitter::emitGetParamBool( uint32_t A0, SourceInfo L) {
27598 return emitOp<uint32_t>(OP_GetParamBool, A0, L);
27599}
27600bool ByteCodeEmitter::emitGetParamFixedPoint( uint32_t A0, SourceInfo L) {
27601 return emitOp<uint32_t>(OP_GetParamFixedPoint, A0, L);
27602}
27603bool ByteCodeEmitter::emitGetParamPtr( uint32_t A0, SourceInfo L) {
27604 return emitOp<uint32_t>(OP_GetParamPtr, A0, L);
27605}
27606bool ByteCodeEmitter::emitGetParamMemberPtr( uint32_t A0, SourceInfo L) {
27607 return emitOp<uint32_t>(OP_GetParamMemberPtr, A0, L);
27608}
27609bool ByteCodeEmitter::emitGetParamFloat( uint32_t A0, SourceInfo L) {
27610 return emitOp<uint32_t>(OP_GetParamFloat, A0, L);
27611}
27612#endif
27613#ifdef GET_EVAL_IMPL
27614bool EvalEmitter::emitGetParamSint8( uint32_t A0, SourceInfo L) {
27615 if (!isActive()) return true;
27616 CurrentSource = L;
27617 return GetParam<PT_Sint8>(S, OpPC, A0);
27618}
27619bool EvalEmitter::emitGetParamUint8( uint32_t A0, SourceInfo L) {
27620 if (!isActive()) return true;
27621 CurrentSource = L;
27622 return GetParam<PT_Uint8>(S, OpPC, A0);
27623}
27624bool EvalEmitter::emitGetParamSint16( uint32_t A0, SourceInfo L) {
27625 if (!isActive()) return true;
27626 CurrentSource = L;
27627 return GetParam<PT_Sint16>(S, OpPC, A0);
27628}
27629bool EvalEmitter::emitGetParamUint16( uint32_t A0, SourceInfo L) {
27630 if (!isActive()) return true;
27631 CurrentSource = L;
27632 return GetParam<PT_Uint16>(S, OpPC, A0);
27633}
27634bool EvalEmitter::emitGetParamSint32( uint32_t A0, SourceInfo L) {
27635 if (!isActive()) return true;
27636 CurrentSource = L;
27637 return GetParam<PT_Sint32>(S, OpPC, A0);
27638}
27639bool EvalEmitter::emitGetParamUint32( uint32_t A0, SourceInfo L) {
27640 if (!isActive()) return true;
27641 CurrentSource = L;
27642 return GetParam<PT_Uint32>(S, OpPC, A0);
27643}
27644bool EvalEmitter::emitGetParamSint64( uint32_t A0, SourceInfo L) {
27645 if (!isActive()) return true;
27646 CurrentSource = L;
27647 return GetParam<PT_Sint64>(S, OpPC, A0);
27648}
27649bool EvalEmitter::emitGetParamUint64( uint32_t A0, SourceInfo L) {
27650 if (!isActive()) return true;
27651 CurrentSource = L;
27652 return GetParam<PT_Uint64>(S, OpPC, A0);
27653}
27654bool EvalEmitter::emitGetParamIntAP( uint32_t A0, SourceInfo L) {
27655 if (!isActive()) return true;
27656 CurrentSource = L;
27657 return GetParam<PT_IntAP>(S, OpPC, A0);
27658}
27659bool EvalEmitter::emitGetParamIntAPS( uint32_t A0, SourceInfo L) {
27660 if (!isActive()) return true;
27661 CurrentSource = L;
27662 return GetParam<PT_IntAPS>(S, OpPC, A0);
27663}
27664bool EvalEmitter::emitGetParamBool( uint32_t A0, SourceInfo L) {
27665 if (!isActive()) return true;
27666 CurrentSource = L;
27667 return GetParam<PT_Bool>(S, OpPC, A0);
27668}
27669bool EvalEmitter::emitGetParamFixedPoint( uint32_t A0, SourceInfo L) {
27670 if (!isActive()) return true;
27671 CurrentSource = L;
27672 return GetParam<PT_FixedPoint>(S, OpPC, A0);
27673}
27674bool EvalEmitter::emitGetParamPtr( uint32_t A0, SourceInfo L) {
27675 if (!isActive()) return true;
27676 CurrentSource = L;
27677 return GetParam<PT_Ptr>(S, OpPC, A0);
27678}
27679bool EvalEmitter::emitGetParamMemberPtr( uint32_t A0, SourceInfo L) {
27680 if (!isActive()) return true;
27681 CurrentSource = L;
27682 return GetParam<PT_MemberPtr>(S, OpPC, A0);
27683}
27684bool EvalEmitter::emitGetParamFloat( uint32_t A0, SourceInfo L) {
27685 if (!isActive()) return true;
27686 CurrentSource = L;
27687 return GetParam<PT_Float>(S, OpPC, A0);
27688}
27689#endif
27690#ifdef GET_OPCODE_NAMES
27691OP_GetPtrBase,
27692#endif
27693#ifdef GET_INTERPFN_LIST
27694&Interp_GetPtrBase,
27695#endif
27696#ifdef GET_INTERPFN_DISPATCHERS
27697PRESERVE_NONE
27698static bool Interp_GetPtrBase(InterpState &S, CodePtr &PC) {
27699 {
27700 CodePtr OpPC = PC;
27701 const auto V0 = ReadArg<uint32_t>(S, PC);
27702 if (!GetPtrBase(S, OpPC, V0)) return false;
27703 }
27704#if USE_TAILCALLS
27705 MUSTTAIL return InterpNext(S, PC);
27706#else
27707 return true;
27708#endif
27709}
27710#endif
27711#ifdef GET_DISASM
27712case OP_GetPtrBase:
27713 Text.Op = PrintName("GetPtrBase");
27714 Text.Args.push_back(printArg<uint32_t>(P, PC));
27715 break;
27716#endif
27717#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27718bool emitGetPtrBase( uint32_t , SourceInfo);
27719#endif
27720#ifdef GET_LINK_IMPL
27721bool ByteCodeEmitter::emitGetPtrBase( uint32_t A0, SourceInfo L) {
27722 return emitOp<uint32_t>(OP_GetPtrBase, A0, L);
27723}
27724#endif
27725#ifdef GET_EVAL_IMPL
27726bool EvalEmitter::emitGetPtrBase( uint32_t A0, SourceInfo L) {
27727 if (!isActive()) return true;
27728 CurrentSource = L;
27729 return GetPtrBase(S, OpPC, A0);
27730}
27731#endif
27732#ifdef GET_OPCODE_NAMES
27733OP_GetPtrBasePop,
27734#endif
27735#ifdef GET_INTERPFN_LIST
27736&Interp_GetPtrBasePop,
27737#endif
27738#ifdef GET_INTERPFN_DISPATCHERS
27739PRESERVE_NONE
27740static bool Interp_GetPtrBasePop(InterpState &S, CodePtr &PC) {
27741 {
27742 CodePtr OpPC = PC;
27743 const auto V0 = ReadArg<uint32_t>(S, PC);
27744 const auto V1 = ReadArg<bool>(S, PC);
27745 if (!GetPtrBasePop(S, OpPC, V0, V1)) return false;
27746 }
27747#if USE_TAILCALLS
27748 MUSTTAIL return InterpNext(S, PC);
27749#else
27750 return true;
27751#endif
27752}
27753#endif
27754#ifdef GET_DISASM
27755case OP_GetPtrBasePop:
27756 Text.Op = PrintName("GetPtrBasePop");
27757 Text.Args.push_back(printArg<uint32_t>(P, PC));
27758 Text.Args.push_back(printArg<bool>(P, PC));
27759 break;
27760#endif
27761#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27762bool emitGetPtrBasePop( uint32_t , bool , SourceInfo);
27763#endif
27764#ifdef GET_LINK_IMPL
27765bool ByteCodeEmitter::emitGetPtrBasePop( uint32_t A0, bool A1, SourceInfo L) {
27766 return emitOp<uint32_t, bool>(OP_GetPtrBasePop, A0, A1, L);
27767}
27768#endif
27769#ifdef GET_EVAL_IMPL
27770bool EvalEmitter::emitGetPtrBasePop( uint32_t A0, bool A1, SourceInfo L) {
27771 if (!isActive()) return true;
27772 CurrentSource = L;
27773 return GetPtrBasePop(S, OpPC, A0, A1);
27774}
27775#endif
27776#ifdef GET_OPCODE_NAMES
27777OP_GetPtrDerivedPop,
27778#endif
27779#ifdef GET_INTERPFN_LIST
27780&Interp_GetPtrDerivedPop,
27781#endif
27782#ifdef GET_INTERPFN_DISPATCHERS
27783PRESERVE_NONE
27784static bool Interp_GetPtrDerivedPop(InterpState &S, CodePtr &PC) {
27785 {
27786 CodePtr OpPC = PC;
27787 const auto V0 = ReadArg<uint32_t>(S, PC);
27788 const auto V1 = ReadArg<bool>(S, PC);
27789 const auto V2 = ReadArg<const Type *>(S, PC);
27790 if (!GetPtrDerivedPop(S, OpPC, V0, V1, V2)) return false;
27791 }
27792#if USE_TAILCALLS
27793 MUSTTAIL return InterpNext(S, PC);
27794#else
27795 return true;
27796#endif
27797}
27798#endif
27799#ifdef GET_DISASM
27800case OP_GetPtrDerivedPop:
27801 Text.Op = PrintName("GetPtrDerivedPop");
27802 Text.Args.push_back(printArg<uint32_t>(P, PC));
27803 Text.Args.push_back(printArg<bool>(P, PC));
27804 Text.Args.push_back(printArg<const Type *>(P, PC));
27805 break;
27806#endif
27807#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27808bool emitGetPtrDerivedPop( uint32_t , bool , const Type * , SourceInfo);
27809#endif
27810#ifdef GET_LINK_IMPL
27811bool ByteCodeEmitter::emitGetPtrDerivedPop( uint32_t A0, bool A1, const Type * A2, SourceInfo L) {
27812 return emitOp<uint32_t, bool, const Type *>(OP_GetPtrDerivedPop, A0, A1, A2, L);
27813}
27814#endif
27815#ifdef GET_EVAL_IMPL
27816bool EvalEmitter::emitGetPtrDerivedPop( uint32_t A0, bool A1, const Type * A2, SourceInfo L) {
27817 if (!isActive()) return true;
27818 CurrentSource = L;
27819 return GetPtrDerivedPop(S, OpPC, A0, A1, A2);
27820}
27821#endif
27822#ifdef GET_OPCODE_NAMES
27823OP_GetPtrField,
27824#endif
27825#ifdef GET_INTERPFN_LIST
27826&Interp_GetPtrField,
27827#endif
27828#ifdef GET_INTERPFN_DISPATCHERS
27829PRESERVE_NONE
27830static bool Interp_GetPtrField(InterpState &S, CodePtr &PC) {
27831 {
27832 CodePtr OpPC = PC;
27833 const auto V0 = ReadArg<uint32_t>(S, PC);
27834 if (!GetPtrField(S, OpPC, V0)) return false;
27835 }
27836#if USE_TAILCALLS
27837 MUSTTAIL return InterpNext(S, PC);
27838#else
27839 return true;
27840#endif
27841}
27842#endif
27843#ifdef GET_DISASM
27844case OP_GetPtrField:
27845 Text.Op = PrintName("GetPtrField");
27846 Text.Args.push_back(printArg<uint32_t>(P, PC));
27847 break;
27848#endif
27849#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27850bool emitGetPtrField( uint32_t , SourceInfo);
27851#endif
27852#ifdef GET_LINK_IMPL
27853bool ByteCodeEmitter::emitGetPtrField( uint32_t A0, SourceInfo L) {
27854 return emitOp<uint32_t>(OP_GetPtrField, A0, L);
27855}
27856#endif
27857#ifdef GET_EVAL_IMPL
27858bool EvalEmitter::emitGetPtrField( uint32_t A0, SourceInfo L) {
27859 if (!isActive()) return true;
27860 CurrentSource = L;
27861 return GetPtrField(S, OpPC, A0);
27862}
27863#endif
27864#ifdef GET_OPCODE_NAMES
27865OP_GetPtrFieldPop,
27866#endif
27867#ifdef GET_INTERPFN_LIST
27868&Interp_GetPtrFieldPop,
27869#endif
27870#ifdef GET_INTERPFN_DISPATCHERS
27871PRESERVE_NONE
27872static bool Interp_GetPtrFieldPop(InterpState &S, CodePtr &PC) {
27873 {
27874 CodePtr OpPC = PC;
27875 const auto V0 = ReadArg<uint32_t>(S, PC);
27876 if (!GetPtrFieldPop(S, OpPC, V0)) return false;
27877 }
27878#if USE_TAILCALLS
27879 MUSTTAIL return InterpNext(S, PC);
27880#else
27881 return true;
27882#endif
27883}
27884#endif
27885#ifdef GET_DISASM
27886case OP_GetPtrFieldPop:
27887 Text.Op = PrintName("GetPtrFieldPop");
27888 Text.Args.push_back(printArg<uint32_t>(P, PC));
27889 break;
27890#endif
27891#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27892bool emitGetPtrFieldPop( uint32_t , SourceInfo);
27893#endif
27894#ifdef GET_LINK_IMPL
27895bool ByteCodeEmitter::emitGetPtrFieldPop( uint32_t A0, SourceInfo L) {
27896 return emitOp<uint32_t>(OP_GetPtrFieldPop, A0, L);
27897}
27898#endif
27899#ifdef GET_EVAL_IMPL
27900bool EvalEmitter::emitGetPtrFieldPop( uint32_t A0, SourceInfo L) {
27901 if (!isActive()) return true;
27902 CurrentSource = L;
27903 return GetPtrFieldPop(S, OpPC, A0);
27904}
27905#endif
27906#ifdef GET_OPCODE_NAMES
27907OP_GetPtrGlobal,
27908#endif
27909#ifdef GET_INTERPFN_LIST
27910&Interp_GetPtrGlobal,
27911#endif
27912#ifdef GET_INTERPFN_DISPATCHERS
27913PRESERVE_NONE
27914static bool Interp_GetPtrGlobal(InterpState &S, CodePtr &PC) {
27915 {
27916 CodePtr OpPC = PC;
27917 const auto V0 = ReadArg<uint32_t>(S, PC);
27918 if (!GetPtrGlobal(S, OpPC, V0)) return false;
27919 }
27920#if USE_TAILCALLS
27921 MUSTTAIL return InterpNext(S, PC);
27922#else
27923 return true;
27924#endif
27925}
27926#endif
27927#ifdef GET_DISASM
27928case OP_GetPtrGlobal:
27929 Text.Op = PrintName("GetPtrGlobal");
27930 Text.Args.push_back(printArg<uint32_t>(P, PC));
27931 break;
27932#endif
27933#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27934bool emitGetPtrGlobal( uint32_t , SourceInfo);
27935#endif
27936#ifdef GET_LINK_IMPL
27937bool ByteCodeEmitter::emitGetPtrGlobal( uint32_t A0, SourceInfo L) {
27938 return emitOp<uint32_t>(OP_GetPtrGlobal, A0, L);
27939}
27940#endif
27941#ifdef GET_EVAL_IMPL
27942bool EvalEmitter::emitGetPtrGlobal( uint32_t A0, SourceInfo L) {
27943 if (!isActive()) return true;
27944 CurrentSource = L;
27945 return GetPtrGlobal(S, OpPC, A0);
27946}
27947#endif
27948#ifdef GET_OPCODE_NAMES
27949OP_GetPtrLocal,
27950#endif
27951#ifdef GET_INTERPFN_LIST
27952&Interp_GetPtrLocal,
27953#endif
27954#ifdef GET_INTERPFN_DISPATCHERS
27955PRESERVE_NONE
27956static bool Interp_GetPtrLocal(InterpState &S, CodePtr &PC) {
27957 {
27958 CodePtr OpPC = PC;
27959 const auto V0 = ReadArg<uint32_t>(S, PC);
27960 if (!GetPtrLocal(S, OpPC, V0)) return false;
27961 }
27962#if USE_TAILCALLS
27963 MUSTTAIL return InterpNext(S, PC);
27964#else
27965 return true;
27966#endif
27967}
27968#endif
27969#ifdef GET_DISASM
27970case OP_GetPtrLocal:
27971 Text.Op = PrintName("GetPtrLocal");
27972 Text.Args.push_back(printArg<uint32_t>(P, PC));
27973 break;
27974#endif
27975#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27976bool emitGetPtrLocal( uint32_t , SourceInfo);
27977#endif
27978#ifdef GET_LINK_IMPL
27979bool ByteCodeEmitter::emitGetPtrLocal( uint32_t A0, SourceInfo L) {
27980 return emitOp<uint32_t>(OP_GetPtrLocal, A0, L);
27981}
27982#endif
27983#ifdef GET_OPCODE_NAMES
27984OP_GetPtrParam,
27985#endif
27986#ifdef GET_INTERPFN_LIST
27987&Interp_GetPtrParam,
27988#endif
27989#ifdef GET_INTERPFN_DISPATCHERS
27990PRESERVE_NONE
27991static bool Interp_GetPtrParam(InterpState &S, CodePtr &PC) {
27992 {
27993 CodePtr OpPC = PC;
27994 const auto V0 = ReadArg<uint32_t>(S, PC);
27995 if (!GetPtrParam(S, OpPC, V0)) return false;
27996 }
27997#if USE_TAILCALLS
27998 MUSTTAIL return InterpNext(S, PC);
27999#else
28000 return true;
28001#endif
28002}
28003#endif
28004#ifdef GET_DISASM
28005case OP_GetPtrParam:
28006 Text.Op = PrintName("GetPtrParam");
28007 Text.Args.push_back(printArg<uint32_t>(P, PC));
28008 break;
28009#endif
28010#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28011bool emitGetPtrParam( uint32_t , SourceInfo);
28012#endif
28013#ifdef GET_LINK_IMPL
28014bool ByteCodeEmitter::emitGetPtrParam( uint32_t A0, SourceInfo L) {
28015 return emitOp<uint32_t>(OP_GetPtrParam, A0, L);
28016}
28017#endif
28018#ifdef GET_EVAL_IMPL
28019bool EvalEmitter::emitGetPtrParam( uint32_t A0, SourceInfo L) {
28020 if (!isActive()) return true;
28021 CurrentSource = L;
28022 return GetPtrParam(S, OpPC, A0);
28023}
28024#endif
28025#ifdef GET_OPCODE_NAMES
28026OP_GetPtrThisBase,
28027#endif
28028#ifdef GET_INTERPFN_LIST
28029&Interp_GetPtrThisBase,
28030#endif
28031#ifdef GET_INTERPFN_DISPATCHERS
28032PRESERVE_NONE
28033static bool Interp_GetPtrThisBase(InterpState &S, CodePtr &PC) {
28034 {
28035 CodePtr OpPC = PC;
28036 const auto V0 = ReadArg<uint32_t>(S, PC);
28037 if (!GetPtrThisBase(S, OpPC, V0)) return false;
28038 }
28039#if USE_TAILCALLS
28040 MUSTTAIL return InterpNext(S, PC);
28041#else
28042 return true;
28043#endif
28044}
28045#endif
28046#ifdef GET_DISASM
28047case OP_GetPtrThisBase:
28048 Text.Op = PrintName("GetPtrThisBase");
28049 Text.Args.push_back(printArg<uint32_t>(P, PC));
28050 break;
28051#endif
28052#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28053bool emitGetPtrThisBase( uint32_t , SourceInfo);
28054#endif
28055#ifdef GET_LINK_IMPL
28056bool ByteCodeEmitter::emitGetPtrThisBase( uint32_t A0, SourceInfo L) {
28057 return emitOp<uint32_t>(OP_GetPtrThisBase, A0, L);
28058}
28059#endif
28060#ifdef GET_EVAL_IMPL
28061bool EvalEmitter::emitGetPtrThisBase( uint32_t A0, SourceInfo L) {
28062 if (!isActive()) return true;
28063 CurrentSource = L;
28064 return GetPtrThisBase(S, OpPC, A0);
28065}
28066#endif
28067#ifdef GET_OPCODE_NAMES
28068OP_GetPtrThisField,
28069#endif
28070#ifdef GET_INTERPFN_LIST
28071&Interp_GetPtrThisField,
28072#endif
28073#ifdef GET_INTERPFN_DISPATCHERS
28074PRESERVE_NONE
28075static bool Interp_GetPtrThisField(InterpState &S, CodePtr &PC) {
28076 {
28077 CodePtr OpPC = PC;
28078 const auto V0 = ReadArg<uint32_t>(S, PC);
28079 if (!GetPtrThisField(S, OpPC, V0)) return false;
28080 }
28081#if USE_TAILCALLS
28082 MUSTTAIL return InterpNext(S, PC);
28083#else
28084 return true;
28085#endif
28086}
28087#endif
28088#ifdef GET_DISASM
28089case OP_GetPtrThisField:
28090 Text.Op = PrintName("GetPtrThisField");
28091 Text.Args.push_back(printArg<uint32_t>(P, PC));
28092 break;
28093#endif
28094#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28095bool emitGetPtrThisField( uint32_t , SourceInfo);
28096#endif
28097#ifdef GET_LINK_IMPL
28098bool ByteCodeEmitter::emitGetPtrThisField( uint32_t A0, SourceInfo L) {
28099 return emitOp<uint32_t>(OP_GetPtrThisField, A0, L);
28100}
28101#endif
28102#ifdef GET_EVAL_IMPL
28103bool EvalEmitter::emitGetPtrThisField( uint32_t A0, SourceInfo L) {
28104 if (!isActive()) return true;
28105 CurrentSource = L;
28106 return GetPtrThisField(S, OpPC, A0);
28107}
28108#endif
28109#ifdef GET_OPCODE_NAMES
28110OP_GetPtrThisVirtBase,
28111#endif
28112#ifdef GET_INTERPFN_LIST
28113&Interp_GetPtrThisVirtBase,
28114#endif
28115#ifdef GET_INTERPFN_DISPATCHERS
28116PRESERVE_NONE
28117static bool Interp_GetPtrThisVirtBase(InterpState &S, CodePtr &PC) {
28118 {
28119 CodePtr OpPC = PC;
28120 const auto V0 = ReadArg<const RecordDecl *>(S, PC);
28121 if (!GetPtrThisVirtBase(S, OpPC, V0)) return false;
28122 }
28123#if USE_TAILCALLS
28124 MUSTTAIL return InterpNext(S, PC);
28125#else
28126 return true;
28127#endif
28128}
28129#endif
28130#ifdef GET_DISASM
28131case OP_GetPtrThisVirtBase:
28132 Text.Op = PrintName("GetPtrThisVirtBase");
28133 Text.Args.push_back(printArg<const RecordDecl *>(P, PC));
28134 break;
28135#endif
28136#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28137bool emitGetPtrThisVirtBase( const RecordDecl * , SourceInfo);
28138#endif
28139#ifdef GET_LINK_IMPL
28140bool ByteCodeEmitter::emitGetPtrThisVirtBase( const RecordDecl * A0, SourceInfo L) {
28141 return emitOp<const RecordDecl *>(OP_GetPtrThisVirtBase, A0, L);
28142}
28143#endif
28144#ifdef GET_EVAL_IMPL
28145bool EvalEmitter::emitGetPtrThisVirtBase( const RecordDecl * A0, SourceInfo L) {
28146 if (!isActive()) return true;
28147 CurrentSource = L;
28148 return GetPtrThisVirtBase(S, OpPC, A0);
28149}
28150#endif
28151#ifdef GET_OPCODE_NAMES
28152OP_GetPtrVirtBasePop,
28153#endif
28154#ifdef GET_INTERPFN_LIST
28155&Interp_GetPtrVirtBasePop,
28156#endif
28157#ifdef GET_INTERPFN_DISPATCHERS
28158PRESERVE_NONE
28159static bool Interp_GetPtrVirtBasePop(InterpState &S, CodePtr &PC) {
28160 {
28161 CodePtr OpPC = PC;
28162 const auto V0 = ReadArg<const RecordDecl *>(S, PC);
28163 if (!GetPtrVirtBasePop(S, OpPC, V0)) return false;
28164 }
28165#if USE_TAILCALLS
28166 MUSTTAIL return InterpNext(S, PC);
28167#else
28168 return true;
28169#endif
28170}
28171#endif
28172#ifdef GET_DISASM
28173case OP_GetPtrVirtBasePop:
28174 Text.Op = PrintName("GetPtrVirtBasePop");
28175 Text.Args.push_back(printArg<const RecordDecl *>(P, PC));
28176 break;
28177#endif
28178#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28179bool emitGetPtrVirtBasePop( const RecordDecl * , SourceInfo);
28180#endif
28181#ifdef GET_LINK_IMPL
28182bool ByteCodeEmitter::emitGetPtrVirtBasePop( const RecordDecl * A0, SourceInfo L) {
28183 return emitOp<const RecordDecl *>(OP_GetPtrVirtBasePop, A0, L);
28184}
28185#endif
28186#ifdef GET_EVAL_IMPL
28187bool EvalEmitter::emitGetPtrVirtBasePop( const RecordDecl * A0, SourceInfo L) {
28188 if (!isActive()) return true;
28189 CurrentSource = L;
28190 return GetPtrVirtBasePop(S, OpPC, A0);
28191}
28192#endif
28193#ifdef GET_OPCODE_NAMES
28194OP_GetRefGlobal,
28195#endif
28196#ifdef GET_INTERPFN_LIST
28197&Interp_GetRefGlobal,
28198#endif
28199#ifdef GET_INTERPFN_DISPATCHERS
28200PRESERVE_NONE
28201static bool Interp_GetRefGlobal(InterpState &S, CodePtr &PC) {
28202 {
28203 CodePtr OpPC = PC;
28204 const auto V0 = ReadArg<uint32_t>(S, PC);
28205 if (!GetRefGlobal(S, OpPC, V0)) return false;
28206 }
28207#if USE_TAILCALLS
28208 MUSTTAIL return InterpNext(S, PC);
28209#else
28210 return true;
28211#endif
28212}
28213#endif
28214#ifdef GET_DISASM
28215case OP_GetRefGlobal:
28216 Text.Op = PrintName("GetRefGlobal");
28217 Text.Args.push_back(printArg<uint32_t>(P, PC));
28218 break;
28219#endif
28220#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28221bool emitGetRefGlobal( uint32_t , SourceInfo);
28222#endif
28223#ifdef GET_LINK_IMPL
28224bool ByteCodeEmitter::emitGetRefGlobal( uint32_t A0, SourceInfo L) {
28225 return emitOp<uint32_t>(OP_GetRefGlobal, A0, L);
28226}
28227#endif
28228#ifdef GET_EVAL_IMPL
28229bool EvalEmitter::emitGetRefGlobal( uint32_t A0, SourceInfo L) {
28230 if (!isActive()) return true;
28231 CurrentSource = L;
28232 return GetRefGlobal(S, OpPC, A0);
28233}
28234#endif
28235#ifdef GET_OPCODE_NAMES
28236OP_GetRefLocal,
28237#endif
28238#ifdef GET_INTERPFN_LIST
28239&Interp_GetRefLocal,
28240#endif
28241#ifdef GET_INTERPFN_DISPATCHERS
28242PRESERVE_NONE
28243static bool Interp_GetRefLocal(InterpState &S, CodePtr &PC) {
28244 {
28245 CodePtr OpPC = PC;
28246 const auto V0 = ReadArg<uint32_t>(S, PC);
28247 if (!GetRefLocal(S, OpPC, V0)) return false;
28248 }
28249#if USE_TAILCALLS
28250 MUSTTAIL return InterpNext(S, PC);
28251#else
28252 return true;
28253#endif
28254}
28255#endif
28256#ifdef GET_DISASM
28257case OP_GetRefLocal:
28258 Text.Op = PrintName("GetRefLocal");
28259 Text.Args.push_back(printArg<uint32_t>(P, PC));
28260 break;
28261#endif
28262#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28263bool emitGetRefLocal( uint32_t , SourceInfo);
28264#endif
28265#ifdef GET_LINK_IMPL
28266bool ByteCodeEmitter::emitGetRefLocal( uint32_t A0, SourceInfo L) {
28267 return emitOp<uint32_t>(OP_GetRefLocal, A0, L);
28268}
28269#endif
28270#ifdef GET_OPCODE_NAMES
28271OP_GetThisFieldSint8,
28272OP_GetThisFieldUint8,
28273OP_GetThisFieldSint16,
28274OP_GetThisFieldUint16,
28275OP_GetThisFieldSint32,
28276OP_GetThisFieldUint32,
28277OP_GetThisFieldSint64,
28278OP_GetThisFieldUint64,
28279OP_GetThisFieldIntAP,
28280OP_GetThisFieldIntAPS,
28281OP_GetThisFieldBool,
28282OP_GetThisFieldFixedPoint,
28283OP_GetThisFieldPtr,
28284OP_GetThisFieldMemberPtr,
28285OP_GetThisFieldFloat,
28286#endif
28287#ifdef GET_INTERPFN_LIST
28288&Interp_GetThisFieldSint8,
28289&Interp_GetThisFieldUint8,
28290&Interp_GetThisFieldSint16,
28291&Interp_GetThisFieldUint16,
28292&Interp_GetThisFieldSint32,
28293&Interp_GetThisFieldUint32,
28294&Interp_GetThisFieldSint64,
28295&Interp_GetThisFieldUint64,
28296&Interp_GetThisFieldIntAP,
28297&Interp_GetThisFieldIntAPS,
28298&Interp_GetThisFieldBool,
28299&Interp_GetThisFieldFixedPoint,
28300&Interp_GetThisFieldPtr,
28301&Interp_GetThisFieldMemberPtr,
28302&Interp_GetThisFieldFloat,
28303#endif
28304#ifdef GET_INTERPFN_DISPATCHERS
28305PRESERVE_NONE
28306static bool Interp_GetThisFieldSint8(InterpState &S, CodePtr &PC) {
28307 {
28308 CodePtr OpPC = PC;
28309 const auto V0 = ReadArg<uint32_t>(S, PC);
28310 if (!GetThisField<PT_Sint8>(S, OpPC, V0)) return false;
28311 }
28312#if USE_TAILCALLS
28313 MUSTTAIL return InterpNext(S, PC);
28314#else
28315 return true;
28316#endif
28317}
28318PRESERVE_NONE
28319static bool Interp_GetThisFieldUint8(InterpState &S, CodePtr &PC) {
28320 {
28321 CodePtr OpPC = PC;
28322 const auto V0 = ReadArg<uint32_t>(S, PC);
28323 if (!GetThisField<PT_Uint8>(S, OpPC, V0)) return false;
28324 }
28325#if USE_TAILCALLS
28326 MUSTTAIL return InterpNext(S, PC);
28327#else
28328 return true;
28329#endif
28330}
28331PRESERVE_NONE
28332static bool Interp_GetThisFieldSint16(InterpState &S, CodePtr &PC) {
28333 {
28334 CodePtr OpPC = PC;
28335 const auto V0 = ReadArg<uint32_t>(S, PC);
28336 if (!GetThisField<PT_Sint16>(S, OpPC, V0)) return false;
28337 }
28338#if USE_TAILCALLS
28339 MUSTTAIL return InterpNext(S, PC);
28340#else
28341 return true;
28342#endif
28343}
28344PRESERVE_NONE
28345static bool Interp_GetThisFieldUint16(InterpState &S, CodePtr &PC) {
28346 {
28347 CodePtr OpPC = PC;
28348 const auto V0 = ReadArg<uint32_t>(S, PC);
28349 if (!GetThisField<PT_Uint16>(S, OpPC, V0)) return false;
28350 }
28351#if USE_TAILCALLS
28352 MUSTTAIL return InterpNext(S, PC);
28353#else
28354 return true;
28355#endif
28356}
28357PRESERVE_NONE
28358static bool Interp_GetThisFieldSint32(InterpState &S, CodePtr &PC) {
28359 {
28360 CodePtr OpPC = PC;
28361 const auto V0 = ReadArg<uint32_t>(S, PC);
28362 if (!GetThisField<PT_Sint32>(S, OpPC, V0)) return false;
28363 }
28364#if USE_TAILCALLS
28365 MUSTTAIL return InterpNext(S, PC);
28366#else
28367 return true;
28368#endif
28369}
28370PRESERVE_NONE
28371static bool Interp_GetThisFieldUint32(InterpState &S, CodePtr &PC) {
28372 {
28373 CodePtr OpPC = PC;
28374 const auto V0 = ReadArg<uint32_t>(S, PC);
28375 if (!GetThisField<PT_Uint32>(S, OpPC, V0)) return false;
28376 }
28377#if USE_TAILCALLS
28378 MUSTTAIL return InterpNext(S, PC);
28379#else
28380 return true;
28381#endif
28382}
28383PRESERVE_NONE
28384static bool Interp_GetThisFieldSint64(InterpState &S, CodePtr &PC) {
28385 {
28386 CodePtr OpPC = PC;
28387 const auto V0 = ReadArg<uint32_t>(S, PC);
28388 if (!GetThisField<PT_Sint64>(S, OpPC, V0)) return false;
28389 }
28390#if USE_TAILCALLS
28391 MUSTTAIL return InterpNext(S, PC);
28392#else
28393 return true;
28394#endif
28395}
28396PRESERVE_NONE
28397static bool Interp_GetThisFieldUint64(InterpState &S, CodePtr &PC) {
28398 {
28399 CodePtr OpPC = PC;
28400 const auto V0 = ReadArg<uint32_t>(S, PC);
28401 if (!GetThisField<PT_Uint64>(S, OpPC, V0)) return false;
28402 }
28403#if USE_TAILCALLS
28404 MUSTTAIL return InterpNext(S, PC);
28405#else
28406 return true;
28407#endif
28408}
28409PRESERVE_NONE
28410static bool Interp_GetThisFieldIntAP(InterpState &S, CodePtr &PC) {
28411 {
28412 CodePtr OpPC = PC;
28413 const auto V0 = ReadArg<uint32_t>(S, PC);
28414 if (!GetThisField<PT_IntAP>(S, OpPC, V0)) return false;
28415 }
28416#if USE_TAILCALLS
28417 MUSTTAIL return InterpNext(S, PC);
28418#else
28419 return true;
28420#endif
28421}
28422PRESERVE_NONE
28423static bool Interp_GetThisFieldIntAPS(InterpState &S, CodePtr &PC) {
28424 {
28425 CodePtr OpPC = PC;
28426 const auto V0 = ReadArg<uint32_t>(S, PC);
28427 if (!GetThisField<PT_IntAPS>(S, OpPC, V0)) return false;
28428 }
28429#if USE_TAILCALLS
28430 MUSTTAIL return InterpNext(S, PC);
28431#else
28432 return true;
28433#endif
28434}
28435PRESERVE_NONE
28436static bool Interp_GetThisFieldBool(InterpState &S, CodePtr &PC) {
28437 {
28438 CodePtr OpPC = PC;
28439 const auto V0 = ReadArg<uint32_t>(S, PC);
28440 if (!GetThisField<PT_Bool>(S, OpPC, V0)) return false;
28441 }
28442#if USE_TAILCALLS
28443 MUSTTAIL return InterpNext(S, PC);
28444#else
28445 return true;
28446#endif
28447}
28448PRESERVE_NONE
28449static bool Interp_GetThisFieldFixedPoint(InterpState &S, CodePtr &PC) {
28450 {
28451 CodePtr OpPC = PC;
28452 const auto V0 = ReadArg<uint32_t>(S, PC);
28453 if (!GetThisField<PT_FixedPoint>(S, OpPC, V0)) return false;
28454 }
28455#if USE_TAILCALLS
28456 MUSTTAIL return InterpNext(S, PC);
28457#else
28458 return true;
28459#endif
28460}
28461PRESERVE_NONE
28462static bool Interp_GetThisFieldPtr(InterpState &S, CodePtr &PC) {
28463 {
28464 CodePtr OpPC = PC;
28465 const auto V0 = ReadArg<uint32_t>(S, PC);
28466 if (!GetThisField<PT_Ptr>(S, OpPC, V0)) return false;
28467 }
28468#if USE_TAILCALLS
28469 MUSTTAIL return InterpNext(S, PC);
28470#else
28471 return true;
28472#endif
28473}
28474PRESERVE_NONE
28475static bool Interp_GetThisFieldMemberPtr(InterpState &S, CodePtr &PC) {
28476 {
28477 CodePtr OpPC = PC;
28478 const auto V0 = ReadArg<uint32_t>(S, PC);
28479 if (!GetThisField<PT_MemberPtr>(S, OpPC, V0)) return false;
28480 }
28481#if USE_TAILCALLS
28482 MUSTTAIL return InterpNext(S, PC);
28483#else
28484 return true;
28485#endif
28486}
28487PRESERVE_NONE
28488static bool Interp_GetThisFieldFloat(InterpState &S, CodePtr &PC) {
28489 {
28490 CodePtr OpPC = PC;
28491 const auto V0 = ReadArg<uint32_t>(S, PC);
28492 if (!GetThisField<PT_Float>(S, OpPC, V0)) return false;
28493 }
28494#if USE_TAILCALLS
28495 MUSTTAIL return InterpNext(S, PC);
28496#else
28497 return true;
28498#endif
28499}
28500#endif
28501#ifdef GET_DISASM
28502case OP_GetThisFieldSint8:
28503 Text.Op = PrintName("GetThisFieldSint8");
28504 Text.Args.push_back(printArg<uint32_t>(P, PC));
28505 break;
28506case OP_GetThisFieldUint8:
28507 Text.Op = PrintName("GetThisFieldUint8");
28508 Text.Args.push_back(printArg<uint32_t>(P, PC));
28509 break;
28510case OP_GetThisFieldSint16:
28511 Text.Op = PrintName("GetThisFieldSint16");
28512 Text.Args.push_back(printArg<uint32_t>(P, PC));
28513 break;
28514case OP_GetThisFieldUint16:
28515 Text.Op = PrintName("GetThisFieldUint16");
28516 Text.Args.push_back(printArg<uint32_t>(P, PC));
28517 break;
28518case OP_GetThisFieldSint32:
28519 Text.Op = PrintName("GetThisFieldSint32");
28520 Text.Args.push_back(printArg<uint32_t>(P, PC));
28521 break;
28522case OP_GetThisFieldUint32:
28523 Text.Op = PrintName("GetThisFieldUint32");
28524 Text.Args.push_back(printArg<uint32_t>(P, PC));
28525 break;
28526case OP_GetThisFieldSint64:
28527 Text.Op = PrintName("GetThisFieldSint64");
28528 Text.Args.push_back(printArg<uint32_t>(P, PC));
28529 break;
28530case OP_GetThisFieldUint64:
28531 Text.Op = PrintName("GetThisFieldUint64");
28532 Text.Args.push_back(printArg<uint32_t>(P, PC));
28533 break;
28534case OP_GetThisFieldIntAP:
28535 Text.Op = PrintName("GetThisFieldIntAP");
28536 Text.Args.push_back(printArg<uint32_t>(P, PC));
28537 break;
28538case OP_GetThisFieldIntAPS:
28539 Text.Op = PrintName("GetThisFieldIntAPS");
28540 Text.Args.push_back(printArg<uint32_t>(P, PC));
28541 break;
28542case OP_GetThisFieldBool:
28543 Text.Op = PrintName("GetThisFieldBool");
28544 Text.Args.push_back(printArg<uint32_t>(P, PC));
28545 break;
28546case OP_GetThisFieldFixedPoint:
28547 Text.Op = PrintName("GetThisFieldFixedPoint");
28548 Text.Args.push_back(printArg<uint32_t>(P, PC));
28549 break;
28550case OP_GetThisFieldPtr:
28551 Text.Op = PrintName("GetThisFieldPtr");
28552 Text.Args.push_back(printArg<uint32_t>(P, PC));
28553 break;
28554case OP_GetThisFieldMemberPtr:
28555 Text.Op = PrintName("GetThisFieldMemberPtr");
28556 Text.Args.push_back(printArg<uint32_t>(P, PC));
28557 break;
28558case OP_GetThisFieldFloat:
28559 Text.Op = PrintName("GetThisFieldFloat");
28560 Text.Args.push_back(printArg<uint32_t>(P, PC));
28561 break;
28562#endif
28563#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28564bool emitGetThisFieldSint8( uint32_t , SourceInfo);
28565bool emitGetThisFieldUint8( uint32_t , SourceInfo);
28566bool emitGetThisFieldSint16( uint32_t , SourceInfo);
28567bool emitGetThisFieldUint16( uint32_t , SourceInfo);
28568bool emitGetThisFieldSint32( uint32_t , SourceInfo);
28569bool emitGetThisFieldUint32( uint32_t , SourceInfo);
28570bool emitGetThisFieldSint64( uint32_t , SourceInfo);
28571bool emitGetThisFieldUint64( uint32_t , SourceInfo);
28572bool emitGetThisFieldIntAP( uint32_t , SourceInfo);
28573bool emitGetThisFieldIntAPS( uint32_t , SourceInfo);
28574bool emitGetThisFieldBool( uint32_t , SourceInfo);
28575bool emitGetThisFieldFixedPoint( uint32_t , SourceInfo);
28576bool emitGetThisFieldPtr( uint32_t , SourceInfo);
28577bool emitGetThisFieldMemberPtr( uint32_t , SourceInfo);
28578bool emitGetThisFieldFloat( uint32_t , SourceInfo);
28579#endif
28580#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28581[[nodiscard]] bool emitGetThisField(PrimType, uint32_t, SourceInfo I);
28582#endif
28583#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
28584bool
28585#if defined(GET_EVAL_IMPL)
28586EvalEmitter
28587#else
28588ByteCodeEmitter
28589#endif
28590::emitGetThisField(PrimType T0, uint32_t A0, SourceInfo I) {
28591 switch (T0) {
28592 case PT_Sint8:
28593 return emitGetThisFieldSint8(A0, I);
28594 case PT_Uint8:
28595 return emitGetThisFieldUint8(A0, I);
28596 case PT_Sint16:
28597 return emitGetThisFieldSint16(A0, I);
28598 case PT_Uint16:
28599 return emitGetThisFieldUint16(A0, I);
28600 case PT_Sint32:
28601 return emitGetThisFieldSint32(A0, I);
28602 case PT_Uint32:
28603 return emitGetThisFieldUint32(A0, I);
28604 case PT_Sint64:
28605 return emitGetThisFieldSint64(A0, I);
28606 case PT_Uint64:
28607 return emitGetThisFieldUint64(A0, I);
28608 case PT_IntAP:
28609 return emitGetThisFieldIntAP(A0, I);
28610 case PT_IntAPS:
28611 return emitGetThisFieldIntAPS(A0, I);
28612 case PT_Bool:
28613 return emitGetThisFieldBool(A0, I);
28614 case PT_FixedPoint:
28615 return emitGetThisFieldFixedPoint(A0, I);
28616 case PT_Ptr:
28617 return emitGetThisFieldPtr(A0, I);
28618 case PT_MemberPtr:
28619 return emitGetThisFieldMemberPtr(A0, I);
28620 case PT_Float:
28621 return emitGetThisFieldFloat(A0, I);
28622 }
28623 llvm_unreachable("invalid enum value");
28624}
28625#endif
28626#ifdef GET_LINK_IMPL
28627bool ByteCodeEmitter::emitGetThisFieldSint8( uint32_t A0, SourceInfo L) {
28628 return emitOp<uint32_t>(OP_GetThisFieldSint8, A0, L);
28629}
28630bool ByteCodeEmitter::emitGetThisFieldUint8( uint32_t A0, SourceInfo L) {
28631 return emitOp<uint32_t>(OP_GetThisFieldUint8, A0, L);
28632}
28633bool ByteCodeEmitter::emitGetThisFieldSint16( uint32_t A0, SourceInfo L) {
28634 return emitOp<uint32_t>(OP_GetThisFieldSint16, A0, L);
28635}
28636bool ByteCodeEmitter::emitGetThisFieldUint16( uint32_t A0, SourceInfo L) {
28637 return emitOp<uint32_t>(OP_GetThisFieldUint16, A0, L);
28638}
28639bool ByteCodeEmitter::emitGetThisFieldSint32( uint32_t A0, SourceInfo L) {
28640 return emitOp<uint32_t>(OP_GetThisFieldSint32, A0, L);
28641}
28642bool ByteCodeEmitter::emitGetThisFieldUint32( uint32_t A0, SourceInfo L) {
28643 return emitOp<uint32_t>(OP_GetThisFieldUint32, A0, L);
28644}
28645bool ByteCodeEmitter::emitGetThisFieldSint64( uint32_t A0, SourceInfo L) {
28646 return emitOp<uint32_t>(OP_GetThisFieldSint64, A0, L);
28647}
28648bool ByteCodeEmitter::emitGetThisFieldUint64( uint32_t A0, SourceInfo L) {
28649 return emitOp<uint32_t>(OP_GetThisFieldUint64, A0, L);
28650}
28651bool ByteCodeEmitter::emitGetThisFieldIntAP( uint32_t A0, SourceInfo L) {
28652 return emitOp<uint32_t>(OP_GetThisFieldIntAP, A0, L);
28653}
28654bool ByteCodeEmitter::emitGetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
28655 return emitOp<uint32_t>(OP_GetThisFieldIntAPS, A0, L);
28656}
28657bool ByteCodeEmitter::emitGetThisFieldBool( uint32_t A0, SourceInfo L) {
28658 return emitOp<uint32_t>(OP_GetThisFieldBool, A0, L);
28659}
28660bool ByteCodeEmitter::emitGetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
28661 return emitOp<uint32_t>(OP_GetThisFieldFixedPoint, A0, L);
28662}
28663bool ByteCodeEmitter::emitGetThisFieldPtr( uint32_t A0, SourceInfo L) {
28664 return emitOp<uint32_t>(OP_GetThisFieldPtr, A0, L);
28665}
28666bool ByteCodeEmitter::emitGetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
28667 return emitOp<uint32_t>(OP_GetThisFieldMemberPtr, A0, L);
28668}
28669bool ByteCodeEmitter::emitGetThisFieldFloat( uint32_t A0, SourceInfo L) {
28670 return emitOp<uint32_t>(OP_GetThisFieldFloat, A0, L);
28671}
28672#endif
28673#ifdef GET_EVAL_IMPL
28674bool EvalEmitter::emitGetThisFieldSint8( uint32_t A0, SourceInfo L) {
28675 if (!isActive()) return true;
28676 CurrentSource = L;
28677 return GetThisField<PT_Sint8>(S, OpPC, A0);
28678}
28679bool EvalEmitter::emitGetThisFieldUint8( uint32_t A0, SourceInfo L) {
28680 if (!isActive()) return true;
28681 CurrentSource = L;
28682 return GetThisField<PT_Uint8>(S, OpPC, A0);
28683}
28684bool EvalEmitter::emitGetThisFieldSint16( uint32_t A0, SourceInfo L) {
28685 if (!isActive()) return true;
28686 CurrentSource = L;
28687 return GetThisField<PT_Sint16>(S, OpPC, A0);
28688}
28689bool EvalEmitter::emitGetThisFieldUint16( uint32_t A0, SourceInfo L) {
28690 if (!isActive()) return true;
28691 CurrentSource = L;
28692 return GetThisField<PT_Uint16>(S, OpPC, A0);
28693}
28694bool EvalEmitter::emitGetThisFieldSint32( uint32_t A0, SourceInfo L) {
28695 if (!isActive()) return true;
28696 CurrentSource = L;
28697 return GetThisField<PT_Sint32>(S, OpPC, A0);
28698}
28699bool EvalEmitter::emitGetThisFieldUint32( uint32_t A0, SourceInfo L) {
28700 if (!isActive()) return true;
28701 CurrentSource = L;
28702 return GetThisField<PT_Uint32>(S, OpPC, A0);
28703}
28704bool EvalEmitter::emitGetThisFieldSint64( uint32_t A0, SourceInfo L) {
28705 if (!isActive()) return true;
28706 CurrentSource = L;
28707 return GetThisField<PT_Sint64>(S, OpPC, A0);
28708}
28709bool EvalEmitter::emitGetThisFieldUint64( uint32_t A0, SourceInfo L) {
28710 if (!isActive()) return true;
28711 CurrentSource = L;
28712 return GetThisField<PT_Uint64>(S, OpPC, A0);
28713}
28714bool EvalEmitter::emitGetThisFieldIntAP( uint32_t A0, SourceInfo L) {
28715 if (!isActive()) return true;
28716 CurrentSource = L;
28717 return GetThisField<PT_IntAP>(S, OpPC, A0);
28718}
28719bool EvalEmitter::emitGetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
28720 if (!isActive()) return true;
28721 CurrentSource = L;
28722 return GetThisField<PT_IntAPS>(S, OpPC, A0);
28723}
28724bool EvalEmitter::emitGetThisFieldBool( uint32_t A0, SourceInfo L) {
28725 if (!isActive()) return true;
28726 CurrentSource = L;
28727 return GetThisField<PT_Bool>(S, OpPC, A0);
28728}
28729bool EvalEmitter::emitGetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
28730 if (!isActive()) return true;
28731 CurrentSource = L;
28732 return GetThisField<PT_FixedPoint>(S, OpPC, A0);
28733}
28734bool EvalEmitter::emitGetThisFieldPtr( uint32_t A0, SourceInfo L) {
28735 if (!isActive()) return true;
28736 CurrentSource = L;
28737 return GetThisField<PT_Ptr>(S, OpPC, A0);
28738}
28739bool EvalEmitter::emitGetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
28740 if (!isActive()) return true;
28741 CurrentSource = L;
28742 return GetThisField<PT_MemberPtr>(S, OpPC, A0);
28743}
28744bool EvalEmitter::emitGetThisFieldFloat( uint32_t A0, SourceInfo L) {
28745 if (!isActive()) return true;
28746 CurrentSource = L;
28747 return GetThisField<PT_Float>(S, OpPC, A0);
28748}
28749#endif
28750#ifdef GET_OPCODE_NAMES
28751OP_GetTypeid,
28752#endif
28753#ifdef GET_INTERPFN_LIST
28754&Interp_GetTypeid,
28755#endif
28756#ifdef GET_INTERPFN_DISPATCHERS
28757PRESERVE_NONE
28758static bool Interp_GetTypeid(InterpState &S, CodePtr &PC) {
28759 {
28760 CodePtr OpPC = PC;
28761 const auto V0 = ReadArg<const Type *>(S, PC);
28762 const auto V1 = ReadArg<const Type *>(S, PC);
28763 if (!GetTypeid(S, OpPC, V0, V1)) return false;
28764 }
28765#if USE_TAILCALLS
28766 MUSTTAIL return InterpNext(S, PC);
28767#else
28768 return true;
28769#endif
28770}
28771#endif
28772#ifdef GET_DISASM
28773case OP_GetTypeid:
28774 Text.Op = PrintName("GetTypeid");
28775 Text.Args.push_back(printArg<const Type *>(P, PC));
28776 Text.Args.push_back(printArg<const Type *>(P, PC));
28777 break;
28778#endif
28779#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28780bool emitGetTypeid( const Type * , const Type * , SourceInfo);
28781#endif
28782#ifdef GET_LINK_IMPL
28783bool ByteCodeEmitter::emitGetTypeid( const Type * A0, const Type * A1, SourceInfo L) {
28784 return emitOp<const Type *, const Type *>(OP_GetTypeid, A0, A1, L);
28785}
28786#endif
28787#ifdef GET_EVAL_IMPL
28788bool EvalEmitter::emitGetTypeid( const Type * A0, const Type * A1, SourceInfo L) {
28789 if (!isActive()) return true;
28790 CurrentSource = L;
28791 return GetTypeid(S, OpPC, A0, A1);
28792}
28793#endif
28794#ifdef GET_OPCODE_NAMES
28795OP_GetTypeidPtr,
28796#endif
28797#ifdef GET_INTERPFN_LIST
28798&Interp_GetTypeidPtr,
28799#endif
28800#ifdef GET_INTERPFN_DISPATCHERS
28801PRESERVE_NONE
28802static bool Interp_GetTypeidPtr(InterpState &S, CodePtr &PC) {
28803 {
28804 CodePtr OpPC = PC;
28805 const auto V0 = ReadArg<const Type *>(S, PC);
28806 if (!GetTypeidPtr(S, OpPC, V0)) return false;
28807 }
28808#if USE_TAILCALLS
28809 MUSTTAIL return InterpNext(S, PC);
28810#else
28811 return true;
28812#endif
28813}
28814#endif
28815#ifdef GET_DISASM
28816case OP_GetTypeidPtr:
28817 Text.Op = PrintName("GetTypeidPtr");
28818 Text.Args.push_back(printArg<const Type *>(P, PC));
28819 break;
28820#endif
28821#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28822bool emitGetTypeidPtr( const Type * , SourceInfo);
28823#endif
28824#ifdef GET_LINK_IMPL
28825bool ByteCodeEmitter::emitGetTypeidPtr( const Type * A0, SourceInfo L) {
28826 return emitOp<const Type *>(OP_GetTypeidPtr, A0, L);
28827}
28828#endif
28829#ifdef GET_EVAL_IMPL
28830bool EvalEmitter::emitGetTypeidPtr( const Type * A0, SourceInfo L) {
28831 if (!isActive()) return true;
28832 CurrentSource = L;
28833 return GetTypeidPtr(S, OpPC, A0);
28834}
28835#endif
28836#ifdef GET_OPCODE_NAMES
28837OP_IncSint8,
28838OP_IncUint8,
28839OP_IncSint16,
28840OP_IncUint16,
28841OP_IncSint32,
28842OP_IncUint32,
28843OP_IncSint64,
28844OP_IncUint64,
28845OP_IncIntAP,
28846OP_IncIntAPS,
28847OP_IncBool,
28848OP_IncFixedPoint,
28849#endif
28850#ifdef GET_INTERPFN_LIST
28851&Interp_IncSint8,
28852&Interp_IncUint8,
28853&Interp_IncSint16,
28854&Interp_IncUint16,
28855&Interp_IncSint32,
28856&Interp_IncUint32,
28857&Interp_IncSint64,
28858&Interp_IncUint64,
28859&Interp_IncIntAP,
28860&Interp_IncIntAPS,
28861&Interp_IncBool,
28862&Interp_IncFixedPoint,
28863#endif
28864#ifdef GET_INTERPFN_DISPATCHERS
28865PRESERVE_NONE
28866static bool Interp_IncSint8(InterpState &S, CodePtr &PC) {
28867 {
28868 CodePtr OpPC = PC;
28869 const auto V0 = ReadArg<bool>(S, PC);
28870 if (!Inc<PT_Sint8>(S, OpPC, V0)) return false;
28871 }
28872#if USE_TAILCALLS
28873 MUSTTAIL return InterpNext(S, PC);
28874#else
28875 return true;
28876#endif
28877}
28878PRESERVE_NONE
28879static bool Interp_IncUint8(InterpState &S, CodePtr &PC) {
28880 {
28881 CodePtr OpPC = PC;
28882 const auto V0 = ReadArg<bool>(S, PC);
28883 if (!Inc<PT_Uint8>(S, OpPC, V0)) return false;
28884 }
28885#if USE_TAILCALLS
28886 MUSTTAIL return InterpNext(S, PC);
28887#else
28888 return true;
28889#endif
28890}
28891PRESERVE_NONE
28892static bool Interp_IncSint16(InterpState &S, CodePtr &PC) {
28893 {
28894 CodePtr OpPC = PC;
28895 const auto V0 = ReadArg<bool>(S, PC);
28896 if (!Inc<PT_Sint16>(S, OpPC, V0)) return false;
28897 }
28898#if USE_TAILCALLS
28899 MUSTTAIL return InterpNext(S, PC);
28900#else
28901 return true;
28902#endif
28903}
28904PRESERVE_NONE
28905static bool Interp_IncUint16(InterpState &S, CodePtr &PC) {
28906 {
28907 CodePtr OpPC = PC;
28908 const auto V0 = ReadArg<bool>(S, PC);
28909 if (!Inc<PT_Uint16>(S, OpPC, V0)) return false;
28910 }
28911#if USE_TAILCALLS
28912 MUSTTAIL return InterpNext(S, PC);
28913#else
28914 return true;
28915#endif
28916}
28917PRESERVE_NONE
28918static bool Interp_IncSint32(InterpState &S, CodePtr &PC) {
28919 {
28920 CodePtr OpPC = PC;
28921 const auto V0 = ReadArg<bool>(S, PC);
28922 if (!Inc<PT_Sint32>(S, OpPC, V0)) return false;
28923 }
28924#if USE_TAILCALLS
28925 MUSTTAIL return InterpNext(S, PC);
28926#else
28927 return true;
28928#endif
28929}
28930PRESERVE_NONE
28931static bool Interp_IncUint32(InterpState &S, CodePtr &PC) {
28932 {
28933 CodePtr OpPC = PC;
28934 const auto V0 = ReadArg<bool>(S, PC);
28935 if (!Inc<PT_Uint32>(S, OpPC, V0)) return false;
28936 }
28937#if USE_TAILCALLS
28938 MUSTTAIL return InterpNext(S, PC);
28939#else
28940 return true;
28941#endif
28942}
28943PRESERVE_NONE
28944static bool Interp_IncSint64(InterpState &S, CodePtr &PC) {
28945 {
28946 CodePtr OpPC = PC;
28947 const auto V0 = ReadArg<bool>(S, PC);
28948 if (!Inc<PT_Sint64>(S, OpPC, V0)) return false;
28949 }
28950#if USE_TAILCALLS
28951 MUSTTAIL return InterpNext(S, PC);
28952#else
28953 return true;
28954#endif
28955}
28956PRESERVE_NONE
28957static bool Interp_IncUint64(InterpState &S, CodePtr &PC) {
28958 {
28959 CodePtr OpPC = PC;
28960 const auto V0 = ReadArg<bool>(S, PC);
28961 if (!Inc<PT_Uint64>(S, OpPC, V0)) return false;
28962 }
28963#if USE_TAILCALLS
28964 MUSTTAIL return InterpNext(S, PC);
28965#else
28966 return true;
28967#endif
28968}
28969PRESERVE_NONE
28970static bool Interp_IncIntAP(InterpState &S, CodePtr &PC) {
28971 {
28972 CodePtr OpPC = PC;
28973 const auto V0 = ReadArg<bool>(S, PC);
28974 if (!Inc<PT_IntAP>(S, OpPC, V0)) return false;
28975 }
28976#if USE_TAILCALLS
28977 MUSTTAIL return InterpNext(S, PC);
28978#else
28979 return true;
28980#endif
28981}
28982PRESERVE_NONE
28983static bool Interp_IncIntAPS(InterpState &S, CodePtr &PC) {
28984 {
28985 CodePtr OpPC = PC;
28986 const auto V0 = ReadArg<bool>(S, PC);
28987 if (!Inc<PT_IntAPS>(S, OpPC, V0)) return false;
28988 }
28989#if USE_TAILCALLS
28990 MUSTTAIL return InterpNext(S, PC);
28991#else
28992 return true;
28993#endif
28994}
28995PRESERVE_NONE
28996static bool Interp_IncBool(InterpState &S, CodePtr &PC) {
28997 {
28998 CodePtr OpPC = PC;
28999 const auto V0 = ReadArg<bool>(S, PC);
29000 if (!Inc<PT_Bool>(S, OpPC, V0)) return false;
29001 }
29002#if USE_TAILCALLS
29003 MUSTTAIL return InterpNext(S, PC);
29004#else
29005 return true;
29006#endif
29007}
29008PRESERVE_NONE
29009static bool Interp_IncFixedPoint(InterpState &S, CodePtr &PC) {
29010 {
29011 CodePtr OpPC = PC;
29012 const auto V0 = ReadArg<bool>(S, PC);
29013 if (!Inc<PT_FixedPoint>(S, OpPC, V0)) return false;
29014 }
29015#if USE_TAILCALLS
29016 MUSTTAIL return InterpNext(S, PC);
29017#else
29018 return true;
29019#endif
29020}
29021#endif
29022#ifdef GET_DISASM
29023case OP_IncSint8:
29024 Text.Op = PrintName("IncSint8");
29025 Text.Args.push_back(printArg<bool>(P, PC));
29026 break;
29027case OP_IncUint8:
29028 Text.Op = PrintName("IncUint8");
29029 Text.Args.push_back(printArg<bool>(P, PC));
29030 break;
29031case OP_IncSint16:
29032 Text.Op = PrintName("IncSint16");
29033 Text.Args.push_back(printArg<bool>(P, PC));
29034 break;
29035case OP_IncUint16:
29036 Text.Op = PrintName("IncUint16");
29037 Text.Args.push_back(printArg<bool>(P, PC));
29038 break;
29039case OP_IncSint32:
29040 Text.Op = PrintName("IncSint32");
29041 Text.Args.push_back(printArg<bool>(P, PC));
29042 break;
29043case OP_IncUint32:
29044 Text.Op = PrintName("IncUint32");
29045 Text.Args.push_back(printArg<bool>(P, PC));
29046 break;
29047case OP_IncSint64:
29048 Text.Op = PrintName("IncSint64");
29049 Text.Args.push_back(printArg<bool>(P, PC));
29050 break;
29051case OP_IncUint64:
29052 Text.Op = PrintName("IncUint64");
29053 Text.Args.push_back(printArg<bool>(P, PC));
29054 break;
29055case OP_IncIntAP:
29056 Text.Op = PrintName("IncIntAP");
29057 Text.Args.push_back(printArg<bool>(P, PC));
29058 break;
29059case OP_IncIntAPS:
29060 Text.Op = PrintName("IncIntAPS");
29061 Text.Args.push_back(printArg<bool>(P, PC));
29062 break;
29063case OP_IncBool:
29064 Text.Op = PrintName("IncBool");
29065 Text.Args.push_back(printArg<bool>(P, PC));
29066 break;
29067case OP_IncFixedPoint:
29068 Text.Op = PrintName("IncFixedPoint");
29069 Text.Args.push_back(printArg<bool>(P, PC));
29070 break;
29071#endif
29072#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29073bool emitIncSint8( bool , SourceInfo);
29074bool emitIncUint8( bool , SourceInfo);
29075bool emitIncSint16( bool , SourceInfo);
29076bool emitIncUint16( bool , SourceInfo);
29077bool emitIncSint32( bool , SourceInfo);
29078bool emitIncUint32( bool , SourceInfo);
29079bool emitIncSint64( bool , SourceInfo);
29080bool emitIncUint64( bool , SourceInfo);
29081bool emitIncIntAP( bool , SourceInfo);
29082bool emitIncIntAPS( bool , SourceInfo);
29083bool emitIncBool( bool , SourceInfo);
29084bool emitIncFixedPoint( bool , SourceInfo);
29085#endif
29086#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29087[[nodiscard]] bool emitInc(PrimType, bool, SourceInfo I);
29088#endif
29089#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
29090bool
29091#if defined(GET_EVAL_IMPL)
29092EvalEmitter
29093#else
29094ByteCodeEmitter
29095#endif
29096::emitInc(PrimType T0, bool A0, SourceInfo I) {
29097 switch (T0) {
29098 case PT_Sint8:
29099 return emitIncSint8(A0, I);
29100 case PT_Uint8:
29101 return emitIncUint8(A0, I);
29102 case PT_Sint16:
29103 return emitIncSint16(A0, I);
29104 case PT_Uint16:
29105 return emitIncUint16(A0, I);
29106 case PT_Sint32:
29107 return emitIncSint32(A0, I);
29108 case PT_Uint32:
29109 return emitIncUint32(A0, I);
29110 case PT_Sint64:
29111 return emitIncSint64(A0, I);
29112 case PT_Uint64:
29113 return emitIncUint64(A0, I);
29114 case PT_IntAP:
29115 return emitIncIntAP(A0, I);
29116 case PT_IntAPS:
29117 return emitIncIntAPS(A0, I);
29118 case PT_Bool:
29119 return emitIncBool(A0, I);
29120 case PT_FixedPoint:
29121 return emitIncFixedPoint(A0, I);
29122 default: llvm_unreachable("invalid type: emitInc");
29123 }
29124 llvm_unreachable("invalid enum value");
29125}
29126#endif
29127#ifdef GET_LINK_IMPL
29128bool ByteCodeEmitter::emitIncSint8( bool A0, SourceInfo L) {
29129 return emitOp<bool>(OP_IncSint8, A0, L);
29130}
29131bool ByteCodeEmitter::emitIncUint8( bool A0, SourceInfo L) {
29132 return emitOp<bool>(OP_IncUint8, A0, L);
29133}
29134bool ByteCodeEmitter::emitIncSint16( bool A0, SourceInfo L) {
29135 return emitOp<bool>(OP_IncSint16, A0, L);
29136}
29137bool ByteCodeEmitter::emitIncUint16( bool A0, SourceInfo L) {
29138 return emitOp<bool>(OP_IncUint16, A0, L);
29139}
29140bool ByteCodeEmitter::emitIncSint32( bool A0, SourceInfo L) {
29141 return emitOp<bool>(OP_IncSint32, A0, L);
29142}
29143bool ByteCodeEmitter::emitIncUint32( bool A0, SourceInfo L) {
29144 return emitOp<bool>(OP_IncUint32, A0, L);
29145}
29146bool ByteCodeEmitter::emitIncSint64( bool A0, SourceInfo L) {
29147 return emitOp<bool>(OP_IncSint64, A0, L);
29148}
29149bool ByteCodeEmitter::emitIncUint64( bool A0, SourceInfo L) {
29150 return emitOp<bool>(OP_IncUint64, A0, L);
29151}
29152bool ByteCodeEmitter::emitIncIntAP( bool A0, SourceInfo L) {
29153 return emitOp<bool>(OP_IncIntAP, A0, L);
29154}
29155bool ByteCodeEmitter::emitIncIntAPS( bool A0, SourceInfo L) {
29156 return emitOp<bool>(OP_IncIntAPS, A0, L);
29157}
29158bool ByteCodeEmitter::emitIncBool( bool A0, SourceInfo L) {
29159 return emitOp<bool>(OP_IncBool, A0, L);
29160}
29161bool ByteCodeEmitter::emitIncFixedPoint( bool A0, SourceInfo L) {
29162 return emitOp<bool>(OP_IncFixedPoint, A0, L);
29163}
29164#endif
29165#ifdef GET_EVAL_IMPL
29166bool EvalEmitter::emitIncSint8( bool A0, SourceInfo L) {
29167 if (!isActive()) return true;
29168 CurrentSource = L;
29169 return Inc<PT_Sint8>(S, OpPC, A0);
29170}
29171bool EvalEmitter::emitIncUint8( bool A0, SourceInfo L) {
29172 if (!isActive()) return true;
29173 CurrentSource = L;
29174 return Inc<PT_Uint8>(S, OpPC, A0);
29175}
29176bool EvalEmitter::emitIncSint16( bool A0, SourceInfo L) {
29177 if (!isActive()) return true;
29178 CurrentSource = L;
29179 return Inc<PT_Sint16>(S, OpPC, A0);
29180}
29181bool EvalEmitter::emitIncUint16( bool A0, SourceInfo L) {
29182 if (!isActive()) return true;
29183 CurrentSource = L;
29184 return Inc<PT_Uint16>(S, OpPC, A0);
29185}
29186bool EvalEmitter::emitIncSint32( bool A0, SourceInfo L) {
29187 if (!isActive()) return true;
29188 CurrentSource = L;
29189 return Inc<PT_Sint32>(S, OpPC, A0);
29190}
29191bool EvalEmitter::emitIncUint32( bool A0, SourceInfo L) {
29192 if (!isActive()) return true;
29193 CurrentSource = L;
29194 return Inc<PT_Uint32>(S, OpPC, A0);
29195}
29196bool EvalEmitter::emitIncSint64( bool A0, SourceInfo L) {
29197 if (!isActive()) return true;
29198 CurrentSource = L;
29199 return Inc<PT_Sint64>(S, OpPC, A0);
29200}
29201bool EvalEmitter::emitIncUint64( bool A0, SourceInfo L) {
29202 if (!isActive()) return true;
29203 CurrentSource = L;
29204 return Inc<PT_Uint64>(S, OpPC, A0);
29205}
29206bool EvalEmitter::emitIncIntAP( bool A0, SourceInfo L) {
29207 if (!isActive()) return true;
29208 CurrentSource = L;
29209 return Inc<PT_IntAP>(S, OpPC, A0);
29210}
29211bool EvalEmitter::emitIncIntAPS( bool A0, SourceInfo L) {
29212 if (!isActive()) return true;
29213 CurrentSource = L;
29214 return Inc<PT_IntAPS>(S, OpPC, A0);
29215}
29216bool EvalEmitter::emitIncBool( bool A0, SourceInfo L) {
29217 if (!isActive()) return true;
29218 CurrentSource = L;
29219 return Inc<PT_Bool>(S, OpPC, A0);
29220}
29221bool EvalEmitter::emitIncFixedPoint( bool A0, SourceInfo L) {
29222 if (!isActive()) return true;
29223 CurrentSource = L;
29224 return Inc<PT_FixedPoint>(S, OpPC, A0);
29225}
29226#endif
29227#ifdef GET_OPCODE_NAMES
29228OP_IncBitfieldSint8,
29229OP_IncBitfieldUint8,
29230OP_IncBitfieldSint16,
29231OP_IncBitfieldUint16,
29232OP_IncBitfieldSint32,
29233OP_IncBitfieldUint32,
29234OP_IncBitfieldSint64,
29235OP_IncBitfieldUint64,
29236OP_IncBitfieldIntAP,
29237OP_IncBitfieldIntAPS,
29238OP_IncBitfieldBool,
29239OP_IncBitfieldFixedPoint,
29240#endif
29241#ifdef GET_INTERPFN_LIST
29242&Interp_IncBitfieldSint8,
29243&Interp_IncBitfieldUint8,
29244&Interp_IncBitfieldSint16,
29245&Interp_IncBitfieldUint16,
29246&Interp_IncBitfieldSint32,
29247&Interp_IncBitfieldUint32,
29248&Interp_IncBitfieldSint64,
29249&Interp_IncBitfieldUint64,
29250&Interp_IncBitfieldIntAP,
29251&Interp_IncBitfieldIntAPS,
29252&Interp_IncBitfieldBool,
29253&Interp_IncBitfieldFixedPoint,
29254#endif
29255#ifdef GET_INTERPFN_DISPATCHERS
29256PRESERVE_NONE
29257static bool Interp_IncBitfieldSint8(InterpState &S, CodePtr &PC) {
29258 {
29259 CodePtr OpPC = PC;
29260 const auto V0 = ReadArg<bool>(S, PC);
29261 const auto V1 = ReadArg<uint32_t>(S, PC);
29262 if (!IncBitfield<PT_Sint8>(S, OpPC, V0, V1)) return false;
29263 }
29264#if USE_TAILCALLS
29265 MUSTTAIL return InterpNext(S, PC);
29266#else
29267 return true;
29268#endif
29269}
29270PRESERVE_NONE
29271static bool Interp_IncBitfieldUint8(InterpState &S, CodePtr &PC) {
29272 {
29273 CodePtr OpPC = PC;
29274 const auto V0 = ReadArg<bool>(S, PC);
29275 const auto V1 = ReadArg<uint32_t>(S, PC);
29276 if (!IncBitfield<PT_Uint8>(S, OpPC, V0, V1)) return false;
29277 }
29278#if USE_TAILCALLS
29279 MUSTTAIL return InterpNext(S, PC);
29280#else
29281 return true;
29282#endif
29283}
29284PRESERVE_NONE
29285static bool Interp_IncBitfieldSint16(InterpState &S, CodePtr &PC) {
29286 {
29287 CodePtr OpPC = PC;
29288 const auto V0 = ReadArg<bool>(S, PC);
29289 const auto V1 = ReadArg<uint32_t>(S, PC);
29290 if (!IncBitfield<PT_Sint16>(S, OpPC, V0, V1)) return false;
29291 }
29292#if USE_TAILCALLS
29293 MUSTTAIL return InterpNext(S, PC);
29294#else
29295 return true;
29296#endif
29297}
29298PRESERVE_NONE
29299static bool Interp_IncBitfieldUint16(InterpState &S, CodePtr &PC) {
29300 {
29301 CodePtr OpPC = PC;
29302 const auto V0 = ReadArg<bool>(S, PC);
29303 const auto V1 = ReadArg<uint32_t>(S, PC);
29304 if (!IncBitfield<PT_Uint16>(S, OpPC, V0, V1)) return false;
29305 }
29306#if USE_TAILCALLS
29307 MUSTTAIL return InterpNext(S, PC);
29308#else
29309 return true;
29310#endif
29311}
29312PRESERVE_NONE
29313static bool Interp_IncBitfieldSint32(InterpState &S, CodePtr &PC) {
29314 {
29315 CodePtr OpPC = PC;
29316 const auto V0 = ReadArg<bool>(S, PC);
29317 const auto V1 = ReadArg<uint32_t>(S, PC);
29318 if (!IncBitfield<PT_Sint32>(S, OpPC, V0, V1)) return false;
29319 }
29320#if USE_TAILCALLS
29321 MUSTTAIL return InterpNext(S, PC);
29322#else
29323 return true;
29324#endif
29325}
29326PRESERVE_NONE
29327static bool Interp_IncBitfieldUint32(InterpState &S, CodePtr &PC) {
29328 {
29329 CodePtr OpPC = PC;
29330 const auto V0 = ReadArg<bool>(S, PC);
29331 const auto V1 = ReadArg<uint32_t>(S, PC);
29332 if (!IncBitfield<PT_Uint32>(S, OpPC, V0, V1)) return false;
29333 }
29334#if USE_TAILCALLS
29335 MUSTTAIL return InterpNext(S, PC);
29336#else
29337 return true;
29338#endif
29339}
29340PRESERVE_NONE
29341static bool Interp_IncBitfieldSint64(InterpState &S, CodePtr &PC) {
29342 {
29343 CodePtr OpPC = PC;
29344 const auto V0 = ReadArg<bool>(S, PC);
29345 const auto V1 = ReadArg<uint32_t>(S, PC);
29346 if (!IncBitfield<PT_Sint64>(S, OpPC, V0, V1)) return false;
29347 }
29348#if USE_TAILCALLS
29349 MUSTTAIL return InterpNext(S, PC);
29350#else
29351 return true;
29352#endif
29353}
29354PRESERVE_NONE
29355static bool Interp_IncBitfieldUint64(InterpState &S, CodePtr &PC) {
29356 {
29357 CodePtr OpPC = PC;
29358 const auto V0 = ReadArg<bool>(S, PC);
29359 const auto V1 = ReadArg<uint32_t>(S, PC);
29360 if (!IncBitfield<PT_Uint64>(S, OpPC, V0, V1)) return false;
29361 }
29362#if USE_TAILCALLS
29363 MUSTTAIL return InterpNext(S, PC);
29364#else
29365 return true;
29366#endif
29367}
29368PRESERVE_NONE
29369static bool Interp_IncBitfieldIntAP(InterpState &S, CodePtr &PC) {
29370 {
29371 CodePtr OpPC = PC;
29372 const auto V0 = ReadArg<bool>(S, PC);
29373 const auto V1 = ReadArg<uint32_t>(S, PC);
29374 if (!IncBitfield<PT_IntAP>(S, OpPC, V0, V1)) return false;
29375 }
29376#if USE_TAILCALLS
29377 MUSTTAIL return InterpNext(S, PC);
29378#else
29379 return true;
29380#endif
29381}
29382PRESERVE_NONE
29383static bool Interp_IncBitfieldIntAPS(InterpState &S, CodePtr &PC) {
29384 {
29385 CodePtr OpPC = PC;
29386 const auto V0 = ReadArg<bool>(S, PC);
29387 const auto V1 = ReadArg<uint32_t>(S, PC);
29388 if (!IncBitfield<PT_IntAPS>(S, OpPC, V0, V1)) return false;
29389 }
29390#if USE_TAILCALLS
29391 MUSTTAIL return InterpNext(S, PC);
29392#else
29393 return true;
29394#endif
29395}
29396PRESERVE_NONE
29397static bool Interp_IncBitfieldBool(InterpState &S, CodePtr &PC) {
29398 {
29399 CodePtr OpPC = PC;
29400 const auto V0 = ReadArg<bool>(S, PC);
29401 const auto V1 = ReadArg<uint32_t>(S, PC);
29402 if (!IncBitfield<PT_Bool>(S, OpPC, V0, V1)) return false;
29403 }
29404#if USE_TAILCALLS
29405 MUSTTAIL return InterpNext(S, PC);
29406#else
29407 return true;
29408#endif
29409}
29410PRESERVE_NONE
29411static bool Interp_IncBitfieldFixedPoint(InterpState &S, CodePtr &PC) {
29412 {
29413 CodePtr OpPC = PC;
29414 const auto V0 = ReadArg<bool>(S, PC);
29415 const auto V1 = ReadArg<uint32_t>(S, PC);
29416 if (!IncBitfield<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
29417 }
29418#if USE_TAILCALLS
29419 MUSTTAIL return InterpNext(S, PC);
29420#else
29421 return true;
29422#endif
29423}
29424#endif
29425#ifdef GET_DISASM
29426case OP_IncBitfieldSint8:
29427 Text.Op = PrintName("IncBitfieldSint8");
29428 Text.Args.push_back(printArg<bool>(P, PC));
29429 Text.Args.push_back(printArg<uint32_t>(P, PC));
29430 break;
29431case OP_IncBitfieldUint8:
29432 Text.Op = PrintName("IncBitfieldUint8");
29433 Text.Args.push_back(printArg<bool>(P, PC));
29434 Text.Args.push_back(printArg<uint32_t>(P, PC));
29435 break;
29436case OP_IncBitfieldSint16:
29437 Text.Op = PrintName("IncBitfieldSint16");
29438 Text.Args.push_back(printArg<bool>(P, PC));
29439 Text.Args.push_back(printArg<uint32_t>(P, PC));
29440 break;
29441case OP_IncBitfieldUint16:
29442 Text.Op = PrintName("IncBitfieldUint16");
29443 Text.Args.push_back(printArg<bool>(P, PC));
29444 Text.Args.push_back(printArg<uint32_t>(P, PC));
29445 break;
29446case OP_IncBitfieldSint32:
29447 Text.Op = PrintName("IncBitfieldSint32");
29448 Text.Args.push_back(printArg<bool>(P, PC));
29449 Text.Args.push_back(printArg<uint32_t>(P, PC));
29450 break;
29451case OP_IncBitfieldUint32:
29452 Text.Op = PrintName("IncBitfieldUint32");
29453 Text.Args.push_back(printArg<bool>(P, PC));
29454 Text.Args.push_back(printArg<uint32_t>(P, PC));
29455 break;
29456case OP_IncBitfieldSint64:
29457 Text.Op = PrintName("IncBitfieldSint64");
29458 Text.Args.push_back(printArg<bool>(P, PC));
29459 Text.Args.push_back(printArg<uint32_t>(P, PC));
29460 break;
29461case OP_IncBitfieldUint64:
29462 Text.Op = PrintName("IncBitfieldUint64");
29463 Text.Args.push_back(printArg<bool>(P, PC));
29464 Text.Args.push_back(printArg<uint32_t>(P, PC));
29465 break;
29466case OP_IncBitfieldIntAP:
29467 Text.Op = PrintName("IncBitfieldIntAP");
29468 Text.Args.push_back(printArg<bool>(P, PC));
29469 Text.Args.push_back(printArg<uint32_t>(P, PC));
29470 break;
29471case OP_IncBitfieldIntAPS:
29472 Text.Op = PrintName("IncBitfieldIntAPS");
29473 Text.Args.push_back(printArg<bool>(P, PC));
29474 Text.Args.push_back(printArg<uint32_t>(P, PC));
29475 break;
29476case OP_IncBitfieldBool:
29477 Text.Op = PrintName("IncBitfieldBool");
29478 Text.Args.push_back(printArg<bool>(P, PC));
29479 Text.Args.push_back(printArg<uint32_t>(P, PC));
29480 break;
29481case OP_IncBitfieldFixedPoint:
29482 Text.Op = PrintName("IncBitfieldFixedPoint");
29483 Text.Args.push_back(printArg<bool>(P, PC));
29484 Text.Args.push_back(printArg<uint32_t>(P, PC));
29485 break;
29486#endif
29487#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29488bool emitIncBitfieldSint8( bool , uint32_t , SourceInfo);
29489bool emitIncBitfieldUint8( bool , uint32_t , SourceInfo);
29490bool emitIncBitfieldSint16( bool , uint32_t , SourceInfo);
29491bool emitIncBitfieldUint16( bool , uint32_t , SourceInfo);
29492bool emitIncBitfieldSint32( bool , uint32_t , SourceInfo);
29493bool emitIncBitfieldUint32( bool , uint32_t , SourceInfo);
29494bool emitIncBitfieldSint64( bool , uint32_t , SourceInfo);
29495bool emitIncBitfieldUint64( bool , uint32_t , SourceInfo);
29496bool emitIncBitfieldIntAP( bool , uint32_t , SourceInfo);
29497bool emitIncBitfieldIntAPS( bool , uint32_t , SourceInfo);
29498bool emitIncBitfieldBool( bool , uint32_t , SourceInfo);
29499bool emitIncBitfieldFixedPoint( bool , uint32_t , SourceInfo);
29500#endif
29501#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29502[[nodiscard]] bool emitIncBitfield(PrimType, bool, uint32_t, SourceInfo I);
29503#endif
29504#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
29505bool
29506#if defined(GET_EVAL_IMPL)
29507EvalEmitter
29508#else
29509ByteCodeEmitter
29510#endif
29511::emitIncBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
29512 switch (T0) {
29513 case PT_Sint8:
29514 return emitIncBitfieldSint8(A0, A1, I);
29515 case PT_Uint8:
29516 return emitIncBitfieldUint8(A0, A1, I);
29517 case PT_Sint16:
29518 return emitIncBitfieldSint16(A0, A1, I);
29519 case PT_Uint16:
29520 return emitIncBitfieldUint16(A0, A1, I);
29521 case PT_Sint32:
29522 return emitIncBitfieldSint32(A0, A1, I);
29523 case PT_Uint32:
29524 return emitIncBitfieldUint32(A0, A1, I);
29525 case PT_Sint64:
29526 return emitIncBitfieldSint64(A0, A1, I);
29527 case PT_Uint64:
29528 return emitIncBitfieldUint64(A0, A1, I);
29529 case PT_IntAP:
29530 return emitIncBitfieldIntAP(A0, A1, I);
29531 case PT_IntAPS:
29532 return emitIncBitfieldIntAPS(A0, A1, I);
29533 case PT_Bool:
29534 return emitIncBitfieldBool(A0, A1, I);
29535 case PT_FixedPoint:
29536 return emitIncBitfieldFixedPoint(A0, A1, I);
29537 default: llvm_unreachable("invalid type: emitIncBitfield");
29538 }
29539 llvm_unreachable("invalid enum value");
29540}
29541#endif
29542#ifdef GET_LINK_IMPL
29543bool ByteCodeEmitter::emitIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
29544 return emitOp<bool, uint32_t>(OP_IncBitfieldSint8, A0, A1, L);
29545}
29546bool ByteCodeEmitter::emitIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
29547 return emitOp<bool, uint32_t>(OP_IncBitfieldUint8, A0, A1, L);
29548}
29549bool ByteCodeEmitter::emitIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
29550 return emitOp<bool, uint32_t>(OP_IncBitfieldSint16, A0, A1, L);
29551}
29552bool ByteCodeEmitter::emitIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
29553 return emitOp<bool, uint32_t>(OP_IncBitfieldUint16, A0, A1, L);
29554}
29555bool ByteCodeEmitter::emitIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
29556 return emitOp<bool, uint32_t>(OP_IncBitfieldSint32, A0, A1, L);
29557}
29558bool ByteCodeEmitter::emitIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
29559 return emitOp<bool, uint32_t>(OP_IncBitfieldUint32, A0, A1, L);
29560}
29561bool ByteCodeEmitter::emitIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
29562 return emitOp<bool, uint32_t>(OP_IncBitfieldSint64, A0, A1, L);
29563}
29564bool ByteCodeEmitter::emitIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
29565 return emitOp<bool, uint32_t>(OP_IncBitfieldUint64, A0, A1, L);
29566}
29567bool ByteCodeEmitter::emitIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
29568 return emitOp<bool, uint32_t>(OP_IncBitfieldIntAP, A0, A1, L);
29569}
29570bool ByteCodeEmitter::emitIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
29571 return emitOp<bool, uint32_t>(OP_IncBitfieldIntAPS, A0, A1, L);
29572}
29573bool ByteCodeEmitter::emitIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
29574 return emitOp<bool, uint32_t>(OP_IncBitfieldBool, A0, A1, L);
29575}
29576bool ByteCodeEmitter::emitIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
29577 return emitOp<bool, uint32_t>(OP_IncBitfieldFixedPoint, A0, A1, L);
29578}
29579#endif
29580#ifdef GET_EVAL_IMPL
29581bool EvalEmitter::emitIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
29582 if (!isActive()) return true;
29583 CurrentSource = L;
29584 return IncBitfield<PT_Sint8>(S, OpPC, A0, A1);
29585}
29586bool EvalEmitter::emitIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
29587 if (!isActive()) return true;
29588 CurrentSource = L;
29589 return IncBitfield<PT_Uint8>(S, OpPC, A0, A1);
29590}
29591bool EvalEmitter::emitIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
29592 if (!isActive()) return true;
29593 CurrentSource = L;
29594 return IncBitfield<PT_Sint16>(S, OpPC, A0, A1);
29595}
29596bool EvalEmitter::emitIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
29597 if (!isActive()) return true;
29598 CurrentSource = L;
29599 return IncBitfield<PT_Uint16>(S, OpPC, A0, A1);
29600}
29601bool EvalEmitter::emitIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
29602 if (!isActive()) return true;
29603 CurrentSource = L;
29604 return IncBitfield<PT_Sint32>(S, OpPC, A0, A1);
29605}
29606bool EvalEmitter::emitIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
29607 if (!isActive()) return true;
29608 CurrentSource = L;
29609 return IncBitfield<PT_Uint32>(S, OpPC, A0, A1);
29610}
29611bool EvalEmitter::emitIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
29612 if (!isActive()) return true;
29613 CurrentSource = L;
29614 return IncBitfield<PT_Sint64>(S, OpPC, A0, A1);
29615}
29616bool EvalEmitter::emitIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
29617 if (!isActive()) return true;
29618 CurrentSource = L;
29619 return IncBitfield<PT_Uint64>(S, OpPC, A0, A1);
29620}
29621bool EvalEmitter::emitIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
29622 if (!isActive()) return true;
29623 CurrentSource = L;
29624 return IncBitfield<PT_IntAP>(S, OpPC, A0, A1);
29625}
29626bool EvalEmitter::emitIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
29627 if (!isActive()) return true;
29628 CurrentSource = L;
29629 return IncBitfield<PT_IntAPS>(S, OpPC, A0, A1);
29630}
29631bool EvalEmitter::emitIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
29632 if (!isActive()) return true;
29633 CurrentSource = L;
29634 return IncBitfield<PT_Bool>(S, OpPC, A0, A1);
29635}
29636bool EvalEmitter::emitIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
29637 if (!isActive()) return true;
29638 CurrentSource = L;
29639 return IncBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
29640}
29641#endif
29642#ifdef GET_OPCODE_NAMES
29643OP_IncPopSint8,
29644OP_IncPopUint8,
29645OP_IncPopSint16,
29646OP_IncPopUint16,
29647OP_IncPopSint32,
29648OP_IncPopUint32,
29649OP_IncPopSint64,
29650OP_IncPopUint64,
29651OP_IncPopIntAP,
29652OP_IncPopIntAPS,
29653OP_IncPopBool,
29654OP_IncPopFixedPoint,
29655#endif
29656#ifdef GET_INTERPFN_LIST
29657&Interp_IncPopSint8,
29658&Interp_IncPopUint8,
29659&Interp_IncPopSint16,
29660&Interp_IncPopUint16,
29661&Interp_IncPopSint32,
29662&Interp_IncPopUint32,
29663&Interp_IncPopSint64,
29664&Interp_IncPopUint64,
29665&Interp_IncPopIntAP,
29666&Interp_IncPopIntAPS,
29667&Interp_IncPopBool,
29668&Interp_IncPopFixedPoint,
29669#endif
29670#ifdef GET_INTERPFN_DISPATCHERS
29671PRESERVE_NONE
29672static bool Interp_IncPopSint8(InterpState &S, CodePtr &PC) {
29673 {
29674 CodePtr OpPC = PC;
29675 const auto V0 = ReadArg<bool>(S, PC);
29676 if (!IncPop<PT_Sint8>(S, OpPC, V0)) return false;
29677 }
29678#if USE_TAILCALLS
29679 MUSTTAIL return InterpNext(S, PC);
29680#else
29681 return true;
29682#endif
29683}
29684PRESERVE_NONE
29685static bool Interp_IncPopUint8(InterpState &S, CodePtr &PC) {
29686 {
29687 CodePtr OpPC = PC;
29688 const auto V0 = ReadArg<bool>(S, PC);
29689 if (!IncPop<PT_Uint8>(S, OpPC, V0)) return false;
29690 }
29691#if USE_TAILCALLS
29692 MUSTTAIL return InterpNext(S, PC);
29693#else
29694 return true;
29695#endif
29696}
29697PRESERVE_NONE
29698static bool Interp_IncPopSint16(InterpState &S, CodePtr &PC) {
29699 {
29700 CodePtr OpPC = PC;
29701 const auto V0 = ReadArg<bool>(S, PC);
29702 if (!IncPop<PT_Sint16>(S, OpPC, V0)) return false;
29703 }
29704#if USE_TAILCALLS
29705 MUSTTAIL return InterpNext(S, PC);
29706#else
29707 return true;
29708#endif
29709}
29710PRESERVE_NONE
29711static bool Interp_IncPopUint16(InterpState &S, CodePtr &PC) {
29712 {
29713 CodePtr OpPC = PC;
29714 const auto V0 = ReadArg<bool>(S, PC);
29715 if (!IncPop<PT_Uint16>(S, OpPC, V0)) return false;
29716 }
29717#if USE_TAILCALLS
29718 MUSTTAIL return InterpNext(S, PC);
29719#else
29720 return true;
29721#endif
29722}
29723PRESERVE_NONE
29724static bool Interp_IncPopSint32(InterpState &S, CodePtr &PC) {
29725 {
29726 CodePtr OpPC = PC;
29727 const auto V0 = ReadArg<bool>(S, PC);
29728 if (!IncPop<PT_Sint32>(S, OpPC, V0)) return false;
29729 }
29730#if USE_TAILCALLS
29731 MUSTTAIL return InterpNext(S, PC);
29732#else
29733 return true;
29734#endif
29735}
29736PRESERVE_NONE
29737static bool Interp_IncPopUint32(InterpState &S, CodePtr &PC) {
29738 {
29739 CodePtr OpPC = PC;
29740 const auto V0 = ReadArg<bool>(S, PC);
29741 if (!IncPop<PT_Uint32>(S, OpPC, V0)) return false;
29742 }
29743#if USE_TAILCALLS
29744 MUSTTAIL return InterpNext(S, PC);
29745#else
29746 return true;
29747#endif
29748}
29749PRESERVE_NONE
29750static bool Interp_IncPopSint64(InterpState &S, CodePtr &PC) {
29751 {
29752 CodePtr OpPC = PC;
29753 const auto V0 = ReadArg<bool>(S, PC);
29754 if (!IncPop<PT_Sint64>(S, OpPC, V0)) return false;
29755 }
29756#if USE_TAILCALLS
29757 MUSTTAIL return InterpNext(S, PC);
29758#else
29759 return true;
29760#endif
29761}
29762PRESERVE_NONE
29763static bool Interp_IncPopUint64(InterpState &S, CodePtr &PC) {
29764 {
29765 CodePtr OpPC = PC;
29766 const auto V0 = ReadArg<bool>(S, PC);
29767 if (!IncPop<PT_Uint64>(S, OpPC, V0)) return false;
29768 }
29769#if USE_TAILCALLS
29770 MUSTTAIL return InterpNext(S, PC);
29771#else
29772 return true;
29773#endif
29774}
29775PRESERVE_NONE
29776static bool Interp_IncPopIntAP(InterpState &S, CodePtr &PC) {
29777 {
29778 CodePtr OpPC = PC;
29779 const auto V0 = ReadArg<bool>(S, PC);
29780 if (!IncPop<PT_IntAP>(S, OpPC, V0)) return false;
29781 }
29782#if USE_TAILCALLS
29783 MUSTTAIL return InterpNext(S, PC);
29784#else
29785 return true;
29786#endif
29787}
29788PRESERVE_NONE
29789static bool Interp_IncPopIntAPS(InterpState &S, CodePtr &PC) {
29790 {
29791 CodePtr OpPC = PC;
29792 const auto V0 = ReadArg<bool>(S, PC);
29793 if (!IncPop<PT_IntAPS>(S, OpPC, V0)) return false;
29794 }
29795#if USE_TAILCALLS
29796 MUSTTAIL return InterpNext(S, PC);
29797#else
29798 return true;
29799#endif
29800}
29801PRESERVE_NONE
29802static bool Interp_IncPopBool(InterpState &S, CodePtr &PC) {
29803 {
29804 CodePtr OpPC = PC;
29805 const auto V0 = ReadArg<bool>(S, PC);
29806 if (!IncPop<PT_Bool>(S, OpPC, V0)) return false;
29807 }
29808#if USE_TAILCALLS
29809 MUSTTAIL return InterpNext(S, PC);
29810#else
29811 return true;
29812#endif
29813}
29814PRESERVE_NONE
29815static bool Interp_IncPopFixedPoint(InterpState &S, CodePtr &PC) {
29816 {
29817 CodePtr OpPC = PC;
29818 const auto V0 = ReadArg<bool>(S, PC);
29819 if (!IncPop<PT_FixedPoint>(S, OpPC, V0)) return false;
29820 }
29821#if USE_TAILCALLS
29822 MUSTTAIL return InterpNext(S, PC);
29823#else
29824 return true;
29825#endif
29826}
29827#endif
29828#ifdef GET_DISASM
29829case OP_IncPopSint8:
29830 Text.Op = PrintName("IncPopSint8");
29831 Text.Args.push_back(printArg<bool>(P, PC));
29832 break;
29833case OP_IncPopUint8:
29834 Text.Op = PrintName("IncPopUint8");
29835 Text.Args.push_back(printArg<bool>(P, PC));
29836 break;
29837case OP_IncPopSint16:
29838 Text.Op = PrintName("IncPopSint16");
29839 Text.Args.push_back(printArg<bool>(P, PC));
29840 break;
29841case OP_IncPopUint16:
29842 Text.Op = PrintName("IncPopUint16");
29843 Text.Args.push_back(printArg<bool>(P, PC));
29844 break;
29845case OP_IncPopSint32:
29846 Text.Op = PrintName("IncPopSint32");
29847 Text.Args.push_back(printArg<bool>(P, PC));
29848 break;
29849case OP_IncPopUint32:
29850 Text.Op = PrintName("IncPopUint32");
29851 Text.Args.push_back(printArg<bool>(P, PC));
29852 break;
29853case OP_IncPopSint64:
29854 Text.Op = PrintName("IncPopSint64");
29855 Text.Args.push_back(printArg<bool>(P, PC));
29856 break;
29857case OP_IncPopUint64:
29858 Text.Op = PrintName("IncPopUint64");
29859 Text.Args.push_back(printArg<bool>(P, PC));
29860 break;
29861case OP_IncPopIntAP:
29862 Text.Op = PrintName("IncPopIntAP");
29863 Text.Args.push_back(printArg<bool>(P, PC));
29864 break;
29865case OP_IncPopIntAPS:
29866 Text.Op = PrintName("IncPopIntAPS");
29867 Text.Args.push_back(printArg<bool>(P, PC));
29868 break;
29869case OP_IncPopBool:
29870 Text.Op = PrintName("IncPopBool");
29871 Text.Args.push_back(printArg<bool>(P, PC));
29872 break;
29873case OP_IncPopFixedPoint:
29874 Text.Op = PrintName("IncPopFixedPoint");
29875 Text.Args.push_back(printArg<bool>(P, PC));
29876 break;
29877#endif
29878#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29879bool emitIncPopSint8( bool , SourceInfo);
29880bool emitIncPopUint8( bool , SourceInfo);
29881bool emitIncPopSint16( bool , SourceInfo);
29882bool emitIncPopUint16( bool , SourceInfo);
29883bool emitIncPopSint32( bool , SourceInfo);
29884bool emitIncPopUint32( bool , SourceInfo);
29885bool emitIncPopSint64( bool , SourceInfo);
29886bool emitIncPopUint64( bool , SourceInfo);
29887bool emitIncPopIntAP( bool , SourceInfo);
29888bool emitIncPopIntAPS( bool , SourceInfo);
29889bool emitIncPopBool( bool , SourceInfo);
29890bool emitIncPopFixedPoint( bool , SourceInfo);
29891#endif
29892#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29893[[nodiscard]] bool emitIncPop(PrimType, bool, SourceInfo I);
29894#endif
29895#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
29896bool
29897#if defined(GET_EVAL_IMPL)
29898EvalEmitter
29899#else
29900ByteCodeEmitter
29901#endif
29902::emitIncPop(PrimType T0, bool A0, SourceInfo I) {
29903 switch (T0) {
29904 case PT_Sint8:
29905 return emitIncPopSint8(A0, I);
29906 case PT_Uint8:
29907 return emitIncPopUint8(A0, I);
29908 case PT_Sint16:
29909 return emitIncPopSint16(A0, I);
29910 case PT_Uint16:
29911 return emitIncPopUint16(A0, I);
29912 case PT_Sint32:
29913 return emitIncPopSint32(A0, I);
29914 case PT_Uint32:
29915 return emitIncPopUint32(A0, I);
29916 case PT_Sint64:
29917 return emitIncPopSint64(A0, I);
29918 case PT_Uint64:
29919 return emitIncPopUint64(A0, I);
29920 case PT_IntAP:
29921 return emitIncPopIntAP(A0, I);
29922 case PT_IntAPS:
29923 return emitIncPopIntAPS(A0, I);
29924 case PT_Bool:
29925 return emitIncPopBool(A0, I);
29926 case PT_FixedPoint:
29927 return emitIncPopFixedPoint(A0, I);
29928 default: llvm_unreachable("invalid type: emitIncPop");
29929 }
29930 llvm_unreachable("invalid enum value");
29931}
29932#endif
29933#ifdef GET_LINK_IMPL
29934bool ByteCodeEmitter::emitIncPopSint8( bool A0, SourceInfo L) {
29935 return emitOp<bool>(OP_IncPopSint8, A0, L);
29936}
29937bool ByteCodeEmitter::emitIncPopUint8( bool A0, SourceInfo L) {
29938 return emitOp<bool>(OP_IncPopUint8, A0, L);
29939}
29940bool ByteCodeEmitter::emitIncPopSint16( bool A0, SourceInfo L) {
29941 return emitOp<bool>(OP_IncPopSint16, A0, L);
29942}
29943bool ByteCodeEmitter::emitIncPopUint16( bool A0, SourceInfo L) {
29944 return emitOp<bool>(OP_IncPopUint16, A0, L);
29945}
29946bool ByteCodeEmitter::emitIncPopSint32( bool A0, SourceInfo L) {
29947 return emitOp<bool>(OP_IncPopSint32, A0, L);
29948}
29949bool ByteCodeEmitter::emitIncPopUint32( bool A0, SourceInfo L) {
29950 return emitOp<bool>(OP_IncPopUint32, A0, L);
29951}
29952bool ByteCodeEmitter::emitIncPopSint64( bool A0, SourceInfo L) {
29953 return emitOp<bool>(OP_IncPopSint64, A0, L);
29954}
29955bool ByteCodeEmitter::emitIncPopUint64( bool A0, SourceInfo L) {
29956 return emitOp<bool>(OP_IncPopUint64, A0, L);
29957}
29958bool ByteCodeEmitter::emitIncPopIntAP( bool A0, SourceInfo L) {
29959 return emitOp<bool>(OP_IncPopIntAP, A0, L);
29960}
29961bool ByteCodeEmitter::emitIncPopIntAPS( bool A0, SourceInfo L) {
29962 return emitOp<bool>(OP_IncPopIntAPS, A0, L);
29963}
29964bool ByteCodeEmitter::emitIncPopBool( bool A0, SourceInfo L) {
29965 return emitOp<bool>(OP_IncPopBool, A0, L);
29966}
29967bool ByteCodeEmitter::emitIncPopFixedPoint( bool A0, SourceInfo L) {
29968 return emitOp<bool>(OP_IncPopFixedPoint, A0, L);
29969}
29970#endif
29971#ifdef GET_EVAL_IMPL
29972bool EvalEmitter::emitIncPopSint8( bool A0, SourceInfo L) {
29973 if (!isActive()) return true;
29974 CurrentSource = L;
29975 return IncPop<PT_Sint8>(S, OpPC, A0);
29976}
29977bool EvalEmitter::emitIncPopUint8( bool A0, SourceInfo L) {
29978 if (!isActive()) return true;
29979 CurrentSource = L;
29980 return IncPop<PT_Uint8>(S, OpPC, A0);
29981}
29982bool EvalEmitter::emitIncPopSint16( bool A0, SourceInfo L) {
29983 if (!isActive()) return true;
29984 CurrentSource = L;
29985 return IncPop<PT_Sint16>(S, OpPC, A0);
29986}
29987bool EvalEmitter::emitIncPopUint16( bool A0, SourceInfo L) {
29988 if (!isActive()) return true;
29989 CurrentSource = L;
29990 return IncPop<PT_Uint16>(S, OpPC, A0);
29991}
29992bool EvalEmitter::emitIncPopSint32( bool A0, SourceInfo L) {
29993 if (!isActive()) return true;
29994 CurrentSource = L;
29995 return IncPop<PT_Sint32>(S, OpPC, A0);
29996}
29997bool EvalEmitter::emitIncPopUint32( bool A0, SourceInfo L) {
29998 if (!isActive()) return true;
29999 CurrentSource = L;
30000 return IncPop<PT_Uint32>(S, OpPC, A0);
30001}
30002bool EvalEmitter::emitIncPopSint64( bool A0, SourceInfo L) {
30003 if (!isActive()) return true;
30004 CurrentSource = L;
30005 return IncPop<PT_Sint64>(S, OpPC, A0);
30006}
30007bool EvalEmitter::emitIncPopUint64( bool A0, SourceInfo L) {
30008 if (!isActive()) return true;
30009 CurrentSource = L;
30010 return IncPop<PT_Uint64>(S, OpPC, A0);
30011}
30012bool EvalEmitter::emitIncPopIntAP( bool A0, SourceInfo L) {
30013 if (!isActive()) return true;
30014 CurrentSource = L;
30015 return IncPop<PT_IntAP>(S, OpPC, A0);
30016}
30017bool EvalEmitter::emitIncPopIntAPS( bool A0, SourceInfo L) {
30018 if (!isActive()) return true;
30019 CurrentSource = L;
30020 return IncPop<PT_IntAPS>(S, OpPC, A0);
30021}
30022bool EvalEmitter::emitIncPopBool( bool A0, SourceInfo L) {
30023 if (!isActive()) return true;
30024 CurrentSource = L;
30025 return IncPop<PT_Bool>(S, OpPC, A0);
30026}
30027bool EvalEmitter::emitIncPopFixedPoint( bool A0, SourceInfo L) {
30028 if (!isActive()) return true;
30029 CurrentSource = L;
30030 return IncPop<PT_FixedPoint>(S, OpPC, A0);
30031}
30032#endif
30033#ifdef GET_OPCODE_NAMES
30034OP_IncPopBitfieldSint8,
30035OP_IncPopBitfieldUint8,
30036OP_IncPopBitfieldSint16,
30037OP_IncPopBitfieldUint16,
30038OP_IncPopBitfieldSint32,
30039OP_IncPopBitfieldUint32,
30040OP_IncPopBitfieldSint64,
30041OP_IncPopBitfieldUint64,
30042OP_IncPopBitfieldIntAP,
30043OP_IncPopBitfieldIntAPS,
30044OP_IncPopBitfieldBool,
30045OP_IncPopBitfieldFixedPoint,
30046#endif
30047#ifdef GET_INTERPFN_LIST
30048&Interp_IncPopBitfieldSint8,
30049&Interp_IncPopBitfieldUint8,
30050&Interp_IncPopBitfieldSint16,
30051&Interp_IncPopBitfieldUint16,
30052&Interp_IncPopBitfieldSint32,
30053&Interp_IncPopBitfieldUint32,
30054&Interp_IncPopBitfieldSint64,
30055&Interp_IncPopBitfieldUint64,
30056&Interp_IncPopBitfieldIntAP,
30057&Interp_IncPopBitfieldIntAPS,
30058&Interp_IncPopBitfieldBool,
30059&Interp_IncPopBitfieldFixedPoint,
30060#endif
30061#ifdef GET_INTERPFN_DISPATCHERS
30062PRESERVE_NONE
30063static bool Interp_IncPopBitfieldSint8(InterpState &S, CodePtr &PC) {
30064 {
30065 CodePtr OpPC = PC;
30066 const auto V0 = ReadArg<bool>(S, PC);
30067 const auto V1 = ReadArg<uint32_t>(S, PC);
30068 if (!IncPopBitfield<PT_Sint8>(S, OpPC, V0, V1)) return false;
30069 }
30070#if USE_TAILCALLS
30071 MUSTTAIL return InterpNext(S, PC);
30072#else
30073 return true;
30074#endif
30075}
30076PRESERVE_NONE
30077static bool Interp_IncPopBitfieldUint8(InterpState &S, CodePtr &PC) {
30078 {
30079 CodePtr OpPC = PC;
30080 const auto V0 = ReadArg<bool>(S, PC);
30081 const auto V1 = ReadArg<uint32_t>(S, PC);
30082 if (!IncPopBitfield<PT_Uint8>(S, OpPC, V0, V1)) return false;
30083 }
30084#if USE_TAILCALLS
30085 MUSTTAIL return InterpNext(S, PC);
30086#else
30087 return true;
30088#endif
30089}
30090PRESERVE_NONE
30091static bool Interp_IncPopBitfieldSint16(InterpState &S, CodePtr &PC) {
30092 {
30093 CodePtr OpPC = PC;
30094 const auto V0 = ReadArg<bool>(S, PC);
30095 const auto V1 = ReadArg<uint32_t>(S, PC);
30096 if (!IncPopBitfield<PT_Sint16>(S, OpPC, V0, V1)) return false;
30097 }
30098#if USE_TAILCALLS
30099 MUSTTAIL return InterpNext(S, PC);
30100#else
30101 return true;
30102#endif
30103}
30104PRESERVE_NONE
30105static bool Interp_IncPopBitfieldUint16(InterpState &S, CodePtr &PC) {
30106 {
30107 CodePtr OpPC = PC;
30108 const auto V0 = ReadArg<bool>(S, PC);
30109 const auto V1 = ReadArg<uint32_t>(S, PC);
30110 if (!IncPopBitfield<PT_Uint16>(S, OpPC, V0, V1)) return false;
30111 }
30112#if USE_TAILCALLS
30113 MUSTTAIL return InterpNext(S, PC);
30114#else
30115 return true;
30116#endif
30117}
30118PRESERVE_NONE
30119static bool Interp_IncPopBitfieldSint32(InterpState &S, CodePtr &PC) {
30120 {
30121 CodePtr OpPC = PC;
30122 const auto V0 = ReadArg<bool>(S, PC);
30123 const auto V1 = ReadArg<uint32_t>(S, PC);
30124 if (!IncPopBitfield<PT_Sint32>(S, OpPC, V0, V1)) return false;
30125 }
30126#if USE_TAILCALLS
30127 MUSTTAIL return InterpNext(S, PC);
30128#else
30129 return true;
30130#endif
30131}
30132PRESERVE_NONE
30133static bool Interp_IncPopBitfieldUint32(InterpState &S, CodePtr &PC) {
30134 {
30135 CodePtr OpPC = PC;
30136 const auto V0 = ReadArg<bool>(S, PC);
30137 const auto V1 = ReadArg<uint32_t>(S, PC);
30138 if (!IncPopBitfield<PT_Uint32>(S, OpPC, V0, V1)) return false;
30139 }
30140#if USE_TAILCALLS
30141 MUSTTAIL return InterpNext(S, PC);
30142#else
30143 return true;
30144#endif
30145}
30146PRESERVE_NONE
30147static bool Interp_IncPopBitfieldSint64(InterpState &S, CodePtr &PC) {
30148 {
30149 CodePtr OpPC = PC;
30150 const auto V0 = ReadArg<bool>(S, PC);
30151 const auto V1 = ReadArg<uint32_t>(S, PC);
30152 if (!IncPopBitfield<PT_Sint64>(S, OpPC, V0, V1)) return false;
30153 }
30154#if USE_TAILCALLS
30155 MUSTTAIL return InterpNext(S, PC);
30156#else
30157 return true;
30158#endif
30159}
30160PRESERVE_NONE
30161static bool Interp_IncPopBitfieldUint64(InterpState &S, CodePtr &PC) {
30162 {
30163 CodePtr OpPC = PC;
30164 const auto V0 = ReadArg<bool>(S, PC);
30165 const auto V1 = ReadArg<uint32_t>(S, PC);
30166 if (!IncPopBitfield<PT_Uint64>(S, OpPC, V0, V1)) return false;
30167 }
30168#if USE_TAILCALLS
30169 MUSTTAIL return InterpNext(S, PC);
30170#else
30171 return true;
30172#endif
30173}
30174PRESERVE_NONE
30175static bool Interp_IncPopBitfieldIntAP(InterpState &S, CodePtr &PC) {
30176 {
30177 CodePtr OpPC = PC;
30178 const auto V0 = ReadArg<bool>(S, PC);
30179 const auto V1 = ReadArg<uint32_t>(S, PC);
30180 if (!IncPopBitfield<PT_IntAP>(S, OpPC, V0, V1)) return false;
30181 }
30182#if USE_TAILCALLS
30183 MUSTTAIL return InterpNext(S, PC);
30184#else
30185 return true;
30186#endif
30187}
30188PRESERVE_NONE
30189static bool Interp_IncPopBitfieldIntAPS(InterpState &S, CodePtr &PC) {
30190 {
30191 CodePtr OpPC = PC;
30192 const auto V0 = ReadArg<bool>(S, PC);
30193 const auto V1 = ReadArg<uint32_t>(S, PC);
30194 if (!IncPopBitfield<PT_IntAPS>(S, OpPC, V0, V1)) return false;
30195 }
30196#if USE_TAILCALLS
30197 MUSTTAIL return InterpNext(S, PC);
30198#else
30199 return true;
30200#endif
30201}
30202PRESERVE_NONE
30203static bool Interp_IncPopBitfieldBool(InterpState &S, CodePtr &PC) {
30204 {
30205 CodePtr OpPC = PC;
30206 const auto V0 = ReadArg<bool>(S, PC);
30207 const auto V1 = ReadArg<uint32_t>(S, PC);
30208 if (!IncPopBitfield<PT_Bool>(S, OpPC, V0, V1)) return false;
30209 }
30210#if USE_TAILCALLS
30211 MUSTTAIL return InterpNext(S, PC);
30212#else
30213 return true;
30214#endif
30215}
30216PRESERVE_NONE
30217static bool Interp_IncPopBitfieldFixedPoint(InterpState &S, CodePtr &PC) {
30218 {
30219 CodePtr OpPC = PC;
30220 const auto V0 = ReadArg<bool>(S, PC);
30221 const auto V1 = ReadArg<uint32_t>(S, PC);
30222 if (!IncPopBitfield<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
30223 }
30224#if USE_TAILCALLS
30225 MUSTTAIL return InterpNext(S, PC);
30226#else
30227 return true;
30228#endif
30229}
30230#endif
30231#ifdef GET_DISASM
30232case OP_IncPopBitfieldSint8:
30233 Text.Op = PrintName("IncPopBitfieldSint8");
30234 Text.Args.push_back(printArg<bool>(P, PC));
30235 Text.Args.push_back(printArg<uint32_t>(P, PC));
30236 break;
30237case OP_IncPopBitfieldUint8:
30238 Text.Op = PrintName("IncPopBitfieldUint8");
30239 Text.Args.push_back(printArg<bool>(P, PC));
30240 Text.Args.push_back(printArg<uint32_t>(P, PC));
30241 break;
30242case OP_IncPopBitfieldSint16:
30243 Text.Op = PrintName("IncPopBitfieldSint16");
30244 Text.Args.push_back(printArg<bool>(P, PC));
30245 Text.Args.push_back(printArg<uint32_t>(P, PC));
30246 break;
30247case OP_IncPopBitfieldUint16:
30248 Text.Op = PrintName("IncPopBitfieldUint16");
30249 Text.Args.push_back(printArg<bool>(P, PC));
30250 Text.Args.push_back(printArg<uint32_t>(P, PC));
30251 break;
30252case OP_IncPopBitfieldSint32:
30253 Text.Op = PrintName("IncPopBitfieldSint32");
30254 Text.Args.push_back(printArg<bool>(P, PC));
30255 Text.Args.push_back(printArg<uint32_t>(P, PC));
30256 break;
30257case OP_IncPopBitfieldUint32:
30258 Text.Op = PrintName("IncPopBitfieldUint32");
30259 Text.Args.push_back(printArg<bool>(P, PC));
30260 Text.Args.push_back(printArg<uint32_t>(P, PC));
30261 break;
30262case OP_IncPopBitfieldSint64:
30263 Text.Op = PrintName("IncPopBitfieldSint64");
30264 Text.Args.push_back(printArg<bool>(P, PC));
30265 Text.Args.push_back(printArg<uint32_t>(P, PC));
30266 break;
30267case OP_IncPopBitfieldUint64:
30268 Text.Op = PrintName("IncPopBitfieldUint64");
30269 Text.Args.push_back(printArg<bool>(P, PC));
30270 Text.Args.push_back(printArg<uint32_t>(P, PC));
30271 break;
30272case OP_IncPopBitfieldIntAP:
30273 Text.Op = PrintName("IncPopBitfieldIntAP");
30274 Text.Args.push_back(printArg<bool>(P, PC));
30275 Text.Args.push_back(printArg<uint32_t>(P, PC));
30276 break;
30277case OP_IncPopBitfieldIntAPS:
30278 Text.Op = PrintName("IncPopBitfieldIntAPS");
30279 Text.Args.push_back(printArg<bool>(P, PC));
30280 Text.Args.push_back(printArg<uint32_t>(P, PC));
30281 break;
30282case OP_IncPopBitfieldBool:
30283 Text.Op = PrintName("IncPopBitfieldBool");
30284 Text.Args.push_back(printArg<bool>(P, PC));
30285 Text.Args.push_back(printArg<uint32_t>(P, PC));
30286 break;
30287case OP_IncPopBitfieldFixedPoint:
30288 Text.Op = PrintName("IncPopBitfieldFixedPoint");
30289 Text.Args.push_back(printArg<bool>(P, PC));
30290 Text.Args.push_back(printArg<uint32_t>(P, PC));
30291 break;
30292#endif
30293#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30294bool emitIncPopBitfieldSint8( bool , uint32_t , SourceInfo);
30295bool emitIncPopBitfieldUint8( bool , uint32_t , SourceInfo);
30296bool emitIncPopBitfieldSint16( bool , uint32_t , SourceInfo);
30297bool emitIncPopBitfieldUint16( bool , uint32_t , SourceInfo);
30298bool emitIncPopBitfieldSint32( bool , uint32_t , SourceInfo);
30299bool emitIncPopBitfieldUint32( bool , uint32_t , SourceInfo);
30300bool emitIncPopBitfieldSint64( bool , uint32_t , SourceInfo);
30301bool emitIncPopBitfieldUint64( bool , uint32_t , SourceInfo);
30302bool emitIncPopBitfieldIntAP( bool , uint32_t , SourceInfo);
30303bool emitIncPopBitfieldIntAPS( bool , uint32_t , SourceInfo);
30304bool emitIncPopBitfieldBool( bool , uint32_t , SourceInfo);
30305bool emitIncPopBitfieldFixedPoint( bool , uint32_t , SourceInfo);
30306#endif
30307#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30308[[nodiscard]] bool emitIncPopBitfield(PrimType, bool, uint32_t, SourceInfo I);
30309#endif
30310#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
30311bool
30312#if defined(GET_EVAL_IMPL)
30313EvalEmitter
30314#else
30315ByteCodeEmitter
30316#endif
30317::emitIncPopBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
30318 switch (T0) {
30319 case PT_Sint8:
30320 return emitIncPopBitfieldSint8(A0, A1, I);
30321 case PT_Uint8:
30322 return emitIncPopBitfieldUint8(A0, A1, I);
30323 case PT_Sint16:
30324 return emitIncPopBitfieldSint16(A0, A1, I);
30325 case PT_Uint16:
30326 return emitIncPopBitfieldUint16(A0, A1, I);
30327 case PT_Sint32:
30328 return emitIncPopBitfieldSint32(A0, A1, I);
30329 case PT_Uint32:
30330 return emitIncPopBitfieldUint32(A0, A1, I);
30331 case PT_Sint64:
30332 return emitIncPopBitfieldSint64(A0, A1, I);
30333 case PT_Uint64:
30334 return emitIncPopBitfieldUint64(A0, A1, I);
30335 case PT_IntAP:
30336 return emitIncPopBitfieldIntAP(A0, A1, I);
30337 case PT_IntAPS:
30338 return emitIncPopBitfieldIntAPS(A0, A1, I);
30339 case PT_Bool:
30340 return emitIncPopBitfieldBool(A0, A1, I);
30341 case PT_FixedPoint:
30342 return emitIncPopBitfieldFixedPoint(A0, A1, I);
30343 default: llvm_unreachable("invalid type: emitIncPopBitfield");
30344 }
30345 llvm_unreachable("invalid enum value");
30346}
30347#endif
30348#ifdef GET_LINK_IMPL
30349bool ByteCodeEmitter::emitIncPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
30350 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint8, A0, A1, L);
30351}
30352bool ByteCodeEmitter::emitIncPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
30353 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint8, A0, A1, L);
30354}
30355bool ByteCodeEmitter::emitIncPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
30356 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint16, A0, A1, L);
30357}
30358bool ByteCodeEmitter::emitIncPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
30359 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint16, A0, A1, L);
30360}
30361bool ByteCodeEmitter::emitIncPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
30362 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint32, A0, A1, L);
30363}
30364bool ByteCodeEmitter::emitIncPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
30365 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint32, A0, A1, L);
30366}
30367bool ByteCodeEmitter::emitIncPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
30368 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint64, A0, A1, L);
30369}
30370bool ByteCodeEmitter::emitIncPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
30371 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint64, A0, A1, L);
30372}
30373bool ByteCodeEmitter::emitIncPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
30374 return emitOp<bool, uint32_t>(OP_IncPopBitfieldIntAP, A0, A1, L);
30375}
30376bool ByteCodeEmitter::emitIncPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
30377 return emitOp<bool, uint32_t>(OP_IncPopBitfieldIntAPS, A0, A1, L);
30378}
30379bool ByteCodeEmitter::emitIncPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
30380 return emitOp<bool, uint32_t>(OP_IncPopBitfieldBool, A0, A1, L);
30381}
30382bool ByteCodeEmitter::emitIncPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
30383 return emitOp<bool, uint32_t>(OP_IncPopBitfieldFixedPoint, A0, A1, L);
30384}
30385#endif
30386#ifdef GET_EVAL_IMPL
30387bool EvalEmitter::emitIncPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
30388 if (!isActive()) return true;
30389 CurrentSource = L;
30390 return IncPopBitfield<PT_Sint8>(S, OpPC, A0, A1);
30391}
30392bool EvalEmitter::emitIncPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
30393 if (!isActive()) return true;
30394 CurrentSource = L;
30395 return IncPopBitfield<PT_Uint8>(S, OpPC, A0, A1);
30396}
30397bool EvalEmitter::emitIncPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
30398 if (!isActive()) return true;
30399 CurrentSource = L;
30400 return IncPopBitfield<PT_Sint16>(S, OpPC, A0, A1);
30401}
30402bool EvalEmitter::emitIncPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
30403 if (!isActive()) return true;
30404 CurrentSource = L;
30405 return IncPopBitfield<PT_Uint16>(S, OpPC, A0, A1);
30406}
30407bool EvalEmitter::emitIncPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
30408 if (!isActive()) return true;
30409 CurrentSource = L;
30410 return IncPopBitfield<PT_Sint32>(S, OpPC, A0, A1);
30411}
30412bool EvalEmitter::emitIncPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
30413 if (!isActive()) return true;
30414 CurrentSource = L;
30415 return IncPopBitfield<PT_Uint32>(S, OpPC, A0, A1);
30416}
30417bool EvalEmitter::emitIncPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
30418 if (!isActive()) return true;
30419 CurrentSource = L;
30420 return IncPopBitfield<PT_Sint64>(S, OpPC, A0, A1);
30421}
30422bool EvalEmitter::emitIncPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
30423 if (!isActive()) return true;
30424 CurrentSource = L;
30425 return IncPopBitfield<PT_Uint64>(S, OpPC, A0, A1);
30426}
30427bool EvalEmitter::emitIncPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
30428 if (!isActive()) return true;
30429 CurrentSource = L;
30430 return IncPopBitfield<PT_IntAP>(S, OpPC, A0, A1);
30431}
30432bool EvalEmitter::emitIncPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
30433 if (!isActive()) return true;
30434 CurrentSource = L;
30435 return IncPopBitfield<PT_IntAPS>(S, OpPC, A0, A1);
30436}
30437bool EvalEmitter::emitIncPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
30438 if (!isActive()) return true;
30439 CurrentSource = L;
30440 return IncPopBitfield<PT_Bool>(S, OpPC, A0, A1);
30441}
30442bool EvalEmitter::emitIncPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
30443 if (!isActive()) return true;
30444 CurrentSource = L;
30445 return IncPopBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
30446}
30447#endif
30448#ifdef GET_OPCODE_NAMES
30449OP_IncPtr,
30450#endif
30451#ifdef GET_INTERPFN_LIST
30452&Interp_IncPtr,
30453#endif
30454#ifdef GET_INTERPFN_DISPATCHERS
30455PRESERVE_NONE
30456static bool Interp_IncPtr(InterpState &S, CodePtr &PC) {
30457 if (!IncPtr(S, PC)) return false;
30458#if USE_TAILCALLS
30459 MUSTTAIL return InterpNext(S, PC);
30460#else
30461 return true;
30462#endif
30463}
30464#endif
30465#ifdef GET_DISASM
30466case OP_IncPtr:
30467 Text.Op = PrintName("IncPtr");
30468 break;
30469#endif
30470#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30471bool emitIncPtr(SourceInfo);
30472#endif
30473#ifdef GET_LINK_IMPL
30474bool ByteCodeEmitter::emitIncPtr(SourceInfo L) {
30475 return emitOp<>(OP_IncPtr, L);
30476}
30477#endif
30478#ifdef GET_EVAL_IMPL
30479bool EvalEmitter::emitIncPtr(SourceInfo L) {
30480 if (!isActive()) return true;
30481 CurrentSource = L;
30482 return IncPtr(S, OpPC);
30483}
30484#endif
30485#ifdef GET_OPCODE_NAMES
30486OP_Incf,
30487#endif
30488#ifdef GET_INTERPFN_LIST
30489&Interp_Incf,
30490#endif
30491#ifdef GET_INTERPFN_DISPATCHERS
30492PRESERVE_NONE
30493static bool Interp_Incf(InterpState &S, CodePtr &PC) {
30494 {
30495 CodePtr OpPC = PC;
30496 const auto V0 = ReadArg<uint32_t>(S, PC);
30497 if (!Incf(S, OpPC, V0)) return false;
30498 }
30499#if USE_TAILCALLS
30500 MUSTTAIL return InterpNext(S, PC);
30501#else
30502 return true;
30503#endif
30504}
30505#endif
30506#ifdef GET_DISASM
30507case OP_Incf:
30508 Text.Op = PrintName("Incf");
30509 Text.Args.push_back(printArg<uint32_t>(P, PC));
30510 break;
30511#endif
30512#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30513bool emitIncf( uint32_t , SourceInfo);
30514#endif
30515#ifdef GET_LINK_IMPL
30516bool ByteCodeEmitter::emitIncf( uint32_t A0, SourceInfo L) {
30517 return emitOp<uint32_t>(OP_Incf, A0, L);
30518}
30519#endif
30520#ifdef GET_EVAL_IMPL
30521bool EvalEmitter::emitIncf( uint32_t A0, SourceInfo L) {
30522 if (!isActive()) return true;
30523 CurrentSource = L;
30524 return Incf(S, OpPC, A0);
30525}
30526#endif
30527#ifdef GET_OPCODE_NAMES
30528OP_IncfPop,
30529#endif
30530#ifdef GET_INTERPFN_LIST
30531&Interp_IncfPop,
30532#endif
30533#ifdef GET_INTERPFN_DISPATCHERS
30534PRESERVE_NONE
30535static bool Interp_IncfPop(InterpState &S, CodePtr &PC) {
30536 {
30537 CodePtr OpPC = PC;
30538 const auto V0 = ReadArg<uint32_t>(S, PC);
30539 if (!IncfPop(S, OpPC, V0)) return false;
30540 }
30541#if USE_TAILCALLS
30542 MUSTTAIL return InterpNext(S, PC);
30543#else
30544 return true;
30545#endif
30546}
30547#endif
30548#ifdef GET_DISASM
30549case OP_IncfPop:
30550 Text.Op = PrintName("IncfPop");
30551 Text.Args.push_back(printArg<uint32_t>(P, PC));
30552 break;
30553#endif
30554#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30555bool emitIncfPop( uint32_t , SourceInfo);
30556#endif
30557#ifdef GET_LINK_IMPL
30558bool ByteCodeEmitter::emitIncfPop( uint32_t A0, SourceInfo L) {
30559 return emitOp<uint32_t>(OP_IncfPop, A0, L);
30560}
30561#endif
30562#ifdef GET_EVAL_IMPL
30563bool EvalEmitter::emitIncfPop( uint32_t A0, SourceInfo L) {
30564 if (!isActive()) return true;
30565 CurrentSource = L;
30566 return IncfPop(S, OpPC, A0);
30567}
30568#endif
30569#ifdef GET_OPCODE_NAMES
30570OP_InitSint8,
30571OP_InitUint8,
30572OP_InitSint16,
30573OP_InitUint16,
30574OP_InitSint32,
30575OP_InitUint32,
30576OP_InitSint64,
30577OP_InitUint64,
30578OP_InitIntAP,
30579OP_InitIntAPS,
30580OP_InitBool,
30581OP_InitFixedPoint,
30582OP_InitPtr,
30583OP_InitMemberPtr,
30584OP_InitFloat,
30585#endif
30586#ifdef GET_INTERPFN_LIST
30587&Interp_InitSint8,
30588&Interp_InitUint8,
30589&Interp_InitSint16,
30590&Interp_InitUint16,
30591&Interp_InitSint32,
30592&Interp_InitUint32,
30593&Interp_InitSint64,
30594&Interp_InitUint64,
30595&Interp_InitIntAP,
30596&Interp_InitIntAPS,
30597&Interp_InitBool,
30598&Interp_InitFixedPoint,
30599&Interp_InitPtr,
30600&Interp_InitMemberPtr,
30601&Interp_InitFloat,
30602#endif
30603#ifdef GET_INTERPFN_DISPATCHERS
30604PRESERVE_NONE
30605static bool Interp_InitSint8(InterpState &S, CodePtr &PC) {
30606 if (!Init<PT_Sint8>(S, PC)) return false;
30607#if USE_TAILCALLS
30608 MUSTTAIL return InterpNext(S, PC);
30609#else
30610 return true;
30611#endif
30612}
30613PRESERVE_NONE
30614static bool Interp_InitUint8(InterpState &S, CodePtr &PC) {
30615 if (!Init<PT_Uint8>(S, PC)) return false;
30616#if USE_TAILCALLS
30617 MUSTTAIL return InterpNext(S, PC);
30618#else
30619 return true;
30620#endif
30621}
30622PRESERVE_NONE
30623static bool Interp_InitSint16(InterpState &S, CodePtr &PC) {
30624 if (!Init<PT_Sint16>(S, PC)) return false;
30625#if USE_TAILCALLS
30626 MUSTTAIL return InterpNext(S, PC);
30627#else
30628 return true;
30629#endif
30630}
30631PRESERVE_NONE
30632static bool Interp_InitUint16(InterpState &S, CodePtr &PC) {
30633 if (!Init<PT_Uint16>(S, PC)) return false;
30634#if USE_TAILCALLS
30635 MUSTTAIL return InterpNext(S, PC);
30636#else
30637 return true;
30638#endif
30639}
30640PRESERVE_NONE
30641static bool Interp_InitSint32(InterpState &S, CodePtr &PC) {
30642 if (!Init<PT_Sint32>(S, PC)) return false;
30643#if USE_TAILCALLS
30644 MUSTTAIL return InterpNext(S, PC);
30645#else
30646 return true;
30647#endif
30648}
30649PRESERVE_NONE
30650static bool Interp_InitUint32(InterpState &S, CodePtr &PC) {
30651 if (!Init<PT_Uint32>(S, PC)) return false;
30652#if USE_TAILCALLS
30653 MUSTTAIL return InterpNext(S, PC);
30654#else
30655 return true;
30656#endif
30657}
30658PRESERVE_NONE
30659static bool Interp_InitSint64(InterpState &S, CodePtr &PC) {
30660 if (!Init<PT_Sint64>(S, PC)) return false;
30661#if USE_TAILCALLS
30662 MUSTTAIL return InterpNext(S, PC);
30663#else
30664 return true;
30665#endif
30666}
30667PRESERVE_NONE
30668static bool Interp_InitUint64(InterpState &S, CodePtr &PC) {
30669 if (!Init<PT_Uint64>(S, PC)) return false;
30670#if USE_TAILCALLS
30671 MUSTTAIL return InterpNext(S, PC);
30672#else
30673 return true;
30674#endif
30675}
30676PRESERVE_NONE
30677static bool Interp_InitIntAP(InterpState &S, CodePtr &PC) {
30678 if (!Init<PT_IntAP>(S, PC)) return false;
30679#if USE_TAILCALLS
30680 MUSTTAIL return InterpNext(S, PC);
30681#else
30682 return true;
30683#endif
30684}
30685PRESERVE_NONE
30686static bool Interp_InitIntAPS(InterpState &S, CodePtr &PC) {
30687 if (!Init<PT_IntAPS>(S, PC)) return false;
30688#if USE_TAILCALLS
30689 MUSTTAIL return InterpNext(S, PC);
30690#else
30691 return true;
30692#endif
30693}
30694PRESERVE_NONE
30695static bool Interp_InitBool(InterpState &S, CodePtr &PC) {
30696 if (!Init<PT_Bool>(S, PC)) return false;
30697#if USE_TAILCALLS
30698 MUSTTAIL return InterpNext(S, PC);
30699#else
30700 return true;
30701#endif
30702}
30703PRESERVE_NONE
30704static bool Interp_InitFixedPoint(InterpState &S, CodePtr &PC) {
30705 if (!Init<PT_FixedPoint>(S, PC)) return false;
30706#if USE_TAILCALLS
30707 MUSTTAIL return InterpNext(S, PC);
30708#else
30709 return true;
30710#endif
30711}
30712PRESERVE_NONE
30713static bool Interp_InitPtr(InterpState &S, CodePtr &PC) {
30714 if (!Init<PT_Ptr>(S, PC)) return false;
30715#if USE_TAILCALLS
30716 MUSTTAIL return InterpNext(S, PC);
30717#else
30718 return true;
30719#endif
30720}
30721PRESERVE_NONE
30722static bool Interp_InitMemberPtr(InterpState &S, CodePtr &PC) {
30723 if (!Init<PT_MemberPtr>(S, PC)) return false;
30724#if USE_TAILCALLS
30725 MUSTTAIL return InterpNext(S, PC);
30726#else
30727 return true;
30728#endif
30729}
30730PRESERVE_NONE
30731static bool Interp_InitFloat(InterpState &S, CodePtr &PC) {
30732 if (!Init<PT_Float>(S, PC)) return false;
30733#if USE_TAILCALLS
30734 MUSTTAIL return InterpNext(S, PC);
30735#else
30736 return true;
30737#endif
30738}
30739#endif
30740#ifdef GET_DISASM
30741case OP_InitSint8:
30742 Text.Op = PrintName("InitSint8");
30743 break;
30744case OP_InitUint8:
30745 Text.Op = PrintName("InitUint8");
30746 break;
30747case OP_InitSint16:
30748 Text.Op = PrintName("InitSint16");
30749 break;
30750case OP_InitUint16:
30751 Text.Op = PrintName("InitUint16");
30752 break;
30753case OP_InitSint32:
30754 Text.Op = PrintName("InitSint32");
30755 break;
30756case OP_InitUint32:
30757 Text.Op = PrintName("InitUint32");
30758 break;
30759case OP_InitSint64:
30760 Text.Op = PrintName("InitSint64");
30761 break;
30762case OP_InitUint64:
30763 Text.Op = PrintName("InitUint64");
30764 break;
30765case OP_InitIntAP:
30766 Text.Op = PrintName("InitIntAP");
30767 break;
30768case OP_InitIntAPS:
30769 Text.Op = PrintName("InitIntAPS");
30770 break;
30771case OP_InitBool:
30772 Text.Op = PrintName("InitBool");
30773 break;
30774case OP_InitFixedPoint:
30775 Text.Op = PrintName("InitFixedPoint");
30776 break;
30777case OP_InitPtr:
30778 Text.Op = PrintName("InitPtr");
30779 break;
30780case OP_InitMemberPtr:
30781 Text.Op = PrintName("InitMemberPtr");
30782 break;
30783case OP_InitFloat:
30784 Text.Op = PrintName("InitFloat");
30785 break;
30786#endif
30787#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30788bool emitInitSint8(SourceInfo);
30789bool emitInitUint8(SourceInfo);
30790bool emitInitSint16(SourceInfo);
30791bool emitInitUint16(SourceInfo);
30792bool emitInitSint32(SourceInfo);
30793bool emitInitUint32(SourceInfo);
30794bool emitInitSint64(SourceInfo);
30795bool emitInitUint64(SourceInfo);
30796bool emitInitIntAP(SourceInfo);
30797bool emitInitIntAPS(SourceInfo);
30798bool emitInitBool(SourceInfo);
30799bool emitInitFixedPoint(SourceInfo);
30800bool emitInitPtr(SourceInfo);
30801bool emitInitMemberPtr(SourceInfo);
30802bool emitInitFloat(SourceInfo);
30803#endif
30804#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30805[[nodiscard]] bool emitInit(PrimType, SourceInfo I);
30806#endif
30807#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
30808bool
30809#if defined(GET_EVAL_IMPL)
30810EvalEmitter
30811#else
30812ByteCodeEmitter
30813#endif
30814::emitInit(PrimType T0, SourceInfo I) {
30815 switch (T0) {
30816 case PT_Sint8:
30817 return emitInitSint8(I);
30818 case PT_Uint8:
30819 return emitInitUint8(I);
30820 case PT_Sint16:
30821 return emitInitSint16(I);
30822 case PT_Uint16:
30823 return emitInitUint16(I);
30824 case PT_Sint32:
30825 return emitInitSint32(I);
30826 case PT_Uint32:
30827 return emitInitUint32(I);
30828 case PT_Sint64:
30829 return emitInitSint64(I);
30830 case PT_Uint64:
30831 return emitInitUint64(I);
30832 case PT_IntAP:
30833 return emitInitIntAP(I);
30834 case PT_IntAPS:
30835 return emitInitIntAPS(I);
30836 case PT_Bool:
30837 return emitInitBool(I);
30838 case PT_FixedPoint:
30839 return emitInitFixedPoint(I);
30840 case PT_Ptr:
30841 return emitInitPtr(I);
30842 case PT_MemberPtr:
30843 return emitInitMemberPtr(I);
30844 case PT_Float:
30845 return emitInitFloat(I);
30846 }
30847 llvm_unreachable("invalid enum value");
30848}
30849#endif
30850#ifdef GET_LINK_IMPL
30851bool ByteCodeEmitter::emitInitSint8(SourceInfo L) {
30852 return emitOp<>(OP_InitSint8, L);
30853}
30854bool ByteCodeEmitter::emitInitUint8(SourceInfo L) {
30855 return emitOp<>(OP_InitUint8, L);
30856}
30857bool ByteCodeEmitter::emitInitSint16(SourceInfo L) {
30858 return emitOp<>(OP_InitSint16, L);
30859}
30860bool ByteCodeEmitter::emitInitUint16(SourceInfo L) {
30861 return emitOp<>(OP_InitUint16, L);
30862}
30863bool ByteCodeEmitter::emitInitSint32(SourceInfo L) {
30864 return emitOp<>(OP_InitSint32, L);
30865}
30866bool ByteCodeEmitter::emitInitUint32(SourceInfo L) {
30867 return emitOp<>(OP_InitUint32, L);
30868}
30869bool ByteCodeEmitter::emitInitSint64(SourceInfo L) {
30870 return emitOp<>(OP_InitSint64, L);
30871}
30872bool ByteCodeEmitter::emitInitUint64(SourceInfo L) {
30873 return emitOp<>(OP_InitUint64, L);
30874}
30875bool ByteCodeEmitter::emitInitIntAP(SourceInfo L) {
30876 return emitOp<>(OP_InitIntAP, L);
30877}
30878bool ByteCodeEmitter::emitInitIntAPS(SourceInfo L) {
30879 return emitOp<>(OP_InitIntAPS, L);
30880}
30881bool ByteCodeEmitter::emitInitBool(SourceInfo L) {
30882 return emitOp<>(OP_InitBool, L);
30883}
30884bool ByteCodeEmitter::emitInitFixedPoint(SourceInfo L) {
30885 return emitOp<>(OP_InitFixedPoint, L);
30886}
30887bool ByteCodeEmitter::emitInitPtr(SourceInfo L) {
30888 return emitOp<>(OP_InitPtr, L);
30889}
30890bool ByteCodeEmitter::emitInitMemberPtr(SourceInfo L) {
30891 return emitOp<>(OP_InitMemberPtr, L);
30892}
30893bool ByteCodeEmitter::emitInitFloat(SourceInfo L) {
30894 return emitOp<>(OP_InitFloat, L);
30895}
30896#endif
30897#ifdef GET_EVAL_IMPL
30898bool EvalEmitter::emitInitSint8(SourceInfo L) {
30899 if (!isActive()) return true;
30900 CurrentSource = L;
30901 return Init<PT_Sint8>(S, OpPC);
30902}
30903bool EvalEmitter::emitInitUint8(SourceInfo L) {
30904 if (!isActive()) return true;
30905 CurrentSource = L;
30906 return Init<PT_Uint8>(S, OpPC);
30907}
30908bool EvalEmitter::emitInitSint16(SourceInfo L) {
30909 if (!isActive()) return true;
30910 CurrentSource = L;
30911 return Init<PT_Sint16>(S, OpPC);
30912}
30913bool EvalEmitter::emitInitUint16(SourceInfo L) {
30914 if (!isActive()) return true;
30915 CurrentSource = L;
30916 return Init<PT_Uint16>(S, OpPC);
30917}
30918bool EvalEmitter::emitInitSint32(SourceInfo L) {
30919 if (!isActive()) return true;
30920 CurrentSource = L;
30921 return Init<PT_Sint32>(S, OpPC);
30922}
30923bool EvalEmitter::emitInitUint32(SourceInfo L) {
30924 if (!isActive()) return true;
30925 CurrentSource = L;
30926 return Init<PT_Uint32>(S, OpPC);
30927}
30928bool EvalEmitter::emitInitSint64(SourceInfo L) {
30929 if (!isActive()) return true;
30930 CurrentSource = L;
30931 return Init<PT_Sint64>(S, OpPC);
30932}
30933bool EvalEmitter::emitInitUint64(SourceInfo L) {
30934 if (!isActive()) return true;
30935 CurrentSource = L;
30936 return Init<PT_Uint64>(S, OpPC);
30937}
30938bool EvalEmitter::emitInitIntAP(SourceInfo L) {
30939 if (!isActive()) return true;
30940 CurrentSource = L;
30941 return Init<PT_IntAP>(S, OpPC);
30942}
30943bool EvalEmitter::emitInitIntAPS(SourceInfo L) {
30944 if (!isActive()) return true;
30945 CurrentSource = L;
30946 return Init<PT_IntAPS>(S, OpPC);
30947}
30948bool EvalEmitter::emitInitBool(SourceInfo L) {
30949 if (!isActive()) return true;
30950 CurrentSource = L;
30951 return Init<PT_Bool>(S, OpPC);
30952}
30953bool EvalEmitter::emitInitFixedPoint(SourceInfo L) {
30954 if (!isActive()) return true;
30955 CurrentSource = L;
30956 return Init<PT_FixedPoint>(S, OpPC);
30957}
30958bool EvalEmitter::emitInitPtr(SourceInfo L) {
30959 if (!isActive()) return true;
30960 CurrentSource = L;
30961 return Init<PT_Ptr>(S, OpPC);
30962}
30963bool EvalEmitter::emitInitMemberPtr(SourceInfo L) {
30964 if (!isActive()) return true;
30965 CurrentSource = L;
30966 return Init<PT_MemberPtr>(S, OpPC);
30967}
30968bool EvalEmitter::emitInitFloat(SourceInfo L) {
30969 if (!isActive()) return true;
30970 CurrentSource = L;
30971 return Init<PT_Float>(S, OpPC);
30972}
30973#endif
30974#ifdef GET_OPCODE_NAMES
30975OP_InitBitFieldSint8,
30976OP_InitBitFieldUint8,
30977OP_InitBitFieldSint16,
30978OP_InitBitFieldUint16,
30979OP_InitBitFieldSint32,
30980OP_InitBitFieldUint32,
30981OP_InitBitFieldSint64,
30982OP_InitBitFieldUint64,
30983OP_InitBitFieldIntAP,
30984OP_InitBitFieldIntAPS,
30985OP_InitBitFieldBool,
30986#endif
30987#ifdef GET_INTERPFN_LIST
30988&Interp_InitBitFieldSint8,
30989&Interp_InitBitFieldUint8,
30990&Interp_InitBitFieldSint16,
30991&Interp_InitBitFieldUint16,
30992&Interp_InitBitFieldSint32,
30993&Interp_InitBitFieldUint32,
30994&Interp_InitBitFieldSint64,
30995&Interp_InitBitFieldUint64,
30996&Interp_InitBitFieldIntAP,
30997&Interp_InitBitFieldIntAPS,
30998&Interp_InitBitFieldBool,
30999#endif
31000#ifdef GET_INTERPFN_DISPATCHERS
31001PRESERVE_NONE
31002static bool Interp_InitBitFieldSint8(InterpState &S, CodePtr &PC) {
31003 {
31004 CodePtr OpPC = PC;
31005 const auto V0 = ReadArg<uint32_t>(S, PC);
31006 const auto V1 = ReadArg<uint32_t>(S, PC);
31007 if (!InitBitField<PT_Sint8>(S, OpPC, V0, V1)) return false;
31008 }
31009#if USE_TAILCALLS
31010 MUSTTAIL return InterpNext(S, PC);
31011#else
31012 return true;
31013#endif
31014}
31015PRESERVE_NONE
31016static bool Interp_InitBitFieldUint8(InterpState &S, CodePtr &PC) {
31017 {
31018 CodePtr OpPC = PC;
31019 const auto V0 = ReadArg<uint32_t>(S, PC);
31020 const auto V1 = ReadArg<uint32_t>(S, PC);
31021 if (!InitBitField<PT_Uint8>(S, OpPC, V0, V1)) return false;
31022 }
31023#if USE_TAILCALLS
31024 MUSTTAIL return InterpNext(S, PC);
31025#else
31026 return true;
31027#endif
31028}
31029PRESERVE_NONE
31030static bool Interp_InitBitFieldSint16(InterpState &S, CodePtr &PC) {
31031 {
31032 CodePtr OpPC = PC;
31033 const auto V0 = ReadArg<uint32_t>(S, PC);
31034 const auto V1 = ReadArg<uint32_t>(S, PC);
31035 if (!InitBitField<PT_Sint16>(S, OpPC, V0, V1)) return false;
31036 }
31037#if USE_TAILCALLS
31038 MUSTTAIL return InterpNext(S, PC);
31039#else
31040 return true;
31041#endif
31042}
31043PRESERVE_NONE
31044static bool Interp_InitBitFieldUint16(InterpState &S, CodePtr &PC) {
31045 {
31046 CodePtr OpPC = PC;
31047 const auto V0 = ReadArg<uint32_t>(S, PC);
31048 const auto V1 = ReadArg<uint32_t>(S, PC);
31049 if (!InitBitField<PT_Uint16>(S, OpPC, V0, V1)) return false;
31050 }
31051#if USE_TAILCALLS
31052 MUSTTAIL return InterpNext(S, PC);
31053#else
31054 return true;
31055#endif
31056}
31057PRESERVE_NONE
31058static bool Interp_InitBitFieldSint32(InterpState &S, CodePtr &PC) {
31059 {
31060 CodePtr OpPC = PC;
31061 const auto V0 = ReadArg<uint32_t>(S, PC);
31062 const auto V1 = ReadArg<uint32_t>(S, PC);
31063 if (!InitBitField<PT_Sint32>(S, OpPC, V0, V1)) return false;
31064 }
31065#if USE_TAILCALLS
31066 MUSTTAIL return InterpNext(S, PC);
31067#else
31068 return true;
31069#endif
31070}
31071PRESERVE_NONE
31072static bool Interp_InitBitFieldUint32(InterpState &S, CodePtr &PC) {
31073 {
31074 CodePtr OpPC = PC;
31075 const auto V0 = ReadArg<uint32_t>(S, PC);
31076 const auto V1 = ReadArg<uint32_t>(S, PC);
31077 if (!InitBitField<PT_Uint32>(S, OpPC, V0, V1)) return false;
31078 }
31079#if USE_TAILCALLS
31080 MUSTTAIL return InterpNext(S, PC);
31081#else
31082 return true;
31083#endif
31084}
31085PRESERVE_NONE
31086static bool Interp_InitBitFieldSint64(InterpState &S, CodePtr &PC) {
31087 {
31088 CodePtr OpPC = PC;
31089 const auto V0 = ReadArg<uint32_t>(S, PC);
31090 const auto V1 = ReadArg<uint32_t>(S, PC);
31091 if (!InitBitField<PT_Sint64>(S, OpPC, V0, V1)) return false;
31092 }
31093#if USE_TAILCALLS
31094 MUSTTAIL return InterpNext(S, PC);
31095#else
31096 return true;
31097#endif
31098}
31099PRESERVE_NONE
31100static bool Interp_InitBitFieldUint64(InterpState &S, CodePtr &PC) {
31101 {
31102 CodePtr OpPC = PC;
31103 const auto V0 = ReadArg<uint32_t>(S, PC);
31104 const auto V1 = ReadArg<uint32_t>(S, PC);
31105 if (!InitBitField<PT_Uint64>(S, OpPC, V0, V1)) return false;
31106 }
31107#if USE_TAILCALLS
31108 MUSTTAIL return InterpNext(S, PC);
31109#else
31110 return true;
31111#endif
31112}
31113PRESERVE_NONE
31114static bool Interp_InitBitFieldIntAP(InterpState &S, CodePtr &PC) {
31115 {
31116 CodePtr OpPC = PC;
31117 const auto V0 = ReadArg<uint32_t>(S, PC);
31118 const auto V1 = ReadArg<uint32_t>(S, PC);
31119 if (!InitBitField<PT_IntAP>(S, OpPC, V0, V1)) return false;
31120 }
31121#if USE_TAILCALLS
31122 MUSTTAIL return InterpNext(S, PC);
31123#else
31124 return true;
31125#endif
31126}
31127PRESERVE_NONE
31128static bool Interp_InitBitFieldIntAPS(InterpState &S, CodePtr &PC) {
31129 {
31130 CodePtr OpPC = PC;
31131 const auto V0 = ReadArg<uint32_t>(S, PC);
31132 const auto V1 = ReadArg<uint32_t>(S, PC);
31133 if (!InitBitField<PT_IntAPS>(S, OpPC, V0, V1)) return false;
31134 }
31135#if USE_TAILCALLS
31136 MUSTTAIL return InterpNext(S, PC);
31137#else
31138 return true;
31139#endif
31140}
31141PRESERVE_NONE
31142static bool Interp_InitBitFieldBool(InterpState &S, CodePtr &PC) {
31143 {
31144 CodePtr OpPC = PC;
31145 const auto V0 = ReadArg<uint32_t>(S, PC);
31146 const auto V1 = ReadArg<uint32_t>(S, PC);
31147 if (!InitBitField<PT_Bool>(S, OpPC, V0, V1)) return false;
31148 }
31149#if USE_TAILCALLS
31150 MUSTTAIL return InterpNext(S, PC);
31151#else
31152 return true;
31153#endif
31154}
31155#endif
31156#ifdef GET_DISASM
31157case OP_InitBitFieldSint8:
31158 Text.Op = PrintName("InitBitFieldSint8");
31159 Text.Args.push_back(printArg<uint32_t>(P, PC));
31160 Text.Args.push_back(printArg<uint32_t>(P, PC));
31161 break;
31162case OP_InitBitFieldUint8:
31163 Text.Op = PrintName("InitBitFieldUint8");
31164 Text.Args.push_back(printArg<uint32_t>(P, PC));
31165 Text.Args.push_back(printArg<uint32_t>(P, PC));
31166 break;
31167case OP_InitBitFieldSint16:
31168 Text.Op = PrintName("InitBitFieldSint16");
31169 Text.Args.push_back(printArg<uint32_t>(P, PC));
31170 Text.Args.push_back(printArg<uint32_t>(P, PC));
31171 break;
31172case OP_InitBitFieldUint16:
31173 Text.Op = PrintName("InitBitFieldUint16");
31174 Text.Args.push_back(printArg<uint32_t>(P, PC));
31175 Text.Args.push_back(printArg<uint32_t>(P, PC));
31176 break;
31177case OP_InitBitFieldSint32:
31178 Text.Op = PrintName("InitBitFieldSint32");
31179 Text.Args.push_back(printArg<uint32_t>(P, PC));
31180 Text.Args.push_back(printArg<uint32_t>(P, PC));
31181 break;
31182case OP_InitBitFieldUint32:
31183 Text.Op = PrintName("InitBitFieldUint32");
31184 Text.Args.push_back(printArg<uint32_t>(P, PC));
31185 Text.Args.push_back(printArg<uint32_t>(P, PC));
31186 break;
31187case OP_InitBitFieldSint64:
31188 Text.Op = PrintName("InitBitFieldSint64");
31189 Text.Args.push_back(printArg<uint32_t>(P, PC));
31190 Text.Args.push_back(printArg<uint32_t>(P, PC));
31191 break;
31192case OP_InitBitFieldUint64:
31193 Text.Op = PrintName("InitBitFieldUint64");
31194 Text.Args.push_back(printArg<uint32_t>(P, PC));
31195 Text.Args.push_back(printArg<uint32_t>(P, PC));
31196 break;
31197case OP_InitBitFieldIntAP:
31198 Text.Op = PrintName("InitBitFieldIntAP");
31199 Text.Args.push_back(printArg<uint32_t>(P, PC));
31200 Text.Args.push_back(printArg<uint32_t>(P, PC));
31201 break;
31202case OP_InitBitFieldIntAPS:
31203 Text.Op = PrintName("InitBitFieldIntAPS");
31204 Text.Args.push_back(printArg<uint32_t>(P, PC));
31205 Text.Args.push_back(printArg<uint32_t>(P, PC));
31206 break;
31207case OP_InitBitFieldBool:
31208 Text.Op = PrintName("InitBitFieldBool");
31209 Text.Args.push_back(printArg<uint32_t>(P, PC));
31210 Text.Args.push_back(printArg<uint32_t>(P, PC));
31211 break;
31212#endif
31213#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31214bool emitInitBitFieldSint8( uint32_t , uint32_t , SourceInfo);
31215bool emitInitBitFieldUint8( uint32_t , uint32_t , SourceInfo);
31216bool emitInitBitFieldSint16( uint32_t , uint32_t , SourceInfo);
31217bool emitInitBitFieldUint16( uint32_t , uint32_t , SourceInfo);
31218bool emitInitBitFieldSint32( uint32_t , uint32_t , SourceInfo);
31219bool emitInitBitFieldUint32( uint32_t , uint32_t , SourceInfo);
31220bool emitInitBitFieldSint64( uint32_t , uint32_t , SourceInfo);
31221bool emitInitBitFieldUint64( uint32_t , uint32_t , SourceInfo);
31222bool emitInitBitFieldIntAP( uint32_t , uint32_t , SourceInfo);
31223bool emitInitBitFieldIntAPS( uint32_t , uint32_t , SourceInfo);
31224bool emitInitBitFieldBool( uint32_t , uint32_t , SourceInfo);
31225#endif
31226#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31227[[nodiscard]] bool emitInitBitField(PrimType, uint32_t, uint32_t, SourceInfo I);
31228#endif
31229#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
31230bool
31231#if defined(GET_EVAL_IMPL)
31232EvalEmitter
31233#else
31234ByteCodeEmitter
31235#endif
31236::emitInitBitField(PrimType T0, uint32_t A0, uint32_t A1, SourceInfo I) {
31237 switch (T0) {
31238 case PT_Sint8:
31239 return emitInitBitFieldSint8(A0, A1, I);
31240 case PT_Uint8:
31241 return emitInitBitFieldUint8(A0, A1, I);
31242 case PT_Sint16:
31243 return emitInitBitFieldSint16(A0, A1, I);
31244 case PT_Uint16:
31245 return emitInitBitFieldUint16(A0, A1, I);
31246 case PT_Sint32:
31247 return emitInitBitFieldSint32(A0, A1, I);
31248 case PT_Uint32:
31249 return emitInitBitFieldUint32(A0, A1, I);
31250 case PT_Sint64:
31251 return emitInitBitFieldSint64(A0, A1, I);
31252 case PT_Uint64:
31253 return emitInitBitFieldUint64(A0, A1, I);
31254 case PT_IntAP:
31255 return emitInitBitFieldIntAP(A0, A1, I);
31256 case PT_IntAPS:
31257 return emitInitBitFieldIntAPS(A0, A1, I);
31258 case PT_Bool:
31259 return emitInitBitFieldBool(A0, A1, I);
31260 default: llvm_unreachable("invalid type: emitInitBitField");
31261 }
31262 llvm_unreachable("invalid enum value");
31263}
31264#endif
31265#ifdef GET_LINK_IMPL
31266bool ByteCodeEmitter::emitInitBitFieldSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31267 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldSint8, A0, A1, L);
31268}
31269bool ByteCodeEmitter::emitInitBitFieldUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31270 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldUint8, A0, A1, L);
31271}
31272bool ByteCodeEmitter::emitInitBitFieldSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31273 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldSint16, A0, A1, L);
31274}
31275bool ByteCodeEmitter::emitInitBitFieldUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31276 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldUint16, A0, A1, L);
31277}
31278bool ByteCodeEmitter::emitInitBitFieldSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31279 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldSint32, A0, A1, L);
31280}
31281bool ByteCodeEmitter::emitInitBitFieldUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31282 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldUint32, A0, A1, L);
31283}
31284bool ByteCodeEmitter::emitInitBitFieldSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31285 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldSint64, A0, A1, L);
31286}
31287bool ByteCodeEmitter::emitInitBitFieldUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31288 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldUint64, A0, A1, L);
31289}
31290bool ByteCodeEmitter::emitInitBitFieldIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
31291 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldIntAP, A0, A1, L);
31292}
31293bool ByteCodeEmitter::emitInitBitFieldIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
31294 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldIntAPS, A0, A1, L);
31295}
31296bool ByteCodeEmitter::emitInitBitFieldBool( uint32_t A0, uint32_t A1, SourceInfo L) {
31297 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldBool, A0, A1, L);
31298}
31299#endif
31300#ifdef GET_EVAL_IMPL
31301bool EvalEmitter::emitInitBitFieldSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31302 if (!isActive()) return true;
31303 CurrentSource = L;
31304 return InitBitField<PT_Sint8>(S, OpPC, A0, A1);
31305}
31306bool EvalEmitter::emitInitBitFieldUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31307 if (!isActive()) return true;
31308 CurrentSource = L;
31309 return InitBitField<PT_Uint8>(S, OpPC, A0, A1);
31310}
31311bool EvalEmitter::emitInitBitFieldSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31312 if (!isActive()) return true;
31313 CurrentSource = L;
31314 return InitBitField<PT_Sint16>(S, OpPC, A0, A1);
31315}
31316bool EvalEmitter::emitInitBitFieldUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31317 if (!isActive()) return true;
31318 CurrentSource = L;
31319 return InitBitField<PT_Uint16>(S, OpPC, A0, A1);
31320}
31321bool EvalEmitter::emitInitBitFieldSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31322 if (!isActive()) return true;
31323 CurrentSource = L;
31324 return InitBitField<PT_Sint32>(S, OpPC, A0, A1);
31325}
31326bool EvalEmitter::emitInitBitFieldUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31327 if (!isActive()) return true;
31328 CurrentSource = L;
31329 return InitBitField<PT_Uint32>(S, OpPC, A0, A1);
31330}
31331bool EvalEmitter::emitInitBitFieldSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31332 if (!isActive()) return true;
31333 CurrentSource = L;
31334 return InitBitField<PT_Sint64>(S, OpPC, A0, A1);
31335}
31336bool EvalEmitter::emitInitBitFieldUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31337 if (!isActive()) return true;
31338 CurrentSource = L;
31339 return InitBitField<PT_Uint64>(S, OpPC, A0, A1);
31340}
31341bool EvalEmitter::emitInitBitFieldIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
31342 if (!isActive()) return true;
31343 CurrentSource = L;
31344 return InitBitField<PT_IntAP>(S, OpPC, A0, A1);
31345}
31346bool EvalEmitter::emitInitBitFieldIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
31347 if (!isActive()) return true;
31348 CurrentSource = L;
31349 return InitBitField<PT_IntAPS>(S, OpPC, A0, A1);
31350}
31351bool EvalEmitter::emitInitBitFieldBool( uint32_t A0, uint32_t A1, SourceInfo L) {
31352 if (!isActive()) return true;
31353 CurrentSource = L;
31354 return InitBitField<PT_Bool>(S, OpPC, A0, A1);
31355}
31356#endif
31357#ifdef GET_OPCODE_NAMES
31358OP_InitBitFieldActivateSint8,
31359OP_InitBitFieldActivateUint8,
31360OP_InitBitFieldActivateSint16,
31361OP_InitBitFieldActivateUint16,
31362OP_InitBitFieldActivateSint32,
31363OP_InitBitFieldActivateUint32,
31364OP_InitBitFieldActivateSint64,
31365OP_InitBitFieldActivateUint64,
31366OP_InitBitFieldActivateIntAP,
31367OP_InitBitFieldActivateIntAPS,
31368OP_InitBitFieldActivateBool,
31369#endif
31370#ifdef GET_INTERPFN_LIST
31371&Interp_InitBitFieldActivateSint8,
31372&Interp_InitBitFieldActivateUint8,
31373&Interp_InitBitFieldActivateSint16,
31374&Interp_InitBitFieldActivateUint16,
31375&Interp_InitBitFieldActivateSint32,
31376&Interp_InitBitFieldActivateUint32,
31377&Interp_InitBitFieldActivateSint64,
31378&Interp_InitBitFieldActivateUint64,
31379&Interp_InitBitFieldActivateIntAP,
31380&Interp_InitBitFieldActivateIntAPS,
31381&Interp_InitBitFieldActivateBool,
31382#endif
31383#ifdef GET_INTERPFN_DISPATCHERS
31384PRESERVE_NONE
31385static bool Interp_InitBitFieldActivateSint8(InterpState &S, CodePtr &PC) {
31386 {
31387 CodePtr OpPC = PC;
31388 const auto V0 = ReadArg<uint32_t>(S, PC);
31389 const auto V1 = ReadArg<uint32_t>(S, PC);
31390 if (!InitBitFieldActivate<PT_Sint8>(S, OpPC, V0, V1)) return false;
31391 }
31392#if USE_TAILCALLS
31393 MUSTTAIL return InterpNext(S, PC);
31394#else
31395 return true;
31396#endif
31397}
31398PRESERVE_NONE
31399static bool Interp_InitBitFieldActivateUint8(InterpState &S, CodePtr &PC) {
31400 {
31401 CodePtr OpPC = PC;
31402 const auto V0 = ReadArg<uint32_t>(S, PC);
31403 const auto V1 = ReadArg<uint32_t>(S, PC);
31404 if (!InitBitFieldActivate<PT_Uint8>(S, OpPC, V0, V1)) return false;
31405 }
31406#if USE_TAILCALLS
31407 MUSTTAIL return InterpNext(S, PC);
31408#else
31409 return true;
31410#endif
31411}
31412PRESERVE_NONE
31413static bool Interp_InitBitFieldActivateSint16(InterpState &S, CodePtr &PC) {
31414 {
31415 CodePtr OpPC = PC;
31416 const auto V0 = ReadArg<uint32_t>(S, PC);
31417 const auto V1 = ReadArg<uint32_t>(S, PC);
31418 if (!InitBitFieldActivate<PT_Sint16>(S, OpPC, V0, V1)) return false;
31419 }
31420#if USE_TAILCALLS
31421 MUSTTAIL return InterpNext(S, PC);
31422#else
31423 return true;
31424#endif
31425}
31426PRESERVE_NONE
31427static bool Interp_InitBitFieldActivateUint16(InterpState &S, CodePtr &PC) {
31428 {
31429 CodePtr OpPC = PC;
31430 const auto V0 = ReadArg<uint32_t>(S, PC);
31431 const auto V1 = ReadArg<uint32_t>(S, PC);
31432 if (!InitBitFieldActivate<PT_Uint16>(S, OpPC, V0, V1)) return false;
31433 }
31434#if USE_TAILCALLS
31435 MUSTTAIL return InterpNext(S, PC);
31436#else
31437 return true;
31438#endif
31439}
31440PRESERVE_NONE
31441static bool Interp_InitBitFieldActivateSint32(InterpState &S, CodePtr &PC) {
31442 {
31443 CodePtr OpPC = PC;
31444 const auto V0 = ReadArg<uint32_t>(S, PC);
31445 const auto V1 = ReadArg<uint32_t>(S, PC);
31446 if (!InitBitFieldActivate<PT_Sint32>(S, OpPC, V0, V1)) return false;
31447 }
31448#if USE_TAILCALLS
31449 MUSTTAIL return InterpNext(S, PC);
31450#else
31451 return true;
31452#endif
31453}
31454PRESERVE_NONE
31455static bool Interp_InitBitFieldActivateUint32(InterpState &S, CodePtr &PC) {
31456 {
31457 CodePtr OpPC = PC;
31458 const auto V0 = ReadArg<uint32_t>(S, PC);
31459 const auto V1 = ReadArg<uint32_t>(S, PC);
31460 if (!InitBitFieldActivate<PT_Uint32>(S, OpPC, V0, V1)) return false;
31461 }
31462#if USE_TAILCALLS
31463 MUSTTAIL return InterpNext(S, PC);
31464#else
31465 return true;
31466#endif
31467}
31468PRESERVE_NONE
31469static bool Interp_InitBitFieldActivateSint64(InterpState &S, CodePtr &PC) {
31470 {
31471 CodePtr OpPC = PC;
31472 const auto V0 = ReadArg<uint32_t>(S, PC);
31473 const auto V1 = ReadArg<uint32_t>(S, PC);
31474 if (!InitBitFieldActivate<PT_Sint64>(S, OpPC, V0, V1)) return false;
31475 }
31476#if USE_TAILCALLS
31477 MUSTTAIL return InterpNext(S, PC);
31478#else
31479 return true;
31480#endif
31481}
31482PRESERVE_NONE
31483static bool Interp_InitBitFieldActivateUint64(InterpState &S, CodePtr &PC) {
31484 {
31485 CodePtr OpPC = PC;
31486 const auto V0 = ReadArg<uint32_t>(S, PC);
31487 const auto V1 = ReadArg<uint32_t>(S, PC);
31488 if (!InitBitFieldActivate<PT_Uint64>(S, OpPC, V0, V1)) return false;
31489 }
31490#if USE_TAILCALLS
31491 MUSTTAIL return InterpNext(S, PC);
31492#else
31493 return true;
31494#endif
31495}
31496PRESERVE_NONE
31497static bool Interp_InitBitFieldActivateIntAP(InterpState &S, CodePtr &PC) {
31498 {
31499 CodePtr OpPC = PC;
31500 const auto V0 = ReadArg<uint32_t>(S, PC);
31501 const auto V1 = ReadArg<uint32_t>(S, PC);
31502 if (!InitBitFieldActivate<PT_IntAP>(S, OpPC, V0, V1)) return false;
31503 }
31504#if USE_TAILCALLS
31505 MUSTTAIL return InterpNext(S, PC);
31506#else
31507 return true;
31508#endif
31509}
31510PRESERVE_NONE
31511static bool Interp_InitBitFieldActivateIntAPS(InterpState &S, CodePtr &PC) {
31512 {
31513 CodePtr OpPC = PC;
31514 const auto V0 = ReadArg<uint32_t>(S, PC);
31515 const auto V1 = ReadArg<uint32_t>(S, PC);
31516 if (!InitBitFieldActivate<PT_IntAPS>(S, OpPC, V0, V1)) return false;
31517 }
31518#if USE_TAILCALLS
31519 MUSTTAIL return InterpNext(S, PC);
31520#else
31521 return true;
31522#endif
31523}
31524PRESERVE_NONE
31525static bool Interp_InitBitFieldActivateBool(InterpState &S, CodePtr &PC) {
31526 {
31527 CodePtr OpPC = PC;
31528 const auto V0 = ReadArg<uint32_t>(S, PC);
31529 const auto V1 = ReadArg<uint32_t>(S, PC);
31530 if (!InitBitFieldActivate<PT_Bool>(S, OpPC, V0, V1)) return false;
31531 }
31532#if USE_TAILCALLS
31533 MUSTTAIL return InterpNext(S, PC);
31534#else
31535 return true;
31536#endif
31537}
31538#endif
31539#ifdef GET_DISASM
31540case OP_InitBitFieldActivateSint8:
31541 Text.Op = PrintName("InitBitFieldActivateSint8");
31542 Text.Args.push_back(printArg<uint32_t>(P, PC));
31543 Text.Args.push_back(printArg<uint32_t>(P, PC));
31544 break;
31545case OP_InitBitFieldActivateUint8:
31546 Text.Op = PrintName("InitBitFieldActivateUint8");
31547 Text.Args.push_back(printArg<uint32_t>(P, PC));
31548 Text.Args.push_back(printArg<uint32_t>(P, PC));
31549 break;
31550case OP_InitBitFieldActivateSint16:
31551 Text.Op = PrintName("InitBitFieldActivateSint16");
31552 Text.Args.push_back(printArg<uint32_t>(P, PC));
31553 Text.Args.push_back(printArg<uint32_t>(P, PC));
31554 break;
31555case OP_InitBitFieldActivateUint16:
31556 Text.Op = PrintName("InitBitFieldActivateUint16");
31557 Text.Args.push_back(printArg<uint32_t>(P, PC));
31558 Text.Args.push_back(printArg<uint32_t>(P, PC));
31559 break;
31560case OP_InitBitFieldActivateSint32:
31561 Text.Op = PrintName("InitBitFieldActivateSint32");
31562 Text.Args.push_back(printArg<uint32_t>(P, PC));
31563 Text.Args.push_back(printArg<uint32_t>(P, PC));
31564 break;
31565case OP_InitBitFieldActivateUint32:
31566 Text.Op = PrintName("InitBitFieldActivateUint32");
31567 Text.Args.push_back(printArg<uint32_t>(P, PC));
31568 Text.Args.push_back(printArg<uint32_t>(P, PC));
31569 break;
31570case OP_InitBitFieldActivateSint64:
31571 Text.Op = PrintName("InitBitFieldActivateSint64");
31572 Text.Args.push_back(printArg<uint32_t>(P, PC));
31573 Text.Args.push_back(printArg<uint32_t>(P, PC));
31574 break;
31575case OP_InitBitFieldActivateUint64:
31576 Text.Op = PrintName("InitBitFieldActivateUint64");
31577 Text.Args.push_back(printArg<uint32_t>(P, PC));
31578 Text.Args.push_back(printArg<uint32_t>(P, PC));
31579 break;
31580case OP_InitBitFieldActivateIntAP:
31581 Text.Op = PrintName("InitBitFieldActivateIntAP");
31582 Text.Args.push_back(printArg<uint32_t>(P, PC));
31583 Text.Args.push_back(printArg<uint32_t>(P, PC));
31584 break;
31585case OP_InitBitFieldActivateIntAPS:
31586 Text.Op = PrintName("InitBitFieldActivateIntAPS");
31587 Text.Args.push_back(printArg<uint32_t>(P, PC));
31588 Text.Args.push_back(printArg<uint32_t>(P, PC));
31589 break;
31590case OP_InitBitFieldActivateBool:
31591 Text.Op = PrintName("InitBitFieldActivateBool");
31592 Text.Args.push_back(printArg<uint32_t>(P, PC));
31593 Text.Args.push_back(printArg<uint32_t>(P, PC));
31594 break;
31595#endif
31596#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31597bool emitInitBitFieldActivateSint8( uint32_t , uint32_t , SourceInfo);
31598bool emitInitBitFieldActivateUint8( uint32_t , uint32_t , SourceInfo);
31599bool emitInitBitFieldActivateSint16( uint32_t , uint32_t , SourceInfo);
31600bool emitInitBitFieldActivateUint16( uint32_t , uint32_t , SourceInfo);
31601bool emitInitBitFieldActivateSint32( uint32_t , uint32_t , SourceInfo);
31602bool emitInitBitFieldActivateUint32( uint32_t , uint32_t , SourceInfo);
31603bool emitInitBitFieldActivateSint64( uint32_t , uint32_t , SourceInfo);
31604bool emitInitBitFieldActivateUint64( uint32_t , uint32_t , SourceInfo);
31605bool emitInitBitFieldActivateIntAP( uint32_t , uint32_t , SourceInfo);
31606bool emitInitBitFieldActivateIntAPS( uint32_t , uint32_t , SourceInfo);
31607bool emitInitBitFieldActivateBool( uint32_t , uint32_t , SourceInfo);
31608#endif
31609#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31610[[nodiscard]] bool emitInitBitFieldActivate(PrimType, uint32_t, uint32_t, SourceInfo I);
31611#endif
31612#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
31613bool
31614#if defined(GET_EVAL_IMPL)
31615EvalEmitter
31616#else
31617ByteCodeEmitter
31618#endif
31619::emitInitBitFieldActivate(PrimType T0, uint32_t A0, uint32_t A1, SourceInfo I) {
31620 switch (T0) {
31621 case PT_Sint8:
31622 return emitInitBitFieldActivateSint8(A0, A1, I);
31623 case PT_Uint8:
31624 return emitInitBitFieldActivateUint8(A0, A1, I);
31625 case PT_Sint16:
31626 return emitInitBitFieldActivateSint16(A0, A1, I);
31627 case PT_Uint16:
31628 return emitInitBitFieldActivateUint16(A0, A1, I);
31629 case PT_Sint32:
31630 return emitInitBitFieldActivateSint32(A0, A1, I);
31631 case PT_Uint32:
31632 return emitInitBitFieldActivateUint32(A0, A1, I);
31633 case PT_Sint64:
31634 return emitInitBitFieldActivateSint64(A0, A1, I);
31635 case PT_Uint64:
31636 return emitInitBitFieldActivateUint64(A0, A1, I);
31637 case PT_IntAP:
31638 return emitInitBitFieldActivateIntAP(A0, A1, I);
31639 case PT_IntAPS:
31640 return emitInitBitFieldActivateIntAPS(A0, A1, I);
31641 case PT_Bool:
31642 return emitInitBitFieldActivateBool(A0, A1, I);
31643 default: llvm_unreachable("invalid type: emitInitBitFieldActivate");
31644 }
31645 llvm_unreachable("invalid enum value");
31646}
31647#endif
31648#ifdef GET_LINK_IMPL
31649bool ByteCodeEmitter::emitInitBitFieldActivateSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31650 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateSint8, A0, A1, L);
31651}
31652bool ByteCodeEmitter::emitInitBitFieldActivateUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31653 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateUint8, A0, A1, L);
31654}
31655bool ByteCodeEmitter::emitInitBitFieldActivateSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31656 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateSint16, A0, A1, L);
31657}
31658bool ByteCodeEmitter::emitInitBitFieldActivateUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31659 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateUint16, A0, A1, L);
31660}
31661bool ByteCodeEmitter::emitInitBitFieldActivateSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31662 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateSint32, A0, A1, L);
31663}
31664bool ByteCodeEmitter::emitInitBitFieldActivateUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31665 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateUint32, A0, A1, L);
31666}
31667bool ByteCodeEmitter::emitInitBitFieldActivateSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31668 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateSint64, A0, A1, L);
31669}
31670bool ByteCodeEmitter::emitInitBitFieldActivateUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31671 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateUint64, A0, A1, L);
31672}
31673bool ByteCodeEmitter::emitInitBitFieldActivateIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
31674 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateIntAP, A0, A1, L);
31675}
31676bool ByteCodeEmitter::emitInitBitFieldActivateIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
31677 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateIntAPS, A0, A1, L);
31678}
31679bool ByteCodeEmitter::emitInitBitFieldActivateBool( uint32_t A0, uint32_t A1, SourceInfo L) {
31680 return emitOp<uint32_t, uint32_t>(OP_InitBitFieldActivateBool, A0, A1, L);
31681}
31682#endif
31683#ifdef GET_EVAL_IMPL
31684bool EvalEmitter::emitInitBitFieldActivateSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31685 if (!isActive()) return true;
31686 CurrentSource = L;
31687 return InitBitFieldActivate<PT_Sint8>(S, OpPC, A0, A1);
31688}
31689bool EvalEmitter::emitInitBitFieldActivateUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
31690 if (!isActive()) return true;
31691 CurrentSource = L;
31692 return InitBitFieldActivate<PT_Uint8>(S, OpPC, A0, A1);
31693}
31694bool EvalEmitter::emitInitBitFieldActivateSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31695 if (!isActive()) return true;
31696 CurrentSource = L;
31697 return InitBitFieldActivate<PT_Sint16>(S, OpPC, A0, A1);
31698}
31699bool EvalEmitter::emitInitBitFieldActivateUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
31700 if (!isActive()) return true;
31701 CurrentSource = L;
31702 return InitBitFieldActivate<PT_Uint16>(S, OpPC, A0, A1);
31703}
31704bool EvalEmitter::emitInitBitFieldActivateSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31705 if (!isActive()) return true;
31706 CurrentSource = L;
31707 return InitBitFieldActivate<PT_Sint32>(S, OpPC, A0, A1);
31708}
31709bool EvalEmitter::emitInitBitFieldActivateUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
31710 if (!isActive()) return true;
31711 CurrentSource = L;
31712 return InitBitFieldActivate<PT_Uint32>(S, OpPC, A0, A1);
31713}
31714bool EvalEmitter::emitInitBitFieldActivateSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31715 if (!isActive()) return true;
31716 CurrentSource = L;
31717 return InitBitFieldActivate<PT_Sint64>(S, OpPC, A0, A1);
31718}
31719bool EvalEmitter::emitInitBitFieldActivateUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
31720 if (!isActive()) return true;
31721 CurrentSource = L;
31722 return InitBitFieldActivate<PT_Uint64>(S, OpPC, A0, A1);
31723}
31724bool EvalEmitter::emitInitBitFieldActivateIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
31725 if (!isActive()) return true;
31726 CurrentSource = L;
31727 return InitBitFieldActivate<PT_IntAP>(S, OpPC, A0, A1);
31728}
31729bool EvalEmitter::emitInitBitFieldActivateIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
31730 if (!isActive()) return true;
31731 CurrentSource = L;
31732 return InitBitFieldActivate<PT_IntAPS>(S, OpPC, A0, A1);
31733}
31734bool EvalEmitter::emitInitBitFieldActivateBool( uint32_t A0, uint32_t A1, SourceInfo L) {
31735 if (!isActive()) return true;
31736 CurrentSource = L;
31737 return InitBitFieldActivate<PT_Bool>(S, OpPC, A0, A1);
31738}
31739#endif
31740#ifdef GET_OPCODE_NAMES
31741OP_InitElemSint8,
31742OP_InitElemUint8,
31743OP_InitElemSint16,
31744OP_InitElemUint16,
31745OP_InitElemSint32,
31746OP_InitElemUint32,
31747OP_InitElemSint64,
31748OP_InitElemUint64,
31749OP_InitElemIntAP,
31750OP_InitElemIntAPS,
31751OP_InitElemBool,
31752OP_InitElemFixedPoint,
31753OP_InitElemPtr,
31754OP_InitElemMemberPtr,
31755OP_InitElemFloat,
31756#endif
31757#ifdef GET_INTERPFN_LIST
31758&Interp_InitElemSint8,
31759&Interp_InitElemUint8,
31760&Interp_InitElemSint16,
31761&Interp_InitElemUint16,
31762&Interp_InitElemSint32,
31763&Interp_InitElemUint32,
31764&Interp_InitElemSint64,
31765&Interp_InitElemUint64,
31766&Interp_InitElemIntAP,
31767&Interp_InitElemIntAPS,
31768&Interp_InitElemBool,
31769&Interp_InitElemFixedPoint,
31770&Interp_InitElemPtr,
31771&Interp_InitElemMemberPtr,
31772&Interp_InitElemFloat,
31773#endif
31774#ifdef GET_INTERPFN_DISPATCHERS
31775PRESERVE_NONE
31776static bool Interp_InitElemSint8(InterpState &S, CodePtr &PC) {
31777 {
31778 CodePtr OpPC = PC;
31779 const auto V0 = ReadArg<uint32_t>(S, PC);
31780 if (!InitElem<PT_Sint8>(S, OpPC, V0)) return false;
31781 }
31782#if USE_TAILCALLS
31783 MUSTTAIL return InterpNext(S, PC);
31784#else
31785 return true;
31786#endif
31787}
31788PRESERVE_NONE
31789static bool Interp_InitElemUint8(InterpState &S, CodePtr &PC) {
31790 {
31791 CodePtr OpPC = PC;
31792 const auto V0 = ReadArg<uint32_t>(S, PC);
31793 if (!InitElem<PT_Uint8>(S, OpPC, V0)) return false;
31794 }
31795#if USE_TAILCALLS
31796 MUSTTAIL return InterpNext(S, PC);
31797#else
31798 return true;
31799#endif
31800}
31801PRESERVE_NONE
31802static bool Interp_InitElemSint16(InterpState &S, CodePtr &PC) {
31803 {
31804 CodePtr OpPC = PC;
31805 const auto V0 = ReadArg<uint32_t>(S, PC);
31806 if (!InitElem<PT_Sint16>(S, OpPC, V0)) return false;
31807 }
31808#if USE_TAILCALLS
31809 MUSTTAIL return InterpNext(S, PC);
31810#else
31811 return true;
31812#endif
31813}
31814PRESERVE_NONE
31815static bool Interp_InitElemUint16(InterpState &S, CodePtr &PC) {
31816 {
31817 CodePtr OpPC = PC;
31818 const auto V0 = ReadArg<uint32_t>(S, PC);
31819 if (!InitElem<PT_Uint16>(S, OpPC, V0)) return false;
31820 }
31821#if USE_TAILCALLS
31822 MUSTTAIL return InterpNext(S, PC);
31823#else
31824 return true;
31825#endif
31826}
31827PRESERVE_NONE
31828static bool Interp_InitElemSint32(InterpState &S, CodePtr &PC) {
31829 {
31830 CodePtr OpPC = PC;
31831 const auto V0 = ReadArg<uint32_t>(S, PC);
31832 if (!InitElem<PT_Sint32>(S, OpPC, V0)) return false;
31833 }
31834#if USE_TAILCALLS
31835 MUSTTAIL return InterpNext(S, PC);
31836#else
31837 return true;
31838#endif
31839}
31840PRESERVE_NONE
31841static bool Interp_InitElemUint32(InterpState &S, CodePtr &PC) {
31842 {
31843 CodePtr OpPC = PC;
31844 const auto V0 = ReadArg<uint32_t>(S, PC);
31845 if (!InitElem<PT_Uint32>(S, OpPC, V0)) return false;
31846 }
31847#if USE_TAILCALLS
31848 MUSTTAIL return InterpNext(S, PC);
31849#else
31850 return true;
31851#endif
31852}
31853PRESERVE_NONE
31854static bool Interp_InitElemSint64(InterpState &S, CodePtr &PC) {
31855 {
31856 CodePtr OpPC = PC;
31857 const auto V0 = ReadArg<uint32_t>(S, PC);
31858 if (!InitElem<PT_Sint64>(S, OpPC, V0)) return false;
31859 }
31860#if USE_TAILCALLS
31861 MUSTTAIL return InterpNext(S, PC);
31862#else
31863 return true;
31864#endif
31865}
31866PRESERVE_NONE
31867static bool Interp_InitElemUint64(InterpState &S, CodePtr &PC) {
31868 {
31869 CodePtr OpPC = PC;
31870 const auto V0 = ReadArg<uint32_t>(S, PC);
31871 if (!InitElem<PT_Uint64>(S, OpPC, V0)) return false;
31872 }
31873#if USE_TAILCALLS
31874 MUSTTAIL return InterpNext(S, PC);
31875#else
31876 return true;
31877#endif
31878}
31879PRESERVE_NONE
31880static bool Interp_InitElemIntAP(InterpState &S, CodePtr &PC) {
31881 {
31882 CodePtr OpPC = PC;
31883 const auto V0 = ReadArg<uint32_t>(S, PC);
31884 if (!InitElem<PT_IntAP>(S, OpPC, V0)) return false;
31885 }
31886#if USE_TAILCALLS
31887 MUSTTAIL return InterpNext(S, PC);
31888#else
31889 return true;
31890#endif
31891}
31892PRESERVE_NONE
31893static bool Interp_InitElemIntAPS(InterpState &S, CodePtr &PC) {
31894 {
31895 CodePtr OpPC = PC;
31896 const auto V0 = ReadArg<uint32_t>(S, PC);
31897 if (!InitElem<PT_IntAPS>(S, OpPC, V0)) return false;
31898 }
31899#if USE_TAILCALLS
31900 MUSTTAIL return InterpNext(S, PC);
31901#else
31902 return true;
31903#endif
31904}
31905PRESERVE_NONE
31906static bool Interp_InitElemBool(InterpState &S, CodePtr &PC) {
31907 {
31908 CodePtr OpPC = PC;
31909 const auto V0 = ReadArg<uint32_t>(S, PC);
31910 if (!InitElem<PT_Bool>(S, OpPC, V0)) return false;
31911 }
31912#if USE_TAILCALLS
31913 MUSTTAIL return InterpNext(S, PC);
31914#else
31915 return true;
31916#endif
31917}
31918PRESERVE_NONE
31919static bool Interp_InitElemFixedPoint(InterpState &S, CodePtr &PC) {
31920 {
31921 CodePtr OpPC = PC;
31922 const auto V0 = ReadArg<uint32_t>(S, PC);
31923 if (!InitElem<PT_FixedPoint>(S, OpPC, V0)) return false;
31924 }
31925#if USE_TAILCALLS
31926 MUSTTAIL return InterpNext(S, PC);
31927#else
31928 return true;
31929#endif
31930}
31931PRESERVE_NONE
31932static bool Interp_InitElemPtr(InterpState &S, CodePtr &PC) {
31933 {
31934 CodePtr OpPC = PC;
31935 const auto V0 = ReadArg<uint32_t>(S, PC);
31936 if (!InitElem<PT_Ptr>(S, OpPC, V0)) return false;
31937 }
31938#if USE_TAILCALLS
31939 MUSTTAIL return InterpNext(S, PC);
31940#else
31941 return true;
31942#endif
31943}
31944PRESERVE_NONE
31945static bool Interp_InitElemMemberPtr(InterpState &S, CodePtr &PC) {
31946 {
31947 CodePtr OpPC = PC;
31948 const auto V0 = ReadArg<uint32_t>(S, PC);
31949 if (!InitElem<PT_MemberPtr>(S, OpPC, V0)) return false;
31950 }
31951#if USE_TAILCALLS
31952 MUSTTAIL return InterpNext(S, PC);
31953#else
31954 return true;
31955#endif
31956}
31957PRESERVE_NONE
31958static bool Interp_InitElemFloat(InterpState &S, CodePtr &PC) {
31959 {
31960 CodePtr OpPC = PC;
31961 const auto V0 = ReadArg<uint32_t>(S, PC);
31962 if (!InitElem<PT_Float>(S, OpPC, V0)) return false;
31963 }
31964#if USE_TAILCALLS
31965 MUSTTAIL return InterpNext(S, PC);
31966#else
31967 return true;
31968#endif
31969}
31970#endif
31971#ifdef GET_DISASM
31972case OP_InitElemSint8:
31973 Text.Op = PrintName("InitElemSint8");
31974 Text.Args.push_back(printArg<uint32_t>(P, PC));
31975 break;
31976case OP_InitElemUint8:
31977 Text.Op = PrintName("InitElemUint8");
31978 Text.Args.push_back(printArg<uint32_t>(P, PC));
31979 break;
31980case OP_InitElemSint16:
31981 Text.Op = PrintName("InitElemSint16");
31982 Text.Args.push_back(printArg<uint32_t>(P, PC));
31983 break;
31984case OP_InitElemUint16:
31985 Text.Op = PrintName("InitElemUint16");
31986 Text.Args.push_back(printArg<uint32_t>(P, PC));
31987 break;
31988case OP_InitElemSint32:
31989 Text.Op = PrintName("InitElemSint32");
31990 Text.Args.push_back(printArg<uint32_t>(P, PC));
31991 break;
31992case OP_InitElemUint32:
31993 Text.Op = PrintName("InitElemUint32");
31994 Text.Args.push_back(printArg<uint32_t>(P, PC));
31995 break;
31996case OP_InitElemSint64:
31997 Text.Op = PrintName("InitElemSint64");
31998 Text.Args.push_back(printArg<uint32_t>(P, PC));
31999 break;
32000case OP_InitElemUint64:
32001 Text.Op = PrintName("InitElemUint64");
32002 Text.Args.push_back(printArg<uint32_t>(P, PC));
32003 break;
32004case OP_InitElemIntAP:
32005 Text.Op = PrintName("InitElemIntAP");
32006 Text.Args.push_back(printArg<uint32_t>(P, PC));
32007 break;
32008case OP_InitElemIntAPS:
32009 Text.Op = PrintName("InitElemIntAPS");
32010 Text.Args.push_back(printArg<uint32_t>(P, PC));
32011 break;
32012case OP_InitElemBool:
32013 Text.Op = PrintName("InitElemBool");
32014 Text.Args.push_back(printArg<uint32_t>(P, PC));
32015 break;
32016case OP_InitElemFixedPoint:
32017 Text.Op = PrintName("InitElemFixedPoint");
32018 Text.Args.push_back(printArg<uint32_t>(P, PC));
32019 break;
32020case OP_InitElemPtr:
32021 Text.Op = PrintName("InitElemPtr");
32022 Text.Args.push_back(printArg<uint32_t>(P, PC));
32023 break;
32024case OP_InitElemMemberPtr:
32025 Text.Op = PrintName("InitElemMemberPtr");
32026 Text.Args.push_back(printArg<uint32_t>(P, PC));
32027 break;
32028case OP_InitElemFloat:
32029 Text.Op = PrintName("InitElemFloat");
32030 Text.Args.push_back(printArg<uint32_t>(P, PC));
32031 break;
32032#endif
32033#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32034bool emitInitElemSint8( uint32_t , SourceInfo);
32035bool emitInitElemUint8( uint32_t , SourceInfo);
32036bool emitInitElemSint16( uint32_t , SourceInfo);
32037bool emitInitElemUint16( uint32_t , SourceInfo);
32038bool emitInitElemSint32( uint32_t , SourceInfo);
32039bool emitInitElemUint32( uint32_t , SourceInfo);
32040bool emitInitElemSint64( uint32_t , SourceInfo);
32041bool emitInitElemUint64( uint32_t , SourceInfo);
32042bool emitInitElemIntAP( uint32_t , SourceInfo);
32043bool emitInitElemIntAPS( uint32_t , SourceInfo);
32044bool emitInitElemBool( uint32_t , SourceInfo);
32045bool emitInitElemFixedPoint( uint32_t , SourceInfo);
32046bool emitInitElemPtr( uint32_t , SourceInfo);
32047bool emitInitElemMemberPtr( uint32_t , SourceInfo);
32048bool emitInitElemFloat( uint32_t , SourceInfo);
32049#endif
32050#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32051[[nodiscard]] bool emitInitElem(PrimType, uint32_t, SourceInfo I);
32052#endif
32053#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
32054bool
32055#if defined(GET_EVAL_IMPL)
32056EvalEmitter
32057#else
32058ByteCodeEmitter
32059#endif
32060::emitInitElem(PrimType T0, uint32_t A0, SourceInfo I) {
32061 switch (T0) {
32062 case PT_Sint8:
32063 return emitInitElemSint8(A0, I);
32064 case PT_Uint8:
32065 return emitInitElemUint8(A0, I);
32066 case PT_Sint16:
32067 return emitInitElemSint16(A0, I);
32068 case PT_Uint16:
32069 return emitInitElemUint16(A0, I);
32070 case PT_Sint32:
32071 return emitInitElemSint32(A0, I);
32072 case PT_Uint32:
32073 return emitInitElemUint32(A0, I);
32074 case PT_Sint64:
32075 return emitInitElemSint64(A0, I);
32076 case PT_Uint64:
32077 return emitInitElemUint64(A0, I);
32078 case PT_IntAP:
32079 return emitInitElemIntAP(A0, I);
32080 case PT_IntAPS:
32081 return emitInitElemIntAPS(A0, I);
32082 case PT_Bool:
32083 return emitInitElemBool(A0, I);
32084 case PT_FixedPoint:
32085 return emitInitElemFixedPoint(A0, I);
32086 case PT_Ptr:
32087 return emitInitElemPtr(A0, I);
32088 case PT_MemberPtr:
32089 return emitInitElemMemberPtr(A0, I);
32090 case PT_Float:
32091 return emitInitElemFloat(A0, I);
32092 }
32093 llvm_unreachable("invalid enum value");
32094}
32095#endif
32096#ifdef GET_LINK_IMPL
32097bool ByteCodeEmitter::emitInitElemSint8( uint32_t A0, SourceInfo L) {
32098 return emitOp<uint32_t>(OP_InitElemSint8, A0, L);
32099}
32100bool ByteCodeEmitter::emitInitElemUint8( uint32_t A0, SourceInfo L) {
32101 return emitOp<uint32_t>(OP_InitElemUint8, A0, L);
32102}
32103bool ByteCodeEmitter::emitInitElemSint16( uint32_t A0, SourceInfo L) {
32104 return emitOp<uint32_t>(OP_InitElemSint16, A0, L);
32105}
32106bool ByteCodeEmitter::emitInitElemUint16( uint32_t A0, SourceInfo L) {
32107 return emitOp<uint32_t>(OP_InitElemUint16, A0, L);
32108}
32109bool ByteCodeEmitter::emitInitElemSint32( uint32_t A0, SourceInfo L) {
32110 return emitOp<uint32_t>(OP_InitElemSint32, A0, L);
32111}
32112bool ByteCodeEmitter::emitInitElemUint32( uint32_t A0, SourceInfo L) {
32113 return emitOp<uint32_t>(OP_InitElemUint32, A0, L);
32114}
32115bool ByteCodeEmitter::emitInitElemSint64( uint32_t A0, SourceInfo L) {
32116 return emitOp<uint32_t>(OP_InitElemSint64, A0, L);
32117}
32118bool ByteCodeEmitter::emitInitElemUint64( uint32_t A0, SourceInfo L) {
32119 return emitOp<uint32_t>(OP_InitElemUint64, A0, L);
32120}
32121bool ByteCodeEmitter::emitInitElemIntAP( uint32_t A0, SourceInfo L) {
32122 return emitOp<uint32_t>(OP_InitElemIntAP, A0, L);
32123}
32124bool ByteCodeEmitter::emitInitElemIntAPS( uint32_t A0, SourceInfo L) {
32125 return emitOp<uint32_t>(OP_InitElemIntAPS, A0, L);
32126}
32127bool ByteCodeEmitter::emitInitElemBool( uint32_t A0, SourceInfo L) {
32128 return emitOp<uint32_t>(OP_InitElemBool, A0, L);
32129}
32130bool ByteCodeEmitter::emitInitElemFixedPoint( uint32_t A0, SourceInfo L) {
32131 return emitOp<uint32_t>(OP_InitElemFixedPoint, A0, L);
32132}
32133bool ByteCodeEmitter::emitInitElemPtr( uint32_t A0, SourceInfo L) {
32134 return emitOp<uint32_t>(OP_InitElemPtr, A0, L);
32135}
32136bool ByteCodeEmitter::emitInitElemMemberPtr( uint32_t A0, SourceInfo L) {
32137 return emitOp<uint32_t>(OP_InitElemMemberPtr, A0, L);
32138}
32139bool ByteCodeEmitter::emitInitElemFloat( uint32_t A0, SourceInfo L) {
32140 return emitOp<uint32_t>(OP_InitElemFloat, A0, L);
32141}
32142#endif
32143#ifdef GET_EVAL_IMPL
32144bool EvalEmitter::emitInitElemSint8( uint32_t A0, SourceInfo L) {
32145 if (!isActive()) return true;
32146 CurrentSource = L;
32147 return InitElem<PT_Sint8>(S, OpPC, A0);
32148}
32149bool EvalEmitter::emitInitElemUint8( uint32_t A0, SourceInfo L) {
32150 if (!isActive()) return true;
32151 CurrentSource = L;
32152 return InitElem<PT_Uint8>(S, OpPC, A0);
32153}
32154bool EvalEmitter::emitInitElemSint16( uint32_t A0, SourceInfo L) {
32155 if (!isActive()) return true;
32156 CurrentSource = L;
32157 return InitElem<PT_Sint16>(S, OpPC, A0);
32158}
32159bool EvalEmitter::emitInitElemUint16( uint32_t A0, SourceInfo L) {
32160 if (!isActive()) return true;
32161 CurrentSource = L;
32162 return InitElem<PT_Uint16>(S, OpPC, A0);
32163}
32164bool EvalEmitter::emitInitElemSint32( uint32_t A0, SourceInfo L) {
32165 if (!isActive()) return true;
32166 CurrentSource = L;
32167 return InitElem<PT_Sint32>(S, OpPC, A0);
32168}
32169bool EvalEmitter::emitInitElemUint32( uint32_t A0, SourceInfo L) {
32170 if (!isActive()) return true;
32171 CurrentSource = L;
32172 return InitElem<PT_Uint32>(S, OpPC, A0);
32173}
32174bool EvalEmitter::emitInitElemSint64( uint32_t A0, SourceInfo L) {
32175 if (!isActive()) return true;
32176 CurrentSource = L;
32177 return InitElem<PT_Sint64>(S, OpPC, A0);
32178}
32179bool EvalEmitter::emitInitElemUint64( uint32_t A0, SourceInfo L) {
32180 if (!isActive()) return true;
32181 CurrentSource = L;
32182 return InitElem<PT_Uint64>(S, OpPC, A0);
32183}
32184bool EvalEmitter::emitInitElemIntAP( uint32_t A0, SourceInfo L) {
32185 if (!isActive()) return true;
32186 CurrentSource = L;
32187 return InitElem<PT_IntAP>(S, OpPC, A0);
32188}
32189bool EvalEmitter::emitInitElemIntAPS( uint32_t A0, SourceInfo L) {
32190 if (!isActive()) return true;
32191 CurrentSource = L;
32192 return InitElem<PT_IntAPS>(S, OpPC, A0);
32193}
32194bool EvalEmitter::emitInitElemBool( uint32_t A0, SourceInfo L) {
32195 if (!isActive()) return true;
32196 CurrentSource = L;
32197 return InitElem<PT_Bool>(S, OpPC, A0);
32198}
32199bool EvalEmitter::emitInitElemFixedPoint( uint32_t A0, SourceInfo L) {
32200 if (!isActive()) return true;
32201 CurrentSource = L;
32202 return InitElem<PT_FixedPoint>(S, OpPC, A0);
32203}
32204bool EvalEmitter::emitInitElemPtr( uint32_t A0, SourceInfo L) {
32205 if (!isActive()) return true;
32206 CurrentSource = L;
32207 return InitElem<PT_Ptr>(S, OpPC, A0);
32208}
32209bool EvalEmitter::emitInitElemMemberPtr( uint32_t A0, SourceInfo L) {
32210 if (!isActive()) return true;
32211 CurrentSource = L;
32212 return InitElem<PT_MemberPtr>(S, OpPC, A0);
32213}
32214bool EvalEmitter::emitInitElemFloat( uint32_t A0, SourceInfo L) {
32215 if (!isActive()) return true;
32216 CurrentSource = L;
32217 return InitElem<PT_Float>(S, OpPC, A0);
32218}
32219#endif
32220#ifdef GET_OPCODE_NAMES
32221OP_InitElemPopSint8,
32222OP_InitElemPopUint8,
32223OP_InitElemPopSint16,
32224OP_InitElemPopUint16,
32225OP_InitElemPopSint32,
32226OP_InitElemPopUint32,
32227OP_InitElemPopSint64,
32228OP_InitElemPopUint64,
32229OP_InitElemPopIntAP,
32230OP_InitElemPopIntAPS,
32231OP_InitElemPopBool,
32232OP_InitElemPopFixedPoint,
32233OP_InitElemPopPtr,
32234OP_InitElemPopMemberPtr,
32235OP_InitElemPopFloat,
32236#endif
32237#ifdef GET_INTERPFN_LIST
32238&Interp_InitElemPopSint8,
32239&Interp_InitElemPopUint8,
32240&Interp_InitElemPopSint16,
32241&Interp_InitElemPopUint16,
32242&Interp_InitElemPopSint32,
32243&Interp_InitElemPopUint32,
32244&Interp_InitElemPopSint64,
32245&Interp_InitElemPopUint64,
32246&Interp_InitElemPopIntAP,
32247&Interp_InitElemPopIntAPS,
32248&Interp_InitElemPopBool,
32249&Interp_InitElemPopFixedPoint,
32250&Interp_InitElemPopPtr,
32251&Interp_InitElemPopMemberPtr,
32252&Interp_InitElemPopFloat,
32253#endif
32254#ifdef GET_INTERPFN_DISPATCHERS
32255PRESERVE_NONE
32256static bool Interp_InitElemPopSint8(InterpState &S, CodePtr &PC) {
32257 {
32258 CodePtr OpPC = PC;
32259 const auto V0 = ReadArg<uint32_t>(S, PC);
32260 if (!InitElemPop<PT_Sint8>(S, OpPC, V0)) return false;
32261 }
32262#if USE_TAILCALLS
32263 MUSTTAIL return InterpNext(S, PC);
32264#else
32265 return true;
32266#endif
32267}
32268PRESERVE_NONE
32269static bool Interp_InitElemPopUint8(InterpState &S, CodePtr &PC) {
32270 {
32271 CodePtr OpPC = PC;
32272 const auto V0 = ReadArg<uint32_t>(S, PC);
32273 if (!InitElemPop<PT_Uint8>(S, OpPC, V0)) return false;
32274 }
32275#if USE_TAILCALLS
32276 MUSTTAIL return InterpNext(S, PC);
32277#else
32278 return true;
32279#endif
32280}
32281PRESERVE_NONE
32282static bool Interp_InitElemPopSint16(InterpState &S, CodePtr &PC) {
32283 {
32284 CodePtr OpPC = PC;
32285 const auto V0 = ReadArg<uint32_t>(S, PC);
32286 if (!InitElemPop<PT_Sint16>(S, OpPC, V0)) return false;
32287 }
32288#if USE_TAILCALLS
32289 MUSTTAIL return InterpNext(S, PC);
32290#else
32291 return true;
32292#endif
32293}
32294PRESERVE_NONE
32295static bool Interp_InitElemPopUint16(InterpState &S, CodePtr &PC) {
32296 {
32297 CodePtr OpPC = PC;
32298 const auto V0 = ReadArg<uint32_t>(S, PC);
32299 if (!InitElemPop<PT_Uint16>(S, OpPC, V0)) return false;
32300 }
32301#if USE_TAILCALLS
32302 MUSTTAIL return InterpNext(S, PC);
32303#else
32304 return true;
32305#endif
32306}
32307PRESERVE_NONE
32308static bool Interp_InitElemPopSint32(InterpState &S, CodePtr &PC) {
32309 {
32310 CodePtr OpPC = PC;
32311 const auto V0 = ReadArg<uint32_t>(S, PC);
32312 if (!InitElemPop<PT_Sint32>(S, OpPC, V0)) return false;
32313 }
32314#if USE_TAILCALLS
32315 MUSTTAIL return InterpNext(S, PC);
32316#else
32317 return true;
32318#endif
32319}
32320PRESERVE_NONE
32321static bool Interp_InitElemPopUint32(InterpState &S, CodePtr &PC) {
32322 {
32323 CodePtr OpPC = PC;
32324 const auto V0 = ReadArg<uint32_t>(S, PC);
32325 if (!InitElemPop<PT_Uint32>(S, OpPC, V0)) return false;
32326 }
32327#if USE_TAILCALLS
32328 MUSTTAIL return InterpNext(S, PC);
32329#else
32330 return true;
32331#endif
32332}
32333PRESERVE_NONE
32334static bool Interp_InitElemPopSint64(InterpState &S, CodePtr &PC) {
32335 {
32336 CodePtr OpPC = PC;
32337 const auto V0 = ReadArg<uint32_t>(S, PC);
32338 if (!InitElemPop<PT_Sint64>(S, OpPC, V0)) return false;
32339 }
32340#if USE_TAILCALLS
32341 MUSTTAIL return InterpNext(S, PC);
32342#else
32343 return true;
32344#endif
32345}
32346PRESERVE_NONE
32347static bool Interp_InitElemPopUint64(InterpState &S, CodePtr &PC) {
32348 {
32349 CodePtr OpPC = PC;
32350 const auto V0 = ReadArg<uint32_t>(S, PC);
32351 if (!InitElemPop<PT_Uint64>(S, OpPC, V0)) return false;
32352 }
32353#if USE_TAILCALLS
32354 MUSTTAIL return InterpNext(S, PC);
32355#else
32356 return true;
32357#endif
32358}
32359PRESERVE_NONE
32360static bool Interp_InitElemPopIntAP(InterpState &S, CodePtr &PC) {
32361 {
32362 CodePtr OpPC = PC;
32363 const auto V0 = ReadArg<uint32_t>(S, PC);
32364 if (!InitElemPop<PT_IntAP>(S, OpPC, V0)) return false;
32365 }
32366#if USE_TAILCALLS
32367 MUSTTAIL return InterpNext(S, PC);
32368#else
32369 return true;
32370#endif
32371}
32372PRESERVE_NONE
32373static bool Interp_InitElemPopIntAPS(InterpState &S, CodePtr &PC) {
32374 {
32375 CodePtr OpPC = PC;
32376 const auto V0 = ReadArg<uint32_t>(S, PC);
32377 if (!InitElemPop<PT_IntAPS>(S, OpPC, V0)) return false;
32378 }
32379#if USE_TAILCALLS
32380 MUSTTAIL return InterpNext(S, PC);
32381#else
32382 return true;
32383#endif
32384}
32385PRESERVE_NONE
32386static bool Interp_InitElemPopBool(InterpState &S, CodePtr &PC) {
32387 {
32388 CodePtr OpPC = PC;
32389 const auto V0 = ReadArg<uint32_t>(S, PC);
32390 if (!InitElemPop<PT_Bool>(S, OpPC, V0)) return false;
32391 }
32392#if USE_TAILCALLS
32393 MUSTTAIL return InterpNext(S, PC);
32394#else
32395 return true;
32396#endif
32397}
32398PRESERVE_NONE
32399static bool Interp_InitElemPopFixedPoint(InterpState &S, CodePtr &PC) {
32400 {
32401 CodePtr OpPC = PC;
32402 const auto V0 = ReadArg<uint32_t>(S, PC);
32403 if (!InitElemPop<PT_FixedPoint>(S, OpPC, V0)) return false;
32404 }
32405#if USE_TAILCALLS
32406 MUSTTAIL return InterpNext(S, PC);
32407#else
32408 return true;
32409#endif
32410}
32411PRESERVE_NONE
32412static bool Interp_InitElemPopPtr(InterpState &S, CodePtr &PC) {
32413 {
32414 CodePtr OpPC = PC;
32415 const auto V0 = ReadArg<uint32_t>(S, PC);
32416 if (!InitElemPop<PT_Ptr>(S, OpPC, V0)) return false;
32417 }
32418#if USE_TAILCALLS
32419 MUSTTAIL return InterpNext(S, PC);
32420#else
32421 return true;
32422#endif
32423}
32424PRESERVE_NONE
32425static bool Interp_InitElemPopMemberPtr(InterpState &S, CodePtr &PC) {
32426 {
32427 CodePtr OpPC = PC;
32428 const auto V0 = ReadArg<uint32_t>(S, PC);
32429 if (!InitElemPop<PT_MemberPtr>(S, OpPC, V0)) return false;
32430 }
32431#if USE_TAILCALLS
32432 MUSTTAIL return InterpNext(S, PC);
32433#else
32434 return true;
32435#endif
32436}
32437PRESERVE_NONE
32438static bool Interp_InitElemPopFloat(InterpState &S, CodePtr &PC) {
32439 {
32440 CodePtr OpPC = PC;
32441 const auto V0 = ReadArg<uint32_t>(S, PC);
32442 if (!InitElemPop<PT_Float>(S, OpPC, V0)) return false;
32443 }
32444#if USE_TAILCALLS
32445 MUSTTAIL return InterpNext(S, PC);
32446#else
32447 return true;
32448#endif
32449}
32450#endif
32451#ifdef GET_DISASM
32452case OP_InitElemPopSint8:
32453 Text.Op = PrintName("InitElemPopSint8");
32454 Text.Args.push_back(printArg<uint32_t>(P, PC));
32455 break;
32456case OP_InitElemPopUint8:
32457 Text.Op = PrintName("InitElemPopUint8");
32458 Text.Args.push_back(printArg<uint32_t>(P, PC));
32459 break;
32460case OP_InitElemPopSint16:
32461 Text.Op = PrintName("InitElemPopSint16");
32462 Text.Args.push_back(printArg<uint32_t>(P, PC));
32463 break;
32464case OP_InitElemPopUint16:
32465 Text.Op = PrintName("InitElemPopUint16");
32466 Text.Args.push_back(printArg<uint32_t>(P, PC));
32467 break;
32468case OP_InitElemPopSint32:
32469 Text.Op = PrintName("InitElemPopSint32");
32470 Text.Args.push_back(printArg<uint32_t>(P, PC));
32471 break;
32472case OP_InitElemPopUint32:
32473 Text.Op = PrintName("InitElemPopUint32");
32474 Text.Args.push_back(printArg<uint32_t>(P, PC));
32475 break;
32476case OP_InitElemPopSint64:
32477 Text.Op = PrintName("InitElemPopSint64");
32478 Text.Args.push_back(printArg<uint32_t>(P, PC));
32479 break;
32480case OP_InitElemPopUint64:
32481 Text.Op = PrintName("InitElemPopUint64");
32482 Text.Args.push_back(printArg<uint32_t>(P, PC));
32483 break;
32484case OP_InitElemPopIntAP:
32485 Text.Op = PrintName("InitElemPopIntAP");
32486 Text.Args.push_back(printArg<uint32_t>(P, PC));
32487 break;
32488case OP_InitElemPopIntAPS:
32489 Text.Op = PrintName("InitElemPopIntAPS");
32490 Text.Args.push_back(printArg<uint32_t>(P, PC));
32491 break;
32492case OP_InitElemPopBool:
32493 Text.Op = PrintName("InitElemPopBool");
32494 Text.Args.push_back(printArg<uint32_t>(P, PC));
32495 break;
32496case OP_InitElemPopFixedPoint:
32497 Text.Op = PrintName("InitElemPopFixedPoint");
32498 Text.Args.push_back(printArg<uint32_t>(P, PC));
32499 break;
32500case OP_InitElemPopPtr:
32501 Text.Op = PrintName("InitElemPopPtr");
32502 Text.Args.push_back(printArg<uint32_t>(P, PC));
32503 break;
32504case OP_InitElemPopMemberPtr:
32505 Text.Op = PrintName("InitElemPopMemberPtr");
32506 Text.Args.push_back(printArg<uint32_t>(P, PC));
32507 break;
32508case OP_InitElemPopFloat:
32509 Text.Op = PrintName("InitElemPopFloat");
32510 Text.Args.push_back(printArg<uint32_t>(P, PC));
32511 break;
32512#endif
32513#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32514bool emitInitElemPopSint8( uint32_t , SourceInfo);
32515bool emitInitElemPopUint8( uint32_t , SourceInfo);
32516bool emitInitElemPopSint16( uint32_t , SourceInfo);
32517bool emitInitElemPopUint16( uint32_t , SourceInfo);
32518bool emitInitElemPopSint32( uint32_t , SourceInfo);
32519bool emitInitElemPopUint32( uint32_t , SourceInfo);
32520bool emitInitElemPopSint64( uint32_t , SourceInfo);
32521bool emitInitElemPopUint64( uint32_t , SourceInfo);
32522bool emitInitElemPopIntAP( uint32_t , SourceInfo);
32523bool emitInitElemPopIntAPS( uint32_t , SourceInfo);
32524bool emitInitElemPopBool( uint32_t , SourceInfo);
32525bool emitInitElemPopFixedPoint( uint32_t , SourceInfo);
32526bool emitInitElemPopPtr( uint32_t , SourceInfo);
32527bool emitInitElemPopMemberPtr( uint32_t , SourceInfo);
32528bool emitInitElemPopFloat( uint32_t , SourceInfo);
32529#endif
32530#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32531[[nodiscard]] bool emitInitElemPop(PrimType, uint32_t, SourceInfo I);
32532#endif
32533#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
32534bool
32535#if defined(GET_EVAL_IMPL)
32536EvalEmitter
32537#else
32538ByteCodeEmitter
32539#endif
32540::emitInitElemPop(PrimType T0, uint32_t A0, SourceInfo I) {
32541 switch (T0) {
32542 case PT_Sint8:
32543 return emitInitElemPopSint8(A0, I);
32544 case PT_Uint8:
32545 return emitInitElemPopUint8(A0, I);
32546 case PT_Sint16:
32547 return emitInitElemPopSint16(A0, I);
32548 case PT_Uint16:
32549 return emitInitElemPopUint16(A0, I);
32550 case PT_Sint32:
32551 return emitInitElemPopSint32(A0, I);
32552 case PT_Uint32:
32553 return emitInitElemPopUint32(A0, I);
32554 case PT_Sint64:
32555 return emitInitElemPopSint64(A0, I);
32556 case PT_Uint64:
32557 return emitInitElemPopUint64(A0, I);
32558 case PT_IntAP:
32559 return emitInitElemPopIntAP(A0, I);
32560 case PT_IntAPS:
32561 return emitInitElemPopIntAPS(A0, I);
32562 case PT_Bool:
32563 return emitInitElemPopBool(A0, I);
32564 case PT_FixedPoint:
32565 return emitInitElemPopFixedPoint(A0, I);
32566 case PT_Ptr:
32567 return emitInitElemPopPtr(A0, I);
32568 case PT_MemberPtr:
32569 return emitInitElemPopMemberPtr(A0, I);
32570 case PT_Float:
32571 return emitInitElemPopFloat(A0, I);
32572 }
32573 llvm_unreachable("invalid enum value");
32574}
32575#endif
32576#ifdef GET_LINK_IMPL
32577bool ByteCodeEmitter::emitInitElemPopSint8( uint32_t A0, SourceInfo L) {
32578 return emitOp<uint32_t>(OP_InitElemPopSint8, A0, L);
32579}
32580bool ByteCodeEmitter::emitInitElemPopUint8( uint32_t A0, SourceInfo L) {
32581 return emitOp<uint32_t>(OP_InitElemPopUint8, A0, L);
32582}
32583bool ByteCodeEmitter::emitInitElemPopSint16( uint32_t A0, SourceInfo L) {
32584 return emitOp<uint32_t>(OP_InitElemPopSint16, A0, L);
32585}
32586bool ByteCodeEmitter::emitInitElemPopUint16( uint32_t A0, SourceInfo L) {
32587 return emitOp<uint32_t>(OP_InitElemPopUint16, A0, L);
32588}
32589bool ByteCodeEmitter::emitInitElemPopSint32( uint32_t A0, SourceInfo L) {
32590 return emitOp<uint32_t>(OP_InitElemPopSint32, A0, L);
32591}
32592bool ByteCodeEmitter::emitInitElemPopUint32( uint32_t A0, SourceInfo L) {
32593 return emitOp<uint32_t>(OP_InitElemPopUint32, A0, L);
32594}
32595bool ByteCodeEmitter::emitInitElemPopSint64( uint32_t A0, SourceInfo L) {
32596 return emitOp<uint32_t>(OP_InitElemPopSint64, A0, L);
32597}
32598bool ByteCodeEmitter::emitInitElemPopUint64( uint32_t A0, SourceInfo L) {
32599 return emitOp<uint32_t>(OP_InitElemPopUint64, A0, L);
32600}
32601bool ByteCodeEmitter::emitInitElemPopIntAP( uint32_t A0, SourceInfo L) {
32602 return emitOp<uint32_t>(OP_InitElemPopIntAP, A0, L);
32603}
32604bool ByteCodeEmitter::emitInitElemPopIntAPS( uint32_t A0, SourceInfo L) {
32605 return emitOp<uint32_t>(OP_InitElemPopIntAPS, A0, L);
32606}
32607bool ByteCodeEmitter::emitInitElemPopBool( uint32_t A0, SourceInfo L) {
32608 return emitOp<uint32_t>(OP_InitElemPopBool, A0, L);
32609}
32610bool ByteCodeEmitter::emitInitElemPopFixedPoint( uint32_t A0, SourceInfo L) {
32611 return emitOp<uint32_t>(OP_InitElemPopFixedPoint, A0, L);
32612}
32613bool ByteCodeEmitter::emitInitElemPopPtr( uint32_t A0, SourceInfo L) {
32614 return emitOp<uint32_t>(OP_InitElemPopPtr, A0, L);
32615}
32616bool ByteCodeEmitter::emitInitElemPopMemberPtr( uint32_t A0, SourceInfo L) {
32617 return emitOp<uint32_t>(OP_InitElemPopMemberPtr, A0, L);
32618}
32619bool ByteCodeEmitter::emitInitElemPopFloat( uint32_t A0, SourceInfo L) {
32620 return emitOp<uint32_t>(OP_InitElemPopFloat, A0, L);
32621}
32622#endif
32623#ifdef GET_EVAL_IMPL
32624bool EvalEmitter::emitInitElemPopSint8( uint32_t A0, SourceInfo L) {
32625 if (!isActive()) return true;
32626 CurrentSource = L;
32627 return InitElemPop<PT_Sint8>(S, OpPC, A0);
32628}
32629bool EvalEmitter::emitInitElemPopUint8( uint32_t A0, SourceInfo L) {
32630 if (!isActive()) return true;
32631 CurrentSource = L;
32632 return InitElemPop<PT_Uint8>(S, OpPC, A0);
32633}
32634bool EvalEmitter::emitInitElemPopSint16( uint32_t A0, SourceInfo L) {
32635 if (!isActive()) return true;
32636 CurrentSource = L;
32637 return InitElemPop<PT_Sint16>(S, OpPC, A0);
32638}
32639bool EvalEmitter::emitInitElemPopUint16( uint32_t A0, SourceInfo L) {
32640 if (!isActive()) return true;
32641 CurrentSource = L;
32642 return InitElemPop<PT_Uint16>(S, OpPC, A0);
32643}
32644bool EvalEmitter::emitInitElemPopSint32( uint32_t A0, SourceInfo L) {
32645 if (!isActive()) return true;
32646 CurrentSource = L;
32647 return InitElemPop<PT_Sint32>(S, OpPC, A0);
32648}
32649bool EvalEmitter::emitInitElemPopUint32( uint32_t A0, SourceInfo L) {
32650 if (!isActive()) return true;
32651 CurrentSource = L;
32652 return InitElemPop<PT_Uint32>(S, OpPC, A0);
32653}
32654bool EvalEmitter::emitInitElemPopSint64( uint32_t A0, SourceInfo L) {
32655 if (!isActive()) return true;
32656 CurrentSource = L;
32657 return InitElemPop<PT_Sint64>(S, OpPC, A0);
32658}
32659bool EvalEmitter::emitInitElemPopUint64( uint32_t A0, SourceInfo L) {
32660 if (!isActive()) return true;
32661 CurrentSource = L;
32662 return InitElemPop<PT_Uint64>(S, OpPC, A0);
32663}
32664bool EvalEmitter::emitInitElemPopIntAP( uint32_t A0, SourceInfo L) {
32665 if (!isActive()) return true;
32666 CurrentSource = L;
32667 return InitElemPop<PT_IntAP>(S, OpPC, A0);
32668}
32669bool EvalEmitter::emitInitElemPopIntAPS( uint32_t A0, SourceInfo L) {
32670 if (!isActive()) return true;
32671 CurrentSource = L;
32672 return InitElemPop<PT_IntAPS>(S, OpPC, A0);
32673}
32674bool EvalEmitter::emitInitElemPopBool( uint32_t A0, SourceInfo L) {
32675 if (!isActive()) return true;
32676 CurrentSource = L;
32677 return InitElemPop<PT_Bool>(S, OpPC, A0);
32678}
32679bool EvalEmitter::emitInitElemPopFixedPoint( uint32_t A0, SourceInfo L) {
32680 if (!isActive()) return true;
32681 CurrentSource = L;
32682 return InitElemPop<PT_FixedPoint>(S, OpPC, A0);
32683}
32684bool EvalEmitter::emitInitElemPopPtr( uint32_t A0, SourceInfo L) {
32685 if (!isActive()) return true;
32686 CurrentSource = L;
32687 return InitElemPop<PT_Ptr>(S, OpPC, A0);
32688}
32689bool EvalEmitter::emitInitElemPopMemberPtr( uint32_t A0, SourceInfo L) {
32690 if (!isActive()) return true;
32691 CurrentSource = L;
32692 return InitElemPop<PT_MemberPtr>(S, OpPC, A0);
32693}
32694bool EvalEmitter::emitInitElemPopFloat( uint32_t A0, SourceInfo L) {
32695 if (!isActive()) return true;
32696 CurrentSource = L;
32697 return InitElemPop<PT_Float>(S, OpPC, A0);
32698}
32699#endif
32700#ifdef GET_OPCODE_NAMES
32701OP_InitFieldSint8,
32702OP_InitFieldUint8,
32703OP_InitFieldSint16,
32704OP_InitFieldUint16,
32705OP_InitFieldSint32,
32706OP_InitFieldUint32,
32707OP_InitFieldSint64,
32708OP_InitFieldUint64,
32709OP_InitFieldIntAP,
32710OP_InitFieldIntAPS,
32711OP_InitFieldBool,
32712OP_InitFieldFixedPoint,
32713OP_InitFieldPtr,
32714OP_InitFieldMemberPtr,
32715OP_InitFieldFloat,
32716#endif
32717#ifdef GET_INTERPFN_LIST
32718&Interp_InitFieldSint8,
32719&Interp_InitFieldUint8,
32720&Interp_InitFieldSint16,
32721&Interp_InitFieldUint16,
32722&Interp_InitFieldSint32,
32723&Interp_InitFieldUint32,
32724&Interp_InitFieldSint64,
32725&Interp_InitFieldUint64,
32726&Interp_InitFieldIntAP,
32727&Interp_InitFieldIntAPS,
32728&Interp_InitFieldBool,
32729&Interp_InitFieldFixedPoint,
32730&Interp_InitFieldPtr,
32731&Interp_InitFieldMemberPtr,
32732&Interp_InitFieldFloat,
32733#endif
32734#ifdef GET_INTERPFN_DISPATCHERS
32735PRESERVE_NONE
32736static bool Interp_InitFieldSint8(InterpState &S, CodePtr &PC) {
32737 {
32738 CodePtr OpPC = PC;
32739 const auto V0 = ReadArg<uint32_t>(S, PC);
32740 if (!InitField<PT_Sint8>(S, OpPC, V0)) return false;
32741 }
32742#if USE_TAILCALLS
32743 MUSTTAIL return InterpNext(S, PC);
32744#else
32745 return true;
32746#endif
32747}
32748PRESERVE_NONE
32749static bool Interp_InitFieldUint8(InterpState &S, CodePtr &PC) {
32750 {
32751 CodePtr OpPC = PC;
32752 const auto V0 = ReadArg<uint32_t>(S, PC);
32753 if (!InitField<PT_Uint8>(S, OpPC, V0)) return false;
32754 }
32755#if USE_TAILCALLS
32756 MUSTTAIL return InterpNext(S, PC);
32757#else
32758 return true;
32759#endif
32760}
32761PRESERVE_NONE
32762static bool Interp_InitFieldSint16(InterpState &S, CodePtr &PC) {
32763 {
32764 CodePtr OpPC = PC;
32765 const auto V0 = ReadArg<uint32_t>(S, PC);
32766 if (!InitField<PT_Sint16>(S, OpPC, V0)) return false;
32767 }
32768#if USE_TAILCALLS
32769 MUSTTAIL return InterpNext(S, PC);
32770#else
32771 return true;
32772#endif
32773}
32774PRESERVE_NONE
32775static bool Interp_InitFieldUint16(InterpState &S, CodePtr &PC) {
32776 {
32777 CodePtr OpPC = PC;
32778 const auto V0 = ReadArg<uint32_t>(S, PC);
32779 if (!InitField<PT_Uint16>(S, OpPC, V0)) return false;
32780 }
32781#if USE_TAILCALLS
32782 MUSTTAIL return InterpNext(S, PC);
32783#else
32784 return true;
32785#endif
32786}
32787PRESERVE_NONE
32788static bool Interp_InitFieldSint32(InterpState &S, CodePtr &PC) {
32789 {
32790 CodePtr OpPC = PC;
32791 const auto V0 = ReadArg<uint32_t>(S, PC);
32792 if (!InitField<PT_Sint32>(S, OpPC, V0)) return false;
32793 }
32794#if USE_TAILCALLS
32795 MUSTTAIL return InterpNext(S, PC);
32796#else
32797 return true;
32798#endif
32799}
32800PRESERVE_NONE
32801static bool Interp_InitFieldUint32(InterpState &S, CodePtr &PC) {
32802 {
32803 CodePtr OpPC = PC;
32804 const auto V0 = ReadArg<uint32_t>(S, PC);
32805 if (!InitField<PT_Uint32>(S, OpPC, V0)) return false;
32806 }
32807#if USE_TAILCALLS
32808 MUSTTAIL return InterpNext(S, PC);
32809#else
32810 return true;
32811#endif
32812}
32813PRESERVE_NONE
32814static bool Interp_InitFieldSint64(InterpState &S, CodePtr &PC) {
32815 {
32816 CodePtr OpPC = PC;
32817 const auto V0 = ReadArg<uint32_t>(S, PC);
32818 if (!InitField<PT_Sint64>(S, OpPC, V0)) return false;
32819 }
32820#if USE_TAILCALLS
32821 MUSTTAIL return InterpNext(S, PC);
32822#else
32823 return true;
32824#endif
32825}
32826PRESERVE_NONE
32827static bool Interp_InitFieldUint64(InterpState &S, CodePtr &PC) {
32828 {
32829 CodePtr OpPC = PC;
32830 const auto V0 = ReadArg<uint32_t>(S, PC);
32831 if (!InitField<PT_Uint64>(S, OpPC, V0)) return false;
32832 }
32833#if USE_TAILCALLS
32834 MUSTTAIL return InterpNext(S, PC);
32835#else
32836 return true;
32837#endif
32838}
32839PRESERVE_NONE
32840static bool Interp_InitFieldIntAP(InterpState &S, CodePtr &PC) {
32841 {
32842 CodePtr OpPC = PC;
32843 const auto V0 = ReadArg<uint32_t>(S, PC);
32844 if (!InitField<PT_IntAP>(S, OpPC, V0)) return false;
32845 }
32846#if USE_TAILCALLS
32847 MUSTTAIL return InterpNext(S, PC);
32848#else
32849 return true;
32850#endif
32851}
32852PRESERVE_NONE
32853static bool Interp_InitFieldIntAPS(InterpState &S, CodePtr &PC) {
32854 {
32855 CodePtr OpPC = PC;
32856 const auto V0 = ReadArg<uint32_t>(S, PC);
32857 if (!InitField<PT_IntAPS>(S, OpPC, V0)) return false;
32858 }
32859#if USE_TAILCALLS
32860 MUSTTAIL return InterpNext(S, PC);
32861#else
32862 return true;
32863#endif
32864}
32865PRESERVE_NONE
32866static bool Interp_InitFieldBool(InterpState &S, CodePtr &PC) {
32867 {
32868 CodePtr OpPC = PC;
32869 const auto V0 = ReadArg<uint32_t>(S, PC);
32870 if (!InitField<PT_Bool>(S, OpPC, V0)) return false;
32871 }
32872#if USE_TAILCALLS
32873 MUSTTAIL return InterpNext(S, PC);
32874#else
32875 return true;
32876#endif
32877}
32878PRESERVE_NONE
32879static bool Interp_InitFieldFixedPoint(InterpState &S, CodePtr &PC) {
32880 {
32881 CodePtr OpPC = PC;
32882 const auto V0 = ReadArg<uint32_t>(S, PC);
32883 if (!InitField<PT_FixedPoint>(S, OpPC, V0)) return false;
32884 }
32885#if USE_TAILCALLS
32886 MUSTTAIL return InterpNext(S, PC);
32887#else
32888 return true;
32889#endif
32890}
32891PRESERVE_NONE
32892static bool Interp_InitFieldPtr(InterpState &S, CodePtr &PC) {
32893 {
32894 CodePtr OpPC = PC;
32895 const auto V0 = ReadArg<uint32_t>(S, PC);
32896 if (!InitField<PT_Ptr>(S, OpPC, V0)) return false;
32897 }
32898#if USE_TAILCALLS
32899 MUSTTAIL return InterpNext(S, PC);
32900#else
32901 return true;
32902#endif
32903}
32904PRESERVE_NONE
32905static bool Interp_InitFieldMemberPtr(InterpState &S, CodePtr &PC) {
32906 {
32907 CodePtr OpPC = PC;
32908 const auto V0 = ReadArg<uint32_t>(S, PC);
32909 if (!InitField<PT_MemberPtr>(S, OpPC, V0)) return false;
32910 }
32911#if USE_TAILCALLS
32912 MUSTTAIL return InterpNext(S, PC);
32913#else
32914 return true;
32915#endif
32916}
32917PRESERVE_NONE
32918static bool Interp_InitFieldFloat(InterpState &S, CodePtr &PC) {
32919 {
32920 CodePtr OpPC = PC;
32921 const auto V0 = ReadArg<uint32_t>(S, PC);
32922 if (!InitField<PT_Float>(S, OpPC, V0)) return false;
32923 }
32924#if USE_TAILCALLS
32925 MUSTTAIL return InterpNext(S, PC);
32926#else
32927 return true;
32928#endif
32929}
32930#endif
32931#ifdef GET_DISASM
32932case OP_InitFieldSint8:
32933 Text.Op = PrintName("InitFieldSint8");
32934 Text.Args.push_back(printArg<uint32_t>(P, PC));
32935 break;
32936case OP_InitFieldUint8:
32937 Text.Op = PrintName("InitFieldUint8");
32938 Text.Args.push_back(printArg<uint32_t>(P, PC));
32939 break;
32940case OP_InitFieldSint16:
32941 Text.Op = PrintName("InitFieldSint16");
32942 Text.Args.push_back(printArg<uint32_t>(P, PC));
32943 break;
32944case OP_InitFieldUint16:
32945 Text.Op = PrintName("InitFieldUint16");
32946 Text.Args.push_back(printArg<uint32_t>(P, PC));
32947 break;
32948case OP_InitFieldSint32:
32949 Text.Op = PrintName("InitFieldSint32");
32950 Text.Args.push_back(printArg<uint32_t>(P, PC));
32951 break;
32952case OP_InitFieldUint32:
32953 Text.Op = PrintName("InitFieldUint32");
32954 Text.Args.push_back(printArg<uint32_t>(P, PC));
32955 break;
32956case OP_InitFieldSint64:
32957 Text.Op = PrintName("InitFieldSint64");
32958 Text.Args.push_back(printArg<uint32_t>(P, PC));
32959 break;
32960case OP_InitFieldUint64:
32961 Text.Op = PrintName("InitFieldUint64");
32962 Text.Args.push_back(printArg<uint32_t>(P, PC));
32963 break;
32964case OP_InitFieldIntAP:
32965 Text.Op = PrintName("InitFieldIntAP");
32966 Text.Args.push_back(printArg<uint32_t>(P, PC));
32967 break;
32968case OP_InitFieldIntAPS:
32969 Text.Op = PrintName("InitFieldIntAPS");
32970 Text.Args.push_back(printArg<uint32_t>(P, PC));
32971 break;
32972case OP_InitFieldBool:
32973 Text.Op = PrintName("InitFieldBool");
32974 Text.Args.push_back(printArg<uint32_t>(P, PC));
32975 break;
32976case OP_InitFieldFixedPoint:
32977 Text.Op = PrintName("InitFieldFixedPoint");
32978 Text.Args.push_back(printArg<uint32_t>(P, PC));
32979 break;
32980case OP_InitFieldPtr:
32981 Text.Op = PrintName("InitFieldPtr");
32982 Text.Args.push_back(printArg<uint32_t>(P, PC));
32983 break;
32984case OP_InitFieldMemberPtr:
32985 Text.Op = PrintName("InitFieldMemberPtr");
32986 Text.Args.push_back(printArg<uint32_t>(P, PC));
32987 break;
32988case OP_InitFieldFloat:
32989 Text.Op = PrintName("InitFieldFloat");
32990 Text.Args.push_back(printArg<uint32_t>(P, PC));
32991 break;
32992#endif
32993#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32994bool emitInitFieldSint8( uint32_t , SourceInfo);
32995bool emitInitFieldUint8( uint32_t , SourceInfo);
32996bool emitInitFieldSint16( uint32_t , SourceInfo);
32997bool emitInitFieldUint16( uint32_t , SourceInfo);
32998bool emitInitFieldSint32( uint32_t , SourceInfo);
32999bool emitInitFieldUint32( uint32_t , SourceInfo);
33000bool emitInitFieldSint64( uint32_t , SourceInfo);
33001bool emitInitFieldUint64( uint32_t , SourceInfo);
33002bool emitInitFieldIntAP( uint32_t , SourceInfo);
33003bool emitInitFieldIntAPS( uint32_t , SourceInfo);
33004bool emitInitFieldBool( uint32_t , SourceInfo);
33005bool emitInitFieldFixedPoint( uint32_t , SourceInfo);
33006bool emitInitFieldPtr( uint32_t , SourceInfo);
33007bool emitInitFieldMemberPtr( uint32_t , SourceInfo);
33008bool emitInitFieldFloat( uint32_t , SourceInfo);
33009#endif
33010#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33011[[nodiscard]] bool emitInitField(PrimType, uint32_t, SourceInfo I);
33012#endif
33013#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
33014bool
33015#if defined(GET_EVAL_IMPL)
33016EvalEmitter
33017#else
33018ByteCodeEmitter
33019#endif
33020::emitInitField(PrimType T0, uint32_t A0, SourceInfo I) {
33021 switch (T0) {
33022 case PT_Sint8:
33023 return emitInitFieldSint8(A0, I);
33024 case PT_Uint8:
33025 return emitInitFieldUint8(A0, I);
33026 case PT_Sint16:
33027 return emitInitFieldSint16(A0, I);
33028 case PT_Uint16:
33029 return emitInitFieldUint16(A0, I);
33030 case PT_Sint32:
33031 return emitInitFieldSint32(A0, I);
33032 case PT_Uint32:
33033 return emitInitFieldUint32(A0, I);
33034 case PT_Sint64:
33035 return emitInitFieldSint64(A0, I);
33036 case PT_Uint64:
33037 return emitInitFieldUint64(A0, I);
33038 case PT_IntAP:
33039 return emitInitFieldIntAP(A0, I);
33040 case PT_IntAPS:
33041 return emitInitFieldIntAPS(A0, I);
33042 case PT_Bool:
33043 return emitInitFieldBool(A0, I);
33044 case PT_FixedPoint:
33045 return emitInitFieldFixedPoint(A0, I);
33046 case PT_Ptr:
33047 return emitInitFieldPtr(A0, I);
33048 case PT_MemberPtr:
33049 return emitInitFieldMemberPtr(A0, I);
33050 case PT_Float:
33051 return emitInitFieldFloat(A0, I);
33052 }
33053 llvm_unreachable("invalid enum value");
33054}
33055#endif
33056#ifdef GET_LINK_IMPL
33057bool ByteCodeEmitter::emitInitFieldSint8( uint32_t A0, SourceInfo L) {
33058 return emitOp<uint32_t>(OP_InitFieldSint8, A0, L);
33059}
33060bool ByteCodeEmitter::emitInitFieldUint8( uint32_t A0, SourceInfo L) {
33061 return emitOp<uint32_t>(OP_InitFieldUint8, A0, L);
33062}
33063bool ByteCodeEmitter::emitInitFieldSint16( uint32_t A0, SourceInfo L) {
33064 return emitOp<uint32_t>(OP_InitFieldSint16, A0, L);
33065}
33066bool ByteCodeEmitter::emitInitFieldUint16( uint32_t A0, SourceInfo L) {
33067 return emitOp<uint32_t>(OP_InitFieldUint16, A0, L);
33068}
33069bool ByteCodeEmitter::emitInitFieldSint32( uint32_t A0, SourceInfo L) {
33070 return emitOp<uint32_t>(OP_InitFieldSint32, A0, L);
33071}
33072bool ByteCodeEmitter::emitInitFieldUint32( uint32_t A0, SourceInfo L) {
33073 return emitOp<uint32_t>(OP_InitFieldUint32, A0, L);
33074}
33075bool ByteCodeEmitter::emitInitFieldSint64( uint32_t A0, SourceInfo L) {
33076 return emitOp<uint32_t>(OP_InitFieldSint64, A0, L);
33077}
33078bool ByteCodeEmitter::emitInitFieldUint64( uint32_t A0, SourceInfo L) {
33079 return emitOp<uint32_t>(OP_InitFieldUint64, A0, L);
33080}
33081bool ByteCodeEmitter::emitInitFieldIntAP( uint32_t A0, SourceInfo L) {
33082 return emitOp<uint32_t>(OP_InitFieldIntAP, A0, L);
33083}
33084bool ByteCodeEmitter::emitInitFieldIntAPS( uint32_t A0, SourceInfo L) {
33085 return emitOp<uint32_t>(OP_InitFieldIntAPS, A0, L);
33086}
33087bool ByteCodeEmitter::emitInitFieldBool( uint32_t A0, SourceInfo L) {
33088 return emitOp<uint32_t>(OP_InitFieldBool, A0, L);
33089}
33090bool ByteCodeEmitter::emitInitFieldFixedPoint( uint32_t A0, SourceInfo L) {
33091 return emitOp<uint32_t>(OP_InitFieldFixedPoint, A0, L);
33092}
33093bool ByteCodeEmitter::emitInitFieldPtr( uint32_t A0, SourceInfo L) {
33094 return emitOp<uint32_t>(OP_InitFieldPtr, A0, L);
33095}
33096bool ByteCodeEmitter::emitInitFieldMemberPtr( uint32_t A0, SourceInfo L) {
33097 return emitOp<uint32_t>(OP_InitFieldMemberPtr, A0, L);
33098}
33099bool ByteCodeEmitter::emitInitFieldFloat( uint32_t A0, SourceInfo L) {
33100 return emitOp<uint32_t>(OP_InitFieldFloat, A0, L);
33101}
33102#endif
33103#ifdef GET_EVAL_IMPL
33104bool EvalEmitter::emitInitFieldSint8( uint32_t A0, SourceInfo L) {
33105 if (!isActive()) return true;
33106 CurrentSource = L;
33107 return InitField<PT_Sint8>(S, OpPC, A0);
33108}
33109bool EvalEmitter::emitInitFieldUint8( uint32_t A0, SourceInfo L) {
33110 if (!isActive()) return true;
33111 CurrentSource = L;
33112 return InitField<PT_Uint8>(S, OpPC, A0);
33113}
33114bool EvalEmitter::emitInitFieldSint16( uint32_t A0, SourceInfo L) {
33115 if (!isActive()) return true;
33116 CurrentSource = L;
33117 return InitField<PT_Sint16>(S, OpPC, A0);
33118}
33119bool EvalEmitter::emitInitFieldUint16( uint32_t A0, SourceInfo L) {
33120 if (!isActive()) return true;
33121 CurrentSource = L;
33122 return InitField<PT_Uint16>(S, OpPC, A0);
33123}
33124bool EvalEmitter::emitInitFieldSint32( uint32_t A0, SourceInfo L) {
33125 if (!isActive()) return true;
33126 CurrentSource = L;
33127 return InitField<PT_Sint32>(S, OpPC, A0);
33128}
33129bool EvalEmitter::emitInitFieldUint32( uint32_t A0, SourceInfo L) {
33130 if (!isActive()) return true;
33131 CurrentSource = L;
33132 return InitField<PT_Uint32>(S, OpPC, A0);
33133}
33134bool EvalEmitter::emitInitFieldSint64( uint32_t A0, SourceInfo L) {
33135 if (!isActive()) return true;
33136 CurrentSource = L;
33137 return InitField<PT_Sint64>(S, OpPC, A0);
33138}
33139bool EvalEmitter::emitInitFieldUint64( uint32_t A0, SourceInfo L) {
33140 if (!isActive()) return true;
33141 CurrentSource = L;
33142 return InitField<PT_Uint64>(S, OpPC, A0);
33143}
33144bool EvalEmitter::emitInitFieldIntAP( uint32_t A0, SourceInfo L) {
33145 if (!isActive()) return true;
33146 CurrentSource = L;
33147 return InitField<PT_IntAP>(S, OpPC, A0);
33148}
33149bool EvalEmitter::emitInitFieldIntAPS( uint32_t A0, SourceInfo L) {
33150 if (!isActive()) return true;
33151 CurrentSource = L;
33152 return InitField<PT_IntAPS>(S, OpPC, A0);
33153}
33154bool EvalEmitter::emitInitFieldBool( uint32_t A0, SourceInfo L) {
33155 if (!isActive()) return true;
33156 CurrentSource = L;
33157 return InitField<PT_Bool>(S, OpPC, A0);
33158}
33159bool EvalEmitter::emitInitFieldFixedPoint( uint32_t A0, SourceInfo L) {
33160 if (!isActive()) return true;
33161 CurrentSource = L;
33162 return InitField<PT_FixedPoint>(S, OpPC, A0);
33163}
33164bool EvalEmitter::emitInitFieldPtr( uint32_t A0, SourceInfo L) {
33165 if (!isActive()) return true;
33166 CurrentSource = L;
33167 return InitField<PT_Ptr>(S, OpPC, A0);
33168}
33169bool EvalEmitter::emitInitFieldMemberPtr( uint32_t A0, SourceInfo L) {
33170 if (!isActive()) return true;
33171 CurrentSource = L;
33172 return InitField<PT_MemberPtr>(S, OpPC, A0);
33173}
33174bool EvalEmitter::emitInitFieldFloat( uint32_t A0, SourceInfo L) {
33175 if (!isActive()) return true;
33176 CurrentSource = L;
33177 return InitField<PT_Float>(S, OpPC, A0);
33178}
33179#endif
33180#ifdef GET_OPCODE_NAMES
33181OP_InitFieldActivateSint8,
33182OP_InitFieldActivateUint8,
33183OP_InitFieldActivateSint16,
33184OP_InitFieldActivateUint16,
33185OP_InitFieldActivateSint32,
33186OP_InitFieldActivateUint32,
33187OP_InitFieldActivateSint64,
33188OP_InitFieldActivateUint64,
33189OP_InitFieldActivateIntAP,
33190OP_InitFieldActivateIntAPS,
33191OP_InitFieldActivateBool,
33192OP_InitFieldActivateFixedPoint,
33193OP_InitFieldActivatePtr,
33194OP_InitFieldActivateMemberPtr,
33195OP_InitFieldActivateFloat,
33196#endif
33197#ifdef GET_INTERPFN_LIST
33198&Interp_InitFieldActivateSint8,
33199&Interp_InitFieldActivateUint8,
33200&Interp_InitFieldActivateSint16,
33201&Interp_InitFieldActivateUint16,
33202&Interp_InitFieldActivateSint32,
33203&Interp_InitFieldActivateUint32,
33204&Interp_InitFieldActivateSint64,
33205&Interp_InitFieldActivateUint64,
33206&Interp_InitFieldActivateIntAP,
33207&Interp_InitFieldActivateIntAPS,
33208&Interp_InitFieldActivateBool,
33209&Interp_InitFieldActivateFixedPoint,
33210&Interp_InitFieldActivatePtr,
33211&Interp_InitFieldActivateMemberPtr,
33212&Interp_InitFieldActivateFloat,
33213#endif
33214#ifdef GET_INTERPFN_DISPATCHERS
33215PRESERVE_NONE
33216static bool Interp_InitFieldActivateSint8(InterpState &S, CodePtr &PC) {
33217 {
33218 CodePtr OpPC = PC;
33219 const auto V0 = ReadArg<uint32_t>(S, PC);
33220 if (!InitFieldActivate<PT_Sint8>(S, OpPC, V0)) return false;
33221 }
33222#if USE_TAILCALLS
33223 MUSTTAIL return InterpNext(S, PC);
33224#else
33225 return true;
33226#endif
33227}
33228PRESERVE_NONE
33229static bool Interp_InitFieldActivateUint8(InterpState &S, CodePtr &PC) {
33230 {
33231 CodePtr OpPC = PC;
33232 const auto V0 = ReadArg<uint32_t>(S, PC);
33233 if (!InitFieldActivate<PT_Uint8>(S, OpPC, V0)) return false;
33234 }
33235#if USE_TAILCALLS
33236 MUSTTAIL return InterpNext(S, PC);
33237#else
33238 return true;
33239#endif
33240}
33241PRESERVE_NONE
33242static bool Interp_InitFieldActivateSint16(InterpState &S, CodePtr &PC) {
33243 {
33244 CodePtr OpPC = PC;
33245 const auto V0 = ReadArg<uint32_t>(S, PC);
33246 if (!InitFieldActivate<PT_Sint16>(S, OpPC, V0)) return false;
33247 }
33248#if USE_TAILCALLS
33249 MUSTTAIL return InterpNext(S, PC);
33250#else
33251 return true;
33252#endif
33253}
33254PRESERVE_NONE
33255static bool Interp_InitFieldActivateUint16(InterpState &S, CodePtr &PC) {
33256 {
33257 CodePtr OpPC = PC;
33258 const auto V0 = ReadArg<uint32_t>(S, PC);
33259 if (!InitFieldActivate<PT_Uint16>(S, OpPC, V0)) return false;
33260 }
33261#if USE_TAILCALLS
33262 MUSTTAIL return InterpNext(S, PC);
33263#else
33264 return true;
33265#endif
33266}
33267PRESERVE_NONE
33268static bool Interp_InitFieldActivateSint32(InterpState &S, CodePtr &PC) {
33269 {
33270 CodePtr OpPC = PC;
33271 const auto V0 = ReadArg<uint32_t>(S, PC);
33272 if (!InitFieldActivate<PT_Sint32>(S, OpPC, V0)) return false;
33273 }
33274#if USE_TAILCALLS
33275 MUSTTAIL return InterpNext(S, PC);
33276#else
33277 return true;
33278#endif
33279}
33280PRESERVE_NONE
33281static bool Interp_InitFieldActivateUint32(InterpState &S, CodePtr &PC) {
33282 {
33283 CodePtr OpPC = PC;
33284 const auto V0 = ReadArg<uint32_t>(S, PC);
33285 if (!InitFieldActivate<PT_Uint32>(S, OpPC, V0)) return false;
33286 }
33287#if USE_TAILCALLS
33288 MUSTTAIL return InterpNext(S, PC);
33289#else
33290 return true;
33291#endif
33292}
33293PRESERVE_NONE
33294static bool Interp_InitFieldActivateSint64(InterpState &S, CodePtr &PC) {
33295 {
33296 CodePtr OpPC = PC;
33297 const auto V0 = ReadArg<uint32_t>(S, PC);
33298 if (!InitFieldActivate<PT_Sint64>(S, OpPC, V0)) return false;
33299 }
33300#if USE_TAILCALLS
33301 MUSTTAIL return InterpNext(S, PC);
33302#else
33303 return true;
33304#endif
33305}
33306PRESERVE_NONE
33307static bool Interp_InitFieldActivateUint64(InterpState &S, CodePtr &PC) {
33308 {
33309 CodePtr OpPC = PC;
33310 const auto V0 = ReadArg<uint32_t>(S, PC);
33311 if (!InitFieldActivate<PT_Uint64>(S, OpPC, V0)) return false;
33312 }
33313#if USE_TAILCALLS
33314 MUSTTAIL return InterpNext(S, PC);
33315#else
33316 return true;
33317#endif
33318}
33319PRESERVE_NONE
33320static bool Interp_InitFieldActivateIntAP(InterpState &S, CodePtr &PC) {
33321 {
33322 CodePtr OpPC = PC;
33323 const auto V0 = ReadArg<uint32_t>(S, PC);
33324 if (!InitFieldActivate<PT_IntAP>(S, OpPC, V0)) return false;
33325 }
33326#if USE_TAILCALLS
33327 MUSTTAIL return InterpNext(S, PC);
33328#else
33329 return true;
33330#endif
33331}
33332PRESERVE_NONE
33333static bool Interp_InitFieldActivateIntAPS(InterpState &S, CodePtr &PC) {
33334 {
33335 CodePtr OpPC = PC;
33336 const auto V0 = ReadArg<uint32_t>(S, PC);
33337 if (!InitFieldActivate<PT_IntAPS>(S, OpPC, V0)) return false;
33338 }
33339#if USE_TAILCALLS
33340 MUSTTAIL return InterpNext(S, PC);
33341#else
33342 return true;
33343#endif
33344}
33345PRESERVE_NONE
33346static bool Interp_InitFieldActivateBool(InterpState &S, CodePtr &PC) {
33347 {
33348 CodePtr OpPC = PC;
33349 const auto V0 = ReadArg<uint32_t>(S, PC);
33350 if (!InitFieldActivate<PT_Bool>(S, OpPC, V0)) return false;
33351 }
33352#if USE_TAILCALLS
33353 MUSTTAIL return InterpNext(S, PC);
33354#else
33355 return true;
33356#endif
33357}
33358PRESERVE_NONE
33359static bool Interp_InitFieldActivateFixedPoint(InterpState &S, CodePtr &PC) {
33360 {
33361 CodePtr OpPC = PC;
33362 const auto V0 = ReadArg<uint32_t>(S, PC);
33363 if (!InitFieldActivate<PT_FixedPoint>(S, OpPC, V0)) return false;
33364 }
33365#if USE_TAILCALLS
33366 MUSTTAIL return InterpNext(S, PC);
33367#else
33368 return true;
33369#endif
33370}
33371PRESERVE_NONE
33372static bool Interp_InitFieldActivatePtr(InterpState &S, CodePtr &PC) {
33373 {
33374 CodePtr OpPC = PC;
33375 const auto V0 = ReadArg<uint32_t>(S, PC);
33376 if (!InitFieldActivate<PT_Ptr>(S, OpPC, V0)) return false;
33377 }
33378#if USE_TAILCALLS
33379 MUSTTAIL return InterpNext(S, PC);
33380#else
33381 return true;
33382#endif
33383}
33384PRESERVE_NONE
33385static bool Interp_InitFieldActivateMemberPtr(InterpState &S, CodePtr &PC) {
33386 {
33387 CodePtr OpPC = PC;
33388 const auto V0 = ReadArg<uint32_t>(S, PC);
33389 if (!InitFieldActivate<PT_MemberPtr>(S, OpPC, V0)) return false;
33390 }
33391#if USE_TAILCALLS
33392 MUSTTAIL return InterpNext(S, PC);
33393#else
33394 return true;
33395#endif
33396}
33397PRESERVE_NONE
33398static bool Interp_InitFieldActivateFloat(InterpState &S, CodePtr &PC) {
33399 {
33400 CodePtr OpPC = PC;
33401 const auto V0 = ReadArg<uint32_t>(S, PC);
33402 if (!InitFieldActivate<PT_Float>(S, OpPC, V0)) return false;
33403 }
33404#if USE_TAILCALLS
33405 MUSTTAIL return InterpNext(S, PC);
33406#else
33407 return true;
33408#endif
33409}
33410#endif
33411#ifdef GET_DISASM
33412case OP_InitFieldActivateSint8:
33413 Text.Op = PrintName("InitFieldActivateSint8");
33414 Text.Args.push_back(printArg<uint32_t>(P, PC));
33415 break;
33416case OP_InitFieldActivateUint8:
33417 Text.Op = PrintName("InitFieldActivateUint8");
33418 Text.Args.push_back(printArg<uint32_t>(P, PC));
33419 break;
33420case OP_InitFieldActivateSint16:
33421 Text.Op = PrintName("InitFieldActivateSint16");
33422 Text.Args.push_back(printArg<uint32_t>(P, PC));
33423 break;
33424case OP_InitFieldActivateUint16:
33425 Text.Op = PrintName("InitFieldActivateUint16");
33426 Text.Args.push_back(printArg<uint32_t>(P, PC));
33427 break;
33428case OP_InitFieldActivateSint32:
33429 Text.Op = PrintName("InitFieldActivateSint32");
33430 Text.Args.push_back(printArg<uint32_t>(P, PC));
33431 break;
33432case OP_InitFieldActivateUint32:
33433 Text.Op = PrintName("InitFieldActivateUint32");
33434 Text.Args.push_back(printArg<uint32_t>(P, PC));
33435 break;
33436case OP_InitFieldActivateSint64:
33437 Text.Op = PrintName("InitFieldActivateSint64");
33438 Text.Args.push_back(printArg<uint32_t>(P, PC));
33439 break;
33440case OP_InitFieldActivateUint64:
33441 Text.Op = PrintName("InitFieldActivateUint64");
33442 Text.Args.push_back(printArg<uint32_t>(P, PC));
33443 break;
33444case OP_InitFieldActivateIntAP:
33445 Text.Op = PrintName("InitFieldActivateIntAP");
33446 Text.Args.push_back(printArg<uint32_t>(P, PC));
33447 break;
33448case OP_InitFieldActivateIntAPS:
33449 Text.Op = PrintName("InitFieldActivateIntAPS");
33450 Text.Args.push_back(printArg<uint32_t>(P, PC));
33451 break;
33452case OP_InitFieldActivateBool:
33453 Text.Op = PrintName("InitFieldActivateBool");
33454 Text.Args.push_back(printArg<uint32_t>(P, PC));
33455 break;
33456case OP_InitFieldActivateFixedPoint:
33457 Text.Op = PrintName("InitFieldActivateFixedPoint");
33458 Text.Args.push_back(printArg<uint32_t>(P, PC));
33459 break;
33460case OP_InitFieldActivatePtr:
33461 Text.Op = PrintName("InitFieldActivatePtr");
33462 Text.Args.push_back(printArg<uint32_t>(P, PC));
33463 break;
33464case OP_InitFieldActivateMemberPtr:
33465 Text.Op = PrintName("InitFieldActivateMemberPtr");
33466 Text.Args.push_back(printArg<uint32_t>(P, PC));
33467 break;
33468case OP_InitFieldActivateFloat:
33469 Text.Op = PrintName("InitFieldActivateFloat");
33470 Text.Args.push_back(printArg<uint32_t>(P, PC));
33471 break;
33472#endif
33473#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33474bool emitInitFieldActivateSint8( uint32_t , SourceInfo);
33475bool emitInitFieldActivateUint8( uint32_t , SourceInfo);
33476bool emitInitFieldActivateSint16( uint32_t , SourceInfo);
33477bool emitInitFieldActivateUint16( uint32_t , SourceInfo);
33478bool emitInitFieldActivateSint32( uint32_t , SourceInfo);
33479bool emitInitFieldActivateUint32( uint32_t , SourceInfo);
33480bool emitInitFieldActivateSint64( uint32_t , SourceInfo);
33481bool emitInitFieldActivateUint64( uint32_t , SourceInfo);
33482bool emitInitFieldActivateIntAP( uint32_t , SourceInfo);
33483bool emitInitFieldActivateIntAPS( uint32_t , SourceInfo);
33484bool emitInitFieldActivateBool( uint32_t , SourceInfo);
33485bool emitInitFieldActivateFixedPoint( uint32_t , SourceInfo);
33486bool emitInitFieldActivatePtr( uint32_t , SourceInfo);
33487bool emitInitFieldActivateMemberPtr( uint32_t , SourceInfo);
33488bool emitInitFieldActivateFloat( uint32_t , SourceInfo);
33489#endif
33490#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33491[[nodiscard]] bool emitInitFieldActivate(PrimType, uint32_t, SourceInfo I);
33492#endif
33493#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
33494bool
33495#if defined(GET_EVAL_IMPL)
33496EvalEmitter
33497#else
33498ByteCodeEmitter
33499#endif
33500::emitInitFieldActivate(PrimType T0, uint32_t A0, SourceInfo I) {
33501 switch (T0) {
33502 case PT_Sint8:
33503 return emitInitFieldActivateSint8(A0, I);
33504 case PT_Uint8:
33505 return emitInitFieldActivateUint8(A0, I);
33506 case PT_Sint16:
33507 return emitInitFieldActivateSint16(A0, I);
33508 case PT_Uint16:
33509 return emitInitFieldActivateUint16(A0, I);
33510 case PT_Sint32:
33511 return emitInitFieldActivateSint32(A0, I);
33512 case PT_Uint32:
33513 return emitInitFieldActivateUint32(A0, I);
33514 case PT_Sint64:
33515 return emitInitFieldActivateSint64(A0, I);
33516 case PT_Uint64:
33517 return emitInitFieldActivateUint64(A0, I);
33518 case PT_IntAP:
33519 return emitInitFieldActivateIntAP(A0, I);
33520 case PT_IntAPS:
33521 return emitInitFieldActivateIntAPS(A0, I);
33522 case PT_Bool:
33523 return emitInitFieldActivateBool(A0, I);
33524 case PT_FixedPoint:
33525 return emitInitFieldActivateFixedPoint(A0, I);
33526 case PT_Ptr:
33527 return emitInitFieldActivatePtr(A0, I);
33528 case PT_MemberPtr:
33529 return emitInitFieldActivateMemberPtr(A0, I);
33530 case PT_Float:
33531 return emitInitFieldActivateFloat(A0, I);
33532 }
33533 llvm_unreachable("invalid enum value");
33534}
33535#endif
33536#ifdef GET_LINK_IMPL
33537bool ByteCodeEmitter::emitInitFieldActivateSint8( uint32_t A0, SourceInfo L) {
33538 return emitOp<uint32_t>(OP_InitFieldActivateSint8, A0, L);
33539}
33540bool ByteCodeEmitter::emitInitFieldActivateUint8( uint32_t A0, SourceInfo L) {
33541 return emitOp<uint32_t>(OP_InitFieldActivateUint8, A0, L);
33542}
33543bool ByteCodeEmitter::emitInitFieldActivateSint16( uint32_t A0, SourceInfo L) {
33544 return emitOp<uint32_t>(OP_InitFieldActivateSint16, A0, L);
33545}
33546bool ByteCodeEmitter::emitInitFieldActivateUint16( uint32_t A0, SourceInfo L) {
33547 return emitOp<uint32_t>(OP_InitFieldActivateUint16, A0, L);
33548}
33549bool ByteCodeEmitter::emitInitFieldActivateSint32( uint32_t A0, SourceInfo L) {
33550 return emitOp<uint32_t>(OP_InitFieldActivateSint32, A0, L);
33551}
33552bool ByteCodeEmitter::emitInitFieldActivateUint32( uint32_t A0, SourceInfo L) {
33553 return emitOp<uint32_t>(OP_InitFieldActivateUint32, A0, L);
33554}
33555bool ByteCodeEmitter::emitInitFieldActivateSint64( uint32_t A0, SourceInfo L) {
33556 return emitOp<uint32_t>(OP_InitFieldActivateSint64, A0, L);
33557}
33558bool ByteCodeEmitter::emitInitFieldActivateUint64( uint32_t A0, SourceInfo L) {
33559 return emitOp<uint32_t>(OP_InitFieldActivateUint64, A0, L);
33560}
33561bool ByteCodeEmitter::emitInitFieldActivateIntAP( uint32_t A0, SourceInfo L) {
33562 return emitOp<uint32_t>(OP_InitFieldActivateIntAP, A0, L);
33563}
33564bool ByteCodeEmitter::emitInitFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
33565 return emitOp<uint32_t>(OP_InitFieldActivateIntAPS, A0, L);
33566}
33567bool ByteCodeEmitter::emitInitFieldActivateBool( uint32_t A0, SourceInfo L) {
33568 return emitOp<uint32_t>(OP_InitFieldActivateBool, A0, L);
33569}
33570bool ByteCodeEmitter::emitInitFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
33571 return emitOp<uint32_t>(OP_InitFieldActivateFixedPoint, A0, L);
33572}
33573bool ByteCodeEmitter::emitInitFieldActivatePtr( uint32_t A0, SourceInfo L) {
33574 return emitOp<uint32_t>(OP_InitFieldActivatePtr, A0, L);
33575}
33576bool ByteCodeEmitter::emitInitFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
33577 return emitOp<uint32_t>(OP_InitFieldActivateMemberPtr, A0, L);
33578}
33579bool ByteCodeEmitter::emitInitFieldActivateFloat( uint32_t A0, SourceInfo L) {
33580 return emitOp<uint32_t>(OP_InitFieldActivateFloat, A0, L);
33581}
33582#endif
33583#ifdef GET_EVAL_IMPL
33584bool EvalEmitter::emitInitFieldActivateSint8( uint32_t A0, SourceInfo L) {
33585 if (!isActive()) return true;
33586 CurrentSource = L;
33587 return InitFieldActivate<PT_Sint8>(S, OpPC, A0);
33588}
33589bool EvalEmitter::emitInitFieldActivateUint8( uint32_t A0, SourceInfo L) {
33590 if (!isActive()) return true;
33591 CurrentSource = L;
33592 return InitFieldActivate<PT_Uint8>(S, OpPC, A0);
33593}
33594bool EvalEmitter::emitInitFieldActivateSint16( uint32_t A0, SourceInfo L) {
33595 if (!isActive()) return true;
33596 CurrentSource = L;
33597 return InitFieldActivate<PT_Sint16>(S, OpPC, A0);
33598}
33599bool EvalEmitter::emitInitFieldActivateUint16( uint32_t A0, SourceInfo L) {
33600 if (!isActive()) return true;
33601 CurrentSource = L;
33602 return InitFieldActivate<PT_Uint16>(S, OpPC, A0);
33603}
33604bool EvalEmitter::emitInitFieldActivateSint32( uint32_t A0, SourceInfo L) {
33605 if (!isActive()) return true;
33606 CurrentSource = L;
33607 return InitFieldActivate<PT_Sint32>(S, OpPC, A0);
33608}
33609bool EvalEmitter::emitInitFieldActivateUint32( uint32_t A0, SourceInfo L) {
33610 if (!isActive()) return true;
33611 CurrentSource = L;
33612 return InitFieldActivate<PT_Uint32>(S, OpPC, A0);
33613}
33614bool EvalEmitter::emitInitFieldActivateSint64( uint32_t A0, SourceInfo L) {
33615 if (!isActive()) return true;
33616 CurrentSource = L;
33617 return InitFieldActivate<PT_Sint64>(S, OpPC, A0);
33618}
33619bool EvalEmitter::emitInitFieldActivateUint64( uint32_t A0, SourceInfo L) {
33620 if (!isActive()) return true;
33621 CurrentSource = L;
33622 return InitFieldActivate<PT_Uint64>(S, OpPC, A0);
33623}
33624bool EvalEmitter::emitInitFieldActivateIntAP( uint32_t A0, SourceInfo L) {
33625 if (!isActive()) return true;
33626 CurrentSource = L;
33627 return InitFieldActivate<PT_IntAP>(S, OpPC, A0);
33628}
33629bool EvalEmitter::emitInitFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
33630 if (!isActive()) return true;
33631 CurrentSource = L;
33632 return InitFieldActivate<PT_IntAPS>(S, OpPC, A0);
33633}
33634bool EvalEmitter::emitInitFieldActivateBool( uint32_t A0, SourceInfo L) {
33635 if (!isActive()) return true;
33636 CurrentSource = L;
33637 return InitFieldActivate<PT_Bool>(S, OpPC, A0);
33638}
33639bool EvalEmitter::emitInitFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
33640 if (!isActive()) return true;
33641 CurrentSource = L;
33642 return InitFieldActivate<PT_FixedPoint>(S, OpPC, A0);
33643}
33644bool EvalEmitter::emitInitFieldActivatePtr( uint32_t A0, SourceInfo L) {
33645 if (!isActive()) return true;
33646 CurrentSource = L;
33647 return InitFieldActivate<PT_Ptr>(S, OpPC, A0);
33648}
33649bool EvalEmitter::emitInitFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
33650 if (!isActive()) return true;
33651 CurrentSource = L;
33652 return InitFieldActivate<PT_MemberPtr>(S, OpPC, A0);
33653}
33654bool EvalEmitter::emitInitFieldActivateFloat( uint32_t A0, SourceInfo L) {
33655 if (!isActive()) return true;
33656 CurrentSource = L;
33657 return InitFieldActivate<PT_Float>(S, OpPC, A0);
33658}
33659#endif
33660#ifdef GET_OPCODE_NAMES
33661OP_InitGlobalSint8,
33662OP_InitGlobalUint8,
33663OP_InitGlobalSint16,
33664OP_InitGlobalUint16,
33665OP_InitGlobalSint32,
33666OP_InitGlobalUint32,
33667OP_InitGlobalSint64,
33668OP_InitGlobalUint64,
33669OP_InitGlobalIntAP,
33670OP_InitGlobalIntAPS,
33671OP_InitGlobalBool,
33672OP_InitGlobalFixedPoint,
33673OP_InitGlobalPtr,
33674OP_InitGlobalMemberPtr,
33675OP_InitGlobalFloat,
33676#endif
33677#ifdef GET_INTERPFN_LIST
33678&Interp_InitGlobalSint8,
33679&Interp_InitGlobalUint8,
33680&Interp_InitGlobalSint16,
33681&Interp_InitGlobalUint16,
33682&Interp_InitGlobalSint32,
33683&Interp_InitGlobalUint32,
33684&Interp_InitGlobalSint64,
33685&Interp_InitGlobalUint64,
33686&Interp_InitGlobalIntAP,
33687&Interp_InitGlobalIntAPS,
33688&Interp_InitGlobalBool,
33689&Interp_InitGlobalFixedPoint,
33690&Interp_InitGlobalPtr,
33691&Interp_InitGlobalMemberPtr,
33692&Interp_InitGlobalFloat,
33693#endif
33694#ifdef GET_INTERPFN_DISPATCHERS
33695PRESERVE_NONE
33696static bool Interp_InitGlobalSint8(InterpState &S, CodePtr &PC) {
33697 {
33698 CodePtr OpPC = PC;
33699 const auto V0 = ReadArg<uint32_t>(S, PC);
33700 if (!InitGlobal<PT_Sint8>(S, OpPC, V0)) return false;
33701 }
33702#if USE_TAILCALLS
33703 MUSTTAIL return InterpNext(S, PC);
33704#else
33705 return true;
33706#endif
33707}
33708PRESERVE_NONE
33709static bool Interp_InitGlobalUint8(InterpState &S, CodePtr &PC) {
33710 {
33711 CodePtr OpPC = PC;
33712 const auto V0 = ReadArg<uint32_t>(S, PC);
33713 if (!InitGlobal<PT_Uint8>(S, OpPC, V0)) return false;
33714 }
33715#if USE_TAILCALLS
33716 MUSTTAIL return InterpNext(S, PC);
33717#else
33718 return true;
33719#endif
33720}
33721PRESERVE_NONE
33722static bool Interp_InitGlobalSint16(InterpState &S, CodePtr &PC) {
33723 {
33724 CodePtr OpPC = PC;
33725 const auto V0 = ReadArg<uint32_t>(S, PC);
33726 if (!InitGlobal<PT_Sint16>(S, OpPC, V0)) return false;
33727 }
33728#if USE_TAILCALLS
33729 MUSTTAIL return InterpNext(S, PC);
33730#else
33731 return true;
33732#endif
33733}
33734PRESERVE_NONE
33735static bool Interp_InitGlobalUint16(InterpState &S, CodePtr &PC) {
33736 {
33737 CodePtr OpPC = PC;
33738 const auto V0 = ReadArg<uint32_t>(S, PC);
33739 if (!InitGlobal<PT_Uint16>(S, OpPC, V0)) return false;
33740 }
33741#if USE_TAILCALLS
33742 MUSTTAIL return InterpNext(S, PC);
33743#else
33744 return true;
33745#endif
33746}
33747PRESERVE_NONE
33748static bool Interp_InitGlobalSint32(InterpState &S, CodePtr &PC) {
33749 {
33750 CodePtr OpPC = PC;
33751 const auto V0 = ReadArg<uint32_t>(S, PC);
33752 if (!InitGlobal<PT_Sint32>(S, OpPC, V0)) return false;
33753 }
33754#if USE_TAILCALLS
33755 MUSTTAIL return InterpNext(S, PC);
33756#else
33757 return true;
33758#endif
33759}
33760PRESERVE_NONE
33761static bool Interp_InitGlobalUint32(InterpState &S, CodePtr &PC) {
33762 {
33763 CodePtr OpPC = PC;
33764 const auto V0 = ReadArg<uint32_t>(S, PC);
33765 if (!InitGlobal<PT_Uint32>(S, OpPC, V0)) return false;
33766 }
33767#if USE_TAILCALLS
33768 MUSTTAIL return InterpNext(S, PC);
33769#else
33770 return true;
33771#endif
33772}
33773PRESERVE_NONE
33774static bool Interp_InitGlobalSint64(InterpState &S, CodePtr &PC) {
33775 {
33776 CodePtr OpPC = PC;
33777 const auto V0 = ReadArg<uint32_t>(S, PC);
33778 if (!InitGlobal<PT_Sint64>(S, OpPC, V0)) return false;
33779 }
33780#if USE_TAILCALLS
33781 MUSTTAIL return InterpNext(S, PC);
33782#else
33783 return true;
33784#endif
33785}
33786PRESERVE_NONE
33787static bool Interp_InitGlobalUint64(InterpState &S, CodePtr &PC) {
33788 {
33789 CodePtr OpPC = PC;
33790 const auto V0 = ReadArg<uint32_t>(S, PC);
33791 if (!InitGlobal<PT_Uint64>(S, OpPC, V0)) return false;
33792 }
33793#if USE_TAILCALLS
33794 MUSTTAIL return InterpNext(S, PC);
33795#else
33796 return true;
33797#endif
33798}
33799PRESERVE_NONE
33800static bool Interp_InitGlobalIntAP(InterpState &S, CodePtr &PC) {
33801 {
33802 CodePtr OpPC = PC;
33803 const auto V0 = ReadArg<uint32_t>(S, PC);
33804 if (!InitGlobal<PT_IntAP>(S, OpPC, V0)) return false;
33805 }
33806#if USE_TAILCALLS
33807 MUSTTAIL return InterpNext(S, PC);
33808#else
33809 return true;
33810#endif
33811}
33812PRESERVE_NONE
33813static bool Interp_InitGlobalIntAPS(InterpState &S, CodePtr &PC) {
33814 {
33815 CodePtr OpPC = PC;
33816 const auto V0 = ReadArg<uint32_t>(S, PC);
33817 if (!InitGlobal<PT_IntAPS>(S, OpPC, V0)) return false;
33818 }
33819#if USE_TAILCALLS
33820 MUSTTAIL return InterpNext(S, PC);
33821#else
33822 return true;
33823#endif
33824}
33825PRESERVE_NONE
33826static bool Interp_InitGlobalBool(InterpState &S, CodePtr &PC) {
33827 {
33828 CodePtr OpPC = PC;
33829 const auto V0 = ReadArg<uint32_t>(S, PC);
33830 if (!InitGlobal<PT_Bool>(S, OpPC, V0)) return false;
33831 }
33832#if USE_TAILCALLS
33833 MUSTTAIL return InterpNext(S, PC);
33834#else
33835 return true;
33836#endif
33837}
33838PRESERVE_NONE
33839static bool Interp_InitGlobalFixedPoint(InterpState &S, CodePtr &PC) {
33840 {
33841 CodePtr OpPC = PC;
33842 const auto V0 = ReadArg<uint32_t>(S, PC);
33843 if (!InitGlobal<PT_FixedPoint>(S, OpPC, V0)) return false;
33844 }
33845#if USE_TAILCALLS
33846 MUSTTAIL return InterpNext(S, PC);
33847#else
33848 return true;
33849#endif
33850}
33851PRESERVE_NONE
33852static bool Interp_InitGlobalPtr(InterpState &S, CodePtr &PC) {
33853 {
33854 CodePtr OpPC = PC;
33855 const auto V0 = ReadArg<uint32_t>(S, PC);
33856 if (!InitGlobal<PT_Ptr>(S, OpPC, V0)) return false;
33857 }
33858#if USE_TAILCALLS
33859 MUSTTAIL return InterpNext(S, PC);
33860#else
33861 return true;
33862#endif
33863}
33864PRESERVE_NONE
33865static bool Interp_InitGlobalMemberPtr(InterpState &S, CodePtr &PC) {
33866 {
33867 CodePtr OpPC = PC;
33868 const auto V0 = ReadArg<uint32_t>(S, PC);
33869 if (!InitGlobal<PT_MemberPtr>(S, OpPC, V0)) return false;
33870 }
33871#if USE_TAILCALLS
33872 MUSTTAIL return InterpNext(S, PC);
33873#else
33874 return true;
33875#endif
33876}
33877PRESERVE_NONE
33878static bool Interp_InitGlobalFloat(InterpState &S, CodePtr &PC) {
33879 {
33880 CodePtr OpPC = PC;
33881 const auto V0 = ReadArg<uint32_t>(S, PC);
33882 if (!InitGlobal<PT_Float>(S, OpPC, V0)) return false;
33883 }
33884#if USE_TAILCALLS
33885 MUSTTAIL return InterpNext(S, PC);
33886#else
33887 return true;
33888#endif
33889}
33890#endif
33891#ifdef GET_DISASM
33892case OP_InitGlobalSint8:
33893 Text.Op = PrintName("InitGlobalSint8");
33894 Text.Args.push_back(printArg<uint32_t>(P, PC));
33895 break;
33896case OP_InitGlobalUint8:
33897 Text.Op = PrintName("InitGlobalUint8");
33898 Text.Args.push_back(printArg<uint32_t>(P, PC));
33899 break;
33900case OP_InitGlobalSint16:
33901 Text.Op = PrintName("InitGlobalSint16");
33902 Text.Args.push_back(printArg<uint32_t>(P, PC));
33903 break;
33904case OP_InitGlobalUint16:
33905 Text.Op = PrintName("InitGlobalUint16");
33906 Text.Args.push_back(printArg<uint32_t>(P, PC));
33907 break;
33908case OP_InitGlobalSint32:
33909 Text.Op = PrintName("InitGlobalSint32");
33910 Text.Args.push_back(printArg<uint32_t>(P, PC));
33911 break;
33912case OP_InitGlobalUint32:
33913 Text.Op = PrintName("InitGlobalUint32");
33914 Text.Args.push_back(printArg<uint32_t>(P, PC));
33915 break;
33916case OP_InitGlobalSint64:
33917 Text.Op = PrintName("InitGlobalSint64");
33918 Text.Args.push_back(printArg<uint32_t>(P, PC));
33919 break;
33920case OP_InitGlobalUint64:
33921 Text.Op = PrintName("InitGlobalUint64");
33922 Text.Args.push_back(printArg<uint32_t>(P, PC));
33923 break;
33924case OP_InitGlobalIntAP:
33925 Text.Op = PrintName("InitGlobalIntAP");
33926 Text.Args.push_back(printArg<uint32_t>(P, PC));
33927 break;
33928case OP_InitGlobalIntAPS:
33929 Text.Op = PrintName("InitGlobalIntAPS");
33930 Text.Args.push_back(printArg<uint32_t>(P, PC));
33931 break;
33932case OP_InitGlobalBool:
33933 Text.Op = PrintName("InitGlobalBool");
33934 Text.Args.push_back(printArg<uint32_t>(P, PC));
33935 break;
33936case OP_InitGlobalFixedPoint:
33937 Text.Op = PrintName("InitGlobalFixedPoint");
33938 Text.Args.push_back(printArg<uint32_t>(P, PC));
33939 break;
33940case OP_InitGlobalPtr:
33941 Text.Op = PrintName("InitGlobalPtr");
33942 Text.Args.push_back(printArg<uint32_t>(P, PC));
33943 break;
33944case OP_InitGlobalMemberPtr:
33945 Text.Op = PrintName("InitGlobalMemberPtr");
33946 Text.Args.push_back(printArg<uint32_t>(P, PC));
33947 break;
33948case OP_InitGlobalFloat:
33949 Text.Op = PrintName("InitGlobalFloat");
33950 Text.Args.push_back(printArg<uint32_t>(P, PC));
33951 break;
33952#endif
33953#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33954bool emitInitGlobalSint8( uint32_t , SourceInfo);
33955bool emitInitGlobalUint8( uint32_t , SourceInfo);
33956bool emitInitGlobalSint16( uint32_t , SourceInfo);
33957bool emitInitGlobalUint16( uint32_t , SourceInfo);
33958bool emitInitGlobalSint32( uint32_t , SourceInfo);
33959bool emitInitGlobalUint32( uint32_t , SourceInfo);
33960bool emitInitGlobalSint64( uint32_t , SourceInfo);
33961bool emitInitGlobalUint64( uint32_t , SourceInfo);
33962bool emitInitGlobalIntAP( uint32_t , SourceInfo);
33963bool emitInitGlobalIntAPS( uint32_t , SourceInfo);
33964bool emitInitGlobalBool( uint32_t , SourceInfo);
33965bool emitInitGlobalFixedPoint( uint32_t , SourceInfo);
33966bool emitInitGlobalPtr( uint32_t , SourceInfo);
33967bool emitInitGlobalMemberPtr( uint32_t , SourceInfo);
33968bool emitInitGlobalFloat( uint32_t , SourceInfo);
33969#endif
33970#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33971[[nodiscard]] bool emitInitGlobal(PrimType, uint32_t, SourceInfo I);
33972#endif
33973#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
33974bool
33975#if defined(GET_EVAL_IMPL)
33976EvalEmitter
33977#else
33978ByteCodeEmitter
33979#endif
33980::emitInitGlobal(PrimType T0, uint32_t A0, SourceInfo I) {
33981 switch (T0) {
33982 case PT_Sint8:
33983 return emitInitGlobalSint8(A0, I);
33984 case PT_Uint8:
33985 return emitInitGlobalUint8(A0, I);
33986 case PT_Sint16:
33987 return emitInitGlobalSint16(A0, I);
33988 case PT_Uint16:
33989 return emitInitGlobalUint16(A0, I);
33990 case PT_Sint32:
33991 return emitInitGlobalSint32(A0, I);
33992 case PT_Uint32:
33993 return emitInitGlobalUint32(A0, I);
33994 case PT_Sint64:
33995 return emitInitGlobalSint64(A0, I);
33996 case PT_Uint64:
33997 return emitInitGlobalUint64(A0, I);
33998 case PT_IntAP:
33999 return emitInitGlobalIntAP(A0, I);
34000 case PT_IntAPS:
34001 return emitInitGlobalIntAPS(A0, I);
34002 case PT_Bool:
34003 return emitInitGlobalBool(A0, I);
34004 case PT_FixedPoint:
34005 return emitInitGlobalFixedPoint(A0, I);
34006 case PT_Ptr:
34007 return emitInitGlobalPtr(A0, I);
34008 case PT_MemberPtr:
34009 return emitInitGlobalMemberPtr(A0, I);
34010 case PT_Float:
34011 return emitInitGlobalFloat(A0, I);
34012 }
34013 llvm_unreachable("invalid enum value");
34014}
34015#endif
34016#ifdef GET_LINK_IMPL
34017bool ByteCodeEmitter::emitInitGlobalSint8( uint32_t A0, SourceInfo L) {
34018 return emitOp<uint32_t>(OP_InitGlobalSint8, A0, L);
34019}
34020bool ByteCodeEmitter::emitInitGlobalUint8( uint32_t A0, SourceInfo L) {
34021 return emitOp<uint32_t>(OP_InitGlobalUint8, A0, L);
34022}
34023bool ByteCodeEmitter::emitInitGlobalSint16( uint32_t A0, SourceInfo L) {
34024 return emitOp<uint32_t>(OP_InitGlobalSint16, A0, L);
34025}
34026bool ByteCodeEmitter::emitInitGlobalUint16( uint32_t A0, SourceInfo L) {
34027 return emitOp<uint32_t>(OP_InitGlobalUint16, A0, L);
34028}
34029bool ByteCodeEmitter::emitInitGlobalSint32( uint32_t A0, SourceInfo L) {
34030 return emitOp<uint32_t>(OP_InitGlobalSint32, A0, L);
34031}
34032bool ByteCodeEmitter::emitInitGlobalUint32( uint32_t A0, SourceInfo L) {
34033 return emitOp<uint32_t>(OP_InitGlobalUint32, A0, L);
34034}
34035bool ByteCodeEmitter::emitInitGlobalSint64( uint32_t A0, SourceInfo L) {
34036 return emitOp<uint32_t>(OP_InitGlobalSint64, A0, L);
34037}
34038bool ByteCodeEmitter::emitInitGlobalUint64( uint32_t A0, SourceInfo L) {
34039 return emitOp<uint32_t>(OP_InitGlobalUint64, A0, L);
34040}
34041bool ByteCodeEmitter::emitInitGlobalIntAP( uint32_t A0, SourceInfo L) {
34042 return emitOp<uint32_t>(OP_InitGlobalIntAP, A0, L);
34043}
34044bool ByteCodeEmitter::emitInitGlobalIntAPS( uint32_t A0, SourceInfo L) {
34045 return emitOp<uint32_t>(OP_InitGlobalIntAPS, A0, L);
34046}
34047bool ByteCodeEmitter::emitInitGlobalBool( uint32_t A0, SourceInfo L) {
34048 return emitOp<uint32_t>(OP_InitGlobalBool, A0, L);
34049}
34050bool ByteCodeEmitter::emitInitGlobalFixedPoint( uint32_t A0, SourceInfo L) {
34051 return emitOp<uint32_t>(OP_InitGlobalFixedPoint, A0, L);
34052}
34053bool ByteCodeEmitter::emitInitGlobalPtr( uint32_t A0, SourceInfo L) {
34054 return emitOp<uint32_t>(OP_InitGlobalPtr, A0, L);
34055}
34056bool ByteCodeEmitter::emitInitGlobalMemberPtr( uint32_t A0, SourceInfo L) {
34057 return emitOp<uint32_t>(OP_InitGlobalMemberPtr, A0, L);
34058}
34059bool ByteCodeEmitter::emitInitGlobalFloat( uint32_t A0, SourceInfo L) {
34060 return emitOp<uint32_t>(OP_InitGlobalFloat, A0, L);
34061}
34062#endif
34063#ifdef GET_EVAL_IMPL
34064bool EvalEmitter::emitInitGlobalSint8( uint32_t A0, SourceInfo L) {
34065 if (!isActive()) return true;
34066 CurrentSource = L;
34067 return InitGlobal<PT_Sint8>(S, OpPC, A0);
34068}
34069bool EvalEmitter::emitInitGlobalUint8( uint32_t A0, SourceInfo L) {
34070 if (!isActive()) return true;
34071 CurrentSource = L;
34072 return InitGlobal<PT_Uint8>(S, OpPC, A0);
34073}
34074bool EvalEmitter::emitInitGlobalSint16( uint32_t A0, SourceInfo L) {
34075 if (!isActive()) return true;
34076 CurrentSource = L;
34077 return InitGlobal<PT_Sint16>(S, OpPC, A0);
34078}
34079bool EvalEmitter::emitInitGlobalUint16( uint32_t A0, SourceInfo L) {
34080 if (!isActive()) return true;
34081 CurrentSource = L;
34082 return InitGlobal<PT_Uint16>(S, OpPC, A0);
34083}
34084bool EvalEmitter::emitInitGlobalSint32( uint32_t A0, SourceInfo L) {
34085 if (!isActive()) return true;
34086 CurrentSource = L;
34087 return InitGlobal<PT_Sint32>(S, OpPC, A0);
34088}
34089bool EvalEmitter::emitInitGlobalUint32( uint32_t A0, SourceInfo L) {
34090 if (!isActive()) return true;
34091 CurrentSource = L;
34092 return InitGlobal<PT_Uint32>(S, OpPC, A0);
34093}
34094bool EvalEmitter::emitInitGlobalSint64( uint32_t A0, SourceInfo L) {
34095 if (!isActive()) return true;
34096 CurrentSource = L;
34097 return InitGlobal<PT_Sint64>(S, OpPC, A0);
34098}
34099bool EvalEmitter::emitInitGlobalUint64( uint32_t A0, SourceInfo L) {
34100 if (!isActive()) return true;
34101 CurrentSource = L;
34102 return InitGlobal<PT_Uint64>(S, OpPC, A0);
34103}
34104bool EvalEmitter::emitInitGlobalIntAP( uint32_t A0, SourceInfo L) {
34105 if (!isActive()) return true;
34106 CurrentSource = L;
34107 return InitGlobal<PT_IntAP>(S, OpPC, A0);
34108}
34109bool EvalEmitter::emitInitGlobalIntAPS( uint32_t A0, SourceInfo L) {
34110 if (!isActive()) return true;
34111 CurrentSource = L;
34112 return InitGlobal<PT_IntAPS>(S, OpPC, A0);
34113}
34114bool EvalEmitter::emitInitGlobalBool( uint32_t A0, SourceInfo L) {
34115 if (!isActive()) return true;
34116 CurrentSource = L;
34117 return InitGlobal<PT_Bool>(S, OpPC, A0);
34118}
34119bool EvalEmitter::emitInitGlobalFixedPoint( uint32_t A0, SourceInfo L) {
34120 if (!isActive()) return true;
34121 CurrentSource = L;
34122 return InitGlobal<PT_FixedPoint>(S, OpPC, A0);
34123}
34124bool EvalEmitter::emitInitGlobalPtr( uint32_t A0, SourceInfo L) {
34125 if (!isActive()) return true;
34126 CurrentSource = L;
34127 return InitGlobal<PT_Ptr>(S, OpPC, A0);
34128}
34129bool EvalEmitter::emitInitGlobalMemberPtr( uint32_t A0, SourceInfo L) {
34130 if (!isActive()) return true;
34131 CurrentSource = L;
34132 return InitGlobal<PT_MemberPtr>(S, OpPC, A0);
34133}
34134bool EvalEmitter::emitInitGlobalFloat( uint32_t A0, SourceInfo L) {
34135 if (!isActive()) return true;
34136 CurrentSource = L;
34137 return InitGlobal<PT_Float>(S, OpPC, A0);
34138}
34139#endif
34140#ifdef GET_OPCODE_NAMES
34141OP_InitGlobalTempSint8,
34142OP_InitGlobalTempUint8,
34143OP_InitGlobalTempSint16,
34144OP_InitGlobalTempUint16,
34145OP_InitGlobalTempSint32,
34146OP_InitGlobalTempUint32,
34147OP_InitGlobalTempSint64,
34148OP_InitGlobalTempUint64,
34149OP_InitGlobalTempIntAP,
34150OP_InitGlobalTempIntAPS,
34151OP_InitGlobalTempBool,
34152OP_InitGlobalTempFixedPoint,
34153OP_InitGlobalTempPtr,
34154OP_InitGlobalTempMemberPtr,
34155OP_InitGlobalTempFloat,
34156#endif
34157#ifdef GET_INTERPFN_LIST
34158&Interp_InitGlobalTempSint8,
34159&Interp_InitGlobalTempUint8,
34160&Interp_InitGlobalTempSint16,
34161&Interp_InitGlobalTempUint16,
34162&Interp_InitGlobalTempSint32,
34163&Interp_InitGlobalTempUint32,
34164&Interp_InitGlobalTempSint64,
34165&Interp_InitGlobalTempUint64,
34166&Interp_InitGlobalTempIntAP,
34167&Interp_InitGlobalTempIntAPS,
34168&Interp_InitGlobalTempBool,
34169&Interp_InitGlobalTempFixedPoint,
34170&Interp_InitGlobalTempPtr,
34171&Interp_InitGlobalTempMemberPtr,
34172&Interp_InitGlobalTempFloat,
34173#endif
34174#ifdef GET_INTERPFN_DISPATCHERS
34175PRESERVE_NONE
34176static bool Interp_InitGlobalTempSint8(InterpState &S, CodePtr &PC) {
34177 {
34178 CodePtr OpPC = PC;
34179 const auto V0 = ReadArg<uint32_t>(S, PC);
34180 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34181 if (!InitGlobalTemp<PT_Sint8>(S, OpPC, V0, V1)) return false;
34182 }
34183#if USE_TAILCALLS
34184 MUSTTAIL return InterpNext(S, PC);
34185#else
34186 return true;
34187#endif
34188}
34189PRESERVE_NONE
34190static bool Interp_InitGlobalTempUint8(InterpState &S, CodePtr &PC) {
34191 {
34192 CodePtr OpPC = PC;
34193 const auto V0 = ReadArg<uint32_t>(S, PC);
34194 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34195 if (!InitGlobalTemp<PT_Uint8>(S, OpPC, V0, V1)) return false;
34196 }
34197#if USE_TAILCALLS
34198 MUSTTAIL return InterpNext(S, PC);
34199#else
34200 return true;
34201#endif
34202}
34203PRESERVE_NONE
34204static bool Interp_InitGlobalTempSint16(InterpState &S, CodePtr &PC) {
34205 {
34206 CodePtr OpPC = PC;
34207 const auto V0 = ReadArg<uint32_t>(S, PC);
34208 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34209 if (!InitGlobalTemp<PT_Sint16>(S, OpPC, V0, V1)) return false;
34210 }
34211#if USE_TAILCALLS
34212 MUSTTAIL return InterpNext(S, PC);
34213#else
34214 return true;
34215#endif
34216}
34217PRESERVE_NONE
34218static bool Interp_InitGlobalTempUint16(InterpState &S, CodePtr &PC) {
34219 {
34220 CodePtr OpPC = PC;
34221 const auto V0 = ReadArg<uint32_t>(S, PC);
34222 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34223 if (!InitGlobalTemp<PT_Uint16>(S, OpPC, V0, V1)) return false;
34224 }
34225#if USE_TAILCALLS
34226 MUSTTAIL return InterpNext(S, PC);
34227#else
34228 return true;
34229#endif
34230}
34231PRESERVE_NONE
34232static bool Interp_InitGlobalTempSint32(InterpState &S, CodePtr &PC) {
34233 {
34234 CodePtr OpPC = PC;
34235 const auto V0 = ReadArg<uint32_t>(S, PC);
34236 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34237 if (!InitGlobalTemp<PT_Sint32>(S, OpPC, V0, V1)) return false;
34238 }
34239#if USE_TAILCALLS
34240 MUSTTAIL return InterpNext(S, PC);
34241#else
34242 return true;
34243#endif
34244}
34245PRESERVE_NONE
34246static bool Interp_InitGlobalTempUint32(InterpState &S, CodePtr &PC) {
34247 {
34248 CodePtr OpPC = PC;
34249 const auto V0 = ReadArg<uint32_t>(S, PC);
34250 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34251 if (!InitGlobalTemp<PT_Uint32>(S, OpPC, V0, V1)) return false;
34252 }
34253#if USE_TAILCALLS
34254 MUSTTAIL return InterpNext(S, PC);
34255#else
34256 return true;
34257#endif
34258}
34259PRESERVE_NONE
34260static bool Interp_InitGlobalTempSint64(InterpState &S, CodePtr &PC) {
34261 {
34262 CodePtr OpPC = PC;
34263 const auto V0 = ReadArg<uint32_t>(S, PC);
34264 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34265 if (!InitGlobalTemp<PT_Sint64>(S, OpPC, V0, V1)) return false;
34266 }
34267#if USE_TAILCALLS
34268 MUSTTAIL return InterpNext(S, PC);
34269#else
34270 return true;
34271#endif
34272}
34273PRESERVE_NONE
34274static bool Interp_InitGlobalTempUint64(InterpState &S, CodePtr &PC) {
34275 {
34276 CodePtr OpPC = PC;
34277 const auto V0 = ReadArg<uint32_t>(S, PC);
34278 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34279 if (!InitGlobalTemp<PT_Uint64>(S, OpPC, V0, V1)) return false;
34280 }
34281#if USE_TAILCALLS
34282 MUSTTAIL return InterpNext(S, PC);
34283#else
34284 return true;
34285#endif
34286}
34287PRESERVE_NONE
34288static bool Interp_InitGlobalTempIntAP(InterpState &S, CodePtr &PC) {
34289 {
34290 CodePtr OpPC = PC;
34291 const auto V0 = ReadArg<uint32_t>(S, PC);
34292 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34293 if (!InitGlobalTemp<PT_IntAP>(S, OpPC, V0, V1)) return false;
34294 }
34295#if USE_TAILCALLS
34296 MUSTTAIL return InterpNext(S, PC);
34297#else
34298 return true;
34299#endif
34300}
34301PRESERVE_NONE
34302static bool Interp_InitGlobalTempIntAPS(InterpState &S, CodePtr &PC) {
34303 {
34304 CodePtr OpPC = PC;
34305 const auto V0 = ReadArg<uint32_t>(S, PC);
34306 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34307 if (!InitGlobalTemp<PT_IntAPS>(S, OpPC, V0, V1)) return false;
34308 }
34309#if USE_TAILCALLS
34310 MUSTTAIL return InterpNext(S, PC);
34311#else
34312 return true;
34313#endif
34314}
34315PRESERVE_NONE
34316static bool Interp_InitGlobalTempBool(InterpState &S, CodePtr &PC) {
34317 {
34318 CodePtr OpPC = PC;
34319 const auto V0 = ReadArg<uint32_t>(S, PC);
34320 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34321 if (!InitGlobalTemp<PT_Bool>(S, OpPC, V0, V1)) return false;
34322 }
34323#if USE_TAILCALLS
34324 MUSTTAIL return InterpNext(S, PC);
34325#else
34326 return true;
34327#endif
34328}
34329PRESERVE_NONE
34330static bool Interp_InitGlobalTempFixedPoint(InterpState &S, CodePtr &PC) {
34331 {
34332 CodePtr OpPC = PC;
34333 const auto V0 = ReadArg<uint32_t>(S, PC);
34334 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34335 if (!InitGlobalTemp<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
34336 }
34337#if USE_TAILCALLS
34338 MUSTTAIL return InterpNext(S, PC);
34339#else
34340 return true;
34341#endif
34342}
34343PRESERVE_NONE
34344static bool Interp_InitGlobalTempPtr(InterpState &S, CodePtr &PC) {
34345 {
34346 CodePtr OpPC = PC;
34347 const auto V0 = ReadArg<uint32_t>(S, PC);
34348 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34349 if (!InitGlobalTemp<PT_Ptr>(S, OpPC, V0, V1)) return false;
34350 }
34351#if USE_TAILCALLS
34352 MUSTTAIL return InterpNext(S, PC);
34353#else
34354 return true;
34355#endif
34356}
34357PRESERVE_NONE
34358static bool Interp_InitGlobalTempMemberPtr(InterpState &S, CodePtr &PC) {
34359 {
34360 CodePtr OpPC = PC;
34361 const auto V0 = ReadArg<uint32_t>(S, PC);
34362 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34363 if (!InitGlobalTemp<PT_MemberPtr>(S, OpPC, V0, V1)) return false;
34364 }
34365#if USE_TAILCALLS
34366 MUSTTAIL return InterpNext(S, PC);
34367#else
34368 return true;
34369#endif
34370}
34371PRESERVE_NONE
34372static bool Interp_InitGlobalTempFloat(InterpState &S, CodePtr &PC) {
34373 {
34374 CodePtr OpPC = PC;
34375 const auto V0 = ReadArg<uint32_t>(S, PC);
34376 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34377 if (!InitGlobalTemp<PT_Float>(S, OpPC, V0, V1)) return false;
34378 }
34379#if USE_TAILCALLS
34380 MUSTTAIL return InterpNext(S, PC);
34381#else
34382 return true;
34383#endif
34384}
34385#endif
34386#ifdef GET_DISASM
34387case OP_InitGlobalTempSint8:
34388 Text.Op = PrintName("InitGlobalTempSint8");
34389 Text.Args.push_back(printArg<uint32_t>(P, PC));
34390 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
34391 break;
34392case OP_InitGlobalTempUint8:
34393 Text.Op = PrintName("InitGlobalTempUint8");
34394 Text.Args.push_back(printArg<uint32_t>(P, PC));
34395 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
34396 break;
34397case OP_InitGlobalTempSint16:
34398 Text.Op = PrintName("InitGlobalTempSint16");
34399 Text.Args.push_back(printArg<uint32_t>(P, PC));
34400 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
34401 break;
34402case OP_InitGlobalTempUint16:
34403 Text.Op = PrintName("InitGlobalTempUint16");
34404 Text.Args.push_back(printArg<uint32_t>(P, PC));
34405 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
34406 break;
34407case OP_InitGlobalTempSint32:
34408 Text.Op = PrintName("InitGlobalTempSint32");
34409 Text.Args.push_back(printArg<uint32_t>(P, PC));
34410 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
34411 break;
34412case OP_InitGlobalTempUint32:
34413 Text.Op = PrintName("InitGlobalTempUint32");
34414 Text.Args.push_back(printArg<uint32_t>(P, PC));
34415 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
34416 break;
34417case OP_InitGlobalTempSint64:
34418 Text.Op = PrintName("InitGlobalTempSint64");
34419 Text.Args.push_back(printArg<uint32_t>(P, PC));
34420 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
34421 break;
34422case OP_InitGlobalTempUint64:
34423 Text.Op = PrintName("InitGlobalTempUint64");
34424 Text.Args.push_back(printArg<uint32_t>(P, PC));
34425 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
34426 break;
34427case OP_InitGlobalTempIntAP:
34428 Text.Op = PrintName("InitGlobalTempIntAP");
34429 Text.Args.push_back(printArg<uint32_t>(P, PC));
34430 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
34431 break;
34432case OP_InitGlobalTempIntAPS:
34433 Text.Op = PrintName("InitGlobalTempIntAPS");
34434 Text.Args.push_back(printArg<uint32_t>(P, PC));
34435 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
34436 break;
34437case OP_InitGlobalTempBool:
34438 Text.Op = PrintName("InitGlobalTempBool");
34439 Text.Args.push_back(printArg<uint32_t>(P, PC));
34440 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
34441 break;
34442case OP_InitGlobalTempFixedPoint:
34443 Text.Op = PrintName("InitGlobalTempFixedPoint");
34444 Text.Args.push_back(printArg<uint32_t>(P, PC));
34445 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
34446 break;
34447case OP_InitGlobalTempPtr:
34448 Text.Op = PrintName("InitGlobalTempPtr");
34449 Text.Args.push_back(printArg<uint32_t>(P, PC));
34450 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
34451 break;
34452case OP_InitGlobalTempMemberPtr:
34453 Text.Op = PrintName("InitGlobalTempMemberPtr");
34454 Text.Args.push_back(printArg<uint32_t>(P, PC));
34455 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
34456 break;
34457case OP_InitGlobalTempFloat:
34458 Text.Op = PrintName("InitGlobalTempFloat");
34459 Text.Args.push_back(printArg<uint32_t>(P, PC));
34460 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
34461 break;
34462#endif
34463#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34464bool emitInitGlobalTempSint8( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34465bool emitInitGlobalTempUint8( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34466bool emitInitGlobalTempSint16( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34467bool emitInitGlobalTempUint16( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34468bool emitInitGlobalTempSint32( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34469bool emitInitGlobalTempUint32( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34470bool emitInitGlobalTempSint64( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34471bool emitInitGlobalTempUint64( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34472bool emitInitGlobalTempIntAP( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34473bool emitInitGlobalTempIntAPS( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34474bool emitInitGlobalTempBool( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34475bool emitInitGlobalTempFixedPoint( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34476bool emitInitGlobalTempPtr( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34477bool emitInitGlobalTempMemberPtr( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34478bool emitInitGlobalTempFloat( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
34479#endif
34480#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34481[[nodiscard]] bool emitInitGlobalTemp(PrimType, uint32_t, const LifetimeExtendedTemporaryDecl *, SourceInfo I);
34482#endif
34483#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
34484bool
34485#if defined(GET_EVAL_IMPL)
34486EvalEmitter
34487#else
34488ByteCodeEmitter
34489#endif
34490::emitInitGlobalTemp(PrimType T0, uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo I) {
34491 switch (T0) {
34492 case PT_Sint8:
34493 return emitInitGlobalTempSint8(A0, A1, I);
34494 case PT_Uint8:
34495 return emitInitGlobalTempUint8(A0, A1, I);
34496 case PT_Sint16:
34497 return emitInitGlobalTempSint16(A0, A1, I);
34498 case PT_Uint16:
34499 return emitInitGlobalTempUint16(A0, A1, I);
34500 case PT_Sint32:
34501 return emitInitGlobalTempSint32(A0, A1, I);
34502 case PT_Uint32:
34503 return emitInitGlobalTempUint32(A0, A1, I);
34504 case PT_Sint64:
34505 return emitInitGlobalTempSint64(A0, A1, I);
34506 case PT_Uint64:
34507 return emitInitGlobalTempUint64(A0, A1, I);
34508 case PT_IntAP:
34509 return emitInitGlobalTempIntAP(A0, A1, I);
34510 case PT_IntAPS:
34511 return emitInitGlobalTempIntAPS(A0, A1, I);
34512 case PT_Bool:
34513 return emitInitGlobalTempBool(A0, A1, I);
34514 case PT_FixedPoint:
34515 return emitInitGlobalTempFixedPoint(A0, A1, I);
34516 case PT_Ptr:
34517 return emitInitGlobalTempPtr(A0, A1, I);
34518 case PT_MemberPtr:
34519 return emitInitGlobalTempMemberPtr(A0, A1, I);
34520 case PT_Float:
34521 return emitInitGlobalTempFloat(A0, A1, I);
34522 }
34523 llvm_unreachable("invalid enum value");
34524}
34525#endif
34526#ifdef GET_LINK_IMPL
34527bool ByteCodeEmitter::emitInitGlobalTempSint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34528 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint8, A0, A1, L);
34529}
34530bool ByteCodeEmitter::emitInitGlobalTempUint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34531 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint8, A0, A1, L);
34532}
34533bool ByteCodeEmitter::emitInitGlobalTempSint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34534 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint16, A0, A1, L);
34535}
34536bool ByteCodeEmitter::emitInitGlobalTempUint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34537 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint16, A0, A1, L);
34538}
34539bool ByteCodeEmitter::emitInitGlobalTempSint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34540 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint32, A0, A1, L);
34541}
34542bool ByteCodeEmitter::emitInitGlobalTempUint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34543 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint32, A0, A1, L);
34544}
34545bool ByteCodeEmitter::emitInitGlobalTempSint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34546 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint64, A0, A1, L);
34547}
34548bool ByteCodeEmitter::emitInitGlobalTempUint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34549 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint64, A0, A1, L);
34550}
34551bool ByteCodeEmitter::emitInitGlobalTempIntAP( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34552 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempIntAP, A0, A1, L);
34553}
34554bool ByteCodeEmitter::emitInitGlobalTempIntAPS( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34555 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempIntAPS, A0, A1, L);
34556}
34557bool ByteCodeEmitter::emitInitGlobalTempBool( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34558 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempBool, A0, A1, L);
34559}
34560bool ByteCodeEmitter::emitInitGlobalTempFixedPoint( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34561 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempFixedPoint, A0, A1, L);
34562}
34563bool ByteCodeEmitter::emitInitGlobalTempPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34564 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempPtr, A0, A1, L);
34565}
34566bool ByteCodeEmitter::emitInitGlobalTempMemberPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34567 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempMemberPtr, A0, A1, L);
34568}
34569bool ByteCodeEmitter::emitInitGlobalTempFloat( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34570 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempFloat, A0, A1, L);
34571}
34572#endif
34573#ifdef GET_EVAL_IMPL
34574bool EvalEmitter::emitInitGlobalTempSint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34575 if (!isActive()) return true;
34576 CurrentSource = L;
34577 return InitGlobalTemp<PT_Sint8>(S, OpPC, A0, A1);
34578}
34579bool EvalEmitter::emitInitGlobalTempUint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34580 if (!isActive()) return true;
34581 CurrentSource = L;
34582 return InitGlobalTemp<PT_Uint8>(S, OpPC, A0, A1);
34583}
34584bool EvalEmitter::emitInitGlobalTempSint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34585 if (!isActive()) return true;
34586 CurrentSource = L;
34587 return InitGlobalTemp<PT_Sint16>(S, OpPC, A0, A1);
34588}
34589bool EvalEmitter::emitInitGlobalTempUint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34590 if (!isActive()) return true;
34591 CurrentSource = L;
34592 return InitGlobalTemp<PT_Uint16>(S, OpPC, A0, A1);
34593}
34594bool EvalEmitter::emitInitGlobalTempSint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34595 if (!isActive()) return true;
34596 CurrentSource = L;
34597 return InitGlobalTemp<PT_Sint32>(S, OpPC, A0, A1);
34598}
34599bool EvalEmitter::emitInitGlobalTempUint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34600 if (!isActive()) return true;
34601 CurrentSource = L;
34602 return InitGlobalTemp<PT_Uint32>(S, OpPC, A0, A1);
34603}
34604bool EvalEmitter::emitInitGlobalTempSint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34605 if (!isActive()) return true;
34606 CurrentSource = L;
34607 return InitGlobalTemp<PT_Sint64>(S, OpPC, A0, A1);
34608}
34609bool EvalEmitter::emitInitGlobalTempUint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34610 if (!isActive()) return true;
34611 CurrentSource = L;
34612 return InitGlobalTemp<PT_Uint64>(S, OpPC, A0, A1);
34613}
34614bool EvalEmitter::emitInitGlobalTempIntAP( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34615 if (!isActive()) return true;
34616 CurrentSource = L;
34617 return InitGlobalTemp<PT_IntAP>(S, OpPC, A0, A1);
34618}
34619bool EvalEmitter::emitInitGlobalTempIntAPS( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34620 if (!isActive()) return true;
34621 CurrentSource = L;
34622 return InitGlobalTemp<PT_IntAPS>(S, OpPC, A0, A1);
34623}
34624bool EvalEmitter::emitInitGlobalTempBool( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34625 if (!isActive()) return true;
34626 CurrentSource = L;
34627 return InitGlobalTemp<PT_Bool>(S, OpPC, A0, A1);
34628}
34629bool EvalEmitter::emitInitGlobalTempFixedPoint( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34630 if (!isActive()) return true;
34631 CurrentSource = L;
34632 return InitGlobalTemp<PT_FixedPoint>(S, OpPC, A0, A1);
34633}
34634bool EvalEmitter::emitInitGlobalTempPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34635 if (!isActive()) return true;
34636 CurrentSource = L;
34637 return InitGlobalTemp<PT_Ptr>(S, OpPC, A0, A1);
34638}
34639bool EvalEmitter::emitInitGlobalTempMemberPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34640 if (!isActive()) return true;
34641 CurrentSource = L;
34642 return InitGlobalTemp<PT_MemberPtr>(S, OpPC, A0, A1);
34643}
34644bool EvalEmitter::emitInitGlobalTempFloat( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
34645 if (!isActive()) return true;
34646 CurrentSource = L;
34647 return InitGlobalTemp<PT_Float>(S, OpPC, A0, A1);
34648}
34649#endif
34650#ifdef GET_OPCODE_NAMES
34651OP_InitGlobalTempComp,
34652#endif
34653#ifdef GET_INTERPFN_LIST
34654&Interp_InitGlobalTempComp,
34655#endif
34656#ifdef GET_INTERPFN_DISPATCHERS
34657PRESERVE_NONE
34658static bool Interp_InitGlobalTempComp(InterpState &S, CodePtr &PC) {
34659 {
34660 CodePtr OpPC = PC;
34661 const auto V0 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
34662 if (!InitGlobalTempComp(S, OpPC, V0)) return false;
34663 }
34664#if USE_TAILCALLS
34665 MUSTTAIL return InterpNext(S, PC);
34666#else
34667 return true;
34668#endif
34669}
34670#endif
34671#ifdef GET_DISASM
34672case OP_InitGlobalTempComp:
34673 Text.Op = PrintName("InitGlobalTempComp");
34674 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
34675 break;
34676#endif
34677#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34678bool emitInitGlobalTempComp( const LifetimeExtendedTemporaryDecl * , SourceInfo);
34679#endif
34680#ifdef GET_LINK_IMPL
34681bool ByteCodeEmitter::emitInitGlobalTempComp( const LifetimeExtendedTemporaryDecl * A0, SourceInfo L) {
34682 return emitOp<const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempComp, A0, L);
34683}
34684#endif
34685#ifdef GET_EVAL_IMPL
34686bool EvalEmitter::emitInitGlobalTempComp( const LifetimeExtendedTemporaryDecl * A0, SourceInfo L) {
34687 if (!isActive()) return true;
34688 CurrentSource = L;
34689 return InitGlobalTempComp(S, OpPC, A0);
34690}
34691#endif
34692#ifdef GET_OPCODE_NAMES
34693OP_InitPopSint8,
34694OP_InitPopUint8,
34695OP_InitPopSint16,
34696OP_InitPopUint16,
34697OP_InitPopSint32,
34698OP_InitPopUint32,
34699OP_InitPopSint64,
34700OP_InitPopUint64,
34701OP_InitPopIntAP,
34702OP_InitPopIntAPS,
34703OP_InitPopBool,
34704OP_InitPopFixedPoint,
34705OP_InitPopPtr,
34706OP_InitPopMemberPtr,
34707OP_InitPopFloat,
34708#endif
34709#ifdef GET_INTERPFN_LIST
34710&Interp_InitPopSint8,
34711&Interp_InitPopUint8,
34712&Interp_InitPopSint16,
34713&Interp_InitPopUint16,
34714&Interp_InitPopSint32,
34715&Interp_InitPopUint32,
34716&Interp_InitPopSint64,
34717&Interp_InitPopUint64,
34718&Interp_InitPopIntAP,
34719&Interp_InitPopIntAPS,
34720&Interp_InitPopBool,
34721&Interp_InitPopFixedPoint,
34722&Interp_InitPopPtr,
34723&Interp_InitPopMemberPtr,
34724&Interp_InitPopFloat,
34725#endif
34726#ifdef GET_INTERPFN_DISPATCHERS
34727PRESERVE_NONE
34728static bool Interp_InitPopSint8(InterpState &S, CodePtr &PC) {
34729 if (!InitPop<PT_Sint8>(S, PC)) return false;
34730#if USE_TAILCALLS
34731 MUSTTAIL return InterpNext(S, PC);
34732#else
34733 return true;
34734#endif
34735}
34736PRESERVE_NONE
34737static bool Interp_InitPopUint8(InterpState &S, CodePtr &PC) {
34738 if (!InitPop<PT_Uint8>(S, PC)) return false;
34739#if USE_TAILCALLS
34740 MUSTTAIL return InterpNext(S, PC);
34741#else
34742 return true;
34743#endif
34744}
34745PRESERVE_NONE
34746static bool Interp_InitPopSint16(InterpState &S, CodePtr &PC) {
34747 if (!InitPop<PT_Sint16>(S, PC)) return false;
34748#if USE_TAILCALLS
34749 MUSTTAIL return InterpNext(S, PC);
34750#else
34751 return true;
34752#endif
34753}
34754PRESERVE_NONE
34755static bool Interp_InitPopUint16(InterpState &S, CodePtr &PC) {
34756 if (!InitPop<PT_Uint16>(S, PC)) return false;
34757#if USE_TAILCALLS
34758 MUSTTAIL return InterpNext(S, PC);
34759#else
34760 return true;
34761#endif
34762}
34763PRESERVE_NONE
34764static bool Interp_InitPopSint32(InterpState &S, CodePtr &PC) {
34765 if (!InitPop<PT_Sint32>(S, PC)) return false;
34766#if USE_TAILCALLS
34767 MUSTTAIL return InterpNext(S, PC);
34768#else
34769 return true;
34770#endif
34771}
34772PRESERVE_NONE
34773static bool Interp_InitPopUint32(InterpState &S, CodePtr &PC) {
34774 if (!InitPop<PT_Uint32>(S, PC)) return false;
34775#if USE_TAILCALLS
34776 MUSTTAIL return InterpNext(S, PC);
34777#else
34778 return true;
34779#endif
34780}
34781PRESERVE_NONE
34782static bool Interp_InitPopSint64(InterpState &S, CodePtr &PC) {
34783 if (!InitPop<PT_Sint64>(S, PC)) return false;
34784#if USE_TAILCALLS
34785 MUSTTAIL return InterpNext(S, PC);
34786#else
34787 return true;
34788#endif
34789}
34790PRESERVE_NONE
34791static bool Interp_InitPopUint64(InterpState &S, CodePtr &PC) {
34792 if (!InitPop<PT_Uint64>(S, PC)) return false;
34793#if USE_TAILCALLS
34794 MUSTTAIL return InterpNext(S, PC);
34795#else
34796 return true;
34797#endif
34798}
34799PRESERVE_NONE
34800static bool Interp_InitPopIntAP(InterpState &S, CodePtr &PC) {
34801 if (!InitPop<PT_IntAP>(S, PC)) return false;
34802#if USE_TAILCALLS
34803 MUSTTAIL return InterpNext(S, PC);
34804#else
34805 return true;
34806#endif
34807}
34808PRESERVE_NONE
34809static bool Interp_InitPopIntAPS(InterpState &S, CodePtr &PC) {
34810 if (!InitPop<PT_IntAPS>(S, PC)) return false;
34811#if USE_TAILCALLS
34812 MUSTTAIL return InterpNext(S, PC);
34813#else
34814 return true;
34815#endif
34816}
34817PRESERVE_NONE
34818static bool Interp_InitPopBool(InterpState &S, CodePtr &PC) {
34819 if (!InitPop<PT_Bool>(S, PC)) return false;
34820#if USE_TAILCALLS
34821 MUSTTAIL return InterpNext(S, PC);
34822#else
34823 return true;
34824#endif
34825}
34826PRESERVE_NONE
34827static bool Interp_InitPopFixedPoint(InterpState &S, CodePtr &PC) {
34828 if (!InitPop<PT_FixedPoint>(S, PC)) return false;
34829#if USE_TAILCALLS
34830 MUSTTAIL return InterpNext(S, PC);
34831#else
34832 return true;
34833#endif
34834}
34835PRESERVE_NONE
34836static bool Interp_InitPopPtr(InterpState &S, CodePtr &PC) {
34837 if (!InitPop<PT_Ptr>(S, PC)) return false;
34838#if USE_TAILCALLS
34839 MUSTTAIL return InterpNext(S, PC);
34840#else
34841 return true;
34842#endif
34843}
34844PRESERVE_NONE
34845static bool Interp_InitPopMemberPtr(InterpState &S, CodePtr &PC) {
34846 if (!InitPop<PT_MemberPtr>(S, PC)) return false;
34847#if USE_TAILCALLS
34848 MUSTTAIL return InterpNext(S, PC);
34849#else
34850 return true;
34851#endif
34852}
34853PRESERVE_NONE
34854static bool Interp_InitPopFloat(InterpState &S, CodePtr &PC) {
34855 if (!InitPop<PT_Float>(S, PC)) return false;
34856#if USE_TAILCALLS
34857 MUSTTAIL return InterpNext(S, PC);
34858#else
34859 return true;
34860#endif
34861}
34862#endif
34863#ifdef GET_DISASM
34864case OP_InitPopSint8:
34865 Text.Op = PrintName("InitPopSint8");
34866 break;
34867case OP_InitPopUint8:
34868 Text.Op = PrintName("InitPopUint8");
34869 break;
34870case OP_InitPopSint16:
34871 Text.Op = PrintName("InitPopSint16");
34872 break;
34873case OP_InitPopUint16:
34874 Text.Op = PrintName("InitPopUint16");
34875 break;
34876case OP_InitPopSint32:
34877 Text.Op = PrintName("InitPopSint32");
34878 break;
34879case OP_InitPopUint32:
34880 Text.Op = PrintName("InitPopUint32");
34881 break;
34882case OP_InitPopSint64:
34883 Text.Op = PrintName("InitPopSint64");
34884 break;
34885case OP_InitPopUint64:
34886 Text.Op = PrintName("InitPopUint64");
34887 break;
34888case OP_InitPopIntAP:
34889 Text.Op = PrintName("InitPopIntAP");
34890 break;
34891case OP_InitPopIntAPS:
34892 Text.Op = PrintName("InitPopIntAPS");
34893 break;
34894case OP_InitPopBool:
34895 Text.Op = PrintName("InitPopBool");
34896 break;
34897case OP_InitPopFixedPoint:
34898 Text.Op = PrintName("InitPopFixedPoint");
34899 break;
34900case OP_InitPopPtr:
34901 Text.Op = PrintName("InitPopPtr");
34902 break;
34903case OP_InitPopMemberPtr:
34904 Text.Op = PrintName("InitPopMemberPtr");
34905 break;
34906case OP_InitPopFloat:
34907 Text.Op = PrintName("InitPopFloat");
34908 break;
34909#endif
34910#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34911bool emitInitPopSint8(SourceInfo);
34912bool emitInitPopUint8(SourceInfo);
34913bool emitInitPopSint16(SourceInfo);
34914bool emitInitPopUint16(SourceInfo);
34915bool emitInitPopSint32(SourceInfo);
34916bool emitInitPopUint32(SourceInfo);
34917bool emitInitPopSint64(SourceInfo);
34918bool emitInitPopUint64(SourceInfo);
34919bool emitInitPopIntAP(SourceInfo);
34920bool emitInitPopIntAPS(SourceInfo);
34921bool emitInitPopBool(SourceInfo);
34922bool emitInitPopFixedPoint(SourceInfo);
34923bool emitInitPopPtr(SourceInfo);
34924bool emitInitPopMemberPtr(SourceInfo);
34925bool emitInitPopFloat(SourceInfo);
34926#endif
34927#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34928[[nodiscard]] bool emitInitPop(PrimType, SourceInfo I);
34929#endif
34930#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
34931bool
34932#if defined(GET_EVAL_IMPL)
34933EvalEmitter
34934#else
34935ByteCodeEmitter
34936#endif
34937::emitInitPop(PrimType T0, SourceInfo I) {
34938 switch (T0) {
34939 case PT_Sint8:
34940 return emitInitPopSint8(I);
34941 case PT_Uint8:
34942 return emitInitPopUint8(I);
34943 case PT_Sint16:
34944 return emitInitPopSint16(I);
34945 case PT_Uint16:
34946 return emitInitPopUint16(I);
34947 case PT_Sint32:
34948 return emitInitPopSint32(I);
34949 case PT_Uint32:
34950 return emitInitPopUint32(I);
34951 case PT_Sint64:
34952 return emitInitPopSint64(I);
34953 case PT_Uint64:
34954 return emitInitPopUint64(I);
34955 case PT_IntAP:
34956 return emitInitPopIntAP(I);
34957 case PT_IntAPS:
34958 return emitInitPopIntAPS(I);
34959 case PT_Bool:
34960 return emitInitPopBool(I);
34961 case PT_FixedPoint:
34962 return emitInitPopFixedPoint(I);
34963 case PT_Ptr:
34964 return emitInitPopPtr(I);
34965 case PT_MemberPtr:
34966 return emitInitPopMemberPtr(I);
34967 case PT_Float:
34968 return emitInitPopFloat(I);
34969 }
34970 llvm_unreachable("invalid enum value");
34971}
34972#endif
34973#ifdef GET_LINK_IMPL
34974bool ByteCodeEmitter::emitInitPopSint8(SourceInfo L) {
34975 return emitOp<>(OP_InitPopSint8, L);
34976}
34977bool ByteCodeEmitter::emitInitPopUint8(SourceInfo L) {
34978 return emitOp<>(OP_InitPopUint8, L);
34979}
34980bool ByteCodeEmitter::emitInitPopSint16(SourceInfo L) {
34981 return emitOp<>(OP_InitPopSint16, L);
34982}
34983bool ByteCodeEmitter::emitInitPopUint16(SourceInfo L) {
34984 return emitOp<>(OP_InitPopUint16, L);
34985}
34986bool ByteCodeEmitter::emitInitPopSint32(SourceInfo L) {
34987 return emitOp<>(OP_InitPopSint32, L);
34988}
34989bool ByteCodeEmitter::emitInitPopUint32(SourceInfo L) {
34990 return emitOp<>(OP_InitPopUint32, L);
34991}
34992bool ByteCodeEmitter::emitInitPopSint64(SourceInfo L) {
34993 return emitOp<>(OP_InitPopSint64, L);
34994}
34995bool ByteCodeEmitter::emitInitPopUint64(SourceInfo L) {
34996 return emitOp<>(OP_InitPopUint64, L);
34997}
34998bool ByteCodeEmitter::emitInitPopIntAP(SourceInfo L) {
34999 return emitOp<>(OP_InitPopIntAP, L);
35000}
35001bool ByteCodeEmitter::emitInitPopIntAPS(SourceInfo L) {
35002 return emitOp<>(OP_InitPopIntAPS, L);
35003}
35004bool ByteCodeEmitter::emitInitPopBool(SourceInfo L) {
35005 return emitOp<>(OP_InitPopBool, L);
35006}
35007bool ByteCodeEmitter::emitInitPopFixedPoint(SourceInfo L) {
35008 return emitOp<>(OP_InitPopFixedPoint, L);
35009}
35010bool ByteCodeEmitter::emitInitPopPtr(SourceInfo L) {
35011 return emitOp<>(OP_InitPopPtr, L);
35012}
35013bool ByteCodeEmitter::emitInitPopMemberPtr(SourceInfo L) {
35014 return emitOp<>(OP_InitPopMemberPtr, L);
35015}
35016bool ByteCodeEmitter::emitInitPopFloat(SourceInfo L) {
35017 return emitOp<>(OP_InitPopFloat, L);
35018}
35019#endif
35020#ifdef GET_EVAL_IMPL
35021bool EvalEmitter::emitInitPopSint8(SourceInfo L) {
35022 if (!isActive()) return true;
35023 CurrentSource = L;
35024 return InitPop<PT_Sint8>(S, OpPC);
35025}
35026bool EvalEmitter::emitInitPopUint8(SourceInfo L) {
35027 if (!isActive()) return true;
35028 CurrentSource = L;
35029 return InitPop<PT_Uint8>(S, OpPC);
35030}
35031bool EvalEmitter::emitInitPopSint16(SourceInfo L) {
35032 if (!isActive()) return true;
35033 CurrentSource = L;
35034 return InitPop<PT_Sint16>(S, OpPC);
35035}
35036bool EvalEmitter::emitInitPopUint16(SourceInfo L) {
35037 if (!isActive()) return true;
35038 CurrentSource = L;
35039 return InitPop<PT_Uint16>(S, OpPC);
35040}
35041bool EvalEmitter::emitInitPopSint32(SourceInfo L) {
35042 if (!isActive()) return true;
35043 CurrentSource = L;
35044 return InitPop<PT_Sint32>(S, OpPC);
35045}
35046bool EvalEmitter::emitInitPopUint32(SourceInfo L) {
35047 if (!isActive()) return true;
35048 CurrentSource = L;
35049 return InitPop<PT_Uint32>(S, OpPC);
35050}
35051bool EvalEmitter::emitInitPopSint64(SourceInfo L) {
35052 if (!isActive()) return true;
35053 CurrentSource = L;
35054 return InitPop<PT_Sint64>(S, OpPC);
35055}
35056bool EvalEmitter::emitInitPopUint64(SourceInfo L) {
35057 if (!isActive()) return true;
35058 CurrentSource = L;
35059 return InitPop<PT_Uint64>(S, OpPC);
35060}
35061bool EvalEmitter::emitInitPopIntAP(SourceInfo L) {
35062 if (!isActive()) return true;
35063 CurrentSource = L;
35064 return InitPop<PT_IntAP>(S, OpPC);
35065}
35066bool EvalEmitter::emitInitPopIntAPS(SourceInfo L) {
35067 if (!isActive()) return true;
35068 CurrentSource = L;
35069 return InitPop<PT_IntAPS>(S, OpPC);
35070}
35071bool EvalEmitter::emitInitPopBool(SourceInfo L) {
35072 if (!isActive()) return true;
35073 CurrentSource = L;
35074 return InitPop<PT_Bool>(S, OpPC);
35075}
35076bool EvalEmitter::emitInitPopFixedPoint(SourceInfo L) {
35077 if (!isActive()) return true;
35078 CurrentSource = L;
35079 return InitPop<PT_FixedPoint>(S, OpPC);
35080}
35081bool EvalEmitter::emitInitPopPtr(SourceInfo L) {
35082 if (!isActive()) return true;
35083 CurrentSource = L;
35084 return InitPop<PT_Ptr>(S, OpPC);
35085}
35086bool EvalEmitter::emitInitPopMemberPtr(SourceInfo L) {
35087 if (!isActive()) return true;
35088 CurrentSource = L;
35089 return InitPop<PT_MemberPtr>(S, OpPC);
35090}
35091bool EvalEmitter::emitInitPopFloat(SourceInfo L) {
35092 if (!isActive()) return true;
35093 CurrentSource = L;
35094 return InitPop<PT_Float>(S, OpPC);
35095}
35096#endif
35097#ifdef GET_OPCODE_NAMES
35098OP_InitScope,
35099#endif
35100#ifdef GET_INTERPFN_LIST
35101&Interp_InitScope,
35102#endif
35103#ifdef GET_INTERPFN_DISPATCHERS
35104PRESERVE_NONE
35105static bool Interp_InitScope(InterpState &S, CodePtr &PC) {
35106 {
35107 CodePtr OpPC = PC;
35108 const auto V0 = ReadArg<uint32_t>(S, PC);
35109 if (!InitScope(S, OpPC, V0)) return false;
35110 }
35111#if USE_TAILCALLS
35112 MUSTTAIL return InterpNext(S, PC);
35113#else
35114 return true;
35115#endif
35116}
35117#endif
35118#ifdef GET_DISASM
35119case OP_InitScope:
35120 Text.Op = PrintName("InitScope");
35121 Text.Args.push_back(printArg<uint32_t>(P, PC));
35122 break;
35123#endif
35124#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35125bool emitInitScope( uint32_t , SourceInfo);
35126#endif
35127#ifdef GET_LINK_IMPL
35128bool ByteCodeEmitter::emitInitScope( uint32_t A0, SourceInfo L) {
35129 return emitOp<uint32_t>(OP_InitScope, A0, L);
35130}
35131#endif
35132#ifdef GET_EVAL_IMPL
35133bool EvalEmitter::emitInitScope( uint32_t A0, SourceInfo L) {
35134 if (!isActive()) return true;
35135 CurrentSource = L;
35136 return InitScope(S, OpPC, A0);
35137}
35138#endif
35139#ifdef GET_OPCODE_NAMES
35140OP_InitThisBitFieldSint8,
35141OP_InitThisBitFieldUint8,
35142OP_InitThisBitFieldSint16,
35143OP_InitThisBitFieldUint16,
35144OP_InitThisBitFieldSint32,
35145OP_InitThisBitFieldUint32,
35146OP_InitThisBitFieldSint64,
35147OP_InitThisBitFieldUint64,
35148OP_InitThisBitFieldIntAP,
35149OP_InitThisBitFieldIntAPS,
35150OP_InitThisBitFieldBool,
35151#endif
35152#ifdef GET_INTERPFN_LIST
35153&Interp_InitThisBitFieldSint8,
35154&Interp_InitThisBitFieldUint8,
35155&Interp_InitThisBitFieldSint16,
35156&Interp_InitThisBitFieldUint16,
35157&Interp_InitThisBitFieldSint32,
35158&Interp_InitThisBitFieldUint32,
35159&Interp_InitThisBitFieldSint64,
35160&Interp_InitThisBitFieldUint64,
35161&Interp_InitThisBitFieldIntAP,
35162&Interp_InitThisBitFieldIntAPS,
35163&Interp_InitThisBitFieldBool,
35164#endif
35165#ifdef GET_INTERPFN_DISPATCHERS
35166PRESERVE_NONE
35167static bool Interp_InitThisBitFieldSint8(InterpState &S, CodePtr &PC) {
35168 {
35169 CodePtr OpPC = PC;
35170 const auto V0 = ReadArg<uint32_t>(S, PC);
35171 const auto V1 = ReadArg<uint32_t>(S, PC);
35172 if (!InitThisBitField<PT_Sint8>(S, OpPC, V0, V1)) return false;
35173 }
35174#if USE_TAILCALLS
35175 MUSTTAIL return InterpNext(S, PC);
35176#else
35177 return true;
35178#endif
35179}
35180PRESERVE_NONE
35181static bool Interp_InitThisBitFieldUint8(InterpState &S, CodePtr &PC) {
35182 {
35183 CodePtr OpPC = PC;
35184 const auto V0 = ReadArg<uint32_t>(S, PC);
35185 const auto V1 = ReadArg<uint32_t>(S, PC);
35186 if (!InitThisBitField<PT_Uint8>(S, OpPC, V0, V1)) return false;
35187 }
35188#if USE_TAILCALLS
35189 MUSTTAIL return InterpNext(S, PC);
35190#else
35191 return true;
35192#endif
35193}
35194PRESERVE_NONE
35195static bool Interp_InitThisBitFieldSint16(InterpState &S, CodePtr &PC) {
35196 {
35197 CodePtr OpPC = PC;
35198 const auto V0 = ReadArg<uint32_t>(S, PC);
35199 const auto V1 = ReadArg<uint32_t>(S, PC);
35200 if (!InitThisBitField<PT_Sint16>(S, OpPC, V0, V1)) return false;
35201 }
35202#if USE_TAILCALLS
35203 MUSTTAIL return InterpNext(S, PC);
35204#else
35205 return true;
35206#endif
35207}
35208PRESERVE_NONE
35209static bool Interp_InitThisBitFieldUint16(InterpState &S, CodePtr &PC) {
35210 {
35211 CodePtr OpPC = PC;
35212 const auto V0 = ReadArg<uint32_t>(S, PC);
35213 const auto V1 = ReadArg<uint32_t>(S, PC);
35214 if (!InitThisBitField<PT_Uint16>(S, OpPC, V0, V1)) return false;
35215 }
35216#if USE_TAILCALLS
35217 MUSTTAIL return InterpNext(S, PC);
35218#else
35219 return true;
35220#endif
35221}
35222PRESERVE_NONE
35223static bool Interp_InitThisBitFieldSint32(InterpState &S, CodePtr &PC) {
35224 {
35225 CodePtr OpPC = PC;
35226 const auto V0 = ReadArg<uint32_t>(S, PC);
35227 const auto V1 = ReadArg<uint32_t>(S, PC);
35228 if (!InitThisBitField<PT_Sint32>(S, OpPC, V0, V1)) return false;
35229 }
35230#if USE_TAILCALLS
35231 MUSTTAIL return InterpNext(S, PC);
35232#else
35233 return true;
35234#endif
35235}
35236PRESERVE_NONE
35237static bool Interp_InitThisBitFieldUint32(InterpState &S, CodePtr &PC) {
35238 {
35239 CodePtr OpPC = PC;
35240 const auto V0 = ReadArg<uint32_t>(S, PC);
35241 const auto V1 = ReadArg<uint32_t>(S, PC);
35242 if (!InitThisBitField<PT_Uint32>(S, OpPC, V0, V1)) return false;
35243 }
35244#if USE_TAILCALLS
35245 MUSTTAIL return InterpNext(S, PC);
35246#else
35247 return true;
35248#endif
35249}
35250PRESERVE_NONE
35251static bool Interp_InitThisBitFieldSint64(InterpState &S, CodePtr &PC) {
35252 {
35253 CodePtr OpPC = PC;
35254 const auto V0 = ReadArg<uint32_t>(S, PC);
35255 const auto V1 = ReadArg<uint32_t>(S, PC);
35256 if (!InitThisBitField<PT_Sint64>(S, OpPC, V0, V1)) return false;
35257 }
35258#if USE_TAILCALLS
35259 MUSTTAIL return InterpNext(S, PC);
35260#else
35261 return true;
35262#endif
35263}
35264PRESERVE_NONE
35265static bool Interp_InitThisBitFieldUint64(InterpState &S, CodePtr &PC) {
35266 {
35267 CodePtr OpPC = PC;
35268 const auto V0 = ReadArg<uint32_t>(S, PC);
35269 const auto V1 = ReadArg<uint32_t>(S, PC);
35270 if (!InitThisBitField<PT_Uint64>(S, OpPC, V0, V1)) return false;
35271 }
35272#if USE_TAILCALLS
35273 MUSTTAIL return InterpNext(S, PC);
35274#else
35275 return true;
35276#endif
35277}
35278PRESERVE_NONE
35279static bool Interp_InitThisBitFieldIntAP(InterpState &S, CodePtr &PC) {
35280 {
35281 CodePtr OpPC = PC;
35282 const auto V0 = ReadArg<uint32_t>(S, PC);
35283 const auto V1 = ReadArg<uint32_t>(S, PC);
35284 if (!InitThisBitField<PT_IntAP>(S, OpPC, V0, V1)) return false;
35285 }
35286#if USE_TAILCALLS
35287 MUSTTAIL return InterpNext(S, PC);
35288#else
35289 return true;
35290#endif
35291}
35292PRESERVE_NONE
35293static bool Interp_InitThisBitFieldIntAPS(InterpState &S, CodePtr &PC) {
35294 {
35295 CodePtr OpPC = PC;
35296 const auto V0 = ReadArg<uint32_t>(S, PC);
35297 const auto V1 = ReadArg<uint32_t>(S, PC);
35298 if (!InitThisBitField<PT_IntAPS>(S, OpPC, V0, V1)) return false;
35299 }
35300#if USE_TAILCALLS
35301 MUSTTAIL return InterpNext(S, PC);
35302#else
35303 return true;
35304#endif
35305}
35306PRESERVE_NONE
35307static bool Interp_InitThisBitFieldBool(InterpState &S, CodePtr &PC) {
35308 {
35309 CodePtr OpPC = PC;
35310 const auto V0 = ReadArg<uint32_t>(S, PC);
35311 const auto V1 = ReadArg<uint32_t>(S, PC);
35312 if (!InitThisBitField<PT_Bool>(S, OpPC, V0, V1)) return false;
35313 }
35314#if USE_TAILCALLS
35315 MUSTTAIL return InterpNext(S, PC);
35316#else
35317 return true;
35318#endif
35319}
35320#endif
35321#ifdef GET_DISASM
35322case OP_InitThisBitFieldSint8:
35323 Text.Op = PrintName("InitThisBitFieldSint8");
35324 Text.Args.push_back(printArg<uint32_t>(P, PC));
35325 Text.Args.push_back(printArg<uint32_t>(P, PC));
35326 break;
35327case OP_InitThisBitFieldUint8:
35328 Text.Op = PrintName("InitThisBitFieldUint8");
35329 Text.Args.push_back(printArg<uint32_t>(P, PC));
35330 Text.Args.push_back(printArg<uint32_t>(P, PC));
35331 break;
35332case OP_InitThisBitFieldSint16:
35333 Text.Op = PrintName("InitThisBitFieldSint16");
35334 Text.Args.push_back(printArg<uint32_t>(P, PC));
35335 Text.Args.push_back(printArg<uint32_t>(P, PC));
35336 break;
35337case OP_InitThisBitFieldUint16:
35338 Text.Op = PrintName("InitThisBitFieldUint16");
35339 Text.Args.push_back(printArg<uint32_t>(P, PC));
35340 Text.Args.push_back(printArg<uint32_t>(P, PC));
35341 break;
35342case OP_InitThisBitFieldSint32:
35343 Text.Op = PrintName("InitThisBitFieldSint32");
35344 Text.Args.push_back(printArg<uint32_t>(P, PC));
35345 Text.Args.push_back(printArg<uint32_t>(P, PC));
35346 break;
35347case OP_InitThisBitFieldUint32:
35348 Text.Op = PrintName("InitThisBitFieldUint32");
35349 Text.Args.push_back(printArg<uint32_t>(P, PC));
35350 Text.Args.push_back(printArg<uint32_t>(P, PC));
35351 break;
35352case OP_InitThisBitFieldSint64:
35353 Text.Op = PrintName("InitThisBitFieldSint64");
35354 Text.Args.push_back(printArg<uint32_t>(P, PC));
35355 Text.Args.push_back(printArg<uint32_t>(P, PC));
35356 break;
35357case OP_InitThisBitFieldUint64:
35358 Text.Op = PrintName("InitThisBitFieldUint64");
35359 Text.Args.push_back(printArg<uint32_t>(P, PC));
35360 Text.Args.push_back(printArg<uint32_t>(P, PC));
35361 break;
35362case OP_InitThisBitFieldIntAP:
35363 Text.Op = PrintName("InitThisBitFieldIntAP");
35364 Text.Args.push_back(printArg<uint32_t>(P, PC));
35365 Text.Args.push_back(printArg<uint32_t>(P, PC));
35366 break;
35367case OP_InitThisBitFieldIntAPS:
35368 Text.Op = PrintName("InitThisBitFieldIntAPS");
35369 Text.Args.push_back(printArg<uint32_t>(P, PC));
35370 Text.Args.push_back(printArg<uint32_t>(P, PC));
35371 break;
35372case OP_InitThisBitFieldBool:
35373 Text.Op = PrintName("InitThisBitFieldBool");
35374 Text.Args.push_back(printArg<uint32_t>(P, PC));
35375 Text.Args.push_back(printArg<uint32_t>(P, PC));
35376 break;
35377#endif
35378#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35379bool emitInitThisBitFieldSint8( uint32_t , uint32_t , SourceInfo);
35380bool emitInitThisBitFieldUint8( uint32_t , uint32_t , SourceInfo);
35381bool emitInitThisBitFieldSint16( uint32_t , uint32_t , SourceInfo);
35382bool emitInitThisBitFieldUint16( uint32_t , uint32_t , SourceInfo);
35383bool emitInitThisBitFieldSint32( uint32_t , uint32_t , SourceInfo);
35384bool emitInitThisBitFieldUint32( uint32_t , uint32_t , SourceInfo);
35385bool emitInitThisBitFieldSint64( uint32_t , uint32_t , SourceInfo);
35386bool emitInitThisBitFieldUint64( uint32_t , uint32_t , SourceInfo);
35387bool emitInitThisBitFieldIntAP( uint32_t , uint32_t , SourceInfo);
35388bool emitInitThisBitFieldIntAPS( uint32_t , uint32_t , SourceInfo);
35389bool emitInitThisBitFieldBool( uint32_t , uint32_t , SourceInfo);
35390#endif
35391#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35392[[nodiscard]] bool emitInitThisBitField(PrimType, uint32_t, uint32_t, SourceInfo I);
35393#endif
35394#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
35395bool
35396#if defined(GET_EVAL_IMPL)
35397EvalEmitter
35398#else
35399ByteCodeEmitter
35400#endif
35401::emitInitThisBitField(PrimType T0, uint32_t A0, uint32_t A1, SourceInfo I) {
35402 switch (T0) {
35403 case PT_Sint8:
35404 return emitInitThisBitFieldSint8(A0, A1, I);
35405 case PT_Uint8:
35406 return emitInitThisBitFieldUint8(A0, A1, I);
35407 case PT_Sint16:
35408 return emitInitThisBitFieldSint16(A0, A1, I);
35409 case PT_Uint16:
35410 return emitInitThisBitFieldUint16(A0, A1, I);
35411 case PT_Sint32:
35412 return emitInitThisBitFieldSint32(A0, A1, I);
35413 case PT_Uint32:
35414 return emitInitThisBitFieldUint32(A0, A1, I);
35415 case PT_Sint64:
35416 return emitInitThisBitFieldSint64(A0, A1, I);
35417 case PT_Uint64:
35418 return emitInitThisBitFieldUint64(A0, A1, I);
35419 case PT_IntAP:
35420 return emitInitThisBitFieldIntAP(A0, A1, I);
35421 case PT_IntAPS:
35422 return emitInitThisBitFieldIntAPS(A0, A1, I);
35423 case PT_Bool:
35424 return emitInitThisBitFieldBool(A0, A1, I);
35425 default: llvm_unreachable("invalid type: emitInitThisBitField");
35426 }
35427 llvm_unreachable("invalid enum value");
35428}
35429#endif
35430#ifdef GET_LINK_IMPL
35431bool ByteCodeEmitter::emitInitThisBitFieldSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
35432 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldSint8, A0, A1, L);
35433}
35434bool ByteCodeEmitter::emitInitThisBitFieldUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
35435 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldUint8, A0, A1, L);
35436}
35437bool ByteCodeEmitter::emitInitThisBitFieldSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
35438 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldSint16, A0, A1, L);
35439}
35440bool ByteCodeEmitter::emitInitThisBitFieldUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
35441 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldUint16, A0, A1, L);
35442}
35443bool ByteCodeEmitter::emitInitThisBitFieldSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
35444 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldSint32, A0, A1, L);
35445}
35446bool ByteCodeEmitter::emitInitThisBitFieldUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
35447 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldUint32, A0, A1, L);
35448}
35449bool ByteCodeEmitter::emitInitThisBitFieldSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
35450 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldSint64, A0, A1, L);
35451}
35452bool ByteCodeEmitter::emitInitThisBitFieldUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
35453 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldUint64, A0, A1, L);
35454}
35455bool ByteCodeEmitter::emitInitThisBitFieldIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
35456 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldIntAP, A0, A1, L);
35457}
35458bool ByteCodeEmitter::emitInitThisBitFieldIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
35459 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldIntAPS, A0, A1, L);
35460}
35461bool ByteCodeEmitter::emitInitThisBitFieldBool( uint32_t A0, uint32_t A1, SourceInfo L) {
35462 return emitOp<uint32_t, uint32_t>(OP_InitThisBitFieldBool, A0, A1, L);
35463}
35464#endif
35465#ifdef GET_EVAL_IMPL
35466bool EvalEmitter::emitInitThisBitFieldSint8( uint32_t A0, uint32_t A1, SourceInfo L) {
35467 if (!isActive()) return true;
35468 CurrentSource = L;
35469 return InitThisBitField<PT_Sint8>(S, OpPC, A0, A1);
35470}
35471bool EvalEmitter::emitInitThisBitFieldUint8( uint32_t A0, uint32_t A1, SourceInfo L) {
35472 if (!isActive()) return true;
35473 CurrentSource = L;
35474 return InitThisBitField<PT_Uint8>(S, OpPC, A0, A1);
35475}
35476bool EvalEmitter::emitInitThisBitFieldSint16( uint32_t A0, uint32_t A1, SourceInfo L) {
35477 if (!isActive()) return true;
35478 CurrentSource = L;
35479 return InitThisBitField<PT_Sint16>(S, OpPC, A0, A1);
35480}
35481bool EvalEmitter::emitInitThisBitFieldUint16( uint32_t A0, uint32_t A1, SourceInfo L) {
35482 if (!isActive()) return true;
35483 CurrentSource = L;
35484 return InitThisBitField<PT_Uint16>(S, OpPC, A0, A1);
35485}
35486bool EvalEmitter::emitInitThisBitFieldSint32( uint32_t A0, uint32_t A1, SourceInfo L) {
35487 if (!isActive()) return true;
35488 CurrentSource = L;
35489 return InitThisBitField<PT_Sint32>(S, OpPC, A0, A1);
35490}
35491bool EvalEmitter::emitInitThisBitFieldUint32( uint32_t A0, uint32_t A1, SourceInfo L) {
35492 if (!isActive()) return true;
35493 CurrentSource = L;
35494 return InitThisBitField<PT_Uint32>(S, OpPC, A0, A1);
35495}
35496bool EvalEmitter::emitInitThisBitFieldSint64( uint32_t A0, uint32_t A1, SourceInfo L) {
35497 if (!isActive()) return true;
35498 CurrentSource = L;
35499 return InitThisBitField<PT_Sint64>(S, OpPC, A0, A1);
35500}
35501bool EvalEmitter::emitInitThisBitFieldUint64( uint32_t A0, uint32_t A1, SourceInfo L) {
35502 if (!isActive()) return true;
35503 CurrentSource = L;
35504 return InitThisBitField<PT_Uint64>(S, OpPC, A0, A1);
35505}
35506bool EvalEmitter::emitInitThisBitFieldIntAP( uint32_t A0, uint32_t A1, SourceInfo L) {
35507 if (!isActive()) return true;
35508 CurrentSource = L;
35509 return InitThisBitField<PT_IntAP>(S, OpPC, A0, A1);
35510}
35511bool EvalEmitter::emitInitThisBitFieldIntAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
35512 if (!isActive()) return true;
35513 CurrentSource = L;
35514 return InitThisBitField<PT_IntAPS>(S, OpPC, A0, A1);
35515}
35516bool EvalEmitter::emitInitThisBitFieldBool( uint32_t A0, uint32_t A1, SourceInfo L) {
35517 if (!isActive()) return true;
35518 CurrentSource = L;
35519 return InitThisBitField<PT_Bool>(S, OpPC, A0, A1);
35520}
35521#endif
35522#ifdef GET_OPCODE_NAMES
35523OP_InitThisFieldSint8,
35524OP_InitThisFieldUint8,
35525OP_InitThisFieldSint16,
35526OP_InitThisFieldUint16,
35527OP_InitThisFieldSint32,
35528OP_InitThisFieldUint32,
35529OP_InitThisFieldSint64,
35530OP_InitThisFieldUint64,
35531OP_InitThisFieldIntAP,
35532OP_InitThisFieldIntAPS,
35533OP_InitThisFieldBool,
35534OP_InitThisFieldFixedPoint,
35535OP_InitThisFieldPtr,
35536OP_InitThisFieldMemberPtr,
35537OP_InitThisFieldFloat,
35538#endif
35539#ifdef GET_INTERPFN_LIST
35540&Interp_InitThisFieldSint8,
35541&Interp_InitThisFieldUint8,
35542&Interp_InitThisFieldSint16,
35543&Interp_InitThisFieldUint16,
35544&Interp_InitThisFieldSint32,
35545&Interp_InitThisFieldUint32,
35546&Interp_InitThisFieldSint64,
35547&Interp_InitThisFieldUint64,
35548&Interp_InitThisFieldIntAP,
35549&Interp_InitThisFieldIntAPS,
35550&Interp_InitThisFieldBool,
35551&Interp_InitThisFieldFixedPoint,
35552&Interp_InitThisFieldPtr,
35553&Interp_InitThisFieldMemberPtr,
35554&Interp_InitThisFieldFloat,
35555#endif
35556#ifdef GET_INTERPFN_DISPATCHERS
35557PRESERVE_NONE
35558static bool Interp_InitThisFieldSint8(InterpState &S, CodePtr &PC) {
35559 {
35560 CodePtr OpPC = PC;
35561 const auto V0 = ReadArg<uint32_t>(S, PC);
35562 if (!InitThisField<PT_Sint8>(S, OpPC, V0)) return false;
35563 }
35564#if USE_TAILCALLS
35565 MUSTTAIL return InterpNext(S, PC);
35566#else
35567 return true;
35568#endif
35569}
35570PRESERVE_NONE
35571static bool Interp_InitThisFieldUint8(InterpState &S, CodePtr &PC) {
35572 {
35573 CodePtr OpPC = PC;
35574 const auto V0 = ReadArg<uint32_t>(S, PC);
35575 if (!InitThisField<PT_Uint8>(S, OpPC, V0)) return false;
35576 }
35577#if USE_TAILCALLS
35578 MUSTTAIL return InterpNext(S, PC);
35579#else
35580 return true;
35581#endif
35582}
35583PRESERVE_NONE
35584static bool Interp_InitThisFieldSint16(InterpState &S, CodePtr &PC) {
35585 {
35586 CodePtr OpPC = PC;
35587 const auto V0 = ReadArg<uint32_t>(S, PC);
35588 if (!InitThisField<PT_Sint16>(S, OpPC, V0)) return false;
35589 }
35590#if USE_TAILCALLS
35591 MUSTTAIL return InterpNext(S, PC);
35592#else
35593 return true;
35594#endif
35595}
35596PRESERVE_NONE
35597static bool Interp_InitThisFieldUint16(InterpState &S, CodePtr &PC) {
35598 {
35599 CodePtr OpPC = PC;
35600 const auto V0 = ReadArg<uint32_t>(S, PC);
35601 if (!InitThisField<PT_Uint16>(S, OpPC, V0)) return false;
35602 }
35603#if USE_TAILCALLS
35604 MUSTTAIL return InterpNext(S, PC);
35605#else
35606 return true;
35607#endif
35608}
35609PRESERVE_NONE
35610static bool Interp_InitThisFieldSint32(InterpState &S, CodePtr &PC) {
35611 {
35612 CodePtr OpPC = PC;
35613 const auto V0 = ReadArg<uint32_t>(S, PC);
35614 if (!InitThisField<PT_Sint32>(S, OpPC, V0)) return false;
35615 }
35616#if USE_TAILCALLS
35617 MUSTTAIL return InterpNext(S, PC);
35618#else
35619 return true;
35620#endif
35621}
35622PRESERVE_NONE
35623static bool Interp_InitThisFieldUint32(InterpState &S, CodePtr &PC) {
35624 {
35625 CodePtr OpPC = PC;
35626 const auto V0 = ReadArg<uint32_t>(S, PC);
35627 if (!InitThisField<PT_Uint32>(S, OpPC, V0)) return false;
35628 }
35629#if USE_TAILCALLS
35630 MUSTTAIL return InterpNext(S, PC);
35631#else
35632 return true;
35633#endif
35634}
35635PRESERVE_NONE
35636static bool Interp_InitThisFieldSint64(InterpState &S, CodePtr &PC) {
35637 {
35638 CodePtr OpPC = PC;
35639 const auto V0 = ReadArg<uint32_t>(S, PC);
35640 if (!InitThisField<PT_Sint64>(S, OpPC, V0)) return false;
35641 }
35642#if USE_TAILCALLS
35643 MUSTTAIL return InterpNext(S, PC);
35644#else
35645 return true;
35646#endif
35647}
35648PRESERVE_NONE
35649static bool Interp_InitThisFieldUint64(InterpState &S, CodePtr &PC) {
35650 {
35651 CodePtr OpPC = PC;
35652 const auto V0 = ReadArg<uint32_t>(S, PC);
35653 if (!InitThisField<PT_Uint64>(S, OpPC, V0)) return false;
35654 }
35655#if USE_TAILCALLS
35656 MUSTTAIL return InterpNext(S, PC);
35657#else
35658 return true;
35659#endif
35660}
35661PRESERVE_NONE
35662static bool Interp_InitThisFieldIntAP(InterpState &S, CodePtr &PC) {
35663 {
35664 CodePtr OpPC = PC;
35665 const auto V0 = ReadArg<uint32_t>(S, PC);
35666 if (!InitThisField<PT_IntAP>(S, OpPC, V0)) return false;
35667 }
35668#if USE_TAILCALLS
35669 MUSTTAIL return InterpNext(S, PC);
35670#else
35671 return true;
35672#endif
35673}
35674PRESERVE_NONE
35675static bool Interp_InitThisFieldIntAPS(InterpState &S, CodePtr &PC) {
35676 {
35677 CodePtr OpPC = PC;
35678 const auto V0 = ReadArg<uint32_t>(S, PC);
35679 if (!InitThisField<PT_IntAPS>(S, OpPC, V0)) return false;
35680 }
35681#if USE_TAILCALLS
35682 MUSTTAIL return InterpNext(S, PC);
35683#else
35684 return true;
35685#endif
35686}
35687PRESERVE_NONE
35688static bool Interp_InitThisFieldBool(InterpState &S, CodePtr &PC) {
35689 {
35690 CodePtr OpPC = PC;
35691 const auto V0 = ReadArg<uint32_t>(S, PC);
35692 if (!InitThisField<PT_Bool>(S, OpPC, V0)) return false;
35693 }
35694#if USE_TAILCALLS
35695 MUSTTAIL return InterpNext(S, PC);
35696#else
35697 return true;
35698#endif
35699}
35700PRESERVE_NONE
35701static bool Interp_InitThisFieldFixedPoint(InterpState &S, CodePtr &PC) {
35702 {
35703 CodePtr OpPC = PC;
35704 const auto V0 = ReadArg<uint32_t>(S, PC);
35705 if (!InitThisField<PT_FixedPoint>(S, OpPC, V0)) return false;
35706 }
35707#if USE_TAILCALLS
35708 MUSTTAIL return InterpNext(S, PC);
35709#else
35710 return true;
35711#endif
35712}
35713PRESERVE_NONE
35714static bool Interp_InitThisFieldPtr(InterpState &S, CodePtr &PC) {
35715 {
35716 CodePtr OpPC = PC;
35717 const auto V0 = ReadArg<uint32_t>(S, PC);
35718 if (!InitThisField<PT_Ptr>(S, OpPC, V0)) return false;
35719 }
35720#if USE_TAILCALLS
35721 MUSTTAIL return InterpNext(S, PC);
35722#else
35723 return true;
35724#endif
35725}
35726PRESERVE_NONE
35727static bool Interp_InitThisFieldMemberPtr(InterpState &S, CodePtr &PC) {
35728 {
35729 CodePtr OpPC = PC;
35730 const auto V0 = ReadArg<uint32_t>(S, PC);
35731 if (!InitThisField<PT_MemberPtr>(S, OpPC, V0)) return false;
35732 }
35733#if USE_TAILCALLS
35734 MUSTTAIL return InterpNext(S, PC);
35735#else
35736 return true;
35737#endif
35738}
35739PRESERVE_NONE
35740static bool Interp_InitThisFieldFloat(InterpState &S, CodePtr &PC) {
35741 {
35742 CodePtr OpPC = PC;
35743 const auto V0 = ReadArg<uint32_t>(S, PC);
35744 if (!InitThisField<PT_Float>(S, OpPC, V0)) return false;
35745 }
35746#if USE_TAILCALLS
35747 MUSTTAIL return InterpNext(S, PC);
35748#else
35749 return true;
35750#endif
35751}
35752#endif
35753#ifdef GET_DISASM
35754case OP_InitThisFieldSint8:
35755 Text.Op = PrintName("InitThisFieldSint8");
35756 Text.Args.push_back(printArg<uint32_t>(P, PC));
35757 break;
35758case OP_InitThisFieldUint8:
35759 Text.Op = PrintName("InitThisFieldUint8");
35760 Text.Args.push_back(printArg<uint32_t>(P, PC));
35761 break;
35762case OP_InitThisFieldSint16:
35763 Text.Op = PrintName("InitThisFieldSint16");
35764 Text.Args.push_back(printArg<uint32_t>(P, PC));
35765 break;
35766case OP_InitThisFieldUint16:
35767 Text.Op = PrintName("InitThisFieldUint16");
35768 Text.Args.push_back(printArg<uint32_t>(P, PC));
35769 break;
35770case OP_InitThisFieldSint32:
35771 Text.Op = PrintName("InitThisFieldSint32");
35772 Text.Args.push_back(printArg<uint32_t>(P, PC));
35773 break;
35774case OP_InitThisFieldUint32:
35775 Text.Op = PrintName("InitThisFieldUint32");
35776 Text.Args.push_back(printArg<uint32_t>(P, PC));
35777 break;
35778case OP_InitThisFieldSint64:
35779 Text.Op = PrintName("InitThisFieldSint64");
35780 Text.Args.push_back(printArg<uint32_t>(P, PC));
35781 break;
35782case OP_InitThisFieldUint64:
35783 Text.Op = PrintName("InitThisFieldUint64");
35784 Text.Args.push_back(printArg<uint32_t>(P, PC));
35785 break;
35786case OP_InitThisFieldIntAP:
35787 Text.Op = PrintName("InitThisFieldIntAP");
35788 Text.Args.push_back(printArg<uint32_t>(P, PC));
35789 break;
35790case OP_InitThisFieldIntAPS:
35791 Text.Op = PrintName("InitThisFieldIntAPS");
35792 Text.Args.push_back(printArg<uint32_t>(P, PC));
35793 break;
35794case OP_InitThisFieldBool:
35795 Text.Op = PrintName("InitThisFieldBool");
35796 Text.Args.push_back(printArg<uint32_t>(P, PC));
35797 break;
35798case OP_InitThisFieldFixedPoint:
35799 Text.Op = PrintName("InitThisFieldFixedPoint");
35800 Text.Args.push_back(printArg<uint32_t>(P, PC));
35801 break;
35802case OP_InitThisFieldPtr:
35803 Text.Op = PrintName("InitThisFieldPtr");
35804 Text.Args.push_back(printArg<uint32_t>(P, PC));
35805 break;
35806case OP_InitThisFieldMemberPtr:
35807 Text.Op = PrintName("InitThisFieldMemberPtr");
35808 Text.Args.push_back(printArg<uint32_t>(P, PC));
35809 break;
35810case OP_InitThisFieldFloat:
35811 Text.Op = PrintName("InitThisFieldFloat");
35812 Text.Args.push_back(printArg<uint32_t>(P, PC));
35813 break;
35814#endif
35815#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35816bool emitInitThisFieldSint8( uint32_t , SourceInfo);
35817bool emitInitThisFieldUint8( uint32_t , SourceInfo);
35818bool emitInitThisFieldSint16( uint32_t , SourceInfo);
35819bool emitInitThisFieldUint16( uint32_t , SourceInfo);
35820bool emitInitThisFieldSint32( uint32_t , SourceInfo);
35821bool emitInitThisFieldUint32( uint32_t , SourceInfo);
35822bool emitInitThisFieldSint64( uint32_t , SourceInfo);
35823bool emitInitThisFieldUint64( uint32_t , SourceInfo);
35824bool emitInitThisFieldIntAP( uint32_t , SourceInfo);
35825bool emitInitThisFieldIntAPS( uint32_t , SourceInfo);
35826bool emitInitThisFieldBool( uint32_t , SourceInfo);
35827bool emitInitThisFieldFixedPoint( uint32_t , SourceInfo);
35828bool emitInitThisFieldPtr( uint32_t , SourceInfo);
35829bool emitInitThisFieldMemberPtr( uint32_t , SourceInfo);
35830bool emitInitThisFieldFloat( uint32_t , SourceInfo);
35831#endif
35832#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35833[[nodiscard]] bool emitInitThisField(PrimType, uint32_t, SourceInfo I);
35834#endif
35835#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
35836bool
35837#if defined(GET_EVAL_IMPL)
35838EvalEmitter
35839#else
35840ByteCodeEmitter
35841#endif
35842::emitInitThisField(PrimType T0, uint32_t A0, SourceInfo I) {
35843 switch (T0) {
35844 case PT_Sint8:
35845 return emitInitThisFieldSint8(A0, I);
35846 case PT_Uint8:
35847 return emitInitThisFieldUint8(A0, I);
35848 case PT_Sint16:
35849 return emitInitThisFieldSint16(A0, I);
35850 case PT_Uint16:
35851 return emitInitThisFieldUint16(A0, I);
35852 case PT_Sint32:
35853 return emitInitThisFieldSint32(A0, I);
35854 case PT_Uint32:
35855 return emitInitThisFieldUint32(A0, I);
35856 case PT_Sint64:
35857 return emitInitThisFieldSint64(A0, I);
35858 case PT_Uint64:
35859 return emitInitThisFieldUint64(A0, I);
35860 case PT_IntAP:
35861 return emitInitThisFieldIntAP(A0, I);
35862 case PT_IntAPS:
35863 return emitInitThisFieldIntAPS(A0, I);
35864 case PT_Bool:
35865 return emitInitThisFieldBool(A0, I);
35866 case PT_FixedPoint:
35867 return emitInitThisFieldFixedPoint(A0, I);
35868 case PT_Ptr:
35869 return emitInitThisFieldPtr(A0, I);
35870 case PT_MemberPtr:
35871 return emitInitThisFieldMemberPtr(A0, I);
35872 case PT_Float:
35873 return emitInitThisFieldFloat(A0, I);
35874 }
35875 llvm_unreachable("invalid enum value");
35876}
35877#endif
35878#ifdef GET_LINK_IMPL
35879bool ByteCodeEmitter::emitInitThisFieldSint8( uint32_t A0, SourceInfo L) {
35880 return emitOp<uint32_t>(OP_InitThisFieldSint8, A0, L);
35881}
35882bool ByteCodeEmitter::emitInitThisFieldUint8( uint32_t A0, SourceInfo L) {
35883 return emitOp<uint32_t>(OP_InitThisFieldUint8, A0, L);
35884}
35885bool ByteCodeEmitter::emitInitThisFieldSint16( uint32_t A0, SourceInfo L) {
35886 return emitOp<uint32_t>(OP_InitThisFieldSint16, A0, L);
35887}
35888bool ByteCodeEmitter::emitInitThisFieldUint16( uint32_t A0, SourceInfo L) {
35889 return emitOp<uint32_t>(OP_InitThisFieldUint16, A0, L);
35890}
35891bool ByteCodeEmitter::emitInitThisFieldSint32( uint32_t A0, SourceInfo L) {
35892 return emitOp<uint32_t>(OP_InitThisFieldSint32, A0, L);
35893}
35894bool ByteCodeEmitter::emitInitThisFieldUint32( uint32_t A0, SourceInfo L) {
35895 return emitOp<uint32_t>(OP_InitThisFieldUint32, A0, L);
35896}
35897bool ByteCodeEmitter::emitInitThisFieldSint64( uint32_t A0, SourceInfo L) {
35898 return emitOp<uint32_t>(OP_InitThisFieldSint64, A0, L);
35899}
35900bool ByteCodeEmitter::emitInitThisFieldUint64( uint32_t A0, SourceInfo L) {
35901 return emitOp<uint32_t>(OP_InitThisFieldUint64, A0, L);
35902}
35903bool ByteCodeEmitter::emitInitThisFieldIntAP( uint32_t A0, SourceInfo L) {
35904 return emitOp<uint32_t>(OP_InitThisFieldIntAP, A0, L);
35905}
35906bool ByteCodeEmitter::emitInitThisFieldIntAPS( uint32_t A0, SourceInfo L) {
35907 return emitOp<uint32_t>(OP_InitThisFieldIntAPS, A0, L);
35908}
35909bool ByteCodeEmitter::emitInitThisFieldBool( uint32_t A0, SourceInfo L) {
35910 return emitOp<uint32_t>(OP_InitThisFieldBool, A0, L);
35911}
35912bool ByteCodeEmitter::emitInitThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
35913 return emitOp<uint32_t>(OP_InitThisFieldFixedPoint, A0, L);
35914}
35915bool ByteCodeEmitter::emitInitThisFieldPtr( uint32_t A0, SourceInfo L) {
35916 return emitOp<uint32_t>(OP_InitThisFieldPtr, A0, L);
35917}
35918bool ByteCodeEmitter::emitInitThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
35919 return emitOp<uint32_t>(OP_InitThisFieldMemberPtr, A0, L);
35920}
35921bool ByteCodeEmitter::emitInitThisFieldFloat( uint32_t A0, SourceInfo L) {
35922 return emitOp<uint32_t>(OP_InitThisFieldFloat, A0, L);
35923}
35924#endif
35925#ifdef GET_EVAL_IMPL
35926bool EvalEmitter::emitInitThisFieldSint8( uint32_t A0, SourceInfo L) {
35927 if (!isActive()) return true;
35928 CurrentSource = L;
35929 return InitThisField<PT_Sint8>(S, OpPC, A0);
35930}
35931bool EvalEmitter::emitInitThisFieldUint8( uint32_t A0, SourceInfo L) {
35932 if (!isActive()) return true;
35933 CurrentSource = L;
35934 return InitThisField<PT_Uint8>(S, OpPC, A0);
35935}
35936bool EvalEmitter::emitInitThisFieldSint16( uint32_t A0, SourceInfo L) {
35937 if (!isActive()) return true;
35938 CurrentSource = L;
35939 return InitThisField<PT_Sint16>(S, OpPC, A0);
35940}
35941bool EvalEmitter::emitInitThisFieldUint16( uint32_t A0, SourceInfo L) {
35942 if (!isActive()) return true;
35943 CurrentSource = L;
35944 return InitThisField<PT_Uint16>(S, OpPC, A0);
35945}
35946bool EvalEmitter::emitInitThisFieldSint32( uint32_t A0, SourceInfo L) {
35947 if (!isActive()) return true;
35948 CurrentSource = L;
35949 return InitThisField<PT_Sint32>(S, OpPC, A0);
35950}
35951bool EvalEmitter::emitInitThisFieldUint32( uint32_t A0, SourceInfo L) {
35952 if (!isActive()) return true;
35953 CurrentSource = L;
35954 return InitThisField<PT_Uint32>(S, OpPC, A0);
35955}
35956bool EvalEmitter::emitInitThisFieldSint64( uint32_t A0, SourceInfo L) {
35957 if (!isActive()) return true;
35958 CurrentSource = L;
35959 return InitThisField<PT_Sint64>(S, OpPC, A0);
35960}
35961bool EvalEmitter::emitInitThisFieldUint64( uint32_t A0, SourceInfo L) {
35962 if (!isActive()) return true;
35963 CurrentSource = L;
35964 return InitThisField<PT_Uint64>(S, OpPC, A0);
35965}
35966bool EvalEmitter::emitInitThisFieldIntAP( uint32_t A0, SourceInfo L) {
35967 if (!isActive()) return true;
35968 CurrentSource = L;
35969 return InitThisField<PT_IntAP>(S, OpPC, A0);
35970}
35971bool EvalEmitter::emitInitThisFieldIntAPS( uint32_t A0, SourceInfo L) {
35972 if (!isActive()) return true;
35973 CurrentSource = L;
35974 return InitThisField<PT_IntAPS>(S, OpPC, A0);
35975}
35976bool EvalEmitter::emitInitThisFieldBool( uint32_t A0, SourceInfo L) {
35977 if (!isActive()) return true;
35978 CurrentSource = L;
35979 return InitThisField<PT_Bool>(S, OpPC, A0);
35980}
35981bool EvalEmitter::emitInitThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
35982 if (!isActive()) return true;
35983 CurrentSource = L;
35984 return InitThisField<PT_FixedPoint>(S, OpPC, A0);
35985}
35986bool EvalEmitter::emitInitThisFieldPtr( uint32_t A0, SourceInfo L) {
35987 if (!isActive()) return true;
35988 CurrentSource = L;
35989 return InitThisField<PT_Ptr>(S, OpPC, A0);
35990}
35991bool EvalEmitter::emitInitThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
35992 if (!isActive()) return true;
35993 CurrentSource = L;
35994 return InitThisField<PT_MemberPtr>(S, OpPC, A0);
35995}
35996bool EvalEmitter::emitInitThisFieldFloat( uint32_t A0, SourceInfo L) {
35997 if (!isActive()) return true;
35998 CurrentSource = L;
35999 return InitThisField<PT_Float>(S, OpPC, A0);
36000}
36001#endif
36002#ifdef GET_OPCODE_NAMES
36003OP_InitThisFieldActivateSint8,
36004OP_InitThisFieldActivateUint8,
36005OP_InitThisFieldActivateSint16,
36006OP_InitThisFieldActivateUint16,
36007OP_InitThisFieldActivateSint32,
36008OP_InitThisFieldActivateUint32,
36009OP_InitThisFieldActivateSint64,
36010OP_InitThisFieldActivateUint64,
36011OP_InitThisFieldActivateIntAP,
36012OP_InitThisFieldActivateIntAPS,
36013OP_InitThisFieldActivateBool,
36014OP_InitThisFieldActivateFixedPoint,
36015OP_InitThisFieldActivatePtr,
36016OP_InitThisFieldActivateMemberPtr,
36017OP_InitThisFieldActivateFloat,
36018#endif
36019#ifdef GET_INTERPFN_LIST
36020&Interp_InitThisFieldActivateSint8,
36021&Interp_InitThisFieldActivateUint8,
36022&Interp_InitThisFieldActivateSint16,
36023&Interp_InitThisFieldActivateUint16,
36024&Interp_InitThisFieldActivateSint32,
36025&Interp_InitThisFieldActivateUint32,
36026&Interp_InitThisFieldActivateSint64,
36027&Interp_InitThisFieldActivateUint64,
36028&Interp_InitThisFieldActivateIntAP,
36029&Interp_InitThisFieldActivateIntAPS,
36030&Interp_InitThisFieldActivateBool,
36031&Interp_InitThisFieldActivateFixedPoint,
36032&Interp_InitThisFieldActivatePtr,
36033&Interp_InitThisFieldActivateMemberPtr,
36034&Interp_InitThisFieldActivateFloat,
36035#endif
36036#ifdef GET_INTERPFN_DISPATCHERS
36037PRESERVE_NONE
36038static bool Interp_InitThisFieldActivateSint8(InterpState &S, CodePtr &PC) {
36039 {
36040 CodePtr OpPC = PC;
36041 const auto V0 = ReadArg<uint32_t>(S, PC);
36042 if (!InitThisFieldActivate<PT_Sint8>(S, OpPC, V0)) return false;
36043 }
36044#if USE_TAILCALLS
36045 MUSTTAIL return InterpNext(S, PC);
36046#else
36047 return true;
36048#endif
36049}
36050PRESERVE_NONE
36051static bool Interp_InitThisFieldActivateUint8(InterpState &S, CodePtr &PC) {
36052 {
36053 CodePtr OpPC = PC;
36054 const auto V0 = ReadArg<uint32_t>(S, PC);
36055 if (!InitThisFieldActivate<PT_Uint8>(S, OpPC, V0)) return false;
36056 }
36057#if USE_TAILCALLS
36058 MUSTTAIL return InterpNext(S, PC);
36059#else
36060 return true;
36061#endif
36062}
36063PRESERVE_NONE
36064static bool Interp_InitThisFieldActivateSint16(InterpState &S, CodePtr &PC) {
36065 {
36066 CodePtr OpPC = PC;
36067 const auto V0 = ReadArg<uint32_t>(S, PC);
36068 if (!InitThisFieldActivate<PT_Sint16>(S, OpPC, V0)) return false;
36069 }
36070#if USE_TAILCALLS
36071 MUSTTAIL return InterpNext(S, PC);
36072#else
36073 return true;
36074#endif
36075}
36076PRESERVE_NONE
36077static bool Interp_InitThisFieldActivateUint16(InterpState &S, CodePtr &PC) {
36078 {
36079 CodePtr OpPC = PC;
36080 const auto V0 = ReadArg<uint32_t>(S, PC);
36081 if (!InitThisFieldActivate<PT_Uint16>(S, OpPC, V0)) return false;
36082 }
36083#if USE_TAILCALLS
36084 MUSTTAIL return InterpNext(S, PC);
36085#else
36086 return true;
36087#endif
36088}
36089PRESERVE_NONE
36090static bool Interp_InitThisFieldActivateSint32(InterpState &S, CodePtr &PC) {
36091 {
36092 CodePtr OpPC = PC;
36093 const auto V0 = ReadArg<uint32_t>(S, PC);
36094 if (!InitThisFieldActivate<PT_Sint32>(S, OpPC, V0)) return false;
36095 }
36096#if USE_TAILCALLS
36097 MUSTTAIL return InterpNext(S, PC);
36098#else
36099 return true;
36100#endif
36101}
36102PRESERVE_NONE
36103static bool Interp_InitThisFieldActivateUint32(InterpState &S, CodePtr &PC) {
36104 {
36105 CodePtr OpPC = PC;
36106 const auto V0 = ReadArg<uint32_t>(S, PC);
36107 if (!InitThisFieldActivate<PT_Uint32>(S, OpPC, V0)) return false;
36108 }
36109#if USE_TAILCALLS
36110 MUSTTAIL return InterpNext(S, PC);
36111#else
36112 return true;
36113#endif
36114}
36115PRESERVE_NONE
36116static bool Interp_InitThisFieldActivateSint64(InterpState &S, CodePtr &PC) {
36117 {
36118 CodePtr OpPC = PC;
36119 const auto V0 = ReadArg<uint32_t>(S, PC);
36120 if (!InitThisFieldActivate<PT_Sint64>(S, OpPC, V0)) return false;
36121 }
36122#if USE_TAILCALLS
36123 MUSTTAIL return InterpNext(S, PC);
36124#else
36125 return true;
36126#endif
36127}
36128PRESERVE_NONE
36129static bool Interp_InitThisFieldActivateUint64(InterpState &S, CodePtr &PC) {
36130 {
36131 CodePtr OpPC = PC;
36132 const auto V0 = ReadArg<uint32_t>(S, PC);
36133 if (!InitThisFieldActivate<PT_Uint64>(S, OpPC, V0)) return false;
36134 }
36135#if USE_TAILCALLS
36136 MUSTTAIL return InterpNext(S, PC);
36137#else
36138 return true;
36139#endif
36140}
36141PRESERVE_NONE
36142static bool Interp_InitThisFieldActivateIntAP(InterpState &S, CodePtr &PC) {
36143 {
36144 CodePtr OpPC = PC;
36145 const auto V0 = ReadArg<uint32_t>(S, PC);
36146 if (!InitThisFieldActivate<PT_IntAP>(S, OpPC, V0)) return false;
36147 }
36148#if USE_TAILCALLS
36149 MUSTTAIL return InterpNext(S, PC);
36150#else
36151 return true;
36152#endif
36153}
36154PRESERVE_NONE
36155static bool Interp_InitThisFieldActivateIntAPS(InterpState &S, CodePtr &PC) {
36156 {
36157 CodePtr OpPC = PC;
36158 const auto V0 = ReadArg<uint32_t>(S, PC);
36159 if (!InitThisFieldActivate<PT_IntAPS>(S, OpPC, V0)) return false;
36160 }
36161#if USE_TAILCALLS
36162 MUSTTAIL return InterpNext(S, PC);
36163#else
36164 return true;
36165#endif
36166}
36167PRESERVE_NONE
36168static bool Interp_InitThisFieldActivateBool(InterpState &S, CodePtr &PC) {
36169 {
36170 CodePtr OpPC = PC;
36171 const auto V0 = ReadArg<uint32_t>(S, PC);
36172 if (!InitThisFieldActivate<PT_Bool>(S, OpPC, V0)) return false;
36173 }
36174#if USE_TAILCALLS
36175 MUSTTAIL return InterpNext(S, PC);
36176#else
36177 return true;
36178#endif
36179}
36180PRESERVE_NONE
36181static bool Interp_InitThisFieldActivateFixedPoint(InterpState &S, CodePtr &PC) {
36182 {
36183 CodePtr OpPC = PC;
36184 const auto V0 = ReadArg<uint32_t>(S, PC);
36185 if (!InitThisFieldActivate<PT_FixedPoint>(S, OpPC, V0)) return false;
36186 }
36187#if USE_TAILCALLS
36188 MUSTTAIL return InterpNext(S, PC);
36189#else
36190 return true;
36191#endif
36192}
36193PRESERVE_NONE
36194static bool Interp_InitThisFieldActivatePtr(InterpState &S, CodePtr &PC) {
36195 {
36196 CodePtr OpPC = PC;
36197 const auto V0 = ReadArg<uint32_t>(S, PC);
36198 if (!InitThisFieldActivate<PT_Ptr>(S, OpPC, V0)) return false;
36199 }
36200#if USE_TAILCALLS
36201 MUSTTAIL return InterpNext(S, PC);
36202#else
36203 return true;
36204#endif
36205}
36206PRESERVE_NONE
36207static bool Interp_InitThisFieldActivateMemberPtr(InterpState &S, CodePtr &PC) {
36208 {
36209 CodePtr OpPC = PC;
36210 const auto V0 = ReadArg<uint32_t>(S, PC);
36211 if (!InitThisFieldActivate<PT_MemberPtr>(S, OpPC, V0)) return false;
36212 }
36213#if USE_TAILCALLS
36214 MUSTTAIL return InterpNext(S, PC);
36215#else
36216 return true;
36217#endif
36218}
36219PRESERVE_NONE
36220static bool Interp_InitThisFieldActivateFloat(InterpState &S, CodePtr &PC) {
36221 {
36222 CodePtr OpPC = PC;
36223 const auto V0 = ReadArg<uint32_t>(S, PC);
36224 if (!InitThisFieldActivate<PT_Float>(S, OpPC, V0)) return false;
36225 }
36226#if USE_TAILCALLS
36227 MUSTTAIL return InterpNext(S, PC);
36228#else
36229 return true;
36230#endif
36231}
36232#endif
36233#ifdef GET_DISASM
36234case OP_InitThisFieldActivateSint8:
36235 Text.Op = PrintName("InitThisFieldActivateSint8");
36236 Text.Args.push_back(printArg<uint32_t>(P, PC));
36237 break;
36238case OP_InitThisFieldActivateUint8:
36239 Text.Op = PrintName("InitThisFieldActivateUint8");
36240 Text.Args.push_back(printArg<uint32_t>(P, PC));
36241 break;
36242case OP_InitThisFieldActivateSint16:
36243 Text.Op = PrintName("InitThisFieldActivateSint16");
36244 Text.Args.push_back(printArg<uint32_t>(P, PC));
36245 break;
36246case OP_InitThisFieldActivateUint16:
36247 Text.Op = PrintName("InitThisFieldActivateUint16");
36248 Text.Args.push_back(printArg<uint32_t>(P, PC));
36249 break;
36250case OP_InitThisFieldActivateSint32:
36251 Text.Op = PrintName("InitThisFieldActivateSint32");
36252 Text.Args.push_back(printArg<uint32_t>(P, PC));
36253 break;
36254case OP_InitThisFieldActivateUint32:
36255 Text.Op = PrintName("InitThisFieldActivateUint32");
36256 Text.Args.push_back(printArg<uint32_t>(P, PC));
36257 break;
36258case OP_InitThisFieldActivateSint64:
36259 Text.Op = PrintName("InitThisFieldActivateSint64");
36260 Text.Args.push_back(printArg<uint32_t>(P, PC));
36261 break;
36262case OP_InitThisFieldActivateUint64:
36263 Text.Op = PrintName("InitThisFieldActivateUint64");
36264 Text.Args.push_back(printArg<uint32_t>(P, PC));
36265 break;
36266case OP_InitThisFieldActivateIntAP:
36267 Text.Op = PrintName("InitThisFieldActivateIntAP");
36268 Text.Args.push_back(printArg<uint32_t>(P, PC));
36269 break;
36270case OP_InitThisFieldActivateIntAPS:
36271 Text.Op = PrintName("InitThisFieldActivateIntAPS");
36272 Text.Args.push_back(printArg<uint32_t>(P, PC));
36273 break;
36274case OP_InitThisFieldActivateBool:
36275 Text.Op = PrintName("InitThisFieldActivateBool");
36276 Text.Args.push_back(printArg<uint32_t>(P, PC));
36277 break;
36278case OP_InitThisFieldActivateFixedPoint:
36279 Text.Op = PrintName("InitThisFieldActivateFixedPoint");
36280 Text.Args.push_back(printArg<uint32_t>(P, PC));
36281 break;
36282case OP_InitThisFieldActivatePtr:
36283 Text.Op = PrintName("InitThisFieldActivatePtr");
36284 Text.Args.push_back(printArg<uint32_t>(P, PC));
36285 break;
36286case OP_InitThisFieldActivateMemberPtr:
36287 Text.Op = PrintName("InitThisFieldActivateMemberPtr");
36288 Text.Args.push_back(printArg<uint32_t>(P, PC));
36289 break;
36290case OP_InitThisFieldActivateFloat:
36291 Text.Op = PrintName("InitThisFieldActivateFloat");
36292 Text.Args.push_back(printArg<uint32_t>(P, PC));
36293 break;
36294#endif
36295#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36296bool emitInitThisFieldActivateSint8( uint32_t , SourceInfo);
36297bool emitInitThisFieldActivateUint8( uint32_t , SourceInfo);
36298bool emitInitThisFieldActivateSint16( uint32_t , SourceInfo);
36299bool emitInitThisFieldActivateUint16( uint32_t , SourceInfo);
36300bool emitInitThisFieldActivateSint32( uint32_t , SourceInfo);
36301bool emitInitThisFieldActivateUint32( uint32_t , SourceInfo);
36302bool emitInitThisFieldActivateSint64( uint32_t , SourceInfo);
36303bool emitInitThisFieldActivateUint64( uint32_t , SourceInfo);
36304bool emitInitThisFieldActivateIntAP( uint32_t , SourceInfo);
36305bool emitInitThisFieldActivateIntAPS( uint32_t , SourceInfo);
36306bool emitInitThisFieldActivateBool( uint32_t , SourceInfo);
36307bool emitInitThisFieldActivateFixedPoint( uint32_t , SourceInfo);
36308bool emitInitThisFieldActivatePtr( uint32_t , SourceInfo);
36309bool emitInitThisFieldActivateMemberPtr( uint32_t , SourceInfo);
36310bool emitInitThisFieldActivateFloat( uint32_t , SourceInfo);
36311#endif
36312#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36313[[nodiscard]] bool emitInitThisFieldActivate(PrimType, uint32_t, SourceInfo I);
36314#endif
36315#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
36316bool
36317#if defined(GET_EVAL_IMPL)
36318EvalEmitter
36319#else
36320ByteCodeEmitter
36321#endif
36322::emitInitThisFieldActivate(PrimType T0, uint32_t A0, SourceInfo I) {
36323 switch (T0) {
36324 case PT_Sint8:
36325 return emitInitThisFieldActivateSint8(A0, I);
36326 case PT_Uint8:
36327 return emitInitThisFieldActivateUint8(A0, I);
36328 case PT_Sint16:
36329 return emitInitThisFieldActivateSint16(A0, I);
36330 case PT_Uint16:
36331 return emitInitThisFieldActivateUint16(A0, I);
36332 case PT_Sint32:
36333 return emitInitThisFieldActivateSint32(A0, I);
36334 case PT_Uint32:
36335 return emitInitThisFieldActivateUint32(A0, I);
36336 case PT_Sint64:
36337 return emitInitThisFieldActivateSint64(A0, I);
36338 case PT_Uint64:
36339 return emitInitThisFieldActivateUint64(A0, I);
36340 case PT_IntAP:
36341 return emitInitThisFieldActivateIntAP(A0, I);
36342 case PT_IntAPS:
36343 return emitInitThisFieldActivateIntAPS(A0, I);
36344 case PT_Bool:
36345 return emitInitThisFieldActivateBool(A0, I);
36346 case PT_FixedPoint:
36347 return emitInitThisFieldActivateFixedPoint(A0, I);
36348 case PT_Ptr:
36349 return emitInitThisFieldActivatePtr(A0, I);
36350 case PT_MemberPtr:
36351 return emitInitThisFieldActivateMemberPtr(A0, I);
36352 case PT_Float:
36353 return emitInitThisFieldActivateFloat(A0, I);
36354 }
36355 llvm_unreachable("invalid enum value");
36356}
36357#endif
36358#ifdef GET_LINK_IMPL
36359bool ByteCodeEmitter::emitInitThisFieldActivateSint8( uint32_t A0, SourceInfo L) {
36360 return emitOp<uint32_t>(OP_InitThisFieldActivateSint8, A0, L);
36361}
36362bool ByteCodeEmitter::emitInitThisFieldActivateUint8( uint32_t A0, SourceInfo L) {
36363 return emitOp<uint32_t>(OP_InitThisFieldActivateUint8, A0, L);
36364}
36365bool ByteCodeEmitter::emitInitThisFieldActivateSint16( uint32_t A0, SourceInfo L) {
36366 return emitOp<uint32_t>(OP_InitThisFieldActivateSint16, A0, L);
36367}
36368bool ByteCodeEmitter::emitInitThisFieldActivateUint16( uint32_t A0, SourceInfo L) {
36369 return emitOp<uint32_t>(OP_InitThisFieldActivateUint16, A0, L);
36370}
36371bool ByteCodeEmitter::emitInitThisFieldActivateSint32( uint32_t A0, SourceInfo L) {
36372 return emitOp<uint32_t>(OP_InitThisFieldActivateSint32, A0, L);
36373}
36374bool ByteCodeEmitter::emitInitThisFieldActivateUint32( uint32_t A0, SourceInfo L) {
36375 return emitOp<uint32_t>(OP_InitThisFieldActivateUint32, A0, L);
36376}
36377bool ByteCodeEmitter::emitInitThisFieldActivateSint64( uint32_t A0, SourceInfo L) {
36378 return emitOp<uint32_t>(OP_InitThisFieldActivateSint64, A0, L);
36379}
36380bool ByteCodeEmitter::emitInitThisFieldActivateUint64( uint32_t A0, SourceInfo L) {
36381 return emitOp<uint32_t>(OP_InitThisFieldActivateUint64, A0, L);
36382}
36383bool ByteCodeEmitter::emitInitThisFieldActivateIntAP( uint32_t A0, SourceInfo L) {
36384 return emitOp<uint32_t>(OP_InitThisFieldActivateIntAP, A0, L);
36385}
36386bool ByteCodeEmitter::emitInitThisFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
36387 return emitOp<uint32_t>(OP_InitThisFieldActivateIntAPS, A0, L);
36388}
36389bool ByteCodeEmitter::emitInitThisFieldActivateBool( uint32_t A0, SourceInfo L) {
36390 return emitOp<uint32_t>(OP_InitThisFieldActivateBool, A0, L);
36391}
36392bool ByteCodeEmitter::emitInitThisFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
36393 return emitOp<uint32_t>(OP_InitThisFieldActivateFixedPoint, A0, L);
36394}
36395bool ByteCodeEmitter::emitInitThisFieldActivatePtr( uint32_t A0, SourceInfo L) {
36396 return emitOp<uint32_t>(OP_InitThisFieldActivatePtr, A0, L);
36397}
36398bool ByteCodeEmitter::emitInitThisFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
36399 return emitOp<uint32_t>(OP_InitThisFieldActivateMemberPtr, A0, L);
36400}
36401bool ByteCodeEmitter::emitInitThisFieldActivateFloat( uint32_t A0, SourceInfo L) {
36402 return emitOp<uint32_t>(OP_InitThisFieldActivateFloat, A0, L);
36403}
36404#endif
36405#ifdef GET_EVAL_IMPL
36406bool EvalEmitter::emitInitThisFieldActivateSint8( uint32_t A0, SourceInfo L) {
36407 if (!isActive()) return true;
36408 CurrentSource = L;
36409 return InitThisFieldActivate<PT_Sint8>(S, OpPC, A0);
36410}
36411bool EvalEmitter::emitInitThisFieldActivateUint8( uint32_t A0, SourceInfo L) {
36412 if (!isActive()) return true;
36413 CurrentSource = L;
36414 return InitThisFieldActivate<PT_Uint8>(S, OpPC, A0);
36415}
36416bool EvalEmitter::emitInitThisFieldActivateSint16( uint32_t A0, SourceInfo L) {
36417 if (!isActive()) return true;
36418 CurrentSource = L;
36419 return InitThisFieldActivate<PT_Sint16>(S, OpPC, A0);
36420}
36421bool EvalEmitter::emitInitThisFieldActivateUint16( uint32_t A0, SourceInfo L) {
36422 if (!isActive()) return true;
36423 CurrentSource = L;
36424 return InitThisFieldActivate<PT_Uint16>(S, OpPC, A0);
36425}
36426bool EvalEmitter::emitInitThisFieldActivateSint32( uint32_t A0, SourceInfo L) {
36427 if (!isActive()) return true;
36428 CurrentSource = L;
36429 return InitThisFieldActivate<PT_Sint32>(S, OpPC, A0);
36430}
36431bool EvalEmitter::emitInitThisFieldActivateUint32( uint32_t A0, SourceInfo L) {
36432 if (!isActive()) return true;
36433 CurrentSource = L;
36434 return InitThisFieldActivate<PT_Uint32>(S, OpPC, A0);
36435}
36436bool EvalEmitter::emitInitThisFieldActivateSint64( uint32_t A0, SourceInfo L) {
36437 if (!isActive()) return true;
36438 CurrentSource = L;
36439 return InitThisFieldActivate<PT_Sint64>(S, OpPC, A0);
36440}
36441bool EvalEmitter::emitInitThisFieldActivateUint64( uint32_t A0, SourceInfo L) {
36442 if (!isActive()) return true;
36443 CurrentSource = L;
36444 return InitThisFieldActivate<PT_Uint64>(S, OpPC, A0);
36445}
36446bool EvalEmitter::emitInitThisFieldActivateIntAP( uint32_t A0, SourceInfo L) {
36447 if (!isActive()) return true;
36448 CurrentSource = L;
36449 return InitThisFieldActivate<PT_IntAP>(S, OpPC, A0);
36450}
36451bool EvalEmitter::emitInitThisFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
36452 if (!isActive()) return true;
36453 CurrentSource = L;
36454 return InitThisFieldActivate<PT_IntAPS>(S, OpPC, A0);
36455}
36456bool EvalEmitter::emitInitThisFieldActivateBool( uint32_t A0, SourceInfo L) {
36457 if (!isActive()) return true;
36458 CurrentSource = L;
36459 return InitThisFieldActivate<PT_Bool>(S, OpPC, A0);
36460}
36461bool EvalEmitter::emitInitThisFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
36462 if (!isActive()) return true;
36463 CurrentSource = L;
36464 return InitThisFieldActivate<PT_FixedPoint>(S, OpPC, A0);
36465}
36466bool EvalEmitter::emitInitThisFieldActivatePtr( uint32_t A0, SourceInfo L) {
36467 if (!isActive()) return true;
36468 CurrentSource = L;
36469 return InitThisFieldActivate<PT_Ptr>(S, OpPC, A0);
36470}
36471bool EvalEmitter::emitInitThisFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
36472 if (!isActive()) return true;
36473 CurrentSource = L;
36474 return InitThisFieldActivate<PT_MemberPtr>(S, OpPC, A0);
36475}
36476bool EvalEmitter::emitInitThisFieldActivateFloat( uint32_t A0, SourceInfo L) {
36477 if (!isActive()) return true;
36478 CurrentSource = L;
36479 return InitThisFieldActivate<PT_Float>(S, OpPC, A0);
36480}
36481#endif
36482#ifdef GET_OPCODE_NAMES
36483OP_Inv,
36484#endif
36485#ifdef GET_INTERPFN_LIST
36486&Interp_Inv,
36487#endif
36488#ifdef GET_INTERPFN_DISPATCHERS
36489PRESERVE_NONE
36490static bool Interp_Inv(InterpState &S, CodePtr &PC) {
36491 if (!Inv(S, PC)) return false;
36492#if USE_TAILCALLS
36493 MUSTTAIL return InterpNext(S, PC);
36494#else
36495 return true;
36496#endif
36497}
36498#endif
36499#ifdef GET_DISASM
36500case OP_Inv:
36501 Text.Op = PrintName("Inv");
36502 break;
36503#endif
36504#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36505bool emitInv(SourceInfo);
36506#endif
36507#ifdef GET_LINK_IMPL
36508bool ByteCodeEmitter::emitInv(SourceInfo L) {
36509 return emitOp<>(OP_Inv, L);
36510}
36511#endif
36512#ifdef GET_EVAL_IMPL
36513bool EvalEmitter::emitInv(SourceInfo L) {
36514 if (!isActive()) return true;
36515 CurrentSource = L;
36516 return Inv(S, OpPC);
36517}
36518#endif
36519#ifdef GET_OPCODE_NAMES
36520OP_Invalid,
36521#endif
36522#ifdef GET_INTERPFN_LIST
36523&Interp_Invalid,
36524#endif
36525#ifdef GET_INTERPFN_DISPATCHERS
36526PRESERVE_NONE
36527static bool Interp_Invalid(InterpState &S, CodePtr &PC) {
36528 if (!Invalid(S, PC)) return false;
36529#if USE_TAILCALLS
36530 MUSTTAIL return InterpNext(S, PC);
36531#else
36532 return true;
36533#endif
36534}
36535#endif
36536#ifdef GET_DISASM
36537case OP_Invalid:
36538 Text.Op = PrintName("Invalid");
36539 break;
36540#endif
36541#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36542bool emitInvalid(SourceInfo);
36543#endif
36544#ifdef GET_LINK_IMPL
36545bool ByteCodeEmitter::emitInvalid(SourceInfo L) {
36546 return emitOp<>(OP_Invalid, L);
36547}
36548#endif
36549#ifdef GET_EVAL_IMPL
36550bool EvalEmitter::emitInvalid(SourceInfo L) {
36551 if (!isActive()) return true;
36552 CurrentSource = L;
36553 return Invalid(S, OpPC);
36554}
36555#endif
36556#ifdef GET_OPCODE_NAMES
36557OP_InvalidCast,
36558#endif
36559#ifdef GET_INTERPFN_LIST
36560&Interp_InvalidCast,
36561#endif
36562#ifdef GET_INTERPFN_DISPATCHERS
36563PRESERVE_NONE
36564static bool Interp_InvalidCast(InterpState &S, CodePtr &PC) {
36565 {
36566 CodePtr OpPC = PC;
36567 const auto V0 = ReadArg<interp::CastKind>(S, PC);
36568 const auto V1 = ReadArg<bool>(S, PC);
36569 if (!InvalidCast(S, OpPC, V0, V1)) return false;
36570 }
36571#if USE_TAILCALLS
36572 MUSTTAIL return InterpNext(S, PC);
36573#else
36574 return true;
36575#endif
36576}
36577#endif
36578#ifdef GET_DISASM
36579case OP_InvalidCast:
36580 Text.Op = PrintName("InvalidCast");
36581 Text.Args.push_back(printArg<interp::CastKind>(P, PC));
36582 Text.Args.push_back(printArg<bool>(P, PC));
36583 break;
36584#endif
36585#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36586bool emitInvalidCast( interp::CastKind , bool , SourceInfo);
36587#endif
36588#ifdef GET_LINK_IMPL
36589bool ByteCodeEmitter::emitInvalidCast( interp::CastKind A0, bool A1, SourceInfo L) {
36590 return emitOp<interp::CastKind, bool>(OP_InvalidCast, A0, A1, L);
36591}
36592#endif
36593#ifdef GET_EVAL_IMPL
36594bool EvalEmitter::emitInvalidCast( interp::CastKind A0, bool A1, SourceInfo L) {
36595 if (!isActive()) return true;
36596 CurrentSource = L;
36597 return InvalidCast(S, OpPC, A0, A1);
36598}
36599#endif
36600#ifdef GET_OPCODE_NAMES
36601OP_InvalidDeclRef,
36602#endif
36603#ifdef GET_INTERPFN_LIST
36604&Interp_InvalidDeclRef,
36605#endif
36606#ifdef GET_INTERPFN_DISPATCHERS
36607PRESERVE_NONE
36608static bool Interp_InvalidDeclRef(InterpState &S, CodePtr &PC) {
36609 {
36610 CodePtr OpPC = PC;
36611 const auto V0 = ReadArg<const DeclRefExpr *>(S, PC);
36612 const auto V1 = ReadArg<bool>(S, PC);
36613 if (!InvalidDeclRef(S, OpPC, V0, V1)) return false;
36614 }
36615#if USE_TAILCALLS
36616 MUSTTAIL return InterpNext(S, PC);
36617#else
36618 return true;
36619#endif
36620}
36621#endif
36622#ifdef GET_DISASM
36623case OP_InvalidDeclRef:
36624 Text.Op = PrintName("InvalidDeclRef");
36625 Text.Args.push_back(printArg<const DeclRefExpr *>(P, PC));
36626 Text.Args.push_back(printArg<bool>(P, PC));
36627 break;
36628#endif
36629#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36630bool emitInvalidDeclRef( const DeclRefExpr * , bool , SourceInfo);
36631#endif
36632#ifdef GET_LINK_IMPL
36633bool ByteCodeEmitter::emitInvalidDeclRef( const DeclRefExpr * A0, bool A1, SourceInfo L) {
36634 return emitOp<const DeclRefExpr *, bool>(OP_InvalidDeclRef, A0, A1, L);
36635}
36636#endif
36637#ifdef GET_EVAL_IMPL
36638bool EvalEmitter::emitInvalidDeclRef( const DeclRefExpr * A0, bool A1, SourceInfo L) {
36639 if (!isActive()) return true;
36640 CurrentSource = L;
36641 return InvalidDeclRef(S, OpPC, A0, A1);
36642}
36643#endif
36644#ifdef GET_OPCODE_NAMES
36645OP_InvalidNewDeleteExpr,
36646#endif
36647#ifdef GET_INTERPFN_LIST
36648&Interp_InvalidNewDeleteExpr,
36649#endif
36650#ifdef GET_INTERPFN_DISPATCHERS
36651PRESERVE_NONE
36652static bool Interp_InvalidNewDeleteExpr(InterpState &S, CodePtr &PC) {
36653 {
36654 CodePtr OpPC = PC;
36655 const auto V0 = ReadArg<const Expr *>(S, PC);
36656 if (!InvalidNewDeleteExpr(S, OpPC, V0)) return false;
36657 }
36658#if USE_TAILCALLS
36659 MUSTTAIL return InterpNext(S, PC);
36660#else
36661 return true;
36662#endif
36663}
36664#endif
36665#ifdef GET_DISASM
36666case OP_InvalidNewDeleteExpr:
36667 Text.Op = PrintName("InvalidNewDeleteExpr");
36668 Text.Args.push_back(printArg<const Expr *>(P, PC));
36669 break;
36670#endif
36671#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36672bool emitInvalidNewDeleteExpr( const Expr * , SourceInfo);
36673#endif
36674#ifdef GET_LINK_IMPL
36675bool ByteCodeEmitter::emitInvalidNewDeleteExpr( const Expr * A0, SourceInfo L) {
36676 return emitOp<const Expr *>(OP_InvalidNewDeleteExpr, A0, L);
36677}
36678#endif
36679#ifdef GET_EVAL_IMPL
36680bool EvalEmitter::emitInvalidNewDeleteExpr( const Expr * A0, SourceInfo L) {
36681 if (!isActive()) return true;
36682 CurrentSource = L;
36683 return InvalidNewDeleteExpr(S, OpPC, A0);
36684}
36685#endif
36686#ifdef GET_OPCODE_NAMES
36687OP_InvalidShuffleVectorIndex,
36688#endif
36689#ifdef GET_INTERPFN_LIST
36690&Interp_InvalidShuffleVectorIndex,
36691#endif
36692#ifdef GET_INTERPFN_DISPATCHERS
36693PRESERVE_NONE
36694static bool Interp_InvalidShuffleVectorIndex(InterpState &S, CodePtr &PC) {
36695 {
36696 CodePtr OpPC = PC;
36697 const auto V0 = ReadArg<uint32_t>(S, PC);
36698 if (!InvalidShuffleVectorIndex(S, OpPC, V0)) return false;
36699 }
36700#if USE_TAILCALLS
36701 MUSTTAIL return InterpNext(S, PC);
36702#else
36703 return true;
36704#endif
36705}
36706#endif
36707#ifdef GET_DISASM
36708case OP_InvalidShuffleVectorIndex:
36709 Text.Op = PrintName("InvalidShuffleVectorIndex");
36710 Text.Args.push_back(printArg<uint32_t>(P, PC));
36711 break;
36712#endif
36713#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36714bool emitInvalidShuffleVectorIndex( uint32_t , SourceInfo);
36715#endif
36716#ifdef GET_LINK_IMPL
36717bool ByteCodeEmitter::emitInvalidShuffleVectorIndex( uint32_t A0, SourceInfo L) {
36718 return emitOp<uint32_t>(OP_InvalidShuffleVectorIndex, A0, L);
36719}
36720#endif
36721#ifdef GET_EVAL_IMPL
36722bool EvalEmitter::emitInvalidShuffleVectorIndex( uint32_t A0, SourceInfo L) {
36723 if (!isActive()) return true;
36724 CurrentSource = L;
36725 return InvalidShuffleVectorIndex(S, OpPC, A0);
36726}
36727#endif
36728#ifdef GET_OPCODE_NAMES
36729OP_InvalidStore,
36730#endif
36731#ifdef GET_INTERPFN_LIST
36732&Interp_InvalidStore,
36733#endif
36734#ifdef GET_INTERPFN_DISPATCHERS
36735PRESERVE_NONE
36736static bool Interp_InvalidStore(InterpState &S, CodePtr &PC) {
36737 {
36738 CodePtr OpPC = PC;
36739 const auto V0 = ReadArg<const Type *>(S, PC);
36740 if (!InvalidStore(S, OpPC, V0)) return false;
36741 }
36742#if USE_TAILCALLS
36743 MUSTTAIL return InterpNext(S, PC);
36744#else
36745 return true;
36746#endif
36747}
36748#endif
36749#ifdef GET_DISASM
36750case OP_InvalidStore:
36751 Text.Op = PrintName("InvalidStore");
36752 Text.Args.push_back(printArg<const Type *>(P, PC));
36753 break;
36754#endif
36755#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36756bool emitInvalidStore( const Type * , SourceInfo);
36757#endif
36758#ifdef GET_LINK_IMPL
36759bool ByteCodeEmitter::emitInvalidStore( const Type * A0, SourceInfo L) {
36760 return emitOp<const Type *>(OP_InvalidStore, A0, L);
36761}
36762#endif
36763#ifdef GET_EVAL_IMPL
36764bool EvalEmitter::emitInvalidStore( const Type * A0, SourceInfo L) {
36765 if (!isActive()) return true;
36766 CurrentSource = L;
36767 return InvalidStore(S, OpPC, A0);
36768}
36769#endif
36770#ifdef GET_OPCODE_NAMES
36771OP_IsConstantContext,
36772#endif
36773#ifdef GET_INTERPFN_LIST
36774&Interp_IsConstantContext,
36775#endif
36776#ifdef GET_INTERPFN_DISPATCHERS
36777PRESERVE_NONE
36778static bool Interp_IsConstantContext(InterpState &S, CodePtr &PC) {
36779 if (!IsConstantContext(S, PC)) return false;
36780#if USE_TAILCALLS
36781 MUSTTAIL return InterpNext(S, PC);
36782#else
36783 return true;
36784#endif
36785}
36786#endif
36787#ifdef GET_DISASM
36788case OP_IsConstantContext:
36789 Text.Op = PrintName("IsConstantContext");
36790 break;
36791#endif
36792#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36793bool emitIsConstantContext(SourceInfo);
36794#endif
36795#ifdef GET_LINK_IMPL
36796bool ByteCodeEmitter::emitIsConstantContext(SourceInfo L) {
36797 return emitOp<>(OP_IsConstantContext, L);
36798}
36799#endif
36800#ifdef GET_EVAL_IMPL
36801bool EvalEmitter::emitIsConstantContext(SourceInfo L) {
36802 if (!isActive()) return true;
36803 CurrentSource = L;
36804 return IsConstantContext(S, OpPC);
36805}
36806#endif
36807#ifdef GET_OPCODE_NAMES
36808OP_IsNonNullPtr,
36809OP_IsNonNullMemberPtr,
36810#endif
36811#ifdef GET_INTERPFN_LIST
36812&Interp_IsNonNullPtr,
36813&Interp_IsNonNullMemberPtr,
36814#endif
36815#ifdef GET_INTERPFN_DISPATCHERS
36816PRESERVE_NONE
36817static bool Interp_IsNonNullPtr(InterpState &S, CodePtr &PC) {
36818 if (!IsNonNull<PT_Ptr>(S, PC)) return false;
36819#if USE_TAILCALLS
36820 MUSTTAIL return InterpNext(S, PC);
36821#else
36822 return true;
36823#endif
36824}
36825PRESERVE_NONE
36826static bool Interp_IsNonNullMemberPtr(InterpState &S, CodePtr &PC) {
36827 if (!IsNonNull<PT_MemberPtr>(S, PC)) return false;
36828#if USE_TAILCALLS
36829 MUSTTAIL return InterpNext(S, PC);
36830#else
36831 return true;
36832#endif
36833}
36834#endif
36835#ifdef GET_DISASM
36836case OP_IsNonNullPtr:
36837 Text.Op = PrintName("IsNonNullPtr");
36838 break;
36839case OP_IsNonNullMemberPtr:
36840 Text.Op = PrintName("IsNonNullMemberPtr");
36841 break;
36842#endif
36843#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36844bool emitIsNonNullPtr(SourceInfo);
36845bool emitIsNonNullMemberPtr(SourceInfo);
36846#endif
36847#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36848[[nodiscard]] bool emitIsNonNull(PrimType, SourceInfo I);
36849#endif
36850#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
36851bool
36852#if defined(GET_EVAL_IMPL)
36853EvalEmitter
36854#else
36855ByteCodeEmitter
36856#endif
36857::emitIsNonNull(PrimType T0, SourceInfo I) {
36858 switch (T0) {
36859 case PT_Ptr:
36860 return emitIsNonNullPtr(I);
36861 case PT_MemberPtr:
36862 return emitIsNonNullMemberPtr(I);
36863 default: llvm_unreachable("invalid type: emitIsNonNull");
36864 }
36865 llvm_unreachable("invalid enum value");
36866}
36867#endif
36868#ifdef GET_LINK_IMPL
36869bool ByteCodeEmitter::emitIsNonNullPtr(SourceInfo L) {
36870 return emitOp<>(OP_IsNonNullPtr, L);
36871}
36872bool ByteCodeEmitter::emitIsNonNullMemberPtr(SourceInfo L) {
36873 return emitOp<>(OP_IsNonNullMemberPtr, L);
36874}
36875#endif
36876#ifdef GET_EVAL_IMPL
36877bool EvalEmitter::emitIsNonNullPtr(SourceInfo L) {
36878 if (!isActive()) return true;
36879 CurrentSource = L;
36880 return IsNonNull<PT_Ptr>(S, OpPC);
36881}
36882bool EvalEmitter::emitIsNonNullMemberPtr(SourceInfo L) {
36883 if (!isActive()) return true;
36884 CurrentSource = L;
36885 return IsNonNull<PT_MemberPtr>(S, OpPC);
36886}
36887#endif
36888#ifdef GET_OPCODE_NAMES
36889OP_Jf,
36890#endif
36891#ifdef GET_INTERPFN_LIST
36892&Interp_Jf,
36893#endif
36894#ifdef GET_INTERPFN_DISPATCHERS
36895PRESERVE_NONE
36896static bool Interp_Jf(InterpState &S, CodePtr &PC) {
36897 {
36898 const auto V0 = ReadArg<int32_t>(S, PC);
36899 if (!Jf(S, PC, V0)) return false;
36900 }
36901#if USE_TAILCALLS
36902 MUSTTAIL return InterpNext(S, PC);
36903#else
36904 return true;
36905#endif
36906}
36907#endif
36908#ifdef GET_DISASM
36909case OP_Jf:
36910 Text.Op = PrintName("Jf");
36911 Text.Args.push_back(printArg<int32_t>(P, PC));
36912 break;
36913#endif
36914#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36915bool emitJf( int32_t , SourceInfo);
36916#endif
36917#ifdef GET_LINK_IMPL
36918bool ByteCodeEmitter::emitJf( int32_t A0, SourceInfo L) {
36919 return emitOp<int32_t>(OP_Jf, A0, L);
36920}
36921#endif
36922#ifdef GET_OPCODE_NAMES
36923OP_Jmp,
36924#endif
36925#ifdef GET_INTERPFN_LIST
36926&Interp_Jmp,
36927#endif
36928#ifdef GET_INTERPFN_DISPATCHERS
36929PRESERVE_NONE
36930static bool Interp_Jmp(InterpState &S, CodePtr &PC) {
36931 {
36932 const auto V0 = ReadArg<int32_t>(S, PC);
36933 if (!Jmp(S, PC, V0)) return false;
36934 }
36935#if USE_TAILCALLS
36936 MUSTTAIL return InterpNext(S, PC);
36937#else
36938 return true;
36939#endif
36940}
36941#endif
36942#ifdef GET_DISASM
36943case OP_Jmp:
36944 Text.Op = PrintName("Jmp");
36945 Text.Args.push_back(printArg<int32_t>(P, PC));
36946 break;
36947#endif
36948#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36949bool emitJmp( int32_t , SourceInfo);
36950#endif
36951#ifdef GET_LINK_IMPL
36952bool ByteCodeEmitter::emitJmp( int32_t A0, SourceInfo L) {
36953 return emitOp<int32_t>(OP_Jmp, A0, L);
36954}
36955#endif
36956#ifdef GET_OPCODE_NAMES
36957OP_Jt,
36958#endif
36959#ifdef GET_INTERPFN_LIST
36960&Interp_Jt,
36961#endif
36962#ifdef GET_INTERPFN_DISPATCHERS
36963PRESERVE_NONE
36964static bool Interp_Jt(InterpState &S, CodePtr &PC) {
36965 {
36966 const auto V0 = ReadArg<int32_t>(S, PC);
36967 if (!Jt(S, PC, V0)) return false;
36968 }
36969#if USE_TAILCALLS
36970 MUSTTAIL return InterpNext(S, PC);
36971#else
36972 return true;
36973#endif
36974}
36975#endif
36976#ifdef GET_DISASM
36977case OP_Jt:
36978 Text.Op = PrintName("Jt");
36979 Text.Args.push_back(printArg<int32_t>(P, PC));
36980 break;
36981#endif
36982#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36983bool emitJt( int32_t , SourceInfo);
36984#endif
36985#ifdef GET_LINK_IMPL
36986bool ByteCodeEmitter::emitJt( int32_t A0, SourceInfo L) {
36987 return emitOp<int32_t>(OP_Jt, A0, L);
36988}
36989#endif
36990#ifdef GET_OPCODE_NAMES
36991OP_LESint8,
36992OP_LEUint8,
36993OP_LESint16,
36994OP_LEUint16,
36995OP_LESint32,
36996OP_LEUint32,
36997OP_LESint64,
36998OP_LEUint64,
36999OP_LEIntAP,
37000OP_LEIntAPS,
37001OP_LEBool,
37002OP_LEFixedPoint,
37003OP_LEPtr,
37004OP_LEFloat,
37005#endif
37006#ifdef GET_INTERPFN_LIST
37007&Interp_LESint8,
37008&Interp_LEUint8,
37009&Interp_LESint16,
37010&Interp_LEUint16,
37011&Interp_LESint32,
37012&Interp_LEUint32,
37013&Interp_LESint64,
37014&Interp_LEUint64,
37015&Interp_LEIntAP,
37016&Interp_LEIntAPS,
37017&Interp_LEBool,
37018&Interp_LEFixedPoint,
37019&Interp_LEPtr,
37020&Interp_LEFloat,
37021#endif
37022#ifdef GET_INTERPFN_DISPATCHERS
37023PRESERVE_NONE
37024static bool Interp_LESint8(InterpState &S, CodePtr &PC) {
37025 if (!LE<PT_Sint8>(S, PC)) return false;
37026#if USE_TAILCALLS
37027 MUSTTAIL return InterpNext(S, PC);
37028#else
37029 return true;
37030#endif
37031}
37032PRESERVE_NONE
37033static bool Interp_LEUint8(InterpState &S, CodePtr &PC) {
37034 if (!LE<PT_Uint8>(S, PC)) return false;
37035#if USE_TAILCALLS
37036 MUSTTAIL return InterpNext(S, PC);
37037#else
37038 return true;
37039#endif
37040}
37041PRESERVE_NONE
37042static bool Interp_LESint16(InterpState &S, CodePtr &PC) {
37043 if (!LE<PT_Sint16>(S, PC)) return false;
37044#if USE_TAILCALLS
37045 MUSTTAIL return InterpNext(S, PC);
37046#else
37047 return true;
37048#endif
37049}
37050PRESERVE_NONE
37051static bool Interp_LEUint16(InterpState &S, CodePtr &PC) {
37052 if (!LE<PT_Uint16>(S, PC)) return false;
37053#if USE_TAILCALLS
37054 MUSTTAIL return InterpNext(S, PC);
37055#else
37056 return true;
37057#endif
37058}
37059PRESERVE_NONE
37060static bool Interp_LESint32(InterpState &S, CodePtr &PC) {
37061 if (!LE<PT_Sint32>(S, PC)) return false;
37062#if USE_TAILCALLS
37063 MUSTTAIL return InterpNext(S, PC);
37064#else
37065 return true;
37066#endif
37067}
37068PRESERVE_NONE
37069static bool Interp_LEUint32(InterpState &S, CodePtr &PC) {
37070 if (!LE<PT_Uint32>(S, PC)) return false;
37071#if USE_TAILCALLS
37072 MUSTTAIL return InterpNext(S, PC);
37073#else
37074 return true;
37075#endif
37076}
37077PRESERVE_NONE
37078static bool Interp_LESint64(InterpState &S, CodePtr &PC) {
37079 if (!LE<PT_Sint64>(S, PC)) return false;
37080#if USE_TAILCALLS
37081 MUSTTAIL return InterpNext(S, PC);
37082#else
37083 return true;
37084#endif
37085}
37086PRESERVE_NONE
37087static bool Interp_LEUint64(InterpState &S, CodePtr &PC) {
37088 if (!LE<PT_Uint64>(S, PC)) return false;
37089#if USE_TAILCALLS
37090 MUSTTAIL return InterpNext(S, PC);
37091#else
37092 return true;
37093#endif
37094}
37095PRESERVE_NONE
37096static bool Interp_LEIntAP(InterpState &S, CodePtr &PC) {
37097 if (!LE<PT_IntAP>(S, PC)) return false;
37098#if USE_TAILCALLS
37099 MUSTTAIL return InterpNext(S, PC);
37100#else
37101 return true;
37102#endif
37103}
37104PRESERVE_NONE
37105static bool Interp_LEIntAPS(InterpState &S, CodePtr &PC) {
37106 if (!LE<PT_IntAPS>(S, PC)) return false;
37107#if USE_TAILCALLS
37108 MUSTTAIL return InterpNext(S, PC);
37109#else
37110 return true;
37111#endif
37112}
37113PRESERVE_NONE
37114static bool Interp_LEBool(InterpState &S, CodePtr &PC) {
37115 if (!LE<PT_Bool>(S, PC)) return false;
37116#if USE_TAILCALLS
37117 MUSTTAIL return InterpNext(S, PC);
37118#else
37119 return true;
37120#endif
37121}
37122PRESERVE_NONE
37123static bool Interp_LEFixedPoint(InterpState &S, CodePtr &PC) {
37124 if (!LE<PT_FixedPoint>(S, PC)) return false;
37125#if USE_TAILCALLS
37126 MUSTTAIL return InterpNext(S, PC);
37127#else
37128 return true;
37129#endif
37130}
37131PRESERVE_NONE
37132static bool Interp_LEPtr(InterpState &S, CodePtr &PC) {
37133 if (!LE<PT_Ptr>(S, PC)) return false;
37134#if USE_TAILCALLS
37135 MUSTTAIL return InterpNext(S, PC);
37136#else
37137 return true;
37138#endif
37139}
37140PRESERVE_NONE
37141static bool Interp_LEFloat(InterpState &S, CodePtr &PC) {
37142 if (!LE<PT_Float>(S, PC)) return false;
37143#if USE_TAILCALLS
37144 MUSTTAIL return InterpNext(S, PC);
37145#else
37146 return true;
37147#endif
37148}
37149#endif
37150#ifdef GET_DISASM
37151case OP_LESint8:
37152 Text.Op = PrintName("LESint8");
37153 break;
37154case OP_LEUint8:
37155 Text.Op = PrintName("LEUint8");
37156 break;
37157case OP_LESint16:
37158 Text.Op = PrintName("LESint16");
37159 break;
37160case OP_LEUint16:
37161 Text.Op = PrintName("LEUint16");
37162 break;
37163case OP_LESint32:
37164 Text.Op = PrintName("LESint32");
37165 break;
37166case OP_LEUint32:
37167 Text.Op = PrintName("LEUint32");
37168 break;
37169case OP_LESint64:
37170 Text.Op = PrintName("LESint64");
37171 break;
37172case OP_LEUint64:
37173 Text.Op = PrintName("LEUint64");
37174 break;
37175case OP_LEIntAP:
37176 Text.Op = PrintName("LEIntAP");
37177 break;
37178case OP_LEIntAPS:
37179 Text.Op = PrintName("LEIntAPS");
37180 break;
37181case OP_LEBool:
37182 Text.Op = PrintName("LEBool");
37183 break;
37184case OP_LEFixedPoint:
37185 Text.Op = PrintName("LEFixedPoint");
37186 break;
37187case OP_LEPtr:
37188 Text.Op = PrintName("LEPtr");
37189 break;
37190case OP_LEFloat:
37191 Text.Op = PrintName("LEFloat");
37192 break;
37193#endif
37194#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37195bool emitLESint8(SourceInfo);
37196bool emitLEUint8(SourceInfo);
37197bool emitLESint16(SourceInfo);
37198bool emitLEUint16(SourceInfo);
37199bool emitLESint32(SourceInfo);
37200bool emitLEUint32(SourceInfo);
37201bool emitLESint64(SourceInfo);
37202bool emitLEUint64(SourceInfo);
37203bool emitLEIntAP(SourceInfo);
37204bool emitLEIntAPS(SourceInfo);
37205bool emitLEBool(SourceInfo);
37206bool emitLEFixedPoint(SourceInfo);
37207bool emitLEPtr(SourceInfo);
37208bool emitLEFloat(SourceInfo);
37209#endif
37210#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37211[[nodiscard]] bool emitLE(PrimType, SourceInfo I);
37212#endif
37213#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
37214bool
37215#if defined(GET_EVAL_IMPL)
37216EvalEmitter
37217#else
37218ByteCodeEmitter
37219#endif
37220::emitLE(PrimType T0, SourceInfo I) {
37221 switch (T0) {
37222 case PT_Sint8:
37223 return emitLESint8(I);
37224 case PT_Uint8:
37225 return emitLEUint8(I);
37226 case PT_Sint16:
37227 return emitLESint16(I);
37228 case PT_Uint16:
37229 return emitLEUint16(I);
37230 case PT_Sint32:
37231 return emitLESint32(I);
37232 case PT_Uint32:
37233 return emitLEUint32(I);
37234 case PT_Sint64:
37235 return emitLESint64(I);
37236 case PT_Uint64:
37237 return emitLEUint64(I);
37238 case PT_IntAP:
37239 return emitLEIntAP(I);
37240 case PT_IntAPS:
37241 return emitLEIntAPS(I);
37242 case PT_Bool:
37243 return emitLEBool(I);
37244 case PT_FixedPoint:
37245 return emitLEFixedPoint(I);
37246 case PT_Ptr:
37247 return emitLEPtr(I);
37248 case PT_Float:
37249 return emitLEFloat(I);
37250 default: llvm_unreachable("invalid type: emitLE");
37251 }
37252 llvm_unreachable("invalid enum value");
37253}
37254#endif
37255#ifdef GET_LINK_IMPL
37256bool ByteCodeEmitter::emitLESint8(SourceInfo L) {
37257 return emitOp<>(OP_LESint8, L);
37258}
37259bool ByteCodeEmitter::emitLEUint8(SourceInfo L) {
37260 return emitOp<>(OP_LEUint8, L);
37261}
37262bool ByteCodeEmitter::emitLESint16(SourceInfo L) {
37263 return emitOp<>(OP_LESint16, L);
37264}
37265bool ByteCodeEmitter::emitLEUint16(SourceInfo L) {
37266 return emitOp<>(OP_LEUint16, L);
37267}
37268bool ByteCodeEmitter::emitLESint32(SourceInfo L) {
37269 return emitOp<>(OP_LESint32, L);
37270}
37271bool ByteCodeEmitter::emitLEUint32(SourceInfo L) {
37272 return emitOp<>(OP_LEUint32, L);
37273}
37274bool ByteCodeEmitter::emitLESint64(SourceInfo L) {
37275 return emitOp<>(OP_LESint64, L);
37276}
37277bool ByteCodeEmitter::emitLEUint64(SourceInfo L) {
37278 return emitOp<>(OP_LEUint64, L);
37279}
37280bool ByteCodeEmitter::emitLEIntAP(SourceInfo L) {
37281 return emitOp<>(OP_LEIntAP, L);
37282}
37283bool ByteCodeEmitter::emitLEIntAPS(SourceInfo L) {
37284 return emitOp<>(OP_LEIntAPS, L);
37285}
37286bool ByteCodeEmitter::emitLEBool(SourceInfo L) {
37287 return emitOp<>(OP_LEBool, L);
37288}
37289bool ByteCodeEmitter::emitLEFixedPoint(SourceInfo L) {
37290 return emitOp<>(OP_LEFixedPoint, L);
37291}
37292bool ByteCodeEmitter::emitLEPtr(SourceInfo L) {
37293 return emitOp<>(OP_LEPtr, L);
37294}
37295bool ByteCodeEmitter::emitLEFloat(SourceInfo L) {
37296 return emitOp<>(OP_LEFloat, L);
37297}
37298#endif
37299#ifdef GET_EVAL_IMPL
37300bool EvalEmitter::emitLESint8(SourceInfo L) {
37301 if (!isActive()) return true;
37302 CurrentSource = L;
37303 return LE<PT_Sint8>(S, OpPC);
37304}
37305bool EvalEmitter::emitLEUint8(SourceInfo L) {
37306 if (!isActive()) return true;
37307 CurrentSource = L;
37308 return LE<PT_Uint8>(S, OpPC);
37309}
37310bool EvalEmitter::emitLESint16(SourceInfo L) {
37311 if (!isActive()) return true;
37312 CurrentSource = L;
37313 return LE<PT_Sint16>(S, OpPC);
37314}
37315bool EvalEmitter::emitLEUint16(SourceInfo L) {
37316 if (!isActive()) return true;
37317 CurrentSource = L;
37318 return LE<PT_Uint16>(S, OpPC);
37319}
37320bool EvalEmitter::emitLESint32(SourceInfo L) {
37321 if (!isActive()) return true;
37322 CurrentSource = L;
37323 return LE<PT_Sint32>(S, OpPC);
37324}
37325bool EvalEmitter::emitLEUint32(SourceInfo L) {
37326 if (!isActive()) return true;
37327 CurrentSource = L;
37328 return LE<PT_Uint32>(S, OpPC);
37329}
37330bool EvalEmitter::emitLESint64(SourceInfo L) {
37331 if (!isActive()) return true;
37332 CurrentSource = L;
37333 return LE<PT_Sint64>(S, OpPC);
37334}
37335bool EvalEmitter::emitLEUint64(SourceInfo L) {
37336 if (!isActive()) return true;
37337 CurrentSource = L;
37338 return LE<PT_Uint64>(S, OpPC);
37339}
37340bool EvalEmitter::emitLEIntAP(SourceInfo L) {
37341 if (!isActive()) return true;
37342 CurrentSource = L;
37343 return LE<PT_IntAP>(S, OpPC);
37344}
37345bool EvalEmitter::emitLEIntAPS(SourceInfo L) {
37346 if (!isActive()) return true;
37347 CurrentSource = L;
37348 return LE<PT_IntAPS>(S, OpPC);
37349}
37350bool EvalEmitter::emitLEBool(SourceInfo L) {
37351 if (!isActive()) return true;
37352 CurrentSource = L;
37353 return LE<PT_Bool>(S, OpPC);
37354}
37355bool EvalEmitter::emitLEFixedPoint(SourceInfo L) {
37356 if (!isActive()) return true;
37357 CurrentSource = L;
37358 return LE<PT_FixedPoint>(S, OpPC);
37359}
37360bool EvalEmitter::emitLEPtr(SourceInfo L) {
37361 if (!isActive()) return true;
37362 CurrentSource = L;
37363 return LE<PT_Ptr>(S, OpPC);
37364}
37365bool EvalEmitter::emitLEFloat(SourceInfo L) {
37366 if (!isActive()) return true;
37367 CurrentSource = L;
37368 return LE<PT_Float>(S, OpPC);
37369}
37370#endif
37371#ifdef GET_OPCODE_NAMES
37372OP_LTSint8,
37373OP_LTUint8,
37374OP_LTSint16,
37375OP_LTUint16,
37376OP_LTSint32,
37377OP_LTUint32,
37378OP_LTSint64,
37379OP_LTUint64,
37380OP_LTIntAP,
37381OP_LTIntAPS,
37382OP_LTBool,
37383OP_LTFixedPoint,
37384OP_LTPtr,
37385OP_LTFloat,
37386#endif
37387#ifdef GET_INTERPFN_LIST
37388&Interp_LTSint8,
37389&Interp_LTUint8,
37390&Interp_LTSint16,
37391&Interp_LTUint16,
37392&Interp_LTSint32,
37393&Interp_LTUint32,
37394&Interp_LTSint64,
37395&Interp_LTUint64,
37396&Interp_LTIntAP,
37397&Interp_LTIntAPS,
37398&Interp_LTBool,
37399&Interp_LTFixedPoint,
37400&Interp_LTPtr,
37401&Interp_LTFloat,
37402#endif
37403#ifdef GET_INTERPFN_DISPATCHERS
37404PRESERVE_NONE
37405static bool Interp_LTSint8(InterpState &S, CodePtr &PC) {
37406 if (!LT<PT_Sint8>(S, PC)) return false;
37407#if USE_TAILCALLS
37408 MUSTTAIL return InterpNext(S, PC);
37409#else
37410 return true;
37411#endif
37412}
37413PRESERVE_NONE
37414static bool Interp_LTUint8(InterpState &S, CodePtr &PC) {
37415 if (!LT<PT_Uint8>(S, PC)) return false;
37416#if USE_TAILCALLS
37417 MUSTTAIL return InterpNext(S, PC);
37418#else
37419 return true;
37420#endif
37421}
37422PRESERVE_NONE
37423static bool Interp_LTSint16(InterpState &S, CodePtr &PC) {
37424 if (!LT<PT_Sint16>(S, PC)) return false;
37425#if USE_TAILCALLS
37426 MUSTTAIL return InterpNext(S, PC);
37427#else
37428 return true;
37429#endif
37430}
37431PRESERVE_NONE
37432static bool Interp_LTUint16(InterpState &S, CodePtr &PC) {
37433 if (!LT<PT_Uint16>(S, PC)) return false;
37434#if USE_TAILCALLS
37435 MUSTTAIL return InterpNext(S, PC);
37436#else
37437 return true;
37438#endif
37439}
37440PRESERVE_NONE
37441static bool Interp_LTSint32(InterpState &S, CodePtr &PC) {
37442 if (!LT<PT_Sint32>(S, PC)) return false;
37443#if USE_TAILCALLS
37444 MUSTTAIL return InterpNext(S, PC);
37445#else
37446 return true;
37447#endif
37448}
37449PRESERVE_NONE
37450static bool Interp_LTUint32(InterpState &S, CodePtr &PC) {
37451 if (!LT<PT_Uint32>(S, PC)) return false;
37452#if USE_TAILCALLS
37453 MUSTTAIL return InterpNext(S, PC);
37454#else
37455 return true;
37456#endif
37457}
37458PRESERVE_NONE
37459static bool Interp_LTSint64(InterpState &S, CodePtr &PC) {
37460 if (!LT<PT_Sint64>(S, PC)) return false;
37461#if USE_TAILCALLS
37462 MUSTTAIL return InterpNext(S, PC);
37463#else
37464 return true;
37465#endif
37466}
37467PRESERVE_NONE
37468static bool Interp_LTUint64(InterpState &S, CodePtr &PC) {
37469 if (!LT<PT_Uint64>(S, PC)) return false;
37470#if USE_TAILCALLS
37471 MUSTTAIL return InterpNext(S, PC);
37472#else
37473 return true;
37474#endif
37475}
37476PRESERVE_NONE
37477static bool Interp_LTIntAP(InterpState &S, CodePtr &PC) {
37478 if (!LT<PT_IntAP>(S, PC)) return false;
37479#if USE_TAILCALLS
37480 MUSTTAIL return InterpNext(S, PC);
37481#else
37482 return true;
37483#endif
37484}
37485PRESERVE_NONE
37486static bool Interp_LTIntAPS(InterpState &S, CodePtr &PC) {
37487 if (!LT<PT_IntAPS>(S, PC)) return false;
37488#if USE_TAILCALLS
37489 MUSTTAIL return InterpNext(S, PC);
37490#else
37491 return true;
37492#endif
37493}
37494PRESERVE_NONE
37495static bool Interp_LTBool(InterpState &S, CodePtr &PC) {
37496 if (!LT<PT_Bool>(S, PC)) return false;
37497#if USE_TAILCALLS
37498 MUSTTAIL return InterpNext(S, PC);
37499#else
37500 return true;
37501#endif
37502}
37503PRESERVE_NONE
37504static bool Interp_LTFixedPoint(InterpState &S, CodePtr &PC) {
37505 if (!LT<PT_FixedPoint>(S, PC)) return false;
37506#if USE_TAILCALLS
37507 MUSTTAIL return InterpNext(S, PC);
37508#else
37509 return true;
37510#endif
37511}
37512PRESERVE_NONE
37513static bool Interp_LTPtr(InterpState &S, CodePtr &PC) {
37514 if (!LT<PT_Ptr>(S, PC)) return false;
37515#if USE_TAILCALLS
37516 MUSTTAIL return InterpNext(S, PC);
37517#else
37518 return true;
37519#endif
37520}
37521PRESERVE_NONE
37522static bool Interp_LTFloat(InterpState &S, CodePtr &PC) {
37523 if (!LT<PT_Float>(S, PC)) return false;
37524#if USE_TAILCALLS
37525 MUSTTAIL return InterpNext(S, PC);
37526#else
37527 return true;
37528#endif
37529}
37530#endif
37531#ifdef GET_DISASM
37532case OP_LTSint8:
37533 Text.Op = PrintName("LTSint8");
37534 break;
37535case OP_LTUint8:
37536 Text.Op = PrintName("LTUint8");
37537 break;
37538case OP_LTSint16:
37539 Text.Op = PrintName("LTSint16");
37540 break;
37541case OP_LTUint16:
37542 Text.Op = PrintName("LTUint16");
37543 break;
37544case OP_LTSint32:
37545 Text.Op = PrintName("LTSint32");
37546 break;
37547case OP_LTUint32:
37548 Text.Op = PrintName("LTUint32");
37549 break;
37550case OP_LTSint64:
37551 Text.Op = PrintName("LTSint64");
37552 break;
37553case OP_LTUint64:
37554 Text.Op = PrintName("LTUint64");
37555 break;
37556case OP_LTIntAP:
37557 Text.Op = PrintName("LTIntAP");
37558 break;
37559case OP_LTIntAPS:
37560 Text.Op = PrintName("LTIntAPS");
37561 break;
37562case OP_LTBool:
37563 Text.Op = PrintName("LTBool");
37564 break;
37565case OP_LTFixedPoint:
37566 Text.Op = PrintName("LTFixedPoint");
37567 break;
37568case OP_LTPtr:
37569 Text.Op = PrintName("LTPtr");
37570 break;
37571case OP_LTFloat:
37572 Text.Op = PrintName("LTFloat");
37573 break;
37574#endif
37575#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37576bool emitLTSint8(SourceInfo);
37577bool emitLTUint8(SourceInfo);
37578bool emitLTSint16(SourceInfo);
37579bool emitLTUint16(SourceInfo);
37580bool emitLTSint32(SourceInfo);
37581bool emitLTUint32(SourceInfo);
37582bool emitLTSint64(SourceInfo);
37583bool emitLTUint64(SourceInfo);
37584bool emitLTIntAP(SourceInfo);
37585bool emitLTIntAPS(SourceInfo);
37586bool emitLTBool(SourceInfo);
37587bool emitLTFixedPoint(SourceInfo);
37588bool emitLTPtr(SourceInfo);
37589bool emitLTFloat(SourceInfo);
37590#endif
37591#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37592[[nodiscard]] bool emitLT(PrimType, SourceInfo I);
37593#endif
37594#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
37595bool
37596#if defined(GET_EVAL_IMPL)
37597EvalEmitter
37598#else
37599ByteCodeEmitter
37600#endif
37601::emitLT(PrimType T0, SourceInfo I) {
37602 switch (T0) {
37603 case PT_Sint8:
37604 return emitLTSint8(I);
37605 case PT_Uint8:
37606 return emitLTUint8(I);
37607 case PT_Sint16:
37608 return emitLTSint16(I);
37609 case PT_Uint16:
37610 return emitLTUint16(I);
37611 case PT_Sint32:
37612 return emitLTSint32(I);
37613 case PT_Uint32:
37614 return emitLTUint32(I);
37615 case PT_Sint64:
37616 return emitLTSint64(I);
37617 case PT_Uint64:
37618 return emitLTUint64(I);
37619 case PT_IntAP:
37620 return emitLTIntAP(I);
37621 case PT_IntAPS:
37622 return emitLTIntAPS(I);
37623 case PT_Bool:
37624 return emitLTBool(I);
37625 case PT_FixedPoint:
37626 return emitLTFixedPoint(I);
37627 case PT_Ptr:
37628 return emitLTPtr(I);
37629 case PT_Float:
37630 return emitLTFloat(I);
37631 default: llvm_unreachable("invalid type: emitLT");
37632 }
37633 llvm_unreachable("invalid enum value");
37634}
37635#endif
37636#ifdef GET_LINK_IMPL
37637bool ByteCodeEmitter::emitLTSint8(SourceInfo L) {
37638 return emitOp<>(OP_LTSint8, L);
37639}
37640bool ByteCodeEmitter::emitLTUint8(SourceInfo L) {
37641 return emitOp<>(OP_LTUint8, L);
37642}
37643bool ByteCodeEmitter::emitLTSint16(SourceInfo L) {
37644 return emitOp<>(OP_LTSint16, L);
37645}
37646bool ByteCodeEmitter::emitLTUint16(SourceInfo L) {
37647 return emitOp<>(OP_LTUint16, L);
37648}
37649bool ByteCodeEmitter::emitLTSint32(SourceInfo L) {
37650 return emitOp<>(OP_LTSint32, L);
37651}
37652bool ByteCodeEmitter::emitLTUint32(SourceInfo L) {
37653 return emitOp<>(OP_LTUint32, L);
37654}
37655bool ByteCodeEmitter::emitLTSint64(SourceInfo L) {
37656 return emitOp<>(OP_LTSint64, L);
37657}
37658bool ByteCodeEmitter::emitLTUint64(SourceInfo L) {
37659 return emitOp<>(OP_LTUint64, L);
37660}
37661bool ByteCodeEmitter::emitLTIntAP(SourceInfo L) {
37662 return emitOp<>(OP_LTIntAP, L);
37663}
37664bool ByteCodeEmitter::emitLTIntAPS(SourceInfo L) {
37665 return emitOp<>(OP_LTIntAPS, L);
37666}
37667bool ByteCodeEmitter::emitLTBool(SourceInfo L) {
37668 return emitOp<>(OP_LTBool, L);
37669}
37670bool ByteCodeEmitter::emitLTFixedPoint(SourceInfo L) {
37671 return emitOp<>(OP_LTFixedPoint, L);
37672}
37673bool ByteCodeEmitter::emitLTPtr(SourceInfo L) {
37674 return emitOp<>(OP_LTPtr, L);
37675}
37676bool ByteCodeEmitter::emitLTFloat(SourceInfo L) {
37677 return emitOp<>(OP_LTFloat, L);
37678}
37679#endif
37680#ifdef GET_EVAL_IMPL
37681bool EvalEmitter::emitLTSint8(SourceInfo L) {
37682 if (!isActive()) return true;
37683 CurrentSource = L;
37684 return LT<PT_Sint8>(S, OpPC);
37685}
37686bool EvalEmitter::emitLTUint8(SourceInfo L) {
37687 if (!isActive()) return true;
37688 CurrentSource = L;
37689 return LT<PT_Uint8>(S, OpPC);
37690}
37691bool EvalEmitter::emitLTSint16(SourceInfo L) {
37692 if (!isActive()) return true;
37693 CurrentSource = L;
37694 return LT<PT_Sint16>(S, OpPC);
37695}
37696bool EvalEmitter::emitLTUint16(SourceInfo L) {
37697 if (!isActive()) return true;
37698 CurrentSource = L;
37699 return LT<PT_Uint16>(S, OpPC);
37700}
37701bool EvalEmitter::emitLTSint32(SourceInfo L) {
37702 if (!isActive()) return true;
37703 CurrentSource = L;
37704 return LT<PT_Sint32>(S, OpPC);
37705}
37706bool EvalEmitter::emitLTUint32(SourceInfo L) {
37707 if (!isActive()) return true;
37708 CurrentSource = L;
37709 return LT<PT_Uint32>(S, OpPC);
37710}
37711bool EvalEmitter::emitLTSint64(SourceInfo L) {
37712 if (!isActive()) return true;
37713 CurrentSource = L;
37714 return LT<PT_Sint64>(S, OpPC);
37715}
37716bool EvalEmitter::emitLTUint64(SourceInfo L) {
37717 if (!isActive()) return true;
37718 CurrentSource = L;
37719 return LT<PT_Uint64>(S, OpPC);
37720}
37721bool EvalEmitter::emitLTIntAP(SourceInfo L) {
37722 if (!isActive()) return true;
37723 CurrentSource = L;
37724 return LT<PT_IntAP>(S, OpPC);
37725}
37726bool EvalEmitter::emitLTIntAPS(SourceInfo L) {
37727 if (!isActive()) return true;
37728 CurrentSource = L;
37729 return LT<PT_IntAPS>(S, OpPC);
37730}
37731bool EvalEmitter::emitLTBool(SourceInfo L) {
37732 if (!isActive()) return true;
37733 CurrentSource = L;
37734 return LT<PT_Bool>(S, OpPC);
37735}
37736bool EvalEmitter::emitLTFixedPoint(SourceInfo L) {
37737 if (!isActive()) return true;
37738 CurrentSource = L;
37739 return LT<PT_FixedPoint>(S, OpPC);
37740}
37741bool EvalEmitter::emitLTPtr(SourceInfo L) {
37742 if (!isActive()) return true;
37743 CurrentSource = L;
37744 return LT<PT_Ptr>(S, OpPC);
37745}
37746bool EvalEmitter::emitLTFloat(SourceInfo L) {
37747 if (!isActive()) return true;
37748 CurrentSource = L;
37749 return LT<PT_Float>(S, OpPC);
37750}
37751#endif
37752#ifdef GET_OPCODE_NAMES
37753OP_LoadSint8,
37754OP_LoadUint8,
37755OP_LoadSint16,
37756OP_LoadUint16,
37757OP_LoadSint32,
37758OP_LoadUint32,
37759OP_LoadSint64,
37760OP_LoadUint64,
37761OP_LoadIntAP,
37762OP_LoadIntAPS,
37763OP_LoadBool,
37764OP_LoadFixedPoint,
37765OP_LoadPtr,
37766OP_LoadMemberPtr,
37767OP_LoadFloat,
37768#endif
37769#ifdef GET_INTERPFN_LIST
37770&Interp_LoadSint8,
37771&Interp_LoadUint8,
37772&Interp_LoadSint16,
37773&Interp_LoadUint16,
37774&Interp_LoadSint32,
37775&Interp_LoadUint32,
37776&Interp_LoadSint64,
37777&Interp_LoadUint64,
37778&Interp_LoadIntAP,
37779&Interp_LoadIntAPS,
37780&Interp_LoadBool,
37781&Interp_LoadFixedPoint,
37782&Interp_LoadPtr,
37783&Interp_LoadMemberPtr,
37784&Interp_LoadFloat,
37785#endif
37786#ifdef GET_INTERPFN_DISPATCHERS
37787PRESERVE_NONE
37788static bool Interp_LoadSint8(InterpState &S, CodePtr &PC) {
37789 if (!Load<PT_Sint8>(S, PC)) return false;
37790#if USE_TAILCALLS
37791 MUSTTAIL return InterpNext(S, PC);
37792#else
37793 return true;
37794#endif
37795}
37796PRESERVE_NONE
37797static bool Interp_LoadUint8(InterpState &S, CodePtr &PC) {
37798 if (!Load<PT_Uint8>(S, PC)) return false;
37799#if USE_TAILCALLS
37800 MUSTTAIL return InterpNext(S, PC);
37801#else
37802 return true;
37803#endif
37804}
37805PRESERVE_NONE
37806static bool Interp_LoadSint16(InterpState &S, CodePtr &PC) {
37807 if (!Load<PT_Sint16>(S, PC)) return false;
37808#if USE_TAILCALLS
37809 MUSTTAIL return InterpNext(S, PC);
37810#else
37811 return true;
37812#endif
37813}
37814PRESERVE_NONE
37815static bool Interp_LoadUint16(InterpState &S, CodePtr &PC) {
37816 if (!Load<PT_Uint16>(S, PC)) return false;
37817#if USE_TAILCALLS
37818 MUSTTAIL return InterpNext(S, PC);
37819#else
37820 return true;
37821#endif
37822}
37823PRESERVE_NONE
37824static bool Interp_LoadSint32(InterpState &S, CodePtr &PC) {
37825 if (!Load<PT_Sint32>(S, PC)) return false;
37826#if USE_TAILCALLS
37827 MUSTTAIL return InterpNext(S, PC);
37828#else
37829 return true;
37830#endif
37831}
37832PRESERVE_NONE
37833static bool Interp_LoadUint32(InterpState &S, CodePtr &PC) {
37834 if (!Load<PT_Uint32>(S, PC)) return false;
37835#if USE_TAILCALLS
37836 MUSTTAIL return InterpNext(S, PC);
37837#else
37838 return true;
37839#endif
37840}
37841PRESERVE_NONE
37842static bool Interp_LoadSint64(InterpState &S, CodePtr &PC) {
37843 if (!Load<PT_Sint64>(S, PC)) return false;
37844#if USE_TAILCALLS
37845 MUSTTAIL return InterpNext(S, PC);
37846#else
37847 return true;
37848#endif
37849}
37850PRESERVE_NONE
37851static bool Interp_LoadUint64(InterpState &S, CodePtr &PC) {
37852 if (!Load<PT_Uint64>(S, PC)) return false;
37853#if USE_TAILCALLS
37854 MUSTTAIL return InterpNext(S, PC);
37855#else
37856 return true;
37857#endif
37858}
37859PRESERVE_NONE
37860static bool Interp_LoadIntAP(InterpState &S, CodePtr &PC) {
37861 if (!Load<PT_IntAP>(S, PC)) return false;
37862#if USE_TAILCALLS
37863 MUSTTAIL return InterpNext(S, PC);
37864#else
37865 return true;
37866#endif
37867}
37868PRESERVE_NONE
37869static bool Interp_LoadIntAPS(InterpState &S, CodePtr &PC) {
37870 if (!Load<PT_IntAPS>(S, PC)) return false;
37871#if USE_TAILCALLS
37872 MUSTTAIL return InterpNext(S, PC);
37873#else
37874 return true;
37875#endif
37876}
37877PRESERVE_NONE
37878static bool Interp_LoadBool(InterpState &S, CodePtr &PC) {
37879 if (!Load<PT_Bool>(S, PC)) return false;
37880#if USE_TAILCALLS
37881 MUSTTAIL return InterpNext(S, PC);
37882#else
37883 return true;
37884#endif
37885}
37886PRESERVE_NONE
37887static bool Interp_LoadFixedPoint(InterpState &S, CodePtr &PC) {
37888 if (!Load<PT_FixedPoint>(S, PC)) return false;
37889#if USE_TAILCALLS
37890 MUSTTAIL return InterpNext(S, PC);
37891#else
37892 return true;
37893#endif
37894}
37895PRESERVE_NONE
37896static bool Interp_LoadPtr(InterpState &S, CodePtr &PC) {
37897 if (!Load<PT_Ptr>(S, PC)) return false;
37898#if USE_TAILCALLS
37899 MUSTTAIL return InterpNext(S, PC);
37900#else
37901 return true;
37902#endif
37903}
37904PRESERVE_NONE
37905static bool Interp_LoadMemberPtr(InterpState &S, CodePtr &PC) {
37906 if (!Load<PT_MemberPtr>(S, PC)) return false;
37907#if USE_TAILCALLS
37908 MUSTTAIL return InterpNext(S, PC);
37909#else
37910 return true;
37911#endif
37912}
37913PRESERVE_NONE
37914static bool Interp_LoadFloat(InterpState &S, CodePtr &PC) {
37915 if (!Load<PT_Float>(S, PC)) return false;
37916#if USE_TAILCALLS
37917 MUSTTAIL return InterpNext(S, PC);
37918#else
37919 return true;
37920#endif
37921}
37922#endif
37923#ifdef GET_DISASM
37924case OP_LoadSint8:
37925 Text.Op = PrintName("LoadSint8");
37926 break;
37927case OP_LoadUint8:
37928 Text.Op = PrintName("LoadUint8");
37929 break;
37930case OP_LoadSint16:
37931 Text.Op = PrintName("LoadSint16");
37932 break;
37933case OP_LoadUint16:
37934 Text.Op = PrintName("LoadUint16");
37935 break;
37936case OP_LoadSint32:
37937 Text.Op = PrintName("LoadSint32");
37938 break;
37939case OP_LoadUint32:
37940 Text.Op = PrintName("LoadUint32");
37941 break;
37942case OP_LoadSint64:
37943 Text.Op = PrintName("LoadSint64");
37944 break;
37945case OP_LoadUint64:
37946 Text.Op = PrintName("LoadUint64");
37947 break;
37948case OP_LoadIntAP:
37949 Text.Op = PrintName("LoadIntAP");
37950 break;
37951case OP_LoadIntAPS:
37952 Text.Op = PrintName("LoadIntAPS");
37953 break;
37954case OP_LoadBool:
37955 Text.Op = PrintName("LoadBool");
37956 break;
37957case OP_LoadFixedPoint:
37958 Text.Op = PrintName("LoadFixedPoint");
37959 break;
37960case OP_LoadPtr:
37961 Text.Op = PrintName("LoadPtr");
37962 break;
37963case OP_LoadMemberPtr:
37964 Text.Op = PrintName("LoadMemberPtr");
37965 break;
37966case OP_LoadFloat:
37967 Text.Op = PrintName("LoadFloat");
37968 break;
37969#endif
37970#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37971bool emitLoadSint8(SourceInfo);
37972bool emitLoadUint8(SourceInfo);
37973bool emitLoadSint16(SourceInfo);
37974bool emitLoadUint16(SourceInfo);
37975bool emitLoadSint32(SourceInfo);
37976bool emitLoadUint32(SourceInfo);
37977bool emitLoadSint64(SourceInfo);
37978bool emitLoadUint64(SourceInfo);
37979bool emitLoadIntAP(SourceInfo);
37980bool emitLoadIntAPS(SourceInfo);
37981bool emitLoadBool(SourceInfo);
37982bool emitLoadFixedPoint(SourceInfo);
37983bool emitLoadPtr(SourceInfo);
37984bool emitLoadMemberPtr(SourceInfo);
37985bool emitLoadFloat(SourceInfo);
37986#endif
37987#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
37988[[nodiscard]] bool emitLoad(PrimType, SourceInfo I);
37989#endif
37990#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
37991bool
37992#if defined(GET_EVAL_IMPL)
37993EvalEmitter
37994#else
37995ByteCodeEmitter
37996#endif
37997::emitLoad(PrimType T0, SourceInfo I) {
37998 switch (T0) {
37999 case PT_Sint8:
38000 return emitLoadSint8(I);
38001 case PT_Uint8:
38002 return emitLoadUint8(I);
38003 case PT_Sint16:
38004 return emitLoadSint16(I);
38005 case PT_Uint16:
38006 return emitLoadUint16(I);
38007 case PT_Sint32:
38008 return emitLoadSint32(I);
38009 case PT_Uint32:
38010 return emitLoadUint32(I);
38011 case PT_Sint64:
38012 return emitLoadSint64(I);
38013 case PT_Uint64:
38014 return emitLoadUint64(I);
38015 case PT_IntAP:
38016 return emitLoadIntAP(I);
38017 case PT_IntAPS:
38018 return emitLoadIntAPS(I);
38019 case PT_Bool:
38020 return emitLoadBool(I);
38021 case PT_FixedPoint:
38022 return emitLoadFixedPoint(I);
38023 case PT_Ptr:
38024 return emitLoadPtr(I);
38025 case PT_MemberPtr:
38026 return emitLoadMemberPtr(I);
38027 case PT_Float:
38028 return emitLoadFloat(I);
38029 }
38030 llvm_unreachable("invalid enum value");
38031}
38032#endif
38033#ifdef GET_LINK_IMPL
38034bool ByteCodeEmitter::emitLoadSint8(SourceInfo L) {
38035 return emitOp<>(OP_LoadSint8, L);
38036}
38037bool ByteCodeEmitter::emitLoadUint8(SourceInfo L) {
38038 return emitOp<>(OP_LoadUint8, L);
38039}
38040bool ByteCodeEmitter::emitLoadSint16(SourceInfo L) {
38041 return emitOp<>(OP_LoadSint16, L);
38042}
38043bool ByteCodeEmitter::emitLoadUint16(SourceInfo L) {
38044 return emitOp<>(OP_LoadUint16, L);
38045}
38046bool ByteCodeEmitter::emitLoadSint32(SourceInfo L) {
38047 return emitOp<>(OP_LoadSint32, L);
38048}
38049bool ByteCodeEmitter::emitLoadUint32(SourceInfo L) {
38050 return emitOp<>(OP_LoadUint32, L);
38051}
38052bool ByteCodeEmitter::emitLoadSint64(SourceInfo L) {
38053 return emitOp<>(OP_LoadSint64, L);
38054}
38055bool ByteCodeEmitter::emitLoadUint64(SourceInfo L) {
38056 return emitOp<>(OP_LoadUint64, L);
38057}
38058bool ByteCodeEmitter::emitLoadIntAP(SourceInfo L) {
38059 return emitOp<>(OP_LoadIntAP, L);
38060}
38061bool ByteCodeEmitter::emitLoadIntAPS(SourceInfo L) {
38062 return emitOp<>(OP_LoadIntAPS, L);
38063}
38064bool ByteCodeEmitter::emitLoadBool(SourceInfo L) {
38065 return emitOp<>(OP_LoadBool, L);
38066}
38067bool ByteCodeEmitter::emitLoadFixedPoint(SourceInfo L) {
38068 return emitOp<>(OP_LoadFixedPoint, L);
38069}
38070bool ByteCodeEmitter::emitLoadPtr(SourceInfo L) {
38071 return emitOp<>(OP_LoadPtr, L);
38072}
38073bool ByteCodeEmitter::emitLoadMemberPtr(SourceInfo L) {
38074 return emitOp<>(OP_LoadMemberPtr, L);
38075}
38076bool ByteCodeEmitter::emitLoadFloat(SourceInfo L) {
38077 return emitOp<>(OP_LoadFloat, L);
38078}
38079#endif
38080#ifdef GET_EVAL_IMPL
38081bool EvalEmitter::emitLoadSint8(SourceInfo L) {
38082 if (!isActive()) return true;
38083 CurrentSource = L;
38084 return Load<PT_Sint8>(S, OpPC);
38085}
38086bool EvalEmitter::emitLoadUint8(SourceInfo L) {
38087 if (!isActive()) return true;
38088 CurrentSource = L;
38089 return Load<PT_Uint8>(S, OpPC);
38090}
38091bool EvalEmitter::emitLoadSint16(SourceInfo L) {
38092 if (!isActive()) return true;
38093 CurrentSource = L;
38094 return Load<PT_Sint16>(S, OpPC);
38095}
38096bool EvalEmitter::emitLoadUint16(SourceInfo L) {
38097 if (!isActive()) return true;
38098 CurrentSource = L;
38099 return Load<PT_Uint16>(S, OpPC);
38100}
38101bool EvalEmitter::emitLoadSint32(SourceInfo L) {
38102 if (!isActive()) return true;
38103 CurrentSource = L;
38104 return Load<PT_Sint32>(S, OpPC);
38105}
38106bool EvalEmitter::emitLoadUint32(SourceInfo L) {
38107 if (!isActive()) return true;
38108 CurrentSource = L;
38109 return Load<PT_Uint32>(S, OpPC);
38110}
38111bool EvalEmitter::emitLoadSint64(SourceInfo L) {
38112 if (!isActive()) return true;
38113 CurrentSource = L;
38114 return Load<PT_Sint64>(S, OpPC);
38115}
38116bool EvalEmitter::emitLoadUint64(SourceInfo L) {
38117 if (!isActive()) return true;
38118 CurrentSource = L;
38119 return Load<PT_Uint64>(S, OpPC);
38120}
38121bool EvalEmitter::emitLoadIntAP(SourceInfo L) {
38122 if (!isActive()) return true;
38123 CurrentSource = L;
38124 return Load<PT_IntAP>(S, OpPC);
38125}
38126bool EvalEmitter::emitLoadIntAPS(SourceInfo L) {
38127 if (!isActive()) return true;
38128 CurrentSource = L;
38129 return Load<PT_IntAPS>(S, OpPC);
38130}
38131bool EvalEmitter::emitLoadBool(SourceInfo L) {
38132 if (!isActive()) return true;
38133 CurrentSource = L;
38134 return Load<PT_Bool>(S, OpPC);
38135}
38136bool EvalEmitter::emitLoadFixedPoint(SourceInfo L) {
38137 if (!isActive()) return true;
38138 CurrentSource = L;
38139 return Load<PT_FixedPoint>(S, OpPC);
38140}
38141bool EvalEmitter::emitLoadPtr(SourceInfo L) {
38142 if (!isActive()) return true;
38143 CurrentSource = L;
38144 return Load<PT_Ptr>(S, OpPC);
38145}
38146bool EvalEmitter::emitLoadMemberPtr(SourceInfo L) {
38147 if (!isActive()) return true;
38148 CurrentSource = L;
38149 return Load<PT_MemberPtr>(S, OpPC);
38150}
38151bool EvalEmitter::emitLoadFloat(SourceInfo L) {
38152 if (!isActive()) return true;
38153 CurrentSource = L;
38154 return Load<PT_Float>(S, OpPC);
38155}
38156#endif
38157#ifdef GET_OPCODE_NAMES
38158OP_LoadPopSint8,
38159OP_LoadPopUint8,
38160OP_LoadPopSint16,
38161OP_LoadPopUint16,
38162OP_LoadPopSint32,
38163OP_LoadPopUint32,
38164OP_LoadPopSint64,
38165OP_LoadPopUint64,
38166OP_LoadPopIntAP,
38167OP_LoadPopIntAPS,
38168OP_LoadPopBool,
38169OP_LoadPopFixedPoint,
38170OP_LoadPopPtr,
38171OP_LoadPopMemberPtr,
38172OP_LoadPopFloat,
38173#endif
38174#ifdef GET_INTERPFN_LIST
38175&Interp_LoadPopSint8,
38176&Interp_LoadPopUint8,
38177&Interp_LoadPopSint16,
38178&Interp_LoadPopUint16,
38179&Interp_LoadPopSint32,
38180&Interp_LoadPopUint32,
38181&Interp_LoadPopSint64,
38182&Interp_LoadPopUint64,
38183&Interp_LoadPopIntAP,
38184&Interp_LoadPopIntAPS,
38185&Interp_LoadPopBool,
38186&Interp_LoadPopFixedPoint,
38187&Interp_LoadPopPtr,
38188&Interp_LoadPopMemberPtr,
38189&Interp_LoadPopFloat,
38190#endif
38191#ifdef GET_INTERPFN_DISPATCHERS
38192PRESERVE_NONE
38193static bool Interp_LoadPopSint8(InterpState &S, CodePtr &PC) {
38194 if (!LoadPop<PT_Sint8>(S, PC)) return false;
38195#if USE_TAILCALLS
38196 MUSTTAIL return InterpNext(S, PC);
38197#else
38198 return true;
38199#endif
38200}
38201PRESERVE_NONE
38202static bool Interp_LoadPopUint8(InterpState &S, CodePtr &PC) {
38203 if (!LoadPop<PT_Uint8>(S, PC)) return false;
38204#if USE_TAILCALLS
38205 MUSTTAIL return InterpNext(S, PC);
38206#else
38207 return true;
38208#endif
38209}
38210PRESERVE_NONE
38211static bool Interp_LoadPopSint16(InterpState &S, CodePtr &PC) {
38212 if (!LoadPop<PT_Sint16>(S, PC)) return false;
38213#if USE_TAILCALLS
38214 MUSTTAIL return InterpNext(S, PC);
38215#else
38216 return true;
38217#endif
38218}
38219PRESERVE_NONE
38220static bool Interp_LoadPopUint16(InterpState &S, CodePtr &PC) {
38221 if (!LoadPop<PT_Uint16>(S, PC)) return false;
38222#if USE_TAILCALLS
38223 MUSTTAIL return InterpNext(S, PC);
38224#else
38225 return true;
38226#endif
38227}
38228PRESERVE_NONE
38229static bool Interp_LoadPopSint32(InterpState &S, CodePtr &PC) {
38230 if (!LoadPop<PT_Sint32>(S, PC)) return false;
38231#if USE_TAILCALLS
38232 MUSTTAIL return InterpNext(S, PC);
38233#else
38234 return true;
38235#endif
38236}
38237PRESERVE_NONE
38238static bool Interp_LoadPopUint32(InterpState &S, CodePtr &PC) {
38239 if (!LoadPop<PT_Uint32>(S, PC)) return false;
38240#if USE_TAILCALLS
38241 MUSTTAIL return InterpNext(S, PC);
38242#else
38243 return true;
38244#endif
38245}
38246PRESERVE_NONE
38247static bool Interp_LoadPopSint64(InterpState &S, CodePtr &PC) {
38248 if (!LoadPop<PT_Sint64>(S, PC)) return false;
38249#if USE_TAILCALLS
38250 MUSTTAIL return InterpNext(S, PC);
38251#else
38252 return true;
38253#endif
38254}
38255PRESERVE_NONE
38256static bool Interp_LoadPopUint64(InterpState &S, CodePtr &PC) {
38257 if (!LoadPop<PT_Uint64>(S, PC)) return false;
38258#if USE_TAILCALLS
38259 MUSTTAIL return InterpNext(S, PC);
38260#else
38261 return true;
38262#endif
38263}
38264PRESERVE_NONE
38265static bool Interp_LoadPopIntAP(InterpState &S, CodePtr &PC) {
38266 if (!LoadPop<PT_IntAP>(S, PC)) return false;
38267#if USE_TAILCALLS
38268 MUSTTAIL return InterpNext(S, PC);
38269#else
38270 return true;
38271#endif
38272}
38273PRESERVE_NONE
38274static bool Interp_LoadPopIntAPS(InterpState &S, CodePtr &PC) {
38275 if (!LoadPop<PT_IntAPS>(S, PC)) return false;
38276#if USE_TAILCALLS
38277 MUSTTAIL return InterpNext(S, PC);
38278#else
38279 return true;
38280#endif
38281}
38282PRESERVE_NONE
38283static bool Interp_LoadPopBool(InterpState &S, CodePtr &PC) {
38284 if (!LoadPop<PT_Bool>(S, PC)) return false;
38285#if USE_TAILCALLS
38286 MUSTTAIL return InterpNext(S, PC);
38287#else
38288 return true;
38289#endif
38290}
38291PRESERVE_NONE
38292static bool Interp_LoadPopFixedPoint(InterpState &S, CodePtr &PC) {
38293 if (!LoadPop<PT_FixedPoint>(S, PC)) return false;
38294#if USE_TAILCALLS
38295 MUSTTAIL return InterpNext(S, PC);
38296#else
38297 return true;
38298#endif
38299}
38300PRESERVE_NONE
38301static bool Interp_LoadPopPtr(InterpState &S, CodePtr &PC) {
38302 if (!LoadPop<PT_Ptr>(S, PC)) return false;
38303#if USE_TAILCALLS
38304 MUSTTAIL return InterpNext(S, PC);
38305#else
38306 return true;
38307#endif
38308}
38309PRESERVE_NONE
38310static bool Interp_LoadPopMemberPtr(InterpState &S, CodePtr &PC) {
38311 if (!LoadPop<PT_MemberPtr>(S, PC)) return false;
38312#if USE_TAILCALLS
38313 MUSTTAIL return InterpNext(S, PC);
38314#else
38315 return true;
38316#endif
38317}
38318PRESERVE_NONE
38319static bool Interp_LoadPopFloat(InterpState &S, CodePtr &PC) {
38320 if (!LoadPop<PT_Float>(S, PC)) return false;
38321#if USE_TAILCALLS
38322 MUSTTAIL return InterpNext(S, PC);
38323#else
38324 return true;
38325#endif
38326}
38327#endif
38328#ifdef GET_DISASM
38329case OP_LoadPopSint8:
38330 Text.Op = PrintName("LoadPopSint8");
38331 break;
38332case OP_LoadPopUint8:
38333 Text.Op = PrintName("LoadPopUint8");
38334 break;
38335case OP_LoadPopSint16:
38336 Text.Op = PrintName("LoadPopSint16");
38337 break;
38338case OP_LoadPopUint16:
38339 Text.Op = PrintName("LoadPopUint16");
38340 break;
38341case OP_LoadPopSint32:
38342 Text.Op = PrintName("LoadPopSint32");
38343 break;
38344case OP_LoadPopUint32:
38345 Text.Op = PrintName("LoadPopUint32");
38346 break;
38347case OP_LoadPopSint64:
38348 Text.Op = PrintName("LoadPopSint64");
38349 break;
38350case OP_LoadPopUint64:
38351 Text.Op = PrintName("LoadPopUint64");
38352 break;
38353case OP_LoadPopIntAP:
38354 Text.Op = PrintName("LoadPopIntAP");
38355 break;
38356case OP_LoadPopIntAPS:
38357 Text.Op = PrintName("LoadPopIntAPS");
38358 break;
38359case OP_LoadPopBool:
38360 Text.Op = PrintName("LoadPopBool");
38361 break;
38362case OP_LoadPopFixedPoint:
38363 Text.Op = PrintName("LoadPopFixedPoint");
38364 break;
38365case OP_LoadPopPtr:
38366 Text.Op = PrintName("LoadPopPtr");
38367 break;
38368case OP_LoadPopMemberPtr:
38369 Text.Op = PrintName("LoadPopMemberPtr");
38370 break;
38371case OP_LoadPopFloat:
38372 Text.Op = PrintName("LoadPopFloat");
38373 break;
38374#endif
38375#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38376bool emitLoadPopSint8(SourceInfo);
38377bool emitLoadPopUint8(SourceInfo);
38378bool emitLoadPopSint16(SourceInfo);
38379bool emitLoadPopUint16(SourceInfo);
38380bool emitLoadPopSint32(SourceInfo);
38381bool emitLoadPopUint32(SourceInfo);
38382bool emitLoadPopSint64(SourceInfo);
38383bool emitLoadPopUint64(SourceInfo);
38384bool emitLoadPopIntAP(SourceInfo);
38385bool emitLoadPopIntAPS(SourceInfo);
38386bool emitLoadPopBool(SourceInfo);
38387bool emitLoadPopFixedPoint(SourceInfo);
38388bool emitLoadPopPtr(SourceInfo);
38389bool emitLoadPopMemberPtr(SourceInfo);
38390bool emitLoadPopFloat(SourceInfo);
38391#endif
38392#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38393[[nodiscard]] bool emitLoadPop(PrimType, SourceInfo I);
38394#endif
38395#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
38396bool
38397#if defined(GET_EVAL_IMPL)
38398EvalEmitter
38399#else
38400ByteCodeEmitter
38401#endif
38402::emitLoadPop(PrimType T0, SourceInfo I) {
38403 switch (T0) {
38404 case PT_Sint8:
38405 return emitLoadPopSint8(I);
38406 case PT_Uint8:
38407 return emitLoadPopUint8(I);
38408 case PT_Sint16:
38409 return emitLoadPopSint16(I);
38410 case PT_Uint16:
38411 return emitLoadPopUint16(I);
38412 case PT_Sint32:
38413 return emitLoadPopSint32(I);
38414 case PT_Uint32:
38415 return emitLoadPopUint32(I);
38416 case PT_Sint64:
38417 return emitLoadPopSint64(I);
38418 case PT_Uint64:
38419 return emitLoadPopUint64(I);
38420 case PT_IntAP:
38421 return emitLoadPopIntAP(I);
38422 case PT_IntAPS:
38423 return emitLoadPopIntAPS(I);
38424 case PT_Bool:
38425 return emitLoadPopBool(I);
38426 case PT_FixedPoint:
38427 return emitLoadPopFixedPoint(I);
38428 case PT_Ptr:
38429 return emitLoadPopPtr(I);
38430 case PT_MemberPtr:
38431 return emitLoadPopMemberPtr(I);
38432 case PT_Float:
38433 return emitLoadPopFloat(I);
38434 }
38435 llvm_unreachable("invalid enum value");
38436}
38437#endif
38438#ifdef GET_LINK_IMPL
38439bool ByteCodeEmitter::emitLoadPopSint8(SourceInfo L) {
38440 return emitOp<>(OP_LoadPopSint8, L);
38441}
38442bool ByteCodeEmitter::emitLoadPopUint8(SourceInfo L) {
38443 return emitOp<>(OP_LoadPopUint8, L);
38444}
38445bool ByteCodeEmitter::emitLoadPopSint16(SourceInfo L) {
38446 return emitOp<>(OP_LoadPopSint16, L);
38447}
38448bool ByteCodeEmitter::emitLoadPopUint16(SourceInfo L) {
38449 return emitOp<>(OP_LoadPopUint16, L);
38450}
38451bool ByteCodeEmitter::emitLoadPopSint32(SourceInfo L) {
38452 return emitOp<>(OP_LoadPopSint32, L);
38453}
38454bool ByteCodeEmitter::emitLoadPopUint32(SourceInfo L) {
38455 return emitOp<>(OP_LoadPopUint32, L);
38456}
38457bool ByteCodeEmitter::emitLoadPopSint64(SourceInfo L) {
38458 return emitOp<>(OP_LoadPopSint64, L);
38459}
38460bool ByteCodeEmitter::emitLoadPopUint64(SourceInfo L) {
38461 return emitOp<>(OP_LoadPopUint64, L);
38462}
38463bool ByteCodeEmitter::emitLoadPopIntAP(SourceInfo L) {
38464 return emitOp<>(OP_LoadPopIntAP, L);
38465}
38466bool ByteCodeEmitter::emitLoadPopIntAPS(SourceInfo L) {
38467 return emitOp<>(OP_LoadPopIntAPS, L);
38468}
38469bool ByteCodeEmitter::emitLoadPopBool(SourceInfo L) {
38470 return emitOp<>(OP_LoadPopBool, L);
38471}
38472bool ByteCodeEmitter::emitLoadPopFixedPoint(SourceInfo L) {
38473 return emitOp<>(OP_LoadPopFixedPoint, L);
38474}
38475bool ByteCodeEmitter::emitLoadPopPtr(SourceInfo L) {
38476 return emitOp<>(OP_LoadPopPtr, L);
38477}
38478bool ByteCodeEmitter::emitLoadPopMemberPtr(SourceInfo L) {
38479 return emitOp<>(OP_LoadPopMemberPtr, L);
38480}
38481bool ByteCodeEmitter::emitLoadPopFloat(SourceInfo L) {
38482 return emitOp<>(OP_LoadPopFloat, L);
38483}
38484#endif
38485#ifdef GET_EVAL_IMPL
38486bool EvalEmitter::emitLoadPopSint8(SourceInfo L) {
38487 if (!isActive()) return true;
38488 CurrentSource = L;
38489 return LoadPop<PT_Sint8>(S, OpPC);
38490}
38491bool EvalEmitter::emitLoadPopUint8(SourceInfo L) {
38492 if (!isActive()) return true;
38493 CurrentSource = L;
38494 return LoadPop<PT_Uint8>(S, OpPC);
38495}
38496bool EvalEmitter::emitLoadPopSint16(SourceInfo L) {
38497 if (!isActive()) return true;
38498 CurrentSource = L;
38499 return LoadPop<PT_Sint16>(S, OpPC);
38500}
38501bool EvalEmitter::emitLoadPopUint16(SourceInfo L) {
38502 if (!isActive()) return true;
38503 CurrentSource = L;
38504 return LoadPop<PT_Uint16>(S, OpPC);
38505}
38506bool EvalEmitter::emitLoadPopSint32(SourceInfo L) {
38507 if (!isActive()) return true;
38508 CurrentSource = L;
38509 return LoadPop<PT_Sint32>(S, OpPC);
38510}
38511bool EvalEmitter::emitLoadPopUint32(SourceInfo L) {
38512 if (!isActive()) return true;
38513 CurrentSource = L;
38514 return LoadPop<PT_Uint32>(S, OpPC);
38515}
38516bool EvalEmitter::emitLoadPopSint64(SourceInfo L) {
38517 if (!isActive()) return true;
38518 CurrentSource = L;
38519 return LoadPop<PT_Sint64>(S, OpPC);
38520}
38521bool EvalEmitter::emitLoadPopUint64(SourceInfo L) {
38522 if (!isActive()) return true;
38523 CurrentSource = L;
38524 return LoadPop<PT_Uint64>(S, OpPC);
38525}
38526bool EvalEmitter::emitLoadPopIntAP(SourceInfo L) {
38527 if (!isActive()) return true;
38528 CurrentSource = L;
38529 return LoadPop<PT_IntAP>(S, OpPC);
38530}
38531bool EvalEmitter::emitLoadPopIntAPS(SourceInfo L) {
38532 if (!isActive()) return true;
38533 CurrentSource = L;
38534 return LoadPop<PT_IntAPS>(S, OpPC);
38535}
38536bool EvalEmitter::emitLoadPopBool(SourceInfo L) {
38537 if (!isActive()) return true;
38538 CurrentSource = L;
38539 return LoadPop<PT_Bool>(S, OpPC);
38540}
38541bool EvalEmitter::emitLoadPopFixedPoint(SourceInfo L) {
38542 if (!isActive()) return true;
38543 CurrentSource = L;
38544 return LoadPop<PT_FixedPoint>(S, OpPC);
38545}
38546bool EvalEmitter::emitLoadPopPtr(SourceInfo L) {
38547 if (!isActive()) return true;
38548 CurrentSource = L;
38549 return LoadPop<PT_Ptr>(S, OpPC);
38550}
38551bool EvalEmitter::emitLoadPopMemberPtr(SourceInfo L) {
38552 if (!isActive()) return true;
38553 CurrentSource = L;
38554 return LoadPop<PT_MemberPtr>(S, OpPC);
38555}
38556bool EvalEmitter::emitLoadPopFloat(SourceInfo L) {
38557 if (!isActive()) return true;
38558 CurrentSource = L;
38559 return LoadPop<PT_Float>(S, OpPC);
38560}
38561#endif
38562#ifdef GET_OPCODE_NAMES
38563OP_MarkDestroyed,
38564#endif
38565#ifdef GET_INTERPFN_LIST
38566&Interp_MarkDestroyed,
38567#endif
38568#ifdef GET_INTERPFN_DISPATCHERS
38569PRESERVE_NONE
38570static bool Interp_MarkDestroyed(InterpState &S, CodePtr &PC) {
38571 if (!MarkDestroyed(S, PC)) return false;
38572#if USE_TAILCALLS
38573 MUSTTAIL return InterpNext(S, PC);
38574#else
38575 return true;
38576#endif
38577}
38578#endif
38579#ifdef GET_DISASM
38580case OP_MarkDestroyed:
38581 Text.Op = PrintName("MarkDestroyed");
38582 break;
38583#endif
38584#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38585bool emitMarkDestroyed(SourceInfo);
38586#endif
38587#ifdef GET_LINK_IMPL
38588bool ByteCodeEmitter::emitMarkDestroyed(SourceInfo L) {
38589 return emitOp<>(OP_MarkDestroyed, L);
38590}
38591#endif
38592#ifdef GET_EVAL_IMPL
38593bool EvalEmitter::emitMarkDestroyed(SourceInfo L) {
38594 if (!isActive()) return true;
38595 CurrentSource = L;
38596 return MarkDestroyed(S, OpPC);
38597}
38598#endif
38599#ifdef GET_OPCODE_NAMES
38600OP_Memcpy,
38601#endif
38602#ifdef GET_INTERPFN_LIST
38603&Interp_Memcpy,
38604#endif
38605#ifdef GET_INTERPFN_DISPATCHERS
38606PRESERVE_NONE
38607static bool Interp_Memcpy(InterpState &S, CodePtr &PC) {
38608 if (!Memcpy(S, PC)) return false;
38609#if USE_TAILCALLS
38610 MUSTTAIL return InterpNext(S, PC);
38611#else
38612 return true;
38613#endif
38614}
38615#endif
38616#ifdef GET_DISASM
38617case OP_Memcpy:
38618 Text.Op = PrintName("Memcpy");
38619 break;
38620#endif
38621#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38622bool emitMemcpy(SourceInfo);
38623#endif
38624#ifdef GET_LINK_IMPL
38625bool ByteCodeEmitter::emitMemcpy(SourceInfo L) {
38626 return emitOp<>(OP_Memcpy, L);
38627}
38628#endif
38629#ifdef GET_EVAL_IMPL
38630bool EvalEmitter::emitMemcpy(SourceInfo L) {
38631 if (!isActive()) return true;
38632 CurrentSource = L;
38633 return Memcpy(S, OpPC);
38634}
38635#endif
38636#ifdef GET_OPCODE_NAMES
38637OP_MulSint8,
38638OP_MulUint8,
38639OP_MulSint16,
38640OP_MulUint16,
38641OP_MulSint32,
38642OP_MulUint32,
38643OP_MulSint64,
38644OP_MulUint64,
38645OP_MulIntAP,
38646OP_MulIntAPS,
38647OP_MulBool,
38648OP_MulFixedPoint,
38649#endif
38650#ifdef GET_INTERPFN_LIST
38651&Interp_MulSint8,
38652&Interp_MulUint8,
38653&Interp_MulSint16,
38654&Interp_MulUint16,
38655&Interp_MulSint32,
38656&Interp_MulUint32,
38657&Interp_MulSint64,
38658&Interp_MulUint64,
38659&Interp_MulIntAP,
38660&Interp_MulIntAPS,
38661&Interp_MulBool,
38662&Interp_MulFixedPoint,
38663#endif
38664#ifdef GET_INTERPFN_DISPATCHERS
38665PRESERVE_NONE
38666static bool Interp_MulSint8(InterpState &S, CodePtr &PC) {
38667 if (!Mul<PT_Sint8>(S, PC)) return false;
38668#if USE_TAILCALLS
38669 MUSTTAIL return InterpNext(S, PC);
38670#else
38671 return true;
38672#endif
38673}
38674PRESERVE_NONE
38675static bool Interp_MulUint8(InterpState &S, CodePtr &PC) {
38676 if (!Mul<PT_Uint8>(S, PC)) return false;
38677#if USE_TAILCALLS
38678 MUSTTAIL return InterpNext(S, PC);
38679#else
38680 return true;
38681#endif
38682}
38683PRESERVE_NONE
38684static bool Interp_MulSint16(InterpState &S, CodePtr &PC) {
38685 if (!Mul<PT_Sint16>(S, PC)) return false;
38686#if USE_TAILCALLS
38687 MUSTTAIL return InterpNext(S, PC);
38688#else
38689 return true;
38690#endif
38691}
38692PRESERVE_NONE
38693static bool Interp_MulUint16(InterpState &S, CodePtr &PC) {
38694 if (!Mul<PT_Uint16>(S, PC)) return false;
38695#if USE_TAILCALLS
38696 MUSTTAIL return InterpNext(S, PC);
38697#else
38698 return true;
38699#endif
38700}
38701PRESERVE_NONE
38702static bool Interp_MulSint32(InterpState &S, CodePtr &PC) {
38703 if (!Mul<PT_Sint32>(S, PC)) return false;
38704#if USE_TAILCALLS
38705 MUSTTAIL return InterpNext(S, PC);
38706#else
38707 return true;
38708#endif
38709}
38710PRESERVE_NONE
38711static bool Interp_MulUint32(InterpState &S, CodePtr &PC) {
38712 if (!Mul<PT_Uint32>(S, PC)) return false;
38713#if USE_TAILCALLS
38714 MUSTTAIL return InterpNext(S, PC);
38715#else
38716 return true;
38717#endif
38718}
38719PRESERVE_NONE
38720static bool Interp_MulSint64(InterpState &S, CodePtr &PC) {
38721 if (!Mul<PT_Sint64>(S, PC)) return false;
38722#if USE_TAILCALLS
38723 MUSTTAIL return InterpNext(S, PC);
38724#else
38725 return true;
38726#endif
38727}
38728PRESERVE_NONE
38729static bool Interp_MulUint64(InterpState &S, CodePtr &PC) {
38730 if (!Mul<PT_Uint64>(S, PC)) return false;
38731#if USE_TAILCALLS
38732 MUSTTAIL return InterpNext(S, PC);
38733#else
38734 return true;
38735#endif
38736}
38737PRESERVE_NONE
38738static bool Interp_MulIntAP(InterpState &S, CodePtr &PC) {
38739 if (!Mul<PT_IntAP>(S, PC)) return false;
38740#if USE_TAILCALLS
38741 MUSTTAIL return InterpNext(S, PC);
38742#else
38743 return true;
38744#endif
38745}
38746PRESERVE_NONE
38747static bool Interp_MulIntAPS(InterpState &S, CodePtr &PC) {
38748 if (!Mul<PT_IntAPS>(S, PC)) return false;
38749#if USE_TAILCALLS
38750 MUSTTAIL return InterpNext(S, PC);
38751#else
38752 return true;
38753#endif
38754}
38755PRESERVE_NONE
38756static bool Interp_MulBool(InterpState &S, CodePtr &PC) {
38757 if (!Mul<PT_Bool>(S, PC)) return false;
38758#if USE_TAILCALLS
38759 MUSTTAIL return InterpNext(S, PC);
38760#else
38761 return true;
38762#endif
38763}
38764PRESERVE_NONE
38765static bool Interp_MulFixedPoint(InterpState &S, CodePtr &PC) {
38766 if (!Mul<PT_FixedPoint>(S, PC)) return false;
38767#if USE_TAILCALLS
38768 MUSTTAIL return InterpNext(S, PC);
38769#else
38770 return true;
38771#endif
38772}
38773#endif
38774#ifdef GET_DISASM
38775case OP_MulSint8:
38776 Text.Op = PrintName("MulSint8");
38777 break;
38778case OP_MulUint8:
38779 Text.Op = PrintName("MulUint8");
38780 break;
38781case OP_MulSint16:
38782 Text.Op = PrintName("MulSint16");
38783 break;
38784case OP_MulUint16:
38785 Text.Op = PrintName("MulUint16");
38786 break;
38787case OP_MulSint32:
38788 Text.Op = PrintName("MulSint32");
38789 break;
38790case OP_MulUint32:
38791 Text.Op = PrintName("MulUint32");
38792 break;
38793case OP_MulSint64:
38794 Text.Op = PrintName("MulSint64");
38795 break;
38796case OP_MulUint64:
38797 Text.Op = PrintName("MulUint64");
38798 break;
38799case OP_MulIntAP:
38800 Text.Op = PrintName("MulIntAP");
38801 break;
38802case OP_MulIntAPS:
38803 Text.Op = PrintName("MulIntAPS");
38804 break;
38805case OP_MulBool:
38806 Text.Op = PrintName("MulBool");
38807 break;
38808case OP_MulFixedPoint:
38809 Text.Op = PrintName("MulFixedPoint");
38810 break;
38811#endif
38812#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38813bool emitMulSint8(SourceInfo);
38814bool emitMulUint8(SourceInfo);
38815bool emitMulSint16(SourceInfo);
38816bool emitMulUint16(SourceInfo);
38817bool emitMulSint32(SourceInfo);
38818bool emitMulUint32(SourceInfo);
38819bool emitMulSint64(SourceInfo);
38820bool emitMulUint64(SourceInfo);
38821bool emitMulIntAP(SourceInfo);
38822bool emitMulIntAPS(SourceInfo);
38823bool emitMulBool(SourceInfo);
38824bool emitMulFixedPoint(SourceInfo);
38825#endif
38826#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38827[[nodiscard]] bool emitMul(PrimType, SourceInfo I);
38828#endif
38829#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
38830bool
38831#if defined(GET_EVAL_IMPL)
38832EvalEmitter
38833#else
38834ByteCodeEmitter
38835#endif
38836::emitMul(PrimType T0, SourceInfo I) {
38837 switch (T0) {
38838 case PT_Sint8:
38839 return emitMulSint8(I);
38840 case PT_Uint8:
38841 return emitMulUint8(I);
38842 case PT_Sint16:
38843 return emitMulSint16(I);
38844 case PT_Uint16:
38845 return emitMulUint16(I);
38846 case PT_Sint32:
38847 return emitMulSint32(I);
38848 case PT_Uint32:
38849 return emitMulUint32(I);
38850 case PT_Sint64:
38851 return emitMulSint64(I);
38852 case PT_Uint64:
38853 return emitMulUint64(I);
38854 case PT_IntAP:
38855 return emitMulIntAP(I);
38856 case PT_IntAPS:
38857 return emitMulIntAPS(I);
38858 case PT_Bool:
38859 return emitMulBool(I);
38860 case PT_FixedPoint:
38861 return emitMulFixedPoint(I);
38862 default: llvm_unreachable("invalid type: emitMul");
38863 }
38864 llvm_unreachable("invalid enum value");
38865}
38866#endif
38867#ifdef GET_LINK_IMPL
38868bool ByteCodeEmitter::emitMulSint8(SourceInfo L) {
38869 return emitOp<>(OP_MulSint8, L);
38870}
38871bool ByteCodeEmitter::emitMulUint8(SourceInfo L) {
38872 return emitOp<>(OP_MulUint8, L);
38873}
38874bool ByteCodeEmitter::emitMulSint16(SourceInfo L) {
38875 return emitOp<>(OP_MulSint16, L);
38876}
38877bool ByteCodeEmitter::emitMulUint16(SourceInfo L) {
38878 return emitOp<>(OP_MulUint16, L);
38879}
38880bool ByteCodeEmitter::emitMulSint32(SourceInfo L) {
38881 return emitOp<>(OP_MulSint32, L);
38882}
38883bool ByteCodeEmitter::emitMulUint32(SourceInfo L) {
38884 return emitOp<>(OP_MulUint32, L);
38885}
38886bool ByteCodeEmitter::emitMulSint64(SourceInfo L) {
38887 return emitOp<>(OP_MulSint64, L);
38888}
38889bool ByteCodeEmitter::emitMulUint64(SourceInfo L) {
38890 return emitOp<>(OP_MulUint64, L);
38891}
38892bool ByteCodeEmitter::emitMulIntAP(SourceInfo L) {
38893 return emitOp<>(OP_MulIntAP, L);
38894}
38895bool ByteCodeEmitter::emitMulIntAPS(SourceInfo L) {
38896 return emitOp<>(OP_MulIntAPS, L);
38897}
38898bool ByteCodeEmitter::emitMulBool(SourceInfo L) {
38899 return emitOp<>(OP_MulBool, L);
38900}
38901bool ByteCodeEmitter::emitMulFixedPoint(SourceInfo L) {
38902 return emitOp<>(OP_MulFixedPoint, L);
38903}
38904#endif
38905#ifdef GET_EVAL_IMPL
38906bool EvalEmitter::emitMulSint8(SourceInfo L) {
38907 if (!isActive()) return true;
38908 CurrentSource = L;
38909 return Mul<PT_Sint8>(S, OpPC);
38910}
38911bool EvalEmitter::emitMulUint8(SourceInfo L) {
38912 if (!isActive()) return true;
38913 CurrentSource = L;
38914 return Mul<PT_Uint8>(S, OpPC);
38915}
38916bool EvalEmitter::emitMulSint16(SourceInfo L) {
38917 if (!isActive()) return true;
38918 CurrentSource = L;
38919 return Mul<PT_Sint16>(S, OpPC);
38920}
38921bool EvalEmitter::emitMulUint16(SourceInfo L) {
38922 if (!isActive()) return true;
38923 CurrentSource = L;
38924 return Mul<PT_Uint16>(S, OpPC);
38925}
38926bool EvalEmitter::emitMulSint32(SourceInfo L) {
38927 if (!isActive()) return true;
38928 CurrentSource = L;
38929 return Mul<PT_Sint32>(S, OpPC);
38930}
38931bool EvalEmitter::emitMulUint32(SourceInfo L) {
38932 if (!isActive()) return true;
38933 CurrentSource = L;
38934 return Mul<PT_Uint32>(S, OpPC);
38935}
38936bool EvalEmitter::emitMulSint64(SourceInfo L) {
38937 if (!isActive()) return true;
38938 CurrentSource = L;
38939 return Mul<PT_Sint64>(S, OpPC);
38940}
38941bool EvalEmitter::emitMulUint64(SourceInfo L) {
38942 if (!isActive()) return true;
38943 CurrentSource = L;
38944 return Mul<PT_Uint64>(S, OpPC);
38945}
38946bool EvalEmitter::emitMulIntAP(SourceInfo L) {
38947 if (!isActive()) return true;
38948 CurrentSource = L;
38949 return Mul<PT_IntAP>(S, OpPC);
38950}
38951bool EvalEmitter::emitMulIntAPS(SourceInfo L) {
38952 if (!isActive()) return true;
38953 CurrentSource = L;
38954 return Mul<PT_IntAPS>(S, OpPC);
38955}
38956bool EvalEmitter::emitMulBool(SourceInfo L) {
38957 if (!isActive()) return true;
38958 CurrentSource = L;
38959 return Mul<PT_Bool>(S, OpPC);
38960}
38961bool EvalEmitter::emitMulFixedPoint(SourceInfo L) {
38962 if (!isActive()) return true;
38963 CurrentSource = L;
38964 return Mul<PT_FixedPoint>(S, OpPC);
38965}
38966#endif
38967#ifdef GET_OPCODE_NAMES
38968OP_MulcSint8,
38969OP_MulcUint8,
38970OP_MulcSint16,
38971OP_MulcUint16,
38972OP_MulcSint32,
38973OP_MulcUint32,
38974OP_MulcSint64,
38975OP_MulcUint64,
38976OP_MulcIntAP,
38977OP_MulcIntAPS,
38978OP_MulcFloat,
38979#endif
38980#ifdef GET_INTERPFN_LIST
38981&Interp_MulcSint8,
38982&Interp_MulcUint8,
38983&Interp_MulcSint16,
38984&Interp_MulcUint16,
38985&Interp_MulcSint32,
38986&Interp_MulcUint32,
38987&Interp_MulcSint64,
38988&Interp_MulcUint64,
38989&Interp_MulcIntAP,
38990&Interp_MulcIntAPS,
38991&Interp_MulcFloat,
38992#endif
38993#ifdef GET_INTERPFN_DISPATCHERS
38994PRESERVE_NONE
38995static bool Interp_MulcSint8(InterpState &S, CodePtr &PC) {
38996 if (!Mulc<PT_Sint8>(S, PC)) return false;
38997#if USE_TAILCALLS
38998 MUSTTAIL return InterpNext(S, PC);
38999#else
39000 return true;
39001#endif
39002}
39003PRESERVE_NONE
39004static bool Interp_MulcUint8(InterpState &S, CodePtr &PC) {
39005 if (!Mulc<PT_Uint8>(S, PC)) return false;
39006#if USE_TAILCALLS
39007 MUSTTAIL return InterpNext(S, PC);
39008#else
39009 return true;
39010#endif
39011}
39012PRESERVE_NONE
39013static bool Interp_MulcSint16(InterpState &S, CodePtr &PC) {
39014 if (!Mulc<PT_Sint16>(S, PC)) return false;
39015#if USE_TAILCALLS
39016 MUSTTAIL return InterpNext(S, PC);
39017#else
39018 return true;
39019#endif
39020}
39021PRESERVE_NONE
39022static bool Interp_MulcUint16(InterpState &S, CodePtr &PC) {
39023 if (!Mulc<PT_Uint16>(S, PC)) return false;
39024#if USE_TAILCALLS
39025 MUSTTAIL return InterpNext(S, PC);
39026#else
39027 return true;
39028#endif
39029}
39030PRESERVE_NONE
39031static bool Interp_MulcSint32(InterpState &S, CodePtr &PC) {
39032 if (!Mulc<PT_Sint32>(S, PC)) return false;
39033#if USE_TAILCALLS
39034 MUSTTAIL return InterpNext(S, PC);
39035#else
39036 return true;
39037#endif
39038}
39039PRESERVE_NONE
39040static bool Interp_MulcUint32(InterpState &S, CodePtr &PC) {
39041 if (!Mulc<PT_Uint32>(S, PC)) return false;
39042#if USE_TAILCALLS
39043 MUSTTAIL return InterpNext(S, PC);
39044#else
39045 return true;
39046#endif
39047}
39048PRESERVE_NONE
39049static bool Interp_MulcSint64(InterpState &S, CodePtr &PC) {
39050 if (!Mulc<PT_Sint64>(S, PC)) return false;
39051#if USE_TAILCALLS
39052 MUSTTAIL return InterpNext(S, PC);
39053#else
39054 return true;
39055#endif
39056}
39057PRESERVE_NONE
39058static bool Interp_MulcUint64(InterpState &S, CodePtr &PC) {
39059 if (!Mulc<PT_Uint64>(S, PC)) return false;
39060#if USE_TAILCALLS
39061 MUSTTAIL return InterpNext(S, PC);
39062#else
39063 return true;
39064#endif
39065}
39066PRESERVE_NONE
39067static bool Interp_MulcIntAP(InterpState &S, CodePtr &PC) {
39068 if (!Mulc<PT_IntAP>(S, PC)) return false;
39069#if USE_TAILCALLS
39070 MUSTTAIL return InterpNext(S, PC);
39071#else
39072 return true;
39073#endif
39074}
39075PRESERVE_NONE
39076static bool Interp_MulcIntAPS(InterpState &S, CodePtr &PC) {
39077 if (!Mulc<PT_IntAPS>(S, PC)) return false;
39078#if USE_TAILCALLS
39079 MUSTTAIL return InterpNext(S, PC);
39080#else
39081 return true;
39082#endif
39083}
39084PRESERVE_NONE
39085static bool Interp_MulcFloat(InterpState &S, CodePtr &PC) {
39086 if (!Mulc<PT_Float>(S, PC)) return false;
39087#if USE_TAILCALLS
39088 MUSTTAIL return InterpNext(S, PC);
39089#else
39090 return true;
39091#endif
39092}
39093#endif
39094#ifdef GET_DISASM
39095case OP_MulcSint8:
39096 Text.Op = PrintName("MulcSint8");
39097 break;
39098case OP_MulcUint8:
39099 Text.Op = PrintName("MulcUint8");
39100 break;
39101case OP_MulcSint16:
39102 Text.Op = PrintName("MulcSint16");
39103 break;
39104case OP_MulcUint16:
39105 Text.Op = PrintName("MulcUint16");
39106 break;
39107case OP_MulcSint32:
39108 Text.Op = PrintName("MulcSint32");
39109 break;
39110case OP_MulcUint32:
39111 Text.Op = PrintName("MulcUint32");
39112 break;
39113case OP_MulcSint64:
39114 Text.Op = PrintName("MulcSint64");
39115 break;
39116case OP_MulcUint64:
39117 Text.Op = PrintName("MulcUint64");
39118 break;
39119case OP_MulcIntAP:
39120 Text.Op = PrintName("MulcIntAP");
39121 break;
39122case OP_MulcIntAPS:
39123 Text.Op = PrintName("MulcIntAPS");
39124 break;
39125case OP_MulcFloat:
39126 Text.Op = PrintName("MulcFloat");
39127 break;
39128#endif
39129#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39130bool emitMulcSint8(SourceInfo);
39131bool emitMulcUint8(SourceInfo);
39132bool emitMulcSint16(SourceInfo);
39133bool emitMulcUint16(SourceInfo);
39134bool emitMulcSint32(SourceInfo);
39135bool emitMulcUint32(SourceInfo);
39136bool emitMulcSint64(SourceInfo);
39137bool emitMulcUint64(SourceInfo);
39138bool emitMulcIntAP(SourceInfo);
39139bool emitMulcIntAPS(SourceInfo);
39140bool emitMulcFloat(SourceInfo);
39141#endif
39142#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39143[[nodiscard]] bool emitMulc(PrimType, SourceInfo I);
39144#endif
39145#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
39146bool
39147#if defined(GET_EVAL_IMPL)
39148EvalEmitter
39149#else
39150ByteCodeEmitter
39151#endif
39152::emitMulc(PrimType T0, SourceInfo I) {
39153 switch (T0) {
39154 case PT_Sint8:
39155 return emitMulcSint8(I);
39156 case PT_Uint8:
39157 return emitMulcUint8(I);
39158 case PT_Sint16:
39159 return emitMulcSint16(I);
39160 case PT_Uint16:
39161 return emitMulcUint16(I);
39162 case PT_Sint32:
39163 return emitMulcSint32(I);
39164 case PT_Uint32:
39165 return emitMulcUint32(I);
39166 case PT_Sint64:
39167 return emitMulcSint64(I);
39168 case PT_Uint64:
39169 return emitMulcUint64(I);
39170 case PT_IntAP:
39171 return emitMulcIntAP(I);
39172 case PT_IntAPS:
39173 return emitMulcIntAPS(I);
39174 case PT_Float:
39175 return emitMulcFloat(I);
39176 default: llvm_unreachable("invalid type: emitMulc");
39177 }
39178 llvm_unreachable("invalid enum value");
39179}
39180#endif
39181#ifdef GET_LINK_IMPL
39182bool ByteCodeEmitter::emitMulcSint8(SourceInfo L) {
39183 return emitOp<>(OP_MulcSint8, L);
39184}
39185bool ByteCodeEmitter::emitMulcUint8(SourceInfo L) {
39186 return emitOp<>(OP_MulcUint8, L);
39187}
39188bool ByteCodeEmitter::emitMulcSint16(SourceInfo L) {
39189 return emitOp<>(OP_MulcSint16, L);
39190}
39191bool ByteCodeEmitter::emitMulcUint16(SourceInfo L) {
39192 return emitOp<>(OP_MulcUint16, L);
39193}
39194bool ByteCodeEmitter::emitMulcSint32(SourceInfo L) {
39195 return emitOp<>(OP_MulcSint32, L);
39196}
39197bool ByteCodeEmitter::emitMulcUint32(SourceInfo L) {
39198 return emitOp<>(OP_MulcUint32, L);
39199}
39200bool ByteCodeEmitter::emitMulcSint64(SourceInfo L) {
39201 return emitOp<>(OP_MulcSint64, L);
39202}
39203bool ByteCodeEmitter::emitMulcUint64(SourceInfo L) {
39204 return emitOp<>(OP_MulcUint64, L);
39205}
39206bool ByteCodeEmitter::emitMulcIntAP(SourceInfo L) {
39207 return emitOp<>(OP_MulcIntAP, L);
39208}
39209bool ByteCodeEmitter::emitMulcIntAPS(SourceInfo L) {
39210 return emitOp<>(OP_MulcIntAPS, L);
39211}
39212bool ByteCodeEmitter::emitMulcFloat(SourceInfo L) {
39213 return emitOp<>(OP_MulcFloat, L);
39214}
39215#endif
39216#ifdef GET_EVAL_IMPL
39217bool EvalEmitter::emitMulcSint8(SourceInfo L) {
39218 if (!isActive()) return true;
39219 CurrentSource = L;
39220 return Mulc<PT_Sint8>(S, OpPC);
39221}
39222bool EvalEmitter::emitMulcUint8(SourceInfo L) {
39223 if (!isActive()) return true;
39224 CurrentSource = L;
39225 return Mulc<PT_Uint8>(S, OpPC);
39226}
39227bool EvalEmitter::emitMulcSint16(SourceInfo L) {
39228 if (!isActive()) return true;
39229 CurrentSource = L;
39230 return Mulc<PT_Sint16>(S, OpPC);
39231}
39232bool EvalEmitter::emitMulcUint16(SourceInfo L) {
39233 if (!isActive()) return true;
39234 CurrentSource = L;
39235 return Mulc<PT_Uint16>(S, OpPC);
39236}
39237bool EvalEmitter::emitMulcSint32(SourceInfo L) {
39238 if (!isActive()) return true;
39239 CurrentSource = L;
39240 return Mulc<PT_Sint32>(S, OpPC);
39241}
39242bool EvalEmitter::emitMulcUint32(SourceInfo L) {
39243 if (!isActive()) return true;
39244 CurrentSource = L;
39245 return Mulc<PT_Uint32>(S, OpPC);
39246}
39247bool EvalEmitter::emitMulcSint64(SourceInfo L) {
39248 if (!isActive()) return true;
39249 CurrentSource = L;
39250 return Mulc<PT_Sint64>(S, OpPC);
39251}
39252bool EvalEmitter::emitMulcUint64(SourceInfo L) {
39253 if (!isActive()) return true;
39254 CurrentSource = L;
39255 return Mulc<PT_Uint64>(S, OpPC);
39256}
39257bool EvalEmitter::emitMulcIntAP(SourceInfo L) {
39258 if (!isActive()) return true;
39259 CurrentSource = L;
39260 return Mulc<PT_IntAP>(S, OpPC);
39261}
39262bool EvalEmitter::emitMulcIntAPS(SourceInfo L) {
39263 if (!isActive()) return true;
39264 CurrentSource = L;
39265 return Mulc<PT_IntAPS>(S, OpPC);
39266}
39267bool EvalEmitter::emitMulcFloat(SourceInfo L) {
39268 if (!isActive()) return true;
39269 CurrentSource = L;
39270 return Mulc<PT_Float>(S, OpPC);
39271}
39272#endif
39273#ifdef GET_OPCODE_NAMES
39274OP_Mulf,
39275#endif
39276#ifdef GET_INTERPFN_LIST
39277&Interp_Mulf,
39278#endif
39279#ifdef GET_INTERPFN_DISPATCHERS
39280PRESERVE_NONE
39281static bool Interp_Mulf(InterpState &S, CodePtr &PC) {
39282 {
39283 CodePtr OpPC = PC;
39284 const auto V0 = ReadArg<uint32_t>(S, PC);
39285 if (!Mulf(S, OpPC, V0)) return false;
39286 }
39287#if USE_TAILCALLS
39288 MUSTTAIL return InterpNext(S, PC);
39289#else
39290 return true;
39291#endif
39292}
39293#endif
39294#ifdef GET_DISASM
39295case OP_Mulf:
39296 Text.Op = PrintName("Mulf");
39297 Text.Args.push_back(printArg<uint32_t>(P, PC));
39298 break;
39299#endif
39300#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39301bool emitMulf( uint32_t , SourceInfo);
39302#endif
39303#ifdef GET_LINK_IMPL
39304bool ByteCodeEmitter::emitMulf( uint32_t A0, SourceInfo L) {
39305 return emitOp<uint32_t>(OP_Mulf, A0, L);
39306}
39307#endif
39308#ifdef GET_EVAL_IMPL
39309bool EvalEmitter::emitMulf( uint32_t A0, SourceInfo L) {
39310 if (!isActive()) return true;
39311 CurrentSource = L;
39312 return Mulf(S, OpPC, A0);
39313}
39314#endif
39315#ifdef GET_OPCODE_NAMES
39316OP_NESint8,
39317OP_NEUint8,
39318OP_NESint16,
39319OP_NEUint16,
39320OP_NESint32,
39321OP_NEUint32,
39322OP_NESint64,
39323OP_NEUint64,
39324OP_NEIntAP,
39325OP_NEIntAPS,
39326OP_NEBool,
39327OP_NEFixedPoint,
39328OP_NEPtr,
39329OP_NEMemberPtr,
39330OP_NEFloat,
39331#endif
39332#ifdef GET_INTERPFN_LIST
39333&Interp_NESint8,
39334&Interp_NEUint8,
39335&Interp_NESint16,
39336&Interp_NEUint16,
39337&Interp_NESint32,
39338&Interp_NEUint32,
39339&Interp_NESint64,
39340&Interp_NEUint64,
39341&Interp_NEIntAP,
39342&Interp_NEIntAPS,
39343&Interp_NEBool,
39344&Interp_NEFixedPoint,
39345&Interp_NEPtr,
39346&Interp_NEMemberPtr,
39347&Interp_NEFloat,
39348#endif
39349#ifdef GET_INTERPFN_DISPATCHERS
39350PRESERVE_NONE
39351static bool Interp_NESint8(InterpState &S, CodePtr &PC) {
39352 if (!NE<PT_Sint8>(S, PC)) return false;
39353#if USE_TAILCALLS
39354 MUSTTAIL return InterpNext(S, PC);
39355#else
39356 return true;
39357#endif
39358}
39359PRESERVE_NONE
39360static bool Interp_NEUint8(InterpState &S, CodePtr &PC) {
39361 if (!NE<PT_Uint8>(S, PC)) return false;
39362#if USE_TAILCALLS
39363 MUSTTAIL return InterpNext(S, PC);
39364#else
39365 return true;
39366#endif
39367}
39368PRESERVE_NONE
39369static bool Interp_NESint16(InterpState &S, CodePtr &PC) {
39370 if (!NE<PT_Sint16>(S, PC)) return false;
39371#if USE_TAILCALLS
39372 MUSTTAIL return InterpNext(S, PC);
39373#else
39374 return true;
39375#endif
39376}
39377PRESERVE_NONE
39378static bool Interp_NEUint16(InterpState &S, CodePtr &PC) {
39379 if (!NE<PT_Uint16>(S, PC)) return false;
39380#if USE_TAILCALLS
39381 MUSTTAIL return InterpNext(S, PC);
39382#else
39383 return true;
39384#endif
39385}
39386PRESERVE_NONE
39387static bool Interp_NESint32(InterpState &S, CodePtr &PC) {
39388 if (!NE<PT_Sint32>(S, PC)) return false;
39389#if USE_TAILCALLS
39390 MUSTTAIL return InterpNext(S, PC);
39391#else
39392 return true;
39393#endif
39394}
39395PRESERVE_NONE
39396static bool Interp_NEUint32(InterpState &S, CodePtr &PC) {
39397 if (!NE<PT_Uint32>(S, PC)) return false;
39398#if USE_TAILCALLS
39399 MUSTTAIL return InterpNext(S, PC);
39400#else
39401 return true;
39402#endif
39403}
39404PRESERVE_NONE
39405static bool Interp_NESint64(InterpState &S, CodePtr &PC) {
39406 if (!NE<PT_Sint64>(S, PC)) return false;
39407#if USE_TAILCALLS
39408 MUSTTAIL return InterpNext(S, PC);
39409#else
39410 return true;
39411#endif
39412}
39413PRESERVE_NONE
39414static bool Interp_NEUint64(InterpState &S, CodePtr &PC) {
39415 if (!NE<PT_Uint64>(S, PC)) return false;
39416#if USE_TAILCALLS
39417 MUSTTAIL return InterpNext(S, PC);
39418#else
39419 return true;
39420#endif
39421}
39422PRESERVE_NONE
39423static bool Interp_NEIntAP(InterpState &S, CodePtr &PC) {
39424 if (!NE<PT_IntAP>(S, PC)) return false;
39425#if USE_TAILCALLS
39426 MUSTTAIL return InterpNext(S, PC);
39427#else
39428 return true;
39429#endif
39430}
39431PRESERVE_NONE
39432static bool Interp_NEIntAPS(InterpState &S, CodePtr &PC) {
39433 if (!NE<PT_IntAPS>(S, PC)) return false;
39434#if USE_TAILCALLS
39435 MUSTTAIL return InterpNext(S, PC);
39436#else
39437 return true;
39438#endif
39439}
39440PRESERVE_NONE
39441static bool Interp_NEBool(InterpState &S, CodePtr &PC) {
39442 if (!NE<PT_Bool>(S, PC)) return false;
39443#if USE_TAILCALLS
39444 MUSTTAIL return InterpNext(S, PC);
39445#else
39446 return true;
39447#endif
39448}
39449PRESERVE_NONE
39450static bool Interp_NEFixedPoint(InterpState &S, CodePtr &PC) {
39451 if (!NE<PT_FixedPoint>(S, PC)) return false;
39452#if USE_TAILCALLS
39453 MUSTTAIL return InterpNext(S, PC);
39454#else
39455 return true;
39456#endif
39457}
39458PRESERVE_NONE
39459static bool Interp_NEPtr(InterpState &S, CodePtr &PC) {
39460 if (!NE<PT_Ptr>(S, PC)) return false;
39461#if USE_TAILCALLS
39462 MUSTTAIL return InterpNext(S, PC);
39463#else
39464 return true;
39465#endif
39466}
39467PRESERVE_NONE
39468static bool Interp_NEMemberPtr(InterpState &S, CodePtr &PC) {
39469 if (!NE<PT_MemberPtr>(S, PC)) return false;
39470#if USE_TAILCALLS
39471 MUSTTAIL return InterpNext(S, PC);
39472#else
39473 return true;
39474#endif
39475}
39476PRESERVE_NONE
39477static bool Interp_NEFloat(InterpState &S, CodePtr &PC) {
39478 if (!NE<PT_Float>(S, PC)) return false;
39479#if USE_TAILCALLS
39480 MUSTTAIL return InterpNext(S, PC);
39481#else
39482 return true;
39483#endif
39484}
39485#endif
39486#ifdef GET_DISASM
39487case OP_NESint8:
39488 Text.Op = PrintName("NESint8");
39489 break;
39490case OP_NEUint8:
39491 Text.Op = PrintName("NEUint8");
39492 break;
39493case OP_NESint16:
39494 Text.Op = PrintName("NESint16");
39495 break;
39496case OP_NEUint16:
39497 Text.Op = PrintName("NEUint16");
39498 break;
39499case OP_NESint32:
39500 Text.Op = PrintName("NESint32");
39501 break;
39502case OP_NEUint32:
39503 Text.Op = PrintName("NEUint32");
39504 break;
39505case OP_NESint64:
39506 Text.Op = PrintName("NESint64");
39507 break;
39508case OP_NEUint64:
39509 Text.Op = PrintName("NEUint64");
39510 break;
39511case OP_NEIntAP:
39512 Text.Op = PrintName("NEIntAP");
39513 break;
39514case OP_NEIntAPS:
39515 Text.Op = PrintName("NEIntAPS");
39516 break;
39517case OP_NEBool:
39518 Text.Op = PrintName("NEBool");
39519 break;
39520case OP_NEFixedPoint:
39521 Text.Op = PrintName("NEFixedPoint");
39522 break;
39523case OP_NEPtr:
39524 Text.Op = PrintName("NEPtr");
39525 break;
39526case OP_NEMemberPtr:
39527 Text.Op = PrintName("NEMemberPtr");
39528 break;
39529case OP_NEFloat:
39530 Text.Op = PrintName("NEFloat");
39531 break;
39532#endif
39533#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39534bool emitNESint8(SourceInfo);
39535bool emitNEUint8(SourceInfo);
39536bool emitNESint16(SourceInfo);
39537bool emitNEUint16(SourceInfo);
39538bool emitNESint32(SourceInfo);
39539bool emitNEUint32(SourceInfo);
39540bool emitNESint64(SourceInfo);
39541bool emitNEUint64(SourceInfo);
39542bool emitNEIntAP(SourceInfo);
39543bool emitNEIntAPS(SourceInfo);
39544bool emitNEBool(SourceInfo);
39545bool emitNEFixedPoint(SourceInfo);
39546bool emitNEPtr(SourceInfo);
39547bool emitNEMemberPtr(SourceInfo);
39548bool emitNEFloat(SourceInfo);
39549#endif
39550#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39551[[nodiscard]] bool emitNE(PrimType, SourceInfo I);
39552#endif
39553#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
39554bool
39555#if defined(GET_EVAL_IMPL)
39556EvalEmitter
39557#else
39558ByteCodeEmitter
39559#endif
39560::emitNE(PrimType T0, SourceInfo I) {
39561 switch (T0) {
39562 case PT_Sint8:
39563 return emitNESint8(I);
39564 case PT_Uint8:
39565 return emitNEUint8(I);
39566 case PT_Sint16:
39567 return emitNESint16(I);
39568 case PT_Uint16:
39569 return emitNEUint16(I);
39570 case PT_Sint32:
39571 return emitNESint32(I);
39572 case PT_Uint32:
39573 return emitNEUint32(I);
39574 case PT_Sint64:
39575 return emitNESint64(I);
39576 case PT_Uint64:
39577 return emitNEUint64(I);
39578 case PT_IntAP:
39579 return emitNEIntAP(I);
39580 case PT_IntAPS:
39581 return emitNEIntAPS(I);
39582 case PT_Bool:
39583 return emitNEBool(I);
39584 case PT_FixedPoint:
39585 return emitNEFixedPoint(I);
39586 case PT_Ptr:
39587 return emitNEPtr(I);
39588 case PT_MemberPtr:
39589 return emitNEMemberPtr(I);
39590 case PT_Float:
39591 return emitNEFloat(I);
39592 }
39593 llvm_unreachable("invalid enum value");
39594}
39595#endif
39596#ifdef GET_LINK_IMPL
39597bool ByteCodeEmitter::emitNESint8(SourceInfo L) {
39598 return emitOp<>(OP_NESint8, L);
39599}
39600bool ByteCodeEmitter::emitNEUint8(SourceInfo L) {
39601 return emitOp<>(OP_NEUint8, L);
39602}
39603bool ByteCodeEmitter::emitNESint16(SourceInfo L) {
39604 return emitOp<>(OP_NESint16, L);
39605}
39606bool ByteCodeEmitter::emitNEUint16(SourceInfo L) {
39607 return emitOp<>(OP_NEUint16, L);
39608}
39609bool ByteCodeEmitter::emitNESint32(SourceInfo L) {
39610 return emitOp<>(OP_NESint32, L);
39611}
39612bool ByteCodeEmitter::emitNEUint32(SourceInfo L) {
39613 return emitOp<>(OP_NEUint32, L);
39614}
39615bool ByteCodeEmitter::emitNESint64(SourceInfo L) {
39616 return emitOp<>(OP_NESint64, L);
39617}
39618bool ByteCodeEmitter::emitNEUint64(SourceInfo L) {
39619 return emitOp<>(OP_NEUint64, L);
39620}
39621bool ByteCodeEmitter::emitNEIntAP(SourceInfo L) {
39622 return emitOp<>(OP_NEIntAP, L);
39623}
39624bool ByteCodeEmitter::emitNEIntAPS(SourceInfo L) {
39625 return emitOp<>(OP_NEIntAPS, L);
39626}
39627bool ByteCodeEmitter::emitNEBool(SourceInfo L) {
39628 return emitOp<>(OP_NEBool, L);
39629}
39630bool ByteCodeEmitter::emitNEFixedPoint(SourceInfo L) {
39631 return emitOp<>(OP_NEFixedPoint, L);
39632}
39633bool ByteCodeEmitter::emitNEPtr(SourceInfo L) {
39634 return emitOp<>(OP_NEPtr, L);
39635}
39636bool ByteCodeEmitter::emitNEMemberPtr(SourceInfo L) {
39637 return emitOp<>(OP_NEMemberPtr, L);
39638}
39639bool ByteCodeEmitter::emitNEFloat(SourceInfo L) {
39640 return emitOp<>(OP_NEFloat, L);
39641}
39642#endif
39643#ifdef GET_EVAL_IMPL
39644bool EvalEmitter::emitNESint8(SourceInfo L) {
39645 if (!isActive()) return true;
39646 CurrentSource = L;
39647 return NE<PT_Sint8>(S, OpPC);
39648}
39649bool EvalEmitter::emitNEUint8(SourceInfo L) {
39650 if (!isActive()) return true;
39651 CurrentSource = L;
39652 return NE<PT_Uint8>(S, OpPC);
39653}
39654bool EvalEmitter::emitNESint16(SourceInfo L) {
39655 if (!isActive()) return true;
39656 CurrentSource = L;
39657 return NE<PT_Sint16>(S, OpPC);
39658}
39659bool EvalEmitter::emitNEUint16(SourceInfo L) {
39660 if (!isActive()) return true;
39661 CurrentSource = L;
39662 return NE<PT_Uint16>(S, OpPC);
39663}
39664bool EvalEmitter::emitNESint32(SourceInfo L) {
39665 if (!isActive()) return true;
39666 CurrentSource = L;
39667 return NE<PT_Sint32>(S, OpPC);
39668}
39669bool EvalEmitter::emitNEUint32(SourceInfo L) {
39670 if (!isActive()) return true;
39671 CurrentSource = L;
39672 return NE<PT_Uint32>(S, OpPC);
39673}
39674bool EvalEmitter::emitNESint64(SourceInfo L) {
39675 if (!isActive()) return true;
39676 CurrentSource = L;
39677 return NE<PT_Sint64>(S, OpPC);
39678}
39679bool EvalEmitter::emitNEUint64(SourceInfo L) {
39680 if (!isActive()) return true;
39681 CurrentSource = L;
39682 return NE<PT_Uint64>(S, OpPC);
39683}
39684bool EvalEmitter::emitNEIntAP(SourceInfo L) {
39685 if (!isActive()) return true;
39686 CurrentSource = L;
39687 return NE<PT_IntAP>(S, OpPC);
39688}
39689bool EvalEmitter::emitNEIntAPS(SourceInfo L) {
39690 if (!isActive()) return true;
39691 CurrentSource = L;
39692 return NE<PT_IntAPS>(S, OpPC);
39693}
39694bool EvalEmitter::emitNEBool(SourceInfo L) {
39695 if (!isActive()) return true;
39696 CurrentSource = L;
39697 return NE<PT_Bool>(S, OpPC);
39698}
39699bool EvalEmitter::emitNEFixedPoint(SourceInfo L) {
39700 if (!isActive()) return true;
39701 CurrentSource = L;
39702 return NE<PT_FixedPoint>(S, OpPC);
39703}
39704bool EvalEmitter::emitNEPtr(SourceInfo L) {
39705 if (!isActive()) return true;
39706 CurrentSource = L;
39707 return NE<PT_Ptr>(S, OpPC);
39708}
39709bool EvalEmitter::emitNEMemberPtr(SourceInfo L) {
39710 if (!isActive()) return true;
39711 CurrentSource = L;
39712 return NE<PT_MemberPtr>(S, OpPC);
39713}
39714bool EvalEmitter::emitNEFloat(SourceInfo L) {
39715 if (!isActive()) return true;
39716 CurrentSource = L;
39717 return NE<PT_Float>(S, OpPC);
39718}
39719#endif
39720#ifdef GET_OPCODE_NAMES
39721OP_NarrowPtr,
39722#endif
39723#ifdef GET_INTERPFN_LIST
39724&Interp_NarrowPtr,
39725#endif
39726#ifdef GET_INTERPFN_DISPATCHERS
39727PRESERVE_NONE
39728static bool Interp_NarrowPtr(InterpState &S, CodePtr &PC) {
39729 NarrowPtr(S, PC);
39730#if USE_TAILCALLS
39731 MUSTTAIL return InterpNext(S, PC);
39732#else
39733 return true;
39734#endif
39735}
39736#endif
39737#ifdef GET_DISASM
39738case OP_NarrowPtr:
39739 Text.Op = PrintName("NarrowPtr");
39740 break;
39741#endif
39742#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39743bool emitNarrowPtr(SourceInfo);
39744#endif
39745#ifdef GET_LINK_IMPL
39746bool ByteCodeEmitter::emitNarrowPtr(SourceInfo L) {
39747 return emitOp<>(OP_NarrowPtr, L);
39748}
39749#endif
39750#ifdef GET_EVAL_IMPL
39751bool EvalEmitter::emitNarrowPtr(SourceInfo L) {
39752 if (!isActive()) return true;
39753 CurrentSource = L;
39754 return NarrowPtr(S, OpPC);
39755}
39756#endif
39757#ifdef GET_OPCODE_NAMES
39758OP_NegSint8,
39759OP_NegUint8,
39760OP_NegSint16,
39761OP_NegUint16,
39762OP_NegSint32,
39763OP_NegUint32,
39764OP_NegSint64,
39765OP_NegUint64,
39766OP_NegIntAP,
39767OP_NegIntAPS,
39768OP_NegBool,
39769OP_NegFloat,
39770OP_NegFixedPoint,
39771#endif
39772#ifdef GET_INTERPFN_LIST
39773&Interp_NegSint8,
39774&Interp_NegUint8,
39775&Interp_NegSint16,
39776&Interp_NegUint16,
39777&Interp_NegSint32,
39778&Interp_NegUint32,
39779&Interp_NegSint64,
39780&Interp_NegUint64,
39781&Interp_NegIntAP,
39782&Interp_NegIntAPS,
39783&Interp_NegBool,
39784&Interp_NegFloat,
39785&Interp_NegFixedPoint,
39786#endif
39787#ifdef GET_INTERPFN_DISPATCHERS
39788PRESERVE_NONE
39789static bool Interp_NegSint8(InterpState &S, CodePtr &PC) {
39790 if (!Neg<PT_Sint8>(S, PC)) return false;
39791#if USE_TAILCALLS
39792 MUSTTAIL return InterpNext(S, PC);
39793#else
39794 return true;
39795#endif
39796}
39797PRESERVE_NONE
39798static bool Interp_NegUint8(InterpState &S, CodePtr &PC) {
39799 if (!Neg<PT_Uint8>(S, PC)) return false;
39800#if USE_TAILCALLS
39801 MUSTTAIL return InterpNext(S, PC);
39802#else
39803 return true;
39804#endif
39805}
39806PRESERVE_NONE
39807static bool Interp_NegSint16(InterpState &S, CodePtr &PC) {
39808 if (!Neg<PT_Sint16>(S, PC)) return false;
39809#if USE_TAILCALLS
39810 MUSTTAIL return InterpNext(S, PC);
39811#else
39812 return true;
39813#endif
39814}
39815PRESERVE_NONE
39816static bool Interp_NegUint16(InterpState &S, CodePtr &PC) {
39817 if (!Neg<PT_Uint16>(S, PC)) return false;
39818#if USE_TAILCALLS
39819 MUSTTAIL return InterpNext(S, PC);
39820#else
39821 return true;
39822#endif
39823}
39824PRESERVE_NONE
39825static bool Interp_NegSint32(InterpState &S, CodePtr &PC) {
39826 if (!Neg<PT_Sint32>(S, PC)) return false;
39827#if USE_TAILCALLS
39828 MUSTTAIL return InterpNext(S, PC);
39829#else
39830 return true;
39831#endif
39832}
39833PRESERVE_NONE
39834static bool Interp_NegUint32(InterpState &S, CodePtr &PC) {
39835 if (!Neg<PT_Uint32>(S, PC)) return false;
39836#if USE_TAILCALLS
39837 MUSTTAIL return InterpNext(S, PC);
39838#else
39839 return true;
39840#endif
39841}
39842PRESERVE_NONE
39843static bool Interp_NegSint64(InterpState &S, CodePtr &PC) {
39844 if (!Neg<PT_Sint64>(S, PC)) return false;
39845#if USE_TAILCALLS
39846 MUSTTAIL return InterpNext(S, PC);
39847#else
39848 return true;
39849#endif
39850}
39851PRESERVE_NONE
39852static bool Interp_NegUint64(InterpState &S, CodePtr &PC) {
39853 if (!Neg<PT_Uint64>(S, PC)) return false;
39854#if USE_TAILCALLS
39855 MUSTTAIL return InterpNext(S, PC);
39856#else
39857 return true;
39858#endif
39859}
39860PRESERVE_NONE
39861static bool Interp_NegIntAP(InterpState &S, CodePtr &PC) {
39862 if (!Neg<PT_IntAP>(S, PC)) return false;
39863#if USE_TAILCALLS
39864 MUSTTAIL return InterpNext(S, PC);
39865#else
39866 return true;
39867#endif
39868}
39869PRESERVE_NONE
39870static bool Interp_NegIntAPS(InterpState &S, CodePtr &PC) {
39871 if (!Neg<PT_IntAPS>(S, PC)) return false;
39872#if USE_TAILCALLS
39873 MUSTTAIL return InterpNext(S, PC);
39874#else
39875 return true;
39876#endif
39877}
39878PRESERVE_NONE
39879static bool Interp_NegBool(InterpState &S, CodePtr &PC) {
39880 if (!Neg<PT_Bool>(S, PC)) return false;
39881#if USE_TAILCALLS
39882 MUSTTAIL return InterpNext(S, PC);
39883#else
39884 return true;
39885#endif
39886}
39887PRESERVE_NONE
39888static bool Interp_NegFloat(InterpState &S, CodePtr &PC) {
39889 if (!Neg<PT_Float>(S, PC)) return false;
39890#if USE_TAILCALLS
39891 MUSTTAIL return InterpNext(S, PC);
39892#else
39893 return true;
39894#endif
39895}
39896PRESERVE_NONE
39897static bool Interp_NegFixedPoint(InterpState &S, CodePtr &PC) {
39898 if (!Neg<PT_FixedPoint>(S, PC)) return false;
39899#if USE_TAILCALLS
39900 MUSTTAIL return InterpNext(S, PC);
39901#else
39902 return true;
39903#endif
39904}
39905#endif
39906#ifdef GET_DISASM
39907case OP_NegSint8:
39908 Text.Op = PrintName("NegSint8");
39909 break;
39910case OP_NegUint8:
39911 Text.Op = PrintName("NegUint8");
39912 break;
39913case OP_NegSint16:
39914 Text.Op = PrintName("NegSint16");
39915 break;
39916case OP_NegUint16:
39917 Text.Op = PrintName("NegUint16");
39918 break;
39919case OP_NegSint32:
39920 Text.Op = PrintName("NegSint32");
39921 break;
39922case OP_NegUint32:
39923 Text.Op = PrintName("NegUint32");
39924 break;
39925case OP_NegSint64:
39926 Text.Op = PrintName("NegSint64");
39927 break;
39928case OP_NegUint64:
39929 Text.Op = PrintName("NegUint64");
39930 break;
39931case OP_NegIntAP:
39932 Text.Op = PrintName("NegIntAP");
39933 break;
39934case OP_NegIntAPS:
39935 Text.Op = PrintName("NegIntAPS");
39936 break;
39937case OP_NegBool:
39938 Text.Op = PrintName("NegBool");
39939 break;
39940case OP_NegFloat:
39941 Text.Op = PrintName("NegFloat");
39942 break;
39943case OP_NegFixedPoint:
39944 Text.Op = PrintName("NegFixedPoint");
39945 break;
39946#endif
39947#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39948bool emitNegSint8(SourceInfo);
39949bool emitNegUint8(SourceInfo);
39950bool emitNegSint16(SourceInfo);
39951bool emitNegUint16(SourceInfo);
39952bool emitNegSint32(SourceInfo);
39953bool emitNegUint32(SourceInfo);
39954bool emitNegSint64(SourceInfo);
39955bool emitNegUint64(SourceInfo);
39956bool emitNegIntAP(SourceInfo);
39957bool emitNegIntAPS(SourceInfo);
39958bool emitNegBool(SourceInfo);
39959bool emitNegFloat(SourceInfo);
39960bool emitNegFixedPoint(SourceInfo);
39961#endif
39962#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39963[[nodiscard]] bool emitNeg(PrimType, SourceInfo I);
39964#endif
39965#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
39966bool
39967#if defined(GET_EVAL_IMPL)
39968EvalEmitter
39969#else
39970ByteCodeEmitter
39971#endif
39972::emitNeg(PrimType T0, SourceInfo I) {
39973 switch (T0) {
39974 case PT_Sint8:
39975 return emitNegSint8(I);
39976 case PT_Uint8:
39977 return emitNegUint8(I);
39978 case PT_Sint16:
39979 return emitNegSint16(I);
39980 case PT_Uint16:
39981 return emitNegUint16(I);
39982 case PT_Sint32:
39983 return emitNegSint32(I);
39984 case PT_Uint32:
39985 return emitNegUint32(I);
39986 case PT_Sint64:
39987 return emitNegSint64(I);
39988 case PT_Uint64:
39989 return emitNegUint64(I);
39990 case PT_IntAP:
39991 return emitNegIntAP(I);
39992 case PT_IntAPS:
39993 return emitNegIntAPS(I);
39994 case PT_Bool:
39995 return emitNegBool(I);
39996 case PT_Float:
39997 return emitNegFloat(I);
39998 case PT_FixedPoint:
39999 return emitNegFixedPoint(I);
40000 default: llvm_unreachable("invalid type: emitNeg");
40001 }
40002 llvm_unreachable("invalid enum value");
40003}
40004#endif
40005#ifdef GET_LINK_IMPL
40006bool ByteCodeEmitter::emitNegSint8(SourceInfo L) {
40007 return emitOp<>(OP_NegSint8, L);
40008}
40009bool ByteCodeEmitter::emitNegUint8(SourceInfo L) {
40010 return emitOp<>(OP_NegUint8, L);
40011}
40012bool ByteCodeEmitter::emitNegSint16(SourceInfo L) {
40013 return emitOp<>(OP_NegSint16, L);
40014}
40015bool ByteCodeEmitter::emitNegUint16(SourceInfo L) {
40016 return emitOp<>(OP_NegUint16, L);
40017}
40018bool ByteCodeEmitter::emitNegSint32(SourceInfo L) {
40019 return emitOp<>(OP_NegSint32, L);
40020}
40021bool ByteCodeEmitter::emitNegUint32(SourceInfo L) {
40022 return emitOp<>(OP_NegUint32, L);
40023}
40024bool ByteCodeEmitter::emitNegSint64(SourceInfo L) {
40025 return emitOp<>(OP_NegSint64, L);
40026}
40027bool ByteCodeEmitter::emitNegUint64(SourceInfo L) {
40028 return emitOp<>(OP_NegUint64, L);
40029}
40030bool ByteCodeEmitter::emitNegIntAP(SourceInfo L) {
40031 return emitOp<>(OP_NegIntAP, L);
40032}
40033bool ByteCodeEmitter::emitNegIntAPS(SourceInfo L) {
40034 return emitOp<>(OP_NegIntAPS, L);
40035}
40036bool ByteCodeEmitter::emitNegBool(SourceInfo L) {
40037 return emitOp<>(OP_NegBool, L);
40038}
40039bool ByteCodeEmitter::emitNegFloat(SourceInfo L) {
40040 return emitOp<>(OP_NegFloat, L);
40041}
40042bool ByteCodeEmitter::emitNegFixedPoint(SourceInfo L) {
40043 return emitOp<>(OP_NegFixedPoint, L);
40044}
40045#endif
40046#ifdef GET_EVAL_IMPL
40047bool EvalEmitter::emitNegSint8(SourceInfo L) {
40048 if (!isActive()) return true;
40049 CurrentSource = L;
40050 return Neg<PT_Sint8>(S, OpPC);
40051}
40052bool EvalEmitter::emitNegUint8(SourceInfo L) {
40053 if (!isActive()) return true;
40054 CurrentSource = L;
40055 return Neg<PT_Uint8>(S, OpPC);
40056}
40057bool EvalEmitter::emitNegSint16(SourceInfo L) {
40058 if (!isActive()) return true;
40059 CurrentSource = L;
40060 return Neg<PT_Sint16>(S, OpPC);
40061}
40062bool EvalEmitter::emitNegUint16(SourceInfo L) {
40063 if (!isActive()) return true;
40064 CurrentSource = L;
40065 return Neg<PT_Uint16>(S, OpPC);
40066}
40067bool EvalEmitter::emitNegSint32(SourceInfo L) {
40068 if (!isActive()) return true;
40069 CurrentSource = L;
40070 return Neg<PT_Sint32>(S, OpPC);
40071}
40072bool EvalEmitter::emitNegUint32(SourceInfo L) {
40073 if (!isActive()) return true;
40074 CurrentSource = L;
40075 return Neg<PT_Uint32>(S, OpPC);
40076}
40077bool EvalEmitter::emitNegSint64(SourceInfo L) {
40078 if (!isActive()) return true;
40079 CurrentSource = L;
40080 return Neg<PT_Sint64>(S, OpPC);
40081}
40082bool EvalEmitter::emitNegUint64(SourceInfo L) {
40083 if (!isActive()) return true;
40084 CurrentSource = L;
40085 return Neg<PT_Uint64>(S, OpPC);
40086}
40087bool EvalEmitter::emitNegIntAP(SourceInfo L) {
40088 if (!isActive()) return true;
40089 CurrentSource = L;
40090 return Neg<PT_IntAP>(S, OpPC);
40091}
40092bool EvalEmitter::emitNegIntAPS(SourceInfo L) {
40093 if (!isActive()) return true;
40094 CurrentSource = L;
40095 return Neg<PT_IntAPS>(S, OpPC);
40096}
40097bool EvalEmitter::emitNegBool(SourceInfo L) {
40098 if (!isActive()) return true;
40099 CurrentSource = L;
40100 return Neg<PT_Bool>(S, OpPC);
40101}
40102bool EvalEmitter::emitNegFloat(SourceInfo L) {
40103 if (!isActive()) return true;
40104 CurrentSource = L;
40105 return Neg<PT_Float>(S, OpPC);
40106}
40107bool EvalEmitter::emitNegFixedPoint(SourceInfo L) {
40108 if (!isActive()) return true;
40109 CurrentSource = L;
40110 return Neg<PT_FixedPoint>(S, OpPC);
40111}
40112#endif
40113#ifdef GET_OPCODE_NAMES
40114OP_NoRet,
40115#endif
40116#ifdef GET_INTERPFN_LIST
40117&Interp_NoRet,
40118#endif
40119#ifdef GET_INTERPFN_DISPATCHERS
40120PRESERVE_NONE
40121static bool Interp_NoRet(InterpState &S, CodePtr &PC) {
40122 if (!NoRet(S, PC)) return false;
40123#if USE_TAILCALLS
40124 MUSTTAIL return InterpNext(S, PC);
40125#else
40126 return true;
40127#endif
40128}
40129#endif
40130#ifdef GET_DISASM
40131case OP_NoRet:
40132 Text.Op = PrintName("NoRet");
40133 break;
40134#endif
40135#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40136bool emitNoRet(SourceInfo);
40137#endif
40138#ifdef GET_LINK_IMPL
40139bool ByteCodeEmitter::emitNoRet(SourceInfo L) {
40140 return emitOp<>(OP_NoRet, L);
40141}
40142#endif
40143#ifdef GET_EVAL_IMPL
40144bool EvalEmitter::emitNoRet(SourceInfo L) {
40145 if (!isActive()) return true;
40146 CurrentSource = L;
40147 return NoRet(S, OpPC);
40148}
40149#endif
40150#ifdef GET_OPCODE_NAMES
40151OP_NullPtr,
40152OP_NullMemberPtr,
40153#endif
40154#ifdef GET_INTERPFN_LIST
40155&Interp_NullPtr,
40156&Interp_NullMemberPtr,
40157#endif
40158#ifdef GET_INTERPFN_DISPATCHERS
40159PRESERVE_NONE
40160static bool Interp_NullPtr(InterpState &S, CodePtr &PC) {
40161 {
40162 CodePtr OpPC = PC;
40163 const auto V0 = ReadArg<uint64_t>(S, PC);
40164 const auto V1 = ReadArg<const Type *>(S, PC);
40165 Null<PT_Ptr>(S, OpPC, V0, V1);
40166 }
40167#if USE_TAILCALLS
40168 MUSTTAIL return InterpNext(S, PC);
40169#else
40170 return true;
40171#endif
40172}
40173PRESERVE_NONE
40174static bool Interp_NullMemberPtr(InterpState &S, CodePtr &PC) {
40175 {
40176 CodePtr OpPC = PC;
40177 const auto V0 = ReadArg<uint64_t>(S, PC);
40178 const auto V1 = ReadArg<const Type *>(S, PC);
40179 Null<PT_MemberPtr>(S, OpPC, V0, V1);
40180 }
40181#if USE_TAILCALLS
40182 MUSTTAIL return InterpNext(S, PC);
40183#else
40184 return true;
40185#endif
40186}
40187#endif
40188#ifdef GET_DISASM
40189case OP_NullPtr:
40190 Text.Op = PrintName("NullPtr");
40191 Text.Args.push_back(printArg<uint64_t>(P, PC));
40192 Text.Args.push_back(printArg<const Type *>(P, PC));
40193 break;
40194case OP_NullMemberPtr:
40195 Text.Op = PrintName("NullMemberPtr");
40196 Text.Args.push_back(printArg<uint64_t>(P, PC));
40197 Text.Args.push_back(printArg<const Type *>(P, PC));
40198 break;
40199#endif
40200#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40201bool emitNullPtr( uint64_t , const Type * , SourceInfo);
40202bool emitNullMemberPtr( uint64_t , const Type * , SourceInfo);
40203#endif
40204#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40205[[nodiscard]] bool emitNull(PrimType, uint64_t, const Type *, SourceInfo I);
40206#endif
40207#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40208bool
40209#if defined(GET_EVAL_IMPL)
40210EvalEmitter
40211#else
40212ByteCodeEmitter
40213#endif
40214::emitNull(PrimType T0, uint64_t A0, const Type * A1, SourceInfo I) {
40215 switch (T0) {
40216 case PT_Ptr:
40217 return emitNullPtr(A0, A1, I);
40218 case PT_MemberPtr:
40219 return emitNullMemberPtr(A0, A1, I);
40220 default: llvm_unreachable("invalid type: emitNull");
40221 }
40222 llvm_unreachable("invalid enum value");
40223}
40224#endif
40225#ifdef GET_LINK_IMPL
40226bool ByteCodeEmitter::emitNullPtr( uint64_t A0, const Type * A1, SourceInfo L) {
40227 return emitOp<uint64_t, const Type *>(OP_NullPtr, A0, A1, L);
40228}
40229bool ByteCodeEmitter::emitNullMemberPtr( uint64_t A0, const Type * A1, SourceInfo L) {
40230 return emitOp<uint64_t, const Type *>(OP_NullMemberPtr, A0, A1, L);
40231}
40232#endif
40233#ifdef GET_EVAL_IMPL
40234bool EvalEmitter::emitNullPtr( uint64_t A0, const Type * A1, SourceInfo L) {
40235 if (!isActive()) return true;
40236 CurrentSource = L;
40237 return Null<PT_Ptr>(S, OpPC, A0, A1);
40238}
40239bool EvalEmitter::emitNullMemberPtr( uint64_t A0, const Type * A1, SourceInfo L) {
40240 if (!isActive()) return true;
40241 CurrentSource = L;
40242 return Null<PT_MemberPtr>(S, OpPC, A0, A1);
40243}
40244#endif
40245#ifdef GET_OPCODE_NAMES
40246OP_OffsetOfSint8,
40247OP_OffsetOfUint8,
40248OP_OffsetOfSint16,
40249OP_OffsetOfUint16,
40250OP_OffsetOfSint32,
40251OP_OffsetOfUint32,
40252OP_OffsetOfSint64,
40253OP_OffsetOfUint64,
40254OP_OffsetOfIntAP,
40255OP_OffsetOfIntAPS,
40256#endif
40257#ifdef GET_INTERPFN_LIST
40258&Interp_OffsetOfSint8,
40259&Interp_OffsetOfUint8,
40260&Interp_OffsetOfSint16,
40261&Interp_OffsetOfUint16,
40262&Interp_OffsetOfSint32,
40263&Interp_OffsetOfUint32,
40264&Interp_OffsetOfSint64,
40265&Interp_OffsetOfUint64,
40266&Interp_OffsetOfIntAP,
40267&Interp_OffsetOfIntAPS,
40268#endif
40269#ifdef GET_INTERPFN_DISPATCHERS
40270PRESERVE_NONE
40271static bool Interp_OffsetOfSint8(InterpState &S, CodePtr &PC) {
40272 {
40273 CodePtr OpPC = PC;
40274 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
40275 if (!OffsetOf<PT_Sint8>(S, OpPC, V0)) return false;
40276 }
40277#if USE_TAILCALLS
40278 MUSTTAIL return InterpNext(S, PC);
40279#else
40280 return true;
40281#endif
40282}
40283PRESERVE_NONE
40284static bool Interp_OffsetOfUint8(InterpState &S, CodePtr &PC) {
40285 {
40286 CodePtr OpPC = PC;
40287 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
40288 if (!OffsetOf<PT_Uint8>(S, OpPC, V0)) return false;
40289 }
40290#if USE_TAILCALLS
40291 MUSTTAIL return InterpNext(S, PC);
40292#else
40293 return true;
40294#endif
40295}
40296PRESERVE_NONE
40297static bool Interp_OffsetOfSint16(InterpState &S, CodePtr &PC) {
40298 {
40299 CodePtr OpPC = PC;
40300 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
40301 if (!OffsetOf<PT_Sint16>(S, OpPC, V0)) return false;
40302 }
40303#if USE_TAILCALLS
40304 MUSTTAIL return InterpNext(S, PC);
40305#else
40306 return true;
40307#endif
40308}
40309PRESERVE_NONE
40310static bool Interp_OffsetOfUint16(InterpState &S, CodePtr &PC) {
40311 {
40312 CodePtr OpPC = PC;
40313 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
40314 if (!OffsetOf<PT_Uint16>(S, OpPC, V0)) return false;
40315 }
40316#if USE_TAILCALLS
40317 MUSTTAIL return InterpNext(S, PC);
40318#else
40319 return true;
40320#endif
40321}
40322PRESERVE_NONE
40323static bool Interp_OffsetOfSint32(InterpState &S, CodePtr &PC) {
40324 {
40325 CodePtr OpPC = PC;
40326 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
40327 if (!OffsetOf<PT_Sint32>(S, OpPC, V0)) return false;
40328 }
40329#if USE_TAILCALLS
40330 MUSTTAIL return InterpNext(S, PC);
40331#else
40332 return true;
40333#endif
40334}
40335PRESERVE_NONE
40336static bool Interp_OffsetOfUint32(InterpState &S, CodePtr &PC) {
40337 {
40338 CodePtr OpPC = PC;
40339 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
40340 if (!OffsetOf<PT_Uint32>(S, OpPC, V0)) return false;
40341 }
40342#if USE_TAILCALLS
40343 MUSTTAIL return InterpNext(S, PC);
40344#else
40345 return true;
40346#endif
40347}
40348PRESERVE_NONE
40349static bool Interp_OffsetOfSint64(InterpState &S, CodePtr &PC) {
40350 {
40351 CodePtr OpPC = PC;
40352 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
40353 if (!OffsetOf<PT_Sint64>(S, OpPC, V0)) return false;
40354 }
40355#if USE_TAILCALLS
40356 MUSTTAIL return InterpNext(S, PC);
40357#else
40358 return true;
40359#endif
40360}
40361PRESERVE_NONE
40362static bool Interp_OffsetOfUint64(InterpState &S, CodePtr &PC) {
40363 {
40364 CodePtr OpPC = PC;
40365 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
40366 if (!OffsetOf<PT_Uint64>(S, OpPC, V0)) return false;
40367 }
40368#if USE_TAILCALLS
40369 MUSTTAIL return InterpNext(S, PC);
40370#else
40371 return true;
40372#endif
40373}
40374PRESERVE_NONE
40375static bool Interp_OffsetOfIntAP(InterpState &S, CodePtr &PC) {
40376 {
40377 CodePtr OpPC = PC;
40378 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
40379 if (!OffsetOf<PT_IntAP>(S, OpPC, V0)) return false;
40380 }
40381#if USE_TAILCALLS
40382 MUSTTAIL return InterpNext(S, PC);
40383#else
40384 return true;
40385#endif
40386}
40387PRESERVE_NONE
40388static bool Interp_OffsetOfIntAPS(InterpState &S, CodePtr &PC) {
40389 {
40390 CodePtr OpPC = PC;
40391 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
40392 if (!OffsetOf<PT_IntAPS>(S, OpPC, V0)) return false;
40393 }
40394#if USE_TAILCALLS
40395 MUSTTAIL return InterpNext(S, PC);
40396#else
40397 return true;
40398#endif
40399}
40400#endif
40401#ifdef GET_DISASM
40402case OP_OffsetOfSint8:
40403 Text.Op = PrintName("OffsetOfSint8");
40404 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
40405 break;
40406case OP_OffsetOfUint8:
40407 Text.Op = PrintName("OffsetOfUint8");
40408 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
40409 break;
40410case OP_OffsetOfSint16:
40411 Text.Op = PrintName("OffsetOfSint16");
40412 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
40413 break;
40414case OP_OffsetOfUint16:
40415 Text.Op = PrintName("OffsetOfUint16");
40416 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
40417 break;
40418case OP_OffsetOfSint32:
40419 Text.Op = PrintName("OffsetOfSint32");
40420 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
40421 break;
40422case OP_OffsetOfUint32:
40423 Text.Op = PrintName("OffsetOfUint32");
40424 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
40425 break;
40426case OP_OffsetOfSint64:
40427 Text.Op = PrintName("OffsetOfSint64");
40428 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
40429 break;
40430case OP_OffsetOfUint64:
40431 Text.Op = PrintName("OffsetOfUint64");
40432 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
40433 break;
40434case OP_OffsetOfIntAP:
40435 Text.Op = PrintName("OffsetOfIntAP");
40436 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
40437 break;
40438case OP_OffsetOfIntAPS:
40439 Text.Op = PrintName("OffsetOfIntAPS");
40440 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
40441 break;
40442#endif
40443#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40444bool emitOffsetOfSint8( const OffsetOfExpr * , SourceInfo);
40445bool emitOffsetOfUint8( const OffsetOfExpr * , SourceInfo);
40446bool emitOffsetOfSint16( const OffsetOfExpr * , SourceInfo);
40447bool emitOffsetOfUint16( const OffsetOfExpr * , SourceInfo);
40448bool emitOffsetOfSint32( const OffsetOfExpr * , SourceInfo);
40449bool emitOffsetOfUint32( const OffsetOfExpr * , SourceInfo);
40450bool emitOffsetOfSint64( const OffsetOfExpr * , SourceInfo);
40451bool emitOffsetOfUint64( const OffsetOfExpr * , SourceInfo);
40452bool emitOffsetOfIntAP( const OffsetOfExpr * , SourceInfo);
40453bool emitOffsetOfIntAPS( const OffsetOfExpr * , SourceInfo);
40454#endif
40455#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40456[[nodiscard]] bool emitOffsetOf(PrimType, const OffsetOfExpr *, SourceInfo I);
40457#endif
40458#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40459bool
40460#if defined(GET_EVAL_IMPL)
40461EvalEmitter
40462#else
40463ByteCodeEmitter
40464#endif
40465::emitOffsetOf(PrimType T0, const OffsetOfExpr * A0, SourceInfo I) {
40466 switch (T0) {
40467 case PT_Sint8:
40468 return emitOffsetOfSint8(A0, I);
40469 case PT_Uint8:
40470 return emitOffsetOfUint8(A0, I);
40471 case PT_Sint16:
40472 return emitOffsetOfSint16(A0, I);
40473 case PT_Uint16:
40474 return emitOffsetOfUint16(A0, I);
40475 case PT_Sint32:
40476 return emitOffsetOfSint32(A0, I);
40477 case PT_Uint32:
40478 return emitOffsetOfUint32(A0, I);
40479 case PT_Sint64:
40480 return emitOffsetOfSint64(A0, I);
40481 case PT_Uint64:
40482 return emitOffsetOfUint64(A0, I);
40483 case PT_IntAP:
40484 return emitOffsetOfIntAP(A0, I);
40485 case PT_IntAPS:
40486 return emitOffsetOfIntAPS(A0, I);
40487 default: llvm_unreachable("invalid type: emitOffsetOf");
40488 }
40489 llvm_unreachable("invalid enum value");
40490}
40491#endif
40492#ifdef GET_LINK_IMPL
40493bool ByteCodeEmitter::emitOffsetOfSint8( const OffsetOfExpr * A0, SourceInfo L) {
40494 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint8, A0, L);
40495}
40496bool ByteCodeEmitter::emitOffsetOfUint8( const OffsetOfExpr * A0, SourceInfo L) {
40497 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint8, A0, L);
40498}
40499bool ByteCodeEmitter::emitOffsetOfSint16( const OffsetOfExpr * A0, SourceInfo L) {
40500 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint16, A0, L);
40501}
40502bool ByteCodeEmitter::emitOffsetOfUint16( const OffsetOfExpr * A0, SourceInfo L) {
40503 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint16, A0, L);
40504}
40505bool ByteCodeEmitter::emitOffsetOfSint32( const OffsetOfExpr * A0, SourceInfo L) {
40506 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint32, A0, L);
40507}
40508bool ByteCodeEmitter::emitOffsetOfUint32( const OffsetOfExpr * A0, SourceInfo L) {
40509 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint32, A0, L);
40510}
40511bool ByteCodeEmitter::emitOffsetOfSint64( const OffsetOfExpr * A0, SourceInfo L) {
40512 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint64, A0, L);
40513}
40514bool ByteCodeEmitter::emitOffsetOfUint64( const OffsetOfExpr * A0, SourceInfo L) {
40515 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint64, A0, L);
40516}
40517bool ByteCodeEmitter::emitOffsetOfIntAP( const OffsetOfExpr * A0, SourceInfo L) {
40518 return emitOp<const OffsetOfExpr *>(OP_OffsetOfIntAP, A0, L);
40519}
40520bool ByteCodeEmitter::emitOffsetOfIntAPS( const OffsetOfExpr * A0, SourceInfo L) {
40521 return emitOp<const OffsetOfExpr *>(OP_OffsetOfIntAPS, A0, L);
40522}
40523#endif
40524#ifdef GET_EVAL_IMPL
40525bool EvalEmitter::emitOffsetOfSint8( const OffsetOfExpr * A0, SourceInfo L) {
40526 if (!isActive()) return true;
40527 CurrentSource = L;
40528 return OffsetOf<PT_Sint8>(S, OpPC, A0);
40529}
40530bool EvalEmitter::emitOffsetOfUint8( const OffsetOfExpr * A0, SourceInfo L) {
40531 if (!isActive()) return true;
40532 CurrentSource = L;
40533 return OffsetOf<PT_Uint8>(S, OpPC, A0);
40534}
40535bool EvalEmitter::emitOffsetOfSint16( const OffsetOfExpr * A0, SourceInfo L) {
40536 if (!isActive()) return true;
40537 CurrentSource = L;
40538 return OffsetOf<PT_Sint16>(S, OpPC, A0);
40539}
40540bool EvalEmitter::emitOffsetOfUint16( const OffsetOfExpr * A0, SourceInfo L) {
40541 if (!isActive()) return true;
40542 CurrentSource = L;
40543 return OffsetOf<PT_Uint16>(S, OpPC, A0);
40544}
40545bool EvalEmitter::emitOffsetOfSint32( const OffsetOfExpr * A0, SourceInfo L) {
40546 if (!isActive()) return true;
40547 CurrentSource = L;
40548 return OffsetOf<PT_Sint32>(S, OpPC, A0);
40549}
40550bool EvalEmitter::emitOffsetOfUint32( const OffsetOfExpr * A0, SourceInfo L) {
40551 if (!isActive()) return true;
40552 CurrentSource = L;
40553 return OffsetOf<PT_Uint32>(S, OpPC, A0);
40554}
40555bool EvalEmitter::emitOffsetOfSint64( const OffsetOfExpr * A0, SourceInfo L) {
40556 if (!isActive()) return true;
40557 CurrentSource = L;
40558 return OffsetOf<PT_Sint64>(S, OpPC, A0);
40559}
40560bool EvalEmitter::emitOffsetOfUint64( const OffsetOfExpr * A0, SourceInfo L) {
40561 if (!isActive()) return true;
40562 CurrentSource = L;
40563 return OffsetOf<PT_Uint64>(S, OpPC, A0);
40564}
40565bool EvalEmitter::emitOffsetOfIntAP( const OffsetOfExpr * A0, SourceInfo L) {
40566 if (!isActive()) return true;
40567 CurrentSource = L;
40568 return OffsetOf<PT_IntAP>(S, OpPC, A0);
40569}
40570bool EvalEmitter::emitOffsetOfIntAPS( const OffsetOfExpr * A0, SourceInfo L) {
40571 if (!isActive()) return true;
40572 CurrentSource = L;
40573 return OffsetOf<PT_IntAPS>(S, OpPC, A0);
40574}
40575#endif
40576#ifdef GET_OPCODE_NAMES
40577OP_PopSint8,
40578OP_PopUint8,
40579OP_PopSint16,
40580OP_PopUint16,
40581OP_PopSint32,
40582OP_PopUint32,
40583OP_PopSint64,
40584OP_PopUint64,
40585OP_PopIntAP,
40586OP_PopIntAPS,
40587OP_PopBool,
40588OP_PopFixedPoint,
40589OP_PopPtr,
40590OP_PopMemberPtr,
40591OP_PopFloat,
40592#endif
40593#ifdef GET_INTERPFN_LIST
40594&Interp_PopSint8,
40595&Interp_PopUint8,
40596&Interp_PopSint16,
40597&Interp_PopUint16,
40598&Interp_PopSint32,
40599&Interp_PopUint32,
40600&Interp_PopSint64,
40601&Interp_PopUint64,
40602&Interp_PopIntAP,
40603&Interp_PopIntAPS,
40604&Interp_PopBool,
40605&Interp_PopFixedPoint,
40606&Interp_PopPtr,
40607&Interp_PopMemberPtr,
40608&Interp_PopFloat,
40609#endif
40610#ifdef GET_INTERPFN_DISPATCHERS
40611PRESERVE_NONE
40612static bool Interp_PopSint8(InterpState &S, CodePtr &PC) {
40613 Pop<PT_Sint8>(S, PC);
40614#if USE_TAILCALLS
40615 MUSTTAIL return InterpNext(S, PC);
40616#else
40617 return true;
40618#endif
40619}
40620PRESERVE_NONE
40621static bool Interp_PopUint8(InterpState &S, CodePtr &PC) {
40622 Pop<PT_Uint8>(S, PC);
40623#if USE_TAILCALLS
40624 MUSTTAIL return InterpNext(S, PC);
40625#else
40626 return true;
40627#endif
40628}
40629PRESERVE_NONE
40630static bool Interp_PopSint16(InterpState &S, CodePtr &PC) {
40631 Pop<PT_Sint16>(S, PC);
40632#if USE_TAILCALLS
40633 MUSTTAIL return InterpNext(S, PC);
40634#else
40635 return true;
40636#endif
40637}
40638PRESERVE_NONE
40639static bool Interp_PopUint16(InterpState &S, CodePtr &PC) {
40640 Pop<PT_Uint16>(S, PC);
40641#if USE_TAILCALLS
40642 MUSTTAIL return InterpNext(S, PC);
40643#else
40644 return true;
40645#endif
40646}
40647PRESERVE_NONE
40648static bool Interp_PopSint32(InterpState &S, CodePtr &PC) {
40649 Pop<PT_Sint32>(S, PC);
40650#if USE_TAILCALLS
40651 MUSTTAIL return InterpNext(S, PC);
40652#else
40653 return true;
40654#endif
40655}
40656PRESERVE_NONE
40657static bool Interp_PopUint32(InterpState &S, CodePtr &PC) {
40658 Pop<PT_Uint32>(S, PC);
40659#if USE_TAILCALLS
40660 MUSTTAIL return InterpNext(S, PC);
40661#else
40662 return true;
40663#endif
40664}
40665PRESERVE_NONE
40666static bool Interp_PopSint64(InterpState &S, CodePtr &PC) {
40667 Pop<PT_Sint64>(S, PC);
40668#if USE_TAILCALLS
40669 MUSTTAIL return InterpNext(S, PC);
40670#else
40671 return true;
40672#endif
40673}
40674PRESERVE_NONE
40675static bool Interp_PopUint64(InterpState &S, CodePtr &PC) {
40676 Pop<PT_Uint64>(S, PC);
40677#if USE_TAILCALLS
40678 MUSTTAIL return InterpNext(S, PC);
40679#else
40680 return true;
40681#endif
40682}
40683PRESERVE_NONE
40684static bool Interp_PopIntAP(InterpState &S, CodePtr &PC) {
40685 Pop<PT_IntAP>(S, PC);
40686#if USE_TAILCALLS
40687 MUSTTAIL return InterpNext(S, PC);
40688#else
40689 return true;
40690#endif
40691}
40692PRESERVE_NONE
40693static bool Interp_PopIntAPS(InterpState &S, CodePtr &PC) {
40694 Pop<PT_IntAPS>(S, PC);
40695#if USE_TAILCALLS
40696 MUSTTAIL return InterpNext(S, PC);
40697#else
40698 return true;
40699#endif
40700}
40701PRESERVE_NONE
40702static bool Interp_PopBool(InterpState &S, CodePtr &PC) {
40703 Pop<PT_Bool>(S, PC);
40704#if USE_TAILCALLS
40705 MUSTTAIL return InterpNext(S, PC);
40706#else
40707 return true;
40708#endif
40709}
40710PRESERVE_NONE
40711static bool Interp_PopFixedPoint(InterpState &S, CodePtr &PC) {
40712 Pop<PT_FixedPoint>(S, PC);
40713#if USE_TAILCALLS
40714 MUSTTAIL return InterpNext(S, PC);
40715#else
40716 return true;
40717#endif
40718}
40719PRESERVE_NONE
40720static bool Interp_PopPtr(InterpState &S, CodePtr &PC) {
40721 Pop<PT_Ptr>(S, PC);
40722#if USE_TAILCALLS
40723 MUSTTAIL return InterpNext(S, PC);
40724#else
40725 return true;
40726#endif
40727}
40728PRESERVE_NONE
40729static bool Interp_PopMemberPtr(InterpState &S, CodePtr &PC) {
40730 Pop<PT_MemberPtr>(S, PC);
40731#if USE_TAILCALLS
40732 MUSTTAIL return InterpNext(S, PC);
40733#else
40734 return true;
40735#endif
40736}
40737PRESERVE_NONE
40738static bool Interp_PopFloat(InterpState &S, CodePtr &PC) {
40739 Pop<PT_Float>(S, PC);
40740#if USE_TAILCALLS
40741 MUSTTAIL return InterpNext(S, PC);
40742#else
40743 return true;
40744#endif
40745}
40746#endif
40747#ifdef GET_DISASM
40748case OP_PopSint8:
40749 Text.Op = PrintName("PopSint8");
40750 break;
40751case OP_PopUint8:
40752 Text.Op = PrintName("PopUint8");
40753 break;
40754case OP_PopSint16:
40755 Text.Op = PrintName("PopSint16");
40756 break;
40757case OP_PopUint16:
40758 Text.Op = PrintName("PopUint16");
40759 break;
40760case OP_PopSint32:
40761 Text.Op = PrintName("PopSint32");
40762 break;
40763case OP_PopUint32:
40764 Text.Op = PrintName("PopUint32");
40765 break;
40766case OP_PopSint64:
40767 Text.Op = PrintName("PopSint64");
40768 break;
40769case OP_PopUint64:
40770 Text.Op = PrintName("PopUint64");
40771 break;
40772case OP_PopIntAP:
40773 Text.Op = PrintName("PopIntAP");
40774 break;
40775case OP_PopIntAPS:
40776 Text.Op = PrintName("PopIntAPS");
40777 break;
40778case OP_PopBool:
40779 Text.Op = PrintName("PopBool");
40780 break;
40781case OP_PopFixedPoint:
40782 Text.Op = PrintName("PopFixedPoint");
40783 break;
40784case OP_PopPtr:
40785 Text.Op = PrintName("PopPtr");
40786 break;
40787case OP_PopMemberPtr:
40788 Text.Op = PrintName("PopMemberPtr");
40789 break;
40790case OP_PopFloat:
40791 Text.Op = PrintName("PopFloat");
40792 break;
40793#endif
40794#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40795bool emitPopSint8(SourceInfo);
40796bool emitPopUint8(SourceInfo);
40797bool emitPopSint16(SourceInfo);
40798bool emitPopUint16(SourceInfo);
40799bool emitPopSint32(SourceInfo);
40800bool emitPopUint32(SourceInfo);
40801bool emitPopSint64(SourceInfo);
40802bool emitPopUint64(SourceInfo);
40803bool emitPopIntAP(SourceInfo);
40804bool emitPopIntAPS(SourceInfo);
40805bool emitPopBool(SourceInfo);
40806bool emitPopFixedPoint(SourceInfo);
40807bool emitPopPtr(SourceInfo);
40808bool emitPopMemberPtr(SourceInfo);
40809bool emitPopFloat(SourceInfo);
40810#endif
40811#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40812[[nodiscard]] bool emitPop(PrimType, SourceInfo I);
40813#endif
40814#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40815bool
40816#if defined(GET_EVAL_IMPL)
40817EvalEmitter
40818#else
40819ByteCodeEmitter
40820#endif
40821::emitPop(PrimType T0, SourceInfo I) {
40822 switch (T0) {
40823 case PT_Sint8:
40824 return emitPopSint8(I);
40825 case PT_Uint8:
40826 return emitPopUint8(I);
40827 case PT_Sint16:
40828 return emitPopSint16(I);
40829 case PT_Uint16:
40830 return emitPopUint16(I);
40831 case PT_Sint32:
40832 return emitPopSint32(I);
40833 case PT_Uint32:
40834 return emitPopUint32(I);
40835 case PT_Sint64:
40836 return emitPopSint64(I);
40837 case PT_Uint64:
40838 return emitPopUint64(I);
40839 case PT_IntAP:
40840 return emitPopIntAP(I);
40841 case PT_IntAPS:
40842 return emitPopIntAPS(I);
40843 case PT_Bool:
40844 return emitPopBool(I);
40845 case PT_FixedPoint:
40846 return emitPopFixedPoint(I);
40847 case PT_Ptr:
40848 return emitPopPtr(I);
40849 case PT_MemberPtr:
40850 return emitPopMemberPtr(I);
40851 case PT_Float:
40852 return emitPopFloat(I);
40853 }
40854 llvm_unreachable("invalid enum value");
40855}
40856#endif
40857#ifdef GET_LINK_IMPL
40858bool ByteCodeEmitter::emitPopSint8(SourceInfo L) {
40859 return emitOp<>(OP_PopSint8, L);
40860}
40861bool ByteCodeEmitter::emitPopUint8(SourceInfo L) {
40862 return emitOp<>(OP_PopUint8, L);
40863}
40864bool ByteCodeEmitter::emitPopSint16(SourceInfo L) {
40865 return emitOp<>(OP_PopSint16, L);
40866}
40867bool ByteCodeEmitter::emitPopUint16(SourceInfo L) {
40868 return emitOp<>(OP_PopUint16, L);
40869}
40870bool ByteCodeEmitter::emitPopSint32(SourceInfo L) {
40871 return emitOp<>(OP_PopSint32, L);
40872}
40873bool ByteCodeEmitter::emitPopUint32(SourceInfo L) {
40874 return emitOp<>(OP_PopUint32, L);
40875}
40876bool ByteCodeEmitter::emitPopSint64(SourceInfo L) {
40877 return emitOp<>(OP_PopSint64, L);
40878}
40879bool ByteCodeEmitter::emitPopUint64(SourceInfo L) {
40880 return emitOp<>(OP_PopUint64, L);
40881}
40882bool ByteCodeEmitter::emitPopIntAP(SourceInfo L) {
40883 return emitOp<>(OP_PopIntAP, L);
40884}
40885bool ByteCodeEmitter::emitPopIntAPS(SourceInfo L) {
40886 return emitOp<>(OP_PopIntAPS, L);
40887}
40888bool ByteCodeEmitter::emitPopBool(SourceInfo L) {
40889 return emitOp<>(OP_PopBool, L);
40890}
40891bool ByteCodeEmitter::emitPopFixedPoint(SourceInfo L) {
40892 return emitOp<>(OP_PopFixedPoint, L);
40893}
40894bool ByteCodeEmitter::emitPopPtr(SourceInfo L) {
40895 return emitOp<>(OP_PopPtr, L);
40896}
40897bool ByteCodeEmitter::emitPopMemberPtr(SourceInfo L) {
40898 return emitOp<>(OP_PopMemberPtr, L);
40899}
40900bool ByteCodeEmitter::emitPopFloat(SourceInfo L) {
40901 return emitOp<>(OP_PopFloat, L);
40902}
40903#endif
40904#ifdef GET_EVAL_IMPL
40905bool EvalEmitter::emitPopSint8(SourceInfo L) {
40906 if (!isActive()) return true;
40907 CurrentSource = L;
40908 return Pop<PT_Sint8>(S, OpPC);
40909}
40910bool EvalEmitter::emitPopUint8(SourceInfo L) {
40911 if (!isActive()) return true;
40912 CurrentSource = L;
40913 return Pop<PT_Uint8>(S, OpPC);
40914}
40915bool EvalEmitter::emitPopSint16(SourceInfo L) {
40916 if (!isActive()) return true;
40917 CurrentSource = L;
40918 return Pop<PT_Sint16>(S, OpPC);
40919}
40920bool EvalEmitter::emitPopUint16(SourceInfo L) {
40921 if (!isActive()) return true;
40922 CurrentSource = L;
40923 return Pop<PT_Uint16>(S, OpPC);
40924}
40925bool EvalEmitter::emitPopSint32(SourceInfo L) {
40926 if (!isActive()) return true;
40927 CurrentSource = L;
40928 return Pop<PT_Sint32>(S, OpPC);
40929}
40930bool EvalEmitter::emitPopUint32(SourceInfo L) {
40931 if (!isActive()) return true;
40932 CurrentSource = L;
40933 return Pop<PT_Uint32>(S, OpPC);
40934}
40935bool EvalEmitter::emitPopSint64(SourceInfo L) {
40936 if (!isActive()) return true;
40937 CurrentSource = L;
40938 return Pop<PT_Sint64>(S, OpPC);
40939}
40940bool EvalEmitter::emitPopUint64(SourceInfo L) {
40941 if (!isActive()) return true;
40942 CurrentSource = L;
40943 return Pop<PT_Uint64>(S, OpPC);
40944}
40945bool EvalEmitter::emitPopIntAP(SourceInfo L) {
40946 if (!isActive()) return true;
40947 CurrentSource = L;
40948 return Pop<PT_IntAP>(S, OpPC);
40949}
40950bool EvalEmitter::emitPopIntAPS(SourceInfo L) {
40951 if (!isActive()) return true;
40952 CurrentSource = L;
40953 return Pop<PT_IntAPS>(S, OpPC);
40954}
40955bool EvalEmitter::emitPopBool(SourceInfo L) {
40956 if (!isActive()) return true;
40957 CurrentSource = L;
40958 return Pop<PT_Bool>(S, OpPC);
40959}
40960bool EvalEmitter::emitPopFixedPoint(SourceInfo L) {
40961 if (!isActive()) return true;
40962 CurrentSource = L;
40963 return Pop<PT_FixedPoint>(S, OpPC);
40964}
40965bool EvalEmitter::emitPopPtr(SourceInfo L) {
40966 if (!isActive()) return true;
40967 CurrentSource = L;
40968 return Pop<PT_Ptr>(S, OpPC);
40969}
40970bool EvalEmitter::emitPopMemberPtr(SourceInfo L) {
40971 if (!isActive()) return true;
40972 CurrentSource = L;
40973 return Pop<PT_MemberPtr>(S, OpPC);
40974}
40975bool EvalEmitter::emitPopFloat(SourceInfo L) {
40976 if (!isActive()) return true;
40977 CurrentSource = L;
40978 return Pop<PT_Float>(S, OpPC);
40979}
40980#endif
40981#ifdef GET_OPCODE_NAMES
40982OP_PopCC,
40983#endif
40984#ifdef GET_INTERPFN_LIST
40985&Interp_PopCC,
40986#endif
40987#ifdef GET_INTERPFN_DISPATCHERS
40988PRESERVE_NONE
40989static bool Interp_PopCC(InterpState &S, CodePtr &PC) {
40990 PopCC(S, PC);
40991#if USE_TAILCALLS
40992 MUSTTAIL return InterpNext(S, PC);
40993#else
40994 return true;
40995#endif
40996}
40997#endif
40998#ifdef GET_DISASM
40999case OP_PopCC:
41000 Text.Op = PrintName("PopCC");
41001 break;
41002#endif
41003#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41004bool emitPopCC(SourceInfo);
41005#endif
41006#ifdef GET_LINK_IMPL
41007bool ByteCodeEmitter::emitPopCC(SourceInfo L) {
41008 return emitOp<>(OP_PopCC, L);
41009}
41010#endif
41011#ifdef GET_EVAL_IMPL
41012bool EvalEmitter::emitPopCC(SourceInfo L) {
41013 if (!isActive()) return true;
41014 CurrentSource = L;
41015 return PopCC(S, OpPC);
41016}
41017#endif
41018#ifdef GET_OPCODE_NAMES
41019OP_PopIgnoreDiags,
41020#endif
41021#ifdef GET_INTERPFN_LIST
41022&Interp_PopIgnoreDiags,
41023#endif
41024#ifdef GET_INTERPFN_DISPATCHERS
41025PRESERVE_NONE
41026static bool Interp_PopIgnoreDiags(InterpState &S, CodePtr &PC) {
41027 PopIgnoreDiags(S, PC);
41028#if USE_TAILCALLS
41029 MUSTTAIL return InterpNext(S, PC);
41030#else
41031 return true;
41032#endif
41033}
41034#endif
41035#ifdef GET_DISASM
41036case OP_PopIgnoreDiags:
41037 Text.Op = PrintName("PopIgnoreDiags");
41038 break;
41039#endif
41040#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41041bool emitPopIgnoreDiags(SourceInfo);
41042#endif
41043#ifdef GET_LINK_IMPL
41044bool ByteCodeEmitter::emitPopIgnoreDiags(SourceInfo L) {
41045 return emitOp<>(OP_PopIgnoreDiags, L);
41046}
41047#endif
41048#ifdef GET_EVAL_IMPL
41049bool EvalEmitter::emitPopIgnoreDiags(SourceInfo L) {
41050 if (!isActive()) return true;
41051 CurrentSource = L;
41052 return PopIgnoreDiags(S, OpPC);
41053}
41054#endif
41055#ifdef GET_OPCODE_NAMES
41056OP_PopMSVCCE,
41057#endif
41058#ifdef GET_INTERPFN_LIST
41059&Interp_PopMSVCCE,
41060#endif
41061#ifdef GET_INTERPFN_DISPATCHERS
41062PRESERVE_NONE
41063static bool Interp_PopMSVCCE(InterpState &S, CodePtr &PC) {
41064 PopMSVCCE(S, PC);
41065#if USE_TAILCALLS
41066 MUSTTAIL return InterpNext(S, PC);
41067#else
41068 return true;
41069#endif
41070}
41071#endif
41072#ifdef GET_DISASM
41073case OP_PopMSVCCE:
41074 Text.Op = PrintName("PopMSVCCE");
41075 break;
41076#endif
41077#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41078bool emitPopMSVCCE(SourceInfo);
41079#endif
41080#ifdef GET_LINK_IMPL
41081bool ByteCodeEmitter::emitPopMSVCCE(SourceInfo L) {
41082 return emitOp<>(OP_PopMSVCCE, L);
41083}
41084#endif
41085#ifdef GET_EVAL_IMPL
41086bool EvalEmitter::emitPopMSVCCE(SourceInfo L) {
41087 if (!isActive()) return true;
41088 CurrentSource = L;
41089 return PopMSVCCE(S, OpPC);
41090}
41091#endif
41092#ifdef GET_OPCODE_NAMES
41093OP_PreDecSint8,
41094OP_PreDecUint8,
41095OP_PreDecSint16,
41096OP_PreDecUint16,
41097OP_PreDecSint32,
41098OP_PreDecUint32,
41099OP_PreDecSint64,
41100OP_PreDecUint64,
41101OP_PreDecIntAP,
41102OP_PreDecIntAPS,
41103OP_PreDecBool,
41104OP_PreDecFixedPoint,
41105#endif
41106#ifdef GET_INTERPFN_LIST
41107&Interp_PreDecSint8,
41108&Interp_PreDecUint8,
41109&Interp_PreDecSint16,
41110&Interp_PreDecUint16,
41111&Interp_PreDecSint32,
41112&Interp_PreDecUint32,
41113&Interp_PreDecSint64,
41114&Interp_PreDecUint64,
41115&Interp_PreDecIntAP,
41116&Interp_PreDecIntAPS,
41117&Interp_PreDecBool,
41118&Interp_PreDecFixedPoint,
41119#endif
41120#ifdef GET_INTERPFN_DISPATCHERS
41121PRESERVE_NONE
41122static bool Interp_PreDecSint8(InterpState &S, CodePtr &PC) {
41123 {
41124 CodePtr OpPC = PC;
41125 const auto V0 = ReadArg<bool>(S, PC);
41126 if (!PreDec<PT_Sint8>(S, OpPC, V0)) return false;
41127 }
41128#if USE_TAILCALLS
41129 MUSTTAIL return InterpNext(S, PC);
41130#else
41131 return true;
41132#endif
41133}
41134PRESERVE_NONE
41135static bool Interp_PreDecUint8(InterpState &S, CodePtr &PC) {
41136 {
41137 CodePtr OpPC = PC;
41138 const auto V0 = ReadArg<bool>(S, PC);
41139 if (!PreDec<PT_Uint8>(S, OpPC, V0)) return false;
41140 }
41141#if USE_TAILCALLS
41142 MUSTTAIL return InterpNext(S, PC);
41143#else
41144 return true;
41145#endif
41146}
41147PRESERVE_NONE
41148static bool Interp_PreDecSint16(InterpState &S, CodePtr &PC) {
41149 {
41150 CodePtr OpPC = PC;
41151 const auto V0 = ReadArg<bool>(S, PC);
41152 if (!PreDec<PT_Sint16>(S, OpPC, V0)) return false;
41153 }
41154#if USE_TAILCALLS
41155 MUSTTAIL return InterpNext(S, PC);
41156#else
41157 return true;
41158#endif
41159}
41160PRESERVE_NONE
41161static bool Interp_PreDecUint16(InterpState &S, CodePtr &PC) {
41162 {
41163 CodePtr OpPC = PC;
41164 const auto V0 = ReadArg<bool>(S, PC);
41165 if (!PreDec<PT_Uint16>(S, OpPC, V0)) return false;
41166 }
41167#if USE_TAILCALLS
41168 MUSTTAIL return InterpNext(S, PC);
41169#else
41170 return true;
41171#endif
41172}
41173PRESERVE_NONE
41174static bool Interp_PreDecSint32(InterpState &S, CodePtr &PC) {
41175 {
41176 CodePtr OpPC = PC;
41177 const auto V0 = ReadArg<bool>(S, PC);
41178 if (!PreDec<PT_Sint32>(S, OpPC, V0)) return false;
41179 }
41180#if USE_TAILCALLS
41181 MUSTTAIL return InterpNext(S, PC);
41182#else
41183 return true;
41184#endif
41185}
41186PRESERVE_NONE
41187static bool Interp_PreDecUint32(InterpState &S, CodePtr &PC) {
41188 {
41189 CodePtr OpPC = PC;
41190 const auto V0 = ReadArg<bool>(S, PC);
41191 if (!PreDec<PT_Uint32>(S, OpPC, V0)) return false;
41192 }
41193#if USE_TAILCALLS
41194 MUSTTAIL return InterpNext(S, PC);
41195#else
41196 return true;
41197#endif
41198}
41199PRESERVE_NONE
41200static bool Interp_PreDecSint64(InterpState &S, CodePtr &PC) {
41201 {
41202 CodePtr OpPC = PC;
41203 const auto V0 = ReadArg<bool>(S, PC);
41204 if (!PreDec<PT_Sint64>(S, OpPC, V0)) return false;
41205 }
41206#if USE_TAILCALLS
41207 MUSTTAIL return InterpNext(S, PC);
41208#else
41209 return true;
41210#endif
41211}
41212PRESERVE_NONE
41213static bool Interp_PreDecUint64(InterpState &S, CodePtr &PC) {
41214 {
41215 CodePtr OpPC = PC;
41216 const auto V0 = ReadArg<bool>(S, PC);
41217 if (!PreDec<PT_Uint64>(S, OpPC, V0)) return false;
41218 }
41219#if USE_TAILCALLS
41220 MUSTTAIL return InterpNext(S, PC);
41221#else
41222 return true;
41223#endif
41224}
41225PRESERVE_NONE
41226static bool Interp_PreDecIntAP(InterpState &S, CodePtr &PC) {
41227 {
41228 CodePtr OpPC = PC;
41229 const auto V0 = ReadArg<bool>(S, PC);
41230 if (!PreDec<PT_IntAP>(S, OpPC, V0)) return false;
41231 }
41232#if USE_TAILCALLS
41233 MUSTTAIL return InterpNext(S, PC);
41234#else
41235 return true;
41236#endif
41237}
41238PRESERVE_NONE
41239static bool Interp_PreDecIntAPS(InterpState &S, CodePtr &PC) {
41240 {
41241 CodePtr OpPC = PC;
41242 const auto V0 = ReadArg<bool>(S, PC);
41243 if (!PreDec<PT_IntAPS>(S, OpPC, V0)) return false;
41244 }
41245#if USE_TAILCALLS
41246 MUSTTAIL return InterpNext(S, PC);
41247#else
41248 return true;
41249#endif
41250}
41251PRESERVE_NONE
41252static bool Interp_PreDecBool(InterpState &S, CodePtr &PC) {
41253 {
41254 CodePtr OpPC = PC;
41255 const auto V0 = ReadArg<bool>(S, PC);
41256 if (!PreDec<PT_Bool>(S, OpPC, V0)) return false;
41257 }
41258#if USE_TAILCALLS
41259 MUSTTAIL return InterpNext(S, PC);
41260#else
41261 return true;
41262#endif
41263}
41264PRESERVE_NONE
41265static bool Interp_PreDecFixedPoint(InterpState &S, CodePtr &PC) {
41266 {
41267 CodePtr OpPC = PC;
41268 const auto V0 = ReadArg<bool>(S, PC);
41269 if (!PreDec<PT_FixedPoint>(S, OpPC, V0)) return false;
41270 }
41271#if USE_TAILCALLS
41272 MUSTTAIL return InterpNext(S, PC);
41273#else
41274 return true;
41275#endif
41276}
41277#endif
41278#ifdef GET_DISASM
41279case OP_PreDecSint8:
41280 Text.Op = PrintName("PreDecSint8");
41281 Text.Args.push_back(printArg<bool>(P, PC));
41282 break;
41283case OP_PreDecUint8:
41284 Text.Op = PrintName("PreDecUint8");
41285 Text.Args.push_back(printArg<bool>(P, PC));
41286 break;
41287case OP_PreDecSint16:
41288 Text.Op = PrintName("PreDecSint16");
41289 Text.Args.push_back(printArg<bool>(P, PC));
41290 break;
41291case OP_PreDecUint16:
41292 Text.Op = PrintName("PreDecUint16");
41293 Text.Args.push_back(printArg<bool>(P, PC));
41294 break;
41295case OP_PreDecSint32:
41296 Text.Op = PrintName("PreDecSint32");
41297 Text.Args.push_back(printArg<bool>(P, PC));
41298 break;
41299case OP_PreDecUint32:
41300 Text.Op = PrintName("PreDecUint32");
41301 Text.Args.push_back(printArg<bool>(P, PC));
41302 break;
41303case OP_PreDecSint64:
41304 Text.Op = PrintName("PreDecSint64");
41305 Text.Args.push_back(printArg<bool>(P, PC));
41306 break;
41307case OP_PreDecUint64:
41308 Text.Op = PrintName("PreDecUint64");
41309 Text.Args.push_back(printArg<bool>(P, PC));
41310 break;
41311case OP_PreDecIntAP:
41312 Text.Op = PrintName("PreDecIntAP");
41313 Text.Args.push_back(printArg<bool>(P, PC));
41314 break;
41315case OP_PreDecIntAPS:
41316 Text.Op = PrintName("PreDecIntAPS");
41317 Text.Args.push_back(printArg<bool>(P, PC));
41318 break;
41319case OP_PreDecBool:
41320 Text.Op = PrintName("PreDecBool");
41321 Text.Args.push_back(printArg<bool>(P, PC));
41322 break;
41323case OP_PreDecFixedPoint:
41324 Text.Op = PrintName("PreDecFixedPoint");
41325 Text.Args.push_back(printArg<bool>(P, PC));
41326 break;
41327#endif
41328#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41329bool emitPreDecSint8( bool , SourceInfo);
41330bool emitPreDecUint8( bool , SourceInfo);
41331bool emitPreDecSint16( bool , SourceInfo);
41332bool emitPreDecUint16( bool , SourceInfo);
41333bool emitPreDecSint32( bool , SourceInfo);
41334bool emitPreDecUint32( bool , SourceInfo);
41335bool emitPreDecSint64( bool , SourceInfo);
41336bool emitPreDecUint64( bool , SourceInfo);
41337bool emitPreDecIntAP( bool , SourceInfo);
41338bool emitPreDecIntAPS( bool , SourceInfo);
41339bool emitPreDecBool( bool , SourceInfo);
41340bool emitPreDecFixedPoint( bool , SourceInfo);
41341#endif
41342#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41343[[nodiscard]] bool emitPreDec(PrimType, bool, SourceInfo I);
41344#endif
41345#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
41346bool
41347#if defined(GET_EVAL_IMPL)
41348EvalEmitter
41349#else
41350ByteCodeEmitter
41351#endif
41352::emitPreDec(PrimType T0, bool A0, SourceInfo I) {
41353 switch (T0) {
41354 case PT_Sint8:
41355 return emitPreDecSint8(A0, I);
41356 case PT_Uint8:
41357 return emitPreDecUint8(A0, I);
41358 case PT_Sint16:
41359 return emitPreDecSint16(A0, I);
41360 case PT_Uint16:
41361 return emitPreDecUint16(A0, I);
41362 case PT_Sint32:
41363 return emitPreDecSint32(A0, I);
41364 case PT_Uint32:
41365 return emitPreDecUint32(A0, I);
41366 case PT_Sint64:
41367 return emitPreDecSint64(A0, I);
41368 case PT_Uint64:
41369 return emitPreDecUint64(A0, I);
41370 case PT_IntAP:
41371 return emitPreDecIntAP(A0, I);
41372 case PT_IntAPS:
41373 return emitPreDecIntAPS(A0, I);
41374 case PT_Bool:
41375 return emitPreDecBool(A0, I);
41376 case PT_FixedPoint:
41377 return emitPreDecFixedPoint(A0, I);
41378 default: llvm_unreachable("invalid type: emitPreDec");
41379 }
41380 llvm_unreachable("invalid enum value");
41381}
41382#endif
41383#ifdef GET_LINK_IMPL
41384bool ByteCodeEmitter::emitPreDecSint8( bool A0, SourceInfo L) {
41385 return emitOp<bool>(OP_PreDecSint8, A0, L);
41386}
41387bool ByteCodeEmitter::emitPreDecUint8( bool A0, SourceInfo L) {
41388 return emitOp<bool>(OP_PreDecUint8, A0, L);
41389}
41390bool ByteCodeEmitter::emitPreDecSint16( bool A0, SourceInfo L) {
41391 return emitOp<bool>(OP_PreDecSint16, A0, L);
41392}
41393bool ByteCodeEmitter::emitPreDecUint16( bool A0, SourceInfo L) {
41394 return emitOp<bool>(OP_PreDecUint16, A0, L);
41395}
41396bool ByteCodeEmitter::emitPreDecSint32( bool A0, SourceInfo L) {
41397 return emitOp<bool>(OP_PreDecSint32, A0, L);
41398}
41399bool ByteCodeEmitter::emitPreDecUint32( bool A0, SourceInfo L) {
41400 return emitOp<bool>(OP_PreDecUint32, A0, L);
41401}
41402bool ByteCodeEmitter::emitPreDecSint64( bool A0, SourceInfo L) {
41403 return emitOp<bool>(OP_PreDecSint64, A0, L);
41404}
41405bool ByteCodeEmitter::emitPreDecUint64( bool A0, SourceInfo L) {
41406 return emitOp<bool>(OP_PreDecUint64, A0, L);
41407}
41408bool ByteCodeEmitter::emitPreDecIntAP( bool A0, SourceInfo L) {
41409 return emitOp<bool>(OP_PreDecIntAP, A0, L);
41410}
41411bool ByteCodeEmitter::emitPreDecIntAPS( bool A0, SourceInfo L) {
41412 return emitOp<bool>(OP_PreDecIntAPS, A0, L);
41413}
41414bool ByteCodeEmitter::emitPreDecBool( bool A0, SourceInfo L) {
41415 return emitOp<bool>(OP_PreDecBool, A0, L);
41416}
41417bool ByteCodeEmitter::emitPreDecFixedPoint( bool A0, SourceInfo L) {
41418 return emitOp<bool>(OP_PreDecFixedPoint, A0, L);
41419}
41420#endif
41421#ifdef GET_EVAL_IMPL
41422bool EvalEmitter::emitPreDecSint8( bool A0, SourceInfo L) {
41423 if (!isActive()) return true;
41424 CurrentSource = L;
41425 return PreDec<PT_Sint8>(S, OpPC, A0);
41426}
41427bool EvalEmitter::emitPreDecUint8( bool A0, SourceInfo L) {
41428 if (!isActive()) return true;
41429 CurrentSource = L;
41430 return PreDec<PT_Uint8>(S, OpPC, A0);
41431}
41432bool EvalEmitter::emitPreDecSint16( bool A0, SourceInfo L) {
41433 if (!isActive()) return true;
41434 CurrentSource = L;
41435 return PreDec<PT_Sint16>(S, OpPC, A0);
41436}
41437bool EvalEmitter::emitPreDecUint16( bool A0, SourceInfo L) {
41438 if (!isActive()) return true;
41439 CurrentSource = L;
41440 return PreDec<PT_Uint16>(S, OpPC, A0);
41441}
41442bool EvalEmitter::emitPreDecSint32( bool A0, SourceInfo L) {
41443 if (!isActive()) return true;
41444 CurrentSource = L;
41445 return PreDec<PT_Sint32>(S, OpPC, A0);
41446}
41447bool EvalEmitter::emitPreDecUint32( bool A0, SourceInfo L) {
41448 if (!isActive()) return true;
41449 CurrentSource = L;
41450 return PreDec<PT_Uint32>(S, OpPC, A0);
41451}
41452bool EvalEmitter::emitPreDecSint64( bool A0, SourceInfo L) {
41453 if (!isActive()) return true;
41454 CurrentSource = L;
41455 return PreDec<PT_Sint64>(S, OpPC, A0);
41456}
41457bool EvalEmitter::emitPreDecUint64( bool A0, SourceInfo L) {
41458 if (!isActive()) return true;
41459 CurrentSource = L;
41460 return PreDec<PT_Uint64>(S, OpPC, A0);
41461}
41462bool EvalEmitter::emitPreDecIntAP( bool A0, SourceInfo L) {
41463 if (!isActive()) return true;
41464 CurrentSource = L;
41465 return PreDec<PT_IntAP>(S, OpPC, A0);
41466}
41467bool EvalEmitter::emitPreDecIntAPS( bool A0, SourceInfo L) {
41468 if (!isActive()) return true;
41469 CurrentSource = L;
41470 return PreDec<PT_IntAPS>(S, OpPC, A0);
41471}
41472bool EvalEmitter::emitPreDecBool( bool A0, SourceInfo L) {
41473 if (!isActive()) return true;
41474 CurrentSource = L;
41475 return PreDec<PT_Bool>(S, OpPC, A0);
41476}
41477bool EvalEmitter::emitPreDecFixedPoint( bool A0, SourceInfo L) {
41478 if (!isActive()) return true;
41479 CurrentSource = L;
41480 return PreDec<PT_FixedPoint>(S, OpPC, A0);
41481}
41482#endif
41483#ifdef GET_OPCODE_NAMES
41484OP_PreDecBitfieldSint8,
41485OP_PreDecBitfieldUint8,
41486OP_PreDecBitfieldSint16,
41487OP_PreDecBitfieldUint16,
41488OP_PreDecBitfieldSint32,
41489OP_PreDecBitfieldUint32,
41490OP_PreDecBitfieldSint64,
41491OP_PreDecBitfieldUint64,
41492OP_PreDecBitfieldIntAP,
41493OP_PreDecBitfieldIntAPS,
41494OP_PreDecBitfieldBool,
41495OP_PreDecBitfieldFixedPoint,
41496#endif
41497#ifdef GET_INTERPFN_LIST
41498&Interp_PreDecBitfieldSint8,
41499&Interp_PreDecBitfieldUint8,
41500&Interp_PreDecBitfieldSint16,
41501&Interp_PreDecBitfieldUint16,
41502&Interp_PreDecBitfieldSint32,
41503&Interp_PreDecBitfieldUint32,
41504&Interp_PreDecBitfieldSint64,
41505&Interp_PreDecBitfieldUint64,
41506&Interp_PreDecBitfieldIntAP,
41507&Interp_PreDecBitfieldIntAPS,
41508&Interp_PreDecBitfieldBool,
41509&Interp_PreDecBitfieldFixedPoint,
41510#endif
41511#ifdef GET_INTERPFN_DISPATCHERS
41512PRESERVE_NONE
41513static bool Interp_PreDecBitfieldSint8(InterpState &S, CodePtr &PC) {
41514 {
41515 CodePtr OpPC = PC;
41516 const auto V0 = ReadArg<bool>(S, PC);
41517 const auto V1 = ReadArg<uint32_t>(S, PC);
41518 if (!PreDecBitfield<PT_Sint8>(S, OpPC, V0, V1)) return false;
41519 }
41520#if USE_TAILCALLS
41521 MUSTTAIL return InterpNext(S, PC);
41522#else
41523 return true;
41524#endif
41525}
41526PRESERVE_NONE
41527static bool Interp_PreDecBitfieldUint8(InterpState &S, CodePtr &PC) {
41528 {
41529 CodePtr OpPC = PC;
41530 const auto V0 = ReadArg<bool>(S, PC);
41531 const auto V1 = ReadArg<uint32_t>(S, PC);
41532 if (!PreDecBitfield<PT_Uint8>(S, OpPC, V0, V1)) return false;
41533 }
41534#if USE_TAILCALLS
41535 MUSTTAIL return InterpNext(S, PC);
41536#else
41537 return true;
41538#endif
41539}
41540PRESERVE_NONE
41541static bool Interp_PreDecBitfieldSint16(InterpState &S, CodePtr &PC) {
41542 {
41543 CodePtr OpPC = PC;
41544 const auto V0 = ReadArg<bool>(S, PC);
41545 const auto V1 = ReadArg<uint32_t>(S, PC);
41546 if (!PreDecBitfield<PT_Sint16>(S, OpPC, V0, V1)) return false;
41547 }
41548#if USE_TAILCALLS
41549 MUSTTAIL return InterpNext(S, PC);
41550#else
41551 return true;
41552#endif
41553}
41554PRESERVE_NONE
41555static bool Interp_PreDecBitfieldUint16(InterpState &S, CodePtr &PC) {
41556 {
41557 CodePtr OpPC = PC;
41558 const auto V0 = ReadArg<bool>(S, PC);
41559 const auto V1 = ReadArg<uint32_t>(S, PC);
41560 if (!PreDecBitfield<PT_Uint16>(S, OpPC, V0, V1)) return false;
41561 }
41562#if USE_TAILCALLS
41563 MUSTTAIL return InterpNext(S, PC);
41564#else
41565 return true;
41566#endif
41567}
41568PRESERVE_NONE
41569static bool Interp_PreDecBitfieldSint32(InterpState &S, CodePtr &PC) {
41570 {
41571 CodePtr OpPC = PC;
41572 const auto V0 = ReadArg<bool>(S, PC);
41573 const auto V1 = ReadArg<uint32_t>(S, PC);
41574 if (!PreDecBitfield<PT_Sint32>(S, OpPC, V0, V1)) return false;
41575 }
41576#if USE_TAILCALLS
41577 MUSTTAIL return InterpNext(S, PC);
41578#else
41579 return true;
41580#endif
41581}
41582PRESERVE_NONE
41583static bool Interp_PreDecBitfieldUint32(InterpState &S, CodePtr &PC) {
41584 {
41585 CodePtr OpPC = PC;
41586 const auto V0 = ReadArg<bool>(S, PC);
41587 const auto V1 = ReadArg<uint32_t>(S, PC);
41588 if (!PreDecBitfield<PT_Uint32>(S, OpPC, V0, V1)) return false;
41589 }
41590#if USE_TAILCALLS
41591 MUSTTAIL return InterpNext(S, PC);
41592#else
41593 return true;
41594#endif
41595}
41596PRESERVE_NONE
41597static bool Interp_PreDecBitfieldSint64(InterpState &S, CodePtr &PC) {
41598 {
41599 CodePtr OpPC = PC;
41600 const auto V0 = ReadArg<bool>(S, PC);
41601 const auto V1 = ReadArg<uint32_t>(S, PC);
41602 if (!PreDecBitfield<PT_Sint64>(S, OpPC, V0, V1)) return false;
41603 }
41604#if USE_TAILCALLS
41605 MUSTTAIL return InterpNext(S, PC);
41606#else
41607 return true;
41608#endif
41609}
41610PRESERVE_NONE
41611static bool Interp_PreDecBitfieldUint64(InterpState &S, CodePtr &PC) {
41612 {
41613 CodePtr OpPC = PC;
41614 const auto V0 = ReadArg<bool>(S, PC);
41615 const auto V1 = ReadArg<uint32_t>(S, PC);
41616 if (!PreDecBitfield<PT_Uint64>(S, OpPC, V0, V1)) return false;
41617 }
41618#if USE_TAILCALLS
41619 MUSTTAIL return InterpNext(S, PC);
41620#else
41621 return true;
41622#endif
41623}
41624PRESERVE_NONE
41625static bool Interp_PreDecBitfieldIntAP(InterpState &S, CodePtr &PC) {
41626 {
41627 CodePtr OpPC = PC;
41628 const auto V0 = ReadArg<bool>(S, PC);
41629 const auto V1 = ReadArg<uint32_t>(S, PC);
41630 if (!PreDecBitfield<PT_IntAP>(S, OpPC, V0, V1)) return false;
41631 }
41632#if USE_TAILCALLS
41633 MUSTTAIL return InterpNext(S, PC);
41634#else
41635 return true;
41636#endif
41637}
41638PRESERVE_NONE
41639static bool Interp_PreDecBitfieldIntAPS(InterpState &S, CodePtr &PC) {
41640 {
41641 CodePtr OpPC = PC;
41642 const auto V0 = ReadArg<bool>(S, PC);
41643 const auto V1 = ReadArg<uint32_t>(S, PC);
41644 if (!PreDecBitfield<PT_IntAPS>(S, OpPC, V0, V1)) return false;
41645 }
41646#if USE_TAILCALLS
41647 MUSTTAIL return InterpNext(S, PC);
41648#else
41649 return true;
41650#endif
41651}
41652PRESERVE_NONE
41653static bool Interp_PreDecBitfieldBool(InterpState &S, CodePtr &PC) {
41654 {
41655 CodePtr OpPC = PC;
41656 const auto V0 = ReadArg<bool>(S, PC);
41657 const auto V1 = ReadArg<uint32_t>(S, PC);
41658 if (!PreDecBitfield<PT_Bool>(S, OpPC, V0, V1)) return false;
41659 }
41660#if USE_TAILCALLS
41661 MUSTTAIL return InterpNext(S, PC);
41662#else
41663 return true;
41664#endif
41665}
41666PRESERVE_NONE
41667static bool Interp_PreDecBitfieldFixedPoint(InterpState &S, CodePtr &PC) {
41668 {
41669 CodePtr OpPC = PC;
41670 const auto V0 = ReadArg<bool>(S, PC);
41671 const auto V1 = ReadArg<uint32_t>(S, PC);
41672 if (!PreDecBitfield<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
41673 }
41674#if USE_TAILCALLS
41675 MUSTTAIL return InterpNext(S, PC);
41676#else
41677 return true;
41678#endif
41679}
41680#endif
41681#ifdef GET_DISASM
41682case OP_PreDecBitfieldSint8:
41683 Text.Op = PrintName("PreDecBitfieldSint8");
41684 Text.Args.push_back(printArg<bool>(P, PC));
41685 Text.Args.push_back(printArg<uint32_t>(P, PC));
41686 break;
41687case OP_PreDecBitfieldUint8:
41688 Text.Op = PrintName("PreDecBitfieldUint8");
41689 Text.Args.push_back(printArg<bool>(P, PC));
41690 Text.Args.push_back(printArg<uint32_t>(P, PC));
41691 break;
41692case OP_PreDecBitfieldSint16:
41693 Text.Op = PrintName("PreDecBitfieldSint16");
41694 Text.Args.push_back(printArg<bool>(P, PC));
41695 Text.Args.push_back(printArg<uint32_t>(P, PC));
41696 break;
41697case OP_PreDecBitfieldUint16:
41698 Text.Op = PrintName("PreDecBitfieldUint16");
41699 Text.Args.push_back(printArg<bool>(P, PC));
41700 Text.Args.push_back(printArg<uint32_t>(P, PC));
41701 break;
41702case OP_PreDecBitfieldSint32:
41703 Text.Op = PrintName("PreDecBitfieldSint32");
41704 Text.Args.push_back(printArg<bool>(P, PC));
41705 Text.Args.push_back(printArg<uint32_t>(P, PC));
41706 break;
41707case OP_PreDecBitfieldUint32:
41708 Text.Op = PrintName("PreDecBitfieldUint32");
41709 Text.Args.push_back(printArg<bool>(P, PC));
41710 Text.Args.push_back(printArg<uint32_t>(P, PC));
41711 break;
41712case OP_PreDecBitfieldSint64:
41713 Text.Op = PrintName("PreDecBitfieldSint64");
41714 Text.Args.push_back(printArg<bool>(P, PC));
41715 Text.Args.push_back(printArg<uint32_t>(P, PC));
41716 break;
41717case OP_PreDecBitfieldUint64:
41718 Text.Op = PrintName("PreDecBitfieldUint64");
41719 Text.Args.push_back(printArg<bool>(P, PC));
41720 Text.Args.push_back(printArg<uint32_t>(P, PC));
41721 break;
41722case OP_PreDecBitfieldIntAP:
41723 Text.Op = PrintName("PreDecBitfieldIntAP");
41724 Text.Args.push_back(printArg<bool>(P, PC));
41725 Text.Args.push_back(printArg<uint32_t>(P, PC));
41726 break;
41727case OP_PreDecBitfieldIntAPS:
41728 Text.Op = PrintName("PreDecBitfieldIntAPS");
41729 Text.Args.push_back(printArg<bool>(P, PC));
41730 Text.Args.push_back(printArg<uint32_t>(P, PC));
41731 break;
41732case OP_PreDecBitfieldBool:
41733 Text.Op = PrintName("PreDecBitfieldBool");
41734 Text.Args.push_back(printArg<bool>(P, PC));
41735 Text.Args.push_back(printArg<uint32_t>(P, PC));
41736 break;
41737case OP_PreDecBitfieldFixedPoint:
41738 Text.Op = PrintName("PreDecBitfieldFixedPoint");
41739 Text.Args.push_back(printArg<bool>(P, PC));
41740 Text.Args.push_back(printArg<uint32_t>(P, PC));
41741 break;
41742#endif
41743#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41744bool emitPreDecBitfieldSint8( bool , uint32_t , SourceInfo);
41745bool emitPreDecBitfieldUint8( bool , uint32_t , SourceInfo);
41746bool emitPreDecBitfieldSint16( bool , uint32_t , SourceInfo);
41747bool emitPreDecBitfieldUint16( bool , uint32_t , SourceInfo);
41748bool emitPreDecBitfieldSint32( bool , uint32_t , SourceInfo);
41749bool emitPreDecBitfieldUint32( bool , uint32_t , SourceInfo);
41750bool emitPreDecBitfieldSint64( bool , uint32_t , SourceInfo);
41751bool emitPreDecBitfieldUint64( bool , uint32_t , SourceInfo);
41752bool emitPreDecBitfieldIntAP( bool , uint32_t , SourceInfo);
41753bool emitPreDecBitfieldIntAPS( bool , uint32_t , SourceInfo);
41754bool emitPreDecBitfieldBool( bool , uint32_t , SourceInfo);
41755bool emitPreDecBitfieldFixedPoint( bool , uint32_t , SourceInfo);
41756#endif
41757#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41758[[nodiscard]] bool emitPreDecBitfield(PrimType, bool, uint32_t, SourceInfo I);
41759#endif
41760#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
41761bool
41762#if defined(GET_EVAL_IMPL)
41763EvalEmitter
41764#else
41765ByteCodeEmitter
41766#endif
41767::emitPreDecBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
41768 switch (T0) {
41769 case PT_Sint8:
41770 return emitPreDecBitfieldSint8(A0, A1, I);
41771 case PT_Uint8:
41772 return emitPreDecBitfieldUint8(A0, A1, I);
41773 case PT_Sint16:
41774 return emitPreDecBitfieldSint16(A0, A1, I);
41775 case PT_Uint16:
41776 return emitPreDecBitfieldUint16(A0, A1, I);
41777 case PT_Sint32:
41778 return emitPreDecBitfieldSint32(A0, A1, I);
41779 case PT_Uint32:
41780 return emitPreDecBitfieldUint32(A0, A1, I);
41781 case PT_Sint64:
41782 return emitPreDecBitfieldSint64(A0, A1, I);
41783 case PT_Uint64:
41784 return emitPreDecBitfieldUint64(A0, A1, I);
41785 case PT_IntAP:
41786 return emitPreDecBitfieldIntAP(A0, A1, I);
41787 case PT_IntAPS:
41788 return emitPreDecBitfieldIntAPS(A0, A1, I);
41789 case PT_Bool:
41790 return emitPreDecBitfieldBool(A0, A1, I);
41791 case PT_FixedPoint:
41792 return emitPreDecBitfieldFixedPoint(A0, A1, I);
41793 default: llvm_unreachable("invalid type: emitPreDecBitfield");
41794 }
41795 llvm_unreachable("invalid enum value");
41796}
41797#endif
41798#ifdef GET_LINK_IMPL
41799bool ByteCodeEmitter::emitPreDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
41800 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint8, A0, A1, L);
41801}
41802bool ByteCodeEmitter::emitPreDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
41803 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint8, A0, A1, L);
41804}
41805bool ByteCodeEmitter::emitPreDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
41806 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint16, A0, A1, L);
41807}
41808bool ByteCodeEmitter::emitPreDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
41809 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint16, A0, A1, L);
41810}
41811bool ByteCodeEmitter::emitPreDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
41812 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint32, A0, A1, L);
41813}
41814bool ByteCodeEmitter::emitPreDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
41815 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint32, A0, A1, L);
41816}
41817bool ByteCodeEmitter::emitPreDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
41818 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint64, A0, A1, L);
41819}
41820bool ByteCodeEmitter::emitPreDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
41821 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint64, A0, A1, L);
41822}
41823bool ByteCodeEmitter::emitPreDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
41824 return emitOp<bool, uint32_t>(OP_PreDecBitfieldIntAP, A0, A1, L);
41825}
41826bool ByteCodeEmitter::emitPreDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
41827 return emitOp<bool, uint32_t>(OP_PreDecBitfieldIntAPS, A0, A1, L);
41828}
41829bool ByteCodeEmitter::emitPreDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
41830 return emitOp<bool, uint32_t>(OP_PreDecBitfieldBool, A0, A1, L);
41831}
41832bool ByteCodeEmitter::emitPreDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
41833 return emitOp<bool, uint32_t>(OP_PreDecBitfieldFixedPoint, A0, A1, L);
41834}
41835#endif
41836#ifdef GET_EVAL_IMPL
41837bool EvalEmitter::emitPreDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
41838 if (!isActive()) return true;
41839 CurrentSource = L;
41840 return PreDecBitfield<PT_Sint8>(S, OpPC, A0, A1);
41841}
41842bool EvalEmitter::emitPreDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
41843 if (!isActive()) return true;
41844 CurrentSource = L;
41845 return PreDecBitfield<PT_Uint8>(S, OpPC, A0, A1);
41846}
41847bool EvalEmitter::emitPreDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
41848 if (!isActive()) return true;
41849 CurrentSource = L;
41850 return PreDecBitfield<PT_Sint16>(S, OpPC, A0, A1);
41851}
41852bool EvalEmitter::emitPreDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
41853 if (!isActive()) return true;
41854 CurrentSource = L;
41855 return PreDecBitfield<PT_Uint16>(S, OpPC, A0, A1);
41856}
41857bool EvalEmitter::emitPreDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
41858 if (!isActive()) return true;
41859 CurrentSource = L;
41860 return PreDecBitfield<PT_Sint32>(S, OpPC, A0, A1);
41861}
41862bool EvalEmitter::emitPreDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
41863 if (!isActive()) return true;
41864 CurrentSource = L;
41865 return PreDecBitfield<PT_Uint32>(S, OpPC, A0, A1);
41866}
41867bool EvalEmitter::emitPreDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
41868 if (!isActive()) return true;
41869 CurrentSource = L;
41870 return PreDecBitfield<PT_Sint64>(S, OpPC, A0, A1);
41871}
41872bool EvalEmitter::emitPreDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
41873 if (!isActive()) return true;
41874 CurrentSource = L;
41875 return PreDecBitfield<PT_Uint64>(S, OpPC, A0, A1);
41876}
41877bool EvalEmitter::emitPreDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
41878 if (!isActive()) return true;
41879 CurrentSource = L;
41880 return PreDecBitfield<PT_IntAP>(S, OpPC, A0, A1);
41881}
41882bool EvalEmitter::emitPreDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
41883 if (!isActive()) return true;
41884 CurrentSource = L;
41885 return PreDecBitfield<PT_IntAPS>(S, OpPC, A0, A1);
41886}
41887bool EvalEmitter::emitPreDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
41888 if (!isActive()) return true;
41889 CurrentSource = L;
41890 return PreDecBitfield<PT_Bool>(S, OpPC, A0, A1);
41891}
41892bool EvalEmitter::emitPreDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
41893 if (!isActive()) return true;
41894 CurrentSource = L;
41895 return PreDecBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
41896}
41897#endif
41898#ifdef GET_OPCODE_NAMES
41899OP_PreIncSint8,
41900OP_PreIncUint8,
41901OP_PreIncSint16,
41902OP_PreIncUint16,
41903OP_PreIncSint32,
41904OP_PreIncUint32,
41905OP_PreIncSint64,
41906OP_PreIncUint64,
41907OP_PreIncIntAP,
41908OP_PreIncIntAPS,
41909OP_PreIncBool,
41910OP_PreIncFixedPoint,
41911#endif
41912#ifdef GET_INTERPFN_LIST
41913&Interp_PreIncSint8,
41914&Interp_PreIncUint8,
41915&Interp_PreIncSint16,
41916&Interp_PreIncUint16,
41917&Interp_PreIncSint32,
41918&Interp_PreIncUint32,
41919&Interp_PreIncSint64,
41920&Interp_PreIncUint64,
41921&Interp_PreIncIntAP,
41922&Interp_PreIncIntAPS,
41923&Interp_PreIncBool,
41924&Interp_PreIncFixedPoint,
41925#endif
41926#ifdef GET_INTERPFN_DISPATCHERS
41927PRESERVE_NONE
41928static bool Interp_PreIncSint8(InterpState &S, CodePtr &PC) {
41929 {
41930 CodePtr OpPC = PC;
41931 const auto V0 = ReadArg<bool>(S, PC);
41932 if (!PreInc<PT_Sint8>(S, OpPC, V0)) return false;
41933 }
41934#if USE_TAILCALLS
41935 MUSTTAIL return InterpNext(S, PC);
41936#else
41937 return true;
41938#endif
41939}
41940PRESERVE_NONE
41941static bool Interp_PreIncUint8(InterpState &S, CodePtr &PC) {
41942 {
41943 CodePtr OpPC = PC;
41944 const auto V0 = ReadArg<bool>(S, PC);
41945 if (!PreInc<PT_Uint8>(S, OpPC, V0)) return false;
41946 }
41947#if USE_TAILCALLS
41948 MUSTTAIL return InterpNext(S, PC);
41949#else
41950 return true;
41951#endif
41952}
41953PRESERVE_NONE
41954static bool Interp_PreIncSint16(InterpState &S, CodePtr &PC) {
41955 {
41956 CodePtr OpPC = PC;
41957 const auto V0 = ReadArg<bool>(S, PC);
41958 if (!PreInc<PT_Sint16>(S, OpPC, V0)) return false;
41959 }
41960#if USE_TAILCALLS
41961 MUSTTAIL return InterpNext(S, PC);
41962#else
41963 return true;
41964#endif
41965}
41966PRESERVE_NONE
41967static bool Interp_PreIncUint16(InterpState &S, CodePtr &PC) {
41968 {
41969 CodePtr OpPC = PC;
41970 const auto V0 = ReadArg<bool>(S, PC);
41971 if (!PreInc<PT_Uint16>(S, OpPC, V0)) return false;
41972 }
41973#if USE_TAILCALLS
41974 MUSTTAIL return InterpNext(S, PC);
41975#else
41976 return true;
41977#endif
41978}
41979PRESERVE_NONE
41980static bool Interp_PreIncSint32(InterpState &S, CodePtr &PC) {
41981 {
41982 CodePtr OpPC = PC;
41983 const auto V0 = ReadArg<bool>(S, PC);
41984 if (!PreInc<PT_Sint32>(S, OpPC, V0)) return false;
41985 }
41986#if USE_TAILCALLS
41987 MUSTTAIL return InterpNext(S, PC);
41988#else
41989 return true;
41990#endif
41991}
41992PRESERVE_NONE
41993static bool Interp_PreIncUint32(InterpState &S, CodePtr &PC) {
41994 {
41995 CodePtr OpPC = PC;
41996 const auto V0 = ReadArg<bool>(S, PC);
41997 if (!PreInc<PT_Uint32>(S, OpPC, V0)) return false;
41998 }
41999#if USE_TAILCALLS
42000 MUSTTAIL return InterpNext(S, PC);
42001#else
42002 return true;
42003#endif
42004}
42005PRESERVE_NONE
42006static bool Interp_PreIncSint64(InterpState &S, CodePtr &PC) {
42007 {
42008 CodePtr OpPC = PC;
42009 const auto V0 = ReadArg<bool>(S, PC);
42010 if (!PreInc<PT_Sint64>(S, OpPC, V0)) return false;
42011 }
42012#if USE_TAILCALLS
42013 MUSTTAIL return InterpNext(S, PC);
42014#else
42015 return true;
42016#endif
42017}
42018PRESERVE_NONE
42019static bool Interp_PreIncUint64(InterpState &S, CodePtr &PC) {
42020 {
42021 CodePtr OpPC = PC;
42022 const auto V0 = ReadArg<bool>(S, PC);
42023 if (!PreInc<PT_Uint64>(S, OpPC, V0)) return false;
42024 }
42025#if USE_TAILCALLS
42026 MUSTTAIL return InterpNext(S, PC);
42027#else
42028 return true;
42029#endif
42030}
42031PRESERVE_NONE
42032static bool Interp_PreIncIntAP(InterpState &S, CodePtr &PC) {
42033 {
42034 CodePtr OpPC = PC;
42035 const auto V0 = ReadArg<bool>(S, PC);
42036 if (!PreInc<PT_IntAP>(S, OpPC, V0)) return false;
42037 }
42038#if USE_TAILCALLS
42039 MUSTTAIL return InterpNext(S, PC);
42040#else
42041 return true;
42042#endif
42043}
42044PRESERVE_NONE
42045static bool Interp_PreIncIntAPS(InterpState &S, CodePtr &PC) {
42046 {
42047 CodePtr OpPC = PC;
42048 const auto V0 = ReadArg<bool>(S, PC);
42049 if (!PreInc<PT_IntAPS>(S, OpPC, V0)) return false;
42050 }
42051#if USE_TAILCALLS
42052 MUSTTAIL return InterpNext(S, PC);
42053#else
42054 return true;
42055#endif
42056}
42057PRESERVE_NONE
42058static bool Interp_PreIncBool(InterpState &S, CodePtr &PC) {
42059 {
42060 CodePtr OpPC = PC;
42061 const auto V0 = ReadArg<bool>(S, PC);
42062 if (!PreInc<PT_Bool>(S, OpPC, V0)) return false;
42063 }
42064#if USE_TAILCALLS
42065 MUSTTAIL return InterpNext(S, PC);
42066#else
42067 return true;
42068#endif
42069}
42070PRESERVE_NONE
42071static bool Interp_PreIncFixedPoint(InterpState &S, CodePtr &PC) {
42072 {
42073 CodePtr OpPC = PC;
42074 const auto V0 = ReadArg<bool>(S, PC);
42075 if (!PreInc<PT_FixedPoint>(S, OpPC, V0)) return false;
42076 }
42077#if USE_TAILCALLS
42078 MUSTTAIL return InterpNext(S, PC);
42079#else
42080 return true;
42081#endif
42082}
42083#endif
42084#ifdef GET_DISASM
42085case OP_PreIncSint8:
42086 Text.Op = PrintName("PreIncSint8");
42087 Text.Args.push_back(printArg<bool>(P, PC));
42088 break;
42089case OP_PreIncUint8:
42090 Text.Op = PrintName("PreIncUint8");
42091 Text.Args.push_back(printArg<bool>(P, PC));
42092 break;
42093case OP_PreIncSint16:
42094 Text.Op = PrintName("PreIncSint16");
42095 Text.Args.push_back(printArg<bool>(P, PC));
42096 break;
42097case OP_PreIncUint16:
42098 Text.Op = PrintName("PreIncUint16");
42099 Text.Args.push_back(printArg<bool>(P, PC));
42100 break;
42101case OP_PreIncSint32:
42102 Text.Op = PrintName("PreIncSint32");
42103 Text.Args.push_back(printArg<bool>(P, PC));
42104 break;
42105case OP_PreIncUint32:
42106 Text.Op = PrintName("PreIncUint32");
42107 Text.Args.push_back(printArg<bool>(P, PC));
42108 break;
42109case OP_PreIncSint64:
42110 Text.Op = PrintName("PreIncSint64");
42111 Text.Args.push_back(printArg<bool>(P, PC));
42112 break;
42113case OP_PreIncUint64:
42114 Text.Op = PrintName("PreIncUint64");
42115 Text.Args.push_back(printArg<bool>(P, PC));
42116 break;
42117case OP_PreIncIntAP:
42118 Text.Op = PrintName("PreIncIntAP");
42119 Text.Args.push_back(printArg<bool>(P, PC));
42120 break;
42121case OP_PreIncIntAPS:
42122 Text.Op = PrintName("PreIncIntAPS");
42123 Text.Args.push_back(printArg<bool>(P, PC));
42124 break;
42125case OP_PreIncBool:
42126 Text.Op = PrintName("PreIncBool");
42127 Text.Args.push_back(printArg<bool>(P, PC));
42128 break;
42129case OP_PreIncFixedPoint:
42130 Text.Op = PrintName("PreIncFixedPoint");
42131 Text.Args.push_back(printArg<bool>(P, PC));
42132 break;
42133#endif
42134#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42135bool emitPreIncSint8( bool , SourceInfo);
42136bool emitPreIncUint8( bool , SourceInfo);
42137bool emitPreIncSint16( bool , SourceInfo);
42138bool emitPreIncUint16( bool , SourceInfo);
42139bool emitPreIncSint32( bool , SourceInfo);
42140bool emitPreIncUint32( bool , SourceInfo);
42141bool emitPreIncSint64( bool , SourceInfo);
42142bool emitPreIncUint64( bool , SourceInfo);
42143bool emitPreIncIntAP( bool , SourceInfo);
42144bool emitPreIncIntAPS( bool , SourceInfo);
42145bool emitPreIncBool( bool , SourceInfo);
42146bool emitPreIncFixedPoint( bool , SourceInfo);
42147#endif
42148#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42149[[nodiscard]] bool emitPreInc(PrimType, bool, SourceInfo I);
42150#endif
42151#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
42152bool
42153#if defined(GET_EVAL_IMPL)
42154EvalEmitter
42155#else
42156ByteCodeEmitter
42157#endif
42158::emitPreInc(PrimType T0, bool A0, SourceInfo I) {
42159 switch (T0) {
42160 case PT_Sint8:
42161 return emitPreIncSint8(A0, I);
42162 case PT_Uint8:
42163 return emitPreIncUint8(A0, I);
42164 case PT_Sint16:
42165 return emitPreIncSint16(A0, I);
42166 case PT_Uint16:
42167 return emitPreIncUint16(A0, I);
42168 case PT_Sint32:
42169 return emitPreIncSint32(A0, I);
42170 case PT_Uint32:
42171 return emitPreIncUint32(A0, I);
42172 case PT_Sint64:
42173 return emitPreIncSint64(A0, I);
42174 case PT_Uint64:
42175 return emitPreIncUint64(A0, I);
42176 case PT_IntAP:
42177 return emitPreIncIntAP(A0, I);
42178 case PT_IntAPS:
42179 return emitPreIncIntAPS(A0, I);
42180 case PT_Bool:
42181 return emitPreIncBool(A0, I);
42182 case PT_FixedPoint:
42183 return emitPreIncFixedPoint(A0, I);
42184 default: llvm_unreachable("invalid type: emitPreInc");
42185 }
42186 llvm_unreachable("invalid enum value");
42187}
42188#endif
42189#ifdef GET_LINK_IMPL
42190bool ByteCodeEmitter::emitPreIncSint8( bool A0, SourceInfo L) {
42191 return emitOp<bool>(OP_PreIncSint8, A0, L);
42192}
42193bool ByteCodeEmitter::emitPreIncUint8( bool A0, SourceInfo L) {
42194 return emitOp<bool>(OP_PreIncUint8, A0, L);
42195}
42196bool ByteCodeEmitter::emitPreIncSint16( bool A0, SourceInfo L) {
42197 return emitOp<bool>(OP_PreIncSint16, A0, L);
42198}
42199bool ByteCodeEmitter::emitPreIncUint16( bool A0, SourceInfo L) {
42200 return emitOp<bool>(OP_PreIncUint16, A0, L);
42201}
42202bool ByteCodeEmitter::emitPreIncSint32( bool A0, SourceInfo L) {
42203 return emitOp<bool>(OP_PreIncSint32, A0, L);
42204}
42205bool ByteCodeEmitter::emitPreIncUint32( bool A0, SourceInfo L) {
42206 return emitOp<bool>(OP_PreIncUint32, A0, L);
42207}
42208bool ByteCodeEmitter::emitPreIncSint64( bool A0, SourceInfo L) {
42209 return emitOp<bool>(OP_PreIncSint64, A0, L);
42210}
42211bool ByteCodeEmitter::emitPreIncUint64( bool A0, SourceInfo L) {
42212 return emitOp<bool>(OP_PreIncUint64, A0, L);
42213}
42214bool ByteCodeEmitter::emitPreIncIntAP( bool A0, SourceInfo L) {
42215 return emitOp<bool>(OP_PreIncIntAP, A0, L);
42216}
42217bool ByteCodeEmitter::emitPreIncIntAPS( bool A0, SourceInfo L) {
42218 return emitOp<bool>(OP_PreIncIntAPS, A0, L);
42219}
42220bool ByteCodeEmitter::emitPreIncBool( bool A0, SourceInfo L) {
42221 return emitOp<bool>(OP_PreIncBool, A0, L);
42222}
42223bool ByteCodeEmitter::emitPreIncFixedPoint( bool A0, SourceInfo L) {
42224 return emitOp<bool>(OP_PreIncFixedPoint, A0, L);
42225}
42226#endif
42227#ifdef GET_EVAL_IMPL
42228bool EvalEmitter::emitPreIncSint8( bool A0, SourceInfo L) {
42229 if (!isActive()) return true;
42230 CurrentSource = L;
42231 return PreInc<PT_Sint8>(S, OpPC, A0);
42232}
42233bool EvalEmitter::emitPreIncUint8( bool A0, SourceInfo L) {
42234 if (!isActive()) return true;
42235 CurrentSource = L;
42236 return PreInc<PT_Uint8>(S, OpPC, A0);
42237}
42238bool EvalEmitter::emitPreIncSint16( bool A0, SourceInfo L) {
42239 if (!isActive()) return true;
42240 CurrentSource = L;
42241 return PreInc<PT_Sint16>(S, OpPC, A0);
42242}
42243bool EvalEmitter::emitPreIncUint16( bool A0, SourceInfo L) {
42244 if (!isActive()) return true;
42245 CurrentSource = L;
42246 return PreInc<PT_Uint16>(S, OpPC, A0);
42247}
42248bool EvalEmitter::emitPreIncSint32( bool A0, SourceInfo L) {
42249 if (!isActive()) return true;
42250 CurrentSource = L;
42251 return PreInc<PT_Sint32>(S, OpPC, A0);
42252}
42253bool EvalEmitter::emitPreIncUint32( bool A0, SourceInfo L) {
42254 if (!isActive()) return true;
42255 CurrentSource = L;
42256 return PreInc<PT_Uint32>(S, OpPC, A0);
42257}
42258bool EvalEmitter::emitPreIncSint64( bool A0, SourceInfo L) {
42259 if (!isActive()) return true;
42260 CurrentSource = L;
42261 return PreInc<PT_Sint64>(S, OpPC, A0);
42262}
42263bool EvalEmitter::emitPreIncUint64( bool A0, SourceInfo L) {
42264 if (!isActive()) return true;
42265 CurrentSource = L;
42266 return PreInc<PT_Uint64>(S, OpPC, A0);
42267}
42268bool EvalEmitter::emitPreIncIntAP( bool A0, SourceInfo L) {
42269 if (!isActive()) return true;
42270 CurrentSource = L;
42271 return PreInc<PT_IntAP>(S, OpPC, A0);
42272}
42273bool EvalEmitter::emitPreIncIntAPS( bool A0, SourceInfo L) {
42274 if (!isActive()) return true;
42275 CurrentSource = L;
42276 return PreInc<PT_IntAPS>(S, OpPC, A0);
42277}
42278bool EvalEmitter::emitPreIncBool( bool A0, SourceInfo L) {
42279 if (!isActive()) return true;
42280 CurrentSource = L;
42281 return PreInc<PT_Bool>(S, OpPC, A0);
42282}
42283bool EvalEmitter::emitPreIncFixedPoint( bool A0, SourceInfo L) {
42284 if (!isActive()) return true;
42285 CurrentSource = L;
42286 return PreInc<PT_FixedPoint>(S, OpPC, A0);
42287}
42288#endif
42289#ifdef GET_OPCODE_NAMES
42290OP_PreIncBitfieldSint8,
42291OP_PreIncBitfieldUint8,
42292OP_PreIncBitfieldSint16,
42293OP_PreIncBitfieldUint16,
42294OP_PreIncBitfieldSint32,
42295OP_PreIncBitfieldUint32,
42296OP_PreIncBitfieldSint64,
42297OP_PreIncBitfieldUint64,
42298OP_PreIncBitfieldIntAP,
42299OP_PreIncBitfieldIntAPS,
42300OP_PreIncBitfieldBool,
42301OP_PreIncBitfieldFixedPoint,
42302#endif
42303#ifdef GET_INTERPFN_LIST
42304&Interp_PreIncBitfieldSint8,
42305&Interp_PreIncBitfieldUint8,
42306&Interp_PreIncBitfieldSint16,
42307&Interp_PreIncBitfieldUint16,
42308&Interp_PreIncBitfieldSint32,
42309&Interp_PreIncBitfieldUint32,
42310&Interp_PreIncBitfieldSint64,
42311&Interp_PreIncBitfieldUint64,
42312&Interp_PreIncBitfieldIntAP,
42313&Interp_PreIncBitfieldIntAPS,
42314&Interp_PreIncBitfieldBool,
42315&Interp_PreIncBitfieldFixedPoint,
42316#endif
42317#ifdef GET_INTERPFN_DISPATCHERS
42318PRESERVE_NONE
42319static bool Interp_PreIncBitfieldSint8(InterpState &S, CodePtr &PC) {
42320 {
42321 CodePtr OpPC = PC;
42322 const auto V0 = ReadArg<bool>(S, PC);
42323 const auto V1 = ReadArg<uint32_t>(S, PC);
42324 if (!PreIncBitfield<PT_Sint8>(S, OpPC, V0, V1)) return false;
42325 }
42326#if USE_TAILCALLS
42327 MUSTTAIL return InterpNext(S, PC);
42328#else
42329 return true;
42330#endif
42331}
42332PRESERVE_NONE
42333static bool Interp_PreIncBitfieldUint8(InterpState &S, CodePtr &PC) {
42334 {
42335 CodePtr OpPC = PC;
42336 const auto V0 = ReadArg<bool>(S, PC);
42337 const auto V1 = ReadArg<uint32_t>(S, PC);
42338 if (!PreIncBitfield<PT_Uint8>(S, OpPC, V0, V1)) return false;
42339 }
42340#if USE_TAILCALLS
42341 MUSTTAIL return InterpNext(S, PC);
42342#else
42343 return true;
42344#endif
42345}
42346PRESERVE_NONE
42347static bool Interp_PreIncBitfieldSint16(InterpState &S, CodePtr &PC) {
42348 {
42349 CodePtr OpPC = PC;
42350 const auto V0 = ReadArg<bool>(S, PC);
42351 const auto V1 = ReadArg<uint32_t>(S, PC);
42352 if (!PreIncBitfield<PT_Sint16>(S, OpPC, V0, V1)) return false;
42353 }
42354#if USE_TAILCALLS
42355 MUSTTAIL return InterpNext(S, PC);
42356#else
42357 return true;
42358#endif
42359}
42360PRESERVE_NONE
42361static bool Interp_PreIncBitfieldUint16(InterpState &S, CodePtr &PC) {
42362 {
42363 CodePtr OpPC = PC;
42364 const auto V0 = ReadArg<bool>(S, PC);
42365 const auto V1 = ReadArg<uint32_t>(S, PC);
42366 if (!PreIncBitfield<PT_Uint16>(S, OpPC, V0, V1)) return false;
42367 }
42368#if USE_TAILCALLS
42369 MUSTTAIL return InterpNext(S, PC);
42370#else
42371 return true;
42372#endif
42373}
42374PRESERVE_NONE
42375static bool Interp_PreIncBitfieldSint32(InterpState &S, CodePtr &PC) {
42376 {
42377 CodePtr OpPC = PC;
42378 const auto V0 = ReadArg<bool>(S, PC);
42379 const auto V1 = ReadArg<uint32_t>(S, PC);
42380 if (!PreIncBitfield<PT_Sint32>(S, OpPC, V0, V1)) return false;
42381 }
42382#if USE_TAILCALLS
42383 MUSTTAIL return InterpNext(S, PC);
42384#else
42385 return true;
42386#endif
42387}
42388PRESERVE_NONE
42389static bool Interp_PreIncBitfieldUint32(InterpState &S, CodePtr &PC) {
42390 {
42391 CodePtr OpPC = PC;
42392 const auto V0 = ReadArg<bool>(S, PC);
42393 const auto V1 = ReadArg<uint32_t>(S, PC);
42394 if (!PreIncBitfield<PT_Uint32>(S, OpPC, V0, V1)) return false;
42395 }
42396#if USE_TAILCALLS
42397 MUSTTAIL return InterpNext(S, PC);
42398#else
42399 return true;
42400#endif
42401}
42402PRESERVE_NONE
42403static bool Interp_PreIncBitfieldSint64(InterpState &S, CodePtr &PC) {
42404 {
42405 CodePtr OpPC = PC;
42406 const auto V0 = ReadArg<bool>(S, PC);
42407 const auto V1 = ReadArg<uint32_t>(S, PC);
42408 if (!PreIncBitfield<PT_Sint64>(S, OpPC, V0, V1)) return false;
42409 }
42410#if USE_TAILCALLS
42411 MUSTTAIL return InterpNext(S, PC);
42412#else
42413 return true;
42414#endif
42415}
42416PRESERVE_NONE
42417static bool Interp_PreIncBitfieldUint64(InterpState &S, CodePtr &PC) {
42418 {
42419 CodePtr OpPC = PC;
42420 const auto V0 = ReadArg<bool>(S, PC);
42421 const auto V1 = ReadArg<uint32_t>(S, PC);
42422 if (!PreIncBitfield<PT_Uint64>(S, OpPC, V0, V1)) return false;
42423 }
42424#if USE_TAILCALLS
42425 MUSTTAIL return InterpNext(S, PC);
42426#else
42427 return true;
42428#endif
42429}
42430PRESERVE_NONE
42431static bool Interp_PreIncBitfieldIntAP(InterpState &S, CodePtr &PC) {
42432 {
42433 CodePtr OpPC = PC;
42434 const auto V0 = ReadArg<bool>(S, PC);
42435 const auto V1 = ReadArg<uint32_t>(S, PC);
42436 if (!PreIncBitfield<PT_IntAP>(S, OpPC, V0, V1)) return false;
42437 }
42438#if USE_TAILCALLS
42439 MUSTTAIL return InterpNext(S, PC);
42440#else
42441 return true;
42442#endif
42443}
42444PRESERVE_NONE
42445static bool Interp_PreIncBitfieldIntAPS(InterpState &S, CodePtr &PC) {
42446 {
42447 CodePtr OpPC = PC;
42448 const auto V0 = ReadArg<bool>(S, PC);
42449 const auto V1 = ReadArg<uint32_t>(S, PC);
42450 if (!PreIncBitfield<PT_IntAPS>(S, OpPC, V0, V1)) return false;
42451 }
42452#if USE_TAILCALLS
42453 MUSTTAIL return InterpNext(S, PC);
42454#else
42455 return true;
42456#endif
42457}
42458PRESERVE_NONE
42459static bool Interp_PreIncBitfieldBool(InterpState &S, CodePtr &PC) {
42460 {
42461 CodePtr OpPC = PC;
42462 const auto V0 = ReadArg<bool>(S, PC);
42463 const auto V1 = ReadArg<uint32_t>(S, PC);
42464 if (!PreIncBitfield<PT_Bool>(S, OpPC, V0, V1)) return false;
42465 }
42466#if USE_TAILCALLS
42467 MUSTTAIL return InterpNext(S, PC);
42468#else
42469 return true;
42470#endif
42471}
42472PRESERVE_NONE
42473static bool Interp_PreIncBitfieldFixedPoint(InterpState &S, CodePtr &PC) {
42474 {
42475 CodePtr OpPC = PC;
42476 const auto V0 = ReadArg<bool>(S, PC);
42477 const auto V1 = ReadArg<uint32_t>(S, PC);
42478 if (!PreIncBitfield<PT_FixedPoint>(S, OpPC, V0, V1)) return false;
42479 }
42480#if USE_TAILCALLS
42481 MUSTTAIL return InterpNext(S, PC);
42482#else
42483 return true;
42484#endif
42485}
42486#endif
42487#ifdef GET_DISASM
42488case OP_PreIncBitfieldSint8:
42489 Text.Op = PrintName("PreIncBitfieldSint8");
42490 Text.Args.push_back(printArg<bool>(P, PC));
42491 Text.Args.push_back(printArg<uint32_t>(P, PC));
42492 break;
42493case OP_PreIncBitfieldUint8:
42494 Text.Op = PrintName("PreIncBitfieldUint8");
42495 Text.Args.push_back(printArg<bool>(P, PC));
42496 Text.Args.push_back(printArg<uint32_t>(P, PC));
42497 break;
42498case OP_PreIncBitfieldSint16:
42499 Text.Op = PrintName("PreIncBitfieldSint16");
42500 Text.Args.push_back(printArg<bool>(P, PC));
42501 Text.Args.push_back(printArg<uint32_t>(P, PC));
42502 break;
42503case OP_PreIncBitfieldUint16:
42504 Text.Op = PrintName("PreIncBitfieldUint16");
42505 Text.Args.push_back(printArg<bool>(P, PC));
42506 Text.Args.push_back(printArg<uint32_t>(P, PC));
42507 break;
42508case OP_PreIncBitfieldSint32:
42509 Text.Op = PrintName("PreIncBitfieldSint32");
42510 Text.Args.push_back(printArg<bool>(P, PC));
42511 Text.Args.push_back(printArg<uint32_t>(P, PC));
42512 break;
42513case OP_PreIncBitfieldUint32:
42514 Text.Op = PrintName("PreIncBitfieldUint32");
42515 Text.Args.push_back(printArg<bool>(P, PC));
42516 Text.Args.push_back(printArg<uint32_t>(P, PC));
42517 break;
42518case OP_PreIncBitfieldSint64:
42519 Text.Op = PrintName("PreIncBitfieldSint64");
42520 Text.Args.push_back(printArg<bool>(P, PC));
42521 Text.Args.push_back(printArg<uint32_t>(P, PC));
42522 break;
42523case OP_PreIncBitfieldUint64:
42524 Text.Op = PrintName("PreIncBitfieldUint64");
42525 Text.Args.push_back(printArg<bool>(P, PC));
42526 Text.Args.push_back(printArg<uint32_t>(P, PC));
42527 break;
42528case OP_PreIncBitfieldIntAP:
42529 Text.Op = PrintName("PreIncBitfieldIntAP");
42530 Text.Args.push_back(printArg<bool>(P, PC));
42531 Text.Args.push_back(printArg<uint32_t>(P, PC));
42532 break;
42533case OP_PreIncBitfieldIntAPS:
42534 Text.Op = PrintName("PreIncBitfieldIntAPS");
42535 Text.Args.push_back(printArg<bool>(P, PC));
42536 Text.Args.push_back(printArg<uint32_t>(P, PC));
42537 break;
42538case OP_PreIncBitfieldBool:
42539 Text.Op = PrintName("PreIncBitfieldBool");
42540 Text.Args.push_back(printArg<bool>(P, PC));
42541 Text.Args.push_back(printArg<uint32_t>(P, PC));
42542 break;
42543case OP_PreIncBitfieldFixedPoint:
42544 Text.Op = PrintName("PreIncBitfieldFixedPoint");
42545 Text.Args.push_back(printArg<bool>(P, PC));
42546 Text.Args.push_back(printArg<uint32_t>(P, PC));
42547 break;
42548#endif
42549#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42550bool emitPreIncBitfieldSint8( bool , uint32_t , SourceInfo);
42551bool emitPreIncBitfieldUint8( bool , uint32_t , SourceInfo);
42552bool emitPreIncBitfieldSint16( bool , uint32_t , SourceInfo);
42553bool emitPreIncBitfieldUint16( bool , uint32_t , SourceInfo);
42554bool emitPreIncBitfieldSint32( bool , uint32_t , SourceInfo);
42555bool emitPreIncBitfieldUint32( bool , uint32_t , SourceInfo);
42556bool emitPreIncBitfieldSint64( bool , uint32_t , SourceInfo);
42557bool emitPreIncBitfieldUint64( bool , uint32_t , SourceInfo);
42558bool emitPreIncBitfieldIntAP( bool , uint32_t , SourceInfo);
42559bool emitPreIncBitfieldIntAPS( bool , uint32_t , SourceInfo);
42560bool emitPreIncBitfieldBool( bool , uint32_t , SourceInfo);
42561bool emitPreIncBitfieldFixedPoint( bool , uint32_t , SourceInfo);
42562#endif
42563#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42564[[nodiscard]] bool emitPreIncBitfield(PrimType, bool, uint32_t, SourceInfo I);
42565#endif
42566#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
42567bool
42568#if defined(GET_EVAL_IMPL)
42569EvalEmitter
42570#else
42571ByteCodeEmitter
42572#endif
42573::emitPreIncBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
42574 switch (T0) {
42575 case PT_Sint8:
42576 return emitPreIncBitfieldSint8(A0, A1, I);
42577 case PT_Uint8:
42578 return emitPreIncBitfieldUint8(A0, A1, I);
42579 case PT_Sint16:
42580 return emitPreIncBitfieldSint16(A0, A1, I);
42581 case PT_Uint16:
42582 return emitPreIncBitfieldUint16(A0, A1, I);
42583 case PT_Sint32:
42584 return emitPreIncBitfieldSint32(A0, A1, I);
42585 case PT_Uint32:
42586 return emitPreIncBitfieldUint32(A0, A1, I);
42587 case PT_Sint64:
42588 return emitPreIncBitfieldSint64(A0, A1, I);
42589 case PT_Uint64:
42590 return emitPreIncBitfieldUint64(A0, A1, I);
42591 case PT_IntAP:
42592 return emitPreIncBitfieldIntAP(A0, A1, I);
42593 case PT_IntAPS:
42594 return emitPreIncBitfieldIntAPS(A0, A1, I);
42595 case PT_Bool:
42596 return emitPreIncBitfieldBool(A0, A1, I);
42597 case PT_FixedPoint:
42598 return emitPreIncBitfieldFixedPoint(A0, A1, I);
42599 default: llvm_unreachable("invalid type: emitPreIncBitfield");
42600 }
42601 llvm_unreachable("invalid enum value");
42602}
42603#endif
42604#ifdef GET_LINK_IMPL
42605bool ByteCodeEmitter::emitPreIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
42606 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint8, A0, A1, L);
42607}
42608bool ByteCodeEmitter::emitPreIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
42609 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint8, A0, A1, L);
42610}
42611bool ByteCodeEmitter::emitPreIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
42612 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint16, A0, A1, L);
42613}
42614bool ByteCodeEmitter::emitPreIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
42615 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint16, A0, A1, L);
42616}
42617bool ByteCodeEmitter::emitPreIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
42618 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint32, A0, A1, L);
42619}
42620bool ByteCodeEmitter::emitPreIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
42621 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint32, A0, A1, L);
42622}
42623bool ByteCodeEmitter::emitPreIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
42624 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint64, A0, A1, L);
42625}
42626bool ByteCodeEmitter::emitPreIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
42627 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint64, A0, A1, L);
42628}
42629bool ByteCodeEmitter::emitPreIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
42630 return emitOp<bool, uint32_t>(OP_PreIncBitfieldIntAP, A0, A1, L);
42631}
42632bool ByteCodeEmitter::emitPreIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
42633 return emitOp<bool, uint32_t>(OP_PreIncBitfieldIntAPS, A0, A1, L);
42634}
42635bool ByteCodeEmitter::emitPreIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
42636 return emitOp<bool, uint32_t>(OP_PreIncBitfieldBool, A0, A1, L);
42637}
42638bool ByteCodeEmitter::emitPreIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
42639 return emitOp<bool, uint32_t>(OP_PreIncBitfieldFixedPoint, A0, A1, L);
42640}
42641#endif
42642#ifdef GET_EVAL_IMPL
42643bool EvalEmitter::emitPreIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
42644 if (!isActive()) return true;
42645 CurrentSource = L;
42646 return PreIncBitfield<PT_Sint8>(S, OpPC, A0, A1);
42647}
42648bool EvalEmitter::emitPreIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
42649 if (!isActive()) return true;
42650 CurrentSource = L;
42651 return PreIncBitfield<PT_Uint8>(S, OpPC, A0, A1);
42652}
42653bool EvalEmitter::emitPreIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
42654 if (!isActive()) return true;
42655 CurrentSource = L;
42656 return PreIncBitfield<PT_Sint16>(S, OpPC, A0, A1);
42657}
42658bool EvalEmitter::emitPreIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
42659 if (!isActive()) return true;
42660 CurrentSource = L;
42661 return PreIncBitfield<PT_Uint16>(S, OpPC, A0, A1);
42662}
42663bool EvalEmitter::emitPreIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
42664 if (!isActive()) return true;
42665 CurrentSource = L;
42666 return PreIncBitfield<PT_Sint32>(S, OpPC, A0, A1);
42667}
42668bool EvalEmitter::emitPreIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
42669 if (!isActive()) return true;
42670 CurrentSource = L;
42671 return PreIncBitfield<PT_Uint32>(S, OpPC, A0, A1);
42672}
42673bool EvalEmitter::emitPreIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
42674 if (!isActive()) return true;
42675 CurrentSource = L;
42676 return PreIncBitfield<PT_Sint64>(S, OpPC, A0, A1);
42677}
42678bool EvalEmitter::emitPreIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
42679 if (!isActive()) return true;
42680 CurrentSource = L;
42681 return PreIncBitfield<PT_Uint64>(S, OpPC, A0, A1);
42682}
42683bool EvalEmitter::emitPreIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
42684 if (!isActive()) return true;
42685 CurrentSource = L;
42686 return PreIncBitfield<PT_IntAP>(S, OpPC, A0, A1);
42687}
42688bool EvalEmitter::emitPreIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
42689 if (!isActive()) return true;
42690 CurrentSource = L;
42691 return PreIncBitfield<PT_IntAPS>(S, OpPC, A0, A1);
42692}
42693bool EvalEmitter::emitPreIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
42694 if (!isActive()) return true;
42695 CurrentSource = L;
42696 return PreIncBitfield<PT_Bool>(S, OpPC, A0, A1);
42697}
42698bool EvalEmitter::emitPreIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
42699 if (!isActive()) return true;
42700 CurrentSource = L;
42701 return PreIncBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
42702}
42703#endif
42704#ifdef GET_OPCODE_NAMES
42705OP_PtrPtrCast,
42706#endif
42707#ifdef GET_INTERPFN_LIST
42708&Interp_PtrPtrCast,
42709#endif
42710#ifdef GET_INTERPFN_DISPATCHERS
42711PRESERVE_NONE
42712static bool Interp_PtrPtrCast(InterpState &S, CodePtr &PC) {
42713 {
42714 CodePtr OpPC = PC;
42715 const auto V0 = ReadArg<bool>(S, PC);
42716 if (!PtrPtrCast(S, OpPC, V0)) return false;
42717 }
42718#if USE_TAILCALLS
42719 MUSTTAIL return InterpNext(S, PC);
42720#else
42721 return true;
42722#endif
42723}
42724#endif
42725#ifdef GET_DISASM
42726case OP_PtrPtrCast:
42727 Text.Op = PrintName("PtrPtrCast");
42728 Text.Args.push_back(printArg<bool>(P, PC));
42729 break;
42730#endif
42731#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42732bool emitPtrPtrCast( bool , SourceInfo);
42733#endif
42734#ifdef GET_LINK_IMPL
42735bool ByteCodeEmitter::emitPtrPtrCast( bool A0, SourceInfo L) {
42736 return emitOp<bool>(OP_PtrPtrCast, A0, L);
42737}
42738#endif
42739#ifdef GET_EVAL_IMPL
42740bool EvalEmitter::emitPtrPtrCast( bool A0, SourceInfo L) {
42741 if (!isActive()) return true;
42742 CurrentSource = L;
42743 return PtrPtrCast(S, OpPC, A0);
42744}
42745#endif
42746#ifdef GET_OPCODE_NAMES
42747OP_PushCC,
42748#endif
42749#ifdef GET_INTERPFN_LIST
42750&Interp_PushCC,
42751#endif
42752#ifdef GET_INTERPFN_DISPATCHERS
42753PRESERVE_NONE
42754static bool Interp_PushCC(InterpState &S, CodePtr &PC) {
42755 {
42756 CodePtr OpPC = PC;
42757 const auto V0 = ReadArg<bool>(S, PC);
42758 PushCC(S, OpPC, V0);
42759 }
42760#if USE_TAILCALLS
42761 MUSTTAIL return InterpNext(S, PC);
42762#else
42763 return true;
42764#endif
42765}
42766#endif
42767#ifdef GET_DISASM
42768case OP_PushCC:
42769 Text.Op = PrintName("PushCC");
42770 Text.Args.push_back(printArg<bool>(P, PC));
42771 break;
42772#endif
42773#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42774bool emitPushCC( bool , SourceInfo);
42775#endif
42776#ifdef GET_LINK_IMPL
42777bool ByteCodeEmitter::emitPushCC( bool A0, SourceInfo L) {
42778 return emitOp<bool>(OP_PushCC, A0, L);
42779}
42780#endif
42781#ifdef GET_EVAL_IMPL
42782bool EvalEmitter::emitPushCC( bool A0, SourceInfo L) {
42783 if (!isActive()) return true;
42784 CurrentSource = L;
42785 return PushCC(S, OpPC, A0);
42786}
42787#endif
42788#ifdef GET_OPCODE_NAMES
42789OP_PushIgnoreDiags,
42790#endif
42791#ifdef GET_INTERPFN_LIST
42792&Interp_PushIgnoreDiags,
42793#endif
42794#ifdef GET_INTERPFN_DISPATCHERS
42795PRESERVE_NONE
42796static bool Interp_PushIgnoreDiags(InterpState &S, CodePtr &PC) {
42797 PushIgnoreDiags(S, PC);
42798#if USE_TAILCALLS
42799 MUSTTAIL return InterpNext(S, PC);
42800#else
42801 return true;
42802#endif
42803}
42804#endif
42805#ifdef GET_DISASM
42806case OP_PushIgnoreDiags:
42807 Text.Op = PrintName("PushIgnoreDiags");
42808 break;
42809#endif
42810#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42811bool emitPushIgnoreDiags(SourceInfo);
42812#endif
42813#ifdef GET_LINK_IMPL
42814bool ByteCodeEmitter::emitPushIgnoreDiags(SourceInfo L) {
42815 return emitOp<>(OP_PushIgnoreDiags, L);
42816}
42817#endif
42818#ifdef GET_EVAL_IMPL
42819bool EvalEmitter::emitPushIgnoreDiags(SourceInfo L) {
42820 if (!isActive()) return true;
42821 CurrentSource = L;
42822 return PushIgnoreDiags(S, OpPC);
42823}
42824#endif
42825#ifdef GET_OPCODE_NAMES
42826OP_PushMSVCCE,
42827#endif
42828#ifdef GET_INTERPFN_LIST
42829&Interp_PushMSVCCE,
42830#endif
42831#ifdef GET_INTERPFN_DISPATCHERS
42832PRESERVE_NONE
42833static bool Interp_PushMSVCCE(InterpState &S, CodePtr &PC) {
42834 PushMSVCCE(S, PC);
42835#if USE_TAILCALLS
42836 MUSTTAIL return InterpNext(S, PC);
42837#else
42838 return true;
42839#endif
42840}
42841#endif
42842#ifdef GET_DISASM
42843case OP_PushMSVCCE:
42844 Text.Op = PrintName("PushMSVCCE");
42845 break;
42846#endif
42847#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42848bool emitPushMSVCCE(SourceInfo);
42849#endif
42850#ifdef GET_LINK_IMPL
42851bool ByteCodeEmitter::emitPushMSVCCE(SourceInfo L) {
42852 return emitOp<>(OP_PushMSVCCE, L);
42853}
42854#endif
42855#ifdef GET_EVAL_IMPL
42856bool EvalEmitter::emitPushMSVCCE(SourceInfo L) {
42857 if (!isActive()) return true;
42858 CurrentSource = L;
42859 return PushMSVCCE(S, OpPC);
42860}
42861#endif
42862#ifdef GET_OPCODE_NAMES
42863OP_RVOPtr,
42864#endif
42865#ifdef GET_INTERPFN_LIST
42866&Interp_RVOPtr,
42867#endif
42868#ifdef GET_INTERPFN_DISPATCHERS
42869PRESERVE_NONE
42870static bool Interp_RVOPtr(InterpState &S, CodePtr &PC) {
42871 if (!RVOPtr(S, PC)) return false;
42872#if USE_TAILCALLS
42873 MUSTTAIL return InterpNext(S, PC);
42874#else
42875 return true;
42876#endif
42877}
42878#endif
42879#ifdef GET_DISASM
42880case OP_RVOPtr:
42881 Text.Op = PrintName("RVOPtr");
42882 break;
42883#endif
42884#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42885bool emitRVOPtr(SourceInfo);
42886#endif
42887#ifdef GET_LINK_IMPL
42888bool ByteCodeEmitter::emitRVOPtr(SourceInfo L) {
42889 return emitOp<>(OP_RVOPtr, L);
42890}
42891#endif
42892#ifdef GET_EVAL_IMPL
42893bool EvalEmitter::emitRVOPtr(SourceInfo L) {
42894 if (!isActive()) return true;
42895 CurrentSource = L;
42896 return RVOPtr(S, OpPC);
42897}
42898#endif
42899#ifdef GET_OPCODE_NAMES
42900OP_RemSint8,
42901OP_RemUint8,
42902OP_RemSint16,
42903OP_RemUint16,
42904OP_RemSint32,
42905OP_RemUint32,
42906OP_RemSint64,
42907OP_RemUint64,
42908OP_RemIntAP,
42909OP_RemIntAPS,
42910OP_RemFixedPoint,
42911#endif
42912#ifdef GET_INTERPFN_LIST
42913&Interp_RemSint8,
42914&Interp_RemUint8,
42915&Interp_RemSint16,
42916&Interp_RemUint16,
42917&Interp_RemSint32,
42918&Interp_RemUint32,
42919&Interp_RemSint64,
42920&Interp_RemUint64,
42921&Interp_RemIntAP,
42922&Interp_RemIntAPS,
42923&Interp_RemFixedPoint,
42924#endif
42925#ifdef GET_INTERPFN_DISPATCHERS
42926PRESERVE_NONE
42927static bool Interp_RemSint8(InterpState &S, CodePtr &PC) {
42928 if (!Rem<PT_Sint8>(S, PC)) return false;
42929#if USE_TAILCALLS
42930 MUSTTAIL return InterpNext(S, PC);
42931#else
42932 return true;
42933#endif
42934}
42935PRESERVE_NONE
42936static bool Interp_RemUint8(InterpState &S, CodePtr &PC) {
42937 if (!Rem<PT_Uint8>(S, PC)) return false;
42938#if USE_TAILCALLS
42939 MUSTTAIL return InterpNext(S, PC);
42940#else
42941 return true;
42942#endif
42943}
42944PRESERVE_NONE
42945static bool Interp_RemSint16(InterpState &S, CodePtr &PC) {
42946 if (!Rem<PT_Sint16>(S, PC)) return false;
42947#if USE_TAILCALLS
42948 MUSTTAIL return InterpNext(S, PC);
42949#else
42950 return true;
42951#endif
42952}
42953PRESERVE_NONE
42954static bool Interp_RemUint16(InterpState &S, CodePtr &PC) {
42955 if (!Rem<PT_Uint16>(S, PC)) return false;
42956#if USE_TAILCALLS
42957 MUSTTAIL return InterpNext(S, PC);
42958#else
42959 return true;
42960#endif
42961}
42962PRESERVE_NONE
42963static bool Interp_RemSint32(InterpState &S, CodePtr &PC) {
42964 if (!Rem<PT_Sint32>(S, PC)) return false;
42965#if USE_TAILCALLS
42966 MUSTTAIL return InterpNext(S, PC);
42967#else
42968 return true;
42969#endif
42970}
42971PRESERVE_NONE
42972static bool Interp_RemUint32(InterpState &S, CodePtr &PC) {
42973 if (!Rem<PT_Uint32>(S, PC)) return false;
42974#if USE_TAILCALLS
42975 MUSTTAIL return InterpNext(S, PC);
42976#else
42977 return true;
42978#endif
42979}
42980PRESERVE_NONE
42981static bool Interp_RemSint64(InterpState &S, CodePtr &PC) {
42982 if (!Rem<PT_Sint64>(S, PC)) return false;
42983#if USE_TAILCALLS
42984 MUSTTAIL return InterpNext(S, PC);
42985#else
42986 return true;
42987#endif
42988}
42989PRESERVE_NONE
42990static bool Interp_RemUint64(InterpState &S, CodePtr &PC) {
42991 if (!Rem<PT_Uint64>(S, PC)) return false;
42992#if USE_TAILCALLS
42993 MUSTTAIL return InterpNext(S, PC);
42994#else
42995 return true;
42996#endif
42997}
42998PRESERVE_NONE
42999static bool Interp_RemIntAP(InterpState &S, CodePtr &PC) {
43000 if (!Rem<PT_IntAP>(S, PC)) return false;
43001#if USE_TAILCALLS
43002 MUSTTAIL return InterpNext(S, PC);
43003#else
43004 return true;
43005#endif
43006}
43007PRESERVE_NONE
43008static bool Interp_RemIntAPS(InterpState &S, CodePtr &PC) {
43009 if (!Rem<PT_IntAPS>(S, PC)) return false;
43010#if USE_TAILCALLS
43011 MUSTTAIL return InterpNext(S, PC);
43012#else
43013 return true;
43014#endif
43015}
43016PRESERVE_NONE
43017static bool Interp_RemFixedPoint(InterpState &S, CodePtr &PC) {
43018 if (!Rem<PT_FixedPoint>(S, PC)) return false;
43019#if USE_TAILCALLS
43020 MUSTTAIL return InterpNext(S, PC);
43021#else
43022 return true;
43023#endif
43024}
43025#endif
43026#ifdef GET_DISASM
43027case OP_RemSint8:
43028 Text.Op = PrintName("RemSint8");
43029 break;
43030case OP_RemUint8:
43031 Text.Op = PrintName("RemUint8");
43032 break;
43033case OP_RemSint16:
43034 Text.Op = PrintName("RemSint16");
43035 break;
43036case OP_RemUint16:
43037 Text.Op = PrintName("RemUint16");
43038 break;
43039case OP_RemSint32:
43040 Text.Op = PrintName("RemSint32");
43041 break;
43042case OP_RemUint32:
43043 Text.Op = PrintName("RemUint32");
43044 break;
43045case OP_RemSint64:
43046 Text.Op = PrintName("RemSint64");
43047 break;
43048case OP_RemUint64:
43049 Text.Op = PrintName("RemUint64");
43050 break;
43051case OP_RemIntAP:
43052 Text.Op = PrintName("RemIntAP");
43053 break;
43054case OP_RemIntAPS:
43055 Text.Op = PrintName("RemIntAPS");
43056 break;
43057case OP_RemFixedPoint:
43058 Text.Op = PrintName("RemFixedPoint");
43059 break;
43060#endif
43061#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43062bool emitRemSint8(SourceInfo);
43063bool emitRemUint8(SourceInfo);
43064bool emitRemSint16(SourceInfo);
43065bool emitRemUint16(SourceInfo);
43066bool emitRemSint32(SourceInfo);
43067bool emitRemUint32(SourceInfo);
43068bool emitRemSint64(SourceInfo);
43069bool emitRemUint64(SourceInfo);
43070bool emitRemIntAP(SourceInfo);
43071bool emitRemIntAPS(SourceInfo);
43072bool emitRemFixedPoint(SourceInfo);
43073#endif
43074#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43075[[nodiscard]] bool emitRem(PrimType, SourceInfo I);
43076#endif
43077#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
43078bool
43079#if defined(GET_EVAL_IMPL)
43080EvalEmitter
43081#else
43082ByteCodeEmitter
43083#endif
43084::emitRem(PrimType T0, SourceInfo I) {
43085 switch (T0) {
43086 case PT_Sint8:
43087 return emitRemSint8(I);
43088 case PT_Uint8:
43089 return emitRemUint8(I);
43090 case PT_Sint16:
43091 return emitRemSint16(I);
43092 case PT_Uint16:
43093 return emitRemUint16(I);
43094 case PT_Sint32:
43095 return emitRemSint32(I);
43096 case PT_Uint32:
43097 return emitRemUint32(I);
43098 case PT_Sint64:
43099 return emitRemSint64(I);
43100 case PT_Uint64:
43101 return emitRemUint64(I);
43102 case PT_IntAP:
43103 return emitRemIntAP(I);
43104 case PT_IntAPS:
43105 return emitRemIntAPS(I);
43106 case PT_FixedPoint:
43107 return emitRemFixedPoint(I);
43108 default: llvm_unreachable("invalid type: emitRem");
43109 }
43110 llvm_unreachable("invalid enum value");
43111}
43112#endif
43113#ifdef GET_LINK_IMPL
43114bool ByteCodeEmitter::emitRemSint8(SourceInfo L) {
43115 return emitOp<>(OP_RemSint8, L);
43116}
43117bool ByteCodeEmitter::emitRemUint8(SourceInfo L) {
43118 return emitOp<>(OP_RemUint8, L);
43119}
43120bool ByteCodeEmitter::emitRemSint16(SourceInfo L) {
43121 return emitOp<>(OP_RemSint16, L);
43122}
43123bool ByteCodeEmitter::emitRemUint16(SourceInfo L) {
43124 return emitOp<>(OP_RemUint16, L);
43125}
43126bool ByteCodeEmitter::emitRemSint32(SourceInfo L) {
43127 return emitOp<>(OP_RemSint32, L);
43128}
43129bool ByteCodeEmitter::emitRemUint32(SourceInfo L) {
43130 return emitOp<>(OP_RemUint32, L);
43131}
43132bool ByteCodeEmitter::emitRemSint64(SourceInfo L) {
43133 return emitOp<>(OP_RemSint64, L);
43134}
43135bool ByteCodeEmitter::emitRemUint64(SourceInfo L) {
43136 return emitOp<>(OP_RemUint64, L);
43137}
43138bool ByteCodeEmitter::emitRemIntAP(SourceInfo L) {
43139 return emitOp<>(OP_RemIntAP, L);
43140}
43141bool ByteCodeEmitter::emitRemIntAPS(SourceInfo L) {
43142 return emitOp<>(OP_RemIntAPS, L);
43143}
43144bool ByteCodeEmitter::emitRemFixedPoint(SourceInfo L) {
43145 return emitOp<>(OP_RemFixedPoint, L);
43146}
43147#endif
43148#ifdef GET_EVAL_IMPL
43149bool EvalEmitter::emitRemSint8(SourceInfo L) {
43150 if (!isActive()) return true;
43151 CurrentSource = L;
43152 return Rem<PT_Sint8>(S, OpPC);
43153}
43154bool EvalEmitter::emitRemUint8(SourceInfo L) {
43155 if (!isActive()) return true;
43156 CurrentSource = L;
43157 return Rem<PT_Uint8>(S, OpPC);
43158}
43159bool EvalEmitter::emitRemSint16(SourceInfo L) {
43160 if (!isActive()) return true;
43161 CurrentSource = L;
43162 return Rem<PT_Sint16>(S, OpPC);
43163}
43164bool EvalEmitter::emitRemUint16(SourceInfo L) {
43165 if (!isActive()) return true;
43166 CurrentSource = L;
43167 return Rem<PT_Uint16>(S, OpPC);
43168}
43169bool EvalEmitter::emitRemSint32(SourceInfo L) {
43170 if (!isActive()) return true;
43171 CurrentSource = L;
43172 return Rem<PT_Sint32>(S, OpPC);
43173}
43174bool EvalEmitter::emitRemUint32(SourceInfo L) {
43175 if (!isActive()) return true;
43176 CurrentSource = L;
43177 return Rem<PT_Uint32>(S, OpPC);
43178}
43179bool EvalEmitter::emitRemSint64(SourceInfo L) {
43180 if (!isActive()) return true;
43181 CurrentSource = L;
43182 return Rem<PT_Sint64>(S, OpPC);
43183}
43184bool EvalEmitter::emitRemUint64(SourceInfo L) {
43185 if (!isActive()) return true;
43186 CurrentSource = L;
43187 return Rem<PT_Uint64>(S, OpPC);
43188}
43189bool EvalEmitter::emitRemIntAP(SourceInfo L) {
43190 if (!isActive()) return true;
43191 CurrentSource = L;
43192 return Rem<PT_IntAP>(S, OpPC);
43193}
43194bool EvalEmitter::emitRemIntAPS(SourceInfo L) {
43195 if (!isActive()) return true;
43196 CurrentSource = L;
43197 return Rem<PT_IntAPS>(S, OpPC);
43198}
43199bool EvalEmitter::emitRemFixedPoint(SourceInfo L) {
43200 if (!isActive()) return true;
43201 CurrentSource = L;
43202 return Rem<PT_FixedPoint>(S, OpPC);
43203}
43204#endif
43205#ifdef GET_OPCODE_NAMES
43206OP_RetSint8,
43207OP_RetUint8,
43208OP_RetSint16,
43209OP_RetUint16,
43210OP_RetSint32,
43211OP_RetUint32,
43212OP_RetSint64,
43213OP_RetUint64,
43214OP_RetIntAP,
43215OP_RetIntAPS,
43216OP_RetBool,
43217OP_RetFixedPoint,
43218OP_RetPtr,
43219OP_RetMemberPtr,
43220OP_RetFloat,
43221#endif
43222#ifdef GET_INTERPFN_LIST
43223&Interp_RetSint8,
43224&Interp_RetUint8,
43225&Interp_RetSint16,
43226&Interp_RetUint16,
43227&Interp_RetSint32,
43228&Interp_RetUint32,
43229&Interp_RetSint64,
43230&Interp_RetUint64,
43231&Interp_RetIntAP,
43232&Interp_RetIntAPS,
43233&Interp_RetBool,
43234&Interp_RetFixedPoint,
43235&Interp_RetPtr,
43236&Interp_RetMemberPtr,
43237&Interp_RetFloat,
43238#endif
43239#ifdef GET_INTERPFN_DISPATCHERS
43240PRESERVE_NONE
43241static bool Interp_RetSint8(InterpState &S, CodePtr &PC) {
43242 MUSTTAIL return Ret<PT_Sint8>(S, PC);
43243}
43244PRESERVE_NONE
43245static bool Interp_RetUint8(InterpState &S, CodePtr &PC) {
43246 MUSTTAIL return Ret<PT_Uint8>(S, PC);
43247}
43248PRESERVE_NONE
43249static bool Interp_RetSint16(InterpState &S, CodePtr &PC) {
43250 MUSTTAIL return Ret<PT_Sint16>(S, PC);
43251}
43252PRESERVE_NONE
43253static bool Interp_RetUint16(InterpState &S, CodePtr &PC) {
43254 MUSTTAIL return Ret<PT_Uint16>(S, PC);
43255}
43256PRESERVE_NONE
43257static bool Interp_RetSint32(InterpState &S, CodePtr &PC) {
43258 MUSTTAIL return Ret<PT_Sint32>(S, PC);
43259}
43260PRESERVE_NONE
43261static bool Interp_RetUint32(InterpState &S, CodePtr &PC) {
43262 MUSTTAIL return Ret<PT_Uint32>(S, PC);
43263}
43264PRESERVE_NONE
43265static bool Interp_RetSint64(InterpState &S, CodePtr &PC) {
43266 MUSTTAIL return Ret<PT_Sint64>(S, PC);
43267}
43268PRESERVE_NONE
43269static bool Interp_RetUint64(InterpState &S, CodePtr &PC) {
43270 MUSTTAIL return Ret<PT_Uint64>(S, PC);
43271}
43272PRESERVE_NONE
43273static bool Interp_RetIntAP(InterpState &S, CodePtr &PC) {
43274 MUSTTAIL return Ret<PT_IntAP>(S, PC);
43275}
43276PRESERVE_NONE
43277static bool Interp_RetIntAPS(InterpState &S, CodePtr &PC) {
43278 MUSTTAIL return Ret<PT_IntAPS>(S, PC);
43279}
43280PRESERVE_NONE
43281static bool Interp_RetBool(InterpState &S, CodePtr &PC) {
43282 MUSTTAIL return Ret<PT_Bool>(S, PC);
43283}
43284PRESERVE_NONE
43285static bool Interp_RetFixedPoint(InterpState &S, CodePtr &PC) {
43286 MUSTTAIL return Ret<PT_FixedPoint>(S, PC);
43287}
43288PRESERVE_NONE
43289static bool Interp_RetPtr(InterpState &S, CodePtr &PC) {
43290 MUSTTAIL return Ret<PT_Ptr>(S, PC);
43291}
43292PRESERVE_NONE
43293static bool Interp_RetMemberPtr(InterpState &S, CodePtr &PC) {
43294 MUSTTAIL return Ret<PT_MemberPtr>(S, PC);
43295}
43296PRESERVE_NONE
43297static bool Interp_RetFloat(InterpState &S, CodePtr &PC) {
43298 MUSTTAIL return Ret<PT_Float>(S, PC);
43299}
43300#endif
43301#ifdef GET_DISASM
43302case OP_RetSint8:
43303 Text.Op = PrintName("RetSint8");
43304 break;
43305case OP_RetUint8:
43306 Text.Op = PrintName("RetUint8");
43307 break;
43308case OP_RetSint16:
43309 Text.Op = PrintName("RetSint16");
43310 break;
43311case OP_RetUint16:
43312 Text.Op = PrintName("RetUint16");
43313 break;
43314case OP_RetSint32:
43315 Text.Op = PrintName("RetSint32");
43316 break;
43317case OP_RetUint32:
43318 Text.Op = PrintName("RetUint32");
43319 break;
43320case OP_RetSint64:
43321 Text.Op = PrintName("RetSint64");
43322 break;
43323case OP_RetUint64:
43324 Text.Op = PrintName("RetUint64");
43325 break;
43326case OP_RetIntAP:
43327 Text.Op = PrintName("RetIntAP");
43328 break;
43329case OP_RetIntAPS:
43330 Text.Op = PrintName("RetIntAPS");
43331 break;
43332case OP_RetBool:
43333 Text.Op = PrintName("RetBool");
43334 break;
43335case OP_RetFixedPoint:
43336 Text.Op = PrintName("RetFixedPoint");
43337 break;
43338case OP_RetPtr:
43339 Text.Op = PrintName("RetPtr");
43340 break;
43341case OP_RetMemberPtr:
43342 Text.Op = PrintName("RetMemberPtr");
43343 break;
43344case OP_RetFloat:
43345 Text.Op = PrintName("RetFloat");
43346 break;
43347#endif
43348#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43349bool emitRetSint8(SourceInfo);
43350bool emitRetUint8(SourceInfo);
43351bool emitRetSint16(SourceInfo);
43352bool emitRetUint16(SourceInfo);
43353bool emitRetSint32(SourceInfo);
43354bool emitRetUint32(SourceInfo);
43355bool emitRetSint64(SourceInfo);
43356bool emitRetUint64(SourceInfo);
43357bool emitRetIntAP(SourceInfo);
43358bool emitRetIntAPS(SourceInfo);
43359bool emitRetBool(SourceInfo);
43360bool emitRetFixedPoint(SourceInfo);
43361bool emitRetPtr(SourceInfo);
43362bool emitRetMemberPtr(SourceInfo);
43363bool emitRetFloat(SourceInfo);
43364#if defined(GET_EVAL_PROTO)
43365template<PrimType>
43366bool emitRet(SourceInfo);
43367#endif
43368#endif
43369#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43370[[nodiscard]] bool emitRet(PrimType, SourceInfo I);
43371#endif
43372#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
43373bool
43374#if defined(GET_EVAL_IMPL)
43375EvalEmitter
43376#else
43377ByteCodeEmitter
43378#endif
43379::emitRet(PrimType T0, SourceInfo I) {
43380 switch (T0) {
43381 case PT_Sint8:
43382#ifdef GET_LINK_IMPL
43383 return emitRetSint8
43384#else
43385 return emitRet<PT_Sint8>
43386#endif
43387 (I);
43388 case PT_Uint8:
43389#ifdef GET_LINK_IMPL
43390 return emitRetUint8
43391#else
43392 return emitRet<PT_Uint8>
43393#endif
43394 (I);
43395 case PT_Sint16:
43396#ifdef GET_LINK_IMPL
43397 return emitRetSint16
43398#else
43399 return emitRet<PT_Sint16>
43400#endif
43401 (I);
43402 case PT_Uint16:
43403#ifdef GET_LINK_IMPL
43404 return emitRetUint16
43405#else
43406 return emitRet<PT_Uint16>
43407#endif
43408 (I);
43409 case PT_Sint32:
43410#ifdef GET_LINK_IMPL
43411 return emitRetSint32
43412#else
43413 return emitRet<PT_Sint32>
43414#endif
43415 (I);
43416 case PT_Uint32:
43417#ifdef GET_LINK_IMPL
43418 return emitRetUint32
43419#else
43420 return emitRet<PT_Uint32>
43421#endif
43422 (I);
43423 case PT_Sint64:
43424#ifdef GET_LINK_IMPL
43425 return emitRetSint64
43426#else
43427 return emitRet<PT_Sint64>
43428#endif
43429 (I);
43430 case PT_Uint64:
43431#ifdef GET_LINK_IMPL
43432 return emitRetUint64
43433#else
43434 return emitRet<PT_Uint64>
43435#endif
43436 (I);
43437 case PT_IntAP:
43438#ifdef GET_LINK_IMPL
43439 return emitRetIntAP
43440#else
43441 return emitRet<PT_IntAP>
43442#endif
43443 (I);
43444 case PT_IntAPS:
43445#ifdef GET_LINK_IMPL
43446 return emitRetIntAPS
43447#else
43448 return emitRet<PT_IntAPS>
43449#endif
43450 (I);
43451 case PT_Bool:
43452#ifdef GET_LINK_IMPL
43453 return emitRetBool
43454#else
43455 return emitRet<PT_Bool>
43456#endif
43457 (I);
43458 case PT_FixedPoint:
43459#ifdef GET_LINK_IMPL
43460 return emitRetFixedPoint
43461#else
43462 return emitRet<PT_FixedPoint>
43463#endif
43464 (I);
43465 case PT_Ptr:
43466#ifdef GET_LINK_IMPL
43467 return emitRetPtr
43468#else
43469 return emitRet<PT_Ptr>
43470#endif
43471 (I);
43472 case PT_MemberPtr:
43473#ifdef GET_LINK_IMPL
43474 return emitRetMemberPtr
43475#else
43476 return emitRet<PT_MemberPtr>
43477#endif
43478 (I);
43479 case PT_Float:
43480#ifdef GET_LINK_IMPL
43481 return emitRetFloat
43482#else
43483 return emitRet<PT_Float>
43484#endif
43485 (I);
43486 }
43487 llvm_unreachable("invalid enum value");
43488}
43489#endif
43490#ifdef GET_LINK_IMPL
43491bool ByteCodeEmitter::emitRetSint8(SourceInfo L) {
43492 return emitOp<>(OP_RetSint8, L);
43493}
43494bool ByteCodeEmitter::emitRetUint8(SourceInfo L) {
43495 return emitOp<>(OP_RetUint8, L);
43496}
43497bool ByteCodeEmitter::emitRetSint16(SourceInfo L) {
43498 return emitOp<>(OP_RetSint16, L);
43499}
43500bool ByteCodeEmitter::emitRetUint16(SourceInfo L) {
43501 return emitOp<>(OP_RetUint16, L);
43502}
43503bool ByteCodeEmitter::emitRetSint32(SourceInfo L) {
43504 return emitOp<>(OP_RetSint32, L);
43505}
43506bool ByteCodeEmitter::emitRetUint32(SourceInfo L) {
43507 return emitOp<>(OP_RetUint32, L);
43508}
43509bool ByteCodeEmitter::emitRetSint64(SourceInfo L) {
43510 return emitOp<>(OP_RetSint64, L);
43511}
43512bool ByteCodeEmitter::emitRetUint64(SourceInfo L) {
43513 return emitOp<>(OP_RetUint64, L);
43514}
43515bool ByteCodeEmitter::emitRetIntAP(SourceInfo L) {
43516 return emitOp<>(OP_RetIntAP, L);
43517}
43518bool ByteCodeEmitter::emitRetIntAPS(SourceInfo L) {
43519 return emitOp<>(OP_RetIntAPS, L);
43520}
43521bool ByteCodeEmitter::emitRetBool(SourceInfo L) {
43522 return emitOp<>(OP_RetBool, L);
43523}
43524bool ByteCodeEmitter::emitRetFixedPoint(SourceInfo L) {
43525 return emitOp<>(OP_RetFixedPoint, L);
43526}
43527bool ByteCodeEmitter::emitRetPtr(SourceInfo L) {
43528 return emitOp<>(OP_RetPtr, L);
43529}
43530bool ByteCodeEmitter::emitRetMemberPtr(SourceInfo L) {
43531 return emitOp<>(OP_RetMemberPtr, L);
43532}
43533bool ByteCodeEmitter::emitRetFloat(SourceInfo L) {
43534 return emitOp<>(OP_RetFloat, L);
43535}
43536#endif
43537#ifdef GET_OPCODE_NAMES
43538OP_RetValue,
43539#endif
43540#ifdef GET_INTERPFN_LIST
43541&Interp_RetValue,
43542#endif
43543#ifdef GET_INTERPFN_DISPATCHERS
43544PRESERVE_NONE
43545static bool Interp_RetValue(InterpState &S, CodePtr &PC) {
43546 MUSTTAIL return RetValue(S, PC);
43547}
43548#endif
43549#ifdef GET_DISASM
43550case OP_RetValue:
43551 Text.Op = PrintName("RetValue");
43552 break;
43553#endif
43554#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43555bool emitRetValue(SourceInfo);
43556#endif
43557#ifdef GET_LINK_IMPL
43558bool ByteCodeEmitter::emitRetValue(SourceInfo L) {
43559 return emitOp<>(OP_RetValue, L);
43560}
43561#endif
43562#ifdef GET_OPCODE_NAMES
43563OP_RetVoid,
43564#endif
43565#ifdef GET_INTERPFN_LIST
43566&Interp_RetVoid,
43567#endif
43568#ifdef GET_INTERPFN_DISPATCHERS
43569PRESERVE_NONE
43570static bool Interp_RetVoid(InterpState &S, CodePtr &PC) {
43571 MUSTTAIL return RetVoid(S, PC);
43572}
43573#endif
43574#ifdef GET_DISASM
43575case OP_RetVoid:
43576 Text.Op = PrintName("RetVoid");
43577 break;
43578#endif
43579#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43580bool emitRetVoid(SourceInfo);
43581#endif
43582#ifdef GET_LINK_IMPL
43583bool ByteCodeEmitter::emitRetVoid(SourceInfo L) {
43584 return emitOp<>(OP_RetVoid, L);
43585}
43586#endif
43587#ifdef GET_OPCODE_NAMES
43588OP_SetFieldSint8,
43589OP_SetFieldUint8,
43590OP_SetFieldSint16,
43591OP_SetFieldUint16,
43592OP_SetFieldSint32,
43593OP_SetFieldUint32,
43594OP_SetFieldSint64,
43595OP_SetFieldUint64,
43596OP_SetFieldIntAP,
43597OP_SetFieldIntAPS,
43598OP_SetFieldBool,
43599OP_SetFieldFixedPoint,
43600OP_SetFieldPtr,
43601OP_SetFieldMemberPtr,
43602OP_SetFieldFloat,
43603#endif
43604#ifdef GET_INTERPFN_LIST
43605&Interp_SetFieldSint8,
43606&Interp_SetFieldUint8,
43607&Interp_SetFieldSint16,
43608&Interp_SetFieldUint16,
43609&Interp_SetFieldSint32,
43610&Interp_SetFieldUint32,
43611&Interp_SetFieldSint64,
43612&Interp_SetFieldUint64,
43613&Interp_SetFieldIntAP,
43614&Interp_SetFieldIntAPS,
43615&Interp_SetFieldBool,
43616&Interp_SetFieldFixedPoint,
43617&Interp_SetFieldPtr,
43618&Interp_SetFieldMemberPtr,
43619&Interp_SetFieldFloat,
43620#endif
43621#ifdef GET_INTERPFN_DISPATCHERS
43622PRESERVE_NONE
43623static bool Interp_SetFieldSint8(InterpState &S, CodePtr &PC) {
43624 {
43625 CodePtr OpPC = PC;
43626 const auto V0 = ReadArg<uint32_t>(S, PC);
43627 if (!SetField<PT_Sint8>(S, OpPC, V0)) return false;
43628 }
43629#if USE_TAILCALLS
43630 MUSTTAIL return InterpNext(S, PC);
43631#else
43632 return true;
43633#endif
43634}
43635PRESERVE_NONE
43636static bool Interp_SetFieldUint8(InterpState &S, CodePtr &PC) {
43637 {
43638 CodePtr OpPC = PC;
43639 const auto V0 = ReadArg<uint32_t>(S, PC);
43640 if (!SetField<PT_Uint8>(S, OpPC, V0)) return false;
43641 }
43642#if USE_TAILCALLS
43643 MUSTTAIL return InterpNext(S, PC);
43644#else
43645 return true;
43646#endif
43647}
43648PRESERVE_NONE
43649static bool Interp_SetFieldSint16(InterpState &S, CodePtr &PC) {
43650 {
43651 CodePtr OpPC = PC;
43652 const auto V0 = ReadArg<uint32_t>(S, PC);
43653 if (!SetField<PT_Sint16>(S, OpPC, V0)) return false;
43654 }
43655#if USE_TAILCALLS
43656 MUSTTAIL return InterpNext(S, PC);
43657#else
43658 return true;
43659#endif
43660}
43661PRESERVE_NONE
43662static bool Interp_SetFieldUint16(InterpState &S, CodePtr &PC) {
43663 {
43664 CodePtr OpPC = PC;
43665 const auto V0 = ReadArg<uint32_t>(S, PC);
43666 if (!SetField<PT_Uint16>(S, OpPC, V0)) return false;
43667 }
43668#if USE_TAILCALLS
43669 MUSTTAIL return InterpNext(S, PC);
43670#else
43671 return true;
43672#endif
43673}
43674PRESERVE_NONE
43675static bool Interp_SetFieldSint32(InterpState &S, CodePtr &PC) {
43676 {
43677 CodePtr OpPC = PC;
43678 const auto V0 = ReadArg<uint32_t>(S, PC);
43679 if (!SetField<PT_Sint32>(S, OpPC, V0)) return false;
43680 }
43681#if USE_TAILCALLS
43682 MUSTTAIL return InterpNext(S, PC);
43683#else
43684 return true;
43685#endif
43686}
43687PRESERVE_NONE
43688static bool Interp_SetFieldUint32(InterpState &S, CodePtr &PC) {
43689 {
43690 CodePtr OpPC = PC;
43691 const auto V0 = ReadArg<uint32_t>(S, PC);
43692 if (!SetField<PT_Uint32>(S, OpPC, V0)) return false;
43693 }
43694#if USE_TAILCALLS
43695 MUSTTAIL return InterpNext(S, PC);
43696#else
43697 return true;
43698#endif
43699}
43700PRESERVE_NONE
43701static bool Interp_SetFieldSint64(InterpState &S, CodePtr &PC) {
43702 {
43703 CodePtr OpPC = PC;
43704 const auto V0 = ReadArg<uint32_t>(S, PC);
43705 if (!SetField<PT_Sint64>(S, OpPC, V0)) return false;
43706 }
43707#if USE_TAILCALLS
43708 MUSTTAIL return InterpNext(S, PC);
43709#else
43710 return true;
43711#endif
43712}
43713PRESERVE_NONE
43714static bool Interp_SetFieldUint64(InterpState &S, CodePtr &PC) {
43715 {
43716 CodePtr OpPC = PC;
43717 const auto V0 = ReadArg<uint32_t>(S, PC);
43718 if (!SetField<PT_Uint64>(S, OpPC, V0)) return false;
43719 }
43720#if USE_TAILCALLS
43721 MUSTTAIL return InterpNext(S, PC);
43722#else
43723 return true;
43724#endif
43725}
43726PRESERVE_NONE
43727static bool Interp_SetFieldIntAP(InterpState &S, CodePtr &PC) {
43728 {
43729 CodePtr OpPC = PC;
43730 const auto V0 = ReadArg<uint32_t>(S, PC);
43731 if (!SetField<PT_IntAP>(S, OpPC, V0)) return false;
43732 }
43733#if USE_TAILCALLS
43734 MUSTTAIL return InterpNext(S, PC);
43735#else
43736 return true;
43737#endif
43738}
43739PRESERVE_NONE
43740static bool Interp_SetFieldIntAPS(InterpState &S, CodePtr &PC) {
43741 {
43742 CodePtr OpPC = PC;
43743 const auto V0 = ReadArg<uint32_t>(S, PC);
43744 if (!SetField<PT_IntAPS>(S, OpPC, V0)) return false;
43745 }
43746#if USE_TAILCALLS
43747 MUSTTAIL return InterpNext(S, PC);
43748#else
43749 return true;
43750#endif
43751}
43752PRESERVE_NONE
43753static bool Interp_SetFieldBool(InterpState &S, CodePtr &PC) {
43754 {
43755 CodePtr OpPC = PC;
43756 const auto V0 = ReadArg<uint32_t>(S, PC);
43757 if (!SetField<PT_Bool>(S, OpPC, V0)) return false;
43758 }
43759#if USE_TAILCALLS
43760 MUSTTAIL return InterpNext(S, PC);
43761#else
43762 return true;
43763#endif
43764}
43765PRESERVE_NONE
43766static bool Interp_SetFieldFixedPoint(InterpState &S, CodePtr &PC) {
43767 {
43768 CodePtr OpPC = PC;
43769 const auto V0 = ReadArg<uint32_t>(S, PC);
43770 if (!SetField<PT_FixedPoint>(S, OpPC, V0)) return false;
43771 }
43772#if USE_TAILCALLS
43773 MUSTTAIL return InterpNext(S, PC);
43774#else
43775 return true;
43776#endif
43777}
43778PRESERVE_NONE
43779static bool Interp_SetFieldPtr(InterpState &S, CodePtr &PC) {
43780 {
43781 CodePtr OpPC = PC;
43782 const auto V0 = ReadArg<uint32_t>(S, PC);
43783 if (!SetField<PT_Ptr>(S, OpPC, V0)) return false;
43784 }
43785#if USE_TAILCALLS
43786 MUSTTAIL return InterpNext(S, PC);
43787#else
43788 return true;
43789#endif
43790}
43791PRESERVE_NONE
43792static bool Interp_SetFieldMemberPtr(InterpState &S, CodePtr &PC) {
43793 {
43794 CodePtr OpPC = PC;
43795 const auto V0 = ReadArg<uint32_t>(S, PC);
43796 if (!SetField<PT_MemberPtr>(S, OpPC, V0)) return false;
43797 }
43798#if USE_TAILCALLS
43799 MUSTTAIL return InterpNext(S, PC);
43800#else
43801 return true;
43802#endif
43803}
43804PRESERVE_NONE
43805static bool Interp_SetFieldFloat(InterpState &S, CodePtr &PC) {
43806 {
43807 CodePtr OpPC = PC;
43808 const auto V0 = ReadArg<uint32_t>(S, PC);
43809 if (!SetField<PT_Float>(S, OpPC, V0)) return false;
43810 }
43811#if USE_TAILCALLS
43812 MUSTTAIL return InterpNext(S, PC);
43813#else
43814 return true;
43815#endif
43816}
43817#endif
43818#ifdef GET_DISASM
43819case OP_SetFieldSint8:
43820 Text.Op = PrintName("SetFieldSint8");
43821 Text.Args.push_back(printArg<uint32_t>(P, PC));
43822 break;
43823case OP_SetFieldUint8:
43824 Text.Op = PrintName("SetFieldUint8");
43825 Text.Args.push_back(printArg<uint32_t>(P, PC));
43826 break;
43827case OP_SetFieldSint16:
43828 Text.Op = PrintName("SetFieldSint16");
43829 Text.Args.push_back(printArg<uint32_t>(P, PC));
43830 break;
43831case OP_SetFieldUint16:
43832 Text.Op = PrintName("SetFieldUint16");
43833 Text.Args.push_back(printArg<uint32_t>(P, PC));
43834 break;
43835case OP_SetFieldSint32:
43836 Text.Op = PrintName("SetFieldSint32");
43837 Text.Args.push_back(printArg<uint32_t>(P, PC));
43838 break;
43839case OP_SetFieldUint32:
43840 Text.Op = PrintName("SetFieldUint32");
43841 Text.Args.push_back(printArg<uint32_t>(P, PC));
43842 break;
43843case OP_SetFieldSint64:
43844 Text.Op = PrintName("SetFieldSint64");
43845 Text.Args.push_back(printArg<uint32_t>(P, PC));
43846 break;
43847case OP_SetFieldUint64:
43848 Text.Op = PrintName("SetFieldUint64");
43849 Text.Args.push_back(printArg<uint32_t>(P, PC));
43850 break;
43851case OP_SetFieldIntAP:
43852 Text.Op = PrintName("SetFieldIntAP");
43853 Text.Args.push_back(printArg<uint32_t>(P, PC));
43854 break;
43855case OP_SetFieldIntAPS:
43856 Text.Op = PrintName("SetFieldIntAPS");
43857 Text.Args.push_back(printArg<uint32_t>(P, PC));
43858 break;
43859case OP_SetFieldBool:
43860 Text.Op = PrintName("SetFieldBool");
43861 Text.Args.push_back(printArg<uint32_t>(P, PC));
43862 break;
43863case OP_SetFieldFixedPoint:
43864 Text.Op = PrintName("SetFieldFixedPoint");
43865 Text.Args.push_back(printArg<uint32_t>(P, PC));
43866 break;
43867case OP_SetFieldPtr:
43868 Text.Op = PrintName("SetFieldPtr");
43869 Text.Args.push_back(printArg<uint32_t>(P, PC));
43870 break;
43871case OP_SetFieldMemberPtr:
43872 Text.Op = PrintName("SetFieldMemberPtr");
43873 Text.Args.push_back(printArg<uint32_t>(P, PC));
43874 break;
43875case OP_SetFieldFloat:
43876 Text.Op = PrintName("SetFieldFloat");
43877 Text.Args.push_back(printArg<uint32_t>(P, PC));
43878 break;
43879#endif
43880#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43881bool emitSetFieldSint8( uint32_t , SourceInfo);
43882bool emitSetFieldUint8( uint32_t , SourceInfo);
43883bool emitSetFieldSint16( uint32_t , SourceInfo);
43884bool emitSetFieldUint16( uint32_t , SourceInfo);
43885bool emitSetFieldSint32( uint32_t , SourceInfo);
43886bool emitSetFieldUint32( uint32_t , SourceInfo);
43887bool emitSetFieldSint64( uint32_t , SourceInfo);
43888bool emitSetFieldUint64( uint32_t , SourceInfo);
43889bool emitSetFieldIntAP( uint32_t , SourceInfo);
43890bool emitSetFieldIntAPS( uint32_t , SourceInfo);
43891bool emitSetFieldBool( uint32_t , SourceInfo);
43892bool emitSetFieldFixedPoint( uint32_t , SourceInfo);
43893bool emitSetFieldPtr( uint32_t , SourceInfo);
43894bool emitSetFieldMemberPtr( uint32_t , SourceInfo);
43895bool emitSetFieldFloat( uint32_t , SourceInfo);
43896#endif
43897#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43898[[nodiscard]] bool emitSetField(PrimType, uint32_t, SourceInfo I);
43899#endif
43900#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
43901bool
43902#if defined(GET_EVAL_IMPL)
43903EvalEmitter
43904#else
43905ByteCodeEmitter
43906#endif
43907::emitSetField(PrimType T0, uint32_t A0, SourceInfo I) {
43908 switch (T0) {
43909 case PT_Sint8:
43910 return emitSetFieldSint8(A0, I);
43911 case PT_Uint8:
43912 return emitSetFieldUint8(A0, I);
43913 case PT_Sint16:
43914 return emitSetFieldSint16(A0, I);
43915 case PT_Uint16:
43916 return emitSetFieldUint16(A0, I);
43917 case PT_Sint32:
43918 return emitSetFieldSint32(A0, I);
43919 case PT_Uint32:
43920 return emitSetFieldUint32(A0, I);
43921 case PT_Sint64:
43922 return emitSetFieldSint64(A0, I);
43923 case PT_Uint64:
43924 return emitSetFieldUint64(A0, I);
43925 case PT_IntAP:
43926 return emitSetFieldIntAP(A0, I);
43927 case PT_IntAPS:
43928 return emitSetFieldIntAPS(A0, I);
43929 case PT_Bool:
43930 return emitSetFieldBool(A0, I);
43931 case PT_FixedPoint:
43932 return emitSetFieldFixedPoint(A0, I);
43933 case PT_Ptr:
43934 return emitSetFieldPtr(A0, I);
43935 case PT_MemberPtr:
43936 return emitSetFieldMemberPtr(A0, I);
43937 case PT_Float:
43938 return emitSetFieldFloat(A0, I);
43939 }
43940 llvm_unreachable("invalid enum value");
43941}
43942#endif
43943#ifdef GET_LINK_IMPL
43944bool ByteCodeEmitter::emitSetFieldSint8( uint32_t A0, SourceInfo L) {
43945 return emitOp<uint32_t>(OP_SetFieldSint8, A0, L);
43946}
43947bool ByteCodeEmitter::emitSetFieldUint8( uint32_t A0, SourceInfo L) {
43948 return emitOp<uint32_t>(OP_SetFieldUint8, A0, L);
43949}
43950bool ByteCodeEmitter::emitSetFieldSint16( uint32_t A0, SourceInfo L) {
43951 return emitOp<uint32_t>(OP_SetFieldSint16, A0, L);
43952}
43953bool ByteCodeEmitter::emitSetFieldUint16( uint32_t A0, SourceInfo L) {
43954 return emitOp<uint32_t>(OP_SetFieldUint16, A0, L);
43955}
43956bool ByteCodeEmitter::emitSetFieldSint32( uint32_t A0, SourceInfo L) {
43957 return emitOp<uint32_t>(OP_SetFieldSint32, A0, L);
43958}
43959bool ByteCodeEmitter::emitSetFieldUint32( uint32_t A0, SourceInfo L) {
43960 return emitOp<uint32_t>(OP_SetFieldUint32, A0, L);
43961}
43962bool ByteCodeEmitter::emitSetFieldSint64( uint32_t A0, SourceInfo L) {
43963 return emitOp<uint32_t>(OP_SetFieldSint64, A0, L);
43964}
43965bool ByteCodeEmitter::emitSetFieldUint64( uint32_t A0, SourceInfo L) {
43966 return emitOp<uint32_t>(OP_SetFieldUint64, A0, L);
43967}
43968bool ByteCodeEmitter::emitSetFieldIntAP( uint32_t A0, SourceInfo L) {
43969 return emitOp<uint32_t>(OP_SetFieldIntAP, A0, L);
43970}
43971bool ByteCodeEmitter::emitSetFieldIntAPS( uint32_t A0, SourceInfo L) {
43972 return emitOp<uint32_t>(OP_SetFieldIntAPS, A0, L);
43973}
43974bool ByteCodeEmitter::emitSetFieldBool( uint32_t A0, SourceInfo L) {
43975 return emitOp<uint32_t>(OP_SetFieldBool, A0, L);
43976}
43977bool ByteCodeEmitter::emitSetFieldFixedPoint( uint32_t A0, SourceInfo L) {
43978 return emitOp<uint32_t>(OP_SetFieldFixedPoint, A0, L);
43979}
43980bool ByteCodeEmitter::emitSetFieldPtr( uint32_t A0, SourceInfo L) {
43981 return emitOp<uint32_t>(OP_SetFieldPtr, A0, L);
43982}
43983bool ByteCodeEmitter::emitSetFieldMemberPtr( uint32_t A0, SourceInfo L) {
43984 return emitOp<uint32_t>(OP_SetFieldMemberPtr, A0, L);
43985}
43986bool ByteCodeEmitter::emitSetFieldFloat( uint32_t A0, SourceInfo L) {
43987 return emitOp<uint32_t>(OP_SetFieldFloat, A0, L);
43988}
43989#endif
43990#ifdef GET_EVAL_IMPL
43991bool EvalEmitter::emitSetFieldSint8( uint32_t A0, SourceInfo L) {
43992 if (!isActive()) return true;
43993 CurrentSource = L;
43994 return SetField<PT_Sint8>(S, OpPC, A0);
43995}
43996bool EvalEmitter::emitSetFieldUint8( uint32_t A0, SourceInfo L) {
43997 if (!isActive()) return true;
43998 CurrentSource = L;
43999 return SetField<PT_Uint8>(S, OpPC, A0);
44000}
44001bool EvalEmitter::emitSetFieldSint16( uint32_t A0, SourceInfo L) {
44002 if (!isActive()) return true;
44003 CurrentSource = L;
44004 return SetField<PT_Sint16>(S, OpPC, A0);
44005}
44006bool EvalEmitter::emitSetFieldUint16( uint32_t A0, SourceInfo L) {
44007 if (!isActive()) return true;
44008 CurrentSource = L;
44009 return SetField<PT_Uint16>(S, OpPC, A0);
44010}
44011bool EvalEmitter::emitSetFieldSint32( uint32_t A0, SourceInfo L) {
44012 if (!isActive()) return true;
44013 CurrentSource = L;
44014 return SetField<PT_Sint32>(S, OpPC, A0);
44015}
44016bool EvalEmitter::emitSetFieldUint32( uint32_t A0, SourceInfo L) {
44017 if (!isActive()) return true;
44018 CurrentSource = L;
44019 return SetField<PT_Uint32>(S, OpPC, A0);
44020}
44021bool EvalEmitter::emitSetFieldSint64( uint32_t A0, SourceInfo L) {
44022 if (!isActive()) return true;
44023 CurrentSource = L;
44024 return SetField<PT_Sint64>(S, OpPC, A0);
44025}
44026bool EvalEmitter::emitSetFieldUint64( uint32_t A0, SourceInfo L) {
44027 if (!isActive()) return true;
44028 CurrentSource = L;
44029 return SetField<PT_Uint64>(S, OpPC, A0);
44030}
44031bool EvalEmitter::emitSetFieldIntAP( uint32_t A0, SourceInfo L) {
44032 if (!isActive()) return true;
44033 CurrentSource = L;
44034 return SetField<PT_IntAP>(S, OpPC, A0);
44035}
44036bool EvalEmitter::emitSetFieldIntAPS( uint32_t A0, SourceInfo L) {
44037 if (!isActive()) return true;
44038 CurrentSource = L;
44039 return SetField<PT_IntAPS>(S, OpPC, A0);
44040}
44041bool EvalEmitter::emitSetFieldBool( uint32_t A0, SourceInfo L) {
44042 if (!isActive()) return true;
44043 CurrentSource = L;
44044 return SetField<PT_Bool>(S, OpPC, A0);
44045}
44046bool EvalEmitter::emitSetFieldFixedPoint( uint32_t A0, SourceInfo L) {
44047 if (!isActive()) return true;
44048 CurrentSource = L;
44049 return SetField<PT_FixedPoint>(S, OpPC, A0);
44050}
44051bool EvalEmitter::emitSetFieldPtr( uint32_t A0, SourceInfo L) {
44052 if (!isActive()) return true;
44053 CurrentSource = L;
44054 return SetField<PT_Ptr>(S, OpPC, A0);
44055}
44056bool EvalEmitter::emitSetFieldMemberPtr( uint32_t A0, SourceInfo L) {
44057 if (!isActive()) return true;
44058 CurrentSource = L;
44059 return SetField<PT_MemberPtr>(S, OpPC, A0);
44060}
44061bool EvalEmitter::emitSetFieldFloat( uint32_t A0, SourceInfo L) {
44062 if (!isActive()) return true;
44063 CurrentSource = L;
44064 return SetField<PT_Float>(S, OpPC, A0);
44065}
44066#endif
44067#ifdef GET_OPCODE_NAMES
44068OP_SetGlobalSint8,
44069OP_SetGlobalUint8,
44070OP_SetGlobalSint16,
44071OP_SetGlobalUint16,
44072OP_SetGlobalSint32,
44073OP_SetGlobalUint32,
44074OP_SetGlobalSint64,
44075OP_SetGlobalUint64,
44076OP_SetGlobalIntAP,
44077OP_SetGlobalIntAPS,
44078OP_SetGlobalBool,
44079OP_SetGlobalFixedPoint,
44080OP_SetGlobalPtr,
44081OP_SetGlobalMemberPtr,
44082OP_SetGlobalFloat,
44083#endif
44084#ifdef GET_INTERPFN_LIST
44085&Interp_SetGlobalSint8,
44086&Interp_SetGlobalUint8,
44087&Interp_SetGlobalSint16,
44088&Interp_SetGlobalUint16,
44089&Interp_SetGlobalSint32,
44090&Interp_SetGlobalUint32,
44091&Interp_SetGlobalSint64,
44092&Interp_SetGlobalUint64,
44093&Interp_SetGlobalIntAP,
44094&Interp_SetGlobalIntAPS,
44095&Interp_SetGlobalBool,
44096&Interp_SetGlobalFixedPoint,
44097&Interp_SetGlobalPtr,
44098&Interp_SetGlobalMemberPtr,
44099&Interp_SetGlobalFloat,
44100#endif
44101#ifdef GET_INTERPFN_DISPATCHERS
44102PRESERVE_NONE
44103static bool Interp_SetGlobalSint8(InterpState &S, CodePtr &PC) {
44104 {
44105 CodePtr OpPC = PC;
44106 const auto V0 = ReadArg<uint32_t>(S, PC);
44107 if (!SetGlobal<PT_Sint8>(S, OpPC, V0)) return false;
44108 }
44109#if USE_TAILCALLS
44110 MUSTTAIL return InterpNext(S, PC);
44111#else
44112 return true;
44113#endif
44114}
44115PRESERVE_NONE
44116static bool Interp_SetGlobalUint8(InterpState &S, CodePtr &PC) {
44117 {
44118 CodePtr OpPC = PC;
44119 const auto V0 = ReadArg<uint32_t>(S, PC);
44120 if (!SetGlobal<PT_Uint8>(S, OpPC, V0)) return false;
44121 }
44122#if USE_TAILCALLS
44123 MUSTTAIL return InterpNext(S, PC);
44124#else
44125 return true;
44126#endif
44127}
44128PRESERVE_NONE
44129static bool Interp_SetGlobalSint16(InterpState &S, CodePtr &PC) {
44130 {
44131 CodePtr OpPC = PC;
44132 const auto V0 = ReadArg<uint32_t>(S, PC);
44133 if (!SetGlobal<PT_Sint16>(S, OpPC, V0)) return false;
44134 }
44135#if USE_TAILCALLS
44136 MUSTTAIL return InterpNext(S, PC);
44137#else
44138 return true;
44139#endif
44140}
44141PRESERVE_NONE
44142static bool Interp_SetGlobalUint16(InterpState &S, CodePtr &PC) {
44143 {
44144 CodePtr OpPC = PC;
44145 const auto V0 = ReadArg<uint32_t>(S, PC);
44146 if (!SetGlobal<PT_Uint16>(S, OpPC, V0)) return false;
44147 }
44148#if USE_TAILCALLS
44149 MUSTTAIL return InterpNext(S, PC);
44150#else
44151 return true;
44152#endif
44153}
44154PRESERVE_NONE
44155static bool Interp_SetGlobalSint32(InterpState &S, CodePtr &PC) {
44156 {
44157 CodePtr OpPC = PC;
44158 const auto V0 = ReadArg<uint32_t>(S, PC);
44159 if (!SetGlobal<PT_Sint32>(S, OpPC, V0)) return false;
44160 }
44161#if USE_TAILCALLS
44162 MUSTTAIL return InterpNext(S, PC);
44163#else
44164 return true;
44165#endif
44166}
44167PRESERVE_NONE
44168static bool Interp_SetGlobalUint32(InterpState &S, CodePtr &PC) {
44169 {
44170 CodePtr OpPC = PC;
44171 const auto V0 = ReadArg<uint32_t>(S, PC);
44172 if (!SetGlobal<PT_Uint32>(S, OpPC, V0)) return false;
44173 }
44174#if USE_TAILCALLS
44175 MUSTTAIL return InterpNext(S, PC);
44176#else
44177 return true;
44178#endif
44179}
44180PRESERVE_NONE
44181static bool Interp_SetGlobalSint64(InterpState &S, CodePtr &PC) {
44182 {
44183 CodePtr OpPC = PC;
44184 const auto V0 = ReadArg<uint32_t>(S, PC);
44185 if (!SetGlobal<PT_Sint64>(S, OpPC, V0)) return false;
44186 }
44187#if USE_TAILCALLS
44188 MUSTTAIL return InterpNext(S, PC);
44189#else
44190 return true;
44191#endif
44192}
44193PRESERVE_NONE
44194static bool Interp_SetGlobalUint64(InterpState &S, CodePtr &PC) {
44195 {
44196 CodePtr OpPC = PC;
44197 const auto V0 = ReadArg<uint32_t>(S, PC);
44198 if (!SetGlobal<PT_Uint64>(S, OpPC, V0)) return false;
44199 }
44200#if USE_TAILCALLS
44201 MUSTTAIL return InterpNext(S, PC);
44202#else
44203 return true;
44204#endif
44205}
44206PRESERVE_NONE
44207static bool Interp_SetGlobalIntAP(InterpState &S, CodePtr &PC) {
44208 {
44209 CodePtr OpPC = PC;
44210 const auto V0 = ReadArg<uint32_t>(S, PC);
44211 if (!SetGlobal<PT_IntAP>(S, OpPC, V0)) return false;
44212 }
44213#if USE_TAILCALLS
44214 MUSTTAIL return InterpNext(S, PC);
44215#else
44216 return true;
44217#endif
44218}
44219PRESERVE_NONE
44220static bool Interp_SetGlobalIntAPS(InterpState &S, CodePtr &PC) {
44221 {
44222 CodePtr OpPC = PC;
44223 const auto V0 = ReadArg<uint32_t>(S, PC);
44224 if (!SetGlobal<PT_IntAPS>(S, OpPC, V0)) return false;
44225 }
44226#if USE_TAILCALLS
44227 MUSTTAIL return InterpNext(S, PC);
44228#else
44229 return true;
44230#endif
44231}
44232PRESERVE_NONE
44233static bool Interp_SetGlobalBool(InterpState &S, CodePtr &PC) {
44234 {
44235 CodePtr OpPC = PC;
44236 const auto V0 = ReadArg<uint32_t>(S, PC);
44237 if (!SetGlobal<PT_Bool>(S, OpPC, V0)) return false;
44238 }
44239#if USE_TAILCALLS
44240 MUSTTAIL return InterpNext(S, PC);
44241#else
44242 return true;
44243#endif
44244}
44245PRESERVE_NONE
44246static bool Interp_SetGlobalFixedPoint(InterpState &S, CodePtr &PC) {
44247 {
44248 CodePtr OpPC = PC;
44249 const auto V0 = ReadArg<uint32_t>(S, PC);
44250 if (!SetGlobal<PT_FixedPoint>(S, OpPC, V0)) return false;
44251 }
44252#if USE_TAILCALLS
44253 MUSTTAIL return InterpNext(S, PC);
44254#else
44255 return true;
44256#endif
44257}
44258PRESERVE_NONE
44259static bool Interp_SetGlobalPtr(InterpState &S, CodePtr &PC) {
44260 {
44261 CodePtr OpPC = PC;
44262 const auto V0 = ReadArg<uint32_t>(S, PC);
44263 if (!SetGlobal<PT_Ptr>(S, OpPC, V0)) return false;
44264 }
44265#if USE_TAILCALLS
44266 MUSTTAIL return InterpNext(S, PC);
44267#else
44268 return true;
44269#endif
44270}
44271PRESERVE_NONE
44272static bool Interp_SetGlobalMemberPtr(InterpState &S, CodePtr &PC) {
44273 {
44274 CodePtr OpPC = PC;
44275 const auto V0 = ReadArg<uint32_t>(S, PC);
44276 if (!SetGlobal<PT_MemberPtr>(S, OpPC, V0)) return false;
44277 }
44278#if USE_TAILCALLS
44279 MUSTTAIL return InterpNext(S, PC);
44280#else
44281 return true;
44282#endif
44283}
44284PRESERVE_NONE
44285static bool Interp_SetGlobalFloat(InterpState &S, CodePtr &PC) {
44286 {
44287 CodePtr OpPC = PC;
44288 const auto V0 = ReadArg<uint32_t>(S, PC);
44289 if (!SetGlobal<PT_Float>(S, OpPC, V0)) return false;
44290 }
44291#if USE_TAILCALLS
44292 MUSTTAIL return InterpNext(S, PC);
44293#else
44294 return true;
44295#endif
44296}
44297#endif
44298#ifdef GET_DISASM
44299case OP_SetGlobalSint8:
44300 Text.Op = PrintName("SetGlobalSint8");
44301 Text.Args.push_back(printArg<uint32_t>(P, PC));
44302 break;
44303case OP_SetGlobalUint8:
44304 Text.Op = PrintName("SetGlobalUint8");
44305 Text.Args.push_back(printArg<uint32_t>(P, PC));
44306 break;
44307case OP_SetGlobalSint16:
44308 Text.Op = PrintName("SetGlobalSint16");
44309 Text.Args.push_back(printArg<uint32_t>(P, PC));
44310 break;
44311case OP_SetGlobalUint16:
44312 Text.Op = PrintName("SetGlobalUint16");
44313 Text.Args.push_back(printArg<uint32_t>(P, PC));
44314 break;
44315case OP_SetGlobalSint32:
44316 Text.Op = PrintName("SetGlobalSint32");
44317 Text.Args.push_back(printArg<uint32_t>(P, PC));
44318 break;
44319case OP_SetGlobalUint32:
44320 Text.Op = PrintName("SetGlobalUint32");
44321 Text.Args.push_back(printArg<uint32_t>(P, PC));
44322 break;
44323case OP_SetGlobalSint64:
44324 Text.Op = PrintName("SetGlobalSint64");
44325 Text.Args.push_back(printArg<uint32_t>(P, PC));
44326 break;
44327case OP_SetGlobalUint64:
44328 Text.Op = PrintName("SetGlobalUint64");
44329 Text.Args.push_back(printArg<uint32_t>(P, PC));
44330 break;
44331case OP_SetGlobalIntAP:
44332 Text.Op = PrintName("SetGlobalIntAP");
44333 Text.Args.push_back(printArg<uint32_t>(P, PC));
44334 break;
44335case OP_SetGlobalIntAPS:
44336 Text.Op = PrintName("SetGlobalIntAPS");
44337 Text.Args.push_back(printArg<uint32_t>(P, PC));
44338 break;
44339case OP_SetGlobalBool:
44340 Text.Op = PrintName("SetGlobalBool");
44341 Text.Args.push_back(printArg<uint32_t>(P, PC));
44342 break;
44343case OP_SetGlobalFixedPoint:
44344 Text.Op = PrintName("SetGlobalFixedPoint");
44345 Text.Args.push_back(printArg<uint32_t>(P, PC));
44346 break;
44347case OP_SetGlobalPtr:
44348 Text.Op = PrintName("SetGlobalPtr");
44349 Text.Args.push_back(printArg<uint32_t>(P, PC));
44350 break;
44351case OP_SetGlobalMemberPtr:
44352 Text.Op = PrintName("SetGlobalMemberPtr");
44353 Text.Args.push_back(printArg<uint32_t>(P, PC));
44354 break;
44355case OP_SetGlobalFloat:
44356 Text.Op = PrintName("SetGlobalFloat");
44357 Text.Args.push_back(printArg<uint32_t>(P, PC));
44358 break;
44359#endif
44360#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44361bool emitSetGlobalSint8( uint32_t , SourceInfo);
44362bool emitSetGlobalUint8( uint32_t , SourceInfo);
44363bool emitSetGlobalSint16( uint32_t , SourceInfo);
44364bool emitSetGlobalUint16( uint32_t , SourceInfo);
44365bool emitSetGlobalSint32( uint32_t , SourceInfo);
44366bool emitSetGlobalUint32( uint32_t , SourceInfo);
44367bool emitSetGlobalSint64( uint32_t , SourceInfo);
44368bool emitSetGlobalUint64( uint32_t , SourceInfo);
44369bool emitSetGlobalIntAP( uint32_t , SourceInfo);
44370bool emitSetGlobalIntAPS( uint32_t , SourceInfo);
44371bool emitSetGlobalBool( uint32_t , SourceInfo);
44372bool emitSetGlobalFixedPoint( uint32_t , SourceInfo);
44373bool emitSetGlobalPtr( uint32_t , SourceInfo);
44374bool emitSetGlobalMemberPtr( uint32_t , SourceInfo);
44375bool emitSetGlobalFloat( uint32_t , SourceInfo);
44376#endif
44377#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44378[[nodiscard]] bool emitSetGlobal(PrimType, uint32_t, SourceInfo I);
44379#endif
44380#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
44381bool
44382#if defined(GET_EVAL_IMPL)
44383EvalEmitter
44384#else
44385ByteCodeEmitter
44386#endif
44387::emitSetGlobal(PrimType T0, uint32_t A0, SourceInfo I) {
44388 switch (T0) {
44389 case PT_Sint8:
44390 return emitSetGlobalSint8(A0, I);
44391 case PT_Uint8:
44392 return emitSetGlobalUint8(A0, I);
44393 case PT_Sint16:
44394 return emitSetGlobalSint16(A0, I);
44395 case PT_Uint16:
44396 return emitSetGlobalUint16(A0, I);
44397 case PT_Sint32:
44398 return emitSetGlobalSint32(A0, I);
44399 case PT_Uint32:
44400 return emitSetGlobalUint32(A0, I);
44401 case PT_Sint64:
44402 return emitSetGlobalSint64(A0, I);
44403 case PT_Uint64:
44404 return emitSetGlobalUint64(A0, I);
44405 case PT_IntAP:
44406 return emitSetGlobalIntAP(A0, I);
44407 case PT_IntAPS:
44408 return emitSetGlobalIntAPS(A0, I);
44409 case PT_Bool:
44410 return emitSetGlobalBool(A0, I);
44411 case PT_FixedPoint:
44412 return emitSetGlobalFixedPoint(A0, I);
44413 case PT_Ptr:
44414 return emitSetGlobalPtr(A0, I);
44415 case PT_MemberPtr:
44416 return emitSetGlobalMemberPtr(A0, I);
44417 case PT_Float:
44418 return emitSetGlobalFloat(A0, I);
44419 }
44420 llvm_unreachable("invalid enum value");
44421}
44422#endif
44423#ifdef GET_LINK_IMPL
44424bool ByteCodeEmitter::emitSetGlobalSint8( uint32_t A0, SourceInfo L) {
44425 return emitOp<uint32_t>(OP_SetGlobalSint8, A0, L);
44426}
44427bool ByteCodeEmitter::emitSetGlobalUint8( uint32_t A0, SourceInfo L) {
44428 return emitOp<uint32_t>(OP_SetGlobalUint8, A0, L);
44429}
44430bool ByteCodeEmitter::emitSetGlobalSint16( uint32_t A0, SourceInfo L) {
44431 return emitOp<uint32_t>(OP_SetGlobalSint16, A0, L);
44432}
44433bool ByteCodeEmitter::emitSetGlobalUint16( uint32_t A0, SourceInfo L) {
44434 return emitOp<uint32_t>(OP_SetGlobalUint16, A0, L);
44435}
44436bool ByteCodeEmitter::emitSetGlobalSint32( uint32_t A0, SourceInfo L) {
44437 return emitOp<uint32_t>(OP_SetGlobalSint32, A0, L);
44438}
44439bool ByteCodeEmitter::emitSetGlobalUint32( uint32_t A0, SourceInfo L) {
44440 return emitOp<uint32_t>(OP_SetGlobalUint32, A0, L);
44441}
44442bool ByteCodeEmitter::emitSetGlobalSint64( uint32_t A0, SourceInfo L) {
44443 return emitOp<uint32_t>(OP_SetGlobalSint64, A0, L);
44444}
44445bool ByteCodeEmitter::emitSetGlobalUint64( uint32_t A0, SourceInfo L) {
44446 return emitOp<uint32_t>(OP_SetGlobalUint64, A0, L);
44447}
44448bool ByteCodeEmitter::emitSetGlobalIntAP( uint32_t A0, SourceInfo L) {
44449 return emitOp<uint32_t>(OP_SetGlobalIntAP, A0, L);
44450}
44451bool ByteCodeEmitter::emitSetGlobalIntAPS( uint32_t A0, SourceInfo L) {
44452 return emitOp<uint32_t>(OP_SetGlobalIntAPS, A0, L);
44453}
44454bool ByteCodeEmitter::emitSetGlobalBool( uint32_t A0, SourceInfo L) {
44455 return emitOp<uint32_t>(OP_SetGlobalBool, A0, L);
44456}
44457bool ByteCodeEmitter::emitSetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
44458 return emitOp<uint32_t>(OP_SetGlobalFixedPoint, A0, L);
44459}
44460bool ByteCodeEmitter::emitSetGlobalPtr( uint32_t A0, SourceInfo L) {
44461 return emitOp<uint32_t>(OP_SetGlobalPtr, A0, L);
44462}
44463bool ByteCodeEmitter::emitSetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
44464 return emitOp<uint32_t>(OP_SetGlobalMemberPtr, A0, L);
44465}
44466bool ByteCodeEmitter::emitSetGlobalFloat( uint32_t A0, SourceInfo L) {
44467 return emitOp<uint32_t>(OP_SetGlobalFloat, A0, L);
44468}
44469#endif
44470#ifdef GET_EVAL_IMPL
44471bool EvalEmitter::emitSetGlobalSint8( uint32_t A0, SourceInfo L) {
44472 if (!isActive()) return true;
44473 CurrentSource = L;
44474 return SetGlobal<PT_Sint8>(S, OpPC, A0);
44475}
44476bool EvalEmitter::emitSetGlobalUint8( uint32_t A0, SourceInfo L) {
44477 if (!isActive()) return true;
44478 CurrentSource = L;
44479 return SetGlobal<PT_Uint8>(S, OpPC, A0);
44480}
44481bool EvalEmitter::emitSetGlobalSint16( uint32_t A0, SourceInfo L) {
44482 if (!isActive()) return true;
44483 CurrentSource = L;
44484 return SetGlobal<PT_Sint16>(S, OpPC, A0);
44485}
44486bool EvalEmitter::emitSetGlobalUint16( uint32_t A0, SourceInfo L) {
44487 if (!isActive()) return true;
44488 CurrentSource = L;
44489 return SetGlobal<PT_Uint16>(S, OpPC, A0);
44490}
44491bool EvalEmitter::emitSetGlobalSint32( uint32_t A0, SourceInfo L) {
44492 if (!isActive()) return true;
44493 CurrentSource = L;
44494 return SetGlobal<PT_Sint32>(S, OpPC, A0);
44495}
44496bool EvalEmitter::emitSetGlobalUint32( uint32_t A0, SourceInfo L) {
44497 if (!isActive()) return true;
44498 CurrentSource = L;
44499 return SetGlobal<PT_Uint32>(S, OpPC, A0);
44500}
44501bool EvalEmitter::emitSetGlobalSint64( uint32_t A0, SourceInfo L) {
44502 if (!isActive()) return true;
44503 CurrentSource = L;
44504 return SetGlobal<PT_Sint64>(S, OpPC, A0);
44505}
44506bool EvalEmitter::emitSetGlobalUint64( uint32_t A0, SourceInfo L) {
44507 if (!isActive()) return true;
44508 CurrentSource = L;
44509 return SetGlobal<PT_Uint64>(S, OpPC, A0);
44510}
44511bool EvalEmitter::emitSetGlobalIntAP( uint32_t A0, SourceInfo L) {
44512 if (!isActive()) return true;
44513 CurrentSource = L;
44514 return SetGlobal<PT_IntAP>(S, OpPC, A0);
44515}
44516bool EvalEmitter::emitSetGlobalIntAPS( uint32_t A0, SourceInfo L) {
44517 if (!isActive()) return true;
44518 CurrentSource = L;
44519 return SetGlobal<PT_IntAPS>(S, OpPC, A0);
44520}
44521bool EvalEmitter::emitSetGlobalBool( uint32_t A0, SourceInfo L) {
44522 if (!isActive()) return true;
44523 CurrentSource = L;
44524 return SetGlobal<PT_Bool>(S, OpPC, A0);
44525}
44526bool EvalEmitter::emitSetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
44527 if (!isActive()) return true;
44528 CurrentSource = L;
44529 return SetGlobal<PT_FixedPoint>(S, OpPC, A0);
44530}
44531bool EvalEmitter::emitSetGlobalPtr( uint32_t A0, SourceInfo L) {
44532 if (!isActive()) return true;
44533 CurrentSource = L;
44534 return SetGlobal<PT_Ptr>(S, OpPC, A0);
44535}
44536bool EvalEmitter::emitSetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
44537 if (!isActive()) return true;
44538 CurrentSource = L;
44539 return SetGlobal<PT_MemberPtr>(S, OpPC, A0);
44540}
44541bool EvalEmitter::emitSetGlobalFloat( uint32_t A0, SourceInfo L) {
44542 if (!isActive()) return true;
44543 CurrentSource = L;
44544 return SetGlobal<PT_Float>(S, OpPC, A0);
44545}
44546#endif
44547#ifdef GET_OPCODE_NAMES
44548OP_SetLocalSint8,
44549OP_SetLocalUint8,
44550OP_SetLocalSint16,
44551OP_SetLocalUint16,
44552OP_SetLocalSint32,
44553OP_SetLocalUint32,
44554OP_SetLocalSint64,
44555OP_SetLocalUint64,
44556OP_SetLocalIntAP,
44557OP_SetLocalIntAPS,
44558OP_SetLocalBool,
44559OP_SetLocalFixedPoint,
44560OP_SetLocalPtr,
44561OP_SetLocalMemberPtr,
44562OP_SetLocalFloat,
44563#endif
44564#ifdef GET_INTERPFN_LIST
44565&Interp_SetLocalSint8,
44566&Interp_SetLocalUint8,
44567&Interp_SetLocalSint16,
44568&Interp_SetLocalUint16,
44569&Interp_SetLocalSint32,
44570&Interp_SetLocalUint32,
44571&Interp_SetLocalSint64,
44572&Interp_SetLocalUint64,
44573&Interp_SetLocalIntAP,
44574&Interp_SetLocalIntAPS,
44575&Interp_SetLocalBool,
44576&Interp_SetLocalFixedPoint,
44577&Interp_SetLocalPtr,
44578&Interp_SetLocalMemberPtr,
44579&Interp_SetLocalFloat,
44580#endif
44581#ifdef GET_INTERPFN_DISPATCHERS
44582PRESERVE_NONE
44583static bool Interp_SetLocalSint8(InterpState &S, CodePtr &PC) {
44584 {
44585 CodePtr OpPC = PC;
44586 const auto V0 = ReadArg<uint32_t>(S, PC);
44587 if (!SetLocal<PT_Sint8>(S, OpPC, V0)) return false;
44588 }
44589#if USE_TAILCALLS
44590 MUSTTAIL return InterpNext(S, PC);
44591#else
44592 return true;
44593#endif
44594}
44595PRESERVE_NONE
44596static bool Interp_SetLocalUint8(InterpState &S, CodePtr &PC) {
44597 {
44598 CodePtr OpPC = PC;
44599 const auto V0 = ReadArg<uint32_t>(S, PC);
44600 if (!SetLocal<PT_Uint8>(S, OpPC, V0)) return false;
44601 }
44602#if USE_TAILCALLS
44603 MUSTTAIL return InterpNext(S, PC);
44604#else
44605 return true;
44606#endif
44607}
44608PRESERVE_NONE
44609static bool Interp_SetLocalSint16(InterpState &S, CodePtr &PC) {
44610 {
44611 CodePtr OpPC = PC;
44612 const auto V0 = ReadArg<uint32_t>(S, PC);
44613 if (!SetLocal<PT_Sint16>(S, OpPC, V0)) return false;
44614 }
44615#if USE_TAILCALLS
44616 MUSTTAIL return InterpNext(S, PC);
44617#else
44618 return true;
44619#endif
44620}
44621PRESERVE_NONE
44622static bool Interp_SetLocalUint16(InterpState &S, CodePtr &PC) {
44623 {
44624 CodePtr OpPC = PC;
44625 const auto V0 = ReadArg<uint32_t>(S, PC);
44626 if (!SetLocal<PT_Uint16>(S, OpPC, V0)) return false;
44627 }
44628#if USE_TAILCALLS
44629 MUSTTAIL return InterpNext(S, PC);
44630#else
44631 return true;
44632#endif
44633}
44634PRESERVE_NONE
44635static bool Interp_SetLocalSint32(InterpState &S, CodePtr &PC) {
44636 {
44637 CodePtr OpPC = PC;
44638 const auto V0 = ReadArg<uint32_t>(S, PC);
44639 if (!SetLocal<PT_Sint32>(S, OpPC, V0)) return false;
44640 }
44641#if USE_TAILCALLS
44642 MUSTTAIL return InterpNext(S, PC);
44643#else
44644 return true;
44645#endif
44646}
44647PRESERVE_NONE
44648static bool Interp_SetLocalUint32(InterpState &S, CodePtr &PC) {
44649 {
44650 CodePtr OpPC = PC;
44651 const auto V0 = ReadArg<uint32_t>(S, PC);
44652 if (!SetLocal<PT_Uint32>(S, OpPC, V0)) return false;
44653 }
44654#if USE_TAILCALLS
44655 MUSTTAIL return InterpNext(S, PC);
44656#else
44657 return true;
44658#endif
44659}
44660PRESERVE_NONE
44661static bool Interp_SetLocalSint64(InterpState &S, CodePtr &PC) {
44662 {
44663 CodePtr OpPC = PC;
44664 const auto V0 = ReadArg<uint32_t>(S, PC);
44665 if (!SetLocal<PT_Sint64>(S, OpPC, V0)) return false;
44666 }
44667#if USE_TAILCALLS
44668 MUSTTAIL return InterpNext(S, PC);
44669#else
44670 return true;
44671#endif
44672}
44673PRESERVE_NONE
44674static bool Interp_SetLocalUint64(InterpState &S, CodePtr &PC) {
44675 {
44676 CodePtr OpPC = PC;
44677 const auto V0 = ReadArg<uint32_t>(S, PC);
44678 if (!SetLocal<PT_Uint64>(S, OpPC, V0)) return false;
44679 }
44680#if USE_TAILCALLS
44681 MUSTTAIL return InterpNext(S, PC);
44682#else
44683 return true;
44684#endif
44685}
44686PRESERVE_NONE
44687static bool Interp_SetLocalIntAP(InterpState &S, CodePtr &PC) {
44688 {
44689 CodePtr OpPC = PC;
44690 const auto V0 = ReadArg<uint32_t>(S, PC);
44691 if (!SetLocal<PT_IntAP>(S, OpPC, V0)) return false;
44692 }
44693#if USE_TAILCALLS
44694 MUSTTAIL return InterpNext(S, PC);
44695#else
44696 return true;
44697#endif
44698}
44699PRESERVE_NONE
44700static bool Interp_SetLocalIntAPS(InterpState &S, CodePtr &PC) {
44701 {
44702 CodePtr OpPC = PC;
44703 const auto V0 = ReadArg<uint32_t>(S, PC);
44704 if (!SetLocal<PT_IntAPS>(S, OpPC, V0)) return false;
44705 }
44706#if USE_TAILCALLS
44707 MUSTTAIL return InterpNext(S, PC);
44708#else
44709 return true;
44710#endif
44711}
44712PRESERVE_NONE
44713static bool Interp_SetLocalBool(InterpState &S, CodePtr &PC) {
44714 {
44715 CodePtr OpPC = PC;
44716 const auto V0 = ReadArg<uint32_t>(S, PC);
44717 if (!SetLocal<PT_Bool>(S, OpPC, V0)) return false;
44718 }
44719#if USE_TAILCALLS
44720 MUSTTAIL return InterpNext(S, PC);
44721#else
44722 return true;
44723#endif
44724}
44725PRESERVE_NONE
44726static bool Interp_SetLocalFixedPoint(InterpState &S, CodePtr &PC) {
44727 {
44728 CodePtr OpPC = PC;
44729 const auto V0 = ReadArg<uint32_t>(S, PC);
44730 if (!SetLocal<PT_FixedPoint>(S, OpPC, V0)) return false;
44731 }
44732#if USE_TAILCALLS
44733 MUSTTAIL return InterpNext(S, PC);
44734#else
44735 return true;
44736#endif
44737}
44738PRESERVE_NONE
44739static bool Interp_SetLocalPtr(InterpState &S, CodePtr &PC) {
44740 {
44741 CodePtr OpPC = PC;
44742 const auto V0 = ReadArg<uint32_t>(S, PC);
44743 if (!SetLocal<PT_Ptr>(S, OpPC, V0)) return false;
44744 }
44745#if USE_TAILCALLS
44746 MUSTTAIL return InterpNext(S, PC);
44747#else
44748 return true;
44749#endif
44750}
44751PRESERVE_NONE
44752static bool Interp_SetLocalMemberPtr(InterpState &S, CodePtr &PC) {
44753 {
44754 CodePtr OpPC = PC;
44755 const auto V0 = ReadArg<uint32_t>(S, PC);
44756 if (!SetLocal<PT_MemberPtr>(S, OpPC, V0)) return false;
44757 }
44758#if USE_TAILCALLS
44759 MUSTTAIL return InterpNext(S, PC);
44760#else
44761 return true;
44762#endif
44763}
44764PRESERVE_NONE
44765static bool Interp_SetLocalFloat(InterpState &S, CodePtr &PC) {
44766 {
44767 CodePtr OpPC = PC;
44768 const auto V0 = ReadArg<uint32_t>(S, PC);
44769 if (!SetLocal<PT_Float>(S, OpPC, V0)) return false;
44770 }
44771#if USE_TAILCALLS
44772 MUSTTAIL return InterpNext(S, PC);
44773#else
44774 return true;
44775#endif
44776}
44777#endif
44778#ifdef GET_DISASM
44779case OP_SetLocalSint8:
44780 Text.Op = PrintName("SetLocalSint8");
44781 Text.Args.push_back(printArg<uint32_t>(P, PC));
44782 break;
44783case OP_SetLocalUint8:
44784 Text.Op = PrintName("SetLocalUint8");
44785 Text.Args.push_back(printArg<uint32_t>(P, PC));
44786 break;
44787case OP_SetLocalSint16:
44788 Text.Op = PrintName("SetLocalSint16");
44789 Text.Args.push_back(printArg<uint32_t>(P, PC));
44790 break;
44791case OP_SetLocalUint16:
44792 Text.Op = PrintName("SetLocalUint16");
44793 Text.Args.push_back(printArg<uint32_t>(P, PC));
44794 break;
44795case OP_SetLocalSint32:
44796 Text.Op = PrintName("SetLocalSint32");
44797 Text.Args.push_back(printArg<uint32_t>(P, PC));
44798 break;
44799case OP_SetLocalUint32:
44800 Text.Op = PrintName("SetLocalUint32");
44801 Text.Args.push_back(printArg<uint32_t>(P, PC));
44802 break;
44803case OP_SetLocalSint64:
44804 Text.Op = PrintName("SetLocalSint64");
44805 Text.Args.push_back(printArg<uint32_t>(P, PC));
44806 break;
44807case OP_SetLocalUint64:
44808 Text.Op = PrintName("SetLocalUint64");
44809 Text.Args.push_back(printArg<uint32_t>(P, PC));
44810 break;
44811case OP_SetLocalIntAP:
44812 Text.Op = PrintName("SetLocalIntAP");
44813 Text.Args.push_back(printArg<uint32_t>(P, PC));
44814 break;
44815case OP_SetLocalIntAPS:
44816 Text.Op = PrintName("SetLocalIntAPS");
44817 Text.Args.push_back(printArg<uint32_t>(P, PC));
44818 break;
44819case OP_SetLocalBool:
44820 Text.Op = PrintName("SetLocalBool");
44821 Text.Args.push_back(printArg<uint32_t>(P, PC));
44822 break;
44823case OP_SetLocalFixedPoint:
44824 Text.Op = PrintName("SetLocalFixedPoint");
44825 Text.Args.push_back(printArg<uint32_t>(P, PC));
44826 break;
44827case OP_SetLocalPtr:
44828 Text.Op = PrintName("SetLocalPtr");
44829 Text.Args.push_back(printArg<uint32_t>(P, PC));
44830 break;
44831case OP_SetLocalMemberPtr:
44832 Text.Op = PrintName("SetLocalMemberPtr");
44833 Text.Args.push_back(printArg<uint32_t>(P, PC));
44834 break;
44835case OP_SetLocalFloat:
44836 Text.Op = PrintName("SetLocalFloat");
44837 Text.Args.push_back(printArg<uint32_t>(P, PC));
44838 break;
44839#endif
44840#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44841bool emitSetLocalSint8( uint32_t , SourceInfo);
44842bool emitSetLocalUint8( uint32_t , SourceInfo);
44843bool emitSetLocalSint16( uint32_t , SourceInfo);
44844bool emitSetLocalUint16( uint32_t , SourceInfo);
44845bool emitSetLocalSint32( uint32_t , SourceInfo);
44846bool emitSetLocalUint32( uint32_t , SourceInfo);
44847bool emitSetLocalSint64( uint32_t , SourceInfo);
44848bool emitSetLocalUint64( uint32_t , SourceInfo);
44849bool emitSetLocalIntAP( uint32_t , SourceInfo);
44850bool emitSetLocalIntAPS( uint32_t , SourceInfo);
44851bool emitSetLocalBool( uint32_t , SourceInfo);
44852bool emitSetLocalFixedPoint( uint32_t , SourceInfo);
44853bool emitSetLocalPtr( uint32_t , SourceInfo);
44854bool emitSetLocalMemberPtr( uint32_t , SourceInfo);
44855bool emitSetLocalFloat( uint32_t , SourceInfo);
44856#if defined(GET_EVAL_PROTO)
44857template<PrimType>
44858bool emitSetLocal(uint32_t, SourceInfo);
44859#endif
44860#endif
44861#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
44862[[nodiscard]] bool emitSetLocal(PrimType, uint32_t, SourceInfo I);
44863#endif
44864#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
44865bool
44866#if defined(GET_EVAL_IMPL)
44867EvalEmitter
44868#else
44869ByteCodeEmitter
44870#endif
44871::emitSetLocal(PrimType T0, uint32_t A0, SourceInfo I) {
44872 switch (T0) {
44873 case PT_Sint8:
44874#ifdef GET_LINK_IMPL
44875 return emitSetLocalSint8
44876#else
44877 return emitSetLocal<PT_Sint8>
44878#endif
44879 (A0, I);
44880 case PT_Uint8:
44881#ifdef GET_LINK_IMPL
44882 return emitSetLocalUint8
44883#else
44884 return emitSetLocal<PT_Uint8>
44885#endif
44886 (A0, I);
44887 case PT_Sint16:
44888#ifdef GET_LINK_IMPL
44889 return emitSetLocalSint16
44890#else
44891 return emitSetLocal<PT_Sint16>
44892#endif
44893 (A0, I);
44894 case PT_Uint16:
44895#ifdef GET_LINK_IMPL
44896 return emitSetLocalUint16
44897#else
44898 return emitSetLocal<PT_Uint16>
44899#endif
44900 (A0, I);
44901 case PT_Sint32:
44902#ifdef GET_LINK_IMPL
44903 return emitSetLocalSint32
44904#else
44905 return emitSetLocal<PT_Sint32>
44906#endif
44907 (A0, I);
44908 case PT_Uint32:
44909#ifdef GET_LINK_IMPL
44910 return emitSetLocalUint32
44911#else
44912 return emitSetLocal<PT_Uint32>
44913#endif
44914 (A0, I);
44915 case PT_Sint64:
44916#ifdef GET_LINK_IMPL
44917 return emitSetLocalSint64
44918#else
44919 return emitSetLocal<PT_Sint64>
44920#endif
44921 (A0, I);
44922 case PT_Uint64:
44923#ifdef GET_LINK_IMPL
44924 return emitSetLocalUint64
44925#else
44926 return emitSetLocal<PT_Uint64>
44927#endif
44928 (A0, I);
44929 case PT_IntAP:
44930#ifdef GET_LINK_IMPL
44931 return emitSetLocalIntAP
44932#else
44933 return emitSetLocal<PT_IntAP>
44934#endif
44935 (A0, I);
44936 case PT_IntAPS:
44937#ifdef GET_LINK_IMPL
44938 return emitSetLocalIntAPS
44939#else
44940 return emitSetLocal<PT_IntAPS>
44941#endif
44942 (A0, I);
44943 case PT_Bool:
44944#ifdef GET_LINK_IMPL
44945 return emitSetLocalBool
44946#else
44947 return emitSetLocal<PT_Bool>
44948#endif
44949 (A0, I);
44950 case PT_FixedPoint:
44951#ifdef GET_LINK_IMPL
44952 return emitSetLocalFixedPoint
44953#else
44954 return emitSetLocal<PT_FixedPoint>
44955#endif
44956 (A0, I);
44957 case PT_Ptr:
44958#ifdef GET_LINK_IMPL
44959 return emitSetLocalPtr
44960#else
44961 return emitSetLocal<PT_Ptr>
44962#endif
44963 (A0, I);
44964 case PT_MemberPtr:
44965#ifdef GET_LINK_IMPL
44966 return emitSetLocalMemberPtr
44967#else
44968 return emitSetLocal<PT_MemberPtr>
44969#endif
44970 (A0, I);
44971 case PT_Float:
44972#ifdef GET_LINK_IMPL
44973 return emitSetLocalFloat
44974#else
44975 return emitSetLocal<PT_Float>
44976#endif
44977 (A0, I);
44978 }
44979 llvm_unreachable("invalid enum value");
44980}
44981#endif
44982#ifdef GET_LINK_IMPL
44983bool ByteCodeEmitter::emitSetLocalSint8( uint32_t A0, SourceInfo L) {
44984 return emitOp<uint32_t>(OP_SetLocalSint8, A0, L);
44985}
44986bool ByteCodeEmitter::emitSetLocalUint8( uint32_t A0, SourceInfo L) {
44987 return emitOp<uint32_t>(OP_SetLocalUint8, A0, L);
44988}
44989bool ByteCodeEmitter::emitSetLocalSint16( uint32_t A0, SourceInfo L) {
44990 return emitOp<uint32_t>(OP_SetLocalSint16, A0, L);
44991}
44992bool ByteCodeEmitter::emitSetLocalUint16( uint32_t A0, SourceInfo L) {
44993 return emitOp<uint32_t>(OP_SetLocalUint16, A0, L);
44994}
44995bool ByteCodeEmitter::emitSetLocalSint32( uint32_t A0, SourceInfo L) {
44996 return emitOp<uint32_t>(OP_SetLocalSint32, A0, L);
44997}
44998bool ByteCodeEmitter::emitSetLocalUint32( uint32_t A0, SourceInfo L) {
44999 return emitOp<uint32_t>(OP_SetLocalUint32, A0, L);
45000}
45001bool ByteCodeEmitter::emitSetLocalSint64( uint32_t A0, SourceInfo L) {
45002 return emitOp<uint32_t>(OP_SetLocalSint64, A0, L);
45003}
45004bool ByteCodeEmitter::emitSetLocalUint64( uint32_t A0, SourceInfo L) {
45005 return emitOp<uint32_t>(OP_SetLocalUint64, A0, L);
45006}
45007bool ByteCodeEmitter::emitSetLocalIntAP( uint32_t A0, SourceInfo L) {
45008 return emitOp<uint32_t>(OP_SetLocalIntAP, A0, L);
45009}
45010bool ByteCodeEmitter::emitSetLocalIntAPS( uint32_t A0, SourceInfo L) {
45011 return emitOp<uint32_t>(OP_SetLocalIntAPS, A0, L);
45012}
45013bool ByteCodeEmitter::emitSetLocalBool( uint32_t A0, SourceInfo L) {
45014 return emitOp<uint32_t>(OP_SetLocalBool, A0, L);
45015}
45016bool ByteCodeEmitter::emitSetLocalFixedPoint( uint32_t A0, SourceInfo L) {
45017 return emitOp<uint32_t>(OP_SetLocalFixedPoint, A0, L);
45018}
45019bool ByteCodeEmitter::emitSetLocalPtr( uint32_t A0, SourceInfo L) {
45020 return emitOp<uint32_t>(OP_SetLocalPtr, A0, L);
45021}
45022bool ByteCodeEmitter::emitSetLocalMemberPtr( uint32_t A0, SourceInfo L) {
45023 return emitOp<uint32_t>(OP_SetLocalMemberPtr, A0, L);
45024}
45025bool ByteCodeEmitter::emitSetLocalFloat( uint32_t A0, SourceInfo L) {
45026 return emitOp<uint32_t>(OP_SetLocalFloat, A0, L);
45027}
45028#endif
45029#ifdef GET_OPCODE_NAMES
45030OP_SetParamSint8,
45031OP_SetParamUint8,
45032OP_SetParamSint16,
45033OP_SetParamUint16,
45034OP_SetParamSint32,
45035OP_SetParamUint32,
45036OP_SetParamSint64,
45037OP_SetParamUint64,
45038OP_SetParamIntAP,
45039OP_SetParamIntAPS,
45040OP_SetParamBool,
45041OP_SetParamFixedPoint,
45042OP_SetParamPtr,
45043OP_SetParamMemberPtr,
45044OP_SetParamFloat,
45045#endif
45046#ifdef GET_INTERPFN_LIST
45047&Interp_SetParamSint8,
45048&Interp_SetParamUint8,
45049&Interp_SetParamSint16,
45050&Interp_SetParamUint16,
45051&Interp_SetParamSint32,
45052&Interp_SetParamUint32,
45053&Interp_SetParamSint64,
45054&Interp_SetParamUint64,
45055&Interp_SetParamIntAP,
45056&Interp_SetParamIntAPS,
45057&Interp_SetParamBool,
45058&Interp_SetParamFixedPoint,
45059&Interp_SetParamPtr,
45060&Interp_SetParamMemberPtr,
45061&Interp_SetParamFloat,
45062#endif
45063#ifdef GET_INTERPFN_DISPATCHERS
45064PRESERVE_NONE
45065static bool Interp_SetParamSint8(InterpState &S, CodePtr &PC) {
45066 {
45067 CodePtr OpPC = PC;
45068 const auto V0 = ReadArg<uint32_t>(S, PC);
45069 if (!SetParam<PT_Sint8>(S, OpPC, V0)) return false;
45070 }
45071#if USE_TAILCALLS
45072 MUSTTAIL return InterpNext(S, PC);
45073#else
45074 return true;
45075#endif
45076}
45077PRESERVE_NONE
45078static bool Interp_SetParamUint8(InterpState &S, CodePtr &PC) {
45079 {
45080 CodePtr OpPC = PC;
45081 const auto V0 = ReadArg<uint32_t>(S, PC);
45082 if (!SetParam<PT_Uint8>(S, OpPC, V0)) return false;
45083 }
45084#if USE_TAILCALLS
45085 MUSTTAIL return InterpNext(S, PC);
45086#else
45087 return true;
45088#endif
45089}
45090PRESERVE_NONE
45091static bool Interp_SetParamSint16(InterpState &S, CodePtr &PC) {
45092 {
45093 CodePtr OpPC = PC;
45094 const auto V0 = ReadArg<uint32_t>(S, PC);
45095 if (!SetParam<PT_Sint16>(S, OpPC, V0)) return false;
45096 }
45097#if USE_TAILCALLS
45098 MUSTTAIL return InterpNext(S, PC);
45099#else
45100 return true;
45101#endif
45102}
45103PRESERVE_NONE
45104static bool Interp_SetParamUint16(InterpState &S, CodePtr &PC) {
45105 {
45106 CodePtr OpPC = PC;
45107 const auto V0 = ReadArg<uint32_t>(S, PC);
45108 if (!SetParam<PT_Uint16>(S, OpPC, V0)) return false;
45109 }
45110#if USE_TAILCALLS
45111 MUSTTAIL return InterpNext(S, PC);
45112#else
45113 return true;
45114#endif
45115}
45116PRESERVE_NONE
45117static bool Interp_SetParamSint32(InterpState &S, CodePtr &PC) {
45118 {
45119 CodePtr OpPC = PC;
45120 const auto V0 = ReadArg<uint32_t>(S, PC);
45121 if (!SetParam<PT_Sint32>(S, OpPC, V0)) return false;
45122 }
45123#if USE_TAILCALLS
45124 MUSTTAIL return InterpNext(S, PC);
45125#else
45126 return true;
45127#endif
45128}
45129PRESERVE_NONE
45130static bool Interp_SetParamUint32(InterpState &S, CodePtr &PC) {
45131 {
45132 CodePtr OpPC = PC;
45133 const auto V0 = ReadArg<uint32_t>(S, PC);
45134 if (!SetParam<PT_Uint32>(S, OpPC, V0)) return false;
45135 }
45136#if USE_TAILCALLS
45137 MUSTTAIL return InterpNext(S, PC);
45138#else
45139 return true;
45140#endif
45141}
45142PRESERVE_NONE
45143static bool Interp_SetParamSint64(InterpState &S, CodePtr &PC) {
45144 {
45145 CodePtr OpPC = PC;
45146 const auto V0 = ReadArg<uint32_t>(S, PC);
45147 if (!SetParam<PT_Sint64>(S, OpPC, V0)) return false;
45148 }
45149#if USE_TAILCALLS
45150 MUSTTAIL return InterpNext(S, PC);
45151#else
45152 return true;
45153#endif
45154}
45155PRESERVE_NONE
45156static bool Interp_SetParamUint64(InterpState &S, CodePtr &PC) {
45157 {
45158 CodePtr OpPC = PC;
45159 const auto V0 = ReadArg<uint32_t>(S, PC);
45160 if (!SetParam<PT_Uint64>(S, OpPC, V0)) return false;
45161 }
45162#if USE_TAILCALLS
45163 MUSTTAIL return InterpNext(S, PC);
45164#else
45165 return true;
45166#endif
45167}
45168PRESERVE_NONE
45169static bool Interp_SetParamIntAP(InterpState &S, CodePtr &PC) {
45170 {
45171 CodePtr OpPC = PC;
45172 const auto V0 = ReadArg<uint32_t>(S, PC);
45173 if (!SetParam<PT_IntAP>(S, OpPC, V0)) return false;
45174 }
45175#if USE_TAILCALLS
45176 MUSTTAIL return InterpNext(S, PC);
45177#else
45178 return true;
45179#endif
45180}
45181PRESERVE_NONE
45182static bool Interp_SetParamIntAPS(InterpState &S, CodePtr &PC) {
45183 {
45184 CodePtr OpPC = PC;
45185 const auto V0 = ReadArg<uint32_t>(S, PC);
45186 if (!SetParam<PT_IntAPS>(S, OpPC, V0)) return false;
45187 }
45188#if USE_TAILCALLS
45189 MUSTTAIL return InterpNext(S, PC);
45190#else
45191 return true;
45192#endif
45193}
45194PRESERVE_NONE
45195static bool Interp_SetParamBool(InterpState &S, CodePtr &PC) {
45196 {
45197 CodePtr OpPC = PC;
45198 const auto V0 = ReadArg<uint32_t>(S, PC);
45199 if (!SetParam<PT_Bool>(S, OpPC, V0)) return false;
45200 }
45201#if USE_TAILCALLS
45202 MUSTTAIL return InterpNext(S, PC);
45203#else
45204 return true;
45205#endif
45206}
45207PRESERVE_NONE
45208static bool Interp_SetParamFixedPoint(InterpState &S, CodePtr &PC) {
45209 {
45210 CodePtr OpPC = PC;
45211 const auto V0 = ReadArg<uint32_t>(S, PC);
45212 if (!SetParam<PT_FixedPoint>(S, OpPC, V0)) return false;
45213 }
45214#if USE_TAILCALLS
45215 MUSTTAIL return InterpNext(S, PC);
45216#else
45217 return true;
45218#endif
45219}
45220PRESERVE_NONE
45221static bool Interp_SetParamPtr(InterpState &S, CodePtr &PC) {
45222 {
45223 CodePtr OpPC = PC;
45224 const auto V0 = ReadArg<uint32_t>(S, PC);
45225 if (!SetParam<PT_Ptr>(S, OpPC, V0)) return false;
45226 }
45227#if USE_TAILCALLS
45228 MUSTTAIL return InterpNext(S, PC);
45229#else
45230 return true;
45231#endif
45232}
45233PRESERVE_NONE
45234static bool Interp_SetParamMemberPtr(InterpState &S, CodePtr &PC) {
45235 {
45236 CodePtr OpPC = PC;
45237 const auto V0 = ReadArg<uint32_t>(S, PC);
45238 if (!SetParam<PT_MemberPtr>(S, OpPC, V0)) return false;
45239 }
45240#if USE_TAILCALLS
45241 MUSTTAIL return InterpNext(S, PC);
45242#else
45243 return true;
45244#endif
45245}
45246PRESERVE_NONE
45247static bool Interp_SetParamFloat(InterpState &S, CodePtr &PC) {
45248 {
45249 CodePtr OpPC = PC;
45250 const auto V0 = ReadArg<uint32_t>(S, PC);
45251 if (!SetParam<PT_Float>(S, OpPC, V0)) return false;
45252 }
45253#if USE_TAILCALLS
45254 MUSTTAIL return InterpNext(S, PC);
45255#else
45256 return true;
45257#endif
45258}
45259#endif
45260#ifdef GET_DISASM
45261case OP_SetParamSint8:
45262 Text.Op = PrintName("SetParamSint8");
45263 Text.Args.push_back(printArg<uint32_t>(P, PC));
45264 break;
45265case OP_SetParamUint8:
45266 Text.Op = PrintName("SetParamUint8");
45267 Text.Args.push_back(printArg<uint32_t>(P, PC));
45268 break;
45269case OP_SetParamSint16:
45270 Text.Op = PrintName("SetParamSint16");
45271 Text.Args.push_back(printArg<uint32_t>(P, PC));
45272 break;
45273case OP_SetParamUint16:
45274 Text.Op = PrintName("SetParamUint16");
45275 Text.Args.push_back(printArg<uint32_t>(P, PC));
45276 break;
45277case OP_SetParamSint32:
45278 Text.Op = PrintName("SetParamSint32");
45279 Text.Args.push_back(printArg<uint32_t>(P, PC));
45280 break;
45281case OP_SetParamUint32:
45282 Text.Op = PrintName("SetParamUint32");
45283 Text.Args.push_back(printArg<uint32_t>(P, PC));
45284 break;
45285case OP_SetParamSint64:
45286 Text.Op = PrintName("SetParamSint64");
45287 Text.Args.push_back(printArg<uint32_t>(P, PC));
45288 break;
45289case OP_SetParamUint64:
45290 Text.Op = PrintName("SetParamUint64");
45291 Text.Args.push_back(printArg<uint32_t>(P, PC));
45292 break;
45293case OP_SetParamIntAP:
45294 Text.Op = PrintName("SetParamIntAP");
45295 Text.Args.push_back(printArg<uint32_t>(P, PC));
45296 break;
45297case OP_SetParamIntAPS:
45298 Text.Op = PrintName("SetParamIntAPS");
45299 Text.Args.push_back(printArg<uint32_t>(P, PC));
45300 break;
45301case OP_SetParamBool:
45302 Text.Op = PrintName("SetParamBool");
45303 Text.Args.push_back(printArg<uint32_t>(P, PC));
45304 break;
45305case OP_SetParamFixedPoint:
45306 Text.Op = PrintName("SetParamFixedPoint");
45307 Text.Args.push_back(printArg<uint32_t>(P, PC));
45308 break;
45309case OP_SetParamPtr:
45310 Text.Op = PrintName("SetParamPtr");
45311 Text.Args.push_back(printArg<uint32_t>(P, PC));
45312 break;
45313case OP_SetParamMemberPtr:
45314 Text.Op = PrintName("SetParamMemberPtr");
45315 Text.Args.push_back(printArg<uint32_t>(P, PC));
45316 break;
45317case OP_SetParamFloat:
45318 Text.Op = PrintName("SetParamFloat");
45319 Text.Args.push_back(printArg<uint32_t>(P, PC));
45320 break;
45321#endif
45322#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
45323bool emitSetParamSint8( uint32_t , SourceInfo);
45324bool emitSetParamUint8( uint32_t , SourceInfo);
45325bool emitSetParamSint16( uint32_t , SourceInfo);
45326bool emitSetParamUint16( uint32_t , SourceInfo);
45327bool emitSetParamSint32( uint32_t , SourceInfo);
45328bool emitSetParamUint32( uint32_t , SourceInfo);
45329bool emitSetParamSint64( uint32_t , SourceInfo);
45330bool emitSetParamUint64( uint32_t , SourceInfo);
45331bool emitSetParamIntAP( uint32_t , SourceInfo);
45332bool emitSetParamIntAPS( uint32_t , SourceInfo);
45333bool emitSetParamBool( uint32_t , SourceInfo);
45334bool emitSetParamFixedPoint( uint32_t , SourceInfo);
45335bool emitSetParamPtr( uint32_t , SourceInfo);
45336bool emitSetParamMemberPtr( uint32_t , SourceInfo);
45337bool emitSetParamFloat( uint32_t , SourceInfo);
45338#endif
45339#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
45340[[nodiscard]] bool emitSetParam(PrimType, uint32_t, SourceInfo I);
45341#endif
45342#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
45343bool
45344#if defined(GET_EVAL_IMPL)
45345EvalEmitter
45346#else
45347ByteCodeEmitter
45348#endif
45349::emitSetParam(PrimType T0, uint32_t A0, SourceInfo I) {
45350 switch (T0) {
45351 case PT_Sint8:
45352 return emitSetParamSint8(A0, I);
45353 case PT_Uint8:
45354 return emitSetParamUint8(A0, I);
45355 case PT_Sint16:
45356 return emitSetParamSint16(A0, I);
45357 case PT_Uint16:
45358 return emitSetParamUint16(A0, I);
45359 case PT_Sint32:
45360 return emitSetParamSint32(A0, I);
45361 case PT_Uint32:
45362 return emitSetParamUint32(A0, I);
45363 case PT_Sint64:
45364 return emitSetParamSint64(A0, I);
45365 case PT_Uint64:
45366 return emitSetParamUint64(A0, I);
45367 case PT_IntAP:
45368 return emitSetParamIntAP(A0, I);
45369 case PT_IntAPS:
45370 return emitSetParamIntAPS(A0, I);
45371 case PT_Bool:
45372 return emitSetParamBool(A0, I);
45373 case PT_FixedPoint:
45374 return emitSetParamFixedPoint(A0, I);
45375 case PT_Ptr:
45376 return emitSetParamPtr(A0, I);
45377 case PT_MemberPtr:
45378 return emitSetParamMemberPtr(A0, I);
45379 case PT_Float:
45380 return emitSetParamFloat(A0, I);
45381 }
45382 llvm_unreachable("invalid enum value");
45383}
45384#endif
45385#ifdef GET_LINK_IMPL
45386bool ByteCodeEmitter::emitSetParamSint8( uint32_t A0, SourceInfo L) {
45387 return emitOp<uint32_t>(OP_SetParamSint8, A0, L);
45388}
45389bool ByteCodeEmitter::emitSetParamUint8( uint32_t A0, SourceInfo L) {
45390 return emitOp<uint32_t>(OP_SetParamUint8, A0, L);
45391}
45392bool ByteCodeEmitter::emitSetParamSint16( uint32_t A0, SourceInfo L) {
45393 return emitOp<uint32_t>(OP_SetParamSint16, A0, L);
45394}
45395bool ByteCodeEmitter::emitSetParamUint16( uint32_t A0, SourceInfo L) {
45396 return emitOp<uint32_t>(OP_SetParamUint16, A0, L);
45397}
45398bool ByteCodeEmitter::emitSetParamSint32( uint32_t A0, SourceInfo L) {
45399 return emitOp<uint32_t>(OP_SetParamSint32, A0, L);
45400}
45401bool ByteCodeEmitter::emitSetParamUint32( uint32_t A0, SourceInfo L) {
45402 return emitOp<uint32_t>(OP_SetParamUint32, A0, L);
45403}
45404bool ByteCodeEmitter::emitSetParamSint64( uint32_t A0, SourceInfo L) {
45405 return emitOp<uint32_t>(OP_SetParamSint64, A0, L);
45406}
45407bool ByteCodeEmitter::emitSetParamUint64( uint32_t A0, SourceInfo L) {
45408 return emitOp<uint32_t>(OP_SetParamUint64, A0, L);
45409}
45410bool ByteCodeEmitter::emitSetParamIntAP( uint32_t A0, SourceInfo L) {
45411 return emitOp<uint32_t>(OP_SetParamIntAP, A0, L);
45412}
45413bool ByteCodeEmitter::emitSetParamIntAPS( uint32_t A0, SourceInfo L) {
45414 return emitOp<uint32_t>(OP_SetParamIntAPS, A0, L);
45415}
45416bool ByteCodeEmitter::emitSetParamBool( uint32_t A0, SourceInfo L) {
45417 return emitOp<uint32_t>(OP_SetParamBool, A0, L);
45418}
45419bool ByteCodeEmitter::emitSetParamFixedPoint( uint32_t A0, SourceInfo L) {
45420 return emitOp<uint32_t>(OP_SetParamFixedPoint, A0, L);
45421}
45422bool ByteCodeEmitter::emitSetParamPtr( uint32_t A0, SourceInfo L) {
45423 return emitOp<uint32_t>(OP_SetParamPtr, A0, L);
45424}
45425bool ByteCodeEmitter::emitSetParamMemberPtr( uint32_t A0, SourceInfo L) {
45426 return emitOp<uint32_t>(OP_SetParamMemberPtr, A0, L);
45427}
45428bool ByteCodeEmitter::emitSetParamFloat( uint32_t A0, SourceInfo L) {
45429 return emitOp<uint32_t>(OP_SetParamFloat, A0, L);
45430}
45431#endif
45432#ifdef GET_EVAL_IMPL
45433bool EvalEmitter::emitSetParamSint8( uint32_t A0, SourceInfo L) {
45434 if (!isActive()) return true;
45435 CurrentSource = L;
45436 return SetParam<PT_Sint8>(S, OpPC, A0);
45437}
45438bool EvalEmitter::emitSetParamUint8( uint32_t A0, SourceInfo L) {
45439 if (!isActive()) return true;
45440 CurrentSource = L;
45441 return SetParam<PT_Uint8>(S, OpPC, A0);
45442}
45443bool EvalEmitter::emitSetParamSint16( uint32_t A0, SourceInfo L) {
45444 if (!isActive()) return true;
45445 CurrentSource = L;
45446 return SetParam<PT_Sint16>(S, OpPC, A0);
45447}
45448bool EvalEmitter::emitSetParamUint16( uint32_t A0, SourceInfo L) {
45449 if (!isActive()) return true;
45450 CurrentSource = L;
45451 return SetParam<PT_Uint16>(S, OpPC, A0);
45452}
45453bool EvalEmitter::emitSetParamSint32( uint32_t A0, SourceInfo L) {
45454 if (!isActive()) return true;
45455 CurrentSource = L;
45456 return SetParam<PT_Sint32>(S, OpPC, A0);
45457}
45458bool EvalEmitter::emitSetParamUint32( uint32_t A0, SourceInfo L) {
45459 if (!isActive()) return true;
45460 CurrentSource = L;
45461 return SetParam<PT_Uint32>(S, OpPC, A0);
45462}
45463bool EvalEmitter::emitSetParamSint64( uint32_t A0, SourceInfo L) {
45464 if (!isActive()) return true;
45465 CurrentSource = L;
45466 return SetParam<PT_Sint64>(S, OpPC, A0);
45467}
45468bool EvalEmitter::emitSetParamUint64( uint32_t A0, SourceInfo L) {
45469 if (!isActive()) return true;
45470 CurrentSource = L;
45471 return SetParam<PT_Uint64>(S, OpPC, A0);
45472}
45473bool EvalEmitter::emitSetParamIntAP( uint32_t A0, SourceInfo L) {
45474 if (!isActive()) return true;
45475 CurrentSource = L;
45476 return SetParam<PT_IntAP>(S, OpPC, A0);
45477}
45478bool EvalEmitter::emitSetParamIntAPS( uint32_t A0, SourceInfo L) {
45479 if (!isActive()) return true;
45480 CurrentSource = L;
45481 return SetParam<PT_IntAPS>(S, OpPC, A0);
45482}
45483bool EvalEmitter::emitSetParamBool( uint32_t A0, SourceInfo L) {
45484 if (!isActive()) return true;
45485 CurrentSource = L;
45486 return SetParam<PT_Bool>(S, OpPC, A0);
45487}
45488bool EvalEmitter::emitSetParamFixedPoint( uint32_t A0, SourceInfo L) {
45489 if (!isActive()) return true;
45490 CurrentSource = L;
45491 return SetParam<PT_FixedPoint>(S, OpPC, A0);
45492}
45493bool EvalEmitter::emitSetParamPtr( uint32_t A0, SourceInfo L) {
45494 if (!isActive()) return true;
45495 CurrentSource = L;
45496 return SetParam<PT_Ptr>(S, OpPC, A0);
45497}
45498bool EvalEmitter::emitSetParamMemberPtr( uint32_t A0, SourceInfo L) {
45499 if (!isActive()) return true;
45500 CurrentSource = L;
45501 return SetParam<PT_MemberPtr>(S, OpPC, A0);
45502}
45503bool EvalEmitter::emitSetParamFloat( uint32_t A0, SourceInfo L) {
45504 if (!isActive()) return true;
45505 CurrentSource = L;
45506 return SetParam<PT_Float>(S, OpPC, A0);
45507}
45508#endif
45509#ifdef GET_OPCODE_NAMES
45510OP_SetThisFieldSint8,
45511OP_SetThisFieldUint8,
45512OP_SetThisFieldSint16,
45513OP_SetThisFieldUint16,
45514OP_SetThisFieldSint32,
45515OP_SetThisFieldUint32,
45516OP_SetThisFieldSint64,
45517OP_SetThisFieldUint64,
45518OP_SetThisFieldIntAP,
45519OP_SetThisFieldIntAPS,
45520OP_SetThisFieldBool,
45521OP_SetThisFieldFixedPoint,
45522OP_SetThisFieldPtr,
45523OP_SetThisFieldMemberPtr,
45524OP_SetThisFieldFloat,
45525#endif
45526#ifdef GET_INTERPFN_LIST
45527&Interp_SetThisFieldSint8,
45528&Interp_SetThisFieldUint8,
45529&Interp_SetThisFieldSint16,
45530&Interp_SetThisFieldUint16,
45531&Interp_SetThisFieldSint32,
45532&Interp_SetThisFieldUint32,
45533&Interp_SetThisFieldSint64,
45534&Interp_SetThisFieldUint64,
45535&Interp_SetThisFieldIntAP,
45536&Interp_SetThisFieldIntAPS,
45537&Interp_SetThisFieldBool,
45538&Interp_SetThisFieldFixedPoint,
45539&Interp_SetThisFieldPtr,
45540&Interp_SetThisFieldMemberPtr,
45541&Interp_SetThisFieldFloat,
45542#endif
45543#ifdef GET_INTERPFN_DISPATCHERS
45544PRESERVE_NONE
45545static bool Interp_SetThisFieldSint8(InterpState &S, CodePtr &PC) {
45546 {
45547 CodePtr OpPC = PC;
45548 const auto V0 = ReadArg<uint32_t>(S, PC);
45549 if (!SetThisField<PT_Sint8>(S, OpPC, V0)) return false;
45550 }
45551#if USE_TAILCALLS
45552 MUSTTAIL return InterpNext(S, PC);
45553#else
45554 return true;
45555#endif
45556}
45557PRESERVE_NONE
45558static bool Interp_SetThisFieldUint8(InterpState &S, CodePtr &PC) {
45559 {
45560 CodePtr OpPC = PC;
45561 const auto V0 = ReadArg<uint32_t>(S, PC);
45562 if (!SetThisField<PT_Uint8>(S, OpPC, V0)) return false;
45563 }
45564#if USE_TAILCALLS
45565 MUSTTAIL return InterpNext(S, PC);
45566#else
45567 return true;
45568#endif
45569}
45570PRESERVE_NONE
45571static bool Interp_SetThisFieldSint16(InterpState &S, CodePtr &PC) {
45572 {
45573 CodePtr OpPC = PC;
45574 const auto V0 = ReadArg<uint32_t>(S, PC);
45575 if (!SetThisField<PT_Sint16>(S, OpPC, V0)) return false;
45576 }
45577#if USE_TAILCALLS
45578 MUSTTAIL return InterpNext(S, PC);
45579#else
45580 return true;
45581#endif
45582}
45583PRESERVE_NONE
45584static bool Interp_SetThisFieldUint16(InterpState &S, CodePtr &PC) {
45585 {
45586 CodePtr OpPC = PC;
45587 const auto V0 = ReadArg<uint32_t>(S, PC);
45588 if (!SetThisField<PT_Uint16>(S, OpPC, V0)) return false;
45589 }
45590#if USE_TAILCALLS
45591 MUSTTAIL return InterpNext(S, PC);
45592#else
45593 return true;
45594#endif
45595}
45596PRESERVE_NONE
45597static bool Interp_SetThisFieldSint32(InterpState &S, CodePtr &PC) {
45598 {
45599 CodePtr OpPC = PC;
45600 const auto V0 = ReadArg<uint32_t>(S, PC);
45601 if (!SetThisField<PT_Sint32>(S, OpPC, V0)) return false;
45602 }
45603#if USE_TAILCALLS
45604 MUSTTAIL return InterpNext(S, PC);
45605#else
45606 return true;
45607#endif
45608}
45609PRESERVE_NONE
45610static bool Interp_SetThisFieldUint32(InterpState &S, CodePtr &PC) {
45611 {
45612 CodePtr OpPC = PC;
45613 const auto V0 = ReadArg<uint32_t>(S, PC);
45614 if (!SetThisField<PT_Uint32>(S, OpPC, V0)) return false;
45615 }
45616#if USE_TAILCALLS
45617 MUSTTAIL return InterpNext(S, PC);
45618#else
45619 return true;
45620#endif
45621}
45622PRESERVE_NONE
45623static bool Interp_SetThisFieldSint64(InterpState &S, CodePtr &PC) {
45624 {
45625 CodePtr OpPC = PC;
45626 const auto V0 = ReadArg<uint32_t>(S, PC);
45627 if (!SetThisField<PT_Sint64>(S, OpPC, V0)) return false;
45628 }
45629#if USE_TAILCALLS
45630 MUSTTAIL return InterpNext(S, PC);
45631#else
45632 return true;
45633#endif
45634}
45635PRESERVE_NONE
45636static bool Interp_SetThisFieldUint64(InterpState &S, CodePtr &PC) {
45637 {
45638 CodePtr OpPC = PC;
45639 const auto V0 = ReadArg<uint32_t>(S, PC);
45640 if (!SetThisField<PT_Uint64>(S, OpPC, V0)) return false;
45641 }
45642#if USE_TAILCALLS
45643 MUSTTAIL return InterpNext(S, PC);
45644#else
45645 return true;
45646#endif
45647}
45648PRESERVE_NONE
45649static bool Interp_SetThisFieldIntAP(InterpState &S, CodePtr &PC) {
45650 {
45651 CodePtr OpPC = PC;
45652 const auto V0 = ReadArg<uint32_t>(S, PC);
45653 if (!SetThisField<PT_IntAP>(S, OpPC, V0)) return false;
45654 }
45655#if USE_TAILCALLS
45656 MUSTTAIL return InterpNext(S, PC);
45657#else
45658 return true;
45659#endif
45660}
45661PRESERVE_NONE
45662static bool Interp_SetThisFieldIntAPS(InterpState &S, CodePtr &PC) {
45663 {
45664 CodePtr OpPC = PC;
45665 const auto V0 = ReadArg<uint32_t>(S, PC);
45666 if (!SetThisField<PT_IntAPS>(S, OpPC, V0)) return false;
45667 }
45668#if USE_TAILCALLS
45669 MUSTTAIL return InterpNext(S, PC);
45670#else
45671 return true;
45672#endif
45673}
45674PRESERVE_NONE
45675static bool Interp_SetThisFieldBool(InterpState &S, CodePtr &PC) {
45676 {
45677 CodePtr OpPC = PC;
45678 const auto V0 = ReadArg<uint32_t>(S, PC);
45679 if (!SetThisField<PT_Bool>(S, OpPC, V0)) return false;
45680 }
45681#if USE_TAILCALLS
45682 MUSTTAIL return InterpNext(S, PC);
45683#else
45684 return true;
45685#endif
45686}
45687PRESERVE_NONE
45688static bool Interp_SetThisFieldFixedPoint(InterpState &S, CodePtr &PC) {
45689 {
45690 CodePtr OpPC = PC;
45691 const auto V0 = ReadArg<uint32_t>(S, PC);
45692 if (!SetThisField<PT_FixedPoint>(S, OpPC, V0)) return false;
45693 }
45694#if USE_TAILCALLS
45695 MUSTTAIL return InterpNext(S, PC);
45696#else
45697 return true;
45698#endif
45699}
45700PRESERVE_NONE
45701static bool Interp_SetThisFieldPtr(InterpState &S, CodePtr &PC) {
45702 {
45703 CodePtr OpPC = PC;
45704 const auto V0 = ReadArg<uint32_t>(S, PC);
45705 if (!SetThisField<PT_Ptr>(S, OpPC, V0)) return false;
45706 }
45707#if USE_TAILCALLS
45708 MUSTTAIL return InterpNext(S, PC);
45709#else
45710 return true;
45711#endif
45712}
45713PRESERVE_NONE
45714static bool Interp_SetThisFieldMemberPtr(InterpState &S, CodePtr &PC) {
45715 {
45716 CodePtr OpPC = PC;
45717 const auto V0 = ReadArg<uint32_t>(S, PC);
45718 if (!SetThisField<PT_MemberPtr>(S, OpPC, V0)) return false;
45719 }
45720#if USE_TAILCALLS
45721 MUSTTAIL return InterpNext(S, PC);
45722#else
45723 return true;
45724#endif
45725}
45726PRESERVE_NONE
45727static bool Interp_SetThisFieldFloat(InterpState &S, CodePtr &PC) {
45728 {
45729 CodePtr OpPC = PC;
45730 const auto V0 = ReadArg<uint32_t>(S, PC);
45731 if (!SetThisField<PT_Float>(S, OpPC, V0)) return false;
45732 }
45733#if USE_TAILCALLS
45734 MUSTTAIL return InterpNext(S, PC);
45735#else
45736 return true;
45737#endif
45738}
45739#endif
45740#ifdef GET_DISASM
45741case OP_SetThisFieldSint8:
45742 Text.Op = PrintName("SetThisFieldSint8");
45743 Text.Args.push_back(printArg<uint32_t>(P, PC));
45744 break;
45745case OP_SetThisFieldUint8:
45746 Text.Op = PrintName("SetThisFieldUint8");
45747 Text.Args.push_back(printArg<uint32_t>(P, PC));
45748 break;
45749case OP_SetThisFieldSint16:
45750 Text.Op = PrintName("SetThisFieldSint16");
45751 Text.Args.push_back(printArg<uint32_t>(P, PC));
45752 break;
45753case OP_SetThisFieldUint16:
45754 Text.Op = PrintName("SetThisFieldUint16");
45755 Text.Args.push_back(printArg<uint32_t>(P, PC));
45756 break;
45757case OP_SetThisFieldSint32:
45758 Text.Op = PrintName("SetThisFieldSint32");
45759 Text.Args.push_back(printArg<uint32_t>(P, PC));
45760 break;
45761case OP_SetThisFieldUint32:
45762 Text.Op = PrintName("SetThisFieldUint32");
45763 Text.Args.push_back(printArg<uint32_t>(P, PC));
45764 break;
45765case OP_SetThisFieldSint64:
45766 Text.Op = PrintName("SetThisFieldSint64");
45767 Text.Args.push_back(printArg<uint32_t>(P, PC));
45768 break;
45769case OP_SetThisFieldUint64:
45770 Text.Op = PrintName("SetThisFieldUint64");
45771 Text.Args.push_back(printArg<uint32_t>(P, PC));
45772 break;
45773case OP_SetThisFieldIntAP:
45774 Text.Op = PrintName("SetThisFieldIntAP");
45775 Text.Args.push_back(printArg<uint32_t>(P, PC));
45776 break;
45777case OP_SetThisFieldIntAPS:
45778 Text.Op = PrintName("SetThisFieldIntAPS");
45779 Text.Args.push_back(printArg<uint32_t>(P, PC));
45780 break;
45781case OP_SetThisFieldBool:
45782 Text.Op = PrintName("SetThisFieldBool");
45783 Text.Args.push_back(printArg<uint32_t>(P, PC));
45784 break;
45785case OP_SetThisFieldFixedPoint:
45786 Text.Op = PrintName("SetThisFieldFixedPoint");
45787 Text.Args.push_back(printArg<uint32_t>(P, PC));
45788 break;
45789case OP_SetThisFieldPtr:
45790 Text.Op = PrintName("SetThisFieldPtr");
45791 Text.Args.push_back(printArg<uint32_t>(P, PC));
45792 break;
45793case OP_SetThisFieldMemberPtr:
45794 Text.Op = PrintName("SetThisFieldMemberPtr");
45795 Text.Args.push_back(printArg<uint32_t>(P, PC));
45796 break;
45797case OP_SetThisFieldFloat:
45798 Text.Op = PrintName("SetThisFieldFloat");
45799 Text.Args.push_back(printArg<uint32_t>(P, PC));
45800 break;
45801#endif
45802#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
45803bool emitSetThisFieldSint8( uint32_t , SourceInfo);
45804bool emitSetThisFieldUint8( uint32_t , SourceInfo);
45805bool emitSetThisFieldSint16( uint32_t , SourceInfo);
45806bool emitSetThisFieldUint16( uint32_t , SourceInfo);
45807bool emitSetThisFieldSint32( uint32_t , SourceInfo);
45808bool emitSetThisFieldUint32( uint32_t , SourceInfo);
45809bool emitSetThisFieldSint64( uint32_t , SourceInfo);
45810bool emitSetThisFieldUint64( uint32_t , SourceInfo);
45811bool emitSetThisFieldIntAP( uint32_t , SourceInfo);
45812bool emitSetThisFieldIntAPS( uint32_t , SourceInfo);
45813bool emitSetThisFieldBool( uint32_t , SourceInfo);
45814bool emitSetThisFieldFixedPoint( uint32_t , SourceInfo);
45815bool emitSetThisFieldPtr( uint32_t , SourceInfo);
45816bool emitSetThisFieldMemberPtr( uint32_t , SourceInfo);
45817bool emitSetThisFieldFloat( uint32_t , SourceInfo);
45818#endif
45819#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
45820[[nodiscard]] bool emitSetThisField(PrimType, uint32_t, SourceInfo I);
45821#endif
45822#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
45823bool
45824#if defined(GET_EVAL_IMPL)
45825EvalEmitter
45826#else
45827ByteCodeEmitter
45828#endif
45829::emitSetThisField(PrimType T0, uint32_t A0, SourceInfo I) {
45830 switch (T0) {
45831 case PT_Sint8:
45832 return emitSetThisFieldSint8(A0, I);
45833 case PT_Uint8:
45834 return emitSetThisFieldUint8(A0, I);
45835 case PT_Sint16:
45836 return emitSetThisFieldSint16(A0, I);
45837 case PT_Uint16:
45838 return emitSetThisFieldUint16(A0, I);
45839 case PT_Sint32:
45840 return emitSetThisFieldSint32(A0, I);
45841 case PT_Uint32:
45842 return emitSetThisFieldUint32(A0, I);
45843 case PT_Sint64:
45844 return emitSetThisFieldSint64(A0, I);
45845 case PT_Uint64:
45846 return emitSetThisFieldUint64(A0, I);
45847 case PT_IntAP:
45848 return emitSetThisFieldIntAP(A0, I);
45849 case PT_IntAPS:
45850 return emitSetThisFieldIntAPS(A0, I);
45851 case PT_Bool:
45852 return emitSetThisFieldBool(A0, I);
45853 case PT_FixedPoint:
45854 return emitSetThisFieldFixedPoint(A0, I);
45855 case PT_Ptr:
45856 return emitSetThisFieldPtr(A0, I);
45857 case PT_MemberPtr:
45858 return emitSetThisFieldMemberPtr(A0, I);
45859 case PT_Float:
45860 return emitSetThisFieldFloat(A0, I);
45861 }
45862 llvm_unreachable("invalid enum value");
45863}
45864#endif
45865#ifdef GET_LINK_IMPL
45866bool ByteCodeEmitter::emitSetThisFieldSint8( uint32_t A0, SourceInfo L) {
45867 return emitOp<uint32_t>(OP_SetThisFieldSint8, A0, L);
45868}
45869bool ByteCodeEmitter::emitSetThisFieldUint8( uint32_t A0, SourceInfo L) {
45870 return emitOp<uint32_t>(OP_SetThisFieldUint8, A0, L);
45871}
45872bool ByteCodeEmitter::emitSetThisFieldSint16( uint32_t A0, SourceInfo L) {
45873 return emitOp<uint32_t>(OP_SetThisFieldSint16, A0, L);
45874}
45875bool ByteCodeEmitter::emitSetThisFieldUint16( uint32_t A0, SourceInfo L) {
45876 return emitOp<uint32_t>(OP_SetThisFieldUint16, A0, L);
45877}
45878bool ByteCodeEmitter::emitSetThisFieldSint32( uint32_t A0, SourceInfo L) {
45879 return emitOp<uint32_t>(OP_SetThisFieldSint32, A0, L);
45880}
45881bool ByteCodeEmitter::emitSetThisFieldUint32( uint32_t A0, SourceInfo L) {
45882 return emitOp<uint32_t>(OP_SetThisFieldUint32, A0, L);
45883}
45884bool ByteCodeEmitter::emitSetThisFieldSint64( uint32_t A0, SourceInfo L) {
45885 return emitOp<uint32_t>(OP_SetThisFieldSint64, A0, L);
45886}
45887bool ByteCodeEmitter::emitSetThisFieldUint64( uint32_t A0, SourceInfo L) {
45888 return emitOp<uint32_t>(OP_SetThisFieldUint64, A0, L);
45889}
45890bool ByteCodeEmitter::emitSetThisFieldIntAP( uint32_t A0, SourceInfo L) {
45891 return emitOp<uint32_t>(OP_SetThisFieldIntAP, A0, L);
45892}
45893bool ByteCodeEmitter::emitSetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
45894 return emitOp<uint32_t>(OP_SetThisFieldIntAPS, A0, L);
45895}
45896bool ByteCodeEmitter::emitSetThisFieldBool( uint32_t A0, SourceInfo L) {
45897 return emitOp<uint32_t>(OP_SetThisFieldBool, A0, L);
45898}
45899bool ByteCodeEmitter::emitSetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
45900 return emitOp<uint32_t>(OP_SetThisFieldFixedPoint, A0, L);
45901}
45902bool ByteCodeEmitter::emitSetThisFieldPtr( uint32_t A0, SourceInfo L) {
45903 return emitOp<uint32_t>(OP_SetThisFieldPtr, A0, L);
45904}
45905bool ByteCodeEmitter::emitSetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
45906 return emitOp<uint32_t>(OP_SetThisFieldMemberPtr, A0, L);
45907}
45908bool ByteCodeEmitter::emitSetThisFieldFloat( uint32_t A0, SourceInfo L) {
45909 return emitOp<uint32_t>(OP_SetThisFieldFloat, A0, L);
45910}
45911#endif
45912#ifdef GET_EVAL_IMPL
45913bool EvalEmitter::emitSetThisFieldSint8( uint32_t A0, SourceInfo L) {
45914 if (!isActive()) return true;
45915 CurrentSource = L;
45916 return SetThisField<PT_Sint8>(S, OpPC, A0);
45917}
45918bool EvalEmitter::emitSetThisFieldUint8( uint32_t A0, SourceInfo L) {
45919 if (!isActive()) return true;
45920 CurrentSource = L;
45921 return SetThisField<PT_Uint8>(S, OpPC, A0);
45922}
45923bool EvalEmitter::emitSetThisFieldSint16( uint32_t A0, SourceInfo L) {
45924 if (!isActive()) return true;
45925 CurrentSource = L;
45926 return SetThisField<PT_Sint16>(S, OpPC, A0);
45927}
45928bool EvalEmitter::emitSetThisFieldUint16( uint32_t A0, SourceInfo L) {
45929 if (!isActive()) return true;
45930 CurrentSource = L;
45931 return SetThisField<PT_Uint16>(S, OpPC, A0);
45932}
45933bool EvalEmitter::emitSetThisFieldSint32( uint32_t A0, SourceInfo L) {
45934 if (!isActive()) return true;
45935 CurrentSource = L;
45936 return SetThisField<PT_Sint32>(S, OpPC, A0);
45937}
45938bool EvalEmitter::emitSetThisFieldUint32( uint32_t A0, SourceInfo L) {
45939 if (!isActive()) return true;
45940 CurrentSource = L;
45941 return SetThisField<PT_Uint32>(S, OpPC, A0);
45942}
45943bool EvalEmitter::emitSetThisFieldSint64( uint32_t A0, SourceInfo L) {
45944 if (!isActive()) return true;
45945 CurrentSource = L;
45946 return SetThisField<PT_Sint64>(S, OpPC, A0);
45947}
45948bool EvalEmitter::emitSetThisFieldUint64( uint32_t A0, SourceInfo L) {
45949 if (!isActive()) return true;
45950 CurrentSource = L;
45951 return SetThisField<PT_Uint64>(S, OpPC, A0);
45952}
45953bool EvalEmitter::emitSetThisFieldIntAP( uint32_t A0, SourceInfo L) {
45954 if (!isActive()) return true;
45955 CurrentSource = L;
45956 return SetThisField<PT_IntAP>(S, OpPC, A0);
45957}
45958bool EvalEmitter::emitSetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
45959 if (!isActive()) return true;
45960 CurrentSource = L;
45961 return SetThisField<PT_IntAPS>(S, OpPC, A0);
45962}
45963bool EvalEmitter::emitSetThisFieldBool( uint32_t A0, SourceInfo L) {
45964 if (!isActive()) return true;
45965 CurrentSource = L;
45966 return SetThisField<PT_Bool>(S, OpPC, A0);
45967}
45968bool EvalEmitter::emitSetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
45969 if (!isActive()) return true;
45970 CurrentSource = L;
45971 return SetThisField<PT_FixedPoint>(S, OpPC, A0);
45972}
45973bool EvalEmitter::emitSetThisFieldPtr( uint32_t A0, SourceInfo L) {
45974 if (!isActive()) return true;
45975 CurrentSource = L;
45976 return SetThisField<PT_Ptr>(S, OpPC, A0);
45977}
45978bool EvalEmitter::emitSetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
45979 if (!isActive()) return true;
45980 CurrentSource = L;
45981 return SetThisField<PT_MemberPtr>(S, OpPC, A0);
45982}
45983bool EvalEmitter::emitSetThisFieldFloat( uint32_t A0, SourceInfo L) {
45984 if (!isActive()) return true;
45985 CurrentSource = L;
45986 return SetThisField<PT_Float>(S, OpPC, A0);
45987}
45988#endif
45989#ifdef GET_OPCODE_NAMES
45990OP_ShiftFixedPoint,
45991#endif
45992#ifdef GET_INTERPFN_LIST
45993&Interp_ShiftFixedPoint,
45994#endif
45995#ifdef GET_INTERPFN_DISPATCHERS
45996PRESERVE_NONE
45997static bool Interp_ShiftFixedPoint(InterpState &S, CodePtr &PC) {
45998 {
45999 CodePtr OpPC = PC;
46000 const auto V0 = ReadArg<bool>(S, PC);
46001 if (!ShiftFixedPoint(S, OpPC, V0)) return false;
46002 }
46003#if USE_TAILCALLS
46004 MUSTTAIL return InterpNext(S, PC);
46005#else
46006 return true;
46007#endif
46008}
46009#endif
46010#ifdef GET_DISASM
46011case OP_ShiftFixedPoint:
46012 Text.Op = PrintName("ShiftFixedPoint");
46013 Text.Args.push_back(printArg<bool>(P, PC));
46014 break;
46015#endif
46016#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
46017bool emitShiftFixedPoint( bool , SourceInfo);
46018#endif
46019#ifdef GET_LINK_IMPL
46020bool ByteCodeEmitter::emitShiftFixedPoint( bool A0, SourceInfo L) {
46021 return emitOp<bool>(OP_ShiftFixedPoint, A0, L);
46022}
46023#endif
46024#ifdef GET_EVAL_IMPL
46025bool EvalEmitter::emitShiftFixedPoint( bool A0, SourceInfo L) {
46026 if (!isActive()) return true;
46027 CurrentSource = L;
46028 return ShiftFixedPoint(S, OpPC, A0);
46029}
46030#endif
46031#ifdef GET_OPCODE_NAMES
46032OP_ShlSint8Sint8,
46033OP_ShlSint8Uint8,
46034OP_ShlSint8Sint16,
46035OP_ShlSint8Uint16,
46036OP_ShlSint8Sint32,
46037OP_ShlSint8Uint32,
46038OP_ShlSint8Sint64,
46039OP_ShlSint8Uint64,
46040OP_ShlSint8IntAP,
46041OP_ShlSint8IntAPS,
46042OP_ShlUint8Sint8,
46043OP_ShlUint8Uint8,
46044OP_ShlUint8Sint16,
46045OP_ShlUint8Uint16,
46046OP_ShlUint8Sint32,
46047OP_ShlUint8Uint32,
46048OP_ShlUint8Sint64,
46049OP_ShlUint8Uint64,
46050OP_ShlUint8IntAP,
46051OP_ShlUint8IntAPS,
46052OP_ShlSint16Sint8,
46053OP_ShlSint16Uint8,
46054OP_ShlSint16Sint16,
46055OP_ShlSint16Uint16,
46056OP_ShlSint16Sint32,
46057OP_ShlSint16Uint32,
46058OP_ShlSint16Sint64,
46059OP_ShlSint16Uint64,
46060OP_ShlSint16IntAP,
46061OP_ShlSint16IntAPS,
46062OP_ShlUint16Sint8,
46063OP_ShlUint16Uint8,
46064OP_ShlUint16Sint16,
46065OP_ShlUint16Uint16,
46066OP_ShlUint16Sint32,
46067OP_ShlUint16Uint32,
46068OP_ShlUint16Sint64,
46069OP_ShlUint16Uint64,
46070OP_ShlUint16IntAP,
46071OP_ShlUint16IntAPS,
46072OP_ShlSint32Sint8,
46073OP_ShlSint32Uint8,
46074OP_ShlSint32Sint16,
46075OP_ShlSint32Uint16,
46076OP_ShlSint32Sint32,
46077OP_ShlSint32Uint32,
46078OP_ShlSint32Sint64,
46079OP_ShlSint32Uint64,
46080OP_ShlSint32IntAP,
46081OP_ShlSint32IntAPS,
46082OP_ShlUint32Sint8,
46083OP_ShlUint32Uint8,
46084OP_ShlUint32Sint16,
46085OP_ShlUint32Uint16,
46086OP_ShlUint32Sint32,
46087OP_ShlUint32Uint32,
46088OP_ShlUint32Sint64,
46089OP_ShlUint32Uint64,
46090OP_ShlUint32IntAP,
46091OP_ShlUint32IntAPS,
46092OP_ShlSint64Sint8,
46093OP_ShlSint64Uint8,
46094OP_ShlSint64Sint16,
46095OP_ShlSint64Uint16,
46096OP_ShlSint64Sint32,
46097OP_ShlSint64Uint32,
46098OP_ShlSint64Sint64,
46099OP_ShlSint64Uint64,
46100OP_ShlSint64IntAP,
46101OP_ShlSint64IntAPS,
46102OP_ShlUint64Sint8,
46103OP_ShlUint64Uint8,
46104OP_ShlUint64Sint16,
46105OP_ShlUint64Uint16,
46106OP_ShlUint64Sint32,
46107OP_ShlUint64Uint32,
46108OP_ShlUint64Sint64,
46109OP_ShlUint64Uint64,
46110OP_ShlUint64IntAP,
46111OP_ShlUint64IntAPS,
46112OP_ShlIntAPSint8,
46113OP_ShlIntAPUint8,
46114OP_ShlIntAPSint16,
46115OP_ShlIntAPUint16,
46116OP_ShlIntAPSint32,
46117OP_ShlIntAPUint32,
46118OP_ShlIntAPSint64,
46119OP_ShlIntAPUint64,
46120OP_ShlIntAPIntAP,
46121OP_ShlIntAPIntAPS,
46122OP_ShlIntAPSSint8,
46123OP_ShlIntAPSUint8,
46124OP_ShlIntAPSSint16,
46125OP_ShlIntAPSUint16,
46126OP_ShlIntAPSSint32,
46127OP_ShlIntAPSUint32,
46128OP_ShlIntAPSSint64,
46129OP_ShlIntAPSUint64,
46130OP_ShlIntAPSIntAP,
46131OP_ShlIntAPSIntAPS,
46132#endif
46133#ifdef GET_INTERPFN_LIST
46134&Interp_ShlSint8Sint8,
46135&Interp_ShlSint8Uint8,
46136&Interp_ShlSint8Sint16,
46137&Interp_ShlSint8Uint16,
46138&Interp_ShlSint8Sint32,
46139&Interp_ShlSint8Uint32,
46140&Interp_ShlSint8Sint64,
46141&Interp_ShlSint8Uint64,
46142&Interp_ShlSint8IntAP,
46143&Interp_ShlSint8IntAPS,
46144&Interp_ShlUint8Sint8,
46145&Interp_ShlUint8Uint8,
46146&Interp_ShlUint8Sint16,
46147&Interp_ShlUint8Uint16,
46148&Interp_ShlUint8Sint32,
46149&Interp_ShlUint8Uint32,
46150&Interp_ShlUint8Sint64,
46151&Interp_ShlUint8Uint64,
46152&Interp_ShlUint8IntAP,
46153&Interp_ShlUint8IntAPS,
46154&Interp_ShlSint16Sint8,
46155&Interp_ShlSint16Uint8,
46156&Interp_ShlSint16Sint16,
46157&Interp_ShlSint16Uint16,
46158&Interp_ShlSint16Sint32,
46159&Interp_ShlSint16Uint32,
46160&Interp_ShlSint16Sint64,
46161&Interp_ShlSint16Uint64,
46162&Interp_ShlSint16IntAP,
46163&Interp_ShlSint16IntAPS,
46164&Interp_ShlUint16Sint8,
46165&Interp_ShlUint16Uint8,
46166&Interp_ShlUint16Sint16,
46167&Interp_ShlUint16Uint16,
46168&Interp_ShlUint16Sint32,
46169&Interp_ShlUint16Uint32,
46170&Interp_ShlUint16Sint64,
46171&Interp_ShlUint16Uint64,
46172&Interp_ShlUint16IntAP,
46173&Interp_ShlUint16IntAPS,
46174&Interp_ShlSint32Sint8,
46175&Interp_ShlSint32Uint8,
46176&Interp_ShlSint32Sint16,
46177&Interp_ShlSint32Uint16,
46178&Interp_ShlSint32Sint32,
46179&Interp_ShlSint32Uint32,
46180&Interp_ShlSint32Sint64,
46181&Interp_ShlSint32Uint64,
46182&Interp_ShlSint32IntAP,
46183&Interp_ShlSint32IntAPS,
46184&Interp_ShlUint32Sint8,
46185&Interp_ShlUint32Uint8,
46186&Interp_ShlUint32Sint16,
46187&Interp_ShlUint32Uint16,
46188&Interp_ShlUint32Sint32,
46189&Interp_ShlUint32Uint32,
46190&Interp_ShlUint32Sint64,
46191&Interp_ShlUint32Uint64,
46192&Interp_ShlUint32IntAP,
46193&Interp_ShlUint32IntAPS,
46194&Interp_ShlSint64Sint8,
46195&Interp_ShlSint64Uint8,
46196&Interp_ShlSint64Sint16,
46197&Interp_ShlSint64Uint16,
46198&Interp_ShlSint64Sint32,
46199&Interp_ShlSint64Uint32,
46200&Interp_ShlSint64Sint64,
46201&Interp_ShlSint64Uint64,
46202&Interp_ShlSint64IntAP,
46203&Interp_ShlSint64IntAPS,
46204&Interp_ShlUint64Sint8,
46205&Interp_ShlUint64Uint8,
46206&Interp_ShlUint64Sint16,
46207&Interp_ShlUint64Uint16,
46208&Interp_ShlUint64Sint32,
46209&Interp_ShlUint64Uint32,
46210&Interp_ShlUint64Sint64,
46211&Interp_ShlUint64Uint64,
46212&Interp_ShlUint64IntAP,
46213&Interp_ShlUint64IntAPS,
46214&Interp_ShlIntAPSint8,
46215&Interp_ShlIntAPUint8,
46216&Interp_ShlIntAPSint16,
46217&Interp_ShlIntAPUint16,
46218&Interp_ShlIntAPSint32,
46219&Interp_ShlIntAPUint32,
46220&Interp_ShlIntAPSint64,
46221&Interp_ShlIntAPUint64,
46222&Interp_ShlIntAPIntAP,
46223&Interp_ShlIntAPIntAPS,
46224&Interp_ShlIntAPSSint8,
46225&Interp_ShlIntAPSUint8,
46226&Interp_ShlIntAPSSint16,
46227&Interp_ShlIntAPSUint16,
46228&Interp_ShlIntAPSSint32,
46229&Interp_ShlIntAPSUint32,
46230&Interp_ShlIntAPSSint64,
46231&Interp_ShlIntAPSUint64,
46232&Interp_ShlIntAPSIntAP,
46233&Interp_ShlIntAPSIntAPS,
46234#endif
46235#ifdef GET_INTERPFN_DISPATCHERS
46236PRESERVE_NONE
46237static bool Interp_ShlSint8Sint8(InterpState &S, CodePtr &PC) {
46238 if (!Shl<PT_Sint8, PT_Sint8>(S, PC)) return false;
46239#if USE_TAILCALLS
46240 MUSTTAIL return InterpNext(S, PC);
46241#else
46242 return true;
46243#endif
46244}
46245PRESERVE_NONE
46246static bool Interp_ShlSint8Uint8(InterpState &S, CodePtr &PC) {
46247 if (!Shl<PT_Sint8, PT_Uint8>(S, PC)) return false;
46248#if USE_TAILCALLS
46249 MUSTTAIL return InterpNext(S, PC);
46250#else
46251 return true;
46252#endif
46253}
46254PRESERVE_NONE
46255static bool Interp_ShlSint8Sint16(InterpState &S, CodePtr &PC) {
46256 if (!Shl<PT_Sint8, PT_Sint16>(S, PC)) return false;
46257#if USE_TAILCALLS
46258 MUSTTAIL return InterpNext(S, PC);
46259#else
46260 return true;
46261#endif
46262}
46263PRESERVE_NONE
46264static bool Interp_ShlSint8Uint16(InterpState &S, CodePtr &PC) {
46265 if (!Shl<PT_Sint8, PT_Uint16>(S, PC)) return false;
46266#if USE_TAILCALLS
46267 MUSTTAIL return InterpNext(S, PC);
46268#else
46269 return true;
46270#endif
46271}
46272PRESERVE_NONE
46273static bool Interp_ShlSint8Sint32(InterpState &S, CodePtr &PC) {
46274 if (!Shl<PT_Sint8, PT_Sint32>(S, PC)) return false;
46275#if USE_TAILCALLS
46276 MUSTTAIL return InterpNext(S, PC);
46277#else
46278 return true;
46279#endif
46280}
46281PRESERVE_NONE
46282static bool Interp_ShlSint8Uint32(InterpState &S, CodePtr &PC) {
46283 if (!Shl<PT_Sint8, PT_Uint32>(S, PC)) return false;
46284#if USE_TAILCALLS
46285 MUSTTAIL return InterpNext(S, PC);
46286#else
46287 return true;
46288#endif
46289}
46290PRESERVE_NONE
46291static bool Interp_ShlSint8Sint64(InterpState &S, CodePtr &PC) {
46292 if (!Shl<PT_Sint8, PT_Sint64>(S, PC)) return false;
46293#if USE_TAILCALLS
46294 MUSTTAIL return InterpNext(S, PC);
46295#else
46296 return true;
46297#endif
46298}
46299PRESERVE_NONE
46300static bool Interp_ShlSint8Uint64(InterpState &S, CodePtr &PC) {
46301 if (!Shl<PT_Sint8, PT_Uint64>(S, PC)) return false;
46302#if USE_TAILCALLS
46303 MUSTTAIL return InterpNext(S, PC);
46304#else
46305 return true;
46306#endif
46307}
46308PRESERVE_NONE
46309static bool Interp_ShlSint8IntAP(InterpState &S, CodePtr &PC) {
46310 if (!Shl<PT_Sint8, PT_IntAP>(S, PC)) return false;
46311#if USE_TAILCALLS
46312 MUSTTAIL return InterpNext(S, PC);
46313#else
46314 return true;
46315#endif
46316}
46317PRESERVE_NONE
46318static bool Interp_ShlSint8IntAPS(InterpState &S, CodePtr &PC) {
46319 if (!Shl<PT_Sint8, PT_IntAPS>(S, PC)) return false;
46320#if USE_TAILCALLS
46321 MUSTTAIL return InterpNext(S, PC);
46322#else
46323 return true;
46324#endif
46325}
46326PRESERVE_NONE
46327static bool Interp_ShlUint8Sint8(InterpState &S, CodePtr &PC) {
46328 if (!Shl<PT_Uint8, PT_Sint8>(S, PC)) return false;
46329#if USE_TAILCALLS
46330 MUSTTAIL return InterpNext(S, PC);
46331#else
46332 return true;
46333#endif
46334}
46335PRESERVE_NONE
46336static bool Interp_ShlUint8Uint8(InterpState &S, CodePtr &PC) {
46337 if (!Shl<PT_Uint8, PT_Uint8>(S, PC)) return false;
46338#if USE_TAILCALLS
46339 MUSTTAIL return InterpNext(S, PC);
46340#else
46341 return true;
46342#endif
46343}
46344PRESERVE_NONE
46345static bool Interp_ShlUint8Sint16(InterpState &S, CodePtr &PC) {
46346 if (!Shl<PT_Uint8, PT_Sint16>(S, PC)) return false;
46347#if USE_TAILCALLS
46348 MUSTTAIL return InterpNext(S, PC);
46349#else
46350 return true;
46351#endif
46352}
46353PRESERVE_NONE
46354static bool Interp_ShlUint8Uint16(InterpState &S, CodePtr &PC) {
46355 if (!Shl<PT_Uint8, PT_Uint16>(S, PC)) return false;
46356#if USE_TAILCALLS
46357 MUSTTAIL return InterpNext(S, PC);
46358#else
46359 return true;
46360#endif
46361}
46362PRESERVE_NONE
46363static bool Interp_ShlUint8Sint32(InterpState &S, CodePtr &PC) {
46364 if (!Shl<PT_Uint8, PT_Sint32>(S, PC)) return false;
46365#if USE_TAILCALLS
46366 MUSTTAIL return InterpNext(S, PC);
46367#else
46368 return true;
46369#endif
46370}
46371PRESERVE_NONE
46372static bool Interp_ShlUint8Uint32(InterpState &S, CodePtr &PC) {
46373 if (!Shl<PT_Uint8, PT_Uint32>(S, PC)) return false;
46374#if USE_TAILCALLS
46375 MUSTTAIL return InterpNext(S, PC);
46376#else
46377 return true;
46378#endif
46379}
46380PRESERVE_NONE
46381static bool Interp_ShlUint8Sint64(InterpState &S, CodePtr &PC) {
46382 if (!Shl<PT_Uint8, PT_Sint64>(S, PC)) return false;
46383#if USE_TAILCALLS
46384 MUSTTAIL return InterpNext(S, PC);
46385#else
46386 return true;
46387#endif
46388}
46389PRESERVE_NONE
46390static bool Interp_ShlUint8Uint64(InterpState &S, CodePtr &PC) {
46391 if (!Shl<PT_Uint8, PT_Uint64>(S, PC)) return false;
46392#if USE_TAILCALLS
46393 MUSTTAIL return InterpNext(S, PC);
46394#else
46395 return true;
46396#endif
46397}
46398PRESERVE_NONE
46399static bool Interp_ShlUint8IntAP(InterpState &S, CodePtr &PC) {
46400 if (!Shl<PT_Uint8, PT_IntAP>(S, PC)) return false;
46401#if USE_TAILCALLS
46402 MUSTTAIL return InterpNext(S, PC);
46403#else
46404 return true;
46405#endif
46406}
46407PRESERVE_NONE
46408static bool Interp_ShlUint8IntAPS(InterpState &S, CodePtr &PC) {
46409 if (!Shl<PT_Uint8, PT_IntAPS>(S, PC)) return false;
46410#if USE_TAILCALLS
46411 MUSTTAIL return InterpNext(S, PC);
46412#else
46413 return true;
46414#endif
46415}
46416PRESERVE_NONE
46417static bool Interp_ShlSint16Sint8(InterpState &S, CodePtr &PC) {
46418 if (!Shl<PT_Sint16, PT_Sint8>(S, PC)) return false;
46419#if USE_TAILCALLS
46420 MUSTTAIL return InterpNext(S, PC);
46421#else
46422 return true;
46423#endif
46424}
46425PRESERVE_NONE
46426static bool Interp_ShlSint16Uint8(InterpState &S, CodePtr &PC) {
46427 if (!Shl<PT_Sint16, PT_Uint8>(S, PC)) return false;
46428#if USE_TAILCALLS
46429 MUSTTAIL return InterpNext(S, PC);
46430#else
46431 return true;
46432#endif
46433}
46434PRESERVE_NONE
46435static bool Interp_ShlSint16Sint16(InterpState &S, CodePtr &PC) {
46436 if (!Shl<PT_Sint16, PT_Sint16>(S, PC)) return false;
46437#if USE_TAILCALLS
46438 MUSTTAIL return InterpNext(S, PC);
46439#else
46440 return true;
46441#endif
46442}
46443PRESERVE_NONE
46444static bool Interp_ShlSint16Uint16(InterpState &S, CodePtr &PC) {
46445 if (!Shl<PT_Sint16, PT_Uint16>(S, PC)) return false;
46446#if USE_TAILCALLS
46447 MUSTTAIL return InterpNext(S, PC);
46448#else
46449 return true;
46450#endif
46451}
46452PRESERVE_NONE
46453static bool Interp_ShlSint16Sint32(InterpState &S, CodePtr &PC) {
46454 if (!Shl<PT_Sint16, PT_Sint32>(S, PC)) return false;
46455#if USE_TAILCALLS
46456 MUSTTAIL return InterpNext(S, PC);
46457#else
46458 return true;
46459#endif
46460}
46461PRESERVE_NONE
46462static bool Interp_ShlSint16Uint32(InterpState &S, CodePtr &PC) {
46463 if (!Shl<PT_Sint16, PT_Uint32>(S, PC)) return false;
46464#if USE_TAILCALLS
46465 MUSTTAIL return InterpNext(S, PC);
46466#else
46467 return true;
46468#endif
46469}
46470PRESERVE_NONE
46471static bool Interp_ShlSint16Sint64(InterpState &S, CodePtr &PC) {
46472 if (!Shl<PT_Sint16, PT_Sint64>(S, PC)) return false;
46473#if USE_TAILCALLS
46474 MUSTTAIL return InterpNext(S, PC);
46475#else
46476 return true;
46477#endif
46478}
46479PRESERVE_NONE
46480static bool Interp_ShlSint16Uint64(InterpState &S, CodePtr &PC) {
46481 if (!Shl<PT_Sint16, PT_Uint64>(S, PC)) return false;
46482#if USE_TAILCALLS
46483 MUSTTAIL return InterpNext(S, PC);
46484#else
46485 return true;
46486#endif
46487}
46488PRESERVE_NONE
46489static bool Interp_ShlSint16IntAP(InterpState &S, CodePtr &PC) {
46490 if (!Shl<PT_Sint16, PT_IntAP>(S, PC)) return false;
46491#if USE_TAILCALLS
46492 MUSTTAIL return InterpNext(S, PC);
46493#else
46494 return true;
46495#endif
46496}
46497PRESERVE_NONE
46498static bool Interp_ShlSint16IntAPS(InterpState &S, CodePtr &PC) {
46499 if (!Shl<PT_Sint16, PT_IntAPS>(S, PC)) return false;
46500#if USE_TAILCALLS
46501 MUSTTAIL return InterpNext(S, PC);
46502#else
46503 return true;
46504#endif
46505}
46506PRESERVE_NONE
46507static bool Interp_ShlUint16Sint8(InterpState &S, CodePtr &PC) {
46508 if (!Shl<PT_Uint16, PT_Sint8>(S, PC)) return false;
46509#if USE_TAILCALLS
46510 MUSTTAIL return InterpNext(S, PC);
46511#else
46512 return true;
46513#endif
46514}
46515PRESERVE_NONE
46516static bool Interp_ShlUint16Uint8(InterpState &S, CodePtr &PC) {
46517 if (!Shl<PT_Uint16, PT_Uint8>(S, PC)) return false;
46518#if USE_TAILCALLS
46519 MUSTTAIL return InterpNext(S, PC);
46520#else
46521 return true;
46522#endif
46523}
46524PRESERVE_NONE
46525static bool Interp_ShlUint16Sint16(InterpState &S, CodePtr &PC) {
46526 if (!Shl<PT_Uint16, PT_Sint16>(S, PC)) return false;
46527#if USE_TAILCALLS
46528 MUSTTAIL return InterpNext(S, PC);
46529#else
46530 return true;
46531#endif
46532}
46533PRESERVE_NONE
46534static bool Interp_ShlUint16Uint16(InterpState &S, CodePtr &PC) {
46535 if (!Shl<PT_Uint16, PT_Uint16>(S, PC)) return false;
46536#if USE_TAILCALLS
46537 MUSTTAIL return InterpNext(S, PC);
46538#else
46539 return true;
46540#endif
46541}
46542PRESERVE_NONE
46543static bool Interp_ShlUint16Sint32(InterpState &S, CodePtr &PC) {
46544 if (!Shl<PT_Uint16, PT_Sint32>(S, PC)) return false;
46545#if USE_TAILCALLS
46546 MUSTTAIL return InterpNext(S, PC);
46547#else
46548 return true;
46549#endif
46550}
46551PRESERVE_NONE
46552static bool Interp_ShlUint16Uint32(InterpState &S, CodePtr &PC) {
46553 if (!Shl<PT_Uint16, PT_Uint32>(S, PC)) return false;
46554#if USE_TAILCALLS
46555 MUSTTAIL return InterpNext(S, PC);
46556#else
46557 return true;
46558#endif
46559}
46560PRESERVE_NONE
46561static bool Interp_ShlUint16Sint64(InterpState &S, CodePtr &PC) {
46562 if (!Shl<PT_Uint16, PT_Sint64>(S, PC)) return false;
46563#if USE_TAILCALLS
46564 MUSTTAIL return InterpNext(S, PC);
46565#else
46566 return true;
46567#endif
46568}
46569PRESERVE_NONE
46570static bool Interp_ShlUint16Uint64(InterpState &S, CodePtr &PC) {
46571 if (!Shl<PT_Uint16, PT_Uint64>(S, PC)) return false;
46572#if USE_TAILCALLS
46573 MUSTTAIL return InterpNext(S, PC);
46574#else
46575 return true;
46576#endif
46577}
46578PRESERVE_NONE
46579static bool Interp_ShlUint16IntAP(InterpState &S, CodePtr &PC) {
46580 if (!Shl<PT_Uint16, PT_IntAP>(S, PC)) return false;
46581#if USE_TAILCALLS
46582 MUSTTAIL return InterpNext(S, PC);
46583#else
46584 return true;
46585#endif
46586}
46587PRESERVE_NONE
46588static bool Interp_ShlUint16IntAPS(InterpState &S, CodePtr &PC) {
46589 if (!Shl<PT_Uint16, PT_IntAPS>(S, PC)) return false;
46590#if USE_TAILCALLS
46591 MUSTTAIL return InterpNext(S, PC);
46592#else
46593 return true;
46594#endif
46595}
46596PRESERVE_NONE
46597static bool Interp_ShlSint32Sint8(InterpState &S, CodePtr &PC) {
46598 if (!Shl<PT_Sint32, PT_Sint8>(S, PC)) return false;
46599#if USE_TAILCALLS
46600 MUSTTAIL return InterpNext(S, PC);
46601#else
46602 return true;
46603#endif
46604}
46605PRESERVE_NONE
46606static bool Interp_ShlSint32Uint8(InterpState &S, CodePtr &PC) {
46607 if (!Shl<PT_Sint32, PT_Uint8>(S, PC)) return false;
46608#if USE_TAILCALLS
46609 MUSTTAIL return InterpNext(S, PC);
46610#else
46611 return true;
46612#endif
46613}
46614PRESERVE_NONE
46615static bool Interp_ShlSint32Sint16(InterpState &S, CodePtr &PC) {
46616 if (!Shl<PT_Sint32, PT_Sint16>(S, PC)) return false;
46617#if USE_TAILCALLS
46618 MUSTTAIL return InterpNext(S, PC);
46619#else
46620 return true;
46621#endif
46622}
46623PRESERVE_NONE
46624static bool Interp_ShlSint32Uint16(InterpState &S, CodePtr &PC) {
46625 if (!Shl<PT_Sint32, PT_Uint16>(S, PC)) return false;
46626#if USE_TAILCALLS
46627 MUSTTAIL return InterpNext(S, PC);
46628#else
46629 return true;
46630#endif
46631}
46632PRESERVE_NONE
46633static bool Interp_ShlSint32Sint32(InterpState &S, CodePtr &PC) {
46634 if (!Shl<PT_Sint32, PT_Sint32>(S, PC)) return false;
46635#if USE_TAILCALLS
46636 MUSTTAIL return InterpNext(S, PC);
46637#else
46638 return true;
46639#endif
46640}
46641PRESERVE_NONE
46642static bool Interp_ShlSint32Uint32(InterpState &S, CodePtr &PC) {
46643 if (!Shl<PT_Sint32, PT_Uint32>(S, PC)) return false;
46644#if USE_TAILCALLS
46645 MUSTTAIL return InterpNext(S, PC);
46646#else
46647 return true;
46648#endif
46649}
46650PRESERVE_NONE
46651static bool Interp_ShlSint32Sint64(InterpState &S, CodePtr &PC) {
46652 if (!Shl<PT_Sint32, PT_Sint64>(S, PC)) return false;
46653#if USE_TAILCALLS
46654 MUSTTAIL return InterpNext(S, PC);
46655#else
46656 return true;
46657#endif
46658}
46659PRESERVE_NONE
46660static bool Interp_ShlSint32Uint64(InterpState &S, CodePtr &PC) {
46661 if (!Shl<PT_Sint32, PT_Uint64>(S, PC)) return false;
46662#if USE_TAILCALLS
46663 MUSTTAIL return InterpNext(S, PC);
46664#else
46665 return true;
46666#endif
46667}
46668PRESERVE_NONE
46669static bool Interp_ShlSint32IntAP(InterpState &S, CodePtr &PC) {
46670 if (!Shl<PT_Sint32, PT_IntAP>(S, PC)) return false;
46671#if USE_TAILCALLS
46672 MUSTTAIL return InterpNext(S, PC);
46673#else
46674 return true;
46675#endif
46676}
46677PRESERVE_NONE
46678static bool Interp_ShlSint32IntAPS(InterpState &S, CodePtr &PC) {
46679 if (!Shl<PT_Sint32, PT_IntAPS>(S, PC)) return false;
46680#if USE_TAILCALLS
46681 MUSTTAIL return InterpNext(S, PC);
46682#else
46683 return true;
46684#endif
46685}
46686PRESERVE_NONE
46687static bool Interp_ShlUint32Sint8(InterpState &S, CodePtr &PC) {
46688 if (!Shl<PT_Uint32, PT_Sint8>(S, PC)) return false;
46689#if USE_TAILCALLS
46690 MUSTTAIL return InterpNext(S, PC);
46691#else
46692 return true;
46693#endif
46694}
46695PRESERVE_NONE
46696static bool Interp_ShlUint32Uint8(InterpState &S, CodePtr &PC) {
46697 if (!Shl<PT_Uint32, PT_Uint8>(S, PC)) return false;
46698#if USE_TAILCALLS
46699 MUSTTAIL return InterpNext(S, PC);
46700#else
46701 return true;
46702#endif
46703}
46704PRESERVE_NONE
46705static bool Interp_ShlUint32Sint16(InterpState &S, CodePtr &PC) {
46706 if (!Shl<PT_Uint32, PT_Sint16>(S, PC)) return false;
46707#if USE_TAILCALLS
46708 MUSTTAIL return InterpNext(S, PC);
46709#else
46710 return true;
46711#endif
46712}
46713PRESERVE_NONE
46714static bool Interp_ShlUint32Uint16(InterpState &S, CodePtr &PC) {
46715 if (!Shl<PT_Uint32, PT_Uint16>(S, PC)) return false;
46716#if USE_TAILCALLS
46717 MUSTTAIL return InterpNext(S, PC);
46718#else
46719 return true;
46720#endif
46721}
46722PRESERVE_NONE
46723static bool Interp_ShlUint32Sint32(InterpState &S, CodePtr &PC) {
46724 if (!Shl<PT_Uint32, PT_Sint32>(S, PC)) return false;
46725#if USE_TAILCALLS
46726 MUSTTAIL return InterpNext(S, PC);
46727#else
46728 return true;
46729#endif
46730}
46731PRESERVE_NONE
46732static bool Interp_ShlUint32Uint32(InterpState &S, CodePtr &PC) {
46733 if (!Shl<PT_Uint32, PT_Uint32>(S, PC)) return false;
46734#if USE_TAILCALLS
46735 MUSTTAIL return InterpNext(S, PC);
46736#else
46737 return true;
46738#endif
46739}
46740PRESERVE_NONE
46741static bool Interp_ShlUint32Sint64(InterpState &S, CodePtr &PC) {
46742 if (!Shl<PT_Uint32, PT_Sint64>(S, PC)) return false;
46743#if USE_TAILCALLS
46744 MUSTTAIL return InterpNext(S, PC);
46745#else
46746 return true;
46747#endif
46748}
46749PRESERVE_NONE
46750static bool Interp_ShlUint32Uint64(InterpState &S, CodePtr &PC) {
46751 if (!Shl<PT_Uint32, PT_Uint64>(S, PC)) return false;
46752#if USE_TAILCALLS
46753 MUSTTAIL return InterpNext(S, PC);
46754#else
46755 return true;
46756#endif
46757}
46758PRESERVE_NONE
46759static bool Interp_ShlUint32IntAP(InterpState &S, CodePtr &PC) {
46760 if (!Shl<PT_Uint32, PT_IntAP>(S, PC)) return false;
46761#if USE_TAILCALLS
46762 MUSTTAIL return InterpNext(S, PC);
46763#else
46764 return true;
46765#endif
46766}
46767PRESERVE_NONE
46768static bool Interp_ShlUint32IntAPS(InterpState &S, CodePtr &PC) {
46769 if (!Shl<PT_Uint32, PT_IntAPS>(S, PC)) return false;
46770#if USE_TAILCALLS
46771 MUSTTAIL return InterpNext(S, PC);
46772#else
46773 return true;
46774#endif
46775}
46776PRESERVE_NONE
46777static bool Interp_ShlSint64Sint8(InterpState &S, CodePtr &PC) {
46778 if (!Shl<PT_Sint64, PT_Sint8>(S, PC)) return false;
46779#if USE_TAILCALLS
46780 MUSTTAIL return InterpNext(S, PC);
46781#else
46782 return true;
46783#endif
46784}
46785PRESERVE_NONE
46786static bool Interp_ShlSint64Uint8(InterpState &S, CodePtr &PC) {
46787 if (!Shl<PT_Sint64, PT_Uint8>(S, PC)) return false;
46788#if USE_TAILCALLS
46789 MUSTTAIL return InterpNext(S, PC);
46790#else
46791 return true;
46792#endif
46793}
46794PRESERVE_NONE
46795static bool Interp_ShlSint64Sint16(InterpState &S, CodePtr &PC) {
46796 if (!Shl<PT_Sint64, PT_Sint16>(S, PC)) return false;
46797#if USE_TAILCALLS
46798 MUSTTAIL return InterpNext(S, PC);
46799#else
46800 return true;
46801#endif
46802}
46803PRESERVE_NONE
46804static bool Interp_ShlSint64Uint16(InterpState &S, CodePtr &PC) {
46805 if (!Shl<PT_Sint64, PT_Uint16>(S, PC)) return false;
46806#if USE_TAILCALLS
46807 MUSTTAIL return InterpNext(S, PC);
46808#else
46809 return true;
46810#endif
46811}
46812PRESERVE_NONE
46813static bool Interp_ShlSint64Sint32(InterpState &S, CodePtr &PC) {
46814 if (!Shl<PT_Sint64, PT_Sint32>(S, PC)) return false;
46815#if USE_TAILCALLS
46816 MUSTTAIL return InterpNext(S, PC);
46817#else
46818 return true;
46819#endif
46820}
46821PRESERVE_NONE
46822static bool Interp_ShlSint64Uint32(InterpState &S, CodePtr &PC) {
46823 if (!Shl<PT_Sint64, PT_Uint32>(S, PC)) return false;
46824#if USE_TAILCALLS
46825 MUSTTAIL return InterpNext(S, PC);
46826#else
46827 return true;
46828#endif
46829}
46830PRESERVE_NONE
46831static bool Interp_ShlSint64Sint64(InterpState &S, CodePtr &PC) {
46832 if (!Shl<PT_Sint64, PT_Sint64>(S, PC)) return false;
46833#if USE_TAILCALLS
46834 MUSTTAIL return InterpNext(S, PC);
46835#else
46836 return true;
46837#endif
46838}
46839PRESERVE_NONE
46840static bool Interp_ShlSint64Uint64(InterpState &S, CodePtr &PC) {
46841 if (!Shl<PT_Sint64, PT_Uint64>(S, PC)) return false;
46842#if USE_TAILCALLS
46843 MUSTTAIL return InterpNext(S, PC);
46844#else
46845 return true;
46846#endif
46847}
46848PRESERVE_NONE
46849static bool Interp_ShlSint64IntAP(InterpState &S, CodePtr &PC) {
46850 if (!Shl<PT_Sint64, PT_IntAP>(S, PC)) return false;
46851#if USE_TAILCALLS
46852 MUSTTAIL return InterpNext(S, PC);
46853#else
46854 return true;
46855#endif
46856}
46857PRESERVE_NONE
46858static bool Interp_ShlSint64IntAPS(InterpState &S, CodePtr &PC) {
46859 if (!Shl<PT_Sint64, PT_IntAPS>(S, PC)) return false;
46860#if USE_TAILCALLS
46861 MUSTTAIL return InterpNext(S, PC);
46862#else
46863 return true;
46864#endif
46865}
46866PRESERVE_NONE
46867static bool Interp_ShlUint64Sint8(InterpState &S, CodePtr &PC) {
46868 if (!Shl<PT_Uint64, PT_Sint8>(S, PC)) return false;
46869#if USE_TAILCALLS
46870 MUSTTAIL return InterpNext(S, PC);
46871#else
46872 return true;
46873#endif
46874}
46875PRESERVE_NONE
46876static bool Interp_ShlUint64Uint8(InterpState &S, CodePtr &PC) {
46877 if (!Shl<PT_Uint64, PT_Uint8>(S, PC)) return false;
46878#if USE_TAILCALLS
46879 MUSTTAIL return InterpNext(S, PC);
46880#else
46881 return true;
46882#endif
46883}
46884PRESERVE_NONE
46885static bool Interp_ShlUint64Sint16(InterpState &S, CodePtr &PC) {
46886 if (!Shl<PT_Uint64, PT_Sint16>(S, PC)) return false;
46887#if USE_TAILCALLS
46888 MUSTTAIL return InterpNext(S, PC);
46889#else
46890 return true;
46891#endif
46892}
46893PRESERVE_NONE
46894static bool Interp_ShlUint64Uint16(InterpState &S, CodePtr &PC) {
46895 if (!Shl<PT_Uint64, PT_Uint16>(S, PC)) return false;
46896#if USE_TAILCALLS
46897 MUSTTAIL return InterpNext(S, PC);
46898#else
46899 return true;
46900#endif
46901}
46902PRESERVE_NONE
46903static bool Interp_ShlUint64Sint32(InterpState &S, CodePtr &PC) {
46904 if (!Shl<PT_Uint64, PT_Sint32>(S, PC)) return false;
46905#if USE_TAILCALLS
46906 MUSTTAIL return InterpNext(S, PC);
46907#else
46908 return true;
46909#endif
46910}
46911PRESERVE_NONE
46912static bool Interp_ShlUint64Uint32(InterpState &S, CodePtr &PC) {
46913 if (!Shl<PT_Uint64, PT_Uint32>(S, PC)) return false;
46914#if USE_TAILCALLS
46915 MUSTTAIL return InterpNext(S, PC);
46916#else
46917 return true;
46918#endif
46919}
46920PRESERVE_NONE
46921static bool Interp_ShlUint64Sint64(InterpState &S, CodePtr &PC) {
46922 if (!Shl<PT_Uint64, PT_Sint64>(S, PC)) return false;
46923#if USE_TAILCALLS
46924 MUSTTAIL return InterpNext(S, PC);
46925#else
46926 return true;
46927#endif
46928}
46929PRESERVE_NONE
46930static bool Interp_ShlUint64Uint64(InterpState &S, CodePtr &PC) {
46931 if (!Shl<PT_Uint64, PT_Uint64>(S, PC)) return false;
46932#if USE_TAILCALLS
46933 MUSTTAIL return InterpNext(S, PC);
46934#else
46935 return true;
46936#endif
46937}
46938PRESERVE_NONE
46939static bool Interp_ShlUint64IntAP(InterpState &S, CodePtr &PC) {
46940 if (!Shl<PT_Uint64, PT_IntAP>(S, PC)) return false;
46941#if USE_TAILCALLS
46942 MUSTTAIL return InterpNext(S, PC);
46943#else
46944 return true;
46945#endif
46946}
46947PRESERVE_NONE
46948static bool Interp_ShlUint64IntAPS(InterpState &S, CodePtr &PC) {
46949 if (!Shl<PT_Uint64, PT_IntAPS>(S, PC)) return false;
46950#if USE_TAILCALLS
46951 MUSTTAIL return InterpNext(S, PC);
46952#else
46953 return true;
46954#endif
46955}
46956PRESERVE_NONE
46957static bool Interp_ShlIntAPSint8(InterpState &S, CodePtr &PC) {
46958 if (!Shl<PT_IntAP, PT_Sint8>(S, PC)) return false;
46959#if USE_TAILCALLS
46960 MUSTTAIL return InterpNext(S, PC);
46961#else
46962 return true;
46963#endif
46964}
46965PRESERVE_NONE
46966static bool Interp_ShlIntAPUint8(InterpState &S, CodePtr &PC) {
46967 if (!Shl<PT_IntAP, PT_Uint8>(S, PC)) return false;
46968#if USE_TAILCALLS
46969 MUSTTAIL return InterpNext(S, PC);
46970#else
46971 return true;
46972#endif
46973}
46974PRESERVE_NONE
46975static bool Interp_ShlIntAPSint16(InterpState &S, CodePtr &PC) {
46976 if (!Shl<PT_IntAP, PT_Sint16>(S, PC)) return false;
46977#if USE_TAILCALLS
46978 MUSTTAIL return InterpNext(S, PC);
46979#else
46980 return true;
46981#endif
46982}
46983PRESERVE_NONE
46984static bool Interp_ShlIntAPUint16(InterpState &S, CodePtr &PC) {
46985 if (!Shl<PT_IntAP, PT_Uint16>(S, PC)) return false;
46986#if USE_TAILCALLS
46987 MUSTTAIL return InterpNext(S, PC);
46988#else
46989 return true;
46990#endif
46991}
46992PRESERVE_NONE
46993static bool Interp_ShlIntAPSint32(InterpState &S, CodePtr &PC) {
46994 if (!Shl<PT_IntAP, PT_Sint32>(S, PC)) return false;
46995#if USE_TAILCALLS
46996 MUSTTAIL return InterpNext(S, PC);
46997#else
46998 return true;
46999#endif
47000}
47001PRESERVE_NONE
47002static bool Interp_ShlIntAPUint32(InterpState &S, CodePtr &PC) {
47003 if (!Shl<PT_IntAP, PT_Uint32>(S, PC)) return false;
47004#if USE_TAILCALLS
47005 MUSTTAIL return InterpNext(S, PC);
47006#else
47007 return true;
47008#endif
47009}
47010PRESERVE_NONE
47011static bool Interp_ShlIntAPSint64(InterpState &S, CodePtr &PC) {
47012 if (!Shl<PT_IntAP, PT_Sint64>(S, PC)) return false;
47013#if USE_TAILCALLS
47014 MUSTTAIL return InterpNext(S, PC);
47015#else
47016 return true;
47017#endif
47018}
47019PRESERVE_NONE
47020static bool Interp_ShlIntAPUint64(InterpState &S, CodePtr &PC) {
47021 if (!Shl<PT_IntAP, PT_Uint64>(S, PC)) return false;
47022#if USE_TAILCALLS
47023 MUSTTAIL return InterpNext(S, PC);
47024#else
47025 return true;
47026#endif
47027}
47028PRESERVE_NONE
47029static bool Interp_ShlIntAPIntAP(InterpState &S, CodePtr &PC) {
47030 if (!Shl<PT_IntAP, PT_IntAP>(S, PC)) return false;
47031#if USE_TAILCALLS
47032 MUSTTAIL return InterpNext(S, PC);
47033#else
47034 return true;
47035#endif
47036}
47037PRESERVE_NONE
47038static bool Interp_ShlIntAPIntAPS(InterpState &S, CodePtr &PC) {
47039 if (!Shl<PT_IntAP, PT_IntAPS>(S, PC)) return false;
47040#if USE_TAILCALLS
47041 MUSTTAIL return InterpNext(S, PC);
47042#else
47043 return true;
47044#endif
47045}
47046PRESERVE_NONE
47047static bool Interp_ShlIntAPSSint8(InterpState &S, CodePtr &PC) {
47048 if (!Shl<PT_IntAPS, PT_Sint8>(S, PC)) return false;
47049#if USE_TAILCALLS
47050 MUSTTAIL return InterpNext(S, PC);
47051#else
47052 return true;
47053#endif
47054}
47055PRESERVE_NONE
47056static bool Interp_ShlIntAPSUint8(InterpState &S, CodePtr &PC) {
47057 if (!Shl<PT_IntAPS, PT_Uint8>(S, PC)) return false;
47058#if USE_TAILCALLS
47059 MUSTTAIL return InterpNext(S, PC);
47060#else
47061 return true;
47062#endif
47063}
47064PRESERVE_NONE
47065static bool Interp_ShlIntAPSSint16(InterpState &S, CodePtr &PC) {
47066 if (!Shl<PT_IntAPS, PT_Sint16>(S, PC)) return false;
47067#if USE_TAILCALLS
47068 MUSTTAIL return InterpNext(S, PC);
47069#else
47070 return true;
47071#endif
47072}
47073PRESERVE_NONE
47074static bool Interp_ShlIntAPSUint16(InterpState &S, CodePtr &PC) {
47075 if (!Shl<PT_IntAPS, PT_Uint16>(S, PC)) return false;
47076#if USE_TAILCALLS
47077 MUSTTAIL return InterpNext(S, PC);
47078#else
47079 return true;
47080#endif
47081}
47082PRESERVE_NONE
47083static bool Interp_ShlIntAPSSint32(InterpState &S, CodePtr &PC) {
47084 if (!Shl<PT_IntAPS, PT_Sint32>(S, PC)) return false;
47085#if USE_TAILCALLS
47086 MUSTTAIL return InterpNext(S, PC);
47087#else
47088 return true;
47089#endif
47090}
47091PRESERVE_NONE
47092static bool Interp_ShlIntAPSUint32(InterpState &S, CodePtr &PC) {
47093 if (!Shl<PT_IntAPS, PT_Uint32>(S, PC)) return false;
47094#if USE_TAILCALLS
47095 MUSTTAIL return InterpNext(S, PC);
47096#else
47097 return true;
47098#endif
47099}
47100PRESERVE_NONE
47101static bool Interp_ShlIntAPSSint64(InterpState &S, CodePtr &PC) {
47102 if (!Shl<PT_IntAPS, PT_Sint64>(S, PC)) return false;
47103#if USE_TAILCALLS
47104 MUSTTAIL return InterpNext(S, PC);
47105#else
47106 return true;
47107#endif
47108}
47109PRESERVE_NONE
47110static bool Interp_ShlIntAPSUint64(InterpState &S, CodePtr &PC) {
47111 if (!Shl<PT_IntAPS, PT_Uint64>(S, PC)) return false;
47112#if USE_TAILCALLS
47113 MUSTTAIL return InterpNext(S, PC);
47114#else
47115 return true;
47116#endif
47117}
47118PRESERVE_NONE
47119static bool Interp_ShlIntAPSIntAP(InterpState &S, CodePtr &PC) {
47120 if (!Shl<PT_IntAPS, PT_IntAP>(S, PC)) return false;
47121#if USE_TAILCALLS
47122 MUSTTAIL return InterpNext(S, PC);
47123#else
47124 return true;
47125#endif
47126}
47127PRESERVE_NONE
47128static bool Interp_ShlIntAPSIntAPS(InterpState &S, CodePtr &PC) {
47129 if (!Shl<PT_IntAPS, PT_IntAPS>(S, PC)) return false;
47130#if USE_TAILCALLS
47131 MUSTTAIL return InterpNext(S, PC);
47132#else
47133 return true;
47134#endif
47135}
47136#endif
47137#ifdef GET_DISASM
47138case OP_ShlSint8Sint8:
47139 Text.Op = PrintName("ShlSint8Sint8");
47140 break;
47141case OP_ShlSint8Uint8:
47142 Text.Op = PrintName("ShlSint8Uint8");
47143 break;
47144case OP_ShlSint8Sint16:
47145 Text.Op = PrintName("ShlSint8Sint16");
47146 break;
47147case OP_ShlSint8Uint16:
47148 Text.Op = PrintName("ShlSint8Uint16");
47149 break;
47150case OP_ShlSint8Sint32:
47151 Text.Op = PrintName("ShlSint8Sint32");
47152 break;
47153case OP_ShlSint8Uint32:
47154 Text.Op = PrintName("ShlSint8Uint32");
47155 break;
47156case OP_ShlSint8Sint64:
47157 Text.Op = PrintName("ShlSint8Sint64");
47158 break;
47159case OP_ShlSint8Uint64:
47160 Text.Op = PrintName("ShlSint8Uint64");
47161 break;
47162case OP_ShlSint8IntAP:
47163 Text.Op = PrintName("ShlSint8IntAP");
47164 break;
47165case OP_ShlSint8IntAPS:
47166 Text.Op = PrintName("ShlSint8IntAPS");
47167 break;
47168case OP_ShlUint8Sint8:
47169 Text.Op = PrintName("ShlUint8Sint8");
47170 break;
47171case OP_ShlUint8Uint8:
47172 Text.Op = PrintName("ShlUint8Uint8");
47173 break;
47174case OP_ShlUint8Sint16:
47175 Text.Op = PrintName("ShlUint8Sint16");
47176 break;
47177case OP_ShlUint8Uint16:
47178 Text.Op = PrintName("ShlUint8Uint16");
47179 break;
47180case OP_ShlUint8Sint32:
47181 Text.Op = PrintName("ShlUint8Sint32");
47182 break;
47183case OP_ShlUint8Uint32:
47184 Text.Op = PrintName("ShlUint8Uint32");
47185 break;
47186case OP_ShlUint8Sint64:
47187 Text.Op = PrintName("ShlUint8Sint64");
47188 break;
47189case OP_ShlUint8Uint64:
47190 Text.Op = PrintName("ShlUint8Uint64");
47191 break;
47192case OP_ShlUint8IntAP:
47193 Text.Op = PrintName("ShlUint8IntAP");
47194 break;
47195case OP_ShlUint8IntAPS:
47196 Text.Op = PrintName("ShlUint8IntAPS");
47197 break;
47198case OP_ShlSint16Sint8:
47199 Text.Op = PrintName("ShlSint16Sint8");
47200 break;
47201case OP_ShlSint16Uint8:
47202 Text.Op = PrintName("ShlSint16Uint8");
47203 break;
47204case OP_ShlSint16Sint16:
47205 Text.Op = PrintName("ShlSint16Sint16");
47206 break;
47207case OP_ShlSint16Uint16:
47208 Text.Op = PrintName("ShlSint16Uint16");
47209 break;
47210case OP_ShlSint16Sint32:
47211 Text.Op = PrintName("ShlSint16Sint32");
47212 break;
47213case OP_ShlSint16Uint32:
47214 Text.Op = PrintName("ShlSint16Uint32");
47215 break;
47216case OP_ShlSint16Sint64:
47217 Text.Op = PrintName("ShlSint16Sint64");
47218 break;
47219case OP_ShlSint16Uint64:
47220 Text.Op = PrintName("ShlSint16Uint64");
47221 break;
47222case OP_ShlSint16IntAP:
47223 Text.Op = PrintName("ShlSint16IntAP");
47224 break;
47225case OP_ShlSint16IntAPS:
47226 Text.Op = PrintName("ShlSint16IntAPS");
47227 break;
47228case OP_ShlUint16Sint8:
47229 Text.Op = PrintName("ShlUint16Sint8");
47230 break;
47231case OP_ShlUint16Uint8:
47232 Text.Op = PrintName("ShlUint16Uint8");
47233 break;
47234case OP_ShlUint16Sint16:
47235 Text.Op = PrintName("ShlUint16Sint16");
47236 break;
47237case OP_ShlUint16Uint16:
47238 Text.Op = PrintName("ShlUint16Uint16");
47239 break;
47240case OP_ShlUint16Sint32:
47241 Text.Op = PrintName("ShlUint16Sint32");
47242 break;
47243case OP_ShlUint16Uint32:
47244 Text.Op = PrintName("ShlUint16Uint32");
47245 break;
47246case OP_ShlUint16Sint64:
47247 Text.Op = PrintName("ShlUint16Sint64");
47248 break;
47249case OP_ShlUint16Uint64:
47250 Text.Op = PrintName("ShlUint16Uint64");
47251 break;
47252case OP_ShlUint16IntAP:
47253 Text.Op = PrintName("ShlUint16IntAP");
47254 break;
47255case OP_ShlUint16IntAPS:
47256 Text.Op = PrintName("ShlUint16IntAPS");
47257 break;
47258case OP_ShlSint32Sint8:
47259 Text.Op = PrintName("ShlSint32Sint8");
47260 break;
47261case OP_ShlSint32Uint8:
47262 Text.Op = PrintName("ShlSint32Uint8");
47263 break;
47264case OP_ShlSint32Sint16:
47265 Text.Op = PrintName("ShlSint32Sint16");
47266 break;
47267case OP_ShlSint32Uint16:
47268 Text.Op = PrintName("ShlSint32Uint16");
47269 break;
47270case OP_ShlSint32Sint32:
47271 Text.Op = PrintName("ShlSint32Sint32");
47272 break;
47273case OP_ShlSint32Uint32:
47274 Text.Op = PrintName("ShlSint32Uint32");
47275 break;
47276case OP_ShlSint32Sint64:
47277 Text.Op = PrintName("ShlSint32Sint64");
47278 break;
47279case OP_ShlSint32Uint64:
47280 Text.Op = PrintName("ShlSint32Uint64");
47281 break;
47282case OP_ShlSint32IntAP:
47283 Text.Op = PrintName("ShlSint32IntAP");
47284 break;
47285case OP_ShlSint32IntAPS:
47286 Text.Op = PrintName("ShlSint32IntAPS");
47287 break;
47288case OP_ShlUint32Sint8:
47289 Text.Op = PrintName("ShlUint32Sint8");
47290 break;
47291case OP_ShlUint32Uint8:
47292 Text.Op = PrintName("ShlUint32Uint8");
47293 break;
47294case OP_ShlUint32Sint16:
47295 Text.Op = PrintName("ShlUint32Sint16");
47296 break;
47297case OP_ShlUint32Uint16:
47298 Text.Op = PrintName("ShlUint32Uint16");
47299 break;
47300case OP_ShlUint32Sint32:
47301 Text.Op = PrintName("ShlUint32Sint32");
47302 break;
47303case OP_ShlUint32Uint32:
47304 Text.Op = PrintName("ShlUint32Uint32");
47305 break;
47306case OP_ShlUint32Sint64:
47307 Text.Op = PrintName("ShlUint32Sint64");
47308 break;
47309case OP_ShlUint32Uint64:
47310 Text.Op = PrintName("ShlUint32Uint64");
47311 break;
47312case OP_ShlUint32IntAP:
47313 Text.Op = PrintName("ShlUint32IntAP");
47314 break;
47315case OP_ShlUint32IntAPS:
47316 Text.Op = PrintName("ShlUint32IntAPS");
47317 break;
47318case OP_ShlSint64Sint8:
47319 Text.Op = PrintName("ShlSint64Sint8");
47320 break;
47321case OP_ShlSint64Uint8:
47322 Text.Op = PrintName("ShlSint64Uint8");
47323 break;
47324case OP_ShlSint64Sint16:
47325 Text.Op = PrintName("ShlSint64Sint16");
47326 break;
47327case OP_ShlSint64Uint16:
47328 Text.Op = PrintName("ShlSint64Uint16");
47329 break;
47330case OP_ShlSint64Sint32:
47331 Text.Op = PrintName("ShlSint64Sint32");
47332 break;
47333case OP_ShlSint64Uint32:
47334 Text.Op = PrintName("ShlSint64Uint32");
47335 break;
47336case OP_ShlSint64Sint64:
47337 Text.Op = PrintName("ShlSint64Sint64");
47338 break;
47339case OP_ShlSint64Uint64:
47340 Text.Op = PrintName("ShlSint64Uint64");
47341 break;
47342case OP_ShlSint64IntAP:
47343 Text.Op = PrintName("ShlSint64IntAP");
47344 break;
47345case OP_ShlSint64IntAPS:
47346 Text.Op = PrintName("ShlSint64IntAPS");
47347 break;
47348case OP_ShlUint64Sint8:
47349 Text.Op = PrintName("ShlUint64Sint8");
47350 break;
47351case OP_ShlUint64Uint8:
47352 Text.Op = PrintName("ShlUint64Uint8");
47353 break;
47354case OP_ShlUint64Sint16:
47355 Text.Op = PrintName("ShlUint64Sint16");
47356 break;
47357case OP_ShlUint64Uint16:
47358 Text.Op = PrintName("ShlUint64Uint16");
47359 break;
47360case OP_ShlUint64Sint32:
47361 Text.Op = PrintName("ShlUint64Sint32");
47362 break;
47363case OP_ShlUint64Uint32:
47364 Text.Op = PrintName("ShlUint64Uint32");
47365 break;
47366case OP_ShlUint64Sint64:
47367 Text.Op = PrintName("ShlUint64Sint64");
47368 break;
47369case OP_ShlUint64Uint64:
47370 Text.Op = PrintName("ShlUint64Uint64");
47371 break;
47372case OP_ShlUint64IntAP:
47373 Text.Op = PrintName("ShlUint64IntAP");
47374 break;
47375case OP_ShlUint64IntAPS:
47376 Text.Op = PrintName("ShlUint64IntAPS");
47377 break;
47378case OP_ShlIntAPSint8:
47379 Text.Op = PrintName("ShlIntAPSint8");
47380 break;
47381case OP_ShlIntAPUint8:
47382 Text.Op = PrintName("ShlIntAPUint8");
47383 break;
47384case OP_ShlIntAPSint16:
47385 Text.Op = PrintName("ShlIntAPSint16");
47386 break;
47387case OP_ShlIntAPUint16:
47388 Text.Op = PrintName("ShlIntAPUint16");
47389 break;
47390case OP_ShlIntAPSint32:
47391 Text.Op = PrintName("ShlIntAPSint32");
47392 break;
47393case OP_ShlIntAPUint32:
47394 Text.Op = PrintName("ShlIntAPUint32");
47395 break;
47396case OP_ShlIntAPSint64:
47397 Text.Op = PrintName("ShlIntAPSint64");
47398 break;
47399case OP_ShlIntAPUint64:
47400 Text.Op = PrintName("ShlIntAPUint64");
47401 break;
47402case OP_ShlIntAPIntAP:
47403 Text.Op = PrintName("ShlIntAPIntAP");
47404 break;
47405case OP_ShlIntAPIntAPS:
47406 Text.Op = PrintName("ShlIntAPIntAPS");
47407 break;
47408case OP_ShlIntAPSSint8:
47409 Text.Op = PrintName("ShlIntAPSSint8");
47410 break;
47411case OP_ShlIntAPSUint8:
47412 Text.Op = PrintName("ShlIntAPSUint8");
47413 break;
47414case OP_ShlIntAPSSint16:
47415 Text.Op = PrintName("ShlIntAPSSint16");
47416 break;
47417case OP_ShlIntAPSUint16:
47418 Text.Op = PrintName("ShlIntAPSUint16");
47419 break;
47420case OP_ShlIntAPSSint32:
47421 Text.Op = PrintName("ShlIntAPSSint32");
47422 break;
47423case OP_ShlIntAPSUint32:
47424 Text.Op = PrintName("ShlIntAPSUint32");
47425 break;
47426case OP_ShlIntAPSSint64:
47427 Text.Op = PrintName("ShlIntAPSSint64");
47428 break;
47429case OP_ShlIntAPSUint64:
47430 Text.Op = PrintName("ShlIntAPSUint64");
47431 break;
47432case OP_ShlIntAPSIntAP:
47433 Text.Op = PrintName("ShlIntAPSIntAP");
47434 break;
47435case OP_ShlIntAPSIntAPS:
47436 Text.Op = PrintName("ShlIntAPSIntAPS");
47437 break;
47438#endif
47439#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
47440bool emitShlSint8Sint8(SourceInfo);
47441bool emitShlSint8Uint8(SourceInfo);
47442bool emitShlSint8Sint16(SourceInfo);
47443bool emitShlSint8Uint16(SourceInfo);
47444bool emitShlSint8Sint32(SourceInfo);
47445bool emitShlSint8Uint32(SourceInfo);
47446bool emitShlSint8Sint64(SourceInfo);
47447bool emitShlSint8Uint64(SourceInfo);
47448bool emitShlSint8IntAP(SourceInfo);
47449bool emitShlSint8IntAPS(SourceInfo);
47450bool emitShlUint8Sint8(SourceInfo);
47451bool emitShlUint8Uint8(SourceInfo);
47452bool emitShlUint8Sint16(SourceInfo);
47453bool emitShlUint8Uint16(SourceInfo);
47454bool emitShlUint8Sint32(SourceInfo);
47455bool emitShlUint8Uint32(SourceInfo);
47456bool emitShlUint8Sint64(SourceInfo);
47457bool emitShlUint8Uint64(SourceInfo);
47458bool emitShlUint8IntAP(SourceInfo);
47459bool emitShlUint8IntAPS(SourceInfo);
47460bool emitShlSint16Sint8(SourceInfo);
47461bool emitShlSint16Uint8(SourceInfo);
47462bool emitShlSint16Sint16(SourceInfo);
47463bool emitShlSint16Uint16(SourceInfo);
47464bool emitShlSint16Sint32(SourceInfo);
47465bool emitShlSint16Uint32(SourceInfo);
47466bool emitShlSint16Sint64(SourceInfo);
47467bool emitShlSint16Uint64(SourceInfo);
47468bool emitShlSint16IntAP(SourceInfo);
47469bool emitShlSint16IntAPS(SourceInfo);
47470bool emitShlUint16Sint8(SourceInfo);
47471bool emitShlUint16Uint8(SourceInfo);
47472bool emitShlUint16Sint16(SourceInfo);
47473bool emitShlUint16Uint16(SourceInfo);
47474bool emitShlUint16Sint32(SourceInfo);
47475bool emitShlUint16Uint32(SourceInfo);
47476bool emitShlUint16Sint64(SourceInfo);
47477bool emitShlUint16Uint64(SourceInfo);
47478bool emitShlUint16IntAP(SourceInfo);
47479bool emitShlUint16IntAPS(SourceInfo);
47480bool emitShlSint32Sint8(SourceInfo);
47481bool emitShlSint32Uint8(SourceInfo);
47482bool emitShlSint32Sint16(SourceInfo);
47483bool emitShlSint32Uint16(SourceInfo);
47484bool emitShlSint32Sint32(SourceInfo);
47485bool emitShlSint32Uint32(SourceInfo);
47486bool emitShlSint32Sint64(SourceInfo);
47487bool emitShlSint32Uint64(SourceInfo);
47488bool emitShlSint32IntAP(SourceInfo);
47489bool emitShlSint32IntAPS(SourceInfo);
47490bool emitShlUint32Sint8(SourceInfo);
47491bool emitShlUint32Uint8(SourceInfo);
47492bool emitShlUint32Sint16(SourceInfo);
47493bool emitShlUint32Uint16(SourceInfo);
47494bool emitShlUint32Sint32(SourceInfo);
47495bool emitShlUint32Uint32(SourceInfo);
47496bool emitShlUint32Sint64(SourceInfo);
47497bool emitShlUint32Uint64(SourceInfo);
47498bool emitShlUint32IntAP(SourceInfo);
47499bool emitShlUint32IntAPS(SourceInfo);
47500bool emitShlSint64Sint8(SourceInfo);
47501bool emitShlSint64Uint8(SourceInfo);
47502bool emitShlSint64Sint16(SourceInfo);
47503bool emitShlSint64Uint16(SourceInfo);
47504bool emitShlSint64Sint32(SourceInfo);
47505bool emitShlSint64Uint32(SourceInfo);
47506bool emitShlSint64Sint64(SourceInfo);
47507bool emitShlSint64Uint64(SourceInfo);
47508bool emitShlSint64IntAP(SourceInfo);
47509bool emitShlSint64IntAPS(SourceInfo);
47510bool emitShlUint64Sint8(SourceInfo);
47511bool emitShlUint64Uint8(SourceInfo);
47512bool emitShlUint64Sint16(SourceInfo);
47513bool emitShlUint64Uint16(SourceInfo);
47514bool emitShlUint64Sint32(SourceInfo);
47515bool emitShlUint64Uint32(SourceInfo);
47516bool emitShlUint64Sint64(SourceInfo);
47517bool emitShlUint64Uint64(SourceInfo);
47518bool emitShlUint64IntAP(SourceInfo);
47519bool emitShlUint64IntAPS(SourceInfo);
47520bool emitShlIntAPSint8(SourceInfo);
47521bool emitShlIntAPUint8(SourceInfo);
47522bool emitShlIntAPSint16(SourceInfo);
47523bool emitShlIntAPUint16(SourceInfo);
47524bool emitShlIntAPSint32(SourceInfo);
47525bool emitShlIntAPUint32(SourceInfo);
47526bool emitShlIntAPSint64(SourceInfo);
47527bool emitShlIntAPUint64(SourceInfo);
47528bool emitShlIntAPIntAP(SourceInfo);
47529bool emitShlIntAPIntAPS(SourceInfo);
47530bool emitShlIntAPSSint8(SourceInfo);
47531bool emitShlIntAPSUint8(SourceInfo);
47532bool emitShlIntAPSSint16(SourceInfo);
47533bool emitShlIntAPSUint16(SourceInfo);
47534bool emitShlIntAPSSint32(SourceInfo);
47535bool emitShlIntAPSUint32(SourceInfo);
47536bool emitShlIntAPSSint64(SourceInfo);
47537bool emitShlIntAPSUint64(SourceInfo);
47538bool emitShlIntAPSIntAP(SourceInfo);
47539bool emitShlIntAPSIntAPS(SourceInfo);
47540#endif
47541#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
47542[[nodiscard]] bool emitShl(PrimType, PrimType, SourceInfo I);
47543#endif
47544#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
47545bool
47546#if defined(GET_EVAL_IMPL)
47547EvalEmitter
47548#else
47549ByteCodeEmitter
47550#endif
47551::emitShl(PrimType T0, PrimType T1, SourceInfo I) {
47552 switch (T0) {
47553 case PT_Sint8:
47554 switch (T1) {
47555 case PT_Sint8:
47556 return emitShlSint8Sint8(I);
47557 case PT_Uint8:
47558 return emitShlSint8Uint8(I);
47559 case PT_Sint16:
47560 return emitShlSint8Sint16(I);
47561 case PT_Uint16:
47562 return emitShlSint8Uint16(I);
47563 case PT_Sint32:
47564 return emitShlSint8Sint32(I);
47565 case PT_Uint32:
47566 return emitShlSint8Uint32(I);
47567 case PT_Sint64:
47568 return emitShlSint8Sint64(I);
47569 case PT_Uint64:
47570 return emitShlSint8Uint64(I);
47571 case PT_IntAP:
47572 return emitShlSint8IntAP(I);
47573 case PT_IntAPS:
47574 return emitShlSint8IntAPS(I);
47575 default: llvm_unreachable("invalid type: emitShl");
47576 }
47577 llvm_unreachable("invalid enum value");
47578 case PT_Uint8:
47579 switch (T1) {
47580 case PT_Sint8:
47581 return emitShlUint8Sint8(I);
47582 case PT_Uint8:
47583 return emitShlUint8Uint8(I);
47584 case PT_Sint16:
47585 return emitShlUint8Sint16(I);
47586 case PT_Uint16:
47587 return emitShlUint8Uint16(I);
47588 case PT_Sint32:
47589 return emitShlUint8Sint32(I);
47590 case PT_Uint32:
47591 return emitShlUint8Uint32(I);
47592 case PT_Sint64:
47593 return emitShlUint8Sint64(I);
47594 case PT_Uint64:
47595 return emitShlUint8Uint64(I);
47596 case PT_IntAP:
47597 return emitShlUint8IntAP(I);
47598 case PT_IntAPS:
47599 return emitShlUint8IntAPS(I);
47600 default: llvm_unreachable("invalid type: emitShl");
47601 }
47602 llvm_unreachable("invalid enum value");
47603 case PT_Sint16:
47604 switch (T1) {
47605 case PT_Sint8:
47606 return emitShlSint16Sint8(I);
47607 case PT_Uint8:
47608 return emitShlSint16Uint8(I);
47609 case PT_Sint16:
47610 return emitShlSint16Sint16(I);
47611 case PT_Uint16:
47612 return emitShlSint16Uint16(I);
47613 case PT_Sint32:
47614 return emitShlSint16Sint32(I);
47615 case PT_Uint32:
47616 return emitShlSint16Uint32(I);
47617 case PT_Sint64:
47618 return emitShlSint16Sint64(I);
47619 case PT_Uint64:
47620 return emitShlSint16Uint64(I);
47621 case PT_IntAP:
47622 return emitShlSint16IntAP(I);
47623 case PT_IntAPS:
47624 return emitShlSint16IntAPS(I);
47625 default: llvm_unreachable("invalid type: emitShl");
47626 }
47627 llvm_unreachable("invalid enum value");
47628 case PT_Uint16:
47629 switch (T1) {
47630 case PT_Sint8:
47631 return emitShlUint16Sint8(I);
47632 case PT_Uint8:
47633 return emitShlUint16Uint8(I);
47634 case PT_Sint16:
47635 return emitShlUint16Sint16(I);
47636 case PT_Uint16:
47637 return emitShlUint16Uint16(I);
47638 case PT_Sint32:
47639 return emitShlUint16Sint32(I);
47640 case PT_Uint32:
47641 return emitShlUint16Uint32(I);
47642 case PT_Sint64:
47643 return emitShlUint16Sint64(I);
47644 case PT_Uint64:
47645 return emitShlUint16Uint64(I);
47646 case PT_IntAP:
47647 return emitShlUint16IntAP(I);
47648 case PT_IntAPS:
47649 return emitShlUint16IntAPS(I);
47650 default: llvm_unreachable("invalid type: emitShl");
47651 }
47652 llvm_unreachable("invalid enum value");
47653 case PT_Sint32:
47654 switch (T1) {
47655 case PT_Sint8:
47656 return emitShlSint32Sint8(I);
47657 case PT_Uint8:
47658 return emitShlSint32Uint8(I);
47659 case PT_Sint16:
47660 return emitShlSint32Sint16(I);
47661 case PT_Uint16:
47662 return emitShlSint32Uint16(I);
47663 case PT_Sint32:
47664 return emitShlSint32Sint32(I);
47665 case PT_Uint32:
47666 return emitShlSint32Uint32(I);
47667 case PT_Sint64:
47668 return emitShlSint32Sint64(I);
47669 case PT_Uint64:
47670 return emitShlSint32Uint64(I);
47671 case PT_IntAP:
47672 return emitShlSint32IntAP(I);
47673 case PT_IntAPS:
47674 return emitShlSint32IntAPS(I);
47675 default: llvm_unreachable("invalid type: emitShl");
47676 }
47677 llvm_unreachable("invalid enum value");
47678 case PT_Uint32:
47679 switch (T1) {
47680 case PT_Sint8:
47681 return emitShlUint32Sint8(I);
47682 case PT_Uint8:
47683 return emitShlUint32Uint8(I);
47684 case PT_Sint16:
47685 return emitShlUint32Sint16(I);
47686 case PT_Uint16:
47687 return emitShlUint32Uint16(I);
47688 case PT_Sint32:
47689 return emitShlUint32Sint32(I);
47690 case PT_Uint32:
47691 return emitShlUint32Uint32(I);
47692 case PT_Sint64:
47693 return emitShlUint32Sint64(I);
47694 case PT_Uint64:
47695 return emitShlUint32Uint64(I);
47696 case PT_IntAP:
47697 return emitShlUint32IntAP(I);
47698 case PT_IntAPS:
47699 return emitShlUint32IntAPS(I);
47700 default: llvm_unreachable("invalid type: emitShl");
47701 }
47702 llvm_unreachable("invalid enum value");
47703 case PT_Sint64:
47704 switch (T1) {
47705 case PT_Sint8:
47706 return emitShlSint64Sint8(I);
47707 case PT_Uint8:
47708 return emitShlSint64Uint8(I);
47709 case PT_Sint16:
47710 return emitShlSint64Sint16(I);
47711 case PT_Uint16:
47712 return emitShlSint64Uint16(I);
47713 case PT_Sint32:
47714 return emitShlSint64Sint32(I);
47715 case PT_Uint32:
47716 return emitShlSint64Uint32(I);
47717 case PT_Sint64:
47718 return emitShlSint64Sint64(I);
47719 case PT_Uint64:
47720 return emitShlSint64Uint64(I);
47721 case PT_IntAP:
47722 return emitShlSint64IntAP(I);
47723 case PT_IntAPS:
47724 return emitShlSint64IntAPS(I);
47725 default: llvm_unreachable("invalid type: emitShl");
47726 }
47727 llvm_unreachable("invalid enum value");
47728 case PT_Uint64:
47729 switch (T1) {
47730 case PT_Sint8:
47731 return emitShlUint64Sint8(I);
47732 case PT_Uint8:
47733 return emitShlUint64Uint8(I);
47734 case PT_Sint16:
47735 return emitShlUint64Sint16(I);
47736 case PT_Uint16:
47737 return emitShlUint64Uint16(I);
47738 case PT_Sint32:
47739 return emitShlUint64Sint32(I);
47740 case PT_Uint32:
47741 return emitShlUint64Uint32(I);
47742 case PT_Sint64:
47743 return emitShlUint64Sint64(I);
47744 case PT_Uint64:
47745 return emitShlUint64Uint64(I);
47746 case PT_IntAP:
47747 return emitShlUint64IntAP(I);
47748 case PT_IntAPS:
47749 return emitShlUint64IntAPS(I);
47750 default: llvm_unreachable("invalid type: emitShl");
47751 }
47752 llvm_unreachable("invalid enum value");
47753 case PT_IntAP:
47754 switch (T1) {
47755 case PT_Sint8:
47756 return emitShlIntAPSint8(I);
47757 case PT_Uint8:
47758 return emitShlIntAPUint8(I);
47759 case PT_Sint16:
47760 return emitShlIntAPSint16(I);
47761 case PT_Uint16:
47762 return emitShlIntAPUint16(I);
47763 case PT_Sint32:
47764 return emitShlIntAPSint32(I);
47765 case PT_Uint32:
47766 return emitShlIntAPUint32(I);
47767 case PT_Sint64:
47768 return emitShlIntAPSint64(I);
47769 case PT_Uint64:
47770 return emitShlIntAPUint64(I);
47771 case PT_IntAP:
47772 return emitShlIntAPIntAP(I);
47773 case PT_IntAPS:
47774 return emitShlIntAPIntAPS(I);
47775 default: llvm_unreachable("invalid type: emitShl");
47776 }
47777 llvm_unreachable("invalid enum value");
47778 case PT_IntAPS:
47779 switch (T1) {
47780 case PT_Sint8:
47781 return emitShlIntAPSSint8(I);
47782 case PT_Uint8:
47783 return emitShlIntAPSUint8(I);
47784 case PT_Sint16:
47785 return emitShlIntAPSSint16(I);
47786 case PT_Uint16:
47787 return emitShlIntAPSUint16(I);
47788 case PT_Sint32:
47789 return emitShlIntAPSSint32(I);
47790 case PT_Uint32:
47791 return emitShlIntAPSUint32(I);
47792 case PT_Sint64:
47793 return emitShlIntAPSSint64(I);
47794 case PT_Uint64:
47795 return emitShlIntAPSUint64(I);
47796 case PT_IntAP:
47797 return emitShlIntAPSIntAP(I);
47798 case PT_IntAPS:
47799 return emitShlIntAPSIntAPS(I);
47800 default: llvm_unreachable("invalid type: emitShl");
47801 }
47802 llvm_unreachable("invalid enum value");
47803 default: llvm_unreachable("invalid type: emitShl");
47804 }
47805 llvm_unreachable("invalid enum value");
47806}
47807#endif
47808#ifdef GET_LINK_IMPL
47809bool ByteCodeEmitter::emitShlSint8Sint8(SourceInfo L) {
47810 return emitOp<>(OP_ShlSint8Sint8, L);
47811}
47812bool ByteCodeEmitter::emitShlSint8Uint8(SourceInfo L) {
47813 return emitOp<>(OP_ShlSint8Uint8, L);
47814}
47815bool ByteCodeEmitter::emitShlSint8Sint16(SourceInfo L) {
47816 return emitOp<>(OP_ShlSint8Sint16, L);
47817}
47818bool ByteCodeEmitter::emitShlSint8Uint16(SourceInfo L) {
47819 return emitOp<>(OP_ShlSint8Uint16, L);
47820}
47821bool ByteCodeEmitter::emitShlSint8Sint32(SourceInfo L) {
47822 return emitOp<>(OP_ShlSint8Sint32, L);
47823}
47824bool ByteCodeEmitter::emitShlSint8Uint32(SourceInfo L) {
47825 return emitOp<>(OP_ShlSint8Uint32, L);
47826}
47827bool ByteCodeEmitter::emitShlSint8Sint64(SourceInfo L) {
47828 return emitOp<>(OP_ShlSint8Sint64, L);
47829}
47830bool ByteCodeEmitter::emitShlSint8Uint64(SourceInfo L) {
47831 return emitOp<>(OP_ShlSint8Uint64, L);
47832}
47833bool ByteCodeEmitter::emitShlSint8IntAP(SourceInfo L) {
47834 return emitOp<>(OP_ShlSint8IntAP, L);
47835}
47836bool ByteCodeEmitter::emitShlSint8IntAPS(SourceInfo L) {
47837 return emitOp<>(OP_ShlSint8IntAPS, L);
47838}
47839bool ByteCodeEmitter::emitShlUint8Sint8(SourceInfo L) {
47840 return emitOp<>(OP_ShlUint8Sint8, L);
47841}
47842bool ByteCodeEmitter::emitShlUint8Uint8(SourceInfo L) {
47843 return emitOp<>(OP_ShlUint8Uint8, L);
47844}
47845bool ByteCodeEmitter::emitShlUint8Sint16(SourceInfo L) {
47846 return emitOp<>(OP_ShlUint8Sint16, L);
47847}
47848bool ByteCodeEmitter::emitShlUint8Uint16(SourceInfo L) {
47849 return emitOp<>(OP_ShlUint8Uint16, L);
47850}
47851bool ByteCodeEmitter::emitShlUint8Sint32(SourceInfo L) {
47852 return emitOp<>(OP_ShlUint8Sint32, L);
47853}
47854bool ByteCodeEmitter::emitShlUint8Uint32(SourceInfo L) {
47855 return emitOp<>(OP_ShlUint8Uint32, L);
47856}
47857bool ByteCodeEmitter::emitShlUint8Sint64(SourceInfo L) {
47858 return emitOp<>(OP_ShlUint8Sint64, L);
47859}
47860bool ByteCodeEmitter::emitShlUint8Uint64(SourceInfo L) {
47861 return emitOp<>(OP_ShlUint8Uint64, L);
47862}
47863bool ByteCodeEmitter::emitShlUint8IntAP(SourceInfo L) {
47864 return emitOp<>(OP_ShlUint8IntAP, L);
47865}
47866bool ByteCodeEmitter::emitShlUint8IntAPS(SourceInfo L) {
47867 return emitOp<>(OP_ShlUint8IntAPS, L);
47868}
47869bool ByteCodeEmitter::emitShlSint16Sint8(SourceInfo L) {
47870 return emitOp<>(OP_ShlSint16Sint8, L);
47871}
47872bool ByteCodeEmitter::emitShlSint16Uint8(SourceInfo L) {
47873 return emitOp<>(OP_ShlSint16Uint8, L);
47874}
47875bool ByteCodeEmitter::emitShlSint16Sint16(SourceInfo L) {
47876 return emitOp<>(OP_ShlSint16Sint16, L);
47877}
47878bool ByteCodeEmitter::emitShlSint16Uint16(SourceInfo L) {
47879 return emitOp<>(OP_ShlSint16Uint16, L);
47880}
47881bool ByteCodeEmitter::emitShlSint16Sint32(SourceInfo L) {
47882 return emitOp<>(OP_ShlSint16Sint32, L);
47883}
47884bool ByteCodeEmitter::emitShlSint16Uint32(SourceInfo L) {
47885 return emitOp<>(OP_ShlSint16Uint32, L);
47886}
47887bool ByteCodeEmitter::emitShlSint16Sint64(SourceInfo L) {
47888 return emitOp<>(OP_ShlSint16Sint64, L);
47889}
47890bool ByteCodeEmitter::emitShlSint16Uint64(SourceInfo L) {
47891 return emitOp<>(OP_ShlSint16Uint64, L);
47892}
47893bool ByteCodeEmitter::emitShlSint16IntAP(SourceInfo L) {
47894 return emitOp<>(OP_ShlSint16IntAP, L);
47895}
47896bool ByteCodeEmitter::emitShlSint16IntAPS(SourceInfo L) {
47897 return emitOp<>(OP_ShlSint16IntAPS, L);
47898}
47899bool ByteCodeEmitter::emitShlUint16Sint8(SourceInfo L) {
47900 return emitOp<>(OP_ShlUint16Sint8, L);
47901}
47902bool ByteCodeEmitter::emitShlUint16Uint8(SourceInfo L) {
47903 return emitOp<>(OP_ShlUint16Uint8, L);
47904}
47905bool ByteCodeEmitter::emitShlUint16Sint16(SourceInfo L) {
47906 return emitOp<>(OP_ShlUint16Sint16, L);
47907}
47908bool ByteCodeEmitter::emitShlUint16Uint16(SourceInfo L) {
47909 return emitOp<>(OP_ShlUint16Uint16, L);
47910}
47911bool ByteCodeEmitter::emitShlUint16Sint32(SourceInfo L) {
47912 return emitOp<>(OP_ShlUint16Sint32, L);
47913}
47914bool ByteCodeEmitter::emitShlUint16Uint32(SourceInfo L) {
47915 return emitOp<>(OP_ShlUint16Uint32, L);
47916}
47917bool ByteCodeEmitter::emitShlUint16Sint64(SourceInfo L) {
47918 return emitOp<>(OP_ShlUint16Sint64, L);
47919}
47920bool ByteCodeEmitter::emitShlUint16Uint64(SourceInfo L) {
47921 return emitOp<>(OP_ShlUint16Uint64, L);
47922}
47923bool ByteCodeEmitter::emitShlUint16IntAP(SourceInfo L) {
47924 return emitOp<>(OP_ShlUint16IntAP, L);
47925}
47926bool ByteCodeEmitter::emitShlUint16IntAPS(SourceInfo L) {
47927 return emitOp<>(OP_ShlUint16IntAPS, L);
47928}
47929bool ByteCodeEmitter::emitShlSint32Sint8(SourceInfo L) {
47930 return emitOp<>(OP_ShlSint32Sint8, L);
47931}
47932bool ByteCodeEmitter::emitShlSint32Uint8(SourceInfo L) {
47933 return emitOp<>(OP_ShlSint32Uint8, L);
47934}
47935bool ByteCodeEmitter::emitShlSint32Sint16(SourceInfo L) {
47936 return emitOp<>(OP_ShlSint32Sint16, L);
47937}
47938bool ByteCodeEmitter::emitShlSint32Uint16(SourceInfo L) {
47939 return emitOp<>(OP_ShlSint32Uint16, L);
47940}
47941bool ByteCodeEmitter::emitShlSint32Sint32(SourceInfo L) {
47942 return emitOp<>(OP_ShlSint32Sint32, L);
47943}
47944bool ByteCodeEmitter::emitShlSint32Uint32(SourceInfo L) {
47945 return emitOp<>(OP_ShlSint32Uint32, L);
47946}
47947bool ByteCodeEmitter::emitShlSint32Sint64(SourceInfo L) {
47948 return emitOp<>(OP_ShlSint32Sint64, L);
47949}
47950bool ByteCodeEmitter::emitShlSint32Uint64(SourceInfo L) {
47951 return emitOp<>(OP_ShlSint32Uint64, L);
47952}
47953bool ByteCodeEmitter::emitShlSint32IntAP(SourceInfo L) {
47954 return emitOp<>(OP_ShlSint32IntAP, L);
47955}
47956bool ByteCodeEmitter::emitShlSint32IntAPS(SourceInfo L) {
47957 return emitOp<>(OP_ShlSint32IntAPS, L);
47958}
47959bool ByteCodeEmitter::emitShlUint32Sint8(SourceInfo L) {
47960 return emitOp<>(OP_ShlUint32Sint8, L);
47961}
47962bool ByteCodeEmitter::emitShlUint32Uint8(SourceInfo L) {
47963 return emitOp<>(OP_ShlUint32Uint8, L);
47964}
47965bool ByteCodeEmitter::emitShlUint32Sint16(SourceInfo L) {
47966 return emitOp<>(OP_ShlUint32Sint16, L);
47967}
47968bool ByteCodeEmitter::emitShlUint32Uint16(SourceInfo L) {
47969 return emitOp<>(OP_ShlUint32Uint16, L);
47970}
47971bool ByteCodeEmitter::emitShlUint32Sint32(SourceInfo L) {
47972 return emitOp<>(OP_ShlUint32Sint32, L);
47973}
47974bool ByteCodeEmitter::emitShlUint32Uint32(SourceInfo L) {
47975 return emitOp<>(OP_ShlUint32Uint32, L);
47976}
47977bool ByteCodeEmitter::emitShlUint32Sint64(SourceInfo L) {
47978 return emitOp<>(OP_ShlUint32Sint64, L);
47979}
47980bool ByteCodeEmitter::emitShlUint32Uint64(SourceInfo L) {
47981 return emitOp<>(OP_ShlUint32Uint64, L);
47982}
47983bool ByteCodeEmitter::emitShlUint32IntAP(SourceInfo L) {
47984 return emitOp<>(OP_ShlUint32IntAP, L);
47985}
47986bool ByteCodeEmitter::emitShlUint32IntAPS(SourceInfo L) {
47987 return emitOp<>(OP_ShlUint32IntAPS, L);
47988}
47989bool ByteCodeEmitter::emitShlSint64Sint8(SourceInfo L) {
47990 return emitOp<>(OP_ShlSint64Sint8, L);
47991}
47992bool ByteCodeEmitter::emitShlSint64Uint8(SourceInfo L) {
47993 return emitOp<>(OP_ShlSint64Uint8, L);
47994}
47995bool ByteCodeEmitter::emitShlSint64Sint16(SourceInfo L) {
47996 return emitOp<>(OP_ShlSint64Sint16, L);
47997}
47998bool ByteCodeEmitter::emitShlSint64Uint16(SourceInfo L) {
47999 return emitOp<>(OP_ShlSint64Uint16, L);
48000}
48001bool ByteCodeEmitter::emitShlSint64Sint32(SourceInfo L) {
48002 return emitOp<>(OP_ShlSint64Sint32, L);
48003}
48004bool ByteCodeEmitter::emitShlSint64Uint32(SourceInfo L) {
48005 return emitOp<>(OP_ShlSint64Uint32, L);
48006}
48007bool ByteCodeEmitter::emitShlSint64Sint64(SourceInfo L) {
48008 return emitOp<>(OP_ShlSint64Sint64, L);
48009}
48010bool ByteCodeEmitter::emitShlSint64Uint64(SourceInfo L) {
48011 return emitOp<>(OP_ShlSint64Uint64, L);
48012}
48013bool ByteCodeEmitter::emitShlSint64IntAP(SourceInfo L) {
48014 return emitOp<>(OP_ShlSint64IntAP, L);
48015}
48016bool ByteCodeEmitter::emitShlSint64IntAPS(SourceInfo L) {
48017 return emitOp<>(OP_ShlSint64IntAPS, L);
48018}
48019bool ByteCodeEmitter::emitShlUint64Sint8(SourceInfo L) {
48020 return emitOp<>(OP_ShlUint64Sint8, L);
48021}
48022bool ByteCodeEmitter::emitShlUint64Uint8(SourceInfo L) {
48023 return emitOp<>(OP_ShlUint64Uint8, L);
48024}
48025bool ByteCodeEmitter::emitShlUint64Sint16(SourceInfo L) {
48026 return emitOp<>(OP_ShlUint64Sint16, L);
48027}
48028bool ByteCodeEmitter::emitShlUint64Uint16(SourceInfo L) {
48029 return emitOp<>(OP_ShlUint64Uint16, L);
48030}
48031bool ByteCodeEmitter::emitShlUint64Sint32(SourceInfo L) {
48032 return emitOp<>(OP_ShlUint64Sint32, L);
48033}
48034bool ByteCodeEmitter::emitShlUint64Uint32(SourceInfo L) {
48035 return emitOp<>(OP_ShlUint64Uint32, L);
48036}
48037bool ByteCodeEmitter::emitShlUint64Sint64(SourceInfo L) {
48038 return emitOp<>(OP_ShlUint64Sint64, L);
48039}
48040bool ByteCodeEmitter::emitShlUint64Uint64(SourceInfo L) {
48041 return emitOp<>(OP_ShlUint64Uint64, L);
48042}
48043bool ByteCodeEmitter::emitShlUint64IntAP(SourceInfo L) {
48044 return emitOp<>(OP_ShlUint64IntAP, L);
48045}
48046bool ByteCodeEmitter::emitShlUint64IntAPS(SourceInfo L) {
48047 return emitOp<>(OP_ShlUint64IntAPS, L);
48048}
48049bool ByteCodeEmitter::emitShlIntAPSint8(SourceInfo L) {
48050 return emitOp<>(OP_ShlIntAPSint8, L);
48051}
48052bool ByteCodeEmitter::emitShlIntAPUint8(SourceInfo L) {
48053 return emitOp<>(OP_ShlIntAPUint8, L);
48054}
48055bool ByteCodeEmitter::emitShlIntAPSint16(SourceInfo L) {
48056 return emitOp<>(OP_ShlIntAPSint16, L);
48057}
48058bool ByteCodeEmitter::emitShlIntAPUint16(SourceInfo L) {
48059 return emitOp<>(OP_ShlIntAPUint16, L);
48060}
48061bool ByteCodeEmitter::emitShlIntAPSint32(SourceInfo L) {
48062 return emitOp<>(OP_ShlIntAPSint32, L);
48063}
48064bool ByteCodeEmitter::emitShlIntAPUint32(SourceInfo L) {
48065 return emitOp<>(OP_ShlIntAPUint32, L);
48066}
48067bool ByteCodeEmitter::emitShlIntAPSint64(SourceInfo L) {
48068 return emitOp<>(OP_ShlIntAPSint64, L);
48069}
48070bool ByteCodeEmitter::emitShlIntAPUint64(SourceInfo L) {
48071 return emitOp<>(OP_ShlIntAPUint64, L);
48072}
48073bool ByteCodeEmitter::emitShlIntAPIntAP(SourceInfo L) {
48074 return emitOp<>(OP_ShlIntAPIntAP, L);
48075}
48076bool ByteCodeEmitter::emitShlIntAPIntAPS(SourceInfo L) {
48077 return emitOp<>(OP_ShlIntAPIntAPS, L);
48078}
48079bool ByteCodeEmitter::emitShlIntAPSSint8(SourceInfo L) {
48080 return emitOp<>(OP_ShlIntAPSSint8, L);
48081}
48082bool ByteCodeEmitter::emitShlIntAPSUint8(SourceInfo L) {
48083 return emitOp<>(OP_ShlIntAPSUint8, L);
48084}
48085bool ByteCodeEmitter::emitShlIntAPSSint16(SourceInfo L) {
48086 return emitOp<>(OP_ShlIntAPSSint16, L);
48087}
48088bool ByteCodeEmitter::emitShlIntAPSUint16(SourceInfo L) {
48089 return emitOp<>(OP_ShlIntAPSUint16, L);
48090}
48091bool ByteCodeEmitter::emitShlIntAPSSint32(SourceInfo L) {
48092 return emitOp<>(OP_ShlIntAPSSint32, L);
48093}
48094bool ByteCodeEmitter::emitShlIntAPSUint32(SourceInfo L) {
48095 return emitOp<>(OP_ShlIntAPSUint32, L);
48096}
48097bool ByteCodeEmitter::emitShlIntAPSSint64(SourceInfo L) {
48098 return emitOp<>(OP_ShlIntAPSSint64, L);
48099}
48100bool ByteCodeEmitter::emitShlIntAPSUint64(SourceInfo L) {
48101 return emitOp<>(OP_ShlIntAPSUint64, L);
48102}
48103bool ByteCodeEmitter::emitShlIntAPSIntAP(SourceInfo L) {
48104 return emitOp<>(OP_ShlIntAPSIntAP, L);
48105}
48106bool ByteCodeEmitter::emitShlIntAPSIntAPS(SourceInfo L) {
48107 return emitOp<>(OP_ShlIntAPSIntAPS, L);
48108}
48109#endif
48110#ifdef GET_EVAL_IMPL
48111bool EvalEmitter::emitShlSint8Sint8(SourceInfo L) {
48112 if (!isActive()) return true;
48113 CurrentSource = L;
48114 return Shl<PT_Sint8, PT_Sint8>(S, OpPC);
48115}
48116bool EvalEmitter::emitShlSint8Uint8(SourceInfo L) {
48117 if (!isActive()) return true;
48118 CurrentSource = L;
48119 return Shl<PT_Sint8, PT_Uint8>(S, OpPC);
48120}
48121bool EvalEmitter::emitShlSint8Sint16(SourceInfo L) {
48122 if (!isActive()) return true;
48123 CurrentSource = L;
48124 return Shl<PT_Sint8, PT_Sint16>(S, OpPC);
48125}
48126bool EvalEmitter::emitShlSint8Uint16(SourceInfo L) {
48127 if (!isActive()) return true;
48128 CurrentSource = L;
48129 return Shl<PT_Sint8, PT_Uint16>(S, OpPC);
48130}
48131bool EvalEmitter::emitShlSint8Sint32(SourceInfo L) {
48132 if (!isActive()) return true;
48133 CurrentSource = L;
48134 return Shl<PT_Sint8, PT_Sint32>(S, OpPC);
48135}
48136bool EvalEmitter::emitShlSint8Uint32(SourceInfo L) {
48137 if (!isActive()) return true;
48138 CurrentSource = L;
48139 return Shl<PT_Sint8, PT_Uint32>(S, OpPC);
48140}
48141bool EvalEmitter::emitShlSint8Sint64(SourceInfo L) {
48142 if (!isActive()) return true;
48143 CurrentSource = L;
48144 return Shl<PT_Sint8, PT_Sint64>(S, OpPC);
48145}
48146bool EvalEmitter::emitShlSint8Uint64(SourceInfo L) {
48147 if (!isActive()) return true;
48148 CurrentSource = L;
48149 return Shl<PT_Sint8, PT_Uint64>(S, OpPC);
48150}
48151bool EvalEmitter::emitShlSint8IntAP(SourceInfo L) {
48152 if (!isActive()) return true;
48153 CurrentSource = L;
48154 return Shl<PT_Sint8, PT_IntAP>(S, OpPC);
48155}
48156bool EvalEmitter::emitShlSint8IntAPS(SourceInfo L) {
48157 if (!isActive()) return true;
48158 CurrentSource = L;
48159 return Shl<PT_Sint8, PT_IntAPS>(S, OpPC);
48160}
48161bool EvalEmitter::emitShlUint8Sint8(SourceInfo L) {
48162 if (!isActive()) return true;
48163 CurrentSource = L;
48164 return Shl<PT_Uint8, PT_Sint8>(S, OpPC);
48165}
48166bool EvalEmitter::emitShlUint8Uint8(SourceInfo L) {
48167 if (!isActive()) return true;
48168 CurrentSource = L;
48169 return Shl<PT_Uint8, PT_Uint8>(S, OpPC);
48170}
48171bool EvalEmitter::emitShlUint8Sint16(SourceInfo L) {
48172 if (!isActive()) return true;
48173 CurrentSource = L;
48174 return Shl<PT_Uint8, PT_Sint16>(S, OpPC);
48175}
48176bool EvalEmitter::emitShlUint8Uint16(SourceInfo L) {
48177 if (!isActive()) return true;
48178 CurrentSource = L;
48179 return Shl<PT_Uint8, PT_Uint16>(S, OpPC);
48180}
48181bool EvalEmitter::emitShlUint8Sint32(SourceInfo L) {
48182 if (!isActive()) return true;
48183 CurrentSource = L;
48184 return Shl<PT_Uint8, PT_Sint32>(S, OpPC);
48185}
48186bool EvalEmitter::emitShlUint8Uint32(SourceInfo L) {
48187 if (!isActive()) return true;
48188 CurrentSource = L;
48189 return Shl<PT_Uint8, PT_Uint32>(S, OpPC);
48190}
48191bool EvalEmitter::emitShlUint8Sint64(SourceInfo L) {
48192 if (!isActive()) return true;
48193 CurrentSource = L;
48194 return Shl<PT_Uint8, PT_Sint64>(S, OpPC);
48195}
48196bool EvalEmitter::emitShlUint8Uint64(SourceInfo L) {
48197 if (!isActive()) return true;
48198 CurrentSource = L;
48199 return Shl<PT_Uint8, PT_Uint64>(S, OpPC);
48200}
48201bool EvalEmitter::emitShlUint8IntAP(SourceInfo L) {
48202 if (!isActive()) return true;
48203 CurrentSource = L;
48204 return Shl<PT_Uint8, PT_IntAP>(S, OpPC);
48205}
48206bool EvalEmitter::emitShlUint8IntAPS(SourceInfo L) {
48207 if (!isActive()) return true;
48208 CurrentSource = L;
48209 return Shl<PT_Uint8, PT_IntAPS>(S, OpPC);
48210}
48211bool EvalEmitter::emitShlSint16Sint8(SourceInfo L) {
48212 if (!isActive()) return true;
48213 CurrentSource = L;
48214 return Shl<PT_Sint16, PT_Sint8>(S, OpPC);
48215}
48216bool EvalEmitter::emitShlSint16Uint8(SourceInfo L) {
48217 if (!isActive()) return true;
48218 CurrentSource = L;
48219 return Shl<PT_Sint16, PT_Uint8>(S, OpPC);
48220}
48221bool EvalEmitter::emitShlSint16Sint16(SourceInfo L) {
48222 if (!isActive()) return true;
48223 CurrentSource = L;
48224 return Shl<PT_Sint16, PT_Sint16>(S, OpPC);
48225}
48226bool EvalEmitter::emitShlSint16Uint16(SourceInfo L) {
48227 if (!isActive()) return true;
48228 CurrentSource = L;
48229 return Shl<PT_Sint16, PT_Uint16>(S, OpPC);
48230}
48231bool EvalEmitter::emitShlSint16Sint32(SourceInfo L) {
48232 if (!isActive()) return true;
48233 CurrentSource = L;
48234 return Shl<PT_Sint16, PT_Sint32>(S, OpPC);
48235}
48236bool EvalEmitter::emitShlSint16Uint32(SourceInfo L) {
48237 if (!isActive()) return true;
48238 CurrentSource = L;
48239 return Shl<PT_Sint16, PT_Uint32>(S, OpPC);
48240}
48241bool EvalEmitter::emitShlSint16Sint64(SourceInfo L) {
48242 if (!isActive()) return true;
48243 CurrentSource = L;
48244 return Shl<PT_Sint16, PT_Sint64>(S, OpPC);
48245}
48246bool EvalEmitter::emitShlSint16Uint64(SourceInfo L) {
48247 if (!isActive()) return true;
48248 CurrentSource = L;
48249 return Shl<PT_Sint16, PT_Uint64>(S, OpPC);
48250}
48251bool EvalEmitter::emitShlSint16IntAP(SourceInfo L) {
48252 if (!isActive()) return true;
48253 CurrentSource = L;
48254 return Shl<PT_Sint16, PT_IntAP>(S, OpPC);
48255}
48256bool EvalEmitter::emitShlSint16IntAPS(SourceInfo L) {
48257 if (!isActive()) return true;
48258 CurrentSource = L;
48259 return Shl<PT_Sint16, PT_IntAPS>(S, OpPC);
48260}
48261bool EvalEmitter::emitShlUint16Sint8(SourceInfo L) {
48262 if (!isActive()) return true;
48263 CurrentSource = L;
48264 return Shl<PT_Uint16, PT_Sint8>(S, OpPC);
48265}
48266bool EvalEmitter::emitShlUint16Uint8(SourceInfo L) {
48267 if (!isActive()) return true;
48268 CurrentSource = L;
48269 return Shl<PT_Uint16, PT_Uint8>(S, OpPC);
48270}
48271bool EvalEmitter::emitShlUint16Sint16(SourceInfo L) {
48272 if (!isActive()) return true;
48273 CurrentSource = L;
48274 return Shl<PT_Uint16, PT_Sint16>(S, OpPC);
48275}
48276bool EvalEmitter::emitShlUint16Uint16(SourceInfo L) {
48277 if (!isActive()) return true;
48278 CurrentSource = L;
48279 return Shl<PT_Uint16, PT_Uint16>(S, OpPC);
48280}
48281bool EvalEmitter::emitShlUint16Sint32(SourceInfo L) {
48282 if (!isActive()) return true;
48283 CurrentSource = L;
48284 return Shl<PT_Uint16, PT_Sint32>(S, OpPC);
48285}
48286bool EvalEmitter::emitShlUint16Uint32(SourceInfo L) {
48287 if (!isActive()) return true;
48288 CurrentSource = L;
48289 return Shl<PT_Uint16, PT_Uint32>(S, OpPC);
48290}
48291bool EvalEmitter::emitShlUint16Sint64(SourceInfo L) {
48292 if (!isActive()) return true;
48293 CurrentSource = L;
48294 return Shl<PT_Uint16, PT_Sint64>(S, OpPC);
48295}
48296bool EvalEmitter::emitShlUint16Uint64(SourceInfo L) {
48297 if (!isActive()) return true;
48298 CurrentSource = L;
48299 return Shl<PT_Uint16, PT_Uint64>(S, OpPC);
48300}
48301bool EvalEmitter::emitShlUint16IntAP(SourceInfo L) {
48302 if (!isActive()) return true;
48303 CurrentSource = L;
48304 return Shl<PT_Uint16, PT_IntAP>(S, OpPC);
48305}
48306bool EvalEmitter::emitShlUint16IntAPS(SourceInfo L) {
48307 if (!isActive()) return true;
48308 CurrentSource = L;
48309 return Shl<PT_Uint16, PT_IntAPS>(S, OpPC);
48310}
48311bool EvalEmitter::emitShlSint32Sint8(SourceInfo L) {
48312 if (!isActive()) return true;
48313 CurrentSource = L;
48314 return Shl<PT_Sint32, PT_Sint8>(S, OpPC);
48315}
48316bool EvalEmitter::emitShlSint32Uint8(SourceInfo L) {
48317 if (!isActive()) return true;
48318 CurrentSource = L;
48319 return Shl<PT_Sint32, PT_Uint8>(S, OpPC);
48320}
48321bool EvalEmitter::emitShlSint32Sint16(SourceInfo L) {
48322 if (!isActive()) return true;
48323 CurrentSource = L;
48324 return Shl<PT_Sint32, PT_Sint16>(S, OpPC);
48325}
48326bool EvalEmitter::emitShlSint32Uint16(SourceInfo L) {
48327 if (!isActive()) return true;
48328 CurrentSource = L;
48329 return Shl<PT_Sint32, PT_Uint16>(S, OpPC);
48330}
48331bool EvalEmitter::emitShlSint32Sint32(SourceInfo L) {
48332 if (!isActive()) return true;
48333 CurrentSource = L;
48334 return Shl<PT_Sint32, PT_Sint32>(S, OpPC);
48335}
48336bool EvalEmitter::emitShlSint32Uint32(SourceInfo L) {
48337 if (!isActive()) return true;
48338 CurrentSource = L;
48339 return Shl<PT_Sint32, PT_Uint32>(S, OpPC);
48340}
48341bool EvalEmitter::emitShlSint32Sint64(SourceInfo L) {
48342 if (!isActive()) return true;
48343 CurrentSource = L;
48344 return Shl<PT_Sint32, PT_Sint64>(S, OpPC);
48345}
48346bool EvalEmitter::emitShlSint32Uint64(SourceInfo L) {
48347 if (!isActive()) return true;
48348 CurrentSource = L;
48349 return Shl<PT_Sint32, PT_Uint64>(S, OpPC);
48350}
48351bool EvalEmitter::emitShlSint32IntAP(SourceInfo L) {
48352 if (!isActive()) return true;
48353 CurrentSource = L;
48354 return Shl<PT_Sint32, PT_IntAP>(S, OpPC);
48355}
48356bool EvalEmitter::emitShlSint32IntAPS(SourceInfo L) {
48357 if (!isActive()) return true;
48358 CurrentSource = L;
48359 return Shl<PT_Sint32, PT_IntAPS>(S, OpPC);
48360}
48361bool EvalEmitter::emitShlUint32Sint8(SourceInfo L) {
48362 if (!isActive()) return true;
48363 CurrentSource = L;
48364 return Shl<PT_Uint32, PT_Sint8>(S, OpPC);
48365}
48366bool EvalEmitter::emitShlUint32Uint8(SourceInfo L) {
48367 if (!isActive()) return true;
48368 CurrentSource = L;
48369 return Shl<PT_Uint32, PT_Uint8>(S, OpPC);
48370}
48371bool EvalEmitter::emitShlUint32Sint16(SourceInfo L) {
48372 if (!isActive()) return true;
48373 CurrentSource = L;
48374 return Shl<PT_Uint32, PT_Sint16>(S, OpPC);
48375}
48376bool EvalEmitter::emitShlUint32Uint16(SourceInfo L) {
48377 if (!isActive()) return true;
48378 CurrentSource = L;
48379 return Shl<PT_Uint32, PT_Uint16>(S, OpPC);
48380}
48381bool EvalEmitter::emitShlUint32Sint32(SourceInfo L) {
48382 if (!isActive()) return true;
48383 CurrentSource = L;
48384 return Shl<PT_Uint32, PT_Sint32>(S, OpPC);
48385}
48386bool EvalEmitter::emitShlUint32Uint32(SourceInfo L) {
48387 if (!isActive()) return true;
48388 CurrentSource = L;
48389 return Shl<PT_Uint32, PT_Uint32>(S, OpPC);
48390}
48391bool EvalEmitter::emitShlUint32Sint64(SourceInfo L) {
48392 if (!isActive()) return true;
48393 CurrentSource = L;
48394 return Shl<PT_Uint32, PT_Sint64>(S, OpPC);
48395}
48396bool EvalEmitter::emitShlUint32Uint64(SourceInfo L) {
48397 if (!isActive()) return true;
48398 CurrentSource = L;
48399 return Shl<PT_Uint32, PT_Uint64>(S, OpPC);
48400}
48401bool EvalEmitter::emitShlUint32IntAP(SourceInfo L) {
48402 if (!isActive()) return true;
48403 CurrentSource = L;
48404 return Shl<PT_Uint32, PT_IntAP>(S, OpPC);
48405}
48406bool EvalEmitter::emitShlUint32IntAPS(SourceInfo L) {
48407 if (!isActive()) return true;
48408 CurrentSource = L;
48409 return Shl<PT_Uint32, PT_IntAPS>(S, OpPC);
48410}
48411bool EvalEmitter::emitShlSint64Sint8(SourceInfo L) {
48412 if (!isActive()) return true;
48413 CurrentSource = L;
48414 return Shl<PT_Sint64, PT_Sint8>(S, OpPC);
48415}
48416bool EvalEmitter::emitShlSint64Uint8(SourceInfo L) {
48417 if (!isActive()) return true;
48418 CurrentSource = L;
48419 return Shl<PT_Sint64, PT_Uint8>(S, OpPC);
48420}
48421bool EvalEmitter::emitShlSint64Sint16(SourceInfo L) {
48422 if (!isActive()) return true;
48423 CurrentSource = L;
48424 return Shl<PT_Sint64, PT_Sint16>(S, OpPC);
48425}
48426bool EvalEmitter::emitShlSint64Uint16(SourceInfo L) {
48427 if (!isActive()) return true;
48428 CurrentSource = L;
48429 return Shl<PT_Sint64, PT_Uint16>(S, OpPC);
48430}
48431bool EvalEmitter::emitShlSint64Sint32(SourceInfo L) {
48432 if (!isActive()) return true;
48433 CurrentSource = L;
48434 return Shl<PT_Sint64, PT_Sint32>(S, OpPC);
48435}
48436bool EvalEmitter::emitShlSint64Uint32(SourceInfo L) {
48437 if (!isActive()) return true;
48438 CurrentSource = L;
48439 return Shl<PT_Sint64, PT_Uint32>(S, OpPC);
48440}
48441bool EvalEmitter::emitShlSint64Sint64(SourceInfo L) {
48442 if (!isActive()) return true;
48443 CurrentSource = L;
48444 return Shl<PT_Sint64, PT_Sint64>(S, OpPC);
48445}
48446bool EvalEmitter::emitShlSint64Uint64(SourceInfo L) {
48447 if (!isActive()) return true;
48448 CurrentSource = L;
48449 return Shl<PT_Sint64, PT_Uint64>(S, OpPC);
48450}
48451bool EvalEmitter::emitShlSint64IntAP(SourceInfo L) {
48452 if (!isActive()) return true;
48453 CurrentSource = L;
48454 return Shl<PT_Sint64, PT_IntAP>(S, OpPC);
48455}
48456bool EvalEmitter::emitShlSint64IntAPS(SourceInfo L) {
48457 if (!isActive()) return true;
48458 CurrentSource = L;
48459 return Shl<PT_Sint64, PT_IntAPS>(S, OpPC);
48460}
48461bool EvalEmitter::emitShlUint64Sint8(SourceInfo L) {
48462 if (!isActive()) return true;
48463 CurrentSource = L;
48464 return Shl<PT_Uint64, PT_Sint8>(S, OpPC);
48465}
48466bool EvalEmitter::emitShlUint64Uint8(SourceInfo L) {
48467 if (!isActive()) return true;
48468 CurrentSource = L;
48469 return Shl<PT_Uint64, PT_Uint8>(S, OpPC);
48470}
48471bool EvalEmitter::emitShlUint64Sint16(SourceInfo L) {
48472 if (!isActive()) return true;
48473 CurrentSource = L;
48474 return Shl<PT_Uint64, PT_Sint16>(S, OpPC);
48475}
48476bool EvalEmitter::emitShlUint64Uint16(SourceInfo L) {
48477 if (!isActive()) return true;
48478 CurrentSource = L;
48479 return Shl<PT_Uint64, PT_Uint16>(S, OpPC);
48480}
48481bool EvalEmitter::emitShlUint64Sint32(SourceInfo L) {
48482 if (!isActive()) return true;
48483 CurrentSource = L;
48484 return Shl<PT_Uint64, PT_Sint32>(S, OpPC);
48485}
48486bool EvalEmitter::emitShlUint64Uint32(SourceInfo L) {
48487 if (!isActive()) return true;
48488 CurrentSource = L;
48489 return Shl<PT_Uint64, PT_Uint32>(S, OpPC);
48490}
48491bool EvalEmitter::emitShlUint64Sint64(SourceInfo L) {
48492 if (!isActive()) return true;
48493 CurrentSource = L;
48494 return Shl<PT_Uint64, PT_Sint64>(S, OpPC);
48495}
48496bool EvalEmitter::emitShlUint64Uint64(SourceInfo L) {
48497 if (!isActive()) return true;
48498 CurrentSource = L;
48499 return Shl<PT_Uint64, PT_Uint64>(S, OpPC);
48500}
48501bool EvalEmitter::emitShlUint64IntAP(SourceInfo L) {
48502 if (!isActive()) return true;
48503 CurrentSource = L;
48504 return Shl<PT_Uint64, PT_IntAP>(S, OpPC);
48505}
48506bool EvalEmitter::emitShlUint64IntAPS(SourceInfo L) {
48507 if (!isActive()) return true;
48508 CurrentSource = L;
48509 return Shl<PT_Uint64, PT_IntAPS>(S, OpPC);
48510}
48511bool EvalEmitter::emitShlIntAPSint8(SourceInfo L) {
48512 if (!isActive()) return true;
48513 CurrentSource = L;
48514 return Shl<PT_IntAP, PT_Sint8>(S, OpPC);
48515}
48516bool EvalEmitter::emitShlIntAPUint8(SourceInfo L) {
48517 if (!isActive()) return true;
48518 CurrentSource = L;
48519 return Shl<PT_IntAP, PT_Uint8>(S, OpPC);
48520}
48521bool EvalEmitter::emitShlIntAPSint16(SourceInfo L) {
48522 if (!isActive()) return true;
48523 CurrentSource = L;
48524 return Shl<PT_IntAP, PT_Sint16>(S, OpPC);
48525}
48526bool EvalEmitter::emitShlIntAPUint16(SourceInfo L) {
48527 if (!isActive()) return true;
48528 CurrentSource = L;
48529 return Shl<PT_IntAP, PT_Uint16>(S, OpPC);
48530}
48531bool EvalEmitter::emitShlIntAPSint32(SourceInfo L) {
48532 if (!isActive()) return true;
48533 CurrentSource = L;
48534 return Shl<PT_IntAP, PT_Sint32>(S, OpPC);
48535}
48536bool EvalEmitter::emitShlIntAPUint32(SourceInfo L) {
48537 if (!isActive()) return true;
48538 CurrentSource = L;
48539 return Shl<PT_IntAP, PT_Uint32>(S, OpPC);
48540}
48541bool EvalEmitter::emitShlIntAPSint64(SourceInfo L) {
48542 if (!isActive()) return true;
48543 CurrentSource = L;
48544 return Shl<PT_IntAP, PT_Sint64>(S, OpPC);
48545}
48546bool EvalEmitter::emitShlIntAPUint64(SourceInfo L) {
48547 if (!isActive()) return true;
48548 CurrentSource = L;
48549 return Shl<PT_IntAP, PT_Uint64>(S, OpPC);
48550}
48551bool EvalEmitter::emitShlIntAPIntAP(SourceInfo L) {
48552 if (!isActive()) return true;
48553 CurrentSource = L;
48554 return Shl<PT_IntAP, PT_IntAP>(S, OpPC);
48555}
48556bool EvalEmitter::emitShlIntAPIntAPS(SourceInfo L) {
48557 if (!isActive()) return true;
48558 CurrentSource = L;
48559 return Shl<PT_IntAP, PT_IntAPS>(S, OpPC);
48560}
48561bool EvalEmitter::emitShlIntAPSSint8(SourceInfo L) {
48562 if (!isActive()) return true;
48563 CurrentSource = L;
48564 return Shl<PT_IntAPS, PT_Sint8>(S, OpPC);
48565}
48566bool EvalEmitter::emitShlIntAPSUint8(SourceInfo L) {
48567 if (!isActive()) return true;
48568 CurrentSource = L;
48569 return Shl<PT_IntAPS, PT_Uint8>(S, OpPC);
48570}
48571bool EvalEmitter::emitShlIntAPSSint16(SourceInfo L) {
48572 if (!isActive()) return true;
48573 CurrentSource = L;
48574 return Shl<PT_IntAPS, PT_Sint16>(S, OpPC);
48575}
48576bool EvalEmitter::emitShlIntAPSUint16(SourceInfo L) {
48577 if (!isActive()) return true;
48578 CurrentSource = L;
48579 return Shl<PT_IntAPS, PT_Uint16>(S, OpPC);
48580}
48581bool EvalEmitter::emitShlIntAPSSint32(SourceInfo L) {
48582 if (!isActive()) return true;
48583 CurrentSource = L;
48584 return Shl<PT_IntAPS, PT_Sint32>(S, OpPC);
48585}
48586bool EvalEmitter::emitShlIntAPSUint32(SourceInfo L) {
48587 if (!isActive()) return true;
48588 CurrentSource = L;
48589 return Shl<PT_IntAPS, PT_Uint32>(S, OpPC);
48590}
48591bool EvalEmitter::emitShlIntAPSSint64(SourceInfo L) {
48592 if (!isActive()) return true;
48593 CurrentSource = L;
48594 return Shl<PT_IntAPS, PT_Sint64>(S, OpPC);
48595}
48596bool EvalEmitter::emitShlIntAPSUint64(SourceInfo L) {
48597 if (!isActive()) return true;
48598 CurrentSource = L;
48599 return Shl<PT_IntAPS, PT_Uint64>(S, OpPC);
48600}
48601bool EvalEmitter::emitShlIntAPSIntAP(SourceInfo L) {
48602 if (!isActive()) return true;
48603 CurrentSource = L;
48604 return Shl<PT_IntAPS, PT_IntAP>(S, OpPC);
48605}
48606bool EvalEmitter::emitShlIntAPSIntAPS(SourceInfo L) {
48607 if (!isActive()) return true;
48608 CurrentSource = L;
48609 return Shl<PT_IntAPS, PT_IntAPS>(S, OpPC);
48610}
48611#endif
48612#ifdef GET_OPCODE_NAMES
48613OP_ShrSint8Sint8,
48614OP_ShrSint8Uint8,
48615OP_ShrSint8Sint16,
48616OP_ShrSint8Uint16,
48617OP_ShrSint8Sint32,
48618OP_ShrSint8Uint32,
48619OP_ShrSint8Sint64,
48620OP_ShrSint8Uint64,
48621OP_ShrSint8IntAP,
48622OP_ShrSint8IntAPS,
48623OP_ShrUint8Sint8,
48624OP_ShrUint8Uint8,
48625OP_ShrUint8Sint16,
48626OP_ShrUint8Uint16,
48627OP_ShrUint8Sint32,
48628OP_ShrUint8Uint32,
48629OP_ShrUint8Sint64,
48630OP_ShrUint8Uint64,
48631OP_ShrUint8IntAP,
48632OP_ShrUint8IntAPS,
48633OP_ShrSint16Sint8,
48634OP_ShrSint16Uint8,
48635OP_ShrSint16Sint16,
48636OP_ShrSint16Uint16,
48637OP_ShrSint16Sint32,
48638OP_ShrSint16Uint32,
48639OP_ShrSint16Sint64,
48640OP_ShrSint16Uint64,
48641OP_ShrSint16IntAP,
48642OP_ShrSint16IntAPS,
48643OP_ShrUint16Sint8,
48644OP_ShrUint16Uint8,
48645OP_ShrUint16Sint16,
48646OP_ShrUint16Uint16,
48647OP_ShrUint16Sint32,
48648OP_ShrUint16Uint32,
48649OP_ShrUint16Sint64,
48650OP_ShrUint16Uint64,
48651OP_ShrUint16IntAP,
48652OP_ShrUint16IntAPS,
48653OP_ShrSint32Sint8,
48654OP_ShrSint32Uint8,
48655OP_ShrSint32Sint16,
48656OP_ShrSint32Uint16,
48657OP_ShrSint32Sint32,
48658OP_ShrSint32Uint32,
48659OP_ShrSint32Sint64,
48660OP_ShrSint32Uint64,
48661OP_ShrSint32IntAP,
48662OP_ShrSint32IntAPS,
48663OP_ShrUint32Sint8,
48664OP_ShrUint32Uint8,
48665OP_ShrUint32Sint16,
48666OP_ShrUint32Uint16,
48667OP_ShrUint32Sint32,
48668OP_ShrUint32Uint32,
48669OP_ShrUint32Sint64,
48670OP_ShrUint32Uint64,
48671OP_ShrUint32IntAP,
48672OP_ShrUint32IntAPS,
48673OP_ShrSint64Sint8,
48674OP_ShrSint64Uint8,
48675OP_ShrSint64Sint16,
48676OP_ShrSint64Uint16,
48677OP_ShrSint64Sint32,
48678OP_ShrSint64Uint32,
48679OP_ShrSint64Sint64,
48680OP_ShrSint64Uint64,
48681OP_ShrSint64IntAP,
48682OP_ShrSint64IntAPS,
48683OP_ShrUint64Sint8,
48684OP_ShrUint64Uint8,
48685OP_ShrUint64Sint16,
48686OP_ShrUint64Uint16,
48687OP_ShrUint64Sint32,
48688OP_ShrUint64Uint32,
48689OP_ShrUint64Sint64,
48690OP_ShrUint64Uint64,
48691OP_ShrUint64IntAP,
48692OP_ShrUint64IntAPS,
48693OP_ShrIntAPSint8,
48694OP_ShrIntAPUint8,
48695OP_ShrIntAPSint16,
48696OP_ShrIntAPUint16,
48697OP_ShrIntAPSint32,
48698OP_ShrIntAPUint32,
48699OP_ShrIntAPSint64,
48700OP_ShrIntAPUint64,
48701OP_ShrIntAPIntAP,
48702OP_ShrIntAPIntAPS,
48703OP_ShrIntAPSSint8,
48704OP_ShrIntAPSUint8,
48705OP_ShrIntAPSSint16,
48706OP_ShrIntAPSUint16,
48707OP_ShrIntAPSSint32,
48708OP_ShrIntAPSUint32,
48709OP_ShrIntAPSSint64,
48710OP_ShrIntAPSUint64,
48711OP_ShrIntAPSIntAP,
48712OP_ShrIntAPSIntAPS,
48713#endif
48714#ifdef GET_INTERPFN_LIST
48715&Interp_ShrSint8Sint8,
48716&Interp_ShrSint8Uint8,
48717&Interp_ShrSint8Sint16,
48718&Interp_ShrSint8Uint16,
48719&Interp_ShrSint8Sint32,
48720&Interp_ShrSint8Uint32,
48721&Interp_ShrSint8Sint64,
48722&Interp_ShrSint8Uint64,
48723&Interp_ShrSint8IntAP,
48724&Interp_ShrSint8IntAPS,
48725&Interp_ShrUint8Sint8,
48726&Interp_ShrUint8Uint8,
48727&Interp_ShrUint8Sint16,
48728&Interp_ShrUint8Uint16,
48729&Interp_ShrUint8Sint32,
48730&Interp_ShrUint8Uint32,
48731&Interp_ShrUint8Sint64,
48732&Interp_ShrUint8Uint64,
48733&Interp_ShrUint8IntAP,
48734&Interp_ShrUint8IntAPS,
48735&Interp_ShrSint16Sint8,
48736&Interp_ShrSint16Uint8,
48737&Interp_ShrSint16Sint16,
48738&Interp_ShrSint16Uint16,
48739&Interp_ShrSint16Sint32,
48740&Interp_ShrSint16Uint32,
48741&Interp_ShrSint16Sint64,
48742&Interp_ShrSint16Uint64,
48743&Interp_ShrSint16IntAP,
48744&Interp_ShrSint16IntAPS,
48745&Interp_ShrUint16Sint8,
48746&Interp_ShrUint16Uint8,
48747&Interp_ShrUint16Sint16,
48748&Interp_ShrUint16Uint16,
48749&Interp_ShrUint16Sint32,
48750&Interp_ShrUint16Uint32,
48751&Interp_ShrUint16Sint64,
48752&Interp_ShrUint16Uint64,
48753&Interp_ShrUint16IntAP,
48754&Interp_ShrUint16IntAPS,
48755&Interp_ShrSint32Sint8,
48756&Interp_ShrSint32Uint8,
48757&Interp_ShrSint32Sint16,
48758&Interp_ShrSint32Uint16,
48759&Interp_ShrSint32Sint32,
48760&Interp_ShrSint32Uint32,
48761&Interp_ShrSint32Sint64,
48762&Interp_ShrSint32Uint64,
48763&Interp_ShrSint32IntAP,
48764&Interp_ShrSint32IntAPS,
48765&Interp_ShrUint32Sint8,
48766&Interp_ShrUint32Uint8,
48767&Interp_ShrUint32Sint16,
48768&Interp_ShrUint32Uint16,
48769&Interp_ShrUint32Sint32,
48770&Interp_ShrUint32Uint32,
48771&Interp_ShrUint32Sint64,
48772&Interp_ShrUint32Uint64,
48773&Interp_ShrUint32IntAP,
48774&Interp_ShrUint32IntAPS,
48775&Interp_ShrSint64Sint8,
48776&Interp_ShrSint64Uint8,
48777&Interp_ShrSint64Sint16,
48778&Interp_ShrSint64Uint16,
48779&Interp_ShrSint64Sint32,
48780&Interp_ShrSint64Uint32,
48781&Interp_ShrSint64Sint64,
48782&Interp_ShrSint64Uint64,
48783&Interp_ShrSint64IntAP,
48784&Interp_ShrSint64IntAPS,
48785&Interp_ShrUint64Sint8,
48786&Interp_ShrUint64Uint8,
48787&Interp_ShrUint64Sint16,
48788&Interp_ShrUint64Uint16,
48789&Interp_ShrUint64Sint32,
48790&Interp_ShrUint64Uint32,
48791&Interp_ShrUint64Sint64,
48792&Interp_ShrUint64Uint64,
48793&Interp_ShrUint64IntAP,
48794&Interp_ShrUint64IntAPS,
48795&Interp_ShrIntAPSint8,
48796&Interp_ShrIntAPUint8,
48797&Interp_ShrIntAPSint16,
48798&Interp_ShrIntAPUint16,
48799&Interp_ShrIntAPSint32,
48800&Interp_ShrIntAPUint32,
48801&Interp_ShrIntAPSint64,
48802&Interp_ShrIntAPUint64,
48803&Interp_ShrIntAPIntAP,
48804&Interp_ShrIntAPIntAPS,
48805&Interp_ShrIntAPSSint8,
48806&Interp_ShrIntAPSUint8,
48807&Interp_ShrIntAPSSint16,
48808&Interp_ShrIntAPSUint16,
48809&Interp_ShrIntAPSSint32,
48810&Interp_ShrIntAPSUint32,
48811&Interp_ShrIntAPSSint64,
48812&Interp_ShrIntAPSUint64,
48813&Interp_ShrIntAPSIntAP,
48814&Interp_ShrIntAPSIntAPS,
48815#endif
48816#ifdef GET_INTERPFN_DISPATCHERS
48817PRESERVE_NONE
48818static bool Interp_ShrSint8Sint8(InterpState &S, CodePtr &PC) {
48819 if (!Shr<PT_Sint8, PT_Sint8>(S, PC)) return false;
48820#if USE_TAILCALLS
48821 MUSTTAIL return InterpNext(S, PC);
48822#else
48823 return true;
48824#endif
48825}
48826PRESERVE_NONE
48827static bool Interp_ShrSint8Uint8(InterpState &S, CodePtr &PC) {
48828 if (!Shr<PT_Sint8, PT_Uint8>(S, PC)) return false;
48829#if USE_TAILCALLS
48830 MUSTTAIL return InterpNext(S, PC);
48831#else
48832 return true;
48833#endif
48834}
48835PRESERVE_NONE
48836static bool Interp_ShrSint8Sint16(InterpState &S, CodePtr &PC) {
48837 if (!Shr<PT_Sint8, PT_Sint16>(S, PC)) return false;
48838#if USE_TAILCALLS
48839 MUSTTAIL return InterpNext(S, PC);
48840#else
48841 return true;
48842#endif
48843}
48844PRESERVE_NONE
48845static bool Interp_ShrSint8Uint16(InterpState &S, CodePtr &PC) {
48846 if (!Shr<PT_Sint8, PT_Uint16>(S, PC)) return false;
48847#if USE_TAILCALLS
48848 MUSTTAIL return InterpNext(S, PC);
48849#else
48850 return true;
48851#endif
48852}
48853PRESERVE_NONE
48854static bool Interp_ShrSint8Sint32(InterpState &S, CodePtr &PC) {
48855 if (!Shr<PT_Sint8, PT_Sint32>(S, PC)) return false;
48856#if USE_TAILCALLS
48857 MUSTTAIL return InterpNext(S, PC);
48858#else
48859 return true;
48860#endif
48861}
48862PRESERVE_NONE
48863static bool Interp_ShrSint8Uint32(InterpState &S, CodePtr &PC) {
48864 if (!Shr<PT_Sint8, PT_Uint32>(S, PC)) return false;
48865#if USE_TAILCALLS
48866 MUSTTAIL return InterpNext(S, PC);
48867#else
48868 return true;
48869#endif
48870}
48871PRESERVE_NONE
48872static bool Interp_ShrSint8Sint64(InterpState &S, CodePtr &PC) {
48873 if (!Shr<PT_Sint8, PT_Sint64>(S, PC)) return false;
48874#if USE_TAILCALLS
48875 MUSTTAIL return InterpNext(S, PC);
48876#else
48877 return true;
48878#endif
48879}
48880PRESERVE_NONE
48881static bool Interp_ShrSint8Uint64(InterpState &S, CodePtr &PC) {
48882 if (!Shr<PT_Sint8, PT_Uint64>(S, PC)) return false;
48883#if USE_TAILCALLS
48884 MUSTTAIL return InterpNext(S, PC);
48885#else
48886 return true;
48887#endif
48888}
48889PRESERVE_NONE
48890static bool Interp_ShrSint8IntAP(InterpState &S, CodePtr &PC) {
48891 if (!Shr<PT_Sint8, PT_IntAP>(S, PC)) return false;
48892#if USE_TAILCALLS
48893 MUSTTAIL return InterpNext(S, PC);
48894#else
48895 return true;
48896#endif
48897}
48898PRESERVE_NONE
48899static bool Interp_ShrSint8IntAPS(InterpState &S, CodePtr &PC) {
48900 if (!Shr<PT_Sint8, PT_IntAPS>(S, PC)) return false;
48901#if USE_TAILCALLS
48902 MUSTTAIL return InterpNext(S, PC);
48903#else
48904 return true;
48905#endif
48906}
48907PRESERVE_NONE
48908static bool Interp_ShrUint8Sint8(InterpState &S, CodePtr &PC) {
48909 if (!Shr<PT_Uint8, PT_Sint8>(S, PC)) return false;
48910#if USE_TAILCALLS
48911 MUSTTAIL return InterpNext(S, PC);
48912#else
48913 return true;
48914#endif
48915}
48916PRESERVE_NONE
48917static bool Interp_ShrUint8Uint8(InterpState &S, CodePtr &PC) {
48918 if (!Shr<PT_Uint8, PT_Uint8>(S, PC)) return false;
48919#if USE_TAILCALLS
48920 MUSTTAIL return InterpNext(S, PC);
48921#else
48922 return true;
48923#endif
48924}
48925PRESERVE_NONE
48926static bool Interp_ShrUint8Sint16(InterpState &S, CodePtr &PC) {
48927 if (!Shr<PT_Uint8, PT_Sint16>(S, PC)) return false;
48928#if USE_TAILCALLS
48929 MUSTTAIL return InterpNext(S, PC);
48930#else
48931 return true;
48932#endif
48933}
48934PRESERVE_NONE
48935static bool Interp_ShrUint8Uint16(InterpState &S, CodePtr &PC) {
48936 if (!Shr<PT_Uint8, PT_Uint16>(S, PC)) return false;
48937#if USE_TAILCALLS
48938 MUSTTAIL return InterpNext(S, PC);
48939#else
48940 return true;
48941#endif
48942}
48943PRESERVE_NONE
48944static bool Interp_ShrUint8Sint32(InterpState &S, CodePtr &PC) {
48945 if (!Shr<PT_Uint8, PT_Sint32>(S, PC)) return false;
48946#if USE_TAILCALLS
48947 MUSTTAIL return InterpNext(S, PC);
48948#else
48949 return true;
48950#endif
48951}
48952PRESERVE_NONE
48953static bool Interp_ShrUint8Uint32(InterpState &S, CodePtr &PC) {
48954 if (!Shr<PT_Uint8, PT_Uint32>(S, PC)) return false;
48955#if USE_TAILCALLS
48956 MUSTTAIL return InterpNext(S, PC);
48957#else
48958 return true;
48959#endif
48960}
48961PRESERVE_NONE
48962static bool Interp_ShrUint8Sint64(InterpState &S, CodePtr &PC) {
48963 if (!Shr<PT_Uint8, PT_Sint64>(S, PC)) return false;
48964#if USE_TAILCALLS
48965 MUSTTAIL return InterpNext(S, PC);
48966#else
48967 return true;
48968#endif
48969}
48970PRESERVE_NONE
48971static bool Interp_ShrUint8Uint64(InterpState &S, CodePtr &PC) {
48972 if (!Shr<PT_Uint8, PT_Uint64>(S, PC)) return false;
48973#if USE_TAILCALLS
48974 MUSTTAIL return InterpNext(S, PC);
48975#else
48976 return true;
48977#endif
48978}
48979PRESERVE_NONE
48980static bool Interp_ShrUint8IntAP(InterpState &S, CodePtr &PC) {
48981 if (!Shr<PT_Uint8, PT_IntAP>(S, PC)) return false;
48982#if USE_TAILCALLS
48983 MUSTTAIL return InterpNext(S, PC);
48984#else
48985 return true;
48986#endif
48987}
48988PRESERVE_NONE
48989static bool Interp_ShrUint8IntAPS(InterpState &S, CodePtr &PC) {
48990 if (!Shr<PT_Uint8, PT_IntAPS>(S, PC)) return false;
48991#if USE_TAILCALLS
48992 MUSTTAIL return InterpNext(S, PC);
48993#else
48994 return true;
48995#endif
48996}
48997PRESERVE_NONE
48998static bool Interp_ShrSint16Sint8(InterpState &S, CodePtr &PC) {
48999 if (!Shr<PT_Sint16, PT_Sint8>(S, PC)) return false;
49000#if USE_TAILCALLS
49001 MUSTTAIL return InterpNext(S, PC);
49002#else
49003 return true;
49004#endif
49005}
49006PRESERVE_NONE
49007static bool Interp_ShrSint16Uint8(InterpState &S, CodePtr &PC) {
49008 if (!Shr<PT_Sint16, PT_Uint8>(S, PC)) return false;
49009#if USE_TAILCALLS
49010 MUSTTAIL return InterpNext(S, PC);
49011#else
49012 return true;
49013#endif
49014}
49015PRESERVE_NONE
49016static bool Interp_ShrSint16Sint16(InterpState &S, CodePtr &PC) {
49017 if (!Shr<PT_Sint16, PT_Sint16>(S, PC)) return false;
49018#if USE_TAILCALLS
49019 MUSTTAIL return InterpNext(S, PC);
49020#else
49021 return true;
49022#endif
49023}
49024PRESERVE_NONE
49025static bool Interp_ShrSint16Uint16(InterpState &S, CodePtr &PC) {
49026 if (!Shr<PT_Sint16, PT_Uint16>(S, PC)) return false;
49027#if USE_TAILCALLS
49028 MUSTTAIL return InterpNext(S, PC);
49029#else
49030 return true;
49031#endif
49032}
49033PRESERVE_NONE
49034static bool Interp_ShrSint16Sint32(InterpState &S, CodePtr &PC) {
49035 if (!Shr<PT_Sint16, PT_Sint32>(S, PC)) return false;
49036#if USE_TAILCALLS
49037 MUSTTAIL return InterpNext(S, PC);
49038#else
49039 return true;
49040#endif
49041}
49042PRESERVE_NONE
49043static bool Interp_ShrSint16Uint32(InterpState &S, CodePtr &PC) {
49044 if (!Shr<PT_Sint16, PT_Uint32>(S, PC)) return false;
49045#if USE_TAILCALLS
49046 MUSTTAIL return InterpNext(S, PC);
49047#else
49048 return true;
49049#endif
49050}
49051PRESERVE_NONE
49052static bool Interp_ShrSint16Sint64(InterpState &S, CodePtr &PC) {
49053 if (!Shr<PT_Sint16, PT_Sint64>(S, PC)) return false;
49054#if USE_TAILCALLS
49055 MUSTTAIL return InterpNext(S, PC);
49056#else
49057 return true;
49058#endif
49059}
49060PRESERVE_NONE
49061static bool Interp_ShrSint16Uint64(InterpState &S, CodePtr &PC) {
49062 if (!Shr<PT_Sint16, PT_Uint64>(S, PC)) return false;
49063#if USE_TAILCALLS
49064 MUSTTAIL return InterpNext(S, PC);
49065#else
49066 return true;
49067#endif
49068}
49069PRESERVE_NONE
49070static bool Interp_ShrSint16IntAP(InterpState &S, CodePtr &PC) {
49071 if (!Shr<PT_Sint16, PT_IntAP>(S, PC)) return false;
49072#if USE_TAILCALLS
49073 MUSTTAIL return InterpNext(S, PC);
49074#else
49075 return true;
49076#endif
49077}
49078PRESERVE_NONE
49079static bool Interp_ShrSint16IntAPS(InterpState &S, CodePtr &PC) {
49080 if (!Shr<PT_Sint16, PT_IntAPS>(S, PC)) return false;
49081#if USE_TAILCALLS
49082 MUSTTAIL return InterpNext(S, PC);
49083#else
49084 return true;
49085#endif
49086}
49087PRESERVE_NONE
49088static bool Interp_ShrUint16Sint8(InterpState &S, CodePtr &PC) {
49089 if (!Shr<PT_Uint16, PT_Sint8>(S, PC)) return false;
49090#if USE_TAILCALLS
49091 MUSTTAIL return InterpNext(S, PC);
49092#else
49093 return true;
49094#endif
49095}
49096PRESERVE_NONE
49097static bool Interp_ShrUint16Uint8(InterpState &S, CodePtr &PC) {
49098 if (!Shr<PT_Uint16, PT_Uint8>(S, PC)) return false;
49099#if USE_TAILCALLS
49100 MUSTTAIL return InterpNext(S, PC);
49101#else
49102 return true;
49103#endif
49104}
49105PRESERVE_NONE
49106static bool Interp_ShrUint16Sint16(InterpState &S, CodePtr &PC) {
49107 if (!Shr<PT_Uint16, PT_Sint16>(S, PC)) return false;
49108#if USE_TAILCALLS
49109 MUSTTAIL return InterpNext(S, PC);
49110#else
49111 return true;
49112#endif
49113}
49114PRESERVE_NONE
49115static bool Interp_ShrUint16Uint16(InterpState &S, CodePtr &PC) {
49116 if (!Shr<PT_Uint16, PT_Uint16>(S, PC)) return false;
49117#if USE_TAILCALLS
49118 MUSTTAIL return InterpNext(S, PC);
49119#else
49120 return true;
49121#endif
49122}
49123PRESERVE_NONE
49124static bool Interp_ShrUint16Sint32(InterpState &S, CodePtr &PC) {
49125 if (!Shr<PT_Uint16, PT_Sint32>(S, PC)) return false;
49126#if USE_TAILCALLS
49127 MUSTTAIL return InterpNext(S, PC);
49128#else
49129 return true;
49130#endif
49131}
49132PRESERVE_NONE
49133static bool Interp_ShrUint16Uint32(InterpState &S, CodePtr &PC) {
49134 if (!Shr<PT_Uint16, PT_Uint32>(S, PC)) return false;
49135#if USE_TAILCALLS
49136 MUSTTAIL return InterpNext(S, PC);
49137#else
49138 return true;
49139#endif
49140}
49141PRESERVE_NONE
49142static bool Interp_ShrUint16Sint64(InterpState &S, CodePtr &PC) {
49143 if (!Shr<PT_Uint16, PT_Sint64>(S, PC)) return false;
49144#if USE_TAILCALLS
49145 MUSTTAIL return InterpNext(S, PC);
49146#else
49147 return true;
49148#endif
49149}
49150PRESERVE_NONE
49151static bool Interp_ShrUint16Uint64(InterpState &S, CodePtr &PC) {
49152 if (!Shr<PT_Uint16, PT_Uint64>(S, PC)) return false;
49153#if USE_TAILCALLS
49154 MUSTTAIL return InterpNext(S, PC);
49155#else
49156 return true;
49157#endif
49158}
49159PRESERVE_NONE
49160static bool Interp_ShrUint16IntAP(InterpState &S, CodePtr &PC) {
49161 if (!Shr<PT_Uint16, PT_IntAP>(S, PC)) return false;
49162#if USE_TAILCALLS
49163 MUSTTAIL return InterpNext(S, PC);
49164#else
49165 return true;
49166#endif
49167}
49168PRESERVE_NONE
49169static bool Interp_ShrUint16IntAPS(InterpState &S, CodePtr &PC) {
49170 if (!Shr<PT_Uint16, PT_IntAPS>(S, PC)) return false;
49171#if USE_TAILCALLS
49172 MUSTTAIL return InterpNext(S, PC);
49173#else
49174 return true;
49175#endif
49176}
49177PRESERVE_NONE
49178static bool Interp_ShrSint32Sint8(InterpState &S, CodePtr &PC) {
49179 if (!Shr<PT_Sint32, PT_Sint8>(S, PC)) return false;
49180#if USE_TAILCALLS
49181 MUSTTAIL return InterpNext(S, PC);
49182#else
49183 return true;
49184#endif
49185}
49186PRESERVE_NONE
49187static bool Interp_ShrSint32Uint8(InterpState &S, CodePtr &PC) {
49188 if (!Shr<PT_Sint32, PT_Uint8>(S, PC)) return false;
49189#if USE_TAILCALLS
49190 MUSTTAIL return InterpNext(S, PC);
49191#else
49192 return true;
49193#endif
49194}
49195PRESERVE_NONE
49196static bool Interp_ShrSint32Sint16(InterpState &S, CodePtr &PC) {
49197 if (!Shr<PT_Sint32, PT_Sint16>(S, PC)) return false;
49198#if USE_TAILCALLS
49199 MUSTTAIL return InterpNext(S, PC);
49200#else
49201 return true;
49202#endif
49203}
49204PRESERVE_NONE
49205static bool Interp_ShrSint32Uint16(InterpState &S, CodePtr &PC) {
49206 if (!Shr<PT_Sint32, PT_Uint16>(S, PC)) return false;
49207#if USE_TAILCALLS
49208 MUSTTAIL return InterpNext(S, PC);
49209#else
49210 return true;
49211#endif
49212}
49213PRESERVE_NONE
49214static bool Interp_ShrSint32Sint32(InterpState &S, CodePtr &PC) {
49215 if (!Shr<PT_Sint32, PT_Sint32>(S, PC)) return false;
49216#if USE_TAILCALLS
49217 MUSTTAIL return InterpNext(S, PC);
49218#else
49219 return true;
49220#endif
49221}
49222PRESERVE_NONE
49223static bool Interp_ShrSint32Uint32(InterpState &S, CodePtr &PC) {
49224 if (!Shr<PT_Sint32, PT_Uint32>(S, PC)) return false;
49225#if USE_TAILCALLS
49226 MUSTTAIL return InterpNext(S, PC);
49227#else
49228 return true;
49229#endif
49230}
49231PRESERVE_NONE
49232static bool Interp_ShrSint32Sint64(InterpState &S, CodePtr &PC) {
49233 if (!Shr<PT_Sint32, PT_Sint64>(S, PC)) return false;
49234#if USE_TAILCALLS
49235 MUSTTAIL return InterpNext(S, PC);
49236#else
49237 return true;
49238#endif
49239}
49240PRESERVE_NONE
49241static bool Interp_ShrSint32Uint64(InterpState &S, CodePtr &PC) {
49242 if (!Shr<PT_Sint32, PT_Uint64>(S, PC)) return false;
49243#if USE_TAILCALLS
49244 MUSTTAIL return InterpNext(S, PC);
49245#else
49246 return true;
49247#endif
49248}
49249PRESERVE_NONE
49250static bool Interp_ShrSint32IntAP(InterpState &S, CodePtr &PC) {
49251 if (!Shr<PT_Sint32, PT_IntAP>(S, PC)) return false;
49252#if USE_TAILCALLS
49253 MUSTTAIL return InterpNext(S, PC);
49254#else
49255 return true;
49256#endif
49257}
49258PRESERVE_NONE
49259static bool Interp_ShrSint32IntAPS(InterpState &S, CodePtr &PC) {
49260 if (!Shr<PT_Sint32, PT_IntAPS>(S, PC)) return false;
49261#if USE_TAILCALLS
49262 MUSTTAIL return InterpNext(S, PC);
49263#else
49264 return true;
49265#endif
49266}
49267PRESERVE_NONE
49268static bool Interp_ShrUint32Sint8(InterpState &S, CodePtr &PC) {
49269 if (!Shr<PT_Uint32, PT_Sint8>(S, PC)) return false;
49270#if USE_TAILCALLS
49271 MUSTTAIL return InterpNext(S, PC);
49272#else
49273 return true;
49274#endif
49275}
49276PRESERVE_NONE
49277static bool Interp_ShrUint32Uint8(InterpState &S, CodePtr &PC) {
49278 if (!Shr<PT_Uint32, PT_Uint8>(S, PC)) return false;
49279#if USE_TAILCALLS
49280 MUSTTAIL return InterpNext(S, PC);
49281#else
49282 return true;
49283#endif
49284}
49285PRESERVE_NONE
49286static bool Interp_ShrUint32Sint16(InterpState &S, CodePtr &PC) {
49287 if (!Shr<PT_Uint32, PT_Sint16>(S, PC)) return false;
49288#if USE_TAILCALLS
49289 MUSTTAIL return InterpNext(S, PC);
49290#else
49291 return true;
49292#endif
49293}
49294PRESERVE_NONE
49295static bool Interp_ShrUint32Uint16(InterpState &S, CodePtr &PC) {
49296 if (!Shr<PT_Uint32, PT_Uint16>(S, PC)) return false;
49297#if USE_TAILCALLS
49298 MUSTTAIL return InterpNext(S, PC);
49299#else
49300 return true;
49301#endif
49302}
49303PRESERVE_NONE
49304static bool Interp_ShrUint32Sint32(InterpState &S, CodePtr &PC) {
49305 if (!Shr<PT_Uint32, PT_Sint32>(S, PC)) return false;
49306#if USE_TAILCALLS
49307 MUSTTAIL return InterpNext(S, PC);
49308#else
49309 return true;
49310#endif
49311}
49312PRESERVE_NONE
49313static bool Interp_ShrUint32Uint32(InterpState &S, CodePtr &PC) {
49314 if (!Shr<PT_Uint32, PT_Uint32>(S, PC)) return false;
49315#if USE_TAILCALLS
49316 MUSTTAIL return InterpNext(S, PC);
49317#else
49318 return true;
49319#endif
49320}
49321PRESERVE_NONE
49322static bool Interp_ShrUint32Sint64(InterpState &S, CodePtr &PC) {
49323 if (!Shr<PT_Uint32, PT_Sint64>(S, PC)) return false;
49324#if USE_TAILCALLS
49325 MUSTTAIL return InterpNext(S, PC);
49326#else
49327 return true;
49328#endif
49329}
49330PRESERVE_NONE
49331static bool Interp_ShrUint32Uint64(InterpState &S, CodePtr &PC) {
49332 if (!Shr<PT_Uint32, PT_Uint64>(S, PC)) return false;
49333#if USE_TAILCALLS
49334 MUSTTAIL return InterpNext(S, PC);
49335#else
49336 return true;
49337#endif
49338}
49339PRESERVE_NONE
49340static bool Interp_ShrUint32IntAP(InterpState &S, CodePtr &PC) {
49341 if (!Shr<PT_Uint32, PT_IntAP>(S, PC)) return false;
49342#if USE_TAILCALLS
49343 MUSTTAIL return InterpNext(S, PC);
49344#else
49345 return true;
49346#endif
49347}
49348PRESERVE_NONE
49349static bool Interp_ShrUint32IntAPS(InterpState &S, CodePtr &PC) {
49350 if (!Shr<PT_Uint32, PT_IntAPS>(S, PC)) return false;
49351#if USE_TAILCALLS
49352 MUSTTAIL return InterpNext(S, PC);
49353#else
49354 return true;
49355#endif
49356}
49357PRESERVE_NONE
49358static bool Interp_ShrSint64Sint8(InterpState &S, CodePtr &PC) {
49359 if (!Shr<PT_Sint64, PT_Sint8>(S, PC)) return false;
49360#if USE_TAILCALLS
49361 MUSTTAIL return InterpNext(S, PC);
49362#else
49363 return true;
49364#endif
49365}
49366PRESERVE_NONE
49367static bool Interp_ShrSint64Uint8(InterpState &S, CodePtr &PC) {
49368 if (!Shr<PT_Sint64, PT_Uint8>(S, PC)) return false;
49369#if USE_TAILCALLS
49370 MUSTTAIL return InterpNext(S, PC);
49371#else
49372 return true;
49373#endif
49374}
49375PRESERVE_NONE
49376static bool Interp_ShrSint64Sint16(InterpState &S, CodePtr &PC) {
49377 if (!Shr<PT_Sint64, PT_Sint16>(S, PC)) return false;
49378#if USE_TAILCALLS
49379 MUSTTAIL return InterpNext(S, PC);
49380#else
49381 return true;
49382#endif
49383}
49384PRESERVE_NONE
49385static bool Interp_ShrSint64Uint16(InterpState &S, CodePtr &PC) {
49386 if (!Shr<PT_Sint64, PT_Uint16>(S, PC)) return false;
49387#if USE_TAILCALLS
49388 MUSTTAIL return InterpNext(S, PC);
49389#else
49390 return true;
49391#endif
49392}
49393PRESERVE_NONE
49394static bool Interp_ShrSint64Sint32(InterpState &S, CodePtr &PC) {
49395 if (!Shr<PT_Sint64, PT_Sint32>(S, PC)) return false;
49396#if USE_TAILCALLS
49397 MUSTTAIL return InterpNext(S, PC);
49398#else
49399 return true;
49400#endif
49401}
49402PRESERVE_NONE
49403static bool Interp_ShrSint64Uint32(InterpState &S, CodePtr &PC) {
49404 if (!Shr<PT_Sint64, PT_Uint32>(S, PC)) return false;
49405#if USE_TAILCALLS
49406 MUSTTAIL return InterpNext(S, PC);
49407#else
49408 return true;
49409#endif
49410}
49411PRESERVE_NONE
49412static bool Interp_ShrSint64Sint64(InterpState &S, CodePtr &PC) {
49413 if (!Shr<PT_Sint64, PT_Sint64>(S, PC)) return false;
49414#if USE_TAILCALLS
49415 MUSTTAIL return InterpNext(S, PC);
49416#else
49417 return true;
49418#endif
49419}
49420PRESERVE_NONE
49421static bool Interp_ShrSint64Uint64(InterpState &S, CodePtr &PC) {
49422 if (!Shr<PT_Sint64, PT_Uint64>(S, PC)) return false;
49423#if USE_TAILCALLS
49424 MUSTTAIL return InterpNext(S, PC);
49425#else
49426 return true;
49427#endif
49428}
49429PRESERVE_NONE
49430static bool Interp_ShrSint64IntAP(InterpState &S, CodePtr &PC) {
49431 if (!Shr<PT_Sint64, PT_IntAP>(S, PC)) return false;
49432#if USE_TAILCALLS
49433 MUSTTAIL return InterpNext(S, PC);
49434#else
49435 return true;
49436#endif
49437}
49438PRESERVE_NONE
49439static bool Interp_ShrSint64IntAPS(InterpState &S, CodePtr &PC) {
49440 if (!Shr<PT_Sint64, PT_IntAPS>(S, PC)) return false;
49441#if USE_TAILCALLS
49442 MUSTTAIL return InterpNext(S, PC);
49443#else
49444 return true;
49445#endif
49446}
49447PRESERVE_NONE
49448static bool Interp_ShrUint64Sint8(InterpState &S, CodePtr &PC) {
49449 if (!Shr<PT_Uint64, PT_Sint8>(S, PC)) return false;
49450#if USE_TAILCALLS
49451 MUSTTAIL return InterpNext(S, PC);
49452#else
49453 return true;
49454#endif
49455}
49456PRESERVE_NONE
49457static bool Interp_ShrUint64Uint8(InterpState &S, CodePtr &PC) {
49458 if (!Shr<PT_Uint64, PT_Uint8>(S, PC)) return false;
49459#if USE_TAILCALLS
49460 MUSTTAIL return InterpNext(S, PC);
49461#else
49462 return true;
49463#endif
49464}
49465PRESERVE_NONE
49466static bool Interp_ShrUint64Sint16(InterpState &S, CodePtr &PC) {
49467 if (!Shr<PT_Uint64, PT_Sint16>(S, PC)) return false;
49468#if USE_TAILCALLS
49469 MUSTTAIL return InterpNext(S, PC);
49470#else
49471 return true;
49472#endif
49473}
49474PRESERVE_NONE
49475static bool Interp_ShrUint64Uint16(InterpState &S, CodePtr &PC) {
49476 if (!Shr<PT_Uint64, PT_Uint16>(S, PC)) return false;
49477#if USE_TAILCALLS
49478 MUSTTAIL return InterpNext(S, PC);
49479#else
49480 return true;
49481#endif
49482}
49483PRESERVE_NONE
49484static bool Interp_ShrUint64Sint32(InterpState &S, CodePtr &PC) {
49485 if (!Shr<PT_Uint64, PT_Sint32>(S, PC)) return false;
49486#if USE_TAILCALLS
49487 MUSTTAIL return InterpNext(S, PC);
49488#else
49489 return true;
49490#endif
49491}
49492PRESERVE_NONE
49493static bool Interp_ShrUint64Uint32(InterpState &S, CodePtr &PC) {
49494 if (!Shr<PT_Uint64, PT_Uint32>(S, PC)) return false;
49495#if USE_TAILCALLS
49496 MUSTTAIL return InterpNext(S, PC);
49497#else
49498 return true;
49499#endif
49500}
49501PRESERVE_NONE
49502static bool Interp_ShrUint64Sint64(InterpState &S, CodePtr &PC) {
49503 if (!Shr<PT_Uint64, PT_Sint64>(S, PC)) return false;
49504#if USE_TAILCALLS
49505 MUSTTAIL return InterpNext(S, PC);
49506#else
49507 return true;
49508#endif
49509}
49510PRESERVE_NONE
49511static bool Interp_ShrUint64Uint64(InterpState &S, CodePtr &PC) {
49512 if (!Shr<PT_Uint64, PT_Uint64>(S, PC)) return false;
49513#if USE_TAILCALLS
49514 MUSTTAIL return InterpNext(S, PC);
49515#else
49516 return true;
49517#endif
49518}
49519PRESERVE_NONE
49520static bool Interp_ShrUint64IntAP(InterpState &S, CodePtr &PC) {
49521 if (!Shr<PT_Uint64, PT_IntAP>(S, PC)) return false;
49522#if USE_TAILCALLS
49523 MUSTTAIL return InterpNext(S, PC);
49524#else
49525 return true;
49526#endif
49527}
49528PRESERVE_NONE
49529static bool Interp_ShrUint64IntAPS(InterpState &S, CodePtr &PC) {
49530 if (!Shr<PT_Uint64, PT_IntAPS>(S, PC)) return false;
49531#if USE_TAILCALLS
49532 MUSTTAIL return InterpNext(S, PC);
49533#else
49534 return true;
49535#endif
49536}
49537PRESERVE_NONE
49538static bool Interp_ShrIntAPSint8(InterpState &S, CodePtr &PC) {
49539 if (!Shr<PT_IntAP, PT_Sint8>(S, PC)) return false;
49540#if USE_TAILCALLS
49541 MUSTTAIL return InterpNext(S, PC);
49542#else
49543 return true;
49544#endif
49545}
49546PRESERVE_NONE
49547static bool Interp_ShrIntAPUint8(InterpState &S, CodePtr &PC) {
49548 if (!Shr<PT_IntAP, PT_Uint8>(S, PC)) return false;
49549#if USE_TAILCALLS
49550 MUSTTAIL return InterpNext(S, PC);
49551#else
49552 return true;
49553#endif
49554}
49555PRESERVE_NONE
49556static bool Interp_ShrIntAPSint16(InterpState &S, CodePtr &PC) {
49557 if (!Shr<PT_IntAP, PT_Sint16>(S, PC)) return false;
49558#if USE_TAILCALLS
49559 MUSTTAIL return InterpNext(S, PC);
49560#else
49561 return true;
49562#endif
49563}
49564PRESERVE_NONE
49565static bool Interp_ShrIntAPUint16(InterpState &S, CodePtr &PC) {
49566 if (!Shr<PT_IntAP, PT_Uint16>(S, PC)) return false;
49567#if USE_TAILCALLS
49568 MUSTTAIL return InterpNext(S, PC);
49569#else
49570 return true;
49571#endif
49572}
49573PRESERVE_NONE
49574static bool Interp_ShrIntAPSint32(InterpState &S, CodePtr &PC) {
49575 if (!Shr<PT_IntAP, PT_Sint32>(S, PC)) return false;
49576#if USE_TAILCALLS
49577 MUSTTAIL return InterpNext(S, PC);
49578#else
49579 return true;
49580#endif
49581}
49582PRESERVE_NONE
49583static bool Interp_ShrIntAPUint32(InterpState &S, CodePtr &PC) {
49584 if (!Shr<PT_IntAP, PT_Uint32>(S, PC)) return false;
49585#if USE_TAILCALLS
49586 MUSTTAIL return InterpNext(S, PC);
49587#else
49588 return true;
49589#endif
49590}
49591PRESERVE_NONE
49592static bool Interp_ShrIntAPSint64(InterpState &S, CodePtr &PC) {
49593 if (!Shr<PT_IntAP, PT_Sint64>(S, PC)) return false;
49594#if USE_TAILCALLS
49595 MUSTTAIL return InterpNext(S, PC);
49596#else
49597 return true;
49598#endif
49599}
49600PRESERVE_NONE
49601static bool Interp_ShrIntAPUint64(InterpState &S, CodePtr &PC) {
49602 if (!Shr<PT_IntAP, PT_Uint64>(S, PC)) return false;
49603#if USE_TAILCALLS
49604 MUSTTAIL return InterpNext(S, PC);
49605#else
49606 return true;
49607#endif
49608}
49609PRESERVE_NONE
49610static bool Interp_ShrIntAPIntAP(InterpState &S, CodePtr &PC) {
49611 if (!Shr<PT_IntAP, PT_IntAP>(S, PC)) return false;
49612#if USE_TAILCALLS
49613 MUSTTAIL return InterpNext(S, PC);
49614#else
49615 return true;
49616#endif
49617}
49618PRESERVE_NONE
49619static bool Interp_ShrIntAPIntAPS(InterpState &S, CodePtr &PC) {
49620 if (!Shr<PT_IntAP, PT_IntAPS>(S, PC)) return false;
49621#if USE_TAILCALLS
49622 MUSTTAIL return InterpNext(S, PC);
49623#else
49624 return true;
49625#endif
49626}
49627PRESERVE_NONE
49628static bool Interp_ShrIntAPSSint8(InterpState &S, CodePtr &PC) {
49629 if (!Shr<PT_IntAPS, PT_Sint8>(S, PC)) return false;
49630#if USE_TAILCALLS
49631 MUSTTAIL return InterpNext(S, PC);
49632#else
49633 return true;
49634#endif
49635}
49636PRESERVE_NONE
49637static bool Interp_ShrIntAPSUint8(InterpState &S, CodePtr &PC) {
49638 if (!Shr<PT_IntAPS, PT_Uint8>(S, PC)) return false;
49639#if USE_TAILCALLS
49640 MUSTTAIL return InterpNext(S, PC);
49641#else
49642 return true;
49643#endif
49644}
49645PRESERVE_NONE
49646static bool Interp_ShrIntAPSSint16(InterpState &S, CodePtr &PC) {
49647 if (!Shr<PT_IntAPS, PT_Sint16>(S, PC)) return false;
49648#if USE_TAILCALLS
49649 MUSTTAIL return InterpNext(S, PC);
49650#else
49651 return true;
49652#endif
49653}
49654PRESERVE_NONE
49655static bool Interp_ShrIntAPSUint16(InterpState &S, CodePtr &PC) {
49656 if (!Shr<PT_IntAPS, PT_Uint16>(S, PC)) return false;
49657#if USE_TAILCALLS
49658 MUSTTAIL return InterpNext(S, PC);
49659#else
49660 return true;
49661#endif
49662}
49663PRESERVE_NONE
49664static bool Interp_ShrIntAPSSint32(InterpState &S, CodePtr &PC) {
49665 if (!Shr<PT_IntAPS, PT_Sint32>(S, PC)) return false;
49666#if USE_TAILCALLS
49667 MUSTTAIL return InterpNext(S, PC);
49668#else
49669 return true;
49670#endif
49671}
49672PRESERVE_NONE
49673static bool Interp_ShrIntAPSUint32(InterpState &S, CodePtr &PC) {
49674 if (!Shr<PT_IntAPS, PT_Uint32>(S, PC)) return false;
49675#if USE_TAILCALLS
49676 MUSTTAIL return InterpNext(S, PC);
49677#else
49678 return true;
49679#endif
49680}
49681PRESERVE_NONE
49682static bool Interp_ShrIntAPSSint64(InterpState &S, CodePtr &PC) {
49683 if (!Shr<PT_IntAPS, PT_Sint64>(S, PC)) return false;
49684#if USE_TAILCALLS
49685 MUSTTAIL return InterpNext(S, PC);
49686#else
49687 return true;
49688#endif
49689}
49690PRESERVE_NONE
49691static bool Interp_ShrIntAPSUint64(InterpState &S, CodePtr &PC) {
49692 if (!Shr<PT_IntAPS, PT_Uint64>(S, PC)) return false;
49693#if USE_TAILCALLS
49694 MUSTTAIL return InterpNext(S, PC);
49695#else
49696 return true;
49697#endif
49698}
49699PRESERVE_NONE
49700static bool Interp_ShrIntAPSIntAP(InterpState &S, CodePtr &PC) {
49701 if (!Shr<PT_IntAPS, PT_IntAP>(S, PC)) return false;
49702#if USE_TAILCALLS
49703 MUSTTAIL return InterpNext(S, PC);
49704#else
49705 return true;
49706#endif
49707}
49708PRESERVE_NONE
49709static bool Interp_ShrIntAPSIntAPS(InterpState &S, CodePtr &PC) {
49710 if (!Shr<PT_IntAPS, PT_IntAPS>(S, PC)) return false;
49711#if USE_TAILCALLS
49712 MUSTTAIL return InterpNext(S, PC);
49713#else
49714 return true;
49715#endif
49716}
49717#endif
49718#ifdef GET_DISASM
49719case OP_ShrSint8Sint8:
49720 Text.Op = PrintName("ShrSint8Sint8");
49721 break;
49722case OP_ShrSint8Uint8:
49723 Text.Op = PrintName("ShrSint8Uint8");
49724 break;
49725case OP_ShrSint8Sint16:
49726 Text.Op = PrintName("ShrSint8Sint16");
49727 break;
49728case OP_ShrSint8Uint16:
49729 Text.Op = PrintName("ShrSint8Uint16");
49730 break;
49731case OP_ShrSint8Sint32:
49732 Text.Op = PrintName("ShrSint8Sint32");
49733 break;
49734case OP_ShrSint8Uint32:
49735 Text.Op = PrintName("ShrSint8Uint32");
49736 break;
49737case OP_ShrSint8Sint64:
49738 Text.Op = PrintName("ShrSint8Sint64");
49739 break;
49740case OP_ShrSint8Uint64:
49741 Text.Op = PrintName("ShrSint8Uint64");
49742 break;
49743case OP_ShrSint8IntAP:
49744 Text.Op = PrintName("ShrSint8IntAP");
49745 break;
49746case OP_ShrSint8IntAPS:
49747 Text.Op = PrintName("ShrSint8IntAPS");
49748 break;
49749case OP_ShrUint8Sint8:
49750 Text.Op = PrintName("ShrUint8Sint8");
49751 break;
49752case OP_ShrUint8Uint8:
49753 Text.Op = PrintName("ShrUint8Uint8");
49754 break;
49755case OP_ShrUint8Sint16:
49756 Text.Op = PrintName("ShrUint8Sint16");
49757 break;
49758case OP_ShrUint8Uint16:
49759 Text.Op = PrintName("ShrUint8Uint16");
49760 break;
49761case OP_ShrUint8Sint32:
49762 Text.Op = PrintName("ShrUint8Sint32");
49763 break;
49764case OP_ShrUint8Uint32:
49765 Text.Op = PrintName("ShrUint8Uint32");
49766 break;
49767case OP_ShrUint8Sint64:
49768 Text.Op = PrintName("ShrUint8Sint64");
49769 break;
49770case OP_ShrUint8Uint64:
49771 Text.Op = PrintName("ShrUint8Uint64");
49772 break;
49773case OP_ShrUint8IntAP:
49774 Text.Op = PrintName("ShrUint8IntAP");
49775 break;
49776case OP_ShrUint8IntAPS:
49777 Text.Op = PrintName("ShrUint8IntAPS");
49778 break;
49779case OP_ShrSint16Sint8:
49780 Text.Op = PrintName("ShrSint16Sint8");
49781 break;
49782case OP_ShrSint16Uint8:
49783 Text.Op = PrintName("ShrSint16Uint8");
49784 break;
49785case OP_ShrSint16Sint16:
49786 Text.Op = PrintName("ShrSint16Sint16");
49787 break;
49788case OP_ShrSint16Uint16:
49789 Text.Op = PrintName("ShrSint16Uint16");
49790 break;
49791case OP_ShrSint16Sint32:
49792 Text.Op = PrintName("ShrSint16Sint32");
49793 break;
49794case OP_ShrSint16Uint32:
49795 Text.Op = PrintName("ShrSint16Uint32");
49796 break;
49797case OP_ShrSint16Sint64:
49798 Text.Op = PrintName("ShrSint16Sint64");
49799 break;
49800case OP_ShrSint16Uint64:
49801 Text.Op = PrintName("ShrSint16Uint64");
49802 break;
49803case OP_ShrSint16IntAP:
49804 Text.Op = PrintName("ShrSint16IntAP");
49805 break;
49806case OP_ShrSint16IntAPS:
49807 Text.Op = PrintName("ShrSint16IntAPS");
49808 break;
49809case OP_ShrUint16Sint8:
49810 Text.Op = PrintName("ShrUint16Sint8");
49811 break;
49812case OP_ShrUint16Uint8:
49813 Text.Op = PrintName("ShrUint16Uint8");
49814 break;
49815case OP_ShrUint16Sint16:
49816 Text.Op = PrintName("ShrUint16Sint16");
49817 break;
49818case OP_ShrUint16Uint16:
49819 Text.Op = PrintName("ShrUint16Uint16");
49820 break;
49821case OP_ShrUint16Sint32:
49822 Text.Op = PrintName("ShrUint16Sint32");
49823 break;
49824case OP_ShrUint16Uint32:
49825 Text.Op = PrintName("ShrUint16Uint32");
49826 break;
49827case OP_ShrUint16Sint64:
49828 Text.Op = PrintName("ShrUint16Sint64");
49829 break;
49830case OP_ShrUint16Uint64:
49831 Text.Op = PrintName("ShrUint16Uint64");
49832 break;
49833case OP_ShrUint16IntAP:
49834 Text.Op = PrintName("ShrUint16IntAP");
49835 break;
49836case OP_ShrUint16IntAPS:
49837 Text.Op = PrintName("ShrUint16IntAPS");
49838 break;
49839case OP_ShrSint32Sint8:
49840 Text.Op = PrintName("ShrSint32Sint8");
49841 break;
49842case OP_ShrSint32Uint8:
49843 Text.Op = PrintName("ShrSint32Uint8");
49844 break;
49845case OP_ShrSint32Sint16:
49846 Text.Op = PrintName("ShrSint32Sint16");
49847 break;
49848case OP_ShrSint32Uint16:
49849 Text.Op = PrintName("ShrSint32Uint16");
49850 break;
49851case OP_ShrSint32Sint32:
49852 Text.Op = PrintName("ShrSint32Sint32");
49853 break;
49854case OP_ShrSint32Uint32:
49855 Text.Op = PrintName("ShrSint32Uint32");
49856 break;
49857case OP_ShrSint32Sint64:
49858 Text.Op = PrintName("ShrSint32Sint64");
49859 break;
49860case OP_ShrSint32Uint64:
49861 Text.Op = PrintName("ShrSint32Uint64");
49862 break;
49863case OP_ShrSint32IntAP:
49864 Text.Op = PrintName("ShrSint32IntAP");
49865 break;
49866case OP_ShrSint32IntAPS:
49867 Text.Op = PrintName("ShrSint32IntAPS");
49868 break;
49869case OP_ShrUint32Sint8:
49870 Text.Op = PrintName("ShrUint32Sint8");
49871 break;
49872case OP_ShrUint32Uint8:
49873 Text.Op = PrintName("ShrUint32Uint8");
49874 break;
49875case OP_ShrUint32Sint16:
49876 Text.Op = PrintName("ShrUint32Sint16");
49877 break;
49878case OP_ShrUint32Uint16:
49879 Text.Op = PrintName("ShrUint32Uint16");
49880 break;
49881case OP_ShrUint32Sint32:
49882 Text.Op = PrintName("ShrUint32Sint32");
49883 break;
49884case OP_ShrUint32Uint32:
49885 Text.Op = PrintName("ShrUint32Uint32");
49886 break;
49887case OP_ShrUint32Sint64:
49888 Text.Op = PrintName("ShrUint32Sint64");
49889 break;
49890case OP_ShrUint32Uint64:
49891 Text.Op = PrintName("ShrUint32Uint64");
49892 break;
49893case OP_ShrUint32IntAP:
49894 Text.Op = PrintName("ShrUint32IntAP");
49895 break;
49896case OP_ShrUint32IntAPS:
49897 Text.Op = PrintName("ShrUint32IntAPS");
49898 break;
49899case OP_ShrSint64Sint8:
49900 Text.Op = PrintName("ShrSint64Sint8");
49901 break;
49902case OP_ShrSint64Uint8:
49903 Text.Op = PrintName("ShrSint64Uint8");
49904 break;
49905case OP_ShrSint64Sint16:
49906 Text.Op = PrintName("ShrSint64Sint16");
49907 break;
49908case OP_ShrSint64Uint16:
49909 Text.Op = PrintName("ShrSint64Uint16");
49910 break;
49911case OP_ShrSint64Sint32:
49912 Text.Op = PrintName("ShrSint64Sint32");
49913 break;
49914case OP_ShrSint64Uint32:
49915 Text.Op = PrintName("ShrSint64Uint32");
49916 break;
49917case OP_ShrSint64Sint64:
49918 Text.Op = PrintName("ShrSint64Sint64");
49919 break;
49920case OP_ShrSint64Uint64:
49921 Text.Op = PrintName("ShrSint64Uint64");
49922 break;
49923case OP_ShrSint64IntAP:
49924 Text.Op = PrintName("ShrSint64IntAP");
49925 break;
49926case OP_ShrSint64IntAPS:
49927 Text.Op = PrintName("ShrSint64IntAPS");
49928 break;
49929case OP_ShrUint64Sint8:
49930 Text.Op = PrintName("ShrUint64Sint8");
49931 break;
49932case OP_ShrUint64Uint8:
49933 Text.Op = PrintName("ShrUint64Uint8");
49934 break;
49935case OP_ShrUint64Sint16:
49936 Text.Op = PrintName("ShrUint64Sint16");
49937 break;
49938case OP_ShrUint64Uint16:
49939 Text.Op = PrintName("ShrUint64Uint16");
49940 break;
49941case OP_ShrUint64Sint32:
49942 Text.Op = PrintName("ShrUint64Sint32");
49943 break;
49944case OP_ShrUint64Uint32:
49945 Text.Op = PrintName("ShrUint64Uint32");
49946 break;
49947case OP_ShrUint64Sint64:
49948 Text.Op = PrintName("ShrUint64Sint64");
49949 break;
49950case OP_ShrUint64Uint64:
49951 Text.Op = PrintName("ShrUint64Uint64");
49952 break;
49953case OP_ShrUint64IntAP:
49954 Text.Op = PrintName("ShrUint64IntAP");
49955 break;
49956case OP_ShrUint64IntAPS:
49957 Text.Op = PrintName("ShrUint64IntAPS");
49958 break;
49959case OP_ShrIntAPSint8:
49960 Text.Op = PrintName("ShrIntAPSint8");
49961 break;
49962case OP_ShrIntAPUint8:
49963 Text.Op = PrintName("ShrIntAPUint8");
49964 break;
49965case OP_ShrIntAPSint16:
49966 Text.Op = PrintName("ShrIntAPSint16");
49967 break;
49968case OP_ShrIntAPUint16:
49969 Text.Op = PrintName("ShrIntAPUint16");
49970 break;
49971case OP_ShrIntAPSint32:
49972 Text.Op = PrintName("ShrIntAPSint32");
49973 break;
49974case OP_ShrIntAPUint32:
49975 Text.Op = PrintName("ShrIntAPUint32");
49976 break;
49977case OP_ShrIntAPSint64:
49978 Text.Op = PrintName("ShrIntAPSint64");
49979 break;
49980case OP_ShrIntAPUint64:
49981 Text.Op = PrintName("ShrIntAPUint64");
49982 break;
49983case OP_ShrIntAPIntAP:
49984 Text.Op = PrintName("ShrIntAPIntAP");
49985 break;
49986case OP_ShrIntAPIntAPS:
49987 Text.Op = PrintName("ShrIntAPIntAPS");
49988 break;
49989case OP_ShrIntAPSSint8:
49990 Text.Op = PrintName("ShrIntAPSSint8");
49991 break;
49992case OP_ShrIntAPSUint8:
49993 Text.Op = PrintName("ShrIntAPSUint8");
49994 break;
49995case OP_ShrIntAPSSint16:
49996 Text.Op = PrintName("ShrIntAPSSint16");
49997 break;
49998case OP_ShrIntAPSUint16:
49999 Text.Op = PrintName("ShrIntAPSUint16");
50000 break;
50001case OP_ShrIntAPSSint32:
50002 Text.Op = PrintName("ShrIntAPSSint32");
50003 break;
50004case OP_ShrIntAPSUint32:
50005 Text.Op = PrintName("ShrIntAPSUint32");
50006 break;
50007case OP_ShrIntAPSSint64:
50008 Text.Op = PrintName("ShrIntAPSSint64");
50009 break;
50010case OP_ShrIntAPSUint64:
50011 Text.Op = PrintName("ShrIntAPSUint64");
50012 break;
50013case OP_ShrIntAPSIntAP:
50014 Text.Op = PrintName("ShrIntAPSIntAP");
50015 break;
50016case OP_ShrIntAPSIntAPS:
50017 Text.Op = PrintName("ShrIntAPSIntAPS");
50018 break;
50019#endif
50020#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
50021bool emitShrSint8Sint8(SourceInfo);
50022bool emitShrSint8Uint8(SourceInfo);
50023bool emitShrSint8Sint16(SourceInfo);
50024bool emitShrSint8Uint16(SourceInfo);
50025bool emitShrSint8Sint32(SourceInfo);
50026bool emitShrSint8Uint32(SourceInfo);
50027bool emitShrSint8Sint64(SourceInfo);
50028bool emitShrSint8Uint64(SourceInfo);
50029bool emitShrSint8IntAP(SourceInfo);
50030bool emitShrSint8IntAPS(SourceInfo);
50031bool emitShrUint8Sint8(SourceInfo);
50032bool emitShrUint8Uint8(SourceInfo);
50033bool emitShrUint8Sint16(SourceInfo);
50034bool emitShrUint8Uint16(SourceInfo);
50035bool emitShrUint8Sint32(SourceInfo);
50036bool emitShrUint8Uint32(SourceInfo);
50037bool emitShrUint8Sint64(SourceInfo);
50038bool emitShrUint8Uint64(SourceInfo);
50039bool emitShrUint8IntAP(SourceInfo);
50040bool emitShrUint8IntAPS(SourceInfo);
50041bool emitShrSint16Sint8(SourceInfo);
50042bool emitShrSint16Uint8(SourceInfo);
50043bool emitShrSint16Sint16(SourceInfo);
50044bool emitShrSint16Uint16(SourceInfo);
50045bool emitShrSint16Sint32(SourceInfo);
50046bool emitShrSint16Uint32(SourceInfo);
50047bool emitShrSint16Sint64(SourceInfo);
50048bool emitShrSint16Uint64(SourceInfo);
50049bool emitShrSint16IntAP(SourceInfo);
50050bool emitShrSint16IntAPS(SourceInfo);
50051bool emitShrUint16Sint8(SourceInfo);
50052bool emitShrUint16Uint8(SourceInfo);
50053bool emitShrUint16Sint16(SourceInfo);
50054bool emitShrUint16Uint16(SourceInfo);
50055bool emitShrUint16Sint32(SourceInfo);
50056bool emitShrUint16Uint32(SourceInfo);
50057bool emitShrUint16Sint64(SourceInfo);
50058bool emitShrUint16Uint64(SourceInfo);
50059bool emitShrUint16IntAP(SourceInfo);
50060bool emitShrUint16IntAPS(SourceInfo);
50061bool emitShrSint32Sint8(SourceInfo);
50062bool emitShrSint32Uint8(SourceInfo);
50063bool emitShrSint32Sint16(SourceInfo);
50064bool emitShrSint32Uint16(SourceInfo);
50065bool emitShrSint32Sint32(SourceInfo);
50066bool emitShrSint32Uint32(SourceInfo);
50067bool emitShrSint32Sint64(SourceInfo);
50068bool emitShrSint32Uint64(SourceInfo);
50069bool emitShrSint32IntAP(SourceInfo);
50070bool emitShrSint32IntAPS(SourceInfo);
50071bool emitShrUint32Sint8(SourceInfo);
50072bool emitShrUint32Uint8(SourceInfo);
50073bool emitShrUint32Sint16(SourceInfo);
50074bool emitShrUint32Uint16(SourceInfo);
50075bool emitShrUint32Sint32(SourceInfo);
50076bool emitShrUint32Uint32(SourceInfo);
50077bool emitShrUint32Sint64(SourceInfo);
50078bool emitShrUint32Uint64(SourceInfo);
50079bool emitShrUint32IntAP(SourceInfo);
50080bool emitShrUint32IntAPS(SourceInfo);
50081bool emitShrSint64Sint8(SourceInfo);
50082bool emitShrSint64Uint8(SourceInfo);
50083bool emitShrSint64Sint16(SourceInfo);
50084bool emitShrSint64Uint16(SourceInfo);
50085bool emitShrSint64Sint32(SourceInfo);
50086bool emitShrSint64Uint32(SourceInfo);
50087bool emitShrSint64Sint64(SourceInfo);
50088bool emitShrSint64Uint64(SourceInfo);
50089bool emitShrSint64IntAP(SourceInfo);
50090bool emitShrSint64IntAPS(SourceInfo);
50091bool emitShrUint64Sint8(SourceInfo);
50092bool emitShrUint64Uint8(SourceInfo);
50093bool emitShrUint64Sint16(SourceInfo);
50094bool emitShrUint64Uint16(SourceInfo);
50095bool emitShrUint64Sint32(SourceInfo);
50096bool emitShrUint64Uint32(SourceInfo);
50097bool emitShrUint64Sint64(SourceInfo);
50098bool emitShrUint64Uint64(SourceInfo);
50099bool emitShrUint64IntAP(SourceInfo);
50100bool emitShrUint64IntAPS(SourceInfo);
50101bool emitShrIntAPSint8(SourceInfo);
50102bool emitShrIntAPUint8(SourceInfo);
50103bool emitShrIntAPSint16(SourceInfo);
50104bool emitShrIntAPUint16(SourceInfo);
50105bool emitShrIntAPSint32(SourceInfo);
50106bool emitShrIntAPUint32(SourceInfo);
50107bool emitShrIntAPSint64(SourceInfo);
50108bool emitShrIntAPUint64(SourceInfo);
50109bool emitShrIntAPIntAP(SourceInfo);
50110bool emitShrIntAPIntAPS(SourceInfo);
50111bool emitShrIntAPSSint8(SourceInfo);
50112bool emitShrIntAPSUint8(SourceInfo);
50113bool emitShrIntAPSSint16(SourceInfo);
50114bool emitShrIntAPSUint16(SourceInfo);
50115bool emitShrIntAPSSint32(SourceInfo);
50116bool emitShrIntAPSUint32(SourceInfo);
50117bool emitShrIntAPSSint64(SourceInfo);
50118bool emitShrIntAPSUint64(SourceInfo);
50119bool emitShrIntAPSIntAP(SourceInfo);
50120bool emitShrIntAPSIntAPS(SourceInfo);
50121#endif
50122#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
50123[[nodiscard]] bool emitShr(PrimType, PrimType, SourceInfo I);
50124#endif
50125#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
50126bool
50127#if defined(GET_EVAL_IMPL)
50128EvalEmitter
50129#else
50130ByteCodeEmitter
50131#endif
50132::emitShr(PrimType T0, PrimType T1, SourceInfo I) {
50133 switch (T0) {
50134 case PT_Sint8:
50135 switch (T1) {
50136 case PT_Sint8:
50137 return emitShrSint8Sint8(I);
50138 case PT_Uint8:
50139 return emitShrSint8Uint8(I);
50140 case PT_Sint16:
50141 return emitShrSint8Sint16(I);
50142 case PT_Uint16:
50143 return emitShrSint8Uint16(I);
50144 case PT_Sint32:
50145 return emitShrSint8Sint32(I);
50146 case PT_Uint32:
50147 return emitShrSint8Uint32(I);
50148 case PT_Sint64:
50149 return emitShrSint8Sint64(I);
50150 case PT_Uint64:
50151 return emitShrSint8Uint64(I);
50152 case PT_IntAP:
50153 return emitShrSint8IntAP(I);
50154 case PT_IntAPS:
50155 return emitShrSint8IntAPS(I);
50156 default: llvm_unreachable("invalid type: emitShr");
50157 }
50158 llvm_unreachable("invalid enum value");
50159 case PT_Uint8:
50160 switch (T1) {
50161 case PT_Sint8:
50162 return emitShrUint8Sint8(I);
50163 case PT_Uint8:
50164 return emitShrUint8Uint8(I);
50165 case PT_Sint16:
50166 return emitShrUint8Sint16(I);
50167 case PT_Uint16:
50168 return emitShrUint8Uint16(I);
50169 case PT_Sint32:
50170 return emitShrUint8Sint32(I);
50171 case PT_Uint32:
50172 return emitShrUint8Uint32(I);
50173 case PT_Sint64:
50174 return emitShrUint8Sint64(I);
50175 case PT_Uint64:
50176 return emitShrUint8Uint64(I);
50177 case PT_IntAP:
50178 return emitShrUint8IntAP(I);
50179 case PT_IntAPS:
50180 return emitShrUint8IntAPS(I);
50181 default: llvm_unreachable("invalid type: emitShr");
50182 }
50183 llvm_unreachable("invalid enum value");
50184 case PT_Sint16:
50185 switch (T1) {
50186 case PT_Sint8:
50187 return emitShrSint16Sint8(I);
50188 case PT_Uint8:
50189 return emitShrSint16Uint8(I);
50190 case PT_Sint16:
50191 return emitShrSint16Sint16(I);
50192 case PT_Uint16:
50193 return emitShrSint16Uint16(I);
50194 case PT_Sint32:
50195 return emitShrSint16Sint32(I);
50196 case PT_Uint32:
50197 return emitShrSint16Uint32(I);
50198 case PT_Sint64:
50199 return emitShrSint16Sint64(I);
50200 case PT_Uint64:
50201 return emitShrSint16Uint64(I);
50202 case PT_IntAP:
50203 return emitShrSint16IntAP(I);
50204 case PT_IntAPS:
50205 return emitShrSint16IntAPS(I);
50206 default: llvm_unreachable("invalid type: emitShr");
50207 }
50208 llvm_unreachable("invalid enum value");
50209 case PT_Uint16:
50210 switch (T1) {
50211 case PT_Sint8:
50212 return emitShrUint16Sint8(I);
50213 case PT_Uint8:
50214 return emitShrUint16Uint8(I);
50215 case PT_Sint16:
50216 return emitShrUint16Sint16(I);
50217 case PT_Uint16:
50218 return emitShrUint16Uint16(I);
50219 case PT_Sint32:
50220 return emitShrUint16Sint32(I);
50221 case PT_Uint32:
50222 return emitShrUint16Uint32(I);
50223 case PT_Sint64:
50224 return emitShrUint16Sint64(I);
50225 case PT_Uint64:
50226 return emitShrUint16Uint64(I);
50227 case PT_IntAP:
50228 return emitShrUint16IntAP(I);
50229 case PT_IntAPS:
50230 return emitShrUint16IntAPS(I);
50231 default: llvm_unreachable("invalid type: emitShr");
50232 }
50233 llvm_unreachable("invalid enum value");
50234 case PT_Sint32:
50235 switch (T1) {
50236 case PT_Sint8:
50237 return emitShrSint32Sint8(I);
50238 case PT_Uint8:
50239 return emitShrSint32Uint8(I);
50240 case PT_Sint16:
50241 return emitShrSint32Sint16(I);
50242 case PT_Uint16:
50243 return emitShrSint32Uint16(I);
50244 case PT_Sint32:
50245 return emitShrSint32Sint32(I);
50246 case PT_Uint32:
50247 return emitShrSint32Uint32(I);
50248 case PT_Sint64:
50249 return emitShrSint32Sint64(I);
50250 case PT_Uint64:
50251 return emitShrSint32Uint64(I);
50252 case PT_IntAP:
50253 return emitShrSint32IntAP(I);
50254 case PT_IntAPS:
50255 return emitShrSint32IntAPS(I);
50256 default: llvm_unreachable("invalid type: emitShr");
50257 }
50258 llvm_unreachable("invalid enum value");
50259 case PT_Uint32:
50260 switch (T1) {
50261 case PT_Sint8:
50262 return emitShrUint32Sint8(I);
50263 case PT_Uint8:
50264 return emitShrUint32Uint8(I);
50265 case PT_Sint16:
50266 return emitShrUint32Sint16(I);
50267 case PT_Uint16:
50268 return emitShrUint32Uint16(I);
50269 case PT_Sint32:
50270 return emitShrUint32Sint32(I);
50271 case PT_Uint32:
50272 return emitShrUint32Uint32(I);
50273 case PT_Sint64:
50274 return emitShrUint32Sint64(I);
50275 case PT_Uint64:
50276 return emitShrUint32Uint64(I);
50277 case PT_IntAP:
50278 return emitShrUint32IntAP(I);
50279 case PT_IntAPS:
50280 return emitShrUint32IntAPS(I);
50281 default: llvm_unreachable("invalid type: emitShr");
50282 }
50283 llvm_unreachable("invalid enum value");
50284 case PT_Sint64:
50285 switch (T1) {
50286 case PT_Sint8:
50287 return emitShrSint64Sint8(I);
50288 case PT_Uint8:
50289 return emitShrSint64Uint8(I);
50290 case PT_Sint16:
50291 return emitShrSint64Sint16(I);
50292 case PT_Uint16:
50293 return emitShrSint64Uint16(I);
50294 case PT_Sint32:
50295 return emitShrSint64Sint32(I);
50296 case PT_Uint32:
50297 return emitShrSint64Uint32(I);
50298 case PT_Sint64:
50299 return emitShrSint64Sint64(I);
50300 case PT_Uint64:
50301 return emitShrSint64Uint64(I);
50302 case PT_IntAP:
50303 return emitShrSint64IntAP(I);
50304 case PT_IntAPS:
50305 return emitShrSint64IntAPS(I);
50306 default: llvm_unreachable("invalid type: emitShr");
50307 }
50308 llvm_unreachable("invalid enum value");
50309 case PT_Uint64:
50310 switch (T1) {
50311 case PT_Sint8:
50312 return emitShrUint64Sint8(I);
50313 case PT_Uint8:
50314 return emitShrUint64Uint8(I);
50315 case PT_Sint16:
50316 return emitShrUint64Sint16(I);
50317 case PT_Uint16:
50318 return emitShrUint64Uint16(I);
50319 case PT_Sint32:
50320 return emitShrUint64Sint32(I);
50321 case PT_Uint32:
50322 return emitShrUint64Uint32(I);
50323 case PT_Sint64:
50324 return emitShrUint64Sint64(I);
50325 case PT_Uint64:
50326 return emitShrUint64Uint64(I);
50327 case PT_IntAP:
50328 return emitShrUint64IntAP(I);
50329 case PT_IntAPS:
50330 return emitShrUint64IntAPS(I);
50331 default: llvm_unreachable("invalid type: emitShr");
50332 }
50333 llvm_unreachable("invalid enum value");
50334 case PT_IntAP:
50335 switch (T1) {
50336 case PT_Sint8:
50337 return emitShrIntAPSint8(I);
50338 case PT_Uint8:
50339 return emitShrIntAPUint8(I);
50340 case PT_Sint16:
50341 return emitShrIntAPSint16(I);
50342 case PT_Uint16:
50343 return emitShrIntAPUint16(I);
50344 case PT_Sint32:
50345 return emitShrIntAPSint32(I);
50346 case PT_Uint32:
50347 return emitShrIntAPUint32(I);
50348 case PT_Sint64:
50349 return emitShrIntAPSint64(I);
50350 case PT_Uint64:
50351 return emitShrIntAPUint64(I);
50352 case PT_IntAP:
50353 return emitShrIntAPIntAP(I);
50354 case PT_IntAPS:
50355 return emitShrIntAPIntAPS(I);
50356 default: llvm_unreachable("invalid type: emitShr");
50357 }
50358 llvm_unreachable("invalid enum value");
50359 case PT_IntAPS:
50360 switch (T1) {
50361 case PT_Sint8:
50362 return emitShrIntAPSSint8(I);
50363 case PT_Uint8:
50364 return emitShrIntAPSUint8(I);
50365 case PT_Sint16:
50366 return emitShrIntAPSSint16(I);
50367 case PT_Uint16:
50368 return emitShrIntAPSUint16(I);
50369 case PT_Sint32:
50370 return emitShrIntAPSSint32(I);
50371 case PT_Uint32:
50372 return emitShrIntAPSUint32(I);
50373 case PT_Sint64:
50374 return emitShrIntAPSSint64(I);
50375 case PT_Uint64:
50376 return emitShrIntAPSUint64(I);
50377 case PT_IntAP:
50378 return emitShrIntAPSIntAP(I);
50379 case PT_IntAPS:
50380 return emitShrIntAPSIntAPS(I);
50381 default: llvm_unreachable("invalid type: emitShr");
50382 }
50383 llvm_unreachable("invalid enum value");
50384 default: llvm_unreachable("invalid type: emitShr");
50385 }
50386 llvm_unreachable("invalid enum value");
50387}
50388#endif
50389#ifdef GET_LINK_IMPL
50390bool ByteCodeEmitter::emitShrSint8Sint8(SourceInfo L) {
50391 return emitOp<>(OP_ShrSint8Sint8, L);
50392}
50393bool ByteCodeEmitter::emitShrSint8Uint8(SourceInfo L) {
50394 return emitOp<>(OP_ShrSint8Uint8, L);
50395}
50396bool ByteCodeEmitter::emitShrSint8Sint16(SourceInfo L) {
50397 return emitOp<>(OP_ShrSint8Sint16, L);
50398}
50399bool ByteCodeEmitter::emitShrSint8Uint16(SourceInfo L) {
50400 return emitOp<>(OP_ShrSint8Uint16, L);
50401}
50402bool ByteCodeEmitter::emitShrSint8Sint32(SourceInfo L) {
50403 return emitOp<>(OP_ShrSint8Sint32, L);
50404}
50405bool ByteCodeEmitter::emitShrSint8Uint32(SourceInfo L) {
50406 return emitOp<>(OP_ShrSint8Uint32, L);
50407}
50408bool ByteCodeEmitter::emitShrSint8Sint64(SourceInfo L) {
50409 return emitOp<>(OP_ShrSint8Sint64, L);
50410}
50411bool ByteCodeEmitter::emitShrSint8Uint64(SourceInfo L) {
50412 return emitOp<>(OP_ShrSint8Uint64, L);
50413}
50414bool ByteCodeEmitter::emitShrSint8IntAP(SourceInfo L) {
50415 return emitOp<>(OP_ShrSint8IntAP, L);
50416}
50417bool ByteCodeEmitter::emitShrSint8IntAPS(SourceInfo L) {
50418 return emitOp<>(OP_ShrSint8IntAPS, L);
50419}
50420bool ByteCodeEmitter::emitShrUint8Sint8(SourceInfo L) {
50421 return emitOp<>(OP_ShrUint8Sint8, L);
50422}
50423bool ByteCodeEmitter::emitShrUint8Uint8(SourceInfo L) {
50424 return emitOp<>(OP_ShrUint8Uint8, L);
50425}
50426bool ByteCodeEmitter::emitShrUint8Sint16(SourceInfo L) {
50427 return emitOp<>(OP_ShrUint8Sint16, L);
50428}
50429bool ByteCodeEmitter::emitShrUint8Uint16(SourceInfo L) {
50430 return emitOp<>(OP_ShrUint8Uint16, L);
50431}
50432bool ByteCodeEmitter::emitShrUint8Sint32(SourceInfo L) {
50433 return emitOp<>(OP_ShrUint8Sint32, L);
50434}
50435bool ByteCodeEmitter::emitShrUint8Uint32(SourceInfo L) {
50436 return emitOp<>(OP_ShrUint8Uint32, L);
50437}
50438bool ByteCodeEmitter::emitShrUint8Sint64(SourceInfo L) {
50439 return emitOp<>(OP_ShrUint8Sint64, L);
50440}
50441bool ByteCodeEmitter::emitShrUint8Uint64(SourceInfo L) {
50442 return emitOp<>(OP_ShrUint8Uint64, L);
50443}
50444bool ByteCodeEmitter::emitShrUint8IntAP(SourceInfo L) {
50445 return emitOp<>(OP_ShrUint8IntAP, L);
50446}
50447bool ByteCodeEmitter::emitShrUint8IntAPS(SourceInfo L) {
50448 return emitOp<>(OP_ShrUint8IntAPS, L);
50449}
50450bool ByteCodeEmitter::emitShrSint16Sint8(SourceInfo L) {
50451 return emitOp<>(OP_ShrSint16Sint8, L);
50452}
50453bool ByteCodeEmitter::emitShrSint16Uint8(SourceInfo L) {
50454 return emitOp<>(OP_ShrSint16Uint8, L);
50455}
50456bool ByteCodeEmitter::emitShrSint16Sint16(SourceInfo L) {
50457 return emitOp<>(OP_ShrSint16Sint16, L);
50458}
50459bool ByteCodeEmitter::emitShrSint16Uint16(SourceInfo L) {
50460 return emitOp<>(OP_ShrSint16Uint16, L);
50461}
50462bool ByteCodeEmitter::emitShrSint16Sint32(SourceInfo L) {
50463 return emitOp<>(OP_ShrSint16Sint32, L);
50464}
50465bool ByteCodeEmitter::emitShrSint16Uint32(SourceInfo L) {
50466 return emitOp<>(OP_ShrSint16Uint32, L);
50467}
50468bool ByteCodeEmitter::emitShrSint16Sint64(SourceInfo L) {
50469 return emitOp<>(OP_ShrSint16Sint64, L);
50470}
50471bool ByteCodeEmitter::emitShrSint16Uint64(SourceInfo L) {
50472 return emitOp<>(OP_ShrSint16Uint64, L);
50473}
50474bool ByteCodeEmitter::emitShrSint16IntAP(SourceInfo L) {
50475 return emitOp<>(OP_ShrSint16IntAP, L);
50476}
50477bool ByteCodeEmitter::emitShrSint16IntAPS(SourceInfo L) {
50478 return emitOp<>(OP_ShrSint16IntAPS, L);
50479}
50480bool ByteCodeEmitter::emitShrUint16Sint8(SourceInfo L) {
50481 return emitOp<>(OP_ShrUint16Sint8, L);
50482}
50483bool ByteCodeEmitter::emitShrUint16Uint8(SourceInfo L) {
50484 return emitOp<>(OP_ShrUint16Uint8, L);
50485}
50486bool ByteCodeEmitter::emitShrUint16Sint16(SourceInfo L) {
50487 return emitOp<>(OP_ShrUint16Sint16, L);
50488}
50489bool ByteCodeEmitter::emitShrUint16Uint16(SourceInfo L) {
50490 return emitOp<>(OP_ShrUint16Uint16, L);
50491}
50492bool ByteCodeEmitter::emitShrUint16Sint32(SourceInfo L) {
50493 return emitOp<>(OP_ShrUint16Sint32, L);
50494}
50495bool ByteCodeEmitter::emitShrUint16Uint32(SourceInfo L) {
50496 return emitOp<>(OP_ShrUint16Uint32, L);
50497}
50498bool ByteCodeEmitter::emitShrUint16Sint64(SourceInfo L) {
50499 return emitOp<>(OP_ShrUint16Sint64, L);
50500}
50501bool ByteCodeEmitter::emitShrUint16Uint64(SourceInfo L) {
50502 return emitOp<>(OP_ShrUint16Uint64, L);
50503}
50504bool ByteCodeEmitter::emitShrUint16IntAP(SourceInfo L) {
50505 return emitOp<>(OP_ShrUint16IntAP, L);
50506}
50507bool ByteCodeEmitter::emitShrUint16IntAPS(SourceInfo L) {
50508 return emitOp<>(OP_ShrUint16IntAPS, L);
50509}
50510bool ByteCodeEmitter::emitShrSint32Sint8(SourceInfo L) {
50511 return emitOp<>(OP_ShrSint32Sint8, L);
50512}
50513bool ByteCodeEmitter::emitShrSint32Uint8(SourceInfo L) {
50514 return emitOp<>(OP_ShrSint32Uint8, L);
50515}
50516bool ByteCodeEmitter::emitShrSint32Sint16(SourceInfo L) {
50517 return emitOp<>(OP_ShrSint32Sint16, L);
50518}
50519bool ByteCodeEmitter::emitShrSint32Uint16(SourceInfo L) {
50520 return emitOp<>(OP_ShrSint32Uint16, L);
50521}
50522bool ByteCodeEmitter::emitShrSint32Sint32(SourceInfo L) {
50523 return emitOp<>(OP_ShrSint32Sint32, L);
50524}
50525bool ByteCodeEmitter::emitShrSint32Uint32(SourceInfo L) {
50526 return emitOp<>(OP_ShrSint32Uint32, L);
50527}
50528bool ByteCodeEmitter::emitShrSint32Sint64(SourceInfo L) {
50529 return emitOp<>(OP_ShrSint32Sint64, L);
50530}
50531bool ByteCodeEmitter::emitShrSint32Uint64(SourceInfo L) {
50532 return emitOp<>(OP_ShrSint32Uint64, L);
50533}
50534bool ByteCodeEmitter::emitShrSint32IntAP(SourceInfo L) {
50535 return emitOp<>(OP_ShrSint32IntAP, L);
50536}
50537bool ByteCodeEmitter::emitShrSint32IntAPS(SourceInfo L) {
50538 return emitOp<>(OP_ShrSint32IntAPS, L);
50539}
50540bool ByteCodeEmitter::emitShrUint32Sint8(SourceInfo L) {
50541 return emitOp<>(OP_ShrUint32Sint8, L);
50542}
50543bool ByteCodeEmitter::emitShrUint32Uint8(SourceInfo L) {
50544 return emitOp<>(OP_ShrUint32Uint8, L);
50545}
50546bool ByteCodeEmitter::emitShrUint32Sint16(SourceInfo L) {
50547 return emitOp<>(OP_ShrUint32Sint16, L);
50548}
50549bool ByteCodeEmitter::emitShrUint32Uint16(SourceInfo L) {
50550 return emitOp<>(OP_ShrUint32Uint16, L);
50551}
50552bool ByteCodeEmitter::emitShrUint32Sint32(SourceInfo L) {
50553 return emitOp<>(OP_ShrUint32Sint32, L);
50554}
50555bool ByteCodeEmitter::emitShrUint32Uint32(SourceInfo L) {
50556 return emitOp<>(OP_ShrUint32Uint32, L);
50557}
50558bool ByteCodeEmitter::emitShrUint32Sint64(SourceInfo L) {
50559 return emitOp<>(OP_ShrUint32Sint64, L);
50560}
50561bool ByteCodeEmitter::emitShrUint32Uint64(SourceInfo L) {
50562 return emitOp<>(OP_ShrUint32Uint64, L);
50563}
50564bool ByteCodeEmitter::emitShrUint32IntAP(SourceInfo L) {
50565 return emitOp<>(OP_ShrUint32IntAP, L);
50566}
50567bool ByteCodeEmitter::emitShrUint32IntAPS(SourceInfo L) {
50568 return emitOp<>(OP_ShrUint32IntAPS, L);
50569}
50570bool ByteCodeEmitter::emitShrSint64Sint8(SourceInfo L) {
50571 return emitOp<>(OP_ShrSint64Sint8, L);
50572}
50573bool ByteCodeEmitter::emitShrSint64Uint8(SourceInfo L) {
50574 return emitOp<>(OP_ShrSint64Uint8, L);
50575}
50576bool ByteCodeEmitter::emitShrSint64Sint16(SourceInfo L) {
50577 return emitOp<>(OP_ShrSint64Sint16, L);
50578}
50579bool ByteCodeEmitter::emitShrSint64Uint16(SourceInfo L) {
50580 return emitOp<>(OP_ShrSint64Uint16, L);
50581}
50582bool ByteCodeEmitter::emitShrSint64Sint32(SourceInfo L) {
50583 return emitOp<>(OP_ShrSint64Sint32, L);
50584}
50585bool ByteCodeEmitter::emitShrSint64Uint32(SourceInfo L) {
50586 return emitOp<>(OP_ShrSint64Uint32, L);
50587}
50588bool ByteCodeEmitter::emitShrSint64Sint64(SourceInfo L) {
50589 return emitOp<>(OP_ShrSint64Sint64, L);
50590}
50591bool ByteCodeEmitter::emitShrSint64Uint64(SourceInfo L) {
50592 return emitOp<>(OP_ShrSint64Uint64, L);
50593}
50594bool ByteCodeEmitter::emitShrSint64IntAP(SourceInfo L) {
50595 return emitOp<>(OP_ShrSint64IntAP, L);
50596}
50597bool ByteCodeEmitter::emitShrSint64IntAPS(SourceInfo L) {
50598 return emitOp<>(OP_ShrSint64IntAPS, L);
50599}
50600bool ByteCodeEmitter::emitShrUint64Sint8(SourceInfo L) {
50601 return emitOp<>(OP_ShrUint64Sint8, L);
50602}
50603bool ByteCodeEmitter::emitShrUint64Uint8(SourceInfo L) {
50604 return emitOp<>(OP_ShrUint64Uint8, L);
50605}
50606bool ByteCodeEmitter::emitShrUint64Sint16(SourceInfo L) {
50607 return emitOp<>(OP_ShrUint64Sint16, L);
50608}
50609bool ByteCodeEmitter::emitShrUint64Uint16(SourceInfo L) {
50610 return emitOp<>(OP_ShrUint64Uint16, L);
50611}
50612bool ByteCodeEmitter::emitShrUint64Sint32(SourceInfo L) {
50613 return emitOp<>(OP_ShrUint64Sint32, L);
50614}
50615bool ByteCodeEmitter::emitShrUint64Uint32(SourceInfo L) {
50616 return emitOp<>(OP_ShrUint64Uint32, L);
50617}
50618bool ByteCodeEmitter::emitShrUint64Sint64(SourceInfo L) {
50619 return emitOp<>(OP_ShrUint64Sint64, L);
50620}
50621bool ByteCodeEmitter::emitShrUint64Uint64(SourceInfo L) {
50622 return emitOp<>(OP_ShrUint64Uint64, L);
50623}
50624bool ByteCodeEmitter::emitShrUint64IntAP(SourceInfo L) {
50625 return emitOp<>(OP_ShrUint64IntAP, L);
50626}
50627bool ByteCodeEmitter::emitShrUint64IntAPS(SourceInfo L) {
50628 return emitOp<>(OP_ShrUint64IntAPS, L);
50629}
50630bool ByteCodeEmitter::emitShrIntAPSint8(SourceInfo L) {
50631 return emitOp<>(OP_ShrIntAPSint8, L);
50632}
50633bool ByteCodeEmitter::emitShrIntAPUint8(SourceInfo L) {
50634 return emitOp<>(OP_ShrIntAPUint8, L);
50635}
50636bool ByteCodeEmitter::emitShrIntAPSint16(SourceInfo L) {
50637 return emitOp<>(OP_ShrIntAPSint16, L);
50638}
50639bool ByteCodeEmitter::emitShrIntAPUint16(SourceInfo L) {
50640 return emitOp<>(OP_ShrIntAPUint16, L);
50641}
50642bool ByteCodeEmitter::emitShrIntAPSint32(SourceInfo L) {
50643 return emitOp<>(OP_ShrIntAPSint32, L);
50644}
50645bool ByteCodeEmitter::emitShrIntAPUint32(SourceInfo L) {
50646 return emitOp<>(OP_ShrIntAPUint32, L);
50647}
50648bool ByteCodeEmitter::emitShrIntAPSint64(SourceInfo L) {
50649 return emitOp<>(OP_ShrIntAPSint64, L);
50650}
50651bool ByteCodeEmitter::emitShrIntAPUint64(SourceInfo L) {
50652 return emitOp<>(OP_ShrIntAPUint64, L);
50653}
50654bool ByteCodeEmitter::emitShrIntAPIntAP(SourceInfo L) {
50655 return emitOp<>(OP_ShrIntAPIntAP, L);
50656}
50657bool ByteCodeEmitter::emitShrIntAPIntAPS(SourceInfo L) {
50658 return emitOp<>(OP_ShrIntAPIntAPS, L);
50659}
50660bool ByteCodeEmitter::emitShrIntAPSSint8(SourceInfo L) {
50661 return emitOp<>(OP_ShrIntAPSSint8, L);
50662}
50663bool ByteCodeEmitter::emitShrIntAPSUint8(SourceInfo L) {
50664 return emitOp<>(OP_ShrIntAPSUint8, L);
50665}
50666bool ByteCodeEmitter::emitShrIntAPSSint16(SourceInfo L) {
50667 return emitOp<>(OP_ShrIntAPSSint16, L);
50668}
50669bool ByteCodeEmitter::emitShrIntAPSUint16(SourceInfo L) {
50670 return emitOp<>(OP_ShrIntAPSUint16, L);
50671}
50672bool ByteCodeEmitter::emitShrIntAPSSint32(SourceInfo L) {
50673 return emitOp<>(OP_ShrIntAPSSint32, L);
50674}
50675bool ByteCodeEmitter::emitShrIntAPSUint32(SourceInfo L) {
50676 return emitOp<>(OP_ShrIntAPSUint32, L);
50677}
50678bool ByteCodeEmitter::emitShrIntAPSSint64(SourceInfo L) {
50679 return emitOp<>(OP_ShrIntAPSSint64, L);
50680}
50681bool ByteCodeEmitter::emitShrIntAPSUint64(SourceInfo L) {
50682 return emitOp<>(OP_ShrIntAPSUint64, L);
50683}
50684bool ByteCodeEmitter::emitShrIntAPSIntAP(SourceInfo L) {
50685 return emitOp<>(OP_ShrIntAPSIntAP, L);
50686}
50687bool ByteCodeEmitter::emitShrIntAPSIntAPS(SourceInfo L) {
50688 return emitOp<>(OP_ShrIntAPSIntAPS, L);
50689}
50690#endif
50691#ifdef GET_EVAL_IMPL
50692bool EvalEmitter::emitShrSint8Sint8(SourceInfo L) {
50693 if (!isActive()) return true;
50694 CurrentSource = L;
50695 return Shr<PT_Sint8, PT_Sint8>(S, OpPC);
50696}
50697bool EvalEmitter::emitShrSint8Uint8(SourceInfo L) {
50698 if (!isActive()) return true;
50699 CurrentSource = L;
50700 return Shr<PT_Sint8, PT_Uint8>(S, OpPC);
50701}
50702bool EvalEmitter::emitShrSint8Sint16(SourceInfo L) {
50703 if (!isActive()) return true;
50704 CurrentSource = L;
50705 return Shr<PT_Sint8, PT_Sint16>(S, OpPC);
50706}
50707bool EvalEmitter::emitShrSint8Uint16(SourceInfo L) {
50708 if (!isActive()) return true;
50709 CurrentSource = L;
50710 return Shr<PT_Sint8, PT_Uint16>(S, OpPC);
50711}
50712bool EvalEmitter::emitShrSint8Sint32(SourceInfo L) {
50713 if (!isActive()) return true;
50714 CurrentSource = L;
50715 return Shr<PT_Sint8, PT_Sint32>(S, OpPC);
50716}
50717bool EvalEmitter::emitShrSint8Uint32(SourceInfo L) {
50718 if (!isActive()) return true;
50719 CurrentSource = L;
50720 return Shr<PT_Sint8, PT_Uint32>(S, OpPC);
50721}
50722bool EvalEmitter::emitShrSint8Sint64(SourceInfo L) {
50723 if (!isActive()) return true;
50724 CurrentSource = L;
50725 return Shr<PT_Sint8, PT_Sint64>(S, OpPC);
50726}
50727bool EvalEmitter::emitShrSint8Uint64(SourceInfo L) {
50728 if (!isActive()) return true;
50729 CurrentSource = L;
50730 return Shr<PT_Sint8, PT_Uint64>(S, OpPC);
50731}
50732bool EvalEmitter::emitShrSint8IntAP(SourceInfo L) {
50733 if (!isActive()) return true;
50734 CurrentSource = L;
50735 return Shr<PT_Sint8, PT_IntAP>(S, OpPC);
50736}
50737bool EvalEmitter::emitShrSint8IntAPS(SourceInfo L) {
50738 if (!isActive()) return true;
50739 CurrentSource = L;
50740 return Shr<PT_Sint8, PT_IntAPS>(S, OpPC);
50741}
50742bool EvalEmitter::emitShrUint8Sint8(SourceInfo L) {
50743 if (!isActive()) return true;
50744 CurrentSource = L;
50745 return Shr<PT_Uint8, PT_Sint8>(S, OpPC);
50746}
50747bool EvalEmitter::emitShrUint8Uint8(SourceInfo L) {
50748 if (!isActive()) return true;
50749 CurrentSource = L;
50750 return Shr<PT_Uint8, PT_Uint8>(S, OpPC);
50751}
50752bool EvalEmitter::emitShrUint8Sint16(SourceInfo L) {
50753 if (!isActive()) return true;
50754 CurrentSource = L;
50755 return Shr<PT_Uint8, PT_Sint16>(S, OpPC);
50756}
50757bool EvalEmitter::emitShrUint8Uint16(SourceInfo L) {
50758 if (!isActive()) return true;
50759 CurrentSource = L;
50760 return Shr<PT_Uint8, PT_Uint16>(S, OpPC);
50761}
50762bool EvalEmitter::emitShrUint8Sint32(SourceInfo L) {
50763 if (!isActive()) return true;
50764 CurrentSource = L;
50765 return Shr<PT_Uint8, PT_Sint32>(S, OpPC);
50766}
50767bool EvalEmitter::emitShrUint8Uint32(SourceInfo L) {
50768 if (!isActive()) return true;
50769 CurrentSource = L;
50770 return Shr<PT_Uint8, PT_Uint32>(S, OpPC);
50771}
50772bool EvalEmitter::emitShrUint8Sint64(SourceInfo L) {
50773 if (!isActive()) return true;
50774 CurrentSource = L;
50775 return Shr<PT_Uint8, PT_Sint64>(S, OpPC);
50776}
50777bool EvalEmitter::emitShrUint8Uint64(SourceInfo L) {
50778 if (!isActive()) return true;
50779 CurrentSource = L;
50780 return Shr<PT_Uint8, PT_Uint64>(S, OpPC);
50781}
50782bool EvalEmitter::emitShrUint8IntAP(SourceInfo L) {
50783 if (!isActive()) return true;
50784 CurrentSource = L;
50785 return Shr<PT_Uint8, PT_IntAP>(S, OpPC);
50786}
50787bool EvalEmitter::emitShrUint8IntAPS(SourceInfo L) {
50788 if (!isActive()) return true;
50789 CurrentSource = L;
50790 return Shr<PT_Uint8, PT_IntAPS>(S, OpPC);
50791}
50792bool EvalEmitter::emitShrSint16Sint8(SourceInfo L) {
50793 if (!isActive()) return true;
50794 CurrentSource = L;
50795 return Shr<PT_Sint16, PT_Sint8>(S, OpPC);
50796}
50797bool EvalEmitter::emitShrSint16Uint8(SourceInfo L) {
50798 if (!isActive()) return true;
50799 CurrentSource = L;
50800 return Shr<PT_Sint16, PT_Uint8>(S, OpPC);
50801}
50802bool EvalEmitter::emitShrSint16Sint16(SourceInfo L) {
50803 if (!isActive()) return true;
50804 CurrentSource = L;
50805 return Shr<PT_Sint16, PT_Sint16>(S, OpPC);
50806}
50807bool EvalEmitter::emitShrSint16Uint16(SourceInfo L) {
50808 if (!isActive()) return true;
50809 CurrentSource = L;
50810 return Shr<PT_Sint16, PT_Uint16>(S, OpPC);
50811}
50812bool EvalEmitter::emitShrSint16Sint32(SourceInfo L) {
50813 if (!isActive()) return true;
50814 CurrentSource = L;
50815 return Shr<PT_Sint16, PT_Sint32>(S, OpPC);
50816}
50817bool EvalEmitter::emitShrSint16Uint32(SourceInfo L) {
50818 if (!isActive()) return true;
50819 CurrentSource = L;
50820 return Shr<PT_Sint16, PT_Uint32>(S, OpPC);
50821}
50822bool EvalEmitter::emitShrSint16Sint64(SourceInfo L) {
50823 if (!isActive()) return true;
50824 CurrentSource = L;
50825 return Shr<PT_Sint16, PT_Sint64>(S, OpPC);
50826}
50827bool EvalEmitter::emitShrSint16Uint64(SourceInfo L) {
50828 if (!isActive()) return true;
50829 CurrentSource = L;
50830 return Shr<PT_Sint16, PT_Uint64>(S, OpPC);
50831}
50832bool EvalEmitter::emitShrSint16IntAP(SourceInfo L) {
50833 if (!isActive()) return true;
50834 CurrentSource = L;
50835 return Shr<PT_Sint16, PT_IntAP>(S, OpPC);
50836}
50837bool EvalEmitter::emitShrSint16IntAPS(SourceInfo L) {
50838 if (!isActive()) return true;
50839 CurrentSource = L;
50840 return Shr<PT_Sint16, PT_IntAPS>(S, OpPC);
50841}
50842bool EvalEmitter::emitShrUint16Sint8(SourceInfo L) {
50843 if (!isActive()) return true;
50844 CurrentSource = L;
50845 return Shr<PT_Uint16, PT_Sint8>(S, OpPC);
50846}
50847bool EvalEmitter::emitShrUint16Uint8(SourceInfo L) {
50848 if (!isActive()) return true;
50849 CurrentSource = L;
50850 return Shr<PT_Uint16, PT_Uint8>(S, OpPC);
50851}
50852bool EvalEmitter::emitShrUint16Sint16(SourceInfo L) {
50853 if (!isActive()) return true;
50854 CurrentSource = L;
50855 return Shr<PT_Uint16, PT_Sint16>(S, OpPC);
50856}
50857bool EvalEmitter::emitShrUint16Uint16(SourceInfo L) {
50858 if (!isActive()) return true;
50859 CurrentSource = L;
50860 return Shr<PT_Uint16, PT_Uint16>(S, OpPC);
50861}
50862bool EvalEmitter::emitShrUint16Sint32(SourceInfo L) {
50863 if (!isActive()) return true;
50864 CurrentSource = L;
50865 return Shr<PT_Uint16, PT_Sint32>(S, OpPC);
50866}
50867bool EvalEmitter::emitShrUint16Uint32(SourceInfo L) {
50868 if (!isActive()) return true;
50869 CurrentSource = L;
50870 return Shr<PT_Uint16, PT_Uint32>(S, OpPC);
50871}
50872bool EvalEmitter::emitShrUint16Sint64(SourceInfo L) {
50873 if (!isActive()) return true;
50874 CurrentSource = L;
50875 return Shr<PT_Uint16, PT_Sint64>(S, OpPC);
50876}
50877bool EvalEmitter::emitShrUint16Uint64(SourceInfo L) {
50878 if (!isActive()) return true;
50879 CurrentSource = L;
50880 return Shr<PT_Uint16, PT_Uint64>(S, OpPC);
50881}
50882bool EvalEmitter::emitShrUint16IntAP(SourceInfo L) {
50883 if (!isActive()) return true;
50884 CurrentSource = L;
50885 return Shr<PT_Uint16, PT_IntAP>(S, OpPC);
50886}
50887bool EvalEmitter::emitShrUint16IntAPS(SourceInfo L) {
50888 if (!isActive()) return true;
50889 CurrentSource = L;
50890 return Shr<PT_Uint16, PT_IntAPS>(S, OpPC);
50891}
50892bool EvalEmitter::emitShrSint32Sint8(SourceInfo L) {
50893 if (!isActive()) return true;
50894 CurrentSource = L;
50895 return Shr<PT_Sint32, PT_Sint8>(S, OpPC);
50896}
50897bool EvalEmitter::emitShrSint32Uint8(SourceInfo L) {
50898 if (!isActive()) return true;
50899 CurrentSource = L;
50900 return Shr<PT_Sint32, PT_Uint8>(S, OpPC);
50901}
50902bool EvalEmitter::emitShrSint32Sint16(SourceInfo L) {
50903 if (!isActive()) return true;
50904 CurrentSource = L;
50905 return Shr<PT_Sint32, PT_Sint16>(S, OpPC);
50906}
50907bool EvalEmitter::emitShrSint32Uint16(SourceInfo L) {
50908 if (!isActive()) return true;
50909 CurrentSource = L;
50910 return Shr<PT_Sint32, PT_Uint16>(S, OpPC);
50911}
50912bool EvalEmitter::emitShrSint32Sint32(SourceInfo L) {
50913 if (!isActive()) return true;
50914 CurrentSource = L;
50915 return Shr<PT_Sint32, PT_Sint32>(S, OpPC);
50916}
50917bool EvalEmitter::emitShrSint32Uint32(SourceInfo L) {
50918 if (!isActive()) return true;
50919 CurrentSource = L;
50920 return Shr<PT_Sint32, PT_Uint32>(S, OpPC);
50921}
50922bool EvalEmitter::emitShrSint32Sint64(SourceInfo L) {
50923 if (!isActive()) return true;
50924 CurrentSource = L;
50925 return Shr<PT_Sint32, PT_Sint64>(S, OpPC);
50926}
50927bool EvalEmitter::emitShrSint32Uint64(SourceInfo L) {
50928 if (!isActive()) return true;
50929 CurrentSource = L;
50930 return Shr<PT_Sint32, PT_Uint64>(S, OpPC);
50931}
50932bool EvalEmitter::emitShrSint32IntAP(SourceInfo L) {
50933 if (!isActive()) return true;
50934 CurrentSource = L;
50935 return Shr<PT_Sint32, PT_IntAP>(S, OpPC);
50936}
50937bool EvalEmitter::emitShrSint32IntAPS(SourceInfo L) {
50938 if (!isActive()) return true;
50939 CurrentSource = L;
50940 return Shr<PT_Sint32, PT_IntAPS>(S, OpPC);
50941}
50942bool EvalEmitter::emitShrUint32Sint8(SourceInfo L) {
50943 if (!isActive()) return true;
50944 CurrentSource = L;
50945 return Shr<PT_Uint32, PT_Sint8>(S, OpPC);
50946}
50947bool EvalEmitter::emitShrUint32Uint8(SourceInfo L) {
50948 if (!isActive()) return true;
50949 CurrentSource = L;
50950 return Shr<PT_Uint32, PT_Uint8>(S, OpPC);
50951}
50952bool EvalEmitter::emitShrUint32Sint16(SourceInfo L) {
50953 if (!isActive()) return true;
50954 CurrentSource = L;
50955 return Shr<PT_Uint32, PT_Sint16>(S, OpPC);
50956}
50957bool EvalEmitter::emitShrUint32Uint16(SourceInfo L) {
50958 if (!isActive()) return true;
50959 CurrentSource = L;
50960 return Shr<PT_Uint32, PT_Uint16>(S, OpPC);
50961}
50962bool EvalEmitter::emitShrUint32Sint32(SourceInfo L) {
50963 if (!isActive()) return true;
50964 CurrentSource = L;
50965 return Shr<PT_Uint32, PT_Sint32>(S, OpPC);
50966}
50967bool EvalEmitter::emitShrUint32Uint32(SourceInfo L) {
50968 if (!isActive()) return true;
50969 CurrentSource = L;
50970 return Shr<PT_Uint32, PT_Uint32>(S, OpPC);
50971}
50972bool EvalEmitter::emitShrUint32Sint64(SourceInfo L) {
50973 if (!isActive()) return true;
50974 CurrentSource = L;
50975 return Shr<PT_Uint32, PT_Sint64>(S, OpPC);
50976}
50977bool EvalEmitter::emitShrUint32Uint64(SourceInfo L) {
50978 if (!isActive()) return true;
50979 CurrentSource = L;
50980 return Shr<PT_Uint32, PT_Uint64>(S, OpPC);
50981}
50982bool EvalEmitter::emitShrUint32IntAP(SourceInfo L) {
50983 if (!isActive()) return true;
50984 CurrentSource = L;
50985 return Shr<PT_Uint32, PT_IntAP>(S, OpPC);
50986}
50987bool EvalEmitter::emitShrUint32IntAPS(SourceInfo L) {
50988 if (!isActive()) return true;
50989 CurrentSource = L;
50990 return Shr<PT_Uint32, PT_IntAPS>(S, OpPC);
50991}
50992bool EvalEmitter::emitShrSint64Sint8(SourceInfo L) {
50993 if (!isActive()) return true;
50994 CurrentSource = L;
50995 return Shr<PT_Sint64, PT_Sint8>(S, OpPC);
50996}
50997bool EvalEmitter::emitShrSint64Uint8(SourceInfo L) {
50998 if (!isActive()) return true;
50999 CurrentSource = L;
51000 return Shr<PT_Sint64, PT_Uint8>(S, OpPC);
51001}
51002bool EvalEmitter::emitShrSint64Sint16(SourceInfo L) {
51003 if (!isActive()) return true;
51004 CurrentSource = L;
51005 return Shr<PT_Sint64, PT_Sint16>(S, OpPC);
51006}
51007bool EvalEmitter::emitShrSint64Uint16(SourceInfo L) {
51008 if (!isActive()) return true;
51009 CurrentSource = L;
51010 return Shr<PT_Sint64, PT_Uint16>(S, OpPC);
51011}
51012bool EvalEmitter::emitShrSint64Sint32(SourceInfo L) {
51013 if (!isActive()) return true;
51014 CurrentSource = L;
51015 return Shr<PT_Sint64, PT_Sint32>(S, OpPC);
51016}
51017bool EvalEmitter::emitShrSint64Uint32(SourceInfo L) {
51018 if (!isActive()) return true;
51019 CurrentSource = L;
51020 return Shr<PT_Sint64, PT_Uint32>(S, OpPC);
51021}
51022bool EvalEmitter::emitShrSint64Sint64(SourceInfo L) {
51023 if (!isActive()) return true;
51024 CurrentSource = L;
51025 return Shr<PT_Sint64, PT_Sint64>(S, OpPC);
51026}
51027bool EvalEmitter::emitShrSint64Uint64(SourceInfo L) {
51028 if (!isActive()) return true;
51029 CurrentSource = L;
51030 return Shr<PT_Sint64, PT_Uint64>(S, OpPC);
51031}
51032bool EvalEmitter::emitShrSint64IntAP(SourceInfo L) {
51033 if (!isActive()) return true;
51034 CurrentSource = L;
51035 return Shr<PT_Sint64, PT_IntAP>(S, OpPC);
51036}
51037bool EvalEmitter::emitShrSint64IntAPS(SourceInfo L) {
51038 if (!isActive()) return true;
51039 CurrentSource = L;
51040 return Shr<PT_Sint64, PT_IntAPS>(S, OpPC);
51041}
51042bool EvalEmitter::emitShrUint64Sint8(SourceInfo L) {
51043 if (!isActive()) return true;
51044 CurrentSource = L;
51045 return Shr<PT_Uint64, PT_Sint8>(S, OpPC);
51046}
51047bool EvalEmitter::emitShrUint64Uint8(SourceInfo L) {
51048 if (!isActive()) return true;
51049 CurrentSource = L;
51050 return Shr<PT_Uint64, PT_Uint8>(S, OpPC);
51051}
51052bool EvalEmitter::emitShrUint64Sint16(SourceInfo L) {
51053 if (!isActive()) return true;
51054 CurrentSource = L;
51055 return Shr<PT_Uint64, PT_Sint16>(S, OpPC);
51056}
51057bool EvalEmitter::emitShrUint64Uint16(SourceInfo L) {
51058 if (!isActive()) return true;
51059 CurrentSource = L;
51060 return Shr<PT_Uint64, PT_Uint16>(S, OpPC);
51061}
51062bool EvalEmitter::emitShrUint64Sint32(SourceInfo L) {
51063 if (!isActive()) return true;
51064 CurrentSource = L;
51065 return Shr<PT_Uint64, PT_Sint32>(S, OpPC);
51066}
51067bool EvalEmitter::emitShrUint64Uint32(SourceInfo L) {
51068 if (!isActive()) return true;
51069 CurrentSource = L;
51070 return Shr<PT_Uint64, PT_Uint32>(S, OpPC);
51071}
51072bool EvalEmitter::emitShrUint64Sint64(SourceInfo L) {
51073 if (!isActive()) return true;
51074 CurrentSource = L;
51075 return Shr<PT_Uint64, PT_Sint64>(S, OpPC);
51076}
51077bool EvalEmitter::emitShrUint64Uint64(SourceInfo L) {
51078 if (!isActive()) return true;
51079 CurrentSource = L;
51080 return Shr<PT_Uint64, PT_Uint64>(S, OpPC);
51081}
51082bool EvalEmitter::emitShrUint64IntAP(SourceInfo L) {
51083 if (!isActive()) return true;
51084 CurrentSource = L;
51085 return Shr<PT_Uint64, PT_IntAP>(S, OpPC);
51086}
51087bool EvalEmitter::emitShrUint64IntAPS(SourceInfo L) {
51088 if (!isActive()) return true;
51089 CurrentSource = L;
51090 return Shr<PT_Uint64, PT_IntAPS>(S, OpPC);
51091}
51092bool EvalEmitter::emitShrIntAPSint8(SourceInfo L) {
51093 if (!isActive()) return true;
51094 CurrentSource = L;
51095 return Shr<PT_IntAP, PT_Sint8>(S, OpPC);
51096}
51097bool EvalEmitter::emitShrIntAPUint8(SourceInfo L) {
51098 if (!isActive()) return true;
51099 CurrentSource = L;
51100 return Shr<PT_IntAP, PT_Uint8>(S, OpPC);
51101}
51102bool EvalEmitter::emitShrIntAPSint16(SourceInfo L) {
51103 if (!isActive()) return true;
51104 CurrentSource = L;
51105 return Shr<PT_IntAP, PT_Sint16>(S, OpPC);
51106}
51107bool EvalEmitter::emitShrIntAPUint16(SourceInfo L) {
51108 if (!isActive()) return true;
51109 CurrentSource = L;
51110 return Shr<PT_IntAP, PT_Uint16>(S, OpPC);
51111}
51112bool EvalEmitter::emitShrIntAPSint32(SourceInfo L) {
51113 if (!isActive()) return true;
51114 CurrentSource = L;
51115 return Shr<PT_IntAP, PT_Sint32>(S, OpPC);
51116}
51117bool EvalEmitter::emitShrIntAPUint32(SourceInfo L) {
51118 if (!isActive()) return true;
51119 CurrentSource = L;
51120 return Shr<PT_IntAP, PT_Uint32>(S, OpPC);
51121}
51122bool EvalEmitter::emitShrIntAPSint64(SourceInfo L) {
51123 if (!isActive()) return true;
51124 CurrentSource = L;
51125 return Shr<PT_IntAP, PT_Sint64>(S, OpPC);
51126}
51127bool EvalEmitter::emitShrIntAPUint64(SourceInfo L) {
51128 if (!isActive()) return true;
51129 CurrentSource = L;
51130 return Shr<PT_IntAP, PT_Uint64>(S, OpPC);
51131}
51132bool EvalEmitter::emitShrIntAPIntAP(SourceInfo L) {
51133 if (!isActive()) return true;
51134 CurrentSource = L;
51135 return Shr<PT_IntAP, PT_IntAP>(S, OpPC);
51136}
51137bool EvalEmitter::emitShrIntAPIntAPS(SourceInfo L) {
51138 if (!isActive()) return true;
51139 CurrentSource = L;
51140 return Shr<PT_IntAP, PT_IntAPS>(S, OpPC);
51141}
51142bool EvalEmitter::emitShrIntAPSSint8(SourceInfo L) {
51143 if (!isActive()) return true;
51144 CurrentSource = L;
51145 return Shr<PT_IntAPS, PT_Sint8>(S, OpPC);
51146}
51147bool EvalEmitter::emitShrIntAPSUint8(SourceInfo L) {
51148 if (!isActive()) return true;
51149 CurrentSource = L;
51150 return Shr<PT_IntAPS, PT_Uint8>(S, OpPC);
51151}
51152bool EvalEmitter::emitShrIntAPSSint16(SourceInfo L) {
51153 if (!isActive()) return true;
51154 CurrentSource = L;
51155 return Shr<PT_IntAPS, PT_Sint16>(S, OpPC);
51156}
51157bool EvalEmitter::emitShrIntAPSUint16(SourceInfo L) {
51158 if (!isActive()) return true;
51159 CurrentSource = L;
51160 return Shr<PT_IntAPS, PT_Uint16>(S, OpPC);
51161}
51162bool EvalEmitter::emitShrIntAPSSint32(SourceInfo L) {
51163 if (!isActive()) return true;
51164 CurrentSource = L;
51165 return Shr<PT_IntAPS, PT_Sint32>(S, OpPC);
51166}
51167bool EvalEmitter::emitShrIntAPSUint32(SourceInfo L) {
51168 if (!isActive()) return true;
51169 CurrentSource = L;
51170 return Shr<PT_IntAPS, PT_Uint32>(S, OpPC);
51171}
51172bool EvalEmitter::emitShrIntAPSSint64(SourceInfo L) {
51173 if (!isActive()) return true;
51174 CurrentSource = L;
51175 return Shr<PT_IntAPS, PT_Sint64>(S, OpPC);
51176}
51177bool EvalEmitter::emitShrIntAPSUint64(SourceInfo L) {
51178 if (!isActive()) return true;
51179 CurrentSource = L;
51180 return Shr<PT_IntAPS, PT_Uint64>(S, OpPC);
51181}
51182bool EvalEmitter::emitShrIntAPSIntAP(SourceInfo L) {
51183 if (!isActive()) return true;
51184 CurrentSource = L;
51185 return Shr<PT_IntAPS, PT_IntAP>(S, OpPC);
51186}
51187bool EvalEmitter::emitShrIntAPSIntAPS(SourceInfo L) {
51188 if (!isActive()) return true;
51189 CurrentSource = L;
51190 return Shr<PT_IntAPS, PT_IntAPS>(S, OpPC);
51191}
51192#endif
51193#ifdef GET_OPCODE_NAMES
51194OP_SideEffect,
51195#endif
51196#ifdef GET_INTERPFN_LIST
51197&Interp_SideEffect,
51198#endif
51199#ifdef GET_INTERPFN_DISPATCHERS
51200PRESERVE_NONE
51201static bool Interp_SideEffect(InterpState &S, CodePtr &PC) {
51202 if (!SideEffect(S, PC)) return false;
51203#if USE_TAILCALLS
51204 MUSTTAIL return InterpNext(S, PC);
51205#else
51206 return true;
51207#endif
51208}
51209#endif
51210#ifdef GET_DISASM
51211case OP_SideEffect:
51212 Text.Op = PrintName("SideEffect");
51213 break;
51214#endif
51215#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51216bool emitSideEffect(SourceInfo);
51217#endif
51218#ifdef GET_LINK_IMPL
51219bool ByteCodeEmitter::emitSideEffect(SourceInfo L) {
51220 return emitOp<>(OP_SideEffect, L);
51221}
51222#endif
51223#ifdef GET_EVAL_IMPL
51224bool EvalEmitter::emitSideEffect(SourceInfo L) {
51225 if (!isActive()) return true;
51226 CurrentSource = L;
51227 return SideEffect(S, OpPC);
51228}
51229#endif
51230#ifdef GET_OPCODE_NAMES
51231OP_SizelessVectorElementSize,
51232#endif
51233#ifdef GET_INTERPFN_LIST
51234&Interp_SizelessVectorElementSize,
51235#endif
51236#ifdef GET_INTERPFN_DISPATCHERS
51237PRESERVE_NONE
51238static bool Interp_SizelessVectorElementSize(InterpState &S, CodePtr &PC) {
51239 if (!SizelessVectorElementSize(S, PC)) return false;
51240#if USE_TAILCALLS
51241 MUSTTAIL return InterpNext(S, PC);
51242#else
51243 return true;
51244#endif
51245}
51246#endif
51247#ifdef GET_DISASM
51248case OP_SizelessVectorElementSize:
51249 Text.Op = PrintName("SizelessVectorElementSize");
51250 break;
51251#endif
51252#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51253bool emitSizelessVectorElementSize(SourceInfo);
51254#endif
51255#ifdef GET_LINK_IMPL
51256bool ByteCodeEmitter::emitSizelessVectorElementSize(SourceInfo L) {
51257 return emitOp<>(OP_SizelessVectorElementSize, L);
51258}
51259#endif
51260#ifdef GET_EVAL_IMPL
51261bool EvalEmitter::emitSizelessVectorElementSize(SourceInfo L) {
51262 if (!isActive()) return true;
51263 CurrentSource = L;
51264 return SizelessVectorElementSize(S, OpPC);
51265}
51266#endif
51267#ifdef GET_OPCODE_NAMES
51268OP_StartInit,
51269#endif
51270#ifdef GET_INTERPFN_LIST
51271&Interp_StartInit,
51272#endif
51273#ifdef GET_INTERPFN_DISPATCHERS
51274PRESERVE_NONE
51275static bool Interp_StartInit(InterpState &S, CodePtr &PC) {
51276 StartInit(S, PC);
51277#if USE_TAILCALLS
51278 MUSTTAIL return InterpNext(S, PC);
51279#else
51280 return true;
51281#endif
51282}
51283#endif
51284#ifdef GET_DISASM
51285case OP_StartInit:
51286 Text.Op = PrintName("StartInit");
51287 break;
51288#endif
51289#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51290bool emitStartInit(SourceInfo);
51291#endif
51292#ifdef GET_LINK_IMPL
51293bool ByteCodeEmitter::emitStartInit(SourceInfo L) {
51294 return emitOp<>(OP_StartInit, L);
51295}
51296#endif
51297#ifdef GET_EVAL_IMPL
51298bool EvalEmitter::emitStartInit(SourceInfo L) {
51299 if (!isActive()) return true;
51300 CurrentSource = L;
51301 return StartInit(S, OpPC);
51302}
51303#endif
51304#ifdef GET_OPCODE_NAMES
51305OP_StartSpeculation,
51306#endif
51307#ifdef GET_INTERPFN_LIST
51308&Interp_StartSpeculation,
51309#endif
51310#ifdef GET_INTERPFN_DISPATCHERS
51311PRESERVE_NONE
51312static bool Interp_StartSpeculation(InterpState &S, CodePtr &PC) {
51313 StartSpeculation(S, PC);
51314#if USE_TAILCALLS
51315 MUSTTAIL return InterpNext(S, PC);
51316#else
51317 return true;
51318#endif
51319}
51320#endif
51321#ifdef GET_DISASM
51322case OP_StartSpeculation:
51323 Text.Op = PrintName("StartSpeculation");
51324 break;
51325#endif
51326#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51327bool emitStartSpeculation(SourceInfo);
51328#endif
51329#ifdef GET_LINK_IMPL
51330bool ByteCodeEmitter::emitStartSpeculation(SourceInfo L) {
51331 return emitOp<>(OP_StartSpeculation, L);
51332}
51333#endif
51334#ifdef GET_EVAL_IMPL
51335bool EvalEmitter::emitStartSpeculation(SourceInfo L) {
51336 if (!isActive()) return true;
51337 CurrentSource = L;
51338 return StartSpeculation(S, OpPC);
51339}
51340#endif
51341#ifdef GET_OPCODE_NAMES
51342OP_StartThisLifetime,
51343#endif
51344#ifdef GET_INTERPFN_LIST
51345&Interp_StartThisLifetime,
51346#endif
51347#ifdef GET_INTERPFN_DISPATCHERS
51348PRESERVE_NONE
51349static bool Interp_StartThisLifetime(InterpState &S, CodePtr &PC) {
51350 if (!StartThisLifetime(S, PC)) return false;
51351#if USE_TAILCALLS
51352 MUSTTAIL return InterpNext(S, PC);
51353#else
51354 return true;
51355#endif
51356}
51357#endif
51358#ifdef GET_DISASM
51359case OP_StartThisLifetime:
51360 Text.Op = PrintName("StartThisLifetime");
51361 break;
51362#endif
51363#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51364bool emitStartThisLifetime(SourceInfo);
51365#endif
51366#ifdef GET_LINK_IMPL
51367bool ByteCodeEmitter::emitStartThisLifetime(SourceInfo L) {
51368 return emitOp<>(OP_StartThisLifetime, L);
51369}
51370#endif
51371#ifdef GET_EVAL_IMPL
51372bool EvalEmitter::emitStartThisLifetime(SourceInfo L) {
51373 if (!isActive()) return true;
51374 CurrentSource = L;
51375 return StartThisLifetime(S, OpPC);
51376}
51377#endif
51378#ifdef GET_OPCODE_NAMES
51379OP_StartThisLifetime1,
51380#endif
51381#ifdef GET_INTERPFN_LIST
51382&Interp_StartThisLifetime1,
51383#endif
51384#ifdef GET_INTERPFN_DISPATCHERS
51385PRESERVE_NONE
51386static bool Interp_StartThisLifetime1(InterpState &S, CodePtr &PC) {
51387 if (!StartThisLifetime1(S, PC)) return false;
51388#if USE_TAILCALLS
51389 MUSTTAIL return InterpNext(S, PC);
51390#else
51391 return true;
51392#endif
51393}
51394#endif
51395#ifdef GET_DISASM
51396case OP_StartThisLifetime1:
51397 Text.Op = PrintName("StartThisLifetime1");
51398 break;
51399#endif
51400#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51401bool emitStartThisLifetime1(SourceInfo);
51402#endif
51403#ifdef GET_LINK_IMPL
51404bool ByteCodeEmitter::emitStartThisLifetime1(SourceInfo L) {
51405 return emitOp<>(OP_StartThisLifetime1, L);
51406}
51407#endif
51408#ifdef GET_EVAL_IMPL
51409bool EvalEmitter::emitStartThisLifetime1(SourceInfo L) {
51410 if (!isActive()) return true;
51411 CurrentSource = L;
51412 return StartThisLifetime1(S, OpPC);
51413}
51414#endif
51415#ifdef GET_OPCODE_NAMES
51416OP_StoreSint8,
51417OP_StoreUint8,
51418OP_StoreSint16,
51419OP_StoreUint16,
51420OP_StoreSint32,
51421OP_StoreUint32,
51422OP_StoreSint64,
51423OP_StoreUint64,
51424OP_StoreIntAP,
51425OP_StoreIntAPS,
51426OP_StoreBool,
51427OP_StoreFixedPoint,
51428OP_StorePtr,
51429OP_StoreMemberPtr,
51430OP_StoreFloat,
51431#endif
51432#ifdef GET_INTERPFN_LIST
51433&Interp_StoreSint8,
51434&Interp_StoreUint8,
51435&Interp_StoreSint16,
51436&Interp_StoreUint16,
51437&Interp_StoreSint32,
51438&Interp_StoreUint32,
51439&Interp_StoreSint64,
51440&Interp_StoreUint64,
51441&Interp_StoreIntAP,
51442&Interp_StoreIntAPS,
51443&Interp_StoreBool,
51444&Interp_StoreFixedPoint,
51445&Interp_StorePtr,
51446&Interp_StoreMemberPtr,
51447&Interp_StoreFloat,
51448#endif
51449#ifdef GET_INTERPFN_DISPATCHERS
51450PRESERVE_NONE
51451static bool Interp_StoreSint8(InterpState &S, CodePtr &PC) {
51452 if (!Store<PT_Sint8>(S, PC)) return false;
51453#if USE_TAILCALLS
51454 MUSTTAIL return InterpNext(S, PC);
51455#else
51456 return true;
51457#endif
51458}
51459PRESERVE_NONE
51460static bool Interp_StoreUint8(InterpState &S, CodePtr &PC) {
51461 if (!Store<PT_Uint8>(S, PC)) return false;
51462#if USE_TAILCALLS
51463 MUSTTAIL return InterpNext(S, PC);
51464#else
51465 return true;
51466#endif
51467}
51468PRESERVE_NONE
51469static bool Interp_StoreSint16(InterpState &S, CodePtr &PC) {
51470 if (!Store<PT_Sint16>(S, PC)) return false;
51471#if USE_TAILCALLS
51472 MUSTTAIL return InterpNext(S, PC);
51473#else
51474 return true;
51475#endif
51476}
51477PRESERVE_NONE
51478static bool Interp_StoreUint16(InterpState &S, CodePtr &PC) {
51479 if (!Store<PT_Uint16>(S, PC)) return false;
51480#if USE_TAILCALLS
51481 MUSTTAIL return InterpNext(S, PC);
51482#else
51483 return true;
51484#endif
51485}
51486PRESERVE_NONE
51487static bool Interp_StoreSint32(InterpState &S, CodePtr &PC) {
51488 if (!Store<PT_Sint32>(S, PC)) return false;
51489#if USE_TAILCALLS
51490 MUSTTAIL return InterpNext(S, PC);
51491#else
51492 return true;
51493#endif
51494}
51495PRESERVE_NONE
51496static bool Interp_StoreUint32(InterpState &S, CodePtr &PC) {
51497 if (!Store<PT_Uint32>(S, PC)) return false;
51498#if USE_TAILCALLS
51499 MUSTTAIL return InterpNext(S, PC);
51500#else
51501 return true;
51502#endif
51503}
51504PRESERVE_NONE
51505static bool Interp_StoreSint64(InterpState &S, CodePtr &PC) {
51506 if (!Store<PT_Sint64>(S, PC)) return false;
51507#if USE_TAILCALLS
51508 MUSTTAIL return InterpNext(S, PC);
51509#else
51510 return true;
51511#endif
51512}
51513PRESERVE_NONE
51514static bool Interp_StoreUint64(InterpState &S, CodePtr &PC) {
51515 if (!Store<PT_Uint64>(S, PC)) return false;
51516#if USE_TAILCALLS
51517 MUSTTAIL return InterpNext(S, PC);
51518#else
51519 return true;
51520#endif
51521}
51522PRESERVE_NONE
51523static bool Interp_StoreIntAP(InterpState &S, CodePtr &PC) {
51524 if (!Store<PT_IntAP>(S, PC)) return false;
51525#if USE_TAILCALLS
51526 MUSTTAIL return InterpNext(S, PC);
51527#else
51528 return true;
51529#endif
51530}
51531PRESERVE_NONE
51532static bool Interp_StoreIntAPS(InterpState &S, CodePtr &PC) {
51533 if (!Store<PT_IntAPS>(S, PC)) return false;
51534#if USE_TAILCALLS
51535 MUSTTAIL return InterpNext(S, PC);
51536#else
51537 return true;
51538#endif
51539}
51540PRESERVE_NONE
51541static bool Interp_StoreBool(InterpState &S, CodePtr &PC) {
51542 if (!Store<PT_Bool>(S, PC)) return false;
51543#if USE_TAILCALLS
51544 MUSTTAIL return InterpNext(S, PC);
51545#else
51546 return true;
51547#endif
51548}
51549PRESERVE_NONE
51550static bool Interp_StoreFixedPoint(InterpState &S, CodePtr &PC) {
51551 if (!Store<PT_FixedPoint>(S, PC)) return false;
51552#if USE_TAILCALLS
51553 MUSTTAIL return InterpNext(S, PC);
51554#else
51555 return true;
51556#endif
51557}
51558PRESERVE_NONE
51559static bool Interp_StorePtr(InterpState &S, CodePtr &PC) {
51560 if (!Store<PT_Ptr>(S, PC)) return false;
51561#if USE_TAILCALLS
51562 MUSTTAIL return InterpNext(S, PC);
51563#else
51564 return true;
51565#endif
51566}
51567PRESERVE_NONE
51568static bool Interp_StoreMemberPtr(InterpState &S, CodePtr &PC) {
51569 if (!Store<PT_MemberPtr>(S, PC)) return false;
51570#if USE_TAILCALLS
51571 MUSTTAIL return InterpNext(S, PC);
51572#else
51573 return true;
51574#endif
51575}
51576PRESERVE_NONE
51577static bool Interp_StoreFloat(InterpState &S, CodePtr &PC) {
51578 if (!Store<PT_Float>(S, PC)) return false;
51579#if USE_TAILCALLS
51580 MUSTTAIL return InterpNext(S, PC);
51581#else
51582 return true;
51583#endif
51584}
51585#endif
51586#ifdef GET_DISASM
51587case OP_StoreSint8:
51588 Text.Op = PrintName("StoreSint8");
51589 break;
51590case OP_StoreUint8:
51591 Text.Op = PrintName("StoreUint8");
51592 break;
51593case OP_StoreSint16:
51594 Text.Op = PrintName("StoreSint16");
51595 break;
51596case OP_StoreUint16:
51597 Text.Op = PrintName("StoreUint16");
51598 break;
51599case OP_StoreSint32:
51600 Text.Op = PrintName("StoreSint32");
51601 break;
51602case OP_StoreUint32:
51603 Text.Op = PrintName("StoreUint32");
51604 break;
51605case OP_StoreSint64:
51606 Text.Op = PrintName("StoreSint64");
51607 break;
51608case OP_StoreUint64:
51609 Text.Op = PrintName("StoreUint64");
51610 break;
51611case OP_StoreIntAP:
51612 Text.Op = PrintName("StoreIntAP");
51613 break;
51614case OP_StoreIntAPS:
51615 Text.Op = PrintName("StoreIntAPS");
51616 break;
51617case OP_StoreBool:
51618 Text.Op = PrintName("StoreBool");
51619 break;
51620case OP_StoreFixedPoint:
51621 Text.Op = PrintName("StoreFixedPoint");
51622 break;
51623case OP_StorePtr:
51624 Text.Op = PrintName("StorePtr");
51625 break;
51626case OP_StoreMemberPtr:
51627 Text.Op = PrintName("StoreMemberPtr");
51628 break;
51629case OP_StoreFloat:
51630 Text.Op = PrintName("StoreFloat");
51631 break;
51632#endif
51633#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51634bool emitStoreSint8(SourceInfo);
51635bool emitStoreUint8(SourceInfo);
51636bool emitStoreSint16(SourceInfo);
51637bool emitStoreUint16(SourceInfo);
51638bool emitStoreSint32(SourceInfo);
51639bool emitStoreUint32(SourceInfo);
51640bool emitStoreSint64(SourceInfo);
51641bool emitStoreUint64(SourceInfo);
51642bool emitStoreIntAP(SourceInfo);
51643bool emitStoreIntAPS(SourceInfo);
51644bool emitStoreBool(SourceInfo);
51645bool emitStoreFixedPoint(SourceInfo);
51646bool emitStorePtr(SourceInfo);
51647bool emitStoreMemberPtr(SourceInfo);
51648bool emitStoreFloat(SourceInfo);
51649#endif
51650#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
51651[[nodiscard]] bool emitStore(PrimType, SourceInfo I);
51652#endif
51653#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
51654bool
51655#if defined(GET_EVAL_IMPL)
51656EvalEmitter
51657#else
51658ByteCodeEmitter
51659#endif
51660::emitStore(PrimType T0, SourceInfo I) {
51661 switch (T0) {
51662 case PT_Sint8:
51663 return emitStoreSint8(I);
51664 case PT_Uint8:
51665 return emitStoreUint8(I);
51666 case PT_Sint16:
51667 return emitStoreSint16(I);
51668 case PT_Uint16:
51669 return emitStoreUint16(I);
51670 case PT_Sint32:
51671 return emitStoreSint32(I);
51672 case PT_Uint32:
51673 return emitStoreUint32(I);
51674 case PT_Sint64:
51675 return emitStoreSint64(I);
51676 case PT_Uint64:
51677 return emitStoreUint64(I);
51678 case PT_IntAP:
51679 return emitStoreIntAP(I);
51680 case PT_IntAPS:
51681 return emitStoreIntAPS(I);
51682 case PT_Bool:
51683 return emitStoreBool(I);
51684 case PT_FixedPoint:
51685 return emitStoreFixedPoint(I);
51686 case PT_Ptr:
51687 return emitStorePtr(I);
51688 case PT_MemberPtr:
51689 return emitStoreMemberPtr(I);
51690 case PT_Float:
51691 return emitStoreFloat(I);
51692 }
51693 llvm_unreachable("invalid enum value");
51694}
51695#endif
51696#ifdef GET_LINK_IMPL
51697bool ByteCodeEmitter::emitStoreSint8(SourceInfo L) {
51698 return emitOp<>(OP_StoreSint8, L);
51699}
51700bool ByteCodeEmitter::emitStoreUint8(SourceInfo L) {
51701 return emitOp<>(OP_StoreUint8, L);
51702}
51703bool ByteCodeEmitter::emitStoreSint16(SourceInfo L) {
51704 return emitOp<>(OP_StoreSint16, L);
51705}
51706bool ByteCodeEmitter::emitStoreUint16(SourceInfo L) {
51707 return emitOp<>(OP_StoreUint16, L);
51708}
51709bool ByteCodeEmitter::emitStoreSint32(SourceInfo L) {
51710 return emitOp<>(OP_StoreSint32, L);
51711}
51712bool ByteCodeEmitter::emitStoreUint32(SourceInfo L) {
51713 return emitOp<>(OP_StoreUint32, L);
51714}
51715bool ByteCodeEmitter::emitStoreSint64(SourceInfo L) {
51716 return emitOp<>(OP_StoreSint64, L);
51717}
51718bool ByteCodeEmitter::emitStoreUint64(SourceInfo L) {
51719 return emitOp<>(OP_StoreUint64, L);
51720}
51721bool ByteCodeEmitter::emitStoreIntAP(SourceInfo L) {
51722 return emitOp<>(OP_StoreIntAP, L);
51723}
51724bool ByteCodeEmitter::emitStoreIntAPS(SourceInfo L) {
51725 return emitOp<>(OP_StoreIntAPS, L);
51726}
51727bool ByteCodeEmitter::emitStoreBool(SourceInfo L) {
51728 return emitOp<>(OP_StoreBool, L);
51729}
51730bool ByteCodeEmitter::emitStoreFixedPoint(SourceInfo L) {
51731 return emitOp<>(OP_StoreFixedPoint, L);
51732}
51733bool ByteCodeEmitter::emitStorePtr(SourceInfo L) {
51734 return emitOp<>(OP_StorePtr, L);
51735}
51736bool ByteCodeEmitter::emitStoreMemberPtr(SourceInfo L) {
51737 return emitOp<>(OP_StoreMemberPtr, L);
51738}
51739bool ByteCodeEmitter::emitStoreFloat(SourceInfo L) {
51740 return emitOp<>(OP_StoreFloat, L);
51741}
51742#endif
51743#ifdef GET_EVAL_IMPL
51744bool EvalEmitter::emitStoreSint8(SourceInfo L) {
51745 if (!isActive()) return true;
51746 CurrentSource = L;
51747 return Store<PT_Sint8>(S, OpPC);
51748}
51749bool EvalEmitter::emitStoreUint8(SourceInfo L) {
51750 if (!isActive()) return true;
51751 CurrentSource = L;
51752 return Store<PT_Uint8>(S, OpPC);
51753}
51754bool EvalEmitter::emitStoreSint16(SourceInfo L) {
51755 if (!isActive()) return true;
51756 CurrentSource = L;
51757 return Store<PT_Sint16>(S, OpPC);
51758}
51759bool EvalEmitter::emitStoreUint16(SourceInfo L) {
51760 if (!isActive()) return true;
51761 CurrentSource = L;
51762 return Store<PT_Uint16>(S, OpPC);
51763}
51764bool EvalEmitter::emitStoreSint32(SourceInfo L) {
51765 if (!isActive()) return true;
51766 CurrentSource = L;
51767 return Store<PT_Sint32>(S, OpPC);
51768}
51769bool EvalEmitter::emitStoreUint32(SourceInfo L) {
51770 if (!isActive()) return true;
51771 CurrentSource = L;
51772 return Store<PT_Uint32>(S, OpPC);
51773}
51774bool EvalEmitter::emitStoreSint64(SourceInfo L) {
51775 if (!isActive()) return true;
51776 CurrentSource = L;
51777 return Store<PT_Sint64>(S, OpPC);
51778}
51779bool EvalEmitter::emitStoreUint64(SourceInfo L) {
51780 if (!isActive()) return true;
51781 CurrentSource = L;
51782 return Store<PT_Uint64>(S, OpPC);
51783}
51784bool EvalEmitter::emitStoreIntAP(SourceInfo L) {
51785 if (!isActive()) return true;
51786 CurrentSource = L;
51787 return Store<PT_IntAP>(S, OpPC);
51788}
51789bool EvalEmitter::emitStoreIntAPS(SourceInfo L) {
51790 if (!isActive()) return true;
51791 CurrentSource = L;
51792 return Store<PT_IntAPS>(S, OpPC);
51793}
51794bool EvalEmitter::emitStoreBool(SourceInfo L) {
51795 if (!isActive()) return true;
51796 CurrentSource = L;
51797 return Store<PT_Bool>(S, OpPC);
51798}
51799bool EvalEmitter::emitStoreFixedPoint(SourceInfo L) {
51800 if (!isActive()) return true;
51801 CurrentSource = L;
51802 return Store<PT_FixedPoint>(S, OpPC);
51803}
51804bool EvalEmitter::emitStorePtr(SourceInfo L) {
51805 if (!isActive()) return true;
51806 CurrentSource = L;
51807 return Store<PT_Ptr>(S, OpPC);
51808}
51809bool EvalEmitter::emitStoreMemberPtr(SourceInfo L) {
51810 if (!isActive()) return true;
51811 CurrentSource = L;
51812 return Store<PT_MemberPtr>(S, OpPC);
51813}
51814bool EvalEmitter::emitStoreFloat(SourceInfo L) {
51815 if (!isActive()) return true;
51816 CurrentSource = L;
51817 return Store<PT_Float>(S, OpPC);
51818}
51819#endif
51820#ifdef GET_OPCODE_NAMES
51821OP_StoreActivateSint8,
51822OP_StoreActivateUint8,
51823OP_StoreActivateSint16,
51824OP_StoreActivateUint16,
51825OP_StoreActivateSint32,
51826OP_StoreActivateUint32,
51827OP_StoreActivateSint64,
51828OP_StoreActivateUint64,
51829OP_StoreActivateIntAP,
51830OP_StoreActivateIntAPS,
51831OP_StoreActivateBool,
51832OP_StoreActivateFixedPoint,
51833OP_StoreActivatePtr,
51834OP_StoreActivateMemberPtr,
51835OP_StoreActivateFloat,
51836#endif
51837#ifdef GET_INTERPFN_LIST
51838&Interp_StoreActivateSint8,
51839&Interp_StoreActivateUint8,
51840&Interp_StoreActivateSint16,
51841&Interp_StoreActivateUint16,
51842&Interp_StoreActivateSint32,
51843&Interp_StoreActivateUint32,
51844&Interp_StoreActivateSint64,
51845&Interp_StoreActivateUint64,
51846&Interp_StoreActivateIntAP,
51847&Interp_StoreActivateIntAPS,
51848&Interp_StoreActivateBool,
51849&Interp_StoreActivateFixedPoint,
51850&Interp_StoreActivatePtr,
51851&Interp_StoreActivateMemberPtr,
51852&Interp_StoreActivateFloat,
51853#endif
51854#ifdef GET_INTERPFN_DISPATCHERS
51855PRESERVE_NONE
51856static bool Interp_StoreActivateSint8(InterpState &S, CodePtr &PC) {
51857 if (!StoreActivate<PT_Sint8>(S, PC)) return false;
51858#if USE_TAILCALLS
51859 MUSTTAIL return InterpNext(S, PC);
51860#else
51861 return true;
51862#endif
51863}
51864PRESERVE_NONE
51865static bool Interp_StoreActivateUint8(InterpState &S, CodePtr &PC) {
51866 if (!StoreActivate<PT_Uint8>(S, PC)) return false;
51867#if USE_TAILCALLS
51868 MUSTTAIL return InterpNext(S, PC);
51869#else
51870 return true;
51871#endif
51872}
51873PRESERVE_NONE
51874static bool Interp_StoreActivateSint16(InterpState &S, CodePtr &PC) {
51875 if (!StoreActivate<PT_Sint16>(S, PC)) return false;
51876#if USE_TAILCALLS
51877 MUSTTAIL return InterpNext(S, PC);
51878#else
51879 return true;
51880#endif
51881}
51882PRESERVE_NONE
51883static bool Interp_StoreActivateUint16(InterpState &S, CodePtr &PC) {
51884 if (!StoreActivate<PT_Uint16>(S, PC)) return false;
51885#if USE_TAILCALLS
51886 MUSTTAIL return InterpNext(S, PC);
51887#else
51888 return true;
51889#endif
51890}
51891PRESERVE_NONE
51892static bool Interp_StoreActivateSint32(InterpState &S, CodePtr &PC) {
51893 if (!StoreActivate<PT_Sint32>(S, PC)) return false;
51894#if USE_TAILCALLS
51895 MUSTTAIL return InterpNext(S, PC);
51896#else
51897 return true;
51898#endif
51899}
51900PRESERVE_NONE
51901static bool Interp_StoreActivateUint32(InterpState &S, CodePtr &PC) {
51902 if (!StoreActivate<PT_Uint32>(S, PC)) return false;
51903#if USE_TAILCALLS
51904 MUSTTAIL return InterpNext(S, PC);
51905#else
51906 return true;
51907#endif
51908}
51909PRESERVE_NONE
51910static bool Interp_StoreActivateSint64(InterpState &S, CodePtr &PC) {
51911 if (!StoreActivate<PT_Sint64>(S, PC)) return false;
51912#if USE_TAILCALLS
51913 MUSTTAIL return InterpNext(S, PC);
51914#else
51915 return true;
51916#endif
51917}
51918PRESERVE_NONE
51919static bool Interp_StoreActivateUint64(InterpState &S, CodePtr &PC) {
51920 if (!StoreActivate<PT_Uint64>(S, PC)) return false;
51921#if USE_TAILCALLS
51922 MUSTTAIL return InterpNext(S, PC);
51923#else
51924 return true;
51925#endif
51926}
51927PRESERVE_NONE
51928static bool Interp_StoreActivateIntAP(InterpState &S, CodePtr &PC) {
51929 if (!StoreActivate<PT_IntAP>(S, PC)) return false;
51930#if USE_TAILCALLS
51931 MUSTTAIL return InterpNext(S, PC);
51932#else
51933 return true;
51934#endif
51935}
51936PRESERVE_NONE
51937static bool Interp_StoreActivateIntAPS(InterpState &S, CodePtr &PC) {
51938 if (!StoreActivate<PT_IntAPS>(S, PC)) return false;
51939#if USE_TAILCALLS
51940 MUSTTAIL return InterpNext(S, PC);
51941#else
51942 return true;
51943#endif
51944}
51945PRESERVE_NONE
51946static bool Interp_StoreActivateBool(InterpState &S, CodePtr &PC) {
51947 if (!StoreActivate<PT_Bool>(S, PC)) return false;
51948#if USE_TAILCALLS
51949 MUSTTAIL return InterpNext(S, PC);
51950#else
51951 return true;
51952#endif
51953}
51954PRESERVE_NONE
51955static bool Interp_StoreActivateFixedPoint(InterpState &S, CodePtr &PC) {
51956 if (!StoreActivate<PT_FixedPoint>(S, PC)) return false;
51957#if USE_TAILCALLS
51958 MUSTTAIL return InterpNext(S, PC);
51959#else
51960 return true;
51961#endif
51962}
51963PRESERVE_NONE
51964static bool Interp_StoreActivatePtr(InterpState &S, CodePtr &PC) {
51965 if (!StoreActivate<PT_Ptr>(S, PC)) return false;
51966#if USE_TAILCALLS
51967 MUSTTAIL return InterpNext(S, PC);
51968#else
51969 return true;
51970#endif
51971}
51972PRESERVE_NONE
51973static bool Interp_StoreActivateMemberPtr(InterpState &S, CodePtr &PC) {
51974 if (!StoreActivate<PT_MemberPtr>(S, PC)) return false;
51975#if USE_TAILCALLS
51976 MUSTTAIL return InterpNext(S, PC);
51977#else
51978 return true;
51979#endif
51980}
51981PRESERVE_NONE
51982static bool Interp_StoreActivateFloat(InterpState &S, CodePtr &PC) {
51983 if (!StoreActivate<PT_Float>(S, PC)) return false;
51984#if USE_TAILCALLS
51985 MUSTTAIL return InterpNext(S, PC);
51986#else
51987 return true;
51988#endif
51989}
51990#endif
51991#ifdef GET_DISASM
51992case OP_StoreActivateSint8:
51993 Text.Op = PrintName("StoreActivateSint8");
51994 break;
51995case OP_StoreActivateUint8:
51996 Text.Op = PrintName("StoreActivateUint8");
51997 break;
51998case OP_StoreActivateSint16:
51999 Text.Op = PrintName("StoreActivateSint16");
52000 break;
52001case OP_StoreActivateUint16:
52002 Text.Op = PrintName("StoreActivateUint16");
52003 break;
52004case OP_StoreActivateSint32:
52005 Text.Op = PrintName("StoreActivateSint32");
52006 break;
52007case OP_StoreActivateUint32:
52008 Text.Op = PrintName("StoreActivateUint32");
52009 break;
52010case OP_StoreActivateSint64:
52011 Text.Op = PrintName("StoreActivateSint64");
52012 break;
52013case OP_StoreActivateUint64:
52014 Text.Op = PrintName("StoreActivateUint64");
52015 break;
52016case OP_StoreActivateIntAP:
52017 Text.Op = PrintName("StoreActivateIntAP");
52018 break;
52019case OP_StoreActivateIntAPS:
52020 Text.Op = PrintName("StoreActivateIntAPS");
52021 break;
52022case OP_StoreActivateBool:
52023 Text.Op = PrintName("StoreActivateBool");
52024 break;
52025case OP_StoreActivateFixedPoint:
52026 Text.Op = PrintName("StoreActivateFixedPoint");
52027 break;
52028case OP_StoreActivatePtr:
52029 Text.Op = PrintName("StoreActivatePtr");
52030 break;
52031case OP_StoreActivateMemberPtr:
52032 Text.Op = PrintName("StoreActivateMemberPtr");
52033 break;
52034case OP_StoreActivateFloat:
52035 Text.Op = PrintName("StoreActivateFloat");
52036 break;
52037#endif
52038#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52039bool emitStoreActivateSint8(SourceInfo);
52040bool emitStoreActivateUint8(SourceInfo);
52041bool emitStoreActivateSint16(SourceInfo);
52042bool emitStoreActivateUint16(SourceInfo);
52043bool emitStoreActivateSint32(SourceInfo);
52044bool emitStoreActivateUint32(SourceInfo);
52045bool emitStoreActivateSint64(SourceInfo);
52046bool emitStoreActivateUint64(SourceInfo);
52047bool emitStoreActivateIntAP(SourceInfo);
52048bool emitStoreActivateIntAPS(SourceInfo);
52049bool emitStoreActivateBool(SourceInfo);
52050bool emitStoreActivateFixedPoint(SourceInfo);
52051bool emitStoreActivatePtr(SourceInfo);
52052bool emitStoreActivateMemberPtr(SourceInfo);
52053bool emitStoreActivateFloat(SourceInfo);
52054#endif
52055#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52056[[nodiscard]] bool emitStoreActivate(PrimType, SourceInfo I);
52057#endif
52058#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
52059bool
52060#if defined(GET_EVAL_IMPL)
52061EvalEmitter
52062#else
52063ByteCodeEmitter
52064#endif
52065::emitStoreActivate(PrimType T0, SourceInfo I) {
52066 switch (T0) {
52067 case PT_Sint8:
52068 return emitStoreActivateSint8(I);
52069 case PT_Uint8:
52070 return emitStoreActivateUint8(I);
52071 case PT_Sint16:
52072 return emitStoreActivateSint16(I);
52073 case PT_Uint16:
52074 return emitStoreActivateUint16(I);
52075 case PT_Sint32:
52076 return emitStoreActivateSint32(I);
52077 case PT_Uint32:
52078 return emitStoreActivateUint32(I);
52079 case PT_Sint64:
52080 return emitStoreActivateSint64(I);
52081 case PT_Uint64:
52082 return emitStoreActivateUint64(I);
52083 case PT_IntAP:
52084 return emitStoreActivateIntAP(I);
52085 case PT_IntAPS:
52086 return emitStoreActivateIntAPS(I);
52087 case PT_Bool:
52088 return emitStoreActivateBool(I);
52089 case PT_FixedPoint:
52090 return emitStoreActivateFixedPoint(I);
52091 case PT_Ptr:
52092 return emitStoreActivatePtr(I);
52093 case PT_MemberPtr:
52094 return emitStoreActivateMemberPtr(I);
52095 case PT_Float:
52096 return emitStoreActivateFloat(I);
52097 }
52098 llvm_unreachable("invalid enum value");
52099}
52100#endif
52101#ifdef GET_LINK_IMPL
52102bool ByteCodeEmitter::emitStoreActivateSint8(SourceInfo L) {
52103 return emitOp<>(OP_StoreActivateSint8, L);
52104}
52105bool ByteCodeEmitter::emitStoreActivateUint8(SourceInfo L) {
52106 return emitOp<>(OP_StoreActivateUint8, L);
52107}
52108bool ByteCodeEmitter::emitStoreActivateSint16(SourceInfo L) {
52109 return emitOp<>(OP_StoreActivateSint16, L);
52110}
52111bool ByteCodeEmitter::emitStoreActivateUint16(SourceInfo L) {
52112 return emitOp<>(OP_StoreActivateUint16, L);
52113}
52114bool ByteCodeEmitter::emitStoreActivateSint32(SourceInfo L) {
52115 return emitOp<>(OP_StoreActivateSint32, L);
52116}
52117bool ByteCodeEmitter::emitStoreActivateUint32(SourceInfo L) {
52118 return emitOp<>(OP_StoreActivateUint32, L);
52119}
52120bool ByteCodeEmitter::emitStoreActivateSint64(SourceInfo L) {
52121 return emitOp<>(OP_StoreActivateSint64, L);
52122}
52123bool ByteCodeEmitter::emitStoreActivateUint64(SourceInfo L) {
52124 return emitOp<>(OP_StoreActivateUint64, L);
52125}
52126bool ByteCodeEmitter::emitStoreActivateIntAP(SourceInfo L) {
52127 return emitOp<>(OP_StoreActivateIntAP, L);
52128}
52129bool ByteCodeEmitter::emitStoreActivateIntAPS(SourceInfo L) {
52130 return emitOp<>(OP_StoreActivateIntAPS, L);
52131}
52132bool ByteCodeEmitter::emitStoreActivateBool(SourceInfo L) {
52133 return emitOp<>(OP_StoreActivateBool, L);
52134}
52135bool ByteCodeEmitter::emitStoreActivateFixedPoint(SourceInfo L) {
52136 return emitOp<>(OP_StoreActivateFixedPoint, L);
52137}
52138bool ByteCodeEmitter::emitStoreActivatePtr(SourceInfo L) {
52139 return emitOp<>(OP_StoreActivatePtr, L);
52140}
52141bool ByteCodeEmitter::emitStoreActivateMemberPtr(SourceInfo L) {
52142 return emitOp<>(OP_StoreActivateMemberPtr, L);
52143}
52144bool ByteCodeEmitter::emitStoreActivateFloat(SourceInfo L) {
52145 return emitOp<>(OP_StoreActivateFloat, L);
52146}
52147#endif
52148#ifdef GET_EVAL_IMPL
52149bool EvalEmitter::emitStoreActivateSint8(SourceInfo L) {
52150 if (!isActive()) return true;
52151 CurrentSource = L;
52152 return StoreActivate<PT_Sint8>(S, OpPC);
52153}
52154bool EvalEmitter::emitStoreActivateUint8(SourceInfo L) {
52155 if (!isActive()) return true;
52156 CurrentSource = L;
52157 return StoreActivate<PT_Uint8>(S, OpPC);
52158}
52159bool EvalEmitter::emitStoreActivateSint16(SourceInfo L) {
52160 if (!isActive()) return true;
52161 CurrentSource = L;
52162 return StoreActivate<PT_Sint16>(S, OpPC);
52163}
52164bool EvalEmitter::emitStoreActivateUint16(SourceInfo L) {
52165 if (!isActive()) return true;
52166 CurrentSource = L;
52167 return StoreActivate<PT_Uint16>(S, OpPC);
52168}
52169bool EvalEmitter::emitStoreActivateSint32(SourceInfo L) {
52170 if (!isActive()) return true;
52171 CurrentSource = L;
52172 return StoreActivate<PT_Sint32>(S, OpPC);
52173}
52174bool EvalEmitter::emitStoreActivateUint32(SourceInfo L) {
52175 if (!isActive()) return true;
52176 CurrentSource = L;
52177 return StoreActivate<PT_Uint32>(S, OpPC);
52178}
52179bool EvalEmitter::emitStoreActivateSint64(SourceInfo L) {
52180 if (!isActive()) return true;
52181 CurrentSource = L;
52182 return StoreActivate<PT_Sint64>(S, OpPC);
52183}
52184bool EvalEmitter::emitStoreActivateUint64(SourceInfo L) {
52185 if (!isActive()) return true;
52186 CurrentSource = L;
52187 return StoreActivate<PT_Uint64>(S, OpPC);
52188}
52189bool EvalEmitter::emitStoreActivateIntAP(SourceInfo L) {
52190 if (!isActive()) return true;
52191 CurrentSource = L;
52192 return StoreActivate<PT_IntAP>(S, OpPC);
52193}
52194bool EvalEmitter::emitStoreActivateIntAPS(SourceInfo L) {
52195 if (!isActive()) return true;
52196 CurrentSource = L;
52197 return StoreActivate<PT_IntAPS>(S, OpPC);
52198}
52199bool EvalEmitter::emitStoreActivateBool(SourceInfo L) {
52200 if (!isActive()) return true;
52201 CurrentSource = L;
52202 return StoreActivate<PT_Bool>(S, OpPC);
52203}
52204bool EvalEmitter::emitStoreActivateFixedPoint(SourceInfo L) {
52205 if (!isActive()) return true;
52206 CurrentSource = L;
52207 return StoreActivate<PT_FixedPoint>(S, OpPC);
52208}
52209bool EvalEmitter::emitStoreActivatePtr(SourceInfo L) {
52210 if (!isActive()) return true;
52211 CurrentSource = L;
52212 return StoreActivate<PT_Ptr>(S, OpPC);
52213}
52214bool EvalEmitter::emitStoreActivateMemberPtr(SourceInfo L) {
52215 if (!isActive()) return true;
52216 CurrentSource = L;
52217 return StoreActivate<PT_MemberPtr>(S, OpPC);
52218}
52219bool EvalEmitter::emitStoreActivateFloat(SourceInfo L) {
52220 if (!isActive()) return true;
52221 CurrentSource = L;
52222 return StoreActivate<PT_Float>(S, OpPC);
52223}
52224#endif
52225#ifdef GET_OPCODE_NAMES
52226OP_StoreActivatePopSint8,
52227OP_StoreActivatePopUint8,
52228OP_StoreActivatePopSint16,
52229OP_StoreActivatePopUint16,
52230OP_StoreActivatePopSint32,
52231OP_StoreActivatePopUint32,
52232OP_StoreActivatePopSint64,
52233OP_StoreActivatePopUint64,
52234OP_StoreActivatePopIntAP,
52235OP_StoreActivatePopIntAPS,
52236OP_StoreActivatePopBool,
52237OP_StoreActivatePopFixedPoint,
52238OP_StoreActivatePopPtr,
52239OP_StoreActivatePopMemberPtr,
52240OP_StoreActivatePopFloat,
52241#endif
52242#ifdef GET_INTERPFN_LIST
52243&Interp_StoreActivatePopSint8,
52244&Interp_StoreActivatePopUint8,
52245&Interp_StoreActivatePopSint16,
52246&Interp_StoreActivatePopUint16,
52247&Interp_StoreActivatePopSint32,
52248&Interp_StoreActivatePopUint32,
52249&Interp_StoreActivatePopSint64,
52250&Interp_StoreActivatePopUint64,
52251&Interp_StoreActivatePopIntAP,
52252&Interp_StoreActivatePopIntAPS,
52253&Interp_StoreActivatePopBool,
52254&Interp_StoreActivatePopFixedPoint,
52255&Interp_StoreActivatePopPtr,
52256&Interp_StoreActivatePopMemberPtr,
52257&Interp_StoreActivatePopFloat,
52258#endif
52259#ifdef GET_INTERPFN_DISPATCHERS
52260PRESERVE_NONE
52261static bool Interp_StoreActivatePopSint8(InterpState &S, CodePtr &PC) {
52262 if (!StoreActivatePop<PT_Sint8>(S, PC)) return false;
52263#if USE_TAILCALLS
52264 MUSTTAIL return InterpNext(S, PC);
52265#else
52266 return true;
52267#endif
52268}
52269PRESERVE_NONE
52270static bool Interp_StoreActivatePopUint8(InterpState &S, CodePtr &PC) {
52271 if (!StoreActivatePop<PT_Uint8>(S, PC)) return false;
52272#if USE_TAILCALLS
52273 MUSTTAIL return InterpNext(S, PC);
52274#else
52275 return true;
52276#endif
52277}
52278PRESERVE_NONE
52279static bool Interp_StoreActivatePopSint16(InterpState &S, CodePtr &PC) {
52280 if (!StoreActivatePop<PT_Sint16>(S, PC)) return false;
52281#if USE_TAILCALLS
52282 MUSTTAIL return InterpNext(S, PC);
52283#else
52284 return true;
52285#endif
52286}
52287PRESERVE_NONE
52288static bool Interp_StoreActivatePopUint16(InterpState &S, CodePtr &PC) {
52289 if (!StoreActivatePop<PT_Uint16>(S, PC)) return false;
52290#if USE_TAILCALLS
52291 MUSTTAIL return InterpNext(S, PC);
52292#else
52293 return true;
52294#endif
52295}
52296PRESERVE_NONE
52297static bool Interp_StoreActivatePopSint32(InterpState &S, CodePtr &PC) {
52298 if (!StoreActivatePop<PT_Sint32>(S, PC)) return false;
52299#if USE_TAILCALLS
52300 MUSTTAIL return InterpNext(S, PC);
52301#else
52302 return true;
52303#endif
52304}
52305PRESERVE_NONE
52306static bool Interp_StoreActivatePopUint32(InterpState &S, CodePtr &PC) {
52307 if (!StoreActivatePop<PT_Uint32>(S, PC)) return false;
52308#if USE_TAILCALLS
52309 MUSTTAIL return InterpNext(S, PC);
52310#else
52311 return true;
52312#endif
52313}
52314PRESERVE_NONE
52315static bool Interp_StoreActivatePopSint64(InterpState &S, CodePtr &PC) {
52316 if (!StoreActivatePop<PT_Sint64>(S, PC)) return false;
52317#if USE_TAILCALLS
52318 MUSTTAIL return InterpNext(S, PC);
52319#else
52320 return true;
52321#endif
52322}
52323PRESERVE_NONE
52324static bool Interp_StoreActivatePopUint64(InterpState &S, CodePtr &PC) {
52325 if (!StoreActivatePop<PT_Uint64>(S, PC)) return false;
52326#if USE_TAILCALLS
52327 MUSTTAIL return InterpNext(S, PC);
52328#else
52329 return true;
52330#endif
52331}
52332PRESERVE_NONE
52333static bool Interp_StoreActivatePopIntAP(InterpState &S, CodePtr &PC) {
52334 if (!StoreActivatePop<PT_IntAP>(S, PC)) return false;
52335#if USE_TAILCALLS
52336 MUSTTAIL return InterpNext(S, PC);
52337#else
52338 return true;
52339#endif
52340}
52341PRESERVE_NONE
52342static bool Interp_StoreActivatePopIntAPS(InterpState &S, CodePtr &PC) {
52343 if (!StoreActivatePop<PT_IntAPS>(S, PC)) return false;
52344#if USE_TAILCALLS
52345 MUSTTAIL return InterpNext(S, PC);
52346#else
52347 return true;
52348#endif
52349}
52350PRESERVE_NONE
52351static bool Interp_StoreActivatePopBool(InterpState &S, CodePtr &PC) {
52352 if (!StoreActivatePop<PT_Bool>(S, PC)) return false;
52353#if USE_TAILCALLS
52354 MUSTTAIL return InterpNext(S, PC);
52355#else
52356 return true;
52357#endif
52358}
52359PRESERVE_NONE
52360static bool Interp_StoreActivatePopFixedPoint(InterpState &S, CodePtr &PC) {
52361 if (!StoreActivatePop<PT_FixedPoint>(S, PC)) return false;
52362#if USE_TAILCALLS
52363 MUSTTAIL return InterpNext(S, PC);
52364#else
52365 return true;
52366#endif
52367}
52368PRESERVE_NONE
52369static bool Interp_StoreActivatePopPtr(InterpState &S, CodePtr &PC) {
52370 if (!StoreActivatePop<PT_Ptr>(S, PC)) return false;
52371#if USE_TAILCALLS
52372 MUSTTAIL return InterpNext(S, PC);
52373#else
52374 return true;
52375#endif
52376}
52377PRESERVE_NONE
52378static bool Interp_StoreActivatePopMemberPtr(InterpState &S, CodePtr &PC) {
52379 if (!StoreActivatePop<PT_MemberPtr>(S, PC)) return false;
52380#if USE_TAILCALLS
52381 MUSTTAIL return InterpNext(S, PC);
52382#else
52383 return true;
52384#endif
52385}
52386PRESERVE_NONE
52387static bool Interp_StoreActivatePopFloat(InterpState &S, CodePtr &PC) {
52388 if (!StoreActivatePop<PT_Float>(S, PC)) return false;
52389#if USE_TAILCALLS
52390 MUSTTAIL return InterpNext(S, PC);
52391#else
52392 return true;
52393#endif
52394}
52395#endif
52396#ifdef GET_DISASM
52397case OP_StoreActivatePopSint8:
52398 Text.Op = PrintName("StoreActivatePopSint8");
52399 break;
52400case OP_StoreActivatePopUint8:
52401 Text.Op = PrintName("StoreActivatePopUint8");
52402 break;
52403case OP_StoreActivatePopSint16:
52404 Text.Op = PrintName("StoreActivatePopSint16");
52405 break;
52406case OP_StoreActivatePopUint16:
52407 Text.Op = PrintName("StoreActivatePopUint16");
52408 break;
52409case OP_StoreActivatePopSint32:
52410 Text.Op = PrintName("StoreActivatePopSint32");
52411 break;
52412case OP_StoreActivatePopUint32:
52413 Text.Op = PrintName("StoreActivatePopUint32");
52414 break;
52415case OP_StoreActivatePopSint64:
52416 Text.Op = PrintName("StoreActivatePopSint64");
52417 break;
52418case OP_StoreActivatePopUint64:
52419 Text.Op = PrintName("StoreActivatePopUint64");
52420 break;
52421case OP_StoreActivatePopIntAP:
52422 Text.Op = PrintName("StoreActivatePopIntAP");
52423 break;
52424case OP_StoreActivatePopIntAPS:
52425 Text.Op = PrintName("StoreActivatePopIntAPS");
52426 break;
52427case OP_StoreActivatePopBool:
52428 Text.Op = PrintName("StoreActivatePopBool");
52429 break;
52430case OP_StoreActivatePopFixedPoint:
52431 Text.Op = PrintName("StoreActivatePopFixedPoint");
52432 break;
52433case OP_StoreActivatePopPtr:
52434 Text.Op = PrintName("StoreActivatePopPtr");
52435 break;
52436case OP_StoreActivatePopMemberPtr:
52437 Text.Op = PrintName("StoreActivatePopMemberPtr");
52438 break;
52439case OP_StoreActivatePopFloat:
52440 Text.Op = PrintName("StoreActivatePopFloat");
52441 break;
52442#endif
52443#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52444bool emitStoreActivatePopSint8(SourceInfo);
52445bool emitStoreActivatePopUint8(SourceInfo);
52446bool emitStoreActivatePopSint16(SourceInfo);
52447bool emitStoreActivatePopUint16(SourceInfo);
52448bool emitStoreActivatePopSint32(SourceInfo);
52449bool emitStoreActivatePopUint32(SourceInfo);
52450bool emitStoreActivatePopSint64(SourceInfo);
52451bool emitStoreActivatePopUint64(SourceInfo);
52452bool emitStoreActivatePopIntAP(SourceInfo);
52453bool emitStoreActivatePopIntAPS(SourceInfo);
52454bool emitStoreActivatePopBool(SourceInfo);
52455bool emitStoreActivatePopFixedPoint(SourceInfo);
52456bool emitStoreActivatePopPtr(SourceInfo);
52457bool emitStoreActivatePopMemberPtr(SourceInfo);
52458bool emitStoreActivatePopFloat(SourceInfo);
52459#endif
52460#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52461[[nodiscard]] bool emitStoreActivatePop(PrimType, SourceInfo I);
52462#endif
52463#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
52464bool
52465#if defined(GET_EVAL_IMPL)
52466EvalEmitter
52467#else
52468ByteCodeEmitter
52469#endif
52470::emitStoreActivatePop(PrimType T0, SourceInfo I) {
52471 switch (T0) {
52472 case PT_Sint8:
52473 return emitStoreActivatePopSint8(I);
52474 case PT_Uint8:
52475 return emitStoreActivatePopUint8(I);
52476 case PT_Sint16:
52477 return emitStoreActivatePopSint16(I);
52478 case PT_Uint16:
52479 return emitStoreActivatePopUint16(I);
52480 case PT_Sint32:
52481 return emitStoreActivatePopSint32(I);
52482 case PT_Uint32:
52483 return emitStoreActivatePopUint32(I);
52484 case PT_Sint64:
52485 return emitStoreActivatePopSint64(I);
52486 case PT_Uint64:
52487 return emitStoreActivatePopUint64(I);
52488 case PT_IntAP:
52489 return emitStoreActivatePopIntAP(I);
52490 case PT_IntAPS:
52491 return emitStoreActivatePopIntAPS(I);
52492 case PT_Bool:
52493 return emitStoreActivatePopBool(I);
52494 case PT_FixedPoint:
52495 return emitStoreActivatePopFixedPoint(I);
52496 case PT_Ptr:
52497 return emitStoreActivatePopPtr(I);
52498 case PT_MemberPtr:
52499 return emitStoreActivatePopMemberPtr(I);
52500 case PT_Float:
52501 return emitStoreActivatePopFloat(I);
52502 }
52503 llvm_unreachable("invalid enum value");
52504}
52505#endif
52506#ifdef GET_LINK_IMPL
52507bool ByteCodeEmitter::emitStoreActivatePopSint8(SourceInfo L) {
52508 return emitOp<>(OP_StoreActivatePopSint8, L);
52509}
52510bool ByteCodeEmitter::emitStoreActivatePopUint8(SourceInfo L) {
52511 return emitOp<>(OP_StoreActivatePopUint8, L);
52512}
52513bool ByteCodeEmitter::emitStoreActivatePopSint16(SourceInfo L) {
52514 return emitOp<>(OP_StoreActivatePopSint16, L);
52515}
52516bool ByteCodeEmitter::emitStoreActivatePopUint16(SourceInfo L) {
52517 return emitOp<>(OP_StoreActivatePopUint16, L);
52518}
52519bool ByteCodeEmitter::emitStoreActivatePopSint32(SourceInfo L) {
52520 return emitOp<>(OP_StoreActivatePopSint32, L);
52521}
52522bool ByteCodeEmitter::emitStoreActivatePopUint32(SourceInfo L) {
52523 return emitOp<>(OP_StoreActivatePopUint32, L);
52524}
52525bool ByteCodeEmitter::emitStoreActivatePopSint64(SourceInfo L) {
52526 return emitOp<>(OP_StoreActivatePopSint64, L);
52527}
52528bool ByteCodeEmitter::emitStoreActivatePopUint64(SourceInfo L) {
52529 return emitOp<>(OP_StoreActivatePopUint64, L);
52530}
52531bool ByteCodeEmitter::emitStoreActivatePopIntAP(SourceInfo L) {
52532 return emitOp<>(OP_StoreActivatePopIntAP, L);
52533}
52534bool ByteCodeEmitter::emitStoreActivatePopIntAPS(SourceInfo L) {
52535 return emitOp<>(OP_StoreActivatePopIntAPS, L);
52536}
52537bool ByteCodeEmitter::emitStoreActivatePopBool(SourceInfo L) {
52538 return emitOp<>(OP_StoreActivatePopBool, L);
52539}
52540bool ByteCodeEmitter::emitStoreActivatePopFixedPoint(SourceInfo L) {
52541 return emitOp<>(OP_StoreActivatePopFixedPoint, L);
52542}
52543bool ByteCodeEmitter::emitStoreActivatePopPtr(SourceInfo L) {
52544 return emitOp<>(OP_StoreActivatePopPtr, L);
52545}
52546bool ByteCodeEmitter::emitStoreActivatePopMemberPtr(SourceInfo L) {
52547 return emitOp<>(OP_StoreActivatePopMemberPtr, L);
52548}
52549bool ByteCodeEmitter::emitStoreActivatePopFloat(SourceInfo L) {
52550 return emitOp<>(OP_StoreActivatePopFloat, L);
52551}
52552#endif
52553#ifdef GET_EVAL_IMPL
52554bool EvalEmitter::emitStoreActivatePopSint8(SourceInfo L) {
52555 if (!isActive()) return true;
52556 CurrentSource = L;
52557 return StoreActivatePop<PT_Sint8>(S, OpPC);
52558}
52559bool EvalEmitter::emitStoreActivatePopUint8(SourceInfo L) {
52560 if (!isActive()) return true;
52561 CurrentSource = L;
52562 return StoreActivatePop<PT_Uint8>(S, OpPC);
52563}
52564bool EvalEmitter::emitStoreActivatePopSint16(SourceInfo L) {
52565 if (!isActive()) return true;
52566 CurrentSource = L;
52567 return StoreActivatePop<PT_Sint16>(S, OpPC);
52568}
52569bool EvalEmitter::emitStoreActivatePopUint16(SourceInfo L) {
52570 if (!isActive()) return true;
52571 CurrentSource = L;
52572 return StoreActivatePop<PT_Uint16>(S, OpPC);
52573}
52574bool EvalEmitter::emitStoreActivatePopSint32(SourceInfo L) {
52575 if (!isActive()) return true;
52576 CurrentSource = L;
52577 return StoreActivatePop<PT_Sint32>(S, OpPC);
52578}
52579bool EvalEmitter::emitStoreActivatePopUint32(SourceInfo L) {
52580 if (!isActive()) return true;
52581 CurrentSource = L;
52582 return StoreActivatePop<PT_Uint32>(S, OpPC);
52583}
52584bool EvalEmitter::emitStoreActivatePopSint64(SourceInfo L) {
52585 if (!isActive()) return true;
52586 CurrentSource = L;
52587 return StoreActivatePop<PT_Sint64>(S, OpPC);
52588}
52589bool EvalEmitter::emitStoreActivatePopUint64(SourceInfo L) {
52590 if (!isActive()) return true;
52591 CurrentSource = L;
52592 return StoreActivatePop<PT_Uint64>(S, OpPC);
52593}
52594bool EvalEmitter::emitStoreActivatePopIntAP(SourceInfo L) {
52595 if (!isActive()) return true;
52596 CurrentSource = L;
52597 return StoreActivatePop<PT_IntAP>(S, OpPC);
52598}
52599bool EvalEmitter::emitStoreActivatePopIntAPS(SourceInfo L) {
52600 if (!isActive()) return true;
52601 CurrentSource = L;
52602 return StoreActivatePop<PT_IntAPS>(S, OpPC);
52603}
52604bool EvalEmitter::emitStoreActivatePopBool(SourceInfo L) {
52605 if (!isActive()) return true;
52606 CurrentSource = L;
52607 return StoreActivatePop<PT_Bool>(S, OpPC);
52608}
52609bool EvalEmitter::emitStoreActivatePopFixedPoint(SourceInfo L) {
52610 if (!isActive()) return true;
52611 CurrentSource = L;
52612 return StoreActivatePop<PT_FixedPoint>(S, OpPC);
52613}
52614bool EvalEmitter::emitStoreActivatePopPtr(SourceInfo L) {
52615 if (!isActive()) return true;
52616 CurrentSource = L;
52617 return StoreActivatePop<PT_Ptr>(S, OpPC);
52618}
52619bool EvalEmitter::emitStoreActivatePopMemberPtr(SourceInfo L) {
52620 if (!isActive()) return true;
52621 CurrentSource = L;
52622 return StoreActivatePop<PT_MemberPtr>(S, OpPC);
52623}
52624bool EvalEmitter::emitStoreActivatePopFloat(SourceInfo L) {
52625 if (!isActive()) return true;
52626 CurrentSource = L;
52627 return StoreActivatePop<PT_Float>(S, OpPC);
52628}
52629#endif
52630#ifdef GET_OPCODE_NAMES
52631OP_StoreBitFieldSint8,
52632OP_StoreBitFieldUint8,
52633OP_StoreBitFieldSint16,
52634OP_StoreBitFieldUint16,
52635OP_StoreBitFieldSint32,
52636OP_StoreBitFieldUint32,
52637OP_StoreBitFieldSint64,
52638OP_StoreBitFieldUint64,
52639OP_StoreBitFieldIntAP,
52640OP_StoreBitFieldIntAPS,
52641OP_StoreBitFieldBool,
52642OP_StoreBitFieldFixedPoint,
52643#endif
52644#ifdef GET_INTERPFN_LIST
52645&Interp_StoreBitFieldSint8,
52646&Interp_StoreBitFieldUint8,
52647&Interp_StoreBitFieldSint16,
52648&Interp_StoreBitFieldUint16,
52649&Interp_StoreBitFieldSint32,
52650&Interp_StoreBitFieldUint32,
52651&Interp_StoreBitFieldSint64,
52652&Interp_StoreBitFieldUint64,
52653&Interp_StoreBitFieldIntAP,
52654&Interp_StoreBitFieldIntAPS,
52655&Interp_StoreBitFieldBool,
52656&Interp_StoreBitFieldFixedPoint,
52657#endif
52658#ifdef GET_INTERPFN_DISPATCHERS
52659PRESERVE_NONE
52660static bool Interp_StoreBitFieldSint8(InterpState &S, CodePtr &PC) {
52661 if (!StoreBitField<PT_Sint8>(S, PC)) return false;
52662#if USE_TAILCALLS
52663 MUSTTAIL return InterpNext(S, PC);
52664#else
52665 return true;
52666#endif
52667}
52668PRESERVE_NONE
52669static bool Interp_StoreBitFieldUint8(InterpState &S, CodePtr &PC) {
52670 if (!StoreBitField<PT_Uint8>(S, PC)) return false;
52671#if USE_TAILCALLS
52672 MUSTTAIL return InterpNext(S, PC);
52673#else
52674 return true;
52675#endif
52676}
52677PRESERVE_NONE
52678static bool Interp_StoreBitFieldSint16(InterpState &S, CodePtr &PC) {
52679 if (!StoreBitField<PT_Sint16>(S, PC)) return false;
52680#if USE_TAILCALLS
52681 MUSTTAIL return InterpNext(S, PC);
52682#else
52683 return true;
52684#endif
52685}
52686PRESERVE_NONE
52687static bool Interp_StoreBitFieldUint16(InterpState &S, CodePtr &PC) {
52688 if (!StoreBitField<PT_Uint16>(S, PC)) return false;
52689#if USE_TAILCALLS
52690 MUSTTAIL return InterpNext(S, PC);
52691#else
52692 return true;
52693#endif
52694}
52695PRESERVE_NONE
52696static bool Interp_StoreBitFieldSint32(InterpState &S, CodePtr &PC) {
52697 if (!StoreBitField<PT_Sint32>(S, PC)) return false;
52698#if USE_TAILCALLS
52699 MUSTTAIL return InterpNext(S, PC);
52700#else
52701 return true;
52702#endif
52703}
52704PRESERVE_NONE
52705static bool Interp_StoreBitFieldUint32(InterpState &S, CodePtr &PC) {
52706 if (!StoreBitField<PT_Uint32>(S, PC)) return false;
52707#if USE_TAILCALLS
52708 MUSTTAIL return InterpNext(S, PC);
52709#else
52710 return true;
52711#endif
52712}
52713PRESERVE_NONE
52714static bool Interp_StoreBitFieldSint64(InterpState &S, CodePtr &PC) {
52715 if (!StoreBitField<PT_Sint64>(S, PC)) return false;
52716#if USE_TAILCALLS
52717 MUSTTAIL return InterpNext(S, PC);
52718#else
52719 return true;
52720#endif
52721}
52722PRESERVE_NONE
52723static bool Interp_StoreBitFieldUint64(InterpState &S, CodePtr &PC) {
52724 if (!StoreBitField<PT_Uint64>(S, PC)) return false;
52725#if USE_TAILCALLS
52726 MUSTTAIL return InterpNext(S, PC);
52727#else
52728 return true;
52729#endif
52730}
52731PRESERVE_NONE
52732static bool Interp_StoreBitFieldIntAP(InterpState &S, CodePtr &PC) {
52733 if (!StoreBitField<PT_IntAP>(S, PC)) return false;
52734#if USE_TAILCALLS
52735 MUSTTAIL return InterpNext(S, PC);
52736#else
52737 return true;
52738#endif
52739}
52740PRESERVE_NONE
52741static bool Interp_StoreBitFieldIntAPS(InterpState &S, CodePtr &PC) {
52742 if (!StoreBitField<PT_IntAPS>(S, PC)) return false;
52743#if USE_TAILCALLS
52744 MUSTTAIL return InterpNext(S, PC);
52745#else
52746 return true;
52747#endif
52748}
52749PRESERVE_NONE
52750static bool Interp_StoreBitFieldBool(InterpState &S, CodePtr &PC) {
52751 if (!StoreBitField<PT_Bool>(S, PC)) return false;
52752#if USE_TAILCALLS
52753 MUSTTAIL return InterpNext(S, PC);
52754#else
52755 return true;
52756#endif
52757}
52758PRESERVE_NONE
52759static bool Interp_StoreBitFieldFixedPoint(InterpState &S, CodePtr &PC) {
52760 if (!StoreBitField<PT_FixedPoint>(S, PC)) return false;
52761#if USE_TAILCALLS
52762 MUSTTAIL return InterpNext(S, PC);
52763#else
52764 return true;
52765#endif
52766}
52767#endif
52768#ifdef GET_DISASM
52769case OP_StoreBitFieldSint8:
52770 Text.Op = PrintName("StoreBitFieldSint8");
52771 break;
52772case OP_StoreBitFieldUint8:
52773 Text.Op = PrintName("StoreBitFieldUint8");
52774 break;
52775case OP_StoreBitFieldSint16:
52776 Text.Op = PrintName("StoreBitFieldSint16");
52777 break;
52778case OP_StoreBitFieldUint16:
52779 Text.Op = PrintName("StoreBitFieldUint16");
52780 break;
52781case OP_StoreBitFieldSint32:
52782 Text.Op = PrintName("StoreBitFieldSint32");
52783 break;
52784case OP_StoreBitFieldUint32:
52785 Text.Op = PrintName("StoreBitFieldUint32");
52786 break;
52787case OP_StoreBitFieldSint64:
52788 Text.Op = PrintName("StoreBitFieldSint64");
52789 break;
52790case OP_StoreBitFieldUint64:
52791 Text.Op = PrintName("StoreBitFieldUint64");
52792 break;
52793case OP_StoreBitFieldIntAP:
52794 Text.Op = PrintName("StoreBitFieldIntAP");
52795 break;
52796case OP_StoreBitFieldIntAPS:
52797 Text.Op = PrintName("StoreBitFieldIntAPS");
52798 break;
52799case OP_StoreBitFieldBool:
52800 Text.Op = PrintName("StoreBitFieldBool");
52801 break;
52802case OP_StoreBitFieldFixedPoint:
52803 Text.Op = PrintName("StoreBitFieldFixedPoint");
52804 break;
52805#endif
52806#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52807bool emitStoreBitFieldSint8(SourceInfo);
52808bool emitStoreBitFieldUint8(SourceInfo);
52809bool emitStoreBitFieldSint16(SourceInfo);
52810bool emitStoreBitFieldUint16(SourceInfo);
52811bool emitStoreBitFieldSint32(SourceInfo);
52812bool emitStoreBitFieldUint32(SourceInfo);
52813bool emitStoreBitFieldSint64(SourceInfo);
52814bool emitStoreBitFieldUint64(SourceInfo);
52815bool emitStoreBitFieldIntAP(SourceInfo);
52816bool emitStoreBitFieldIntAPS(SourceInfo);
52817bool emitStoreBitFieldBool(SourceInfo);
52818bool emitStoreBitFieldFixedPoint(SourceInfo);
52819#endif
52820#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
52821[[nodiscard]] bool emitStoreBitField(PrimType, SourceInfo I);
52822#endif
52823#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
52824bool
52825#if defined(GET_EVAL_IMPL)
52826EvalEmitter
52827#else
52828ByteCodeEmitter
52829#endif
52830::emitStoreBitField(PrimType T0, SourceInfo I) {
52831 switch (T0) {
52832 case PT_Sint8:
52833 return emitStoreBitFieldSint8(I);
52834 case PT_Uint8:
52835 return emitStoreBitFieldUint8(I);
52836 case PT_Sint16:
52837 return emitStoreBitFieldSint16(I);
52838 case PT_Uint16:
52839 return emitStoreBitFieldUint16(I);
52840 case PT_Sint32:
52841 return emitStoreBitFieldSint32(I);
52842 case PT_Uint32:
52843 return emitStoreBitFieldUint32(I);
52844 case PT_Sint64:
52845 return emitStoreBitFieldSint64(I);
52846 case PT_Uint64:
52847 return emitStoreBitFieldUint64(I);
52848 case PT_IntAP:
52849 return emitStoreBitFieldIntAP(I);
52850 case PT_IntAPS:
52851 return emitStoreBitFieldIntAPS(I);
52852 case PT_Bool:
52853 return emitStoreBitFieldBool(I);
52854 case PT_FixedPoint:
52855 return emitStoreBitFieldFixedPoint(I);
52856 default: llvm_unreachable("invalid type: emitStoreBitField");
52857 }
52858 llvm_unreachable("invalid enum value");
52859}
52860#endif
52861#ifdef GET_LINK_IMPL
52862bool ByteCodeEmitter::emitStoreBitFieldSint8(SourceInfo L) {
52863 return emitOp<>(OP_StoreBitFieldSint8, L);
52864}
52865bool ByteCodeEmitter::emitStoreBitFieldUint8(SourceInfo L) {
52866 return emitOp<>(OP_StoreBitFieldUint8, L);
52867}
52868bool ByteCodeEmitter::emitStoreBitFieldSint16(SourceInfo L) {
52869 return emitOp<>(OP_StoreBitFieldSint16, L);
52870}
52871bool ByteCodeEmitter::emitStoreBitFieldUint16(SourceInfo L) {
52872 return emitOp<>(OP_StoreBitFieldUint16, L);
52873}
52874bool ByteCodeEmitter::emitStoreBitFieldSint32(SourceInfo L) {
52875 return emitOp<>(OP_StoreBitFieldSint32, L);
52876}
52877bool ByteCodeEmitter::emitStoreBitFieldUint32(SourceInfo L) {
52878 return emitOp<>(OP_StoreBitFieldUint32, L);
52879}
52880bool ByteCodeEmitter::emitStoreBitFieldSint64(SourceInfo L) {
52881 return emitOp<>(OP_StoreBitFieldSint64, L);
52882}
52883bool ByteCodeEmitter::emitStoreBitFieldUint64(SourceInfo L) {
52884 return emitOp<>(OP_StoreBitFieldUint64, L);
52885}
52886bool ByteCodeEmitter::emitStoreBitFieldIntAP(SourceInfo L) {
52887 return emitOp<>(OP_StoreBitFieldIntAP, L);
52888}
52889bool ByteCodeEmitter::emitStoreBitFieldIntAPS(SourceInfo L) {
52890 return emitOp<>(OP_StoreBitFieldIntAPS, L);
52891}
52892bool ByteCodeEmitter::emitStoreBitFieldBool(SourceInfo L) {
52893 return emitOp<>(OP_StoreBitFieldBool, L);
52894}
52895bool ByteCodeEmitter::emitStoreBitFieldFixedPoint(SourceInfo L) {
52896 return emitOp<>(OP_StoreBitFieldFixedPoint, L);
52897}
52898#endif
52899#ifdef GET_EVAL_IMPL
52900bool EvalEmitter::emitStoreBitFieldSint8(SourceInfo L) {
52901 if (!isActive()) return true;
52902 CurrentSource = L;
52903 return StoreBitField<PT_Sint8>(S, OpPC);
52904}
52905bool EvalEmitter::emitStoreBitFieldUint8(SourceInfo L) {
52906 if (!isActive()) return true;
52907 CurrentSource = L;
52908 return StoreBitField<PT_Uint8>(S, OpPC);
52909}
52910bool EvalEmitter::emitStoreBitFieldSint16(SourceInfo L) {
52911 if (!isActive()) return true;
52912 CurrentSource = L;
52913 return StoreBitField<PT_Sint16>(S, OpPC);
52914}
52915bool EvalEmitter::emitStoreBitFieldUint16(SourceInfo L) {
52916 if (!isActive()) return true;
52917 CurrentSource = L;
52918 return StoreBitField<PT_Uint16>(S, OpPC);
52919}
52920bool EvalEmitter::emitStoreBitFieldSint32(SourceInfo L) {
52921 if (!isActive()) return true;
52922 CurrentSource = L;
52923 return StoreBitField<PT_Sint32>(S, OpPC);
52924}
52925bool EvalEmitter::emitStoreBitFieldUint32(SourceInfo L) {
52926 if (!isActive()) return true;
52927 CurrentSource = L;
52928 return StoreBitField<PT_Uint32>(S, OpPC);
52929}
52930bool EvalEmitter::emitStoreBitFieldSint64(SourceInfo L) {
52931 if (!isActive()) return true;
52932 CurrentSource = L;
52933 return StoreBitField<PT_Sint64>(S, OpPC);
52934}
52935bool EvalEmitter::emitStoreBitFieldUint64(SourceInfo L) {
52936 if (!isActive()) return true;
52937 CurrentSource = L;
52938 return StoreBitField<PT_Uint64>(S, OpPC);
52939}
52940bool EvalEmitter::emitStoreBitFieldIntAP(SourceInfo L) {
52941 if (!isActive()) return true;
52942 CurrentSource = L;
52943 return StoreBitField<PT_IntAP>(S, OpPC);
52944}
52945bool EvalEmitter::emitStoreBitFieldIntAPS(SourceInfo L) {
52946 if (!isActive()) return true;
52947 CurrentSource = L;
52948 return StoreBitField<PT_IntAPS>(S, OpPC);
52949}
52950bool EvalEmitter::emitStoreBitFieldBool(SourceInfo L) {
52951 if (!isActive()) return true;
52952 CurrentSource = L;
52953 return StoreBitField<PT_Bool>(S, OpPC);
52954}
52955bool EvalEmitter::emitStoreBitFieldFixedPoint(SourceInfo L) {
52956 if (!isActive()) return true;
52957 CurrentSource = L;
52958 return StoreBitField<PT_FixedPoint>(S, OpPC);
52959}
52960#endif
52961#ifdef GET_OPCODE_NAMES
52962OP_StoreBitFieldActivateSint8,
52963OP_StoreBitFieldActivateUint8,
52964OP_StoreBitFieldActivateSint16,
52965OP_StoreBitFieldActivateUint16,
52966OP_StoreBitFieldActivateSint32,
52967OP_StoreBitFieldActivateUint32,
52968OP_StoreBitFieldActivateSint64,
52969OP_StoreBitFieldActivateUint64,
52970OP_StoreBitFieldActivateIntAP,
52971OP_StoreBitFieldActivateIntAPS,
52972OP_StoreBitFieldActivateBool,
52973OP_StoreBitFieldActivateFixedPoint,
52974#endif
52975#ifdef GET_INTERPFN_LIST
52976&Interp_StoreBitFieldActivateSint8,
52977&Interp_StoreBitFieldActivateUint8,
52978&Interp_StoreBitFieldActivateSint16,
52979&Interp_StoreBitFieldActivateUint16,
52980&Interp_StoreBitFieldActivateSint32,
52981&Interp_StoreBitFieldActivateUint32,
52982&Interp_StoreBitFieldActivateSint64,
52983&Interp_StoreBitFieldActivateUint64,
52984&Interp_StoreBitFieldActivateIntAP,
52985&Interp_StoreBitFieldActivateIntAPS,
52986&Interp_StoreBitFieldActivateBool,
52987&Interp_StoreBitFieldActivateFixedPoint,
52988#endif
52989#ifdef GET_INTERPFN_DISPATCHERS
52990PRESERVE_NONE
52991static bool Interp_StoreBitFieldActivateSint8(InterpState &S, CodePtr &PC) {
52992 if (!StoreBitFieldActivate<PT_Sint8>(S, PC)) return false;
52993#if USE_TAILCALLS
52994 MUSTTAIL return InterpNext(S, PC);
52995#else
52996 return true;
52997#endif
52998}
52999PRESERVE_NONE
53000static bool Interp_StoreBitFieldActivateUint8(InterpState &S, CodePtr &PC) {
53001 if (!StoreBitFieldActivate<PT_Uint8>(S, PC)) return false;
53002#if USE_TAILCALLS
53003 MUSTTAIL return InterpNext(S, PC);
53004#else
53005 return true;
53006#endif
53007}
53008PRESERVE_NONE
53009static bool Interp_StoreBitFieldActivateSint16(InterpState &S, CodePtr &PC) {
53010 if (!StoreBitFieldActivate<PT_Sint16>(S, PC)) return false;
53011#if USE_TAILCALLS
53012 MUSTTAIL return InterpNext(S, PC);
53013#else
53014 return true;
53015#endif
53016}
53017PRESERVE_NONE
53018static bool Interp_StoreBitFieldActivateUint16(InterpState &S, CodePtr &PC) {
53019 if (!StoreBitFieldActivate<PT_Uint16>(S, PC)) return false;
53020#if USE_TAILCALLS
53021 MUSTTAIL return InterpNext(S, PC);
53022#else
53023 return true;
53024#endif
53025}
53026PRESERVE_NONE
53027static bool Interp_StoreBitFieldActivateSint32(InterpState &S, CodePtr &PC) {
53028 if (!StoreBitFieldActivate<PT_Sint32>(S, PC)) return false;
53029#if USE_TAILCALLS
53030 MUSTTAIL return InterpNext(S, PC);
53031#else
53032 return true;
53033#endif
53034}
53035PRESERVE_NONE
53036static bool Interp_StoreBitFieldActivateUint32(InterpState &S, CodePtr &PC) {
53037 if (!StoreBitFieldActivate<PT_Uint32>(S, PC)) return false;
53038#if USE_TAILCALLS
53039 MUSTTAIL return InterpNext(S, PC);
53040#else
53041 return true;
53042#endif
53043}
53044PRESERVE_NONE
53045static bool Interp_StoreBitFieldActivateSint64(InterpState &S, CodePtr &PC) {
53046 if (!StoreBitFieldActivate<PT_Sint64>(S, PC)) return false;
53047#if USE_TAILCALLS
53048 MUSTTAIL return InterpNext(S, PC);
53049#else
53050 return true;
53051#endif
53052}
53053PRESERVE_NONE
53054static bool Interp_StoreBitFieldActivateUint64(InterpState &S, CodePtr &PC) {
53055 if (!StoreBitFieldActivate<PT_Uint64>(S, PC)) return false;
53056#if USE_TAILCALLS
53057 MUSTTAIL return InterpNext(S, PC);
53058#else
53059 return true;
53060#endif
53061}
53062PRESERVE_NONE
53063static bool Interp_StoreBitFieldActivateIntAP(InterpState &S, CodePtr &PC) {
53064 if (!StoreBitFieldActivate<PT_IntAP>(S, PC)) return false;
53065#if USE_TAILCALLS
53066 MUSTTAIL return InterpNext(S, PC);
53067#else
53068 return true;
53069#endif
53070}
53071PRESERVE_NONE
53072static bool Interp_StoreBitFieldActivateIntAPS(InterpState &S, CodePtr &PC) {
53073 if (!StoreBitFieldActivate<PT_IntAPS>(S, PC)) return false;
53074#if USE_TAILCALLS
53075 MUSTTAIL return InterpNext(S, PC);
53076#else
53077 return true;
53078#endif
53079}
53080PRESERVE_NONE
53081static bool Interp_StoreBitFieldActivateBool(InterpState &S, CodePtr &PC) {
53082 if (!StoreBitFieldActivate<PT_Bool>(S, PC)) return false;
53083#if USE_TAILCALLS
53084 MUSTTAIL return InterpNext(S, PC);
53085#else
53086 return true;
53087#endif
53088}
53089PRESERVE_NONE
53090static bool Interp_StoreBitFieldActivateFixedPoint(InterpState &S, CodePtr &PC) {
53091 if (!StoreBitFieldActivate<PT_FixedPoint>(S, PC)) return false;
53092#if USE_TAILCALLS
53093 MUSTTAIL return InterpNext(S, PC);
53094#else
53095 return true;
53096#endif
53097}
53098#endif
53099#ifdef GET_DISASM
53100case OP_StoreBitFieldActivateSint8:
53101 Text.Op = PrintName("StoreBitFieldActivateSint8");
53102 break;
53103case OP_StoreBitFieldActivateUint8:
53104 Text.Op = PrintName("StoreBitFieldActivateUint8");
53105 break;
53106case OP_StoreBitFieldActivateSint16:
53107 Text.Op = PrintName("StoreBitFieldActivateSint16");
53108 break;
53109case OP_StoreBitFieldActivateUint16:
53110 Text.Op = PrintName("StoreBitFieldActivateUint16");
53111 break;
53112case OP_StoreBitFieldActivateSint32:
53113 Text.Op = PrintName("StoreBitFieldActivateSint32");
53114 break;
53115case OP_StoreBitFieldActivateUint32:
53116 Text.Op = PrintName("StoreBitFieldActivateUint32");
53117 break;
53118case OP_StoreBitFieldActivateSint64:
53119 Text.Op = PrintName("StoreBitFieldActivateSint64");
53120 break;
53121case OP_StoreBitFieldActivateUint64:
53122 Text.Op = PrintName("StoreBitFieldActivateUint64");
53123 break;
53124case OP_StoreBitFieldActivateIntAP:
53125 Text.Op = PrintName("StoreBitFieldActivateIntAP");
53126 break;
53127case OP_StoreBitFieldActivateIntAPS:
53128 Text.Op = PrintName("StoreBitFieldActivateIntAPS");
53129 break;
53130case OP_StoreBitFieldActivateBool:
53131 Text.Op = PrintName("StoreBitFieldActivateBool");
53132 break;
53133case OP_StoreBitFieldActivateFixedPoint:
53134 Text.Op = PrintName("StoreBitFieldActivateFixedPoint");
53135 break;
53136#endif
53137#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53138bool emitStoreBitFieldActivateSint8(SourceInfo);
53139bool emitStoreBitFieldActivateUint8(SourceInfo);
53140bool emitStoreBitFieldActivateSint16(SourceInfo);
53141bool emitStoreBitFieldActivateUint16(SourceInfo);
53142bool emitStoreBitFieldActivateSint32(SourceInfo);
53143bool emitStoreBitFieldActivateUint32(SourceInfo);
53144bool emitStoreBitFieldActivateSint64(SourceInfo);
53145bool emitStoreBitFieldActivateUint64(SourceInfo);
53146bool emitStoreBitFieldActivateIntAP(SourceInfo);
53147bool emitStoreBitFieldActivateIntAPS(SourceInfo);
53148bool emitStoreBitFieldActivateBool(SourceInfo);
53149bool emitStoreBitFieldActivateFixedPoint(SourceInfo);
53150#endif
53151#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53152[[nodiscard]] bool emitStoreBitFieldActivate(PrimType, SourceInfo I);
53153#endif
53154#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
53155bool
53156#if defined(GET_EVAL_IMPL)
53157EvalEmitter
53158#else
53159ByteCodeEmitter
53160#endif
53161::emitStoreBitFieldActivate(PrimType T0, SourceInfo I) {
53162 switch (T0) {
53163 case PT_Sint8:
53164 return emitStoreBitFieldActivateSint8(I);
53165 case PT_Uint8:
53166 return emitStoreBitFieldActivateUint8(I);
53167 case PT_Sint16:
53168 return emitStoreBitFieldActivateSint16(I);
53169 case PT_Uint16:
53170 return emitStoreBitFieldActivateUint16(I);
53171 case PT_Sint32:
53172 return emitStoreBitFieldActivateSint32(I);
53173 case PT_Uint32:
53174 return emitStoreBitFieldActivateUint32(I);
53175 case PT_Sint64:
53176 return emitStoreBitFieldActivateSint64(I);
53177 case PT_Uint64:
53178 return emitStoreBitFieldActivateUint64(I);
53179 case PT_IntAP:
53180 return emitStoreBitFieldActivateIntAP(I);
53181 case PT_IntAPS:
53182 return emitStoreBitFieldActivateIntAPS(I);
53183 case PT_Bool:
53184 return emitStoreBitFieldActivateBool(I);
53185 case PT_FixedPoint:
53186 return emitStoreBitFieldActivateFixedPoint(I);
53187 default: llvm_unreachable("invalid type: emitStoreBitFieldActivate");
53188 }
53189 llvm_unreachable("invalid enum value");
53190}
53191#endif
53192#ifdef GET_LINK_IMPL
53193bool ByteCodeEmitter::emitStoreBitFieldActivateSint8(SourceInfo L) {
53194 return emitOp<>(OP_StoreBitFieldActivateSint8, L);
53195}
53196bool ByteCodeEmitter::emitStoreBitFieldActivateUint8(SourceInfo L) {
53197 return emitOp<>(OP_StoreBitFieldActivateUint8, L);
53198}
53199bool ByteCodeEmitter::emitStoreBitFieldActivateSint16(SourceInfo L) {
53200 return emitOp<>(OP_StoreBitFieldActivateSint16, L);
53201}
53202bool ByteCodeEmitter::emitStoreBitFieldActivateUint16(SourceInfo L) {
53203 return emitOp<>(OP_StoreBitFieldActivateUint16, L);
53204}
53205bool ByteCodeEmitter::emitStoreBitFieldActivateSint32(SourceInfo L) {
53206 return emitOp<>(OP_StoreBitFieldActivateSint32, L);
53207}
53208bool ByteCodeEmitter::emitStoreBitFieldActivateUint32(SourceInfo L) {
53209 return emitOp<>(OP_StoreBitFieldActivateUint32, L);
53210}
53211bool ByteCodeEmitter::emitStoreBitFieldActivateSint64(SourceInfo L) {
53212 return emitOp<>(OP_StoreBitFieldActivateSint64, L);
53213}
53214bool ByteCodeEmitter::emitStoreBitFieldActivateUint64(SourceInfo L) {
53215 return emitOp<>(OP_StoreBitFieldActivateUint64, L);
53216}
53217bool ByteCodeEmitter::emitStoreBitFieldActivateIntAP(SourceInfo L) {
53218 return emitOp<>(OP_StoreBitFieldActivateIntAP, L);
53219}
53220bool ByteCodeEmitter::emitStoreBitFieldActivateIntAPS(SourceInfo L) {
53221 return emitOp<>(OP_StoreBitFieldActivateIntAPS, L);
53222}
53223bool ByteCodeEmitter::emitStoreBitFieldActivateBool(SourceInfo L) {
53224 return emitOp<>(OP_StoreBitFieldActivateBool, L);
53225}
53226bool ByteCodeEmitter::emitStoreBitFieldActivateFixedPoint(SourceInfo L) {
53227 return emitOp<>(OP_StoreBitFieldActivateFixedPoint, L);
53228}
53229#endif
53230#ifdef GET_EVAL_IMPL
53231bool EvalEmitter::emitStoreBitFieldActivateSint8(SourceInfo L) {
53232 if (!isActive()) return true;
53233 CurrentSource = L;
53234 return StoreBitFieldActivate<PT_Sint8>(S, OpPC);
53235}
53236bool EvalEmitter::emitStoreBitFieldActivateUint8(SourceInfo L) {
53237 if (!isActive()) return true;
53238 CurrentSource = L;
53239 return StoreBitFieldActivate<PT_Uint8>(S, OpPC);
53240}
53241bool EvalEmitter::emitStoreBitFieldActivateSint16(SourceInfo L) {
53242 if (!isActive()) return true;
53243 CurrentSource = L;
53244 return StoreBitFieldActivate<PT_Sint16>(S, OpPC);
53245}
53246bool EvalEmitter::emitStoreBitFieldActivateUint16(SourceInfo L) {
53247 if (!isActive()) return true;
53248 CurrentSource = L;
53249 return StoreBitFieldActivate<PT_Uint16>(S, OpPC);
53250}
53251bool EvalEmitter::emitStoreBitFieldActivateSint32(SourceInfo L) {
53252 if (!isActive()) return true;
53253 CurrentSource = L;
53254 return StoreBitFieldActivate<PT_Sint32>(S, OpPC);
53255}
53256bool EvalEmitter::emitStoreBitFieldActivateUint32(SourceInfo L) {
53257 if (!isActive()) return true;
53258 CurrentSource = L;
53259 return StoreBitFieldActivate<PT_Uint32>(S, OpPC);
53260}
53261bool EvalEmitter::emitStoreBitFieldActivateSint64(SourceInfo L) {
53262 if (!isActive()) return true;
53263 CurrentSource = L;
53264 return StoreBitFieldActivate<PT_Sint64>(S, OpPC);
53265}
53266bool EvalEmitter::emitStoreBitFieldActivateUint64(SourceInfo L) {
53267 if (!isActive()) return true;
53268 CurrentSource = L;
53269 return StoreBitFieldActivate<PT_Uint64>(S, OpPC);
53270}
53271bool EvalEmitter::emitStoreBitFieldActivateIntAP(SourceInfo L) {
53272 if (!isActive()) return true;
53273 CurrentSource = L;
53274 return StoreBitFieldActivate<PT_IntAP>(S, OpPC);
53275}
53276bool EvalEmitter::emitStoreBitFieldActivateIntAPS(SourceInfo L) {
53277 if (!isActive()) return true;
53278 CurrentSource = L;
53279 return StoreBitFieldActivate<PT_IntAPS>(S, OpPC);
53280}
53281bool EvalEmitter::emitStoreBitFieldActivateBool(SourceInfo L) {
53282 if (!isActive()) return true;
53283 CurrentSource = L;
53284 return StoreBitFieldActivate<PT_Bool>(S, OpPC);
53285}
53286bool EvalEmitter::emitStoreBitFieldActivateFixedPoint(SourceInfo L) {
53287 if (!isActive()) return true;
53288 CurrentSource = L;
53289 return StoreBitFieldActivate<PT_FixedPoint>(S, OpPC);
53290}
53291#endif
53292#ifdef GET_OPCODE_NAMES
53293OP_StoreBitFieldActivatePopSint8,
53294OP_StoreBitFieldActivatePopUint8,
53295OP_StoreBitFieldActivatePopSint16,
53296OP_StoreBitFieldActivatePopUint16,
53297OP_StoreBitFieldActivatePopSint32,
53298OP_StoreBitFieldActivatePopUint32,
53299OP_StoreBitFieldActivatePopSint64,
53300OP_StoreBitFieldActivatePopUint64,
53301OP_StoreBitFieldActivatePopIntAP,
53302OP_StoreBitFieldActivatePopIntAPS,
53303OP_StoreBitFieldActivatePopBool,
53304OP_StoreBitFieldActivatePopFixedPoint,
53305#endif
53306#ifdef GET_INTERPFN_LIST
53307&Interp_StoreBitFieldActivatePopSint8,
53308&Interp_StoreBitFieldActivatePopUint8,
53309&Interp_StoreBitFieldActivatePopSint16,
53310&Interp_StoreBitFieldActivatePopUint16,
53311&Interp_StoreBitFieldActivatePopSint32,
53312&Interp_StoreBitFieldActivatePopUint32,
53313&Interp_StoreBitFieldActivatePopSint64,
53314&Interp_StoreBitFieldActivatePopUint64,
53315&Interp_StoreBitFieldActivatePopIntAP,
53316&Interp_StoreBitFieldActivatePopIntAPS,
53317&Interp_StoreBitFieldActivatePopBool,
53318&Interp_StoreBitFieldActivatePopFixedPoint,
53319#endif
53320#ifdef GET_INTERPFN_DISPATCHERS
53321PRESERVE_NONE
53322static bool Interp_StoreBitFieldActivatePopSint8(InterpState &S, CodePtr &PC) {
53323 if (!StoreBitFieldActivatePop<PT_Sint8>(S, PC)) return false;
53324#if USE_TAILCALLS
53325 MUSTTAIL return InterpNext(S, PC);
53326#else
53327 return true;
53328#endif
53329}
53330PRESERVE_NONE
53331static bool Interp_StoreBitFieldActivatePopUint8(InterpState &S, CodePtr &PC) {
53332 if (!StoreBitFieldActivatePop<PT_Uint8>(S, PC)) return false;
53333#if USE_TAILCALLS
53334 MUSTTAIL return InterpNext(S, PC);
53335#else
53336 return true;
53337#endif
53338}
53339PRESERVE_NONE
53340static bool Interp_StoreBitFieldActivatePopSint16(InterpState &S, CodePtr &PC) {
53341 if (!StoreBitFieldActivatePop<PT_Sint16>(S, PC)) return false;
53342#if USE_TAILCALLS
53343 MUSTTAIL return InterpNext(S, PC);
53344#else
53345 return true;
53346#endif
53347}
53348PRESERVE_NONE
53349static bool Interp_StoreBitFieldActivatePopUint16(InterpState &S, CodePtr &PC) {
53350 if (!StoreBitFieldActivatePop<PT_Uint16>(S, PC)) return false;
53351#if USE_TAILCALLS
53352 MUSTTAIL return InterpNext(S, PC);
53353#else
53354 return true;
53355#endif
53356}
53357PRESERVE_NONE
53358static bool Interp_StoreBitFieldActivatePopSint32(InterpState &S, CodePtr &PC) {
53359 if (!StoreBitFieldActivatePop<PT_Sint32>(S, PC)) return false;
53360#if USE_TAILCALLS
53361 MUSTTAIL return InterpNext(S, PC);
53362#else
53363 return true;
53364#endif
53365}
53366PRESERVE_NONE
53367static bool Interp_StoreBitFieldActivatePopUint32(InterpState &S, CodePtr &PC) {
53368 if (!StoreBitFieldActivatePop<PT_Uint32>(S, PC)) return false;
53369#if USE_TAILCALLS
53370 MUSTTAIL return InterpNext(S, PC);
53371#else
53372 return true;
53373#endif
53374}
53375PRESERVE_NONE
53376static bool Interp_StoreBitFieldActivatePopSint64(InterpState &S, CodePtr &PC) {
53377 if (!StoreBitFieldActivatePop<PT_Sint64>(S, PC)) return false;
53378#if USE_TAILCALLS
53379 MUSTTAIL return InterpNext(S, PC);
53380#else
53381 return true;
53382#endif
53383}
53384PRESERVE_NONE
53385static bool Interp_StoreBitFieldActivatePopUint64(InterpState &S, CodePtr &PC) {
53386 if (!StoreBitFieldActivatePop<PT_Uint64>(S, PC)) return false;
53387#if USE_TAILCALLS
53388 MUSTTAIL return InterpNext(S, PC);
53389#else
53390 return true;
53391#endif
53392}
53393PRESERVE_NONE
53394static bool Interp_StoreBitFieldActivatePopIntAP(InterpState &S, CodePtr &PC) {
53395 if (!StoreBitFieldActivatePop<PT_IntAP>(S, PC)) return false;
53396#if USE_TAILCALLS
53397 MUSTTAIL return InterpNext(S, PC);
53398#else
53399 return true;
53400#endif
53401}
53402PRESERVE_NONE
53403static bool Interp_StoreBitFieldActivatePopIntAPS(InterpState &S, CodePtr &PC) {
53404 if (!StoreBitFieldActivatePop<PT_IntAPS>(S, PC)) return false;
53405#if USE_TAILCALLS
53406 MUSTTAIL return InterpNext(S, PC);
53407#else
53408 return true;
53409#endif
53410}
53411PRESERVE_NONE
53412static bool Interp_StoreBitFieldActivatePopBool(InterpState &S, CodePtr &PC) {
53413 if (!StoreBitFieldActivatePop<PT_Bool>(S, PC)) return false;
53414#if USE_TAILCALLS
53415 MUSTTAIL return InterpNext(S, PC);
53416#else
53417 return true;
53418#endif
53419}
53420PRESERVE_NONE
53421static bool Interp_StoreBitFieldActivatePopFixedPoint(InterpState &S, CodePtr &PC) {
53422 if (!StoreBitFieldActivatePop<PT_FixedPoint>(S, PC)) return false;
53423#if USE_TAILCALLS
53424 MUSTTAIL return InterpNext(S, PC);
53425#else
53426 return true;
53427#endif
53428}
53429#endif
53430#ifdef GET_DISASM
53431case OP_StoreBitFieldActivatePopSint8:
53432 Text.Op = PrintName("StoreBitFieldActivatePopSint8");
53433 break;
53434case OP_StoreBitFieldActivatePopUint8:
53435 Text.Op = PrintName("StoreBitFieldActivatePopUint8");
53436 break;
53437case OP_StoreBitFieldActivatePopSint16:
53438 Text.Op = PrintName("StoreBitFieldActivatePopSint16");
53439 break;
53440case OP_StoreBitFieldActivatePopUint16:
53441 Text.Op = PrintName("StoreBitFieldActivatePopUint16");
53442 break;
53443case OP_StoreBitFieldActivatePopSint32:
53444 Text.Op = PrintName("StoreBitFieldActivatePopSint32");
53445 break;
53446case OP_StoreBitFieldActivatePopUint32:
53447 Text.Op = PrintName("StoreBitFieldActivatePopUint32");
53448 break;
53449case OP_StoreBitFieldActivatePopSint64:
53450 Text.Op = PrintName("StoreBitFieldActivatePopSint64");
53451 break;
53452case OP_StoreBitFieldActivatePopUint64:
53453 Text.Op = PrintName("StoreBitFieldActivatePopUint64");
53454 break;
53455case OP_StoreBitFieldActivatePopIntAP:
53456 Text.Op = PrintName("StoreBitFieldActivatePopIntAP");
53457 break;
53458case OP_StoreBitFieldActivatePopIntAPS:
53459 Text.Op = PrintName("StoreBitFieldActivatePopIntAPS");
53460 break;
53461case OP_StoreBitFieldActivatePopBool:
53462 Text.Op = PrintName("StoreBitFieldActivatePopBool");
53463 break;
53464case OP_StoreBitFieldActivatePopFixedPoint:
53465 Text.Op = PrintName("StoreBitFieldActivatePopFixedPoint");
53466 break;
53467#endif
53468#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53469bool emitStoreBitFieldActivatePopSint8(SourceInfo);
53470bool emitStoreBitFieldActivatePopUint8(SourceInfo);
53471bool emitStoreBitFieldActivatePopSint16(SourceInfo);
53472bool emitStoreBitFieldActivatePopUint16(SourceInfo);
53473bool emitStoreBitFieldActivatePopSint32(SourceInfo);
53474bool emitStoreBitFieldActivatePopUint32(SourceInfo);
53475bool emitStoreBitFieldActivatePopSint64(SourceInfo);
53476bool emitStoreBitFieldActivatePopUint64(SourceInfo);
53477bool emitStoreBitFieldActivatePopIntAP(SourceInfo);
53478bool emitStoreBitFieldActivatePopIntAPS(SourceInfo);
53479bool emitStoreBitFieldActivatePopBool(SourceInfo);
53480bool emitStoreBitFieldActivatePopFixedPoint(SourceInfo);
53481#endif
53482#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53483[[nodiscard]] bool emitStoreBitFieldActivatePop(PrimType, SourceInfo I);
53484#endif
53485#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
53486bool
53487#if defined(GET_EVAL_IMPL)
53488EvalEmitter
53489#else
53490ByteCodeEmitter
53491#endif
53492::emitStoreBitFieldActivatePop(PrimType T0, SourceInfo I) {
53493 switch (T0) {
53494 case PT_Sint8:
53495 return emitStoreBitFieldActivatePopSint8(I);
53496 case PT_Uint8:
53497 return emitStoreBitFieldActivatePopUint8(I);
53498 case PT_Sint16:
53499 return emitStoreBitFieldActivatePopSint16(I);
53500 case PT_Uint16:
53501 return emitStoreBitFieldActivatePopUint16(I);
53502 case PT_Sint32:
53503 return emitStoreBitFieldActivatePopSint32(I);
53504 case PT_Uint32:
53505 return emitStoreBitFieldActivatePopUint32(I);
53506 case PT_Sint64:
53507 return emitStoreBitFieldActivatePopSint64(I);
53508 case PT_Uint64:
53509 return emitStoreBitFieldActivatePopUint64(I);
53510 case PT_IntAP:
53511 return emitStoreBitFieldActivatePopIntAP(I);
53512 case PT_IntAPS:
53513 return emitStoreBitFieldActivatePopIntAPS(I);
53514 case PT_Bool:
53515 return emitStoreBitFieldActivatePopBool(I);
53516 case PT_FixedPoint:
53517 return emitStoreBitFieldActivatePopFixedPoint(I);
53518 default: llvm_unreachable("invalid type: emitStoreBitFieldActivatePop");
53519 }
53520 llvm_unreachable("invalid enum value");
53521}
53522#endif
53523#ifdef GET_LINK_IMPL
53524bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint8(SourceInfo L) {
53525 return emitOp<>(OP_StoreBitFieldActivatePopSint8, L);
53526}
53527bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint8(SourceInfo L) {
53528 return emitOp<>(OP_StoreBitFieldActivatePopUint8, L);
53529}
53530bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint16(SourceInfo L) {
53531 return emitOp<>(OP_StoreBitFieldActivatePopSint16, L);
53532}
53533bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint16(SourceInfo L) {
53534 return emitOp<>(OP_StoreBitFieldActivatePopUint16, L);
53535}
53536bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint32(SourceInfo L) {
53537 return emitOp<>(OP_StoreBitFieldActivatePopSint32, L);
53538}
53539bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint32(SourceInfo L) {
53540 return emitOp<>(OP_StoreBitFieldActivatePopUint32, L);
53541}
53542bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint64(SourceInfo L) {
53543 return emitOp<>(OP_StoreBitFieldActivatePopSint64, L);
53544}
53545bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint64(SourceInfo L) {
53546 return emitOp<>(OP_StoreBitFieldActivatePopUint64, L);
53547}
53548bool ByteCodeEmitter::emitStoreBitFieldActivatePopIntAP(SourceInfo L) {
53549 return emitOp<>(OP_StoreBitFieldActivatePopIntAP, L);
53550}
53551bool ByteCodeEmitter::emitStoreBitFieldActivatePopIntAPS(SourceInfo L) {
53552 return emitOp<>(OP_StoreBitFieldActivatePopIntAPS, L);
53553}
53554bool ByteCodeEmitter::emitStoreBitFieldActivatePopBool(SourceInfo L) {
53555 return emitOp<>(OP_StoreBitFieldActivatePopBool, L);
53556}
53557bool ByteCodeEmitter::emitStoreBitFieldActivatePopFixedPoint(SourceInfo L) {
53558 return emitOp<>(OP_StoreBitFieldActivatePopFixedPoint, L);
53559}
53560#endif
53561#ifdef GET_EVAL_IMPL
53562bool EvalEmitter::emitStoreBitFieldActivatePopSint8(SourceInfo L) {
53563 if (!isActive()) return true;
53564 CurrentSource = L;
53565 return StoreBitFieldActivatePop<PT_Sint8>(S, OpPC);
53566}
53567bool EvalEmitter::emitStoreBitFieldActivatePopUint8(SourceInfo L) {
53568 if (!isActive()) return true;
53569 CurrentSource = L;
53570 return StoreBitFieldActivatePop<PT_Uint8>(S, OpPC);
53571}
53572bool EvalEmitter::emitStoreBitFieldActivatePopSint16(SourceInfo L) {
53573 if (!isActive()) return true;
53574 CurrentSource = L;
53575 return StoreBitFieldActivatePop<PT_Sint16>(S, OpPC);
53576}
53577bool EvalEmitter::emitStoreBitFieldActivatePopUint16(SourceInfo L) {
53578 if (!isActive()) return true;
53579 CurrentSource = L;
53580 return StoreBitFieldActivatePop<PT_Uint16>(S, OpPC);
53581}
53582bool EvalEmitter::emitStoreBitFieldActivatePopSint32(SourceInfo L) {
53583 if (!isActive()) return true;
53584 CurrentSource = L;
53585 return StoreBitFieldActivatePop<PT_Sint32>(S, OpPC);
53586}
53587bool EvalEmitter::emitStoreBitFieldActivatePopUint32(SourceInfo L) {
53588 if (!isActive()) return true;
53589 CurrentSource = L;
53590 return StoreBitFieldActivatePop<PT_Uint32>(S, OpPC);
53591}
53592bool EvalEmitter::emitStoreBitFieldActivatePopSint64(SourceInfo L) {
53593 if (!isActive()) return true;
53594 CurrentSource = L;
53595 return StoreBitFieldActivatePop<PT_Sint64>(S, OpPC);
53596}
53597bool EvalEmitter::emitStoreBitFieldActivatePopUint64(SourceInfo L) {
53598 if (!isActive()) return true;
53599 CurrentSource = L;
53600 return StoreBitFieldActivatePop<PT_Uint64>(S, OpPC);
53601}
53602bool EvalEmitter::emitStoreBitFieldActivatePopIntAP(SourceInfo L) {
53603 if (!isActive()) return true;
53604 CurrentSource = L;
53605 return StoreBitFieldActivatePop<PT_IntAP>(S, OpPC);
53606}
53607bool EvalEmitter::emitStoreBitFieldActivatePopIntAPS(SourceInfo L) {
53608 if (!isActive()) return true;
53609 CurrentSource = L;
53610 return StoreBitFieldActivatePop<PT_IntAPS>(S, OpPC);
53611}
53612bool EvalEmitter::emitStoreBitFieldActivatePopBool(SourceInfo L) {
53613 if (!isActive()) return true;
53614 CurrentSource = L;
53615 return StoreBitFieldActivatePop<PT_Bool>(S, OpPC);
53616}
53617bool EvalEmitter::emitStoreBitFieldActivatePopFixedPoint(SourceInfo L) {
53618 if (!isActive()) return true;
53619 CurrentSource = L;
53620 return StoreBitFieldActivatePop<PT_FixedPoint>(S, OpPC);
53621}
53622#endif
53623#ifdef GET_OPCODE_NAMES
53624OP_StoreBitFieldPopSint8,
53625OP_StoreBitFieldPopUint8,
53626OP_StoreBitFieldPopSint16,
53627OP_StoreBitFieldPopUint16,
53628OP_StoreBitFieldPopSint32,
53629OP_StoreBitFieldPopUint32,
53630OP_StoreBitFieldPopSint64,
53631OP_StoreBitFieldPopUint64,
53632OP_StoreBitFieldPopIntAP,
53633OP_StoreBitFieldPopIntAPS,
53634OP_StoreBitFieldPopBool,
53635OP_StoreBitFieldPopFixedPoint,
53636#endif
53637#ifdef GET_INTERPFN_LIST
53638&Interp_StoreBitFieldPopSint8,
53639&Interp_StoreBitFieldPopUint8,
53640&Interp_StoreBitFieldPopSint16,
53641&Interp_StoreBitFieldPopUint16,
53642&Interp_StoreBitFieldPopSint32,
53643&Interp_StoreBitFieldPopUint32,
53644&Interp_StoreBitFieldPopSint64,
53645&Interp_StoreBitFieldPopUint64,
53646&Interp_StoreBitFieldPopIntAP,
53647&Interp_StoreBitFieldPopIntAPS,
53648&Interp_StoreBitFieldPopBool,
53649&Interp_StoreBitFieldPopFixedPoint,
53650#endif
53651#ifdef GET_INTERPFN_DISPATCHERS
53652PRESERVE_NONE
53653static bool Interp_StoreBitFieldPopSint8(InterpState &S, CodePtr &PC) {
53654 if (!StoreBitFieldPop<PT_Sint8>(S, PC)) return false;
53655#if USE_TAILCALLS
53656 MUSTTAIL return InterpNext(S, PC);
53657#else
53658 return true;
53659#endif
53660}
53661PRESERVE_NONE
53662static bool Interp_StoreBitFieldPopUint8(InterpState &S, CodePtr &PC) {
53663 if (!StoreBitFieldPop<PT_Uint8>(S, PC)) return false;
53664#if USE_TAILCALLS
53665 MUSTTAIL return InterpNext(S, PC);
53666#else
53667 return true;
53668#endif
53669}
53670PRESERVE_NONE
53671static bool Interp_StoreBitFieldPopSint16(InterpState &S, CodePtr &PC) {
53672 if (!StoreBitFieldPop<PT_Sint16>(S, PC)) return false;
53673#if USE_TAILCALLS
53674 MUSTTAIL return InterpNext(S, PC);
53675#else
53676 return true;
53677#endif
53678}
53679PRESERVE_NONE
53680static bool Interp_StoreBitFieldPopUint16(InterpState &S, CodePtr &PC) {
53681 if (!StoreBitFieldPop<PT_Uint16>(S, PC)) return false;
53682#if USE_TAILCALLS
53683 MUSTTAIL return InterpNext(S, PC);
53684#else
53685 return true;
53686#endif
53687}
53688PRESERVE_NONE
53689static bool Interp_StoreBitFieldPopSint32(InterpState &S, CodePtr &PC) {
53690 if (!StoreBitFieldPop<PT_Sint32>(S, PC)) return false;
53691#if USE_TAILCALLS
53692 MUSTTAIL return InterpNext(S, PC);
53693#else
53694 return true;
53695#endif
53696}
53697PRESERVE_NONE
53698static bool Interp_StoreBitFieldPopUint32(InterpState &S, CodePtr &PC) {
53699 if (!StoreBitFieldPop<PT_Uint32>(S, PC)) return false;
53700#if USE_TAILCALLS
53701 MUSTTAIL return InterpNext(S, PC);
53702#else
53703 return true;
53704#endif
53705}
53706PRESERVE_NONE
53707static bool Interp_StoreBitFieldPopSint64(InterpState &S, CodePtr &PC) {
53708 if (!StoreBitFieldPop<PT_Sint64>(S, PC)) return false;
53709#if USE_TAILCALLS
53710 MUSTTAIL return InterpNext(S, PC);
53711#else
53712 return true;
53713#endif
53714}
53715PRESERVE_NONE
53716static bool Interp_StoreBitFieldPopUint64(InterpState &S, CodePtr &PC) {
53717 if (!StoreBitFieldPop<PT_Uint64>(S, PC)) return false;
53718#if USE_TAILCALLS
53719 MUSTTAIL return InterpNext(S, PC);
53720#else
53721 return true;
53722#endif
53723}
53724PRESERVE_NONE
53725static bool Interp_StoreBitFieldPopIntAP(InterpState &S, CodePtr &PC) {
53726 if (!StoreBitFieldPop<PT_IntAP>(S, PC)) return false;
53727#if USE_TAILCALLS
53728 MUSTTAIL return InterpNext(S, PC);
53729#else
53730 return true;
53731#endif
53732}
53733PRESERVE_NONE
53734static bool Interp_StoreBitFieldPopIntAPS(InterpState &S, CodePtr &PC) {
53735 if (!StoreBitFieldPop<PT_IntAPS>(S, PC)) return false;
53736#if USE_TAILCALLS
53737 MUSTTAIL return InterpNext(S, PC);
53738#else
53739 return true;
53740#endif
53741}
53742PRESERVE_NONE
53743static bool Interp_StoreBitFieldPopBool(InterpState &S, CodePtr &PC) {
53744 if (!StoreBitFieldPop<PT_Bool>(S, PC)) return false;
53745#if USE_TAILCALLS
53746 MUSTTAIL return InterpNext(S, PC);
53747#else
53748 return true;
53749#endif
53750}
53751PRESERVE_NONE
53752static bool Interp_StoreBitFieldPopFixedPoint(InterpState &S, CodePtr &PC) {
53753 if (!StoreBitFieldPop<PT_FixedPoint>(S, PC)) return false;
53754#if USE_TAILCALLS
53755 MUSTTAIL return InterpNext(S, PC);
53756#else
53757 return true;
53758#endif
53759}
53760#endif
53761#ifdef GET_DISASM
53762case OP_StoreBitFieldPopSint8:
53763 Text.Op = PrintName("StoreBitFieldPopSint8");
53764 break;
53765case OP_StoreBitFieldPopUint8:
53766 Text.Op = PrintName("StoreBitFieldPopUint8");
53767 break;
53768case OP_StoreBitFieldPopSint16:
53769 Text.Op = PrintName("StoreBitFieldPopSint16");
53770 break;
53771case OP_StoreBitFieldPopUint16:
53772 Text.Op = PrintName("StoreBitFieldPopUint16");
53773 break;
53774case OP_StoreBitFieldPopSint32:
53775 Text.Op = PrintName("StoreBitFieldPopSint32");
53776 break;
53777case OP_StoreBitFieldPopUint32:
53778 Text.Op = PrintName("StoreBitFieldPopUint32");
53779 break;
53780case OP_StoreBitFieldPopSint64:
53781 Text.Op = PrintName("StoreBitFieldPopSint64");
53782 break;
53783case OP_StoreBitFieldPopUint64:
53784 Text.Op = PrintName("StoreBitFieldPopUint64");
53785 break;
53786case OP_StoreBitFieldPopIntAP:
53787 Text.Op = PrintName("StoreBitFieldPopIntAP");
53788 break;
53789case OP_StoreBitFieldPopIntAPS:
53790 Text.Op = PrintName("StoreBitFieldPopIntAPS");
53791 break;
53792case OP_StoreBitFieldPopBool:
53793 Text.Op = PrintName("StoreBitFieldPopBool");
53794 break;
53795case OP_StoreBitFieldPopFixedPoint:
53796 Text.Op = PrintName("StoreBitFieldPopFixedPoint");
53797 break;
53798#endif
53799#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53800bool emitStoreBitFieldPopSint8(SourceInfo);
53801bool emitStoreBitFieldPopUint8(SourceInfo);
53802bool emitStoreBitFieldPopSint16(SourceInfo);
53803bool emitStoreBitFieldPopUint16(SourceInfo);
53804bool emitStoreBitFieldPopSint32(SourceInfo);
53805bool emitStoreBitFieldPopUint32(SourceInfo);
53806bool emitStoreBitFieldPopSint64(SourceInfo);
53807bool emitStoreBitFieldPopUint64(SourceInfo);
53808bool emitStoreBitFieldPopIntAP(SourceInfo);
53809bool emitStoreBitFieldPopIntAPS(SourceInfo);
53810bool emitStoreBitFieldPopBool(SourceInfo);
53811bool emitStoreBitFieldPopFixedPoint(SourceInfo);
53812#endif
53813#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
53814[[nodiscard]] bool emitStoreBitFieldPop(PrimType, SourceInfo I);
53815#endif
53816#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
53817bool
53818#if defined(GET_EVAL_IMPL)
53819EvalEmitter
53820#else
53821ByteCodeEmitter
53822#endif
53823::emitStoreBitFieldPop(PrimType T0, SourceInfo I) {
53824 switch (T0) {
53825 case PT_Sint8:
53826 return emitStoreBitFieldPopSint8(I);
53827 case PT_Uint8:
53828 return emitStoreBitFieldPopUint8(I);
53829 case PT_Sint16:
53830 return emitStoreBitFieldPopSint16(I);
53831 case PT_Uint16:
53832 return emitStoreBitFieldPopUint16(I);
53833 case PT_Sint32:
53834 return emitStoreBitFieldPopSint32(I);
53835 case PT_Uint32:
53836 return emitStoreBitFieldPopUint32(I);
53837 case PT_Sint64:
53838 return emitStoreBitFieldPopSint64(I);
53839 case PT_Uint64:
53840 return emitStoreBitFieldPopUint64(I);
53841 case PT_IntAP:
53842 return emitStoreBitFieldPopIntAP(I);
53843 case PT_IntAPS:
53844 return emitStoreBitFieldPopIntAPS(I);
53845 case PT_Bool:
53846 return emitStoreBitFieldPopBool(I);
53847 case PT_FixedPoint:
53848 return emitStoreBitFieldPopFixedPoint(I);
53849 default: llvm_unreachable("invalid type: emitStoreBitFieldPop");
53850 }
53851 llvm_unreachable("invalid enum value");
53852}
53853#endif
53854#ifdef GET_LINK_IMPL
53855bool ByteCodeEmitter::emitStoreBitFieldPopSint8(SourceInfo L) {
53856 return emitOp<>(OP_StoreBitFieldPopSint8, L);
53857}
53858bool ByteCodeEmitter::emitStoreBitFieldPopUint8(SourceInfo L) {
53859 return emitOp<>(OP_StoreBitFieldPopUint8, L);
53860}
53861bool ByteCodeEmitter::emitStoreBitFieldPopSint16(SourceInfo L) {
53862 return emitOp<>(OP_StoreBitFieldPopSint16, L);
53863}
53864bool ByteCodeEmitter::emitStoreBitFieldPopUint16(SourceInfo L) {
53865 return emitOp<>(OP_StoreBitFieldPopUint16, L);
53866}
53867bool ByteCodeEmitter::emitStoreBitFieldPopSint32(SourceInfo L) {
53868 return emitOp<>(OP_StoreBitFieldPopSint32, L);
53869}
53870bool ByteCodeEmitter::emitStoreBitFieldPopUint32(SourceInfo L) {
53871 return emitOp<>(OP_StoreBitFieldPopUint32, L);
53872}
53873bool ByteCodeEmitter::emitStoreBitFieldPopSint64(SourceInfo L) {
53874 return emitOp<>(OP_StoreBitFieldPopSint64, L);
53875}
53876bool ByteCodeEmitter::emitStoreBitFieldPopUint64(SourceInfo L) {
53877 return emitOp<>(OP_StoreBitFieldPopUint64, L);
53878}
53879bool ByteCodeEmitter::emitStoreBitFieldPopIntAP(SourceInfo L) {
53880 return emitOp<>(OP_StoreBitFieldPopIntAP, L);
53881}
53882bool ByteCodeEmitter::emitStoreBitFieldPopIntAPS(SourceInfo L) {
53883 return emitOp<>(OP_StoreBitFieldPopIntAPS, L);
53884}
53885bool ByteCodeEmitter::emitStoreBitFieldPopBool(SourceInfo L) {
53886 return emitOp<>(OP_StoreBitFieldPopBool, L);
53887}
53888bool ByteCodeEmitter::emitStoreBitFieldPopFixedPoint(SourceInfo L) {
53889 return emitOp<>(OP_StoreBitFieldPopFixedPoint, L);
53890}
53891#endif
53892#ifdef GET_EVAL_IMPL
53893bool EvalEmitter::emitStoreBitFieldPopSint8(SourceInfo L) {
53894 if (!isActive()) return true;
53895 CurrentSource = L;
53896 return StoreBitFieldPop<PT_Sint8>(S, OpPC);
53897}
53898bool EvalEmitter::emitStoreBitFieldPopUint8(SourceInfo L) {
53899 if (!isActive()) return true;
53900 CurrentSource = L;
53901 return StoreBitFieldPop<PT_Uint8>(S, OpPC);
53902}
53903bool EvalEmitter::emitStoreBitFieldPopSint16(SourceInfo L) {
53904 if (!isActive()) return true;
53905 CurrentSource = L;
53906 return StoreBitFieldPop<PT_Sint16>(S, OpPC);
53907}
53908bool EvalEmitter::emitStoreBitFieldPopUint16(SourceInfo L) {
53909 if (!isActive()) return true;
53910 CurrentSource = L;
53911 return StoreBitFieldPop<PT_Uint16>(S, OpPC);
53912}
53913bool EvalEmitter::emitStoreBitFieldPopSint32(SourceInfo L) {
53914 if (!isActive()) return true;
53915 CurrentSource = L;
53916 return StoreBitFieldPop<PT_Sint32>(S, OpPC);
53917}
53918bool EvalEmitter::emitStoreBitFieldPopUint32(SourceInfo L) {
53919 if (!isActive()) return true;
53920 CurrentSource = L;
53921 return StoreBitFieldPop<PT_Uint32>(S, OpPC);
53922}
53923bool EvalEmitter::emitStoreBitFieldPopSint64(SourceInfo L) {
53924 if (!isActive()) return true;
53925 CurrentSource = L;
53926 return StoreBitFieldPop<PT_Sint64>(S, OpPC);
53927}
53928bool EvalEmitter::emitStoreBitFieldPopUint64(SourceInfo L) {
53929 if (!isActive()) return true;
53930 CurrentSource = L;
53931 return StoreBitFieldPop<PT_Uint64>(S, OpPC);
53932}
53933bool EvalEmitter::emitStoreBitFieldPopIntAP(SourceInfo L) {
53934 if (!isActive()) return true;
53935 CurrentSource = L;
53936 return StoreBitFieldPop<PT_IntAP>(S, OpPC);
53937}
53938bool EvalEmitter::emitStoreBitFieldPopIntAPS(SourceInfo L) {
53939 if (!isActive()) return true;
53940 CurrentSource = L;
53941 return StoreBitFieldPop<PT_IntAPS>(S, OpPC);
53942}
53943bool EvalEmitter::emitStoreBitFieldPopBool(SourceInfo L) {
53944 if (!isActive()) return true;
53945 CurrentSource = L;
53946 return StoreBitFieldPop<PT_Bool>(S, OpPC);
53947}
53948bool EvalEmitter::emitStoreBitFieldPopFixedPoint(SourceInfo L) {
53949 if (!isActive()) return true;
53950 CurrentSource = L;
53951 return StoreBitFieldPop<PT_FixedPoint>(S, OpPC);
53952}
53953#endif
53954#ifdef GET_OPCODE_NAMES
53955OP_StorePopSint8,
53956OP_StorePopUint8,
53957OP_StorePopSint16,
53958OP_StorePopUint16,
53959OP_StorePopSint32,
53960OP_StorePopUint32,
53961OP_StorePopSint64,
53962OP_StorePopUint64,
53963OP_StorePopIntAP,
53964OP_StorePopIntAPS,
53965OP_StorePopBool,
53966OP_StorePopFixedPoint,
53967OP_StorePopPtr,
53968OP_StorePopMemberPtr,
53969OP_StorePopFloat,
53970#endif
53971#ifdef GET_INTERPFN_LIST
53972&Interp_StorePopSint8,
53973&Interp_StorePopUint8,
53974&Interp_StorePopSint16,
53975&Interp_StorePopUint16,
53976&Interp_StorePopSint32,
53977&Interp_StorePopUint32,
53978&Interp_StorePopSint64,
53979&Interp_StorePopUint64,
53980&Interp_StorePopIntAP,
53981&Interp_StorePopIntAPS,
53982&Interp_StorePopBool,
53983&Interp_StorePopFixedPoint,
53984&Interp_StorePopPtr,
53985&Interp_StorePopMemberPtr,
53986&Interp_StorePopFloat,
53987#endif
53988#ifdef GET_INTERPFN_DISPATCHERS
53989PRESERVE_NONE
53990static bool Interp_StorePopSint8(InterpState &S, CodePtr &PC) {
53991 if (!StorePop<PT_Sint8>(S, PC)) return false;
53992#if USE_TAILCALLS
53993 MUSTTAIL return InterpNext(S, PC);
53994#else
53995 return true;
53996#endif
53997}
53998PRESERVE_NONE
53999static bool Interp_StorePopUint8(InterpState &S, CodePtr &PC) {
54000 if (!StorePop<PT_Uint8>(S, PC)) return false;
54001#if USE_TAILCALLS
54002 MUSTTAIL return InterpNext(S, PC);
54003#else
54004 return true;
54005#endif
54006}
54007PRESERVE_NONE
54008static bool Interp_StorePopSint16(InterpState &S, CodePtr &PC) {
54009 if (!StorePop<PT_Sint16>(S, PC)) return false;
54010#if USE_TAILCALLS
54011 MUSTTAIL return InterpNext(S, PC);
54012#else
54013 return true;
54014#endif
54015}
54016PRESERVE_NONE
54017static bool Interp_StorePopUint16(InterpState &S, CodePtr &PC) {
54018 if (!StorePop<PT_Uint16>(S, PC)) return false;
54019#if USE_TAILCALLS
54020 MUSTTAIL return InterpNext(S, PC);
54021#else
54022 return true;
54023#endif
54024}
54025PRESERVE_NONE
54026static bool Interp_StorePopSint32(InterpState &S, CodePtr &PC) {
54027 if (!StorePop<PT_Sint32>(S, PC)) return false;
54028#if USE_TAILCALLS
54029 MUSTTAIL return InterpNext(S, PC);
54030#else
54031 return true;
54032#endif
54033}
54034PRESERVE_NONE
54035static bool Interp_StorePopUint32(InterpState &S, CodePtr &PC) {
54036 if (!StorePop<PT_Uint32>(S, PC)) return false;
54037#if USE_TAILCALLS
54038 MUSTTAIL return InterpNext(S, PC);
54039#else
54040 return true;
54041#endif
54042}
54043PRESERVE_NONE
54044static bool Interp_StorePopSint64(InterpState &S, CodePtr &PC) {
54045 if (!StorePop<PT_Sint64>(S, PC)) return false;
54046#if USE_TAILCALLS
54047 MUSTTAIL return InterpNext(S, PC);
54048#else
54049 return true;
54050#endif
54051}
54052PRESERVE_NONE
54053static bool Interp_StorePopUint64(InterpState &S, CodePtr &PC) {
54054 if (!StorePop<PT_Uint64>(S, PC)) return false;
54055#if USE_TAILCALLS
54056 MUSTTAIL return InterpNext(S, PC);
54057#else
54058 return true;
54059#endif
54060}
54061PRESERVE_NONE
54062static bool Interp_StorePopIntAP(InterpState &S, CodePtr &PC) {
54063 if (!StorePop<PT_IntAP>(S, PC)) return false;
54064#if USE_TAILCALLS
54065 MUSTTAIL return InterpNext(S, PC);
54066#else
54067 return true;
54068#endif
54069}
54070PRESERVE_NONE
54071static bool Interp_StorePopIntAPS(InterpState &S, CodePtr &PC) {
54072 if (!StorePop<PT_IntAPS>(S, PC)) return false;
54073#if USE_TAILCALLS
54074 MUSTTAIL return InterpNext(S, PC);
54075#else
54076 return true;
54077#endif
54078}
54079PRESERVE_NONE
54080static bool Interp_StorePopBool(InterpState &S, CodePtr &PC) {
54081 if (!StorePop<PT_Bool>(S, PC)) return false;
54082#if USE_TAILCALLS
54083 MUSTTAIL return InterpNext(S, PC);
54084#else
54085 return true;
54086#endif
54087}
54088PRESERVE_NONE
54089static bool Interp_StorePopFixedPoint(InterpState &S, CodePtr &PC) {
54090 if (!StorePop<PT_FixedPoint>(S, PC)) return false;
54091#if USE_TAILCALLS
54092 MUSTTAIL return InterpNext(S, PC);
54093#else
54094 return true;
54095#endif
54096}
54097PRESERVE_NONE
54098static bool Interp_StorePopPtr(InterpState &S, CodePtr &PC) {
54099 if (!StorePop<PT_Ptr>(S, PC)) return false;
54100#if USE_TAILCALLS
54101 MUSTTAIL return InterpNext(S, PC);
54102#else
54103 return true;
54104#endif
54105}
54106PRESERVE_NONE
54107static bool Interp_StorePopMemberPtr(InterpState &S, CodePtr &PC) {
54108 if (!StorePop<PT_MemberPtr>(S, PC)) return false;
54109#if USE_TAILCALLS
54110 MUSTTAIL return InterpNext(S, PC);
54111#else
54112 return true;
54113#endif
54114}
54115PRESERVE_NONE
54116static bool Interp_StorePopFloat(InterpState &S, CodePtr &PC) {
54117 if (!StorePop<PT_Float>(S, PC)) return false;
54118#if USE_TAILCALLS
54119 MUSTTAIL return InterpNext(S, PC);
54120#else
54121 return true;
54122#endif
54123}
54124#endif
54125#ifdef GET_DISASM
54126case OP_StorePopSint8:
54127 Text.Op = PrintName("StorePopSint8");
54128 break;
54129case OP_StorePopUint8:
54130 Text.Op = PrintName("StorePopUint8");
54131 break;
54132case OP_StorePopSint16:
54133 Text.Op = PrintName("StorePopSint16");
54134 break;
54135case OP_StorePopUint16:
54136 Text.Op = PrintName("StorePopUint16");
54137 break;
54138case OP_StorePopSint32:
54139 Text.Op = PrintName("StorePopSint32");
54140 break;
54141case OP_StorePopUint32:
54142 Text.Op = PrintName("StorePopUint32");
54143 break;
54144case OP_StorePopSint64:
54145 Text.Op = PrintName("StorePopSint64");
54146 break;
54147case OP_StorePopUint64:
54148 Text.Op = PrintName("StorePopUint64");
54149 break;
54150case OP_StorePopIntAP:
54151 Text.Op = PrintName("StorePopIntAP");
54152 break;
54153case OP_StorePopIntAPS:
54154 Text.Op = PrintName("StorePopIntAPS");
54155 break;
54156case OP_StorePopBool:
54157 Text.Op = PrintName("StorePopBool");
54158 break;
54159case OP_StorePopFixedPoint:
54160 Text.Op = PrintName("StorePopFixedPoint");
54161 break;
54162case OP_StorePopPtr:
54163 Text.Op = PrintName("StorePopPtr");
54164 break;
54165case OP_StorePopMemberPtr:
54166 Text.Op = PrintName("StorePopMemberPtr");
54167 break;
54168case OP_StorePopFloat:
54169 Text.Op = PrintName("StorePopFloat");
54170 break;
54171#endif
54172#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54173bool emitStorePopSint8(SourceInfo);
54174bool emitStorePopUint8(SourceInfo);
54175bool emitStorePopSint16(SourceInfo);
54176bool emitStorePopUint16(SourceInfo);
54177bool emitStorePopSint32(SourceInfo);
54178bool emitStorePopUint32(SourceInfo);
54179bool emitStorePopSint64(SourceInfo);
54180bool emitStorePopUint64(SourceInfo);
54181bool emitStorePopIntAP(SourceInfo);
54182bool emitStorePopIntAPS(SourceInfo);
54183bool emitStorePopBool(SourceInfo);
54184bool emitStorePopFixedPoint(SourceInfo);
54185bool emitStorePopPtr(SourceInfo);
54186bool emitStorePopMemberPtr(SourceInfo);
54187bool emitStorePopFloat(SourceInfo);
54188#endif
54189#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54190[[nodiscard]] bool emitStorePop(PrimType, SourceInfo I);
54191#endif
54192#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
54193bool
54194#if defined(GET_EVAL_IMPL)
54195EvalEmitter
54196#else
54197ByteCodeEmitter
54198#endif
54199::emitStorePop(PrimType T0, SourceInfo I) {
54200 switch (T0) {
54201 case PT_Sint8:
54202 return emitStorePopSint8(I);
54203 case PT_Uint8:
54204 return emitStorePopUint8(I);
54205 case PT_Sint16:
54206 return emitStorePopSint16(I);
54207 case PT_Uint16:
54208 return emitStorePopUint16(I);
54209 case PT_Sint32:
54210 return emitStorePopSint32(I);
54211 case PT_Uint32:
54212 return emitStorePopUint32(I);
54213 case PT_Sint64:
54214 return emitStorePopSint64(I);
54215 case PT_Uint64:
54216 return emitStorePopUint64(I);
54217 case PT_IntAP:
54218 return emitStorePopIntAP(I);
54219 case PT_IntAPS:
54220 return emitStorePopIntAPS(I);
54221 case PT_Bool:
54222 return emitStorePopBool(I);
54223 case PT_FixedPoint:
54224 return emitStorePopFixedPoint(I);
54225 case PT_Ptr:
54226 return emitStorePopPtr(I);
54227 case PT_MemberPtr:
54228 return emitStorePopMemberPtr(I);
54229 case PT_Float:
54230 return emitStorePopFloat(I);
54231 }
54232 llvm_unreachable("invalid enum value");
54233}
54234#endif
54235#ifdef GET_LINK_IMPL
54236bool ByteCodeEmitter::emitStorePopSint8(SourceInfo L) {
54237 return emitOp<>(OP_StorePopSint8, L);
54238}
54239bool ByteCodeEmitter::emitStorePopUint8(SourceInfo L) {
54240 return emitOp<>(OP_StorePopUint8, L);
54241}
54242bool ByteCodeEmitter::emitStorePopSint16(SourceInfo L) {
54243 return emitOp<>(OP_StorePopSint16, L);
54244}
54245bool ByteCodeEmitter::emitStorePopUint16(SourceInfo L) {
54246 return emitOp<>(OP_StorePopUint16, L);
54247}
54248bool ByteCodeEmitter::emitStorePopSint32(SourceInfo L) {
54249 return emitOp<>(OP_StorePopSint32, L);
54250}
54251bool ByteCodeEmitter::emitStorePopUint32(SourceInfo L) {
54252 return emitOp<>(OP_StorePopUint32, L);
54253}
54254bool ByteCodeEmitter::emitStorePopSint64(SourceInfo L) {
54255 return emitOp<>(OP_StorePopSint64, L);
54256}
54257bool ByteCodeEmitter::emitStorePopUint64(SourceInfo L) {
54258 return emitOp<>(OP_StorePopUint64, L);
54259}
54260bool ByteCodeEmitter::emitStorePopIntAP(SourceInfo L) {
54261 return emitOp<>(OP_StorePopIntAP, L);
54262}
54263bool ByteCodeEmitter::emitStorePopIntAPS(SourceInfo L) {
54264 return emitOp<>(OP_StorePopIntAPS, L);
54265}
54266bool ByteCodeEmitter::emitStorePopBool(SourceInfo L) {
54267 return emitOp<>(OP_StorePopBool, L);
54268}
54269bool ByteCodeEmitter::emitStorePopFixedPoint(SourceInfo L) {
54270 return emitOp<>(OP_StorePopFixedPoint, L);
54271}
54272bool ByteCodeEmitter::emitStorePopPtr(SourceInfo L) {
54273 return emitOp<>(OP_StorePopPtr, L);
54274}
54275bool ByteCodeEmitter::emitStorePopMemberPtr(SourceInfo L) {
54276 return emitOp<>(OP_StorePopMemberPtr, L);
54277}
54278bool ByteCodeEmitter::emitStorePopFloat(SourceInfo L) {
54279 return emitOp<>(OP_StorePopFloat, L);
54280}
54281#endif
54282#ifdef GET_EVAL_IMPL
54283bool EvalEmitter::emitStorePopSint8(SourceInfo L) {
54284 if (!isActive()) return true;
54285 CurrentSource = L;
54286 return StorePop<PT_Sint8>(S, OpPC);
54287}
54288bool EvalEmitter::emitStorePopUint8(SourceInfo L) {
54289 if (!isActive()) return true;
54290 CurrentSource = L;
54291 return StorePop<PT_Uint8>(S, OpPC);
54292}
54293bool EvalEmitter::emitStorePopSint16(SourceInfo L) {
54294 if (!isActive()) return true;
54295 CurrentSource = L;
54296 return StorePop<PT_Sint16>(S, OpPC);
54297}
54298bool EvalEmitter::emitStorePopUint16(SourceInfo L) {
54299 if (!isActive()) return true;
54300 CurrentSource = L;
54301 return StorePop<PT_Uint16>(S, OpPC);
54302}
54303bool EvalEmitter::emitStorePopSint32(SourceInfo L) {
54304 if (!isActive()) return true;
54305 CurrentSource = L;
54306 return StorePop<PT_Sint32>(S, OpPC);
54307}
54308bool EvalEmitter::emitStorePopUint32(SourceInfo L) {
54309 if (!isActive()) return true;
54310 CurrentSource = L;
54311 return StorePop<PT_Uint32>(S, OpPC);
54312}
54313bool EvalEmitter::emitStorePopSint64(SourceInfo L) {
54314 if (!isActive()) return true;
54315 CurrentSource = L;
54316 return StorePop<PT_Sint64>(S, OpPC);
54317}
54318bool EvalEmitter::emitStorePopUint64(SourceInfo L) {
54319 if (!isActive()) return true;
54320 CurrentSource = L;
54321 return StorePop<PT_Uint64>(S, OpPC);
54322}
54323bool EvalEmitter::emitStorePopIntAP(SourceInfo L) {
54324 if (!isActive()) return true;
54325 CurrentSource = L;
54326 return StorePop<PT_IntAP>(S, OpPC);
54327}
54328bool EvalEmitter::emitStorePopIntAPS(SourceInfo L) {
54329 if (!isActive()) return true;
54330 CurrentSource = L;
54331 return StorePop<PT_IntAPS>(S, OpPC);
54332}
54333bool EvalEmitter::emitStorePopBool(SourceInfo L) {
54334 if (!isActive()) return true;
54335 CurrentSource = L;
54336 return StorePop<PT_Bool>(S, OpPC);
54337}
54338bool EvalEmitter::emitStorePopFixedPoint(SourceInfo L) {
54339 if (!isActive()) return true;
54340 CurrentSource = L;
54341 return StorePop<PT_FixedPoint>(S, OpPC);
54342}
54343bool EvalEmitter::emitStorePopPtr(SourceInfo L) {
54344 if (!isActive()) return true;
54345 CurrentSource = L;
54346 return StorePop<PT_Ptr>(S, OpPC);
54347}
54348bool EvalEmitter::emitStorePopMemberPtr(SourceInfo L) {
54349 if (!isActive()) return true;
54350 CurrentSource = L;
54351 return StorePop<PT_MemberPtr>(S, OpPC);
54352}
54353bool EvalEmitter::emitStorePopFloat(SourceInfo L) {
54354 if (!isActive()) return true;
54355 CurrentSource = L;
54356 return StorePop<PT_Float>(S, OpPC);
54357}
54358#endif
54359#ifdef GET_OPCODE_NAMES
54360OP_SubSint8,
54361OP_SubUint8,
54362OP_SubSint16,
54363OP_SubUint16,
54364OP_SubSint32,
54365OP_SubUint32,
54366OP_SubSint64,
54367OP_SubUint64,
54368OP_SubIntAP,
54369OP_SubIntAPS,
54370OP_SubBool,
54371OP_SubFixedPoint,
54372#endif
54373#ifdef GET_INTERPFN_LIST
54374&Interp_SubSint8,
54375&Interp_SubUint8,
54376&Interp_SubSint16,
54377&Interp_SubUint16,
54378&Interp_SubSint32,
54379&Interp_SubUint32,
54380&Interp_SubSint64,
54381&Interp_SubUint64,
54382&Interp_SubIntAP,
54383&Interp_SubIntAPS,
54384&Interp_SubBool,
54385&Interp_SubFixedPoint,
54386#endif
54387#ifdef GET_INTERPFN_DISPATCHERS
54388PRESERVE_NONE
54389static bool Interp_SubSint8(InterpState &S, CodePtr &PC) {
54390 if (!Sub<PT_Sint8>(S, PC)) return false;
54391#if USE_TAILCALLS
54392 MUSTTAIL return InterpNext(S, PC);
54393#else
54394 return true;
54395#endif
54396}
54397PRESERVE_NONE
54398static bool Interp_SubUint8(InterpState &S, CodePtr &PC) {
54399 if (!Sub<PT_Uint8>(S, PC)) return false;
54400#if USE_TAILCALLS
54401 MUSTTAIL return InterpNext(S, PC);
54402#else
54403 return true;
54404#endif
54405}
54406PRESERVE_NONE
54407static bool Interp_SubSint16(InterpState &S, CodePtr &PC) {
54408 if (!Sub<PT_Sint16>(S, PC)) return false;
54409#if USE_TAILCALLS
54410 MUSTTAIL return InterpNext(S, PC);
54411#else
54412 return true;
54413#endif
54414}
54415PRESERVE_NONE
54416static bool Interp_SubUint16(InterpState &S, CodePtr &PC) {
54417 if (!Sub<PT_Uint16>(S, PC)) return false;
54418#if USE_TAILCALLS
54419 MUSTTAIL return InterpNext(S, PC);
54420#else
54421 return true;
54422#endif
54423}
54424PRESERVE_NONE
54425static bool Interp_SubSint32(InterpState &S, CodePtr &PC) {
54426 if (!Sub<PT_Sint32>(S, PC)) return false;
54427#if USE_TAILCALLS
54428 MUSTTAIL return InterpNext(S, PC);
54429#else
54430 return true;
54431#endif
54432}
54433PRESERVE_NONE
54434static bool Interp_SubUint32(InterpState &S, CodePtr &PC) {
54435 if (!Sub<PT_Uint32>(S, PC)) return false;
54436#if USE_TAILCALLS
54437 MUSTTAIL return InterpNext(S, PC);
54438#else
54439 return true;
54440#endif
54441}
54442PRESERVE_NONE
54443static bool Interp_SubSint64(InterpState &S, CodePtr &PC) {
54444 if (!Sub<PT_Sint64>(S, PC)) return false;
54445#if USE_TAILCALLS
54446 MUSTTAIL return InterpNext(S, PC);
54447#else
54448 return true;
54449#endif
54450}
54451PRESERVE_NONE
54452static bool Interp_SubUint64(InterpState &S, CodePtr &PC) {
54453 if (!Sub<PT_Uint64>(S, PC)) return false;
54454#if USE_TAILCALLS
54455 MUSTTAIL return InterpNext(S, PC);
54456#else
54457 return true;
54458#endif
54459}
54460PRESERVE_NONE
54461static bool Interp_SubIntAP(InterpState &S, CodePtr &PC) {
54462 if (!Sub<PT_IntAP>(S, PC)) return false;
54463#if USE_TAILCALLS
54464 MUSTTAIL return InterpNext(S, PC);
54465#else
54466 return true;
54467#endif
54468}
54469PRESERVE_NONE
54470static bool Interp_SubIntAPS(InterpState &S, CodePtr &PC) {
54471 if (!Sub<PT_IntAPS>(S, PC)) return false;
54472#if USE_TAILCALLS
54473 MUSTTAIL return InterpNext(S, PC);
54474#else
54475 return true;
54476#endif
54477}
54478PRESERVE_NONE
54479static bool Interp_SubBool(InterpState &S, CodePtr &PC) {
54480 if (!Sub<PT_Bool>(S, PC)) return false;
54481#if USE_TAILCALLS
54482 MUSTTAIL return InterpNext(S, PC);
54483#else
54484 return true;
54485#endif
54486}
54487PRESERVE_NONE
54488static bool Interp_SubFixedPoint(InterpState &S, CodePtr &PC) {
54489 if (!Sub<PT_FixedPoint>(S, PC)) return false;
54490#if USE_TAILCALLS
54491 MUSTTAIL return InterpNext(S, PC);
54492#else
54493 return true;
54494#endif
54495}
54496#endif
54497#ifdef GET_DISASM
54498case OP_SubSint8:
54499 Text.Op = PrintName("SubSint8");
54500 break;
54501case OP_SubUint8:
54502 Text.Op = PrintName("SubUint8");
54503 break;
54504case OP_SubSint16:
54505 Text.Op = PrintName("SubSint16");
54506 break;
54507case OP_SubUint16:
54508 Text.Op = PrintName("SubUint16");
54509 break;
54510case OP_SubSint32:
54511 Text.Op = PrintName("SubSint32");
54512 break;
54513case OP_SubUint32:
54514 Text.Op = PrintName("SubUint32");
54515 break;
54516case OP_SubSint64:
54517 Text.Op = PrintName("SubSint64");
54518 break;
54519case OP_SubUint64:
54520 Text.Op = PrintName("SubUint64");
54521 break;
54522case OP_SubIntAP:
54523 Text.Op = PrintName("SubIntAP");
54524 break;
54525case OP_SubIntAPS:
54526 Text.Op = PrintName("SubIntAPS");
54527 break;
54528case OP_SubBool:
54529 Text.Op = PrintName("SubBool");
54530 break;
54531case OP_SubFixedPoint:
54532 Text.Op = PrintName("SubFixedPoint");
54533 break;
54534#endif
54535#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54536bool emitSubSint8(SourceInfo);
54537bool emitSubUint8(SourceInfo);
54538bool emitSubSint16(SourceInfo);
54539bool emitSubUint16(SourceInfo);
54540bool emitSubSint32(SourceInfo);
54541bool emitSubUint32(SourceInfo);
54542bool emitSubSint64(SourceInfo);
54543bool emitSubUint64(SourceInfo);
54544bool emitSubIntAP(SourceInfo);
54545bool emitSubIntAPS(SourceInfo);
54546bool emitSubBool(SourceInfo);
54547bool emitSubFixedPoint(SourceInfo);
54548#endif
54549#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54550[[nodiscard]] bool emitSub(PrimType, SourceInfo I);
54551#endif
54552#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
54553bool
54554#if defined(GET_EVAL_IMPL)
54555EvalEmitter
54556#else
54557ByteCodeEmitter
54558#endif
54559::emitSub(PrimType T0, SourceInfo I) {
54560 switch (T0) {
54561 case PT_Sint8:
54562 return emitSubSint8(I);
54563 case PT_Uint8:
54564 return emitSubUint8(I);
54565 case PT_Sint16:
54566 return emitSubSint16(I);
54567 case PT_Uint16:
54568 return emitSubUint16(I);
54569 case PT_Sint32:
54570 return emitSubSint32(I);
54571 case PT_Uint32:
54572 return emitSubUint32(I);
54573 case PT_Sint64:
54574 return emitSubSint64(I);
54575 case PT_Uint64:
54576 return emitSubUint64(I);
54577 case PT_IntAP:
54578 return emitSubIntAP(I);
54579 case PT_IntAPS:
54580 return emitSubIntAPS(I);
54581 case PT_Bool:
54582 return emitSubBool(I);
54583 case PT_FixedPoint:
54584 return emitSubFixedPoint(I);
54585 default: llvm_unreachable("invalid type: emitSub");
54586 }
54587 llvm_unreachable("invalid enum value");
54588}
54589#endif
54590#ifdef GET_LINK_IMPL
54591bool ByteCodeEmitter::emitSubSint8(SourceInfo L) {
54592 return emitOp<>(OP_SubSint8, L);
54593}
54594bool ByteCodeEmitter::emitSubUint8(SourceInfo L) {
54595 return emitOp<>(OP_SubUint8, L);
54596}
54597bool ByteCodeEmitter::emitSubSint16(SourceInfo L) {
54598 return emitOp<>(OP_SubSint16, L);
54599}
54600bool ByteCodeEmitter::emitSubUint16(SourceInfo L) {
54601 return emitOp<>(OP_SubUint16, L);
54602}
54603bool ByteCodeEmitter::emitSubSint32(SourceInfo L) {
54604 return emitOp<>(OP_SubSint32, L);
54605}
54606bool ByteCodeEmitter::emitSubUint32(SourceInfo L) {
54607 return emitOp<>(OP_SubUint32, L);
54608}
54609bool ByteCodeEmitter::emitSubSint64(SourceInfo L) {
54610 return emitOp<>(OP_SubSint64, L);
54611}
54612bool ByteCodeEmitter::emitSubUint64(SourceInfo L) {
54613 return emitOp<>(OP_SubUint64, L);
54614}
54615bool ByteCodeEmitter::emitSubIntAP(SourceInfo L) {
54616 return emitOp<>(OP_SubIntAP, L);
54617}
54618bool ByteCodeEmitter::emitSubIntAPS(SourceInfo L) {
54619 return emitOp<>(OP_SubIntAPS, L);
54620}
54621bool ByteCodeEmitter::emitSubBool(SourceInfo L) {
54622 return emitOp<>(OP_SubBool, L);
54623}
54624bool ByteCodeEmitter::emitSubFixedPoint(SourceInfo L) {
54625 return emitOp<>(OP_SubFixedPoint, L);
54626}
54627#endif
54628#ifdef GET_EVAL_IMPL
54629bool EvalEmitter::emitSubSint8(SourceInfo L) {
54630 if (!isActive()) return true;
54631 CurrentSource = L;
54632 return Sub<PT_Sint8>(S, OpPC);
54633}
54634bool EvalEmitter::emitSubUint8(SourceInfo L) {
54635 if (!isActive()) return true;
54636 CurrentSource = L;
54637 return Sub<PT_Uint8>(S, OpPC);
54638}
54639bool EvalEmitter::emitSubSint16(SourceInfo L) {
54640 if (!isActive()) return true;
54641 CurrentSource = L;
54642 return Sub<PT_Sint16>(S, OpPC);
54643}
54644bool EvalEmitter::emitSubUint16(SourceInfo L) {
54645 if (!isActive()) return true;
54646 CurrentSource = L;
54647 return Sub<PT_Uint16>(S, OpPC);
54648}
54649bool EvalEmitter::emitSubSint32(SourceInfo L) {
54650 if (!isActive()) return true;
54651 CurrentSource = L;
54652 return Sub<PT_Sint32>(S, OpPC);
54653}
54654bool EvalEmitter::emitSubUint32(SourceInfo L) {
54655 if (!isActive()) return true;
54656 CurrentSource = L;
54657 return Sub<PT_Uint32>(S, OpPC);
54658}
54659bool EvalEmitter::emitSubSint64(SourceInfo L) {
54660 if (!isActive()) return true;
54661 CurrentSource = L;
54662 return Sub<PT_Sint64>(S, OpPC);
54663}
54664bool EvalEmitter::emitSubUint64(SourceInfo L) {
54665 if (!isActive()) return true;
54666 CurrentSource = L;
54667 return Sub<PT_Uint64>(S, OpPC);
54668}
54669bool EvalEmitter::emitSubIntAP(SourceInfo L) {
54670 if (!isActive()) return true;
54671 CurrentSource = L;
54672 return Sub<PT_IntAP>(S, OpPC);
54673}
54674bool EvalEmitter::emitSubIntAPS(SourceInfo L) {
54675 if (!isActive()) return true;
54676 CurrentSource = L;
54677 return Sub<PT_IntAPS>(S, OpPC);
54678}
54679bool EvalEmitter::emitSubBool(SourceInfo L) {
54680 if (!isActive()) return true;
54681 CurrentSource = L;
54682 return Sub<PT_Bool>(S, OpPC);
54683}
54684bool EvalEmitter::emitSubFixedPoint(SourceInfo L) {
54685 if (!isActive()) return true;
54686 CurrentSource = L;
54687 return Sub<PT_FixedPoint>(S, OpPC);
54688}
54689#endif
54690#ifdef GET_OPCODE_NAMES
54691OP_SubOffsetSint8,
54692OP_SubOffsetUint8,
54693OP_SubOffsetSint16,
54694OP_SubOffsetUint16,
54695OP_SubOffsetSint32,
54696OP_SubOffsetUint32,
54697OP_SubOffsetSint64,
54698OP_SubOffsetUint64,
54699OP_SubOffsetIntAP,
54700OP_SubOffsetIntAPS,
54701OP_SubOffsetBool,
54702#endif
54703#ifdef GET_INTERPFN_LIST
54704&Interp_SubOffsetSint8,
54705&Interp_SubOffsetUint8,
54706&Interp_SubOffsetSint16,
54707&Interp_SubOffsetUint16,
54708&Interp_SubOffsetSint32,
54709&Interp_SubOffsetUint32,
54710&Interp_SubOffsetSint64,
54711&Interp_SubOffsetUint64,
54712&Interp_SubOffsetIntAP,
54713&Interp_SubOffsetIntAPS,
54714&Interp_SubOffsetBool,
54715#endif
54716#ifdef GET_INTERPFN_DISPATCHERS
54717PRESERVE_NONE
54718static bool Interp_SubOffsetSint8(InterpState &S, CodePtr &PC) {
54719 if (!SubOffset<PT_Sint8>(S, PC)) return false;
54720#if USE_TAILCALLS
54721 MUSTTAIL return InterpNext(S, PC);
54722#else
54723 return true;
54724#endif
54725}
54726PRESERVE_NONE
54727static bool Interp_SubOffsetUint8(InterpState &S, CodePtr &PC) {
54728 if (!SubOffset<PT_Uint8>(S, PC)) return false;
54729#if USE_TAILCALLS
54730 MUSTTAIL return InterpNext(S, PC);
54731#else
54732 return true;
54733#endif
54734}
54735PRESERVE_NONE
54736static bool Interp_SubOffsetSint16(InterpState &S, CodePtr &PC) {
54737 if (!SubOffset<PT_Sint16>(S, PC)) return false;
54738#if USE_TAILCALLS
54739 MUSTTAIL return InterpNext(S, PC);
54740#else
54741 return true;
54742#endif
54743}
54744PRESERVE_NONE
54745static bool Interp_SubOffsetUint16(InterpState &S, CodePtr &PC) {
54746 if (!SubOffset<PT_Uint16>(S, PC)) return false;
54747#if USE_TAILCALLS
54748 MUSTTAIL return InterpNext(S, PC);
54749#else
54750 return true;
54751#endif
54752}
54753PRESERVE_NONE
54754static bool Interp_SubOffsetSint32(InterpState &S, CodePtr &PC) {
54755 if (!SubOffset<PT_Sint32>(S, PC)) return false;
54756#if USE_TAILCALLS
54757 MUSTTAIL return InterpNext(S, PC);
54758#else
54759 return true;
54760#endif
54761}
54762PRESERVE_NONE
54763static bool Interp_SubOffsetUint32(InterpState &S, CodePtr &PC) {
54764 if (!SubOffset<PT_Uint32>(S, PC)) return false;
54765#if USE_TAILCALLS
54766 MUSTTAIL return InterpNext(S, PC);
54767#else
54768 return true;
54769#endif
54770}
54771PRESERVE_NONE
54772static bool Interp_SubOffsetSint64(InterpState &S, CodePtr &PC) {
54773 if (!SubOffset<PT_Sint64>(S, PC)) return false;
54774#if USE_TAILCALLS
54775 MUSTTAIL return InterpNext(S, PC);
54776#else
54777 return true;
54778#endif
54779}
54780PRESERVE_NONE
54781static bool Interp_SubOffsetUint64(InterpState &S, CodePtr &PC) {
54782 if (!SubOffset<PT_Uint64>(S, PC)) return false;
54783#if USE_TAILCALLS
54784 MUSTTAIL return InterpNext(S, PC);
54785#else
54786 return true;
54787#endif
54788}
54789PRESERVE_NONE
54790static bool Interp_SubOffsetIntAP(InterpState &S, CodePtr &PC) {
54791 if (!SubOffset<PT_IntAP>(S, PC)) return false;
54792#if USE_TAILCALLS
54793 MUSTTAIL return InterpNext(S, PC);
54794#else
54795 return true;
54796#endif
54797}
54798PRESERVE_NONE
54799static bool Interp_SubOffsetIntAPS(InterpState &S, CodePtr &PC) {
54800 if (!SubOffset<PT_IntAPS>(S, PC)) return false;
54801#if USE_TAILCALLS
54802 MUSTTAIL return InterpNext(S, PC);
54803#else
54804 return true;
54805#endif
54806}
54807PRESERVE_NONE
54808static bool Interp_SubOffsetBool(InterpState &S, CodePtr &PC) {
54809 if (!SubOffset<PT_Bool>(S, PC)) return false;
54810#if USE_TAILCALLS
54811 MUSTTAIL return InterpNext(S, PC);
54812#else
54813 return true;
54814#endif
54815}
54816#endif
54817#ifdef GET_DISASM
54818case OP_SubOffsetSint8:
54819 Text.Op = PrintName("SubOffsetSint8");
54820 break;
54821case OP_SubOffsetUint8:
54822 Text.Op = PrintName("SubOffsetUint8");
54823 break;
54824case OP_SubOffsetSint16:
54825 Text.Op = PrintName("SubOffsetSint16");
54826 break;
54827case OP_SubOffsetUint16:
54828 Text.Op = PrintName("SubOffsetUint16");
54829 break;
54830case OP_SubOffsetSint32:
54831 Text.Op = PrintName("SubOffsetSint32");
54832 break;
54833case OP_SubOffsetUint32:
54834 Text.Op = PrintName("SubOffsetUint32");
54835 break;
54836case OP_SubOffsetSint64:
54837 Text.Op = PrintName("SubOffsetSint64");
54838 break;
54839case OP_SubOffsetUint64:
54840 Text.Op = PrintName("SubOffsetUint64");
54841 break;
54842case OP_SubOffsetIntAP:
54843 Text.Op = PrintName("SubOffsetIntAP");
54844 break;
54845case OP_SubOffsetIntAPS:
54846 Text.Op = PrintName("SubOffsetIntAPS");
54847 break;
54848case OP_SubOffsetBool:
54849 Text.Op = PrintName("SubOffsetBool");
54850 break;
54851#endif
54852#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54853bool emitSubOffsetSint8(SourceInfo);
54854bool emitSubOffsetUint8(SourceInfo);
54855bool emitSubOffsetSint16(SourceInfo);
54856bool emitSubOffsetUint16(SourceInfo);
54857bool emitSubOffsetSint32(SourceInfo);
54858bool emitSubOffsetUint32(SourceInfo);
54859bool emitSubOffsetSint64(SourceInfo);
54860bool emitSubOffsetUint64(SourceInfo);
54861bool emitSubOffsetIntAP(SourceInfo);
54862bool emitSubOffsetIntAPS(SourceInfo);
54863bool emitSubOffsetBool(SourceInfo);
54864#endif
54865#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
54866[[nodiscard]] bool emitSubOffset(PrimType, SourceInfo I);
54867#endif
54868#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
54869bool
54870#if defined(GET_EVAL_IMPL)
54871EvalEmitter
54872#else
54873ByteCodeEmitter
54874#endif
54875::emitSubOffset(PrimType T0, SourceInfo I) {
54876 switch (T0) {
54877 case PT_Sint8:
54878 return emitSubOffsetSint8(I);
54879 case PT_Uint8:
54880 return emitSubOffsetUint8(I);
54881 case PT_Sint16:
54882 return emitSubOffsetSint16(I);
54883 case PT_Uint16:
54884 return emitSubOffsetUint16(I);
54885 case PT_Sint32:
54886 return emitSubOffsetSint32(I);
54887 case PT_Uint32:
54888 return emitSubOffsetUint32(I);
54889 case PT_Sint64:
54890 return emitSubOffsetSint64(I);
54891 case PT_Uint64:
54892 return emitSubOffsetUint64(I);
54893 case PT_IntAP:
54894 return emitSubOffsetIntAP(I);
54895 case PT_IntAPS:
54896 return emitSubOffsetIntAPS(I);
54897 case PT_Bool:
54898 return emitSubOffsetBool(I);
54899 default: llvm_unreachable("invalid type: emitSubOffset");
54900 }
54901 llvm_unreachable("invalid enum value");
54902}
54903#endif
54904#ifdef GET_LINK_IMPL
54905bool ByteCodeEmitter::emitSubOffsetSint8(SourceInfo L) {
54906 return emitOp<>(OP_SubOffsetSint8, L);
54907}
54908bool ByteCodeEmitter::emitSubOffsetUint8(SourceInfo L) {
54909 return emitOp<>(OP_SubOffsetUint8, L);
54910}
54911bool ByteCodeEmitter::emitSubOffsetSint16(SourceInfo L) {
54912 return emitOp<>(OP_SubOffsetSint16, L);
54913}
54914bool ByteCodeEmitter::emitSubOffsetUint16(SourceInfo L) {
54915 return emitOp<>(OP_SubOffsetUint16, L);
54916}
54917bool ByteCodeEmitter::emitSubOffsetSint32(SourceInfo L) {
54918 return emitOp<>(OP_SubOffsetSint32, L);
54919}
54920bool ByteCodeEmitter::emitSubOffsetUint32(SourceInfo L) {
54921 return emitOp<>(OP_SubOffsetUint32, L);
54922}
54923bool ByteCodeEmitter::emitSubOffsetSint64(SourceInfo L) {
54924 return emitOp<>(OP_SubOffsetSint64, L);
54925}
54926bool ByteCodeEmitter::emitSubOffsetUint64(SourceInfo L) {
54927 return emitOp<>(OP_SubOffsetUint64, L);
54928}
54929bool ByteCodeEmitter::emitSubOffsetIntAP(SourceInfo L) {
54930 return emitOp<>(OP_SubOffsetIntAP, L);
54931}
54932bool ByteCodeEmitter::emitSubOffsetIntAPS(SourceInfo L) {
54933 return emitOp<>(OP_SubOffsetIntAPS, L);
54934}
54935bool ByteCodeEmitter::emitSubOffsetBool(SourceInfo L) {
54936 return emitOp<>(OP_SubOffsetBool, L);
54937}
54938#endif
54939#ifdef GET_EVAL_IMPL
54940bool EvalEmitter::emitSubOffsetSint8(SourceInfo L) {
54941 if (!isActive()) return true;
54942 CurrentSource = L;
54943 return SubOffset<PT_Sint8>(S, OpPC);
54944}
54945bool EvalEmitter::emitSubOffsetUint8(SourceInfo L) {
54946 if (!isActive()) return true;
54947 CurrentSource = L;
54948 return SubOffset<PT_Uint8>(S, OpPC);
54949}
54950bool EvalEmitter::emitSubOffsetSint16(SourceInfo L) {
54951 if (!isActive()) return true;
54952 CurrentSource = L;
54953 return SubOffset<PT_Sint16>(S, OpPC);
54954}
54955bool EvalEmitter::emitSubOffsetUint16(SourceInfo L) {
54956 if (!isActive()) return true;
54957 CurrentSource = L;
54958 return SubOffset<PT_Uint16>(S, OpPC);
54959}
54960bool EvalEmitter::emitSubOffsetSint32(SourceInfo L) {
54961 if (!isActive()) return true;
54962 CurrentSource = L;
54963 return SubOffset<PT_Sint32>(S, OpPC);
54964}
54965bool EvalEmitter::emitSubOffsetUint32(SourceInfo L) {
54966 if (!isActive()) return true;
54967 CurrentSource = L;
54968 return SubOffset<PT_Uint32>(S, OpPC);
54969}
54970bool EvalEmitter::emitSubOffsetSint64(SourceInfo L) {
54971 if (!isActive()) return true;
54972 CurrentSource = L;
54973 return SubOffset<PT_Sint64>(S, OpPC);
54974}
54975bool EvalEmitter::emitSubOffsetUint64(SourceInfo L) {
54976 if (!isActive()) return true;
54977 CurrentSource = L;
54978 return SubOffset<PT_Uint64>(S, OpPC);
54979}
54980bool EvalEmitter::emitSubOffsetIntAP(SourceInfo L) {
54981 if (!isActive()) return true;
54982 CurrentSource = L;
54983 return SubOffset<PT_IntAP>(S, OpPC);
54984}
54985bool EvalEmitter::emitSubOffsetIntAPS(SourceInfo L) {
54986 if (!isActive()) return true;
54987 CurrentSource = L;
54988 return SubOffset<PT_IntAPS>(S, OpPC);
54989}
54990bool EvalEmitter::emitSubOffsetBool(SourceInfo L) {
54991 if (!isActive()) return true;
54992 CurrentSource = L;
54993 return SubOffset<PT_Bool>(S, OpPC);
54994}
54995#endif
54996#ifdef GET_OPCODE_NAMES
54997OP_SubPtrSint8,
54998OP_SubPtrUint8,
54999OP_SubPtrSint16,
55000OP_SubPtrUint16,
55001OP_SubPtrSint32,
55002OP_SubPtrUint32,
55003OP_SubPtrSint64,
55004OP_SubPtrUint64,
55005OP_SubPtrIntAP,
55006OP_SubPtrIntAPS,
55007#endif
55008#ifdef GET_INTERPFN_LIST
55009&Interp_SubPtrSint8,
55010&Interp_SubPtrUint8,
55011&Interp_SubPtrSint16,
55012&Interp_SubPtrUint16,
55013&Interp_SubPtrSint32,
55014&Interp_SubPtrUint32,
55015&Interp_SubPtrSint64,
55016&Interp_SubPtrUint64,
55017&Interp_SubPtrIntAP,
55018&Interp_SubPtrIntAPS,
55019#endif
55020#ifdef GET_INTERPFN_DISPATCHERS
55021PRESERVE_NONE
55022static bool Interp_SubPtrSint8(InterpState &S, CodePtr &PC) {
55023 {
55024 CodePtr OpPC = PC;
55025 const auto V0 = ReadArg<bool>(S, PC);
55026 if (!SubPtr<PT_Sint8>(S, OpPC, V0)) return false;
55027 }
55028#if USE_TAILCALLS
55029 MUSTTAIL return InterpNext(S, PC);
55030#else
55031 return true;
55032#endif
55033}
55034PRESERVE_NONE
55035static bool Interp_SubPtrUint8(InterpState &S, CodePtr &PC) {
55036 {
55037 CodePtr OpPC = PC;
55038 const auto V0 = ReadArg<bool>(S, PC);
55039 if (!SubPtr<PT_Uint8>(S, OpPC, V0)) return false;
55040 }
55041#if USE_TAILCALLS
55042 MUSTTAIL return InterpNext(S, PC);
55043#else
55044 return true;
55045#endif
55046}
55047PRESERVE_NONE
55048static bool Interp_SubPtrSint16(InterpState &S, CodePtr &PC) {
55049 {
55050 CodePtr OpPC = PC;
55051 const auto V0 = ReadArg<bool>(S, PC);
55052 if (!SubPtr<PT_Sint16>(S, OpPC, V0)) return false;
55053 }
55054#if USE_TAILCALLS
55055 MUSTTAIL return InterpNext(S, PC);
55056#else
55057 return true;
55058#endif
55059}
55060PRESERVE_NONE
55061static bool Interp_SubPtrUint16(InterpState &S, CodePtr &PC) {
55062 {
55063 CodePtr OpPC = PC;
55064 const auto V0 = ReadArg<bool>(S, PC);
55065 if (!SubPtr<PT_Uint16>(S, OpPC, V0)) return false;
55066 }
55067#if USE_TAILCALLS
55068 MUSTTAIL return InterpNext(S, PC);
55069#else
55070 return true;
55071#endif
55072}
55073PRESERVE_NONE
55074static bool Interp_SubPtrSint32(InterpState &S, CodePtr &PC) {
55075 {
55076 CodePtr OpPC = PC;
55077 const auto V0 = ReadArg<bool>(S, PC);
55078 if (!SubPtr<PT_Sint32>(S, OpPC, V0)) return false;
55079 }
55080#if USE_TAILCALLS
55081 MUSTTAIL return InterpNext(S, PC);
55082#else
55083 return true;
55084#endif
55085}
55086PRESERVE_NONE
55087static bool Interp_SubPtrUint32(InterpState &S, CodePtr &PC) {
55088 {
55089 CodePtr OpPC = PC;
55090 const auto V0 = ReadArg<bool>(S, PC);
55091 if (!SubPtr<PT_Uint32>(S, OpPC, V0)) return false;
55092 }
55093#if USE_TAILCALLS
55094 MUSTTAIL return InterpNext(S, PC);
55095#else
55096 return true;
55097#endif
55098}
55099PRESERVE_NONE
55100static bool Interp_SubPtrSint64(InterpState &S, CodePtr &PC) {
55101 {
55102 CodePtr OpPC = PC;
55103 const auto V0 = ReadArg<bool>(S, PC);
55104 if (!SubPtr<PT_Sint64>(S, OpPC, V0)) return false;
55105 }
55106#if USE_TAILCALLS
55107 MUSTTAIL return InterpNext(S, PC);
55108#else
55109 return true;
55110#endif
55111}
55112PRESERVE_NONE
55113static bool Interp_SubPtrUint64(InterpState &S, CodePtr &PC) {
55114 {
55115 CodePtr OpPC = PC;
55116 const auto V0 = ReadArg<bool>(S, PC);
55117 if (!SubPtr<PT_Uint64>(S, OpPC, V0)) return false;
55118 }
55119#if USE_TAILCALLS
55120 MUSTTAIL return InterpNext(S, PC);
55121#else
55122 return true;
55123#endif
55124}
55125PRESERVE_NONE
55126static bool Interp_SubPtrIntAP(InterpState &S, CodePtr &PC) {
55127 {
55128 CodePtr OpPC = PC;
55129 const auto V0 = ReadArg<bool>(S, PC);
55130 if (!SubPtr<PT_IntAP>(S, OpPC, V0)) return false;
55131 }
55132#if USE_TAILCALLS
55133 MUSTTAIL return InterpNext(S, PC);
55134#else
55135 return true;
55136#endif
55137}
55138PRESERVE_NONE
55139static bool Interp_SubPtrIntAPS(InterpState &S, CodePtr &PC) {
55140 {
55141 CodePtr OpPC = PC;
55142 const auto V0 = ReadArg<bool>(S, PC);
55143 if (!SubPtr<PT_IntAPS>(S, OpPC, V0)) return false;
55144 }
55145#if USE_TAILCALLS
55146 MUSTTAIL return InterpNext(S, PC);
55147#else
55148 return true;
55149#endif
55150}
55151#endif
55152#ifdef GET_DISASM
55153case OP_SubPtrSint8:
55154 Text.Op = PrintName("SubPtrSint8");
55155 Text.Args.push_back(printArg<bool>(P, PC));
55156 break;
55157case OP_SubPtrUint8:
55158 Text.Op = PrintName("SubPtrUint8");
55159 Text.Args.push_back(printArg<bool>(P, PC));
55160 break;
55161case OP_SubPtrSint16:
55162 Text.Op = PrintName("SubPtrSint16");
55163 Text.Args.push_back(printArg<bool>(P, PC));
55164 break;
55165case OP_SubPtrUint16:
55166 Text.Op = PrintName("SubPtrUint16");
55167 Text.Args.push_back(printArg<bool>(P, PC));
55168 break;
55169case OP_SubPtrSint32:
55170 Text.Op = PrintName("SubPtrSint32");
55171 Text.Args.push_back(printArg<bool>(P, PC));
55172 break;
55173case OP_SubPtrUint32:
55174 Text.Op = PrintName("SubPtrUint32");
55175 Text.Args.push_back(printArg<bool>(P, PC));
55176 break;
55177case OP_SubPtrSint64:
55178 Text.Op = PrintName("SubPtrSint64");
55179 Text.Args.push_back(printArg<bool>(P, PC));
55180 break;
55181case OP_SubPtrUint64:
55182 Text.Op = PrintName("SubPtrUint64");
55183 Text.Args.push_back(printArg<bool>(P, PC));
55184 break;
55185case OP_SubPtrIntAP:
55186 Text.Op = PrintName("SubPtrIntAP");
55187 Text.Args.push_back(printArg<bool>(P, PC));
55188 break;
55189case OP_SubPtrIntAPS:
55190 Text.Op = PrintName("SubPtrIntAPS");
55191 Text.Args.push_back(printArg<bool>(P, PC));
55192 break;
55193#endif
55194#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
55195bool emitSubPtrSint8( bool , SourceInfo);
55196bool emitSubPtrUint8( bool , SourceInfo);
55197bool emitSubPtrSint16( bool , SourceInfo);
55198bool emitSubPtrUint16( bool , SourceInfo);
55199bool emitSubPtrSint32( bool , SourceInfo);
55200bool emitSubPtrUint32( bool , SourceInfo);
55201bool emitSubPtrSint64( bool , SourceInfo);
55202bool emitSubPtrUint64( bool , SourceInfo);
55203bool emitSubPtrIntAP( bool , SourceInfo);
55204bool emitSubPtrIntAPS( bool , SourceInfo);
55205#endif
55206#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
55207[[nodiscard]] bool emitSubPtr(PrimType, bool, SourceInfo I);
55208#endif
55209#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
55210bool
55211#if defined(GET_EVAL_IMPL)
55212EvalEmitter
55213#else
55214ByteCodeEmitter
55215#endif
55216::emitSubPtr(PrimType T0, bool A0, SourceInfo I) {
55217 switch (T0) {
55218 case PT_Sint8:
55219 return emitSubPtrSint8(A0, I);
55220 case PT_Uint8:
55221 return emitSubPtrUint8(A0, I);
55222 case PT_Sint16:
55223 return emitSubPtrSint16(A0, I);
55224 case PT_Uint16:
55225 return emitSubPtrUint16(A0, I);
55226 case PT_Sint32:
55227 return emitSubPtrSint32(A0, I);
55228 case PT_Uint32:
55229 return emitSubPtrUint32(A0, I);
55230 case PT_Sint64:
55231 return emitSubPtrSint64(A0, I);
55232 case PT_Uint64:
55233 return emitSubPtrUint64(A0, I);
55234 case PT_IntAP:
55235 return emitSubPtrIntAP(A0, I);
55236 case PT_IntAPS:
55237 return emitSubPtrIntAPS(A0, I);
55238 default: llvm_unreachable("invalid type: emitSubPtr");
55239 }
55240 llvm_unreachable("invalid enum value");
55241}
55242#endif
55243#ifdef GET_LINK_IMPL
55244bool ByteCodeEmitter::emitSubPtrSint8( bool A0, SourceInfo L) {
55245 return emitOp<bool>(OP_SubPtrSint8, A0, L);
55246}
55247bool ByteCodeEmitter::emitSubPtrUint8( bool A0, SourceInfo L) {
55248 return emitOp<bool>(OP_SubPtrUint8, A0, L);
55249}
55250bool ByteCodeEmitter::emitSubPtrSint16( bool A0, SourceInfo L) {
55251 return emitOp<bool>(OP_SubPtrSint16, A0, L);
55252}
55253bool ByteCodeEmitter::emitSubPtrUint16( bool A0, SourceInfo L) {
55254 return emitOp<bool>(OP_SubPtrUint16, A0, L);
55255}
55256bool ByteCodeEmitter::emitSubPtrSint32( bool A0, SourceInfo L) {
55257 return emitOp<bool>(OP_SubPtrSint32, A0, L);
55258}
55259bool ByteCodeEmitter::emitSubPtrUint32( bool A0, SourceInfo L) {
55260 return emitOp<bool>(OP_SubPtrUint32, A0, L);
55261}
55262bool ByteCodeEmitter::emitSubPtrSint64( bool A0, SourceInfo L) {
55263 return emitOp<bool>(OP_SubPtrSint64, A0, L);
55264}
55265bool ByteCodeEmitter::emitSubPtrUint64( bool A0, SourceInfo L) {
55266 return emitOp<bool>(OP_SubPtrUint64, A0, L);
55267}
55268bool ByteCodeEmitter::emitSubPtrIntAP( bool A0, SourceInfo L) {
55269 return emitOp<bool>(OP_SubPtrIntAP, A0, L);
55270}
55271bool ByteCodeEmitter::emitSubPtrIntAPS( bool A0, SourceInfo L) {
55272 return emitOp<bool>(OP_SubPtrIntAPS, A0, L);
55273}
55274#endif
55275#ifdef GET_EVAL_IMPL
55276bool EvalEmitter::emitSubPtrSint8( bool A0, SourceInfo L) {
55277 if (!isActive()) return true;
55278 CurrentSource = L;
55279 return SubPtr<PT_Sint8>(S, OpPC, A0);
55280}
55281bool EvalEmitter::emitSubPtrUint8( bool A0, SourceInfo L) {
55282 if (!isActive()) return true;
55283 CurrentSource = L;
55284 return SubPtr<PT_Uint8>(S, OpPC, A0);
55285}
55286bool EvalEmitter::emitSubPtrSint16( bool A0, SourceInfo L) {
55287 if (!isActive()) return true;
55288 CurrentSource = L;
55289 return SubPtr<PT_Sint16>(S, OpPC, A0);
55290}
55291bool EvalEmitter::emitSubPtrUint16( bool A0, SourceInfo L) {
55292 if (!isActive()) return true;
55293 CurrentSource = L;
55294 return SubPtr<PT_Uint16>(S, OpPC, A0);
55295}
55296bool EvalEmitter::emitSubPtrSint32( bool A0, SourceInfo L) {
55297 if (!isActive()) return true;
55298 CurrentSource = L;
55299 return SubPtr<PT_Sint32>(S, OpPC, A0);
55300}
55301bool EvalEmitter::emitSubPtrUint32( bool A0, SourceInfo L) {
55302 if (!isActive()) return true;
55303 CurrentSource = L;
55304 return SubPtr<PT_Uint32>(S, OpPC, A0);
55305}
55306bool EvalEmitter::emitSubPtrSint64( bool A0, SourceInfo L) {
55307 if (!isActive()) return true;
55308 CurrentSource = L;
55309 return SubPtr<PT_Sint64>(S, OpPC, A0);
55310}
55311bool EvalEmitter::emitSubPtrUint64( bool A0, SourceInfo L) {
55312 if (!isActive()) return true;
55313 CurrentSource = L;
55314 return SubPtr<PT_Uint64>(S, OpPC, A0);
55315}
55316bool EvalEmitter::emitSubPtrIntAP( bool A0, SourceInfo L) {
55317 if (!isActive()) return true;
55318 CurrentSource = L;
55319 return SubPtr<PT_IntAP>(S, OpPC, A0);
55320}
55321bool EvalEmitter::emitSubPtrIntAPS( bool A0, SourceInfo L) {
55322 if (!isActive()) return true;
55323 CurrentSource = L;
55324 return SubPtr<PT_IntAPS>(S, OpPC, A0);
55325}
55326#endif
55327#ifdef GET_OPCODE_NAMES
55328OP_Subf,
55329#endif
55330#ifdef GET_INTERPFN_LIST
55331&Interp_Subf,
55332#endif
55333#ifdef GET_INTERPFN_DISPATCHERS
55334PRESERVE_NONE
55335static bool Interp_Subf(InterpState &S, CodePtr &PC) {
55336 {
55337 CodePtr OpPC = PC;
55338 const auto V0 = ReadArg<uint32_t>(S, PC);
55339 if (!Subf(S, OpPC, V0)) return false;
55340 }
55341#if USE_TAILCALLS
55342 MUSTTAIL return InterpNext(S, PC);
55343#else
55344 return true;
55345#endif
55346}
55347#endif
55348#ifdef GET_DISASM
55349case OP_Subf:
55350 Text.Op = PrintName("Subf");
55351 Text.Args.push_back(printArg<uint32_t>(P, PC));
55352 break;
55353#endif
55354#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
55355bool emitSubf( uint32_t , SourceInfo);
55356#endif
55357#ifdef GET_LINK_IMPL
55358bool ByteCodeEmitter::emitSubf( uint32_t A0, SourceInfo L) {
55359 return emitOp<uint32_t>(OP_Subf, A0, L);
55360}
55361#endif
55362#ifdef GET_EVAL_IMPL
55363bool EvalEmitter::emitSubf( uint32_t A0, SourceInfo L) {
55364 if (!isActive()) return true;
55365 CurrentSource = L;
55366 return Subf(S, OpPC, A0);
55367}
55368#endif
55369#ifdef GET_OPCODE_NAMES
55370OP_This,
55371#endif
55372#ifdef GET_INTERPFN_LIST
55373&Interp_This,
55374#endif
55375#ifdef GET_INTERPFN_DISPATCHERS
55376PRESERVE_NONE
55377static bool Interp_This(InterpState &S, CodePtr &PC) {
55378 if (!This(S, PC)) return false;
55379#if USE_TAILCALLS
55380 MUSTTAIL return InterpNext(S, PC);
55381#else
55382 return true;
55383#endif
55384}
55385#endif
55386#ifdef GET_DISASM
55387case OP_This:
55388 Text.Op = PrintName("This");
55389 break;
55390#endif
55391#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
55392bool emitThis(SourceInfo);
55393#endif
55394#ifdef GET_LINK_IMPL
55395bool ByteCodeEmitter::emitThis(SourceInfo L) {
55396 return emitOp<>(OP_This, L);
55397}
55398#endif
55399#ifdef GET_EVAL_IMPL
55400bool EvalEmitter::emitThis(SourceInfo L) {
55401 if (!isActive()) return true;
55402 CurrentSource = L;
55403 return This(S, OpPC);
55404}
55405#endif
55406#ifdef GET_OPCODE_NAMES
55407OP_ToMemberPtr,
55408#endif
55409#ifdef GET_INTERPFN_LIST
55410&Interp_ToMemberPtr,
55411#endif
55412#ifdef GET_INTERPFN_DISPATCHERS
55413PRESERVE_NONE
55414static bool Interp_ToMemberPtr(InterpState &S, CodePtr &PC) {
55415 if (!ToMemberPtr(S, PC)) return false;
55416#if USE_TAILCALLS
55417 MUSTTAIL return InterpNext(S, PC);
55418#else
55419 return true;
55420#endif
55421}
55422#endif
55423#ifdef GET_DISASM
55424case OP_ToMemberPtr:
55425 Text.Op = PrintName("ToMemberPtr");
55426 break;
55427#endif
55428#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
55429bool emitToMemberPtr(SourceInfo);
55430#endif
55431#ifdef GET_LINK_IMPL
55432bool ByteCodeEmitter::emitToMemberPtr(SourceInfo L) {
55433 return emitOp<>(OP_ToMemberPtr, L);
55434}
55435#endif
55436#ifdef GET_EVAL_IMPL
55437bool EvalEmitter::emitToMemberPtr(SourceInfo L) {
55438 if (!isActive()) return true;
55439 CurrentSource = L;
55440 return ToMemberPtr(S, OpPC);
55441}
55442#endif
55443#ifdef GET_OPCODE_NAMES
55444OP_Unsupported,
55445#endif
55446#ifdef GET_INTERPFN_LIST
55447&Interp_Unsupported,
55448#endif
55449#ifdef GET_INTERPFN_DISPATCHERS
55450PRESERVE_NONE
55451static bool Interp_Unsupported(InterpState &S, CodePtr &PC) {
55452 if (!Unsupported(S, PC)) return false;
55453#if USE_TAILCALLS
55454 MUSTTAIL return InterpNext(S, PC);
55455#else
55456 return true;
55457#endif
55458}
55459#endif
55460#ifdef GET_DISASM
55461case OP_Unsupported:
55462 Text.Op = PrintName("Unsupported");
55463 break;
55464#endif
55465#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
55466bool emitUnsupported(SourceInfo);
55467#endif
55468#ifdef GET_LINK_IMPL
55469bool ByteCodeEmitter::emitUnsupported(SourceInfo L) {
55470 return emitOp<>(OP_Unsupported, L);
55471}
55472#endif
55473#ifdef GET_EVAL_IMPL
55474bool EvalEmitter::emitUnsupported(SourceInfo L) {
55475 if (!isActive()) return true;
55476 CurrentSource = L;
55477 return Unsupported(S, OpPC);
55478}
55479#endif
55480#ifdef GET_OPCODE_NAMES
55481OP_ZeroSint8,
55482OP_ZeroUint8,
55483OP_ZeroSint16,
55484OP_ZeroUint16,
55485OP_ZeroSint32,
55486OP_ZeroUint32,
55487OP_ZeroSint64,
55488OP_ZeroUint64,
55489OP_ZeroBool,
55490#endif
55491#ifdef GET_INTERPFN_LIST
55492&Interp_ZeroSint8,
55493&Interp_ZeroUint8,
55494&Interp_ZeroSint16,
55495&Interp_ZeroUint16,
55496&Interp_ZeroSint32,
55497&Interp_ZeroUint32,
55498&Interp_ZeroSint64,
55499&Interp_ZeroUint64,
55500&Interp_ZeroBool,
55501#endif
55502#ifdef GET_INTERPFN_DISPATCHERS
55503PRESERVE_NONE
55504static bool Interp_ZeroSint8(InterpState &S, CodePtr &PC) {
55505 Zero<PT_Sint8>(S, PC);
55506#if USE_TAILCALLS
55507 MUSTTAIL return InterpNext(S, PC);
55508#else
55509 return true;
55510#endif
55511}
55512PRESERVE_NONE
55513static bool Interp_ZeroUint8(InterpState &S, CodePtr &PC) {
55514 Zero<PT_Uint8>(S, PC);
55515#if USE_TAILCALLS
55516 MUSTTAIL return InterpNext(S, PC);
55517#else
55518 return true;
55519#endif
55520}
55521PRESERVE_NONE
55522static bool Interp_ZeroSint16(InterpState &S, CodePtr &PC) {
55523 Zero<PT_Sint16>(S, PC);
55524#if USE_TAILCALLS
55525 MUSTTAIL return InterpNext(S, PC);
55526#else
55527 return true;
55528#endif
55529}
55530PRESERVE_NONE
55531static bool Interp_ZeroUint16(InterpState &S, CodePtr &PC) {
55532 Zero<PT_Uint16>(S, PC);
55533#if USE_TAILCALLS
55534 MUSTTAIL return InterpNext(S, PC);
55535#else
55536 return true;
55537#endif
55538}
55539PRESERVE_NONE
55540static bool Interp_ZeroSint32(InterpState &S, CodePtr &PC) {
55541 Zero<PT_Sint32>(S, PC);
55542#if USE_TAILCALLS
55543 MUSTTAIL return InterpNext(S, PC);
55544#else
55545 return true;
55546#endif
55547}
55548PRESERVE_NONE
55549static bool Interp_ZeroUint32(InterpState &S, CodePtr &PC) {
55550 Zero<PT_Uint32>(S, PC);
55551#if USE_TAILCALLS
55552 MUSTTAIL return InterpNext(S, PC);
55553#else
55554 return true;
55555#endif
55556}
55557PRESERVE_NONE
55558static bool Interp_ZeroSint64(InterpState &S, CodePtr &PC) {
55559 Zero<PT_Sint64>(S, PC);
55560#if USE_TAILCALLS
55561 MUSTTAIL return InterpNext(S, PC);
55562#else
55563 return true;
55564#endif
55565}
55566PRESERVE_NONE
55567static bool Interp_ZeroUint64(InterpState &S, CodePtr &PC) {
55568 Zero<PT_Uint64>(S, PC);
55569#if USE_TAILCALLS
55570 MUSTTAIL return InterpNext(S, PC);
55571#else
55572 return true;
55573#endif
55574}
55575PRESERVE_NONE
55576static bool Interp_ZeroBool(InterpState &S, CodePtr &PC) {
55577 Zero<PT_Bool>(S, PC);
55578#if USE_TAILCALLS
55579 MUSTTAIL return InterpNext(S, PC);
55580#else
55581 return true;
55582#endif
55583}
55584#endif
55585#ifdef GET_DISASM
55586case OP_ZeroSint8:
55587 Text.Op = PrintName("ZeroSint8");
55588 break;
55589case OP_ZeroUint8:
55590 Text.Op = PrintName("ZeroUint8");
55591 break;
55592case OP_ZeroSint16:
55593 Text.Op = PrintName("ZeroSint16");
55594 break;
55595case OP_ZeroUint16:
55596 Text.Op = PrintName("ZeroUint16");
55597 break;
55598case OP_ZeroSint32:
55599 Text.Op = PrintName("ZeroSint32");
55600 break;
55601case OP_ZeroUint32:
55602 Text.Op = PrintName("ZeroUint32");
55603 break;
55604case OP_ZeroSint64:
55605 Text.Op = PrintName("ZeroSint64");
55606 break;
55607case OP_ZeroUint64:
55608 Text.Op = PrintName("ZeroUint64");
55609 break;
55610case OP_ZeroBool:
55611 Text.Op = PrintName("ZeroBool");
55612 break;
55613#endif
55614#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
55615bool emitZeroSint8(SourceInfo);
55616bool emitZeroUint8(SourceInfo);
55617bool emitZeroSint16(SourceInfo);
55618bool emitZeroUint16(SourceInfo);
55619bool emitZeroSint32(SourceInfo);
55620bool emitZeroUint32(SourceInfo);
55621bool emitZeroSint64(SourceInfo);
55622bool emitZeroUint64(SourceInfo);
55623bool emitZeroBool(SourceInfo);
55624#endif
55625#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
55626[[nodiscard]] bool emitZero(PrimType, SourceInfo I);
55627#endif
55628#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
55629bool
55630#if defined(GET_EVAL_IMPL)
55631EvalEmitter
55632#else
55633ByteCodeEmitter
55634#endif
55635::emitZero(PrimType T0, SourceInfo I) {
55636 switch (T0) {
55637 case PT_Sint8:
55638 return emitZeroSint8(I);
55639 case PT_Uint8:
55640 return emitZeroUint8(I);
55641 case PT_Sint16:
55642 return emitZeroSint16(I);
55643 case PT_Uint16:
55644 return emitZeroUint16(I);
55645 case PT_Sint32:
55646 return emitZeroSint32(I);
55647 case PT_Uint32:
55648 return emitZeroUint32(I);
55649 case PT_Sint64:
55650 return emitZeroSint64(I);
55651 case PT_Uint64:
55652 return emitZeroUint64(I);
55653 case PT_Bool:
55654 return emitZeroBool(I);
55655 default: llvm_unreachable("invalid type: emitZero");
55656 }
55657 llvm_unreachable("invalid enum value");
55658}
55659#endif
55660#ifdef GET_LINK_IMPL
55661bool ByteCodeEmitter::emitZeroSint8(SourceInfo L) {
55662 return emitOp<>(OP_ZeroSint8, L);
55663}
55664bool ByteCodeEmitter::emitZeroUint8(SourceInfo L) {
55665 return emitOp<>(OP_ZeroUint8, L);
55666}
55667bool ByteCodeEmitter::emitZeroSint16(SourceInfo L) {
55668 return emitOp<>(OP_ZeroSint16, L);
55669}
55670bool ByteCodeEmitter::emitZeroUint16(SourceInfo L) {
55671 return emitOp<>(OP_ZeroUint16, L);
55672}
55673bool ByteCodeEmitter::emitZeroSint32(SourceInfo L) {
55674 return emitOp<>(OP_ZeroSint32, L);
55675}
55676bool ByteCodeEmitter::emitZeroUint32(SourceInfo L) {
55677 return emitOp<>(OP_ZeroUint32, L);
55678}
55679bool ByteCodeEmitter::emitZeroSint64(SourceInfo L) {
55680 return emitOp<>(OP_ZeroSint64, L);
55681}
55682bool ByteCodeEmitter::emitZeroUint64(SourceInfo L) {
55683 return emitOp<>(OP_ZeroUint64, L);
55684}
55685bool ByteCodeEmitter::emitZeroBool(SourceInfo L) {
55686 return emitOp<>(OP_ZeroBool, L);
55687}
55688#endif
55689#ifdef GET_EVAL_IMPL
55690bool EvalEmitter::emitZeroSint8(SourceInfo L) {
55691 if (!isActive()) return true;
55692 CurrentSource = L;
55693 return Zero<PT_Sint8>(S, OpPC);
55694}
55695bool EvalEmitter::emitZeroUint8(SourceInfo L) {
55696 if (!isActive()) return true;
55697 CurrentSource = L;
55698 return Zero<PT_Uint8>(S, OpPC);
55699}
55700bool EvalEmitter::emitZeroSint16(SourceInfo L) {
55701 if (!isActive()) return true;
55702 CurrentSource = L;
55703 return Zero<PT_Sint16>(S, OpPC);
55704}
55705bool EvalEmitter::emitZeroUint16(SourceInfo L) {
55706 if (!isActive()) return true;
55707 CurrentSource = L;
55708 return Zero<PT_Uint16>(S, OpPC);
55709}
55710bool EvalEmitter::emitZeroSint32(SourceInfo L) {
55711 if (!isActive()) return true;
55712 CurrentSource = L;
55713 return Zero<PT_Sint32>(S, OpPC);
55714}
55715bool EvalEmitter::emitZeroUint32(SourceInfo L) {
55716 if (!isActive()) return true;
55717 CurrentSource = L;
55718 return Zero<PT_Uint32>(S, OpPC);
55719}
55720bool EvalEmitter::emitZeroSint64(SourceInfo L) {
55721 if (!isActive()) return true;
55722 CurrentSource = L;
55723 return Zero<PT_Sint64>(S, OpPC);
55724}
55725bool EvalEmitter::emitZeroUint64(SourceInfo L) {
55726 if (!isActive()) return true;
55727 CurrentSource = L;
55728 return Zero<PT_Uint64>(S, OpPC);
55729}
55730bool EvalEmitter::emitZeroBool(SourceInfo L) {
55731 if (!isActive()) return true;
55732 CurrentSource = L;
55733 return Zero<PT_Bool>(S, OpPC);
55734}
55735#endif
55736#ifdef GET_OPCODE_NAMES
55737OP_ZeroIntAP,
55738#endif
55739#ifdef GET_INTERPFN_LIST
55740&Interp_ZeroIntAP,
55741#endif
55742#ifdef GET_INTERPFN_DISPATCHERS
55743PRESERVE_NONE
55744static bool Interp_ZeroIntAP(InterpState &S, CodePtr &PC) {
55745 {
55746 CodePtr OpPC = PC;
55747 const auto V0 = ReadArg<uint32_t>(S, PC);
55748 ZeroIntAP(S, OpPC, V0);
55749 }
55750#if USE_TAILCALLS
55751 MUSTTAIL return InterpNext(S, PC);
55752#else
55753 return true;
55754#endif
55755}
55756#endif
55757#ifdef GET_DISASM
55758case OP_ZeroIntAP:
55759 Text.Op = PrintName("ZeroIntAP");
55760 Text.Args.push_back(printArg<uint32_t>(P, PC));
55761 break;
55762#endif
55763#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
55764bool emitZeroIntAP( uint32_t , SourceInfo);
55765#endif
55766#ifdef GET_LINK_IMPL
55767bool ByteCodeEmitter::emitZeroIntAP( uint32_t A0, SourceInfo L) {
55768 return emitOp<uint32_t>(OP_ZeroIntAP, A0, L);
55769}
55770#endif
55771#ifdef GET_EVAL_IMPL
55772bool EvalEmitter::emitZeroIntAP( uint32_t A0, SourceInfo L) {
55773 if (!isActive()) return true;
55774 CurrentSource = L;
55775 return ZeroIntAP(S, OpPC, A0);
55776}
55777#endif
55778#ifdef GET_OPCODE_NAMES
55779OP_ZeroIntAPS,
55780#endif
55781#ifdef GET_INTERPFN_LIST
55782&Interp_ZeroIntAPS,
55783#endif
55784#ifdef GET_INTERPFN_DISPATCHERS
55785PRESERVE_NONE
55786static bool Interp_ZeroIntAPS(InterpState &S, CodePtr &PC) {
55787 {
55788 CodePtr OpPC = PC;
55789 const auto V0 = ReadArg<uint32_t>(S, PC);
55790 ZeroIntAPS(S, OpPC, V0);
55791 }
55792#if USE_TAILCALLS
55793 MUSTTAIL return InterpNext(S, PC);
55794#else
55795 return true;
55796#endif
55797}
55798#endif
55799#ifdef GET_DISASM
55800case OP_ZeroIntAPS:
55801 Text.Op = PrintName("ZeroIntAPS");
55802 Text.Args.push_back(printArg<uint32_t>(P, PC));
55803 break;
55804#endif
55805#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
55806bool emitZeroIntAPS( uint32_t , SourceInfo);
55807#endif
55808#ifdef GET_LINK_IMPL
55809bool ByteCodeEmitter::emitZeroIntAPS( uint32_t A0, SourceInfo L) {
55810 return emitOp<uint32_t>(OP_ZeroIntAPS, A0, L);
55811}
55812#endif
55813#ifdef GET_EVAL_IMPL
55814bool EvalEmitter::emitZeroIntAPS( uint32_t A0, SourceInfo L) {
55815 if (!isActive()) return true;
55816 CurrentSource = L;
55817 return ZeroIntAPS(S, OpPC, A0);
55818}
55819#endif
55820